Skip to content

Instantly share code, notes, and snippets.

@trycycle
Last active February 23, 2020 13:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save trycycle/e0d7b2d5792bfda3b933340c0a075fc3 to your computer and use it in GitHub Desktop.
Save trycycle/e0d7b2d5792bfda3b933340c0a075fc3 to your computer and use it in GitHub Desktop.
NumPyroによるMLB野手の本塁打率のモデリング
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# NumPyroによるMLB野手の本塁打率のモデリング\n",
"本記事は,[@muijp](https://qiita.com/muijp)さんがQiitaで執筆された「[野球選手が本塁打を一番打てるのは何歳のときなのかPythonとStanで求める](https://qiita.com/muijp/items/7b6097edfcdb30fc6ae8)」で行われたPyStanによる統計モデリングについて,[NumPyro](https://github.com/pyro-ppl/numpyro)で実装した内容となっています(データの準備,分析の流れ等はほぼ同じです).NumPyroに関するドキュメントが少ないため,以下の実装がベストとは思いませんが,NumPyroでの統計モデリングを行う方の参考になれば幸いです.\n",
"\n",
"なお,階層ベイズ,状態空間モデル等の統計モデリングに関する解説は@muijpさんの記事を参照してください.また,元記事ではいくつかのパラメータについて事前分布が指定されていません(おそらくStanが自動で設定してくれる).そのため,本記事では著者の判断で事前分布を設定しているものがあります."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---\n",
"## データの準備\n",
"[SeanLahman.com](http://www.seanlahman.com/baseball-archive/statistics/)から,MLBの最新の成績データを取得します.今回は本塁打率をモデリングするので,参考サイトに従って,ダウンロードしたフォルダ中にある下記データを利用します.\n",
"* People.csv(選手の基本的な情報)\n",
"* Batting.csv(打撃成績)\n",
"\n",
"以下では,上記対象データを``data``ディレクトリに保存したとします."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"# 対象データをpandasデータフレームにロード\n",
"batting_df = pd.read_csv('data/Batting.csv')\n",
"player_df = pd.read_csv('data/People.csv')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"以後の分析のために,``player_df``と``batting_df``の2つを``playerID``をキーとして結合しておきます.また,モデリング時に各シーンズにおける選手の年齢の情報を使いたいので,選手の年齢情報を``age``フィールドに追加しておきます.さらに,年度別打席数(plate appearance: PA)情報も``PA``フィールドに追加しておきます."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"df = pd.merge(\n",
" player_df, batting_df, on='playerID'\n",
").assign(\n",
" age = lambda _df: _df['yearID'] - _df['birthYear'],\n",
" PA = lambda _df: _df['AB'] + _df['BB'] + _df['HBP'] + _df['SH'] + _df['SF']\n",
").assign(\n",
" # transformメソッドは,groupbyされる前のレコードにgroupby上の集約演算結果を付け足す\n",
" # (applyメソッドは,単純にgroupby上での集約演算を返す)\n",
" # 詳しくは https://qiita.com/greenteabiscuit/items/132e0f9b1479926e07e0\n",
" career_PA = lambda _df: _df.groupby('playerID')['PA'].transform('sum')\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"これで分析用のデータを準備することができました.\n",
"\n",
"このデータには打席数が極端に少ない選手のデータも含まれています.そこで,生涯打席数が一定数以上の選手を分析対象とします.\n",
"以下の操作を行い,生涯打席数が10,000以上の選手のみを抽出しましょう."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"data = df.dropna(\n",
" subset=['AB']\n",
")[\n",
" df.career_PA >= 10000\n",
"][\n",
" ['playerID', 'yearID', 'age', 'AB', 'HR']\n",
"].assign(\n",
" # ageがfloat型になっているので,int型に変換しておく\n",
" age = lambda df: df.age.astype(np.int32)\n",
").assign(\n",
" # 最小年齢がゼロになるように修正した年齢情報を用意する\n",
" modified_age = lambda df: df.age - min(df.age)\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"この分析では年齢と本塁打率の関係を統計モデリングしますので,対象となる選手の数,年齢の幅を調べておきましょう."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"生涯打席数が10000以上の選手の数 = 1313\n",
"最小年齢 = 18\n",
"最高年齢 = 45\n"
]
}
],
"source": [
"min_age = min(data.age)\n",
"max_age = max(data.age)\n",
"\n",
"print(\"生涯打席数が10000以上の選手の数 = {}\".format(data.shape[0]))\n",
"print(\"最小年齢 = {}\".format(min_age))\n",
"print(\"最高年齢 = {}\".format(max_age))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"モデリングを行う前に,本塁打率(Homerun Rate: HRR)を傾向を調べておきます.年齢毎に本塁打率の中央値を算出し,可視化します."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"def plot_basic_HRR():\n",
" data['HRR'] = data['HR'] / data['AB']\n",
" \n",
" data.groupby('age').agg({'HRR': np.median}).reset_index().pipe(\n",
" lambda df: plt.plot(df['age'], df['HRR'], \"o-\", color=\"green\", alpha=0.3)\n",
" )"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plot_basic_HRR()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"本塁打率は年齢に応じてスムーズに変化しそうですが,単純にデコボコしていますね.\n",
"以後,上記データフレーム``data``を使って,統計的モデリングを行います."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---\n",
"## 統計的モデリング"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 準備\n",
"#### ライブラリ\n",
"統計モデリングと事後分布の可視化に必要なライブラリを読み込んでおきます.NumPyroを利用するには[JAX](https://github.com/google/jax)も必要となります.また事後分布の可視化には[ArviZ](https://arviz-devs.github.io/arviz/)を用います.適宜インストールしてください."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"# 統計モデリング用\n",
"import numpyro\n",
"import numpyro.distributions as dist\n",
"from numpyro.infer import MCMC, NUTS\n",
"import jax.numpy as jnp\n",
"from jax import random\n",
"\n",
"# ベイジアンモデリング用の可視化ライブラリ\n",
"import arviz as az\n",
"\n",
"# 統計モデリングにCPU/GPUのいずれを使うかの指定\n",
"numpyro.set_platform(\"cpu\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### シグモイド関数(本塁打率計算用)\n",
"ロジット関数から二項分布に設定する確率を求めるために,シグモイド関数を定義しておきます.なお,NumPyroのBinomialクラスは,logitsパラメータにロジット関数を設定すれば,その情報をもとに二項分布の確率を自動的に設定してくれます.今回シグモイド関数を用意したのは,モデリング後に本塁打率をトレースしたいためです."
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"def sigmoid(x):\n",
" return 1 / (1 + jnp.exp(-x))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### 可視化用関数の準備\n",
"MCMCサンプルから``r_age``および``HRR_age``(後述)の事後分布を年齢ごとに可視化するための関数を定義します.パラメータの推定値(中央値)を95%予測区間とともに可視化します."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"def plot_r_age_posterior(_samples):\n",
" age_range = [i for i in range(18, 45)]\n",
"\n",
" # 中央値のプロット\n",
" r_age_median = np.median(_samples['r_age'], axis=0) \n",
" plt.plot(age_range, r_age_median, \"o-\", color=\"blue\")\n",
" \n",
" # HPD(Highest Posterior Density) intervalの表示\n",
" az.plot_hpd(age_range, _samples['r_age'], color=\"blue\",\n",
" fill_kwargs={'alpha': 0.1})"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"def plot_HRR_posterior(_samples):\n",
" age_range = [i for i in range(18, 45)]\n",
"\n",
" # 中央値のプロット\n",
" HRR_age_median = np.median(_samples['HRR_age'], axis=0) \n",
" plt.plot(age_range, HRR_age_median, \"o-\", color=\"blue\")\n",
" \n",
" # HPD(Highest Posterior Density) intervalの表示\n",
" az.plot_hpd(age_range, _samples['HRR_age'], color=\"blue\",\n",
" fill_kwargs={'alpha': 0.1})"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### モデル1:年齢を考慮した階層ベイズ\n",
"@muijpさんの記事では,野球選手は潜在的に本塁打率を有しており,各シーズンで打った本塁打数は「打席数」と「本塁打率」をパラメータとする二項分布に従うと仮定しています.既に述べたように,本記事は@muijpさんの記事内容を踏襲します.\n",
"\n",
"モデル1では\n",
"* 本塁打率に選手間で共通\n",
"* 本塁打率は年齢によって異なる\n",
"* 本塁打率は年齢間で依存関係はない\n",
"\n",
"と仮定しています.選手を$i$,選手$i$の年齢を$age[i]$,選手$i$の打数を$AB[i]$,本塁打数を$HR[i]$としたとき,モデル1では選手$i$の本塁打率$HRR[i]$,および年齢$j$が本塁打率に与える影響$r_{age}[j]$を以下のようにモデリングします.\n",
"\n",
"$$\n",
" \\begin{align}\n",
" \\mathit{HR}[i] \\sim \\mathit{Binomial}(\\mathit{AB}[i], \\mathit{HRR}[i]) \\\\\n",
" \\mathit{HRR}[i] = \\frac{1}{1 + e^{-(\\beta + r_{age}[age[i]])}} \\\\ \n",
" \\beta \\sim \\mathit{N}(0, 1) \\\\\n",
" r_{age}[j] \\sim \\mathit{N}(0, sd_{age}) \\\\\n",
" sd_{age} \\sim \\mathit{HalfCauchy}(1) \n",
" \\end{align}\n",
"$$\n",
"\n",
"以下,モデル1をNumPyroで記述し,各種パラメータの事後分布を推定します."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### モデルの記述"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"def model_1(ABs, HRs=None, ages=None):\n",
" player_num = ABs.shape[0]\n",
" \n",
" beta = numpyro.sample(\"beta\", dist.Normal(0, 1))\n",
" sd_age = numpyro.sample(\"sd_age\", dist.HalfCauchy(1))\n",
" with numpyro.plate(\"age_num\", max(ages)):\n",
" r_age = numpyro.sample(\"r_age\", dist.Normal(0, sd_age))\n",
" numpyro.deterministic('HRR_age', sigmoid(beta + r_age)) # 年齢毎の本塁打率をtraceするために保存しておく \n",
"\n",
" # logit=xとすると,logit(p) = x \n",
" HRRs = beta + r_age[ages]\n",
" numpyro.sample(\"obs\", dist.Binomial(ABs, logits=HRRs), obs=HRs)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### MCMCサンプリング"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"sample: 100%|██████████| 4000/4000 [00:55<00:00, 72.27it/s, 1023 steps of size 1.91e-03. acc. prob=0.76]\n"
]
}
],
"source": [
"rng_key = random.PRNGKey(0)\n",
"rng_key, rng_key_ = random.split(rng_key)\n",
"\n",
"num_warmup, num_samples = 1000, 3000\n",
"kernel = NUTS(model_1)\n",
"mcmc = MCMC(kernel, num_warmup, num_samples)\n",
"mcmc.run(rng_key, data.AB.values, data.HR.values, data.modified_age.values)\n",
"\n",
"samples = mcmc.get_samples()\n",
"\n",
"# 推定パラメータの基本統計量\n",
"# mcmc.print_summary()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### 年齢の影響度($r_{age}$)の推定"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plot_r_age_posterior(samples)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### 年齢ごとの本塁打率($HRR$)の推定"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# 青いラインが推定された本塁打率.緑のラインは,単純に本塁打率の中央値を年齢ごとにプロットしたもの\n",
"plot_HRR_posterior(samples)\n",
"plot_basic_HRR()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### モデル2:時系列を考慮\n",
"モデル1では「本塁打率に選手間で共通」かつ「本塁打率は年齢によって異なる」としつつ「本塁打率は年齢間で依存関係はない」と仮定しました.しかし,本塁打率は年齢間に関係があることは容易に想像できます.そこで,モデル2では「年齢$j$における本塁打率は,年齢$j-1$における本塁打率から影響を受ける」と仮定します.\n",
"\n",
"本記事では,「年齢$j$における本塁打率は年齢$j-1$における本塁打率を平均値とする正規分布に従う」という仮定を採用し,この仮定をNumPyroの``GaussianRandomWalk``分布で表現します.モデルは以下の通りです.\n",
"\n",
"$$\n",
" \\begin{align}\n",
" \\mathit{HR}[i] \\sim \\mathit{Binomial}(\\mathit{AB}[i], \\mathit{HRR}[i]) \\\\\n",
" \\mathit{HRR}[i] = \\frac{1}{1 + e^{-(\\beta + r_{age}[age[i]])}} \\\\ \n",
" \\beta \\sim \\mathit{N}(0, 1) \\\\\n",
" r_{age}[j] \\sim \\mathit{N}(r_{age}[j-1], sd_{age}) \\\\\n",
" sd_{age} \\sim \\mathit{HalfCauchy}(1) \n",
" \\end{align}\n",
"$$\n",
"\n",
"以下,モデル2をNumPyroで記述し,各種パラメータの事後分布を推定します."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### モデルの記述"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [],
"source": [
"def model_2(ABs, HRs=None, ages=None):\n",
" player_num = ABs.shape[0]\n",
" \n",
" beta = numpyro.sample(\"beta\", dist.Normal(0., 1.))\n",
" sd_age = numpyro.sample(\"sd_age\", dist.HalfCauchy(.1))\n",
" r_age = numpyro.sample(\"r_age\", dist.GaussianRandomWalk(scale=sd_age, num_steps=max(ages)))\n",
" numpyro.deterministic('HRR_age', sigmoid(beta + r_age)) # 年齢毎の本塁打率をtraceするために保存しておく \n",
"\n",
" HRRs = beta + r_age[ages]\n",
" numpyro.sample(\"obs\", dist.Binomial(ABs, logits=HRRs), obs=HRs)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### MCMCサンプリング"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"sample: 100%|██████████| 4000/4000 [00:45<00:00, 88.01it/s, 1023 steps of size 1.98e-03. acc. prob=0.79] \n"
]
}
],
"source": [
"rng_key = random.PRNGKey(0)\n",
"rng_key, rng_key_ = random.split(rng_key)\n",
"\n",
"num_warmup, num_samples = 1000, 3000\n",
"kernel = NUTS(model_2)\n",
"mcmc = MCMC(kernel, num_warmup, num_samples)\n",
"mcmc.run(rng_key, data.AB.values, data.HR.values, data.modified_age.values)\n",
"\n",
"samples = mcmc.get_samples()\n",
"\n",
"# 推定パラメータの基本統計量\n",
"# mcmc.print_summary()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### 年齢の影響度($r_{age}$)の推定"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plot_r_age_posterior(samples)"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAD4CAYAAADiry33AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nOydeXxjZ3nvv6/2zZK8yKtsz75lkjBhPBNCFiBACBeYkBISSNkaGsp+ofQ2KYUCLZewplwSlnxCWQJtgDRhwppQoJBCFmfPzGQmmcwqr/Ku1dre+8c7ZyTbsi15vMrv9/PRZ2zp6OhoLP3Oc573eX6PkFKi0Wg0msrFtNQHoNFoNJqFRQu9RqPRVDha6DUajabC0UKv0Wg0FY4Weo1Go6lwLEt9AJOpq6uTa9asWerD0Gg0mhXFY489NiClDBR7bNkJ/Zo1a3j00UeX+jA0Go1mRSGEOD7dYzp1o9FoNBWOFnqNRqOpcLTQazQaTYWjhV6j0WgqHC30Go1GU+Esu6obTeUQGg3R2d1JOBYm4A7Q0dxB0Bdc6sPSaFYdOqLXLAih0RB7D+0lno7T4Gkgno6z99BeQqOhpT40jWbVoYVesyB0dnfid/gRQhBLx/Davfgdfjq7O5f60DSaVYcWes2CEI6F8dg8HB0+yuGhw+RkDo/NQzgWXupD02hWHTpHr1kQAu4Aw4lhkpkkAMPJYawmKwF30Q5tjUazgOiIXrMgdDR30B3tJp6OY8LEkaEjjCRH6GjuWOpD02hWHTqi1ywIQV+QjuYO/nj8j9gsNmKpGK9Y+4oZq26khFwOMhn1b7m3wqmYQoDJBDYbOBzqX6tV3YRYhP8AjWYZoYVes2BYzVZet+l1nNd0Hr858htS2dTpx3I5SKXULZmEREL9XGyEsRD52+TfjZvFkn8M1H6kVPuOxSCbVfebTOB2g8ejTgBa+DWrAS30mgVhPDNOZDxC0BvEarYS9AY5MniSJss2knEriUReYM1m+MUv4AtfgO5uaG6GG26AK6888+OwTPqESwnj4xCNqp/NZqiqUuJvRP1a+DWVhs7RaxaEocQQANX2WsbGQIyuoac3xzMnTiClElePR91+9Ssl7F1dSny7uuD//B+4++75Py4hwG5Xr1tVpaL6aFSdYI4dg698BYJBFfm3tcG//Zu6Kkil8imlYlcdGs1yRkf0mgUhHBskETcz2O0DCV67l+bqWgYyx9hiWQfkw+abblKpm0ISCXX/fET1M2EygdOpfr77bvjEJ/LHcvIkvP/9MDwMr399/jnGlYDFoq4AjHUAiyV/01cFmuWEFnrNvCKlipCfeWEAq6jBFTBhOnXd2Fa1lqfCjzKQ6CfgagBg3z4VwRejq0vl1s3mxTn2YiecZBJuvhne8paJ90upjs1YYxgezj9mXDW43fl1AJ0S0iwlWug180Y6Df39MDiSYlxGaK9pOS3yAAFnAw6zgxORo4x2N/ClL8HPfqYEcLp0yGWXwT/+I1xyycILZXd38fu7uuB974OODnXbulWdfL53T4ibf9zJ8HiYanuAj7y5g+uuCiKlSvOMjKh/jQVjl0uljOx2dRVg0olTzSKhhV4zL0Qi0NurxCtnH8JkVvn5QkzChGlsDTf9+0Ee/PcoTrOHD30IWlrgU5+aGE07nXD11fC738G118JFFynB3759YY4/HlcCnLSGoKUTXGGIB6CrA2cmyMMPw969aluPB+o3hjhm3Usu4YfxBoZTUf75R3uBPVx3VfB0FG8gpYr++/rUz4bwV1Wp92qzLcz70mhAC73mDMnlYGAAhoZUqsJshuNDA5iFmd/+ws8XPq8i5YYGWL8eHnq0DdOG53jTu4/xifdsp/bUucDlUqmTyVU34+Nwxx3wr/+qovsrr1QLtZ2dxbefC7298K53KZE3bdtLLu6HaAPYo1i37+XGq/fwtisbOHIizoOPxXj0qTh7n/0Z0jYK9lM5m/A20lG4+cedXHfV1F4BI51jt6vfpVRXQH196neLBfx+9X9obKPRzBdCLrMSgp07d0o9HHxlkE4roU2llFAbqZUHe/7An/9o4xsff8mUnPdFF8F7PvUE0t3LxS2vwmIqLdYYG4Nbb4Xbb1evK4RKixg4nao8s1yx378f3vEOGB2Fv/rCPYwl4vxsr4Xh8QG8NeOc//Ihtm4x8aL6iR297/rMf0GkAbJOcA6rE8NoEKr66Lr3+vIOApXvTybVidNmy4u+jvQ1pSKEeExKubPYYyV9y4QQrwG+CpiB26WUN0163A58H3gxMAhcLaU8VvB4G3AA+JSU8ktzeROa5UUiAaFQvgHJIJ1LE0mN8YPbN08ReYAjR2DH2jU80huiJxaitWpNSa/n9cKNNypRvuQSlWqZfDzlVun89rfw3veq9Mk998AT5jA1jlrqN+8nIzPYzHZsJi/RdJTN1WfhtLhO36rHMgxH4jDuheoj4O6HcTfV9rl5+ZjN+f/HTEZdJYXD+Ujf5VKRvl7Q1cyFWZeDhBBm4FbgcmAb8BYhxLZJm10HDEspNwA3A5+f9PhXgF+d+eFqlgOjo3D8uBIeozTRYDg5iJTQf7Su6HO7u8Fvr8Zn83MicrTs125unloZU7jvUi9Qv/tdeOc7Ye1a+PnPVe6/zhHg8MhB0rkMm6q3sbXmHOpdLWyv3UG7dx31rkaqbF4sJgsfeXMHVs8I2Mcg0gjWGNQepqPlzL18LBa47z54xStgwwY4+2x1NXP4sHqPY2MqpbXMLsY1y5hS1v13AYellEeklCngTmDPpG32AN879fNdwKVCqNhDCHEFcBTYPz+HrFkqpFRRZne3WpCc3HUKcKx/kJu/YoKkv+g+mpvVv61Va4mlowwlB8o+DmMfxY7v1a+GO++c/mSQzcInPwkf/zhceqmqnW9qUo+1Va2jO3oSj60Ku9lJJDVGJD3CuYGp4n3dVUE+cfUeqqtc4BzFa2om6N7If+0N8NBDZb+lCdx9t1qHMBrIurtVff9996n0Tm+vOtEePqxq/YeH1fstTGVpNIWUIvQtwMmC30On7iu6jZQyA4wCtUIID/D3wKdnegEhxPVCiEeFEI+Gw9qvfDmSy0FPj1p09XqLlwY+9hi8+4ODPPt4DW++yjQl2nc61aIpQKO7GZvJNqeo/oYbpl5JOBxwzTXqOP/2b1UZ5Oc+p8Ty7rth1y7V8bppE3z72/Dud6t/T6dLchkGx8O8tPnlrPGuJ5zow2Vx8eq2PTR7ihuxXXdVkH0/eSNd917PY996Dx//SC1NZx3mve9VZaZzZaYGMocj31HscqkT18AAnDih0mJHjqgF3khERf253NyPQ1M5LHTVzaeAm6WUUTFDclFKeRtwG6jF2AU+Jk2ZZDJKMFMplc+ejJTwne/Ap/8ljf/Fo3zjy5t57W618DpdZYxJmAhWtXN09DCJTAKnxTl1x9Ng7KPYvqWEP/9ZWRd8/esq5WEy5U3NkklV9njuuRMbsZ4feZZkJsHFwVfjt1eX/X/ksrpZFwjyvhuP85l3beB977Nz553Fr3pmY7p6/sn3C6EWawsXbLNZZeI2Opq/z2JRJ0bt4rl6KeVj2AW0FvwePHVfsW1CQggL4EMtyu4G3iSE+ALgB3JCiKSU8pYzPnLNopBOq0XXXG7ioqtBJAIf+5jKc190+RBXfxTOX6dqJq+8cubF0RaPEvpQ5Bgbq7eWdVznvzrEp3d0MpAMU+cInEqvBBECXvpSdTt5El75StWpO/k9FS7cDiUHORk5RnvVujmJvME670Z6giE++s8v8LmPbuMLX4B/+Ify9vGzn02fe29snP35ZvPUTmKjoicWmxjhG927Lpc6AczlpKRZGZTyp+0ENgoh1qIE/RrgrZO2uRd4B/Ag8Cbgd1LVbV5kbCCE+BQQ1SK/ckinlVhKOdEPxoikAwH12OCgErRLrxkkFDOVLJZOi5N6VyNd0ROs823CbCrN66A7GuL+E3upsvoJOBuIpaPcf2LvlDRLa6sSt6L7OBUdZ3NZ9g8+icviZoN/S0mvPx0uq5smdwumlxzjLX+5nltvtbNzp1o3mA0p4ZZb1P/t2rXQFQmRqpvYuJVOBwmFVAqqHIqJP6i/7+io+vsZVwc+n/pb6wqfymLWHP2pnPsHgPuAZ4EfSyn3CyE+I4R4w6nNvo3KyR8GPgrcsFAHrFkcMhkl8jBR5AsXCfv71eLsBz6gzL9GU4P47NWYROm9/a1Va0jlUvTGlfIag0cKfeoLb/E4PBLqxJKtIp7IkEhIrDkvtpyfh092Eo0y4WYstE7GWNA9PHKQRCbOttpzSz7RzMQ63yZyMsc7PvIC55wDH/6wcsWciVQKPvIRJfJvfCPcsTfEnr/fi78+DrEG/PVxXv6+vSRtIfbsgeeeO+PDBFT6xunMO4maTCrfbyz0dnerE0EyqRd6Vzq6YUozhWxWiXw2O3HRc9eu4gZkLS3wp4fS/PfJ+1jr28gG/+ZZXyOTURFlNgsP9/03JmGio/5iLJa8M6TFkl/0Nf7NkeFfH/0c2VwGKXI4rS42+DditVjpj/XxV+def9o7J5eDf/93JaKFi5sOhxLVV71hmEd6/4fWqjVsrTn7DP7HJrJv4An64j2skZfyhtfaaW6Ge++duoAManH7r/8aHnpILSJ/5CPw62P3EE1HGEj04bJ6aHIHiaTGGOxx8Y0Pv5FUSnULn3de+cdWeEU2U0exYdmQTud/N5ny+X2rNf93MpnyE71Mpvz9+opgcTnjhinN6iGXUyKQyajcbSEzLRKOjg8jkdQ4aotuY0x7MiJDmy3v87LLt5ZnB5+mLjhMjat42iedTXN05ChHho8gzQlcdgfN3lZCoyFeiOynwd1AsLphyjrCe96jotWPf1xVpgSDyjPn1Zfl+OOJJ5E5Jy22raTT8ydO63yb6Il1kfW+wFe/uo13vEO95pe/PHG7F16At79d/f/dcouK5gEGEn1EUqNE01EiqTH89mrcVg/xQB8//aly0rz6alU1dPHFpR+XcUVmnPQM33+YKvaTLRsg79iZTqu/JRT35ze8fArXAOz2xXMh1UxFC73mNFKq0rxksvjCq8+nHBkn09ysGqVMwoTPNlGoUylV5mcyqecb7o2FX/r17haOjB3g2OjRKUKfyqY4MnyEo8NHyeQyNHoa+ctz/pLfH/s9TouTLYEtPN37NE/2Pck7Gt9R9H1de626FXJw4Dm8dVHOqz8fj7AQjaq0kDGCUAh1jEaEakStpZwIjFz9ycgxLnr5ej78YTtf/araxx/+oIS9tlatHzid8OMfq3JQg3gmRjjRzwb/Fvri3YQix2l0B6lzBGhvV128116rThK33AKve93sxwRn7vtfOLKxFDKZiWsAXq/q8nU4St+HZn7QQq85zcCA+mJ6vVMf++1vlcibTBMrN4za+KHkAD6b/3Se2xB4u12ldlyu6W15LSYLNpON/zzwnzx48kGaq5o5t+FcxrPjHBs5RiaXoamqiU21m/Da1cF57V46uzsJx8LsaNqBw+JgID7AU71PcXbD2TOuE4wmRzk8dJi11W201SrLgpqavNFYJqNu4+P5yVLGv4UYJwSYmLIwm/NR/fGxF/jbv93Gr3+t0kiF/9dCqIi6UOSfH34Wn62GsdQYDouLRncLzw8/S0ZmuGqjOpE1NMBdd6nO3r/5GxXdP/BA8XSMlCoN99BD0/v+T3eldqYY6TfjOGIx9RnyeNRCvjZvWzx0jl4DKIHv6VHplMlR6/79Kq2wdq0Sl5tvnigqb7giw+9P/pq1vg2srdpCLKaitvr6qemfYoRGQ/zkwE8IjYVo97eTyCQ4PnKcjqYOzm06l401G6myFyngL0BKyaHBQzw/+DzVzmp2Nu/EYZkaOuZkjgeOP0Aqm+Jla16G1WwtsreZXked6ApvhekMY+ygEHBg6AkGUz1c3Hopl7zUTk/P1P21tMAjj6ifT4wd5eDwPoKedvz2Gp4KdzKQ6GcoGaatah1vWH/1hAXjRALe8AY4cGDiPu12uOIKdUwPPZQX8ul8/y0W+H//T10ZLEZ6JZlUx1Zdra5sdEpnfpgpR6+FXkMioSotjMqLQnp68qmBn/+8eBXLYCLMY/0PsbXqfGrsARoaip8wpuOeZ+8hno7TE+1hNDmKEAKb2cb66vW85ey3zL6DwuON9PBE7xNYTBY6mjuodk5MBT03+ByHBg6xq2UXDZ6GsvZdKrmcErKReIz/Ovx7GmzrePWObUVFVgjVp9Ab6+bpgceodzVybt1OChsMh5NDdPb9iXW+TVMWuqdbIAcVNZ9/vrrt3q1OCH//9xPTNzabuprp7YXNm+GjH4XXvnbhh6JIqVJlJpPqDyiWKtSUh16M1UxLKqWEplhqJRZTbpGRiMoLT1eqGI4PkEgIWtpqaGwov/EmHAvT4Gmg1duK0+qk3lWPzWyjL9pX9vtpqmrCbXPT2dXJn0/+WaVxMNHZ3cmJ0RP0x/q5sO3CBRN5UP+Pdjs02N1sC7bQEz1GsH09J49NzVU0NUF/ZJB9w09Qba/h7NrzmNxFXu2oocndwrGxw7R4WnFa8pdJ06VdhIAnnph4st26Vf0+uermiitUo9ZXvqIWr7duVU1wl12m/u7z5fs/+fjc7nwZb22tuumpWwuD/m9dxWSz6gts5JYnP/be98Kzz8I3vwlnnVV8H8kk9I4Nsr7ZT7DFPKfuyoA7QDQVxWV10eZtw2FxEE1FCbjnZvnrtXu5uP1ial21/PaF3/KNR79BJBUhlo6RyWV4fuh5QqOhOe27XDbVqrr6D3zyhSlpLJcLbvinMZ4afASRdrPBtYtMungeY6N/GwLBc8MT8zTTGbw1Nxe/orrySpUqCoXUv1deqcR1zx41zetrX1N/0+uuU1cCf/u3+b4Jo0rn7rvn8j9RHItFXf0NDyvBN8o5NfOLFvpVilFhk8kUr4L41KfUAuy//Iuyyy32/GgUEFmc/hFaa4uXVZZCR3MHI8kRxsbHyMkcY+NjjCRH6Gieu+Wv1Wxld8tuIqkIyUySYyPHSKQTbAtso9ZZS2d355z3XQ5um5uWqha2X3iMW781Tnu7EuD2drjlmwm2XPowzQ0Wrti5m/agFatVXUEZpmRGusdhcbDWt5G+eM8Ex89iBm+F5nHlYDYr4f/v/1brMD096oqvEKNKZz4RQqUNMxmVQpzOeVQzd7TQr1IGB5WYFFssvf12ZQp2/fUqdTOZbFY9t7oa3HVDWCySOldx//lSCPqC7Nm8B5fVRV+0D5fVxZ7Newj6yuz1n4QQAofFwVmBs8jkMtQ4a6hx1uCxeQjHFs8ldWPtRnIyx67LXuDYMZXDf+6FFGsufIiszHJ+8HyqnE48HlXnv369WqS12VT6LBJR4tfqXofT4uLQ8H6MtbUrr1STtVpalGC2tMxt0lYhFgu8+c3TO18uVJWO06kasY4fV577mvlD5+hXIZGIKu8r5kR5330qmr/8cuWBPhmjbLKlRT3/4MAgQogpi57lEvQFz1jYixFwB4in47yo8UVYhPq4n0laaC54bB5aqlro7OpkX98+BhODjCRGaK5q5nWbXzeloshiyVsRZ7Pq/1tZOphpsW1j39CjHLYcZ13NmtNR+HzkzSfT3Fx8oddkUm6l11xTvNu3FKbr0DU6bo0RlbW1usN2PtAR/SojmVRfIrdbfYEKvdp37FCLceeeq3K1kxfGEgkV5a1Zkz9JDMYH8Tv8Jc9+XWyMtFAinUAi5yUtNBdcVhcPhh7k6MhRYqkYA4kBuqPdJNIz5ynMZnXVVV8P69bBrq1NbGypozt1kPh4mkiE081e6fT8Tp0qlhay2aCtTXX67tqlhrYbTXSFn6Vdu6bP5U/2TJqc+zeZ1OdrYED5KS2zwsAViRb6VYRRYeNwKAEpZlKWycBVV039gkej+S+50eiSzWUZSY5Q65x7fn6hWai0ULkcCB8g6A0STUUZHR9la2Arbb62stcKbDboaD+LKl+GtPcQ69crYa2pUSduI9UTjZ751KliaaEvfxn+539UNc6OHfDFLypRf/vb4e/+bvaF21hMrftM16FrYHTSjo6qwEQPUDkzdB39KiGTUV4vkF98ncmkzGjikVIJh9+vosrCKH8gPsCDJx9kd3A39e76hX0DK5zbHr0Nr8PLwfBBGjwNBL1BcjJHX7SP63deX/b+nul7huOjx7mk/ZIJqR+jhj+VUuIZi+UbuKTMV1jN1+CRAwfUgJd77in+uNMJL3qRWvjv65veNtrga1+DCy6Y6L0fi8GvfqVOMidPqmDjs5+damux2tF19KucbDYfaRVG6rNNMjJEvq6ueK50MK7y8zXOmoU58ArCWCvY0bTjtD3DmawVbK7bTFeki339+3hJ60tO32/U8Nvt+fSaYf2cTqt8fzyubkaUbLVO7z/fHQ2pDt2CAS+Fnv/btim/nZ/+tHiKxUj3nXWWqt5qaFAnhuHhqdsKAR/8oPp5w4b8AJmhIbVuZBipHT+uCgVAi32paKGvcAw3ynR6aoVNQ4PqiJxMc3Ne5OvrVVqgGIOJQXx237LNzy8nOpo72HtoL6AWZ6OpKCPJES5pv2RO+7OZbWyp28Izfc/QG+2l0TP9+CmTKT9y0O2e6OuTSuVTPUbEb7er55Q64AWmX7htaZmavmlsnOiiCSoAuekm2LJFpYb+9Cfl5/O97xV/T/G4ciTVQl8aOkdfwRgDvROJqSL//PPqyzIZowZ7NpHP5rIMJ4apdS3f/PxyYiHWCtp97VTZq9jfv5+cLC+JbUyU8nhUd+769Woil9erIudoFB488TDx8XFOjL3AYKKfKpuXKqufp8JT1xXKqeefriT0TW+C7duVUdsddyiPpb17p38PRipSMzs6FKtQjIaoWEx9mQt56ikVCdnt6ot4xx0Ty9xe+cqZRR5gJDlCTuaW9ULscmO+S0iFEGyv387PDv6Mb3Z+E4vJQsAdoKO5o+zXMZmUMDudUFOb43D4BPujD2DJeTBLG0eTJzFnPbhsHvpjfeRyE9drZhrYXoxSSkKtVti5U50Iil0ttLZOvU9THC30FYiUKiUTiUwV+T/9Cd71LiXi//EfypHSyIuCek5NzcwiDyptA+j8/BKTTCc5OHSQXC7HrpZdxNNx9h7aO6erBSklJ8dO8tzgcyTSCdprGqh2VlPvbuDpnv0MZQ9jNbVR5wyQTKq1H2ORVwg1G/fyy/P2xPNV/37DDVNTPQ6HMmgrtIrWTI9O3VQYuZwS+bGxqSJ/333wtrepcrx77lEiX0g0qi7d60poch2ID+Bz+Mq2+dXML53dnWyu3YzT6uTY6DFyMqdM3coo25RS0jXWxe+P/Z6nep/CbrZzfvB83nbu28jKLIlMnI31a0kySih1gMvP6WDDBti4UdX2r1mjouumJjVcxmTKl3nGYmc+b7Yw1QNqHeGmm9Ti7tDQme17taAj+grCEPlodGrX609+ogyqzjkHvv/9qRF7IqEu2xsaZo+QcjLHcGKYNf4183r8mvIxnD+zuSwnx04ylhxDSkksHaPN10a1sxq/w4/P7sNsMhMaDZ0e2BJwB2j3tTOWGiMyHsFr99LR0jFhYXfP5j2nt19fvR6H2UFGKuU2ZsQWGtkZnzspVYVPIqEqbBIJtd1cO2nPf3WIT+/o5IHHw3zv6wFGZQdVVUHCYZXiKTYsR5NHC32FkM2qhdd4fGokf/vt8E//BBdeqDxsCr2/u6MhHu3uZDAZZktrgN3e2fO7w4lhlZ/XC7FLjuH82ehpJOAOEEvF6Iv14cv5GE4O0x1RtbJCCJLpJI/3Pk6DuwGv3cvjPY9z3+H7ePnal3Nh24U0VzVPsUguXFeQUvJI1yPs799PjbPm9LSvYgih0isOh+rBGB9X/kpjY+o+m63091hY/XPReQ3c1xbl1t/u5fLL99DkCdLdrV6vmKWHRqFTNxVANqs6XhMJJfKFrehbtiiRf+1rVSQ/WeR/fXQvsVScjS11JLMqvzuThW9oNMSd++7k14d/zQPHH1g0u19NcQqdPwVKpO1mO2/Z/hZeue6VvGr9q+ho6WBDzQYODx8mk80wEB/gyPARbGYbWwNbsZqttHhbpoj8ZIQQ7Gjagc1s49HuR8nkSsvJGKLf0qJcO0GldUrt1Xwq3IlVWOmNhUjnxnn9q7z0H/fzg991YjKpz3RXl9qnpjha6Fc46XTex9vtnmprEImonOZll02d0flkfyd26cdXneOZ8BMcGjzEydGTfO+p79HZ1cnTfU/z3OBznBg9QV+0jwP9B7jr2bsIx8I0VzWTyqZmPTFoFpbZyjYdFgeNnka21G2hxlHDBa0XcHbD2Wyu28w5Deewxr+GgdjALK+Sx2a2cV7TecTTcZ7pe6bs43U6ldgHAuqzOdkGuRh98W76473E0lH6E73sPh+qPR7u/a1yIDWb82IfjZZ9SKsCnbpZwRjeNVLm6+Rvummqj0g2m69TNpASukbCbGgKcDS6H4fFQbWzmmQmSX+0n1g6xlBiiFQ2/0188OSDjGfHcVld1DnqTl+6d3Z3Lrp3jCZPqWWbAXeAWDqG1+7FaVHJ8rHxsbK7c2tdtWys2chzg88RcAcIesv72wuh1ohcLlWKaawPFUNKSTQdIZIeo9YRYGR8iKCnjZdfFuPuOwN0dqrh6oVi39Y297WASkUL/QolmVQibzZPHBwym62BQTQK7XUBesePMJ4dZ0vdFrx2L2PjY6z1r+Vla14GqIXX8cw449lxDg4cxO/wT8jPe2yeOY380yw+89mdu6l2E4OJQZ7uexq/w4/H5pn9SZNwOJQo9/Soz+PktSWAF0YPUedoIJNNU2X1EU1FCEVPcHaHmf+6/RJuvRW++121rdmsBN7wwyk2UGe1olM3K5BEQnUFWiwT0zH33z/9cwpHziUSKvq5cOPZvDD8AlaTFY/NU9TC1yRMOK1O/A4/G2o24LK6aK5qxm5WL7zY3u6auTOf3blCCM5rOg+zMPNY92Nld+YaWCxqLcnnUwu1hXn7/ngvR0af5+zAebx587uoc9UTz8ZIZGK8bsMe/vrqIL/5DRw8OHF/NpsKgkpJC60WdES/wohEVHTudObL2nI5Ndj55pvVl2ZgIG8ABRNb0ZNJdenc1ARP90fY3bwbu9XfbV8AACAASURBVNVOX7SPgDvAJe2XTPvFn2+/Fs3iM5/duQ6Lgx1NO3g49DD7+/dzdsPZc9qPEKoT22KBcFhVzyQyMfYNPoHX5mNrzdmYhIlmT5DN1dt5YfQQ1Y4a3vlOZZD2jW/AV7+a35/Npk4YoZCK7Ocyx7jS0BH9CmJ0VOUgXa78h3d0FN75TiXyb36zmvf5xS8WHy2XTqt8fTAIY6lhQmMhdrfu5prt13D9zut549Y3zigCy8XbXbN8qHfXs75mPcdGjtET6ZnzfoRQDqkNDTA8kuWJ/k5MmDg30HHa7ROg2aN8D7qiJ6mpgbe+VTlnTrZIsNvzvvjay1770a8IpFQ1yAMDKo9peIwcPAjXXacil09/Ws13na5CLptVNfbt7WC3S/7nxP+QzCR5+dqXa/dJzRmRkzn+dOJPHBs5htVsZSw5NmfPHYA/PPc4B0LdXNC6u2ha8LG+h4hlolzUfCnd3YILLlCf/c98Zuq+DK+nxsbKt0qYyY9eR/TLHKPbdXBQXdIaIn/vvfC61ynxvusuFdVP90HO5dQHvqVFLVCdHDvJSHKEbYFtWuQ1Z4xJmGj0NPJQ6CEO9B847b0/l9LbI8NHGJNd7F63BVsmUDQab/a0kswkGB4fpKUFrrgC/v3fi9shuN0q9z84OMc3VyFooV/GZDL5RpDf/AZ271Zpl82b4b3vVcMcfv1rVV42HUYtfXOzimwyuQwHBw5S46yhxduyeG9GU9Hs69/HlrotSCTHR49jt9jxO/xlee4Mxgc5ED5Ao6eR89ZsoLEx75NfSL2zEavJSldU+RS/732qwMCovpmMx6OuhsfG5vjmKgAt9MuU8XFVWZNKqWqawiaoaFSVkl17rcppToch8g0NeS+Q5wafYzwzzln1Zy3OG9GsCsKxMG2+NpqrmhlKDPF039P0xfo4PnK8pOcnM0ke63kMt9XNjqYdAFRXq0XayV20ZpOZBlczffEe0rk0mzfDq14F3/528RkLQqjIvqdnYpHCakIL/TIkGoVjx9QH1Ji8U6wJ6ktfmn4fhWMADQOzWCrG0eGjtPna8Dv8C3b8mtWH4bkT9AY5t+FcGjwN9EZ66Y/18+DJB+mP9U/73JzMnbZU2Nm8c0I6saZGLdJO7nht8bSpmbsx1SDy/vfDyIiy3i6G0W/S1XXmbporEZ2gXUZIqZz++vtVBGI2q/tLbYIqJBpVX5DaAt+xff37MAkTW+q2zN9BazRMLb312/3kfDl2NO4gmorycOhhquxVrK9eT4u3he6x7tOumPFMHJ/Nx2UbL5sw6Nygrk6Jc+F8BZ/dj8daRXfsJMGqdjo6lL/Tt74Fb3+7crScjNWq9tPTo9arTKsozF1Fb3V5Y7hPGnXEhsiDqnkvRmETVCGRiHIMrKvLL9D2x/rpj/WzqXYTdou9+BM1mjlSrPT2jVveyIXtF3LpuktPp2Oe7H2SO5+5k28/8W3Gxscwm8ycHD3JCyMvkJumDlIIlX50OiemZpo9rYyMDxNNKTez979fRewzjR90OtXV8WpbnNUR/TJgfDxf71vMavWss6ZG79PN44xEVJdhfX1e5HMyx77+fbhtbtZWr536JI1mHpiuGcskTAS9QYLeIP2xfr79uBL5o8NHyZGj0dNIk6dpRs8kk0kFPCdOqO+L3Q5N7iDPDz9Ld+wkm2zbuPRS5db69a+rvpHpIna3Wwm9w7F6rI11RL/ERCL5fPzkAd6gTgB//GN+dubkJqjJ+/J6pw4POTp8lFgqxvb67ROaTzSaxabeXU+ts5YXN78Yv9OPy+piffV6quxVhGPhGZ9r2CWk0yoFYzfbCbga6ImFyMkcQqgKnEOH4EUvUtvu2qUcXQsxFme7u1ePTUJJEb0Q4jXAVwEzcLuU8qZJj9uB7wMvBgaBq6WUx4QQu4DbjM2AT0kp75mvg1/J5HIqTTM8PDEfP5mbblIfzK9/PT9KrRiGyE9uDBnPjPPc4HPUu+upd9fP75vQaOaAUWe/vnr96ftKddG02dT34ORJFY03u1vpj/cymAgTcDWQy6nPv5Ga6epSFWswMTAym9W+uruVTUKl5+tnfXtCCDNwK3A5sA14ixBi26TNrgOGpZQbgJuBz5+6fx+wU0r5IuA1wLeEEKs+XTQ+DsePK/uCyfn4Qp56SkUj73737CLv8xXv/js4cJCszOpySs2yoXBYSk7miprpzYTbnS+7rHPWYzfb6YqpmvovfnFq3X0ioQKmydjtKqIPz3whURGUIrq7gMNSyiMAQog7gT3AgYJt9gCfOvXzXcAtQgghpSysanUAy8tvYZGRUpWA9feraKKYLWvhtp/5jKqa+cAHpt/OWHgtzMkbc0GPjxynP9bPK9e9ck42shrNQmAs3HZ2d5ZkpleM6mpVEx+Pm2hyBzk+puy2u7uLFxpMV6Hm8airapersvP1pQh9C3Cy4PcQsHu6baSUGSHEKFALDAghdgP/BrQDb5NSTqliFUJcD1wP0NbWVu57WPZIqaKK/n4Vzbvds18q3n8/PPQQ/N//W/wDaDROFRP5vYf24nf4SWQSZGWW/eH9bKrdpM3HNMuGM3XRNCpxjh+HOlsrx3iB3lgXzc3rphicwfQVapBvprLby5tlu5JY8MyUlPJhKeVZQAdwoxBiyjgAKeVtUsqdUsqdgUDleJtLqTxmjh9XOUWY6FczHek0/Mu/wIYNqvu12H4jEdVMUijyoKY9+R1+0tk08XSczXWbqXHWlNWKrtGsBMxmJeDWXBVVVj/dsZPccMPU6VLTVagV7sdsVp5Sy8zjcd4oRei7gNaC34On7iu6zakcvA+1KHsaKeWzQBTYPteDXSlkMupy8OjRiQJfarTwgx/AkSPwj/841UvbEPna2ol18gbhWFhNfYr14bA4qHPW4bF5Zq1o0GhWIg6HKrv00UZkfIxL/9cIX/jCxDWtj3xkaoXaZIz6+uHhhT3epaIUoe8ENgoh1gohbMA1wL2TtrkXeMepn98E/E5KKU89xwIghGgHtgDH5uXIixCP5xc50+mFepXiZLMqeu/uViIdDqtOPK+3vMvB0VH48pfhpS+FV75y4mOFtgbFRB5URcNgYpBoKkqduw4hhJ4CpalovF7Y2tJMatxEd+wkV14JjzwCzzyjcu/PPlvafjwe9b2tRD+cWYX+VE79A8B9wLPAj6WU+4UQnxFCvOHUZt8GaoUQh4GPAsaF0oXAU0KIJ4F7gPdJKUsfOV8mhh1vX58S22PH1Bk6mZz/4QNSqhX7sTHlB//CC+rfZFJ9YDye6atpZuJrX1MLtp/85EQhN0Q+EJhe5EFVNBwfOU48HafaUV12RYNGsxJparDS4mvi+HDX6bGGNTXKp37vXqUHsyGEytN3d1fesJKKGjwSjao/klHNkk4rMTZqa+12dYY3xvAZubmZcuZSqmg9m1UpmVRKXTnE4/n9Wq0qar/nHlXG1d2tcoc33DD7JWMhJ0/CxRfDnj3wr/868RgiEZWPNwzKZuJH+37EkeEj1Dprz2gAhEazkugeCfOzJx5iR+N5BH0qd9PfDy95ifKs//KXS9tPNKqqelbacuFMg0cquqbdap1obpROqwjcyMNJmY+MLZapEXQuN/XMbjKpbV2uidvffbdqzDBcJqdr1JiJz31O7d94HqjXj0RUjXx19ez7GEmO4LK6uPaca2nzVV4Fk0YzHU2+OloanBwZPEmLt+X0LNq3vhW+/3343/8bWltn349hkeB2F+9WX4lUeD/YRKxWFc0bqZWqqvzPNpsScONms03c1ri5XOqxyamTYlbC0zVqFOPxx9Ul5nveky8Fy+VUdNHUVJrIA4TGQpiEiSbPNE5oGk2FIoRgY30rWXuYwdH8l/G97813l5e2H/Xd7+lRV/KVwKoS+pkwmfKpHCOdU86MyekaMkoZTmw0RwUCyqsD1AcsGlWi7y/ROj4nc3SNddHgacBqLuLTqtFUOK2+VpKmAfae+A7fefo2fnX0HvCGePOb4c47VQllKVit6ntbKS6XWujniZkaMi66CL75zelLt371K+jshI99TF01GBU8LS35yVClMBAfIJVNEfTqfLxmdTIUH+LZgf1ETCfxWxuIpePcf2IvV/1ViGxWfQ9LxeVSc2iLTa1aaWihnyeuvnrqfU6nGtpdXw///M/KgfKjH4Wnn1aP3323ctf7679W6SKHY6LIl9uSHRoLYTVbtXmZZtXS2d1Jm68Nu8WC3RPFmvVSZfUzYO/kjW+EO+4oPUo3Uji9vSu/CkcL/TwQicBdd6mKmObmiVbCn/2sqsa5/374i7+Ae++Fyy+HCy5Qom+0a2cyqkrnzjuVvWq5Ip/JZeiN9tJc1aytiDWrlnAsTNAXxCzMxOSgqrDLeRhIhvngB5UFyW23zb4fA2Mq1dDQwh3zYqAVYR74h39Qgv2d76gUTCikGjYKq23OOksJ/2OPqXx8V9fUpq5EQtXRz2R2Nh290V6yuaxO22hWNQF3gEQ6gc/hY3R8BJ9fEk9HqbEF2LABXvc6+O53Va9KqbjdMDCwshuptNCfIf/5nyoF85GPqNTMbPh8cN1106/mh0JzO47QWAiX1UWNs4RCe42mQjEskC3CQiqToj/eA84RNrpUw+CHPqSKHL7zndL3afTgrGQvHC30Z8CxYyqa371bfYDKYbrF27mYdyYzSQbiA7R4ZzCt12hWAYYFcmNVIyPjI6QyKa4+Zw+bm4PE47BtG7z61XD77UrwS8VuV2mfcq4ElhNa6OdIOq184k0mlW4p1+6gmMuey6Vy+uXSHelGSqnTNhoNSuyvOusqrj37WrY3bCfoCxII5LvcP/xhJdjf/355+3W7lRfOYvtozQda6OfIV74CTzwBn//8zNOfpuOKK+DTn1adekJAe7taJCpmSzwbobEQfodfDxfRaApo9DQSTUWJpWJYLKq7PBZT82Rf9jL41remNjnOhNFr09+/YIe8YGihnwMPPqii+GuugTe8YfbtJ2MMDXn3u9VU+1xOpYHmIvKR8QijyVGdttFoJtHoaQRUoQLku+ETCRXVDwzAD39Y3j6dTlVlF4vN99EuLFroy2R4GD74QVizRlXPlEuhQVmptgYz0RXpQghBS5UWeo2mEKfVidfuPS30hvdNJqMKJ17yEvjGN1TuvRxcLuWQu5Jq67XQl4GUynBsYED5Zrjd5e/DGBpSigvl7McjCY2FCLgC2C3FZ2VqNKuZRk8jw8lhUtkUoOri6+tVRP6hD6lKmh//uLx9WizqZLGSFma10JfBf/wH/PKX8Pd/D+ecU/7zIxEVxdfVzc/xDCWGSKQTehFWo5mGRk8jUkr6on2n7/P7VRXN7t1qbezjH1dNirt2qVLpUjAWZlOpBTrweUYL/SwYNgXBoIrmN21SDpPlYKRrJg/yPlNCYyHMJvPpXKRGo5mIz+HDYXGcTt9AfrD4f/5n3qFSyry1eCliL4SK7MMrZEKnFvoZMDzmu7rUB0FKtXj605+Wvg9D5Kur51fkczJHT7SHJk8TZtMcRllpNKuERk8j4XiYbC7fpeh0wle/OjUiL8da3FiYXQmmZ1roZ6CYx3wyWfoHoXCQdyAwfyIP0BftI51N67SNRjMLjZ5GsrksA/GJU0wNn6nJTGc5XoyVYnpWMUL/wx+qrrctW8rLtc3EdH/wUj4IhdU18y3yoNI2doudOtc8Jfw1mgql1lWLxWSZkL6B6bvQ7fbpLcUnY5iejY6e4UEuMBUh9D/8IVx/vZq5Wm6urRjZLNxyy/S+FjN5z4M6u4+NqTzgfFTXTCadTdMf66elqgUx32cQjabCMAkT9e56+mJ9FM7I/uxnp44KtFpVOuc1r4Ennyxt/y6XytVnMvN40PNMRQj9xz8+NU9WTq6tkK4u5S3/uc+pDjqHY+LjTqeyL5iObFZF8s3N81MnX4zuSDc5mdNpG42mRBo9jYxnxhlO5kP1a69V3ehGd3pLi+p4v/deFeRdcYVyupzNyMxkUrflbGVcEUJ/4kTx+8vJtQH87GfwqlfBU0+pP/jPfw5f/KL6ABR6zE837LtwaIjPV95rl0NoLITH5sHnWMAX0WgqiHp3PUKICWWWoMT+xAmVDfjDH9R3e8cOuO8+uPhiFUS+//2zG6A5nSrdU27z1WJREUI/k+PjJz4Bhw/P/PxoVA0B+Zu/gXXr1JCQq69W4n7llcpbvpjHfCGZjLqqCAbLG/9XLvF0nKHEkI7mNZoysJqt1LnqpuTpDQIB9R02ovfqahXN33ijCgBf+1qVzjVKrSevAwqh0j7L1QenIoS+WK7NbocXv1iNDrvkEnjrW+E3v1FRd2Ft/IteBC99KfzkJ8r/4p57YO3a8l4/nVapotbWuQ0NKYeuMVUqoL1tNJryaHA3EE1Fiaamhuc2m6qOK0wBm0zKofZHP1IC/rnP5Uuti60DOhzqin45lltalvoA5gPDDOzGG1Xk3dys8uhXXqkWSX7wA3V75zvVH3NsLG81Gg6rs/GHPwx/93flv3YqpfbV3j41nz+fhEZDdHZ38sCJBwg4A+xo3IHL55r9iRqNBlB5+n39++iL9uGpmRqRVVer9Esup0Te4IILVAAXiUzc3lgHLLzKdzqVD86aNfNfaXcmVERED0rsDxyAgwcnplgCATX96aGHlIFRJDLVT1pKFdGXSzKprhDa2hZe5Pce2ks4HsZlceG0Otl7aC+h0TmOo9JoViGTTc4mYzYrvSgWkfcWf8qUdUCjamfySWGpqRihnw2rVVkKTzc0oNyFW6ORqrVVpYkWks7uTvwOP+lsGpPJRLu/Hb/DT2d358K+sEZTYTR6GhlKDDGeKb5q6vXmTcsKma6kutj9RrnlcmqiWjVCb1DOH2w6Egl19m9rU7m9hSYcC5PIJOiL9eF3+LGYLHhsHsKxFWK0odEsEwxfqL5YX9HHTabiUX2xiXAmU/FSa7NZifxyaqJadUJf7A82W218IbGYEvfWVnXmX2iklMQzcZ4NP0uVvYq1frVSHE1FCbgDC38AGk0F4XP4cFqdU8osC/F4VCq20AfnyitVabVRau33KzGfbuHV6VR25suliWrVCf3kP9hstfGFRKPqsqylpfwZsXMhnU3zcNfD+Gzqw9nkbsIkTIyNjzGSHKGjuWPhD0KjqTCKmZwVYgwomVwTX1hqvW+fqtb7538u7pljMqn9LBfPeiFna/taZHbu3CkfffTROT03GlW59vkucVwoB8qZiIxH6OzuJJFOcHbD2Zgw0dndSTgWJuAO0NHcQdCna+k1mnIJx8I8FHqIjpaOGS2+T5xQxRbTrcEdPw6XXqomVX3/+1N1QUqVAVi7Vq0RLjRCiMeklDuLPVYR5ZULSS6nTiB1dao0czFEvi/ax+M9j2M2mXlJ60uocSrDHC3sGs2ZU+uqxWq20hvtnVHoAwEl5obQd0dDPBXuZCAZps4R4NxABzfeGOSTn1Te9m9608TnC6FukcjCeF6Vw6pL3ZSDIfINDUroF0Pknx98nke6HsFtc3Nx+8WnRV6j0cwPp03OohNNzibjdKrsQDKpRP7+E3uJZ+IEnA3EM3HuP7GX11wVoqMD/umfinfFmkzLo/pGC/00ZDJK5BfSnKyQbC7L4z2Pc3DgIC3eFl7a+lIclgUsztdoVjEN7gZS2dQEk7Ni1NWpkuynwp1UWf0IoCcawmP1UGX18/RgJ1/6kqrE+4d/mN0AbanQqZsipFJqIaatbaq1wnxidLt2RboYSY7Q4mnhojUXsaFmw8K9qEajod5dj0mY6I32znjV7HCoqL77SB/CnGYgocL2KrsXj9VLONHH5VvhYx9TViw//zm8/vWL9S5KR0f0k0gmVTTf3r7wIr/30F76Y/0MxAcYS47RG+/FYdZRvEaz0FjNVmpdtdN2yRZir4owEB/gZOQYtc4AJmFidHyYWDpKnUOVOF9/PZx7rnK7XI52xSUJvRDiNUKIQ0KIw0KIKRXnQgi7EOJHpx5/WAix5tT9rxJCPCaEeObUv6+Y38OfX4xu14W2NADV7eqyuuiKdGExWdjZspM2b5vudtVoFolGTyOxVKyoyZnBsZFjPNz7RzbUrsFrrsNvr6XKWkVvrIux1AjnBlSJs8UCX/6y8tH65CcX6x2UzqxCL4QwA7cClwPbgLcIIbZN2uw6YFhKuQG4Gfj8qfsHgNdLKc8G3gHcMV8HPt/EYuqPtZjdrplcBiklm2o24bQ4dberRrOINLgbAIpG9eOZcR7peoRn+p6hzlXHOzqu4n+1vg2XxUVaZjEJMxc0vYxmT74SbuvWvAPu/fcv2tsoiVJy9LuAw1LKIwBCiDuBPcCBgm32AJ869fNdwC1CCCGlfKJgm/2AUwhhl1IuK3v+SETl4RobF6cRCiDgDvB039PYLXacVtWqq7tdNZrFw2l14nP46I32TlgX64/182Tvk6SzabbXb2eNfw1CCDY1BWlNBLm0LcUfQvdjNk0Vi/e/H37xC+Wku3v34gSNpVBK6qYFOFnwe+jUfUW3kVJmgFGgdtI2fwE8XkzkhRDXCyEeFUI8Gg4vXkRrNEL5/aq6ZrFEHmBH4w56o71YTVZyMqe7XTWapUDCL5/7Jbc+cit3P3s3//XCf/Fw6GFsZhsXtV/E2uq1p+cy19So9Tub2YbfUUM4MdVGwWZT0+nCYbjuOjWlqr5e2Rb/8IeL/N4KWJTFWCHEWah0znuKPS6lvE1KuVNKuTMQWJyINpdTIh8ILF63ayF2i51dzbto8jTRF+3DZXWxZ/Me3RSl0SwSodEQnT2djGfHyZHjse7HuOvAXbgsLi5uvxivfeKoOKMCJ5mEemcjkdQYicxUs5tzzoFXvAIefFB16kupGq+uv37pxL6U1E0X0Frwe/DUfcW2CQkhLIAPGAQQQgSBe4C3SylfOOMjngeMsX/NzQs79m8meqO9NHmbuGz9ZacjBo1Gs3h0dnfS6G4knorTH+3HbrFzTuM5jKXGMIniMXBtLRw7BgFnA4eG99Mf76Xdu27Kdvv3T31uPK6qcoxBSYtJKRF9J7BRCLFWCGEDrgHunbTNvajFVoA3Ab+TUkohhB/4BXCDlPJP83XQZ0Iqpc7IbW1LJ/JSSvpifTS4G7TIazRLRDgWxmPz0OJtoc5Vx/b67bRUtcxYEOFwgNsN5pwbj7WqaPoGoKen+PNPnJiPIy+fWYX+VM79A8B9wLPAj6WU+4UQnxFCvOHUZt8GaoUQh4GPAkYJ5geADcAnhRBPnrrVz/u7KJFEQpkULXSN/GwMJYZIZ9Mz+mxoNJqFJeAOqAIIV4B11euwmqwlFUTU1amGynpXI8PJQdK5qdOMpptv0dY2H0dePiXl6KWUv5RSbpJSrpdSfvbUfZ+UUt576ueklPIqKeUGKeUuo0JHSvkvUkq3lPJFBbclmZNulE+2ty/8RKjZ6Iv1YRImXWGj0SwhHc0djCRHGBsfK6sgwulUN5+5AYk83S1bSLG5Fy6X6p5dCiq+M9aorHG5Fm9YyGz0Rnupc9VhMS2Dg9FoVilBX5A9m/fgsrrKLoioqwO79GM32wnHp9bhG3MvmptVoUd7O9x229Lk56HCvW4M98na2sVzn5yNaCpKLBVjXfXUBRyNRrO4BH3BOVW6uVxgswmqbQ0MJLvJydyUBdwrr4TLLwefT+nPUlKxEb3hPtnYqEool4PIQ74LT+fnNZqVixBKV6pEI5lchuHk4FIf0oxUpNAblTWtraoZajnRF+3D5/BpC2KNZoXjdkPAVYeQZvoTs5ujLSUVl7pJpWZfdDXsgRd7LN94ZpyhxBCb6zYv+GtpNJqFxWSChnoz7oEA4XgvW2vOXupDmpaKiuiFULXxbW0zi/zeQ3uJp+M0eBqIp+PsPbSX0GhowY+vP6ZW53XaRqOpDDwe1SWbyCQZS40u9eFMS0VF9C6Xus2Uj+/s7sTv8BMaCzGeHcdpcZKVWX7x/C9407Y3UWWvwmbOOxHNZ/TfG+3FaXVOaa3WaDQrE7MZNjQ1cPBZQX+8F6/Nt9SHVJSKEvpSFlzDsTB17jqiqSgum4uszJJIJTg5epLmKtXlYDPbqLJXEUvFeDD0IPWueuo99aej/7l40mRzWcLxMK3e1tk31mg0K4ZAjY0qSzX98V42+JdnWraihL4UAu4A4bhqcW72NFPjrGFsfIytpq2cHzyfSCpCZDxCJBXhgRMPEEvFSGfTDCYG2V6/HVBXBeUK/UB8gGwuq9M2Gk2FYbXC2kAjT/ceIJGJ47QsYdv9NFRUjr4UOpo7GIgPEE/HsZltp7vhLmy9kIBbtUKf23guF7ZdSLAqyPnB81lbvZZkJklfrG/Ow0F6o71YTBZqXZPdmzUazUpnY1Mj2SyE48W9b5aaVSf0QV+Qi1ovwm62M5IcmbEbLuAOkMqmCLgC+B1+use6GU4Ml21dYJiYGQOJNRpNZVHrdVPt9tA9tjzLLFel6njsHl6+9uW8t+O9vHHrG6dNwxR6YbR4W4imozw/9HzZw0FGkiOMZ8Z12kajqWA2NjXSHy1ucrbUrEqhj6VjuG3uWbcr9MIYS44R9AbZWLMRn6O8lfW+WB9CCOrdS2bcqdFoFpi1dY2YzZK+yJL4Ns7IqluMBYilYiVH14VeGKlsit8d/R37w/s5P3h+ya/XG+2l1lmL1Wyd0/FqNJrlT7XTT121na6xXoK+ydNWl5ZVF9Gns2lS2RQem6fs59rMNjbVbiIcC59ufpqNeDpOZDxCg6eh7NfTaDQrByEE7XUNDCT6yeZyS304E1h1Qh9LxwBKSt0UY41/DW6bmwPhA0gpZ93eMDFrcGuh12gqnRZvIw5Xhu6R5WVytvqEPnVK6K1zE3qTMLEtsI3IeITjo8dn3b4v2keVvWrOJxaNRrNyqHPV4fWY6Ystr+qb1Sf0ZxjRg/KqqXXVcmjgEOns9CvsRqOVrrbRaFYHZpOZZl+AGH2Mjy/10eRZdUIfTUVxWp1nXM9+VuAsIztE4gAADglJREFUUtkUzw89P+02/bF+pJQ6baPRrCIaPY1YnQkGo8vH5GzVCX0sFZtz2qYQn8NHq6+Vo8NHT6eDJtMb7cVuseN3LDNTfI1Gs2A0eBqw2WAk00s2u9RHo1h9Ql9iDX0pbKnbghCCZweenfJYTuboj/XT4G5ALJfxVhqNZsGxmW3UumoYt/WSTC710ShWldCns2nS2fScSiuL4bA42FCzgZ5ID4Pxiavsg/FBMrmMzs9rNKuQRk8jaTFGViSW+lCAVSb00VQUmHvFTTHWV6/HYXGwP7x/QrllX6wPs8lMnWuJpwJrNJpFp9HTiNkMafvyqL5ZVZ2x81FxMxmzyczWwFae6HmC0FiIVp/ym++N9hJwBTCbzPP2WhqNZmXgtrmJp+P8ZuBHeAdrCIYXb2RpMVZVRB9LxRBC4LLOr190S1ULfoefgwMHyeayjI2PkUgndDesRrNKCY2G2Ne/j+HUAM2+2kUdWVqM1SX06RhOy5mXVk5GCMFZ9WeRzCQ5PHRYd8NqNKuczu5Ogt4gTouTSCqC1+7F7/DT2d25JMezulI3qfmruJlMjbMGszBzx9N3EE/HCTgD7GjcsWSXahqNZukIx8LUu+vpinQRS8eoddbisXnoiy7NYJJVF9HP50JsIaHREM8NPkcyk8RlcWGz2pb0Uk2j0SwdAXeAeDqO0+okno4Dqhik3KFF88WqEfpUNkU6m16wiL6zu/P0KEIhBK3e1iW9VNNoNEuHMbRI5iTR8ejpkaXlDi2aL1aN0C9EaWUh4VgYj81DsCrI9vrtOC3OOc+X1Wg0KxtjaFGtq5aB+ABmk3nakaWLwarJ0Rs2BfPVLDWZgDtANBXFa/eerupZyks1jUaztAR9Qa466yqaq5rpaOlY0ubJVRPRx9KqtNJpdS7I/gvny+Zkbskv1TQazdLjtXsBGBsfW9LjWD1Cn4rhsrrmvbTSoHC+bF+0D5fVtaSXahqNZumxmCx4bB5Gk0vrZLl6UjcLWHFjUDhfVqPRaEBF9cPJ4SU9hlUV0espTxqNZrHxOXwk0okZhxQtNKtC6Mcz42RymQWP6DUajWYyPrsPgNHxpUvflCT0QojXCCEOCSEOCyFuKPK4XQjxo1OPPyyEWHPq/lohxO+FEFEhxC3ze+ilsxBmZhqNRlMKy2FBdlahF0KYgVuBy4FtwFuEENsmbXYdMCyl3ADcDHz+1P1J4BPAx+btiOfAmQ4E12g0mrlit9hxWBxLuiBbSkS/CzgspTwipUwBdwJ7Jm2zB/jeqZ/vAi4VQggpZUxK+T8owV8yjNLK+Xat1Gg0mlLwOXzLPnXTApws+D106r6i20gpM8AoUDsfBzgfRFNRXFaXHumn0WiWBK/dSzQVJZtbmiGyy2IxVghxvRDiUSHEo+Hw/FsGzNdAcI1Go5kLPrsPKSWRVGRJXr8Uoe8CWgt+D566r+g2QggL4AMGKREp5W1Syp1Syp2BwPxbBsTSsQWzPtBoNJrZ8DlOVd4sUZ6+FKHvBDYKIdYKIWzANcC9k7a5F3jHqZ/fBPxOFg5QXUKSmSTZXFZX3Gg0miXDZXVhNVuXLE8/a2eslDIjhPgAcB9gBv5NSrlfCPEZ4FEp5b3At4E7hBCHgSHUyQAAIcQxwAvYhBBXAK+WUh6Y/7dSHF1xo9FolgNeu3fJSixLskCQUv4S+OWk+z5Z8HMSuGqa5645g+M7Y3QNvUajWQ747D6Ojx5HSrnohSHLYjF2IYmlYpiECadlYVwrNRqNphR8Dh/ZXPZ08LmYVL7Qp2O6tFKj0Sw5RofsUizIVr7QazMzjUazDPDYPJiEaUkWZCta6KWUi2JPrNFoNLNhEiaq7FU6op9vxrPjurRSo9EsG3x235JU3lS00C/0QHCNRqMpB5/DRyqbIpFOLOrrVrTQL/RAcI1GoymH0wuyi5ynr2yhT6vSSofFsdSHotFoNEvmTV/ZQn+q4kaXVmo0muXAUg0Lr2yh1xU3Go1mmeG1e3XqZr6QUuoaeo1Gs+xYimHhFSv0yUySnMzpiF6j0SwrlmJYeMUKvTYz02g0y5GlsEKoXKHXpZUajWYZYgwLX8zKm4oV+mgqikmYsJvtS30oGo1GM4HFHhZesUIfS+vSSo1GszxZ7GHhlSv0eiC4RqNZpiz2sPCKFHopJfF0XOfnNRrNsmSxh4VXpNAnMglVWqkrbjQazTJksYeFV6TQ64HgGo1mubOYw8IrU+h1Db1Go1nmGN70UsoFf63KFPpUDLPJrF0rNRrNssVr95LNZU/PzVhIKlLoo6moTttoNJpljbEguxjpm4oUeqOGXqPRaJYrizksvOKEXpdWajSalcBiDguvOKGPp+NIKXXqRqPRLHt89sWxQqg4odcVNxqNZqXgc/hIZ9MLPiy88oRe19BrNJoVwmINC688oU/HsJgs2C3atVKj0SxvFmtYeOUJvR4fqNFoVggWkwW3zb3gC7KVJ/R6ILhGo1lBLMaCbEUJfU7miKfjOqLXaDQrhsUYFl5RQp9IJ3RppUajWVEsxrDwihJ6wzNCR/QajWalsBjDwitK6I0aet0Vq9FoVgrGsHAd0ZdILBXDarZiM9uW+lA0Go2mZHwO34KWWFaW0OuKG41GswJZ6GHhllI2EkK8BvgqYAZul1LeNOlxO/B94MXAIHC1lPLYqcduBK4DssCHpJT3zdvRFxAaDXHf8/eRkikG4gN0NHcQ9AUX4qU0Go1mXomlYvz5xJ85PHiYdn/7vOvXrBG9EMIM3ApcDmwD3iKE2DZps+uAYSnlBuBm4POnnrsNuAY4C3gN8PVT+5tXQqMhfnrop0TSEZo9zcTTcfYe2ktoNDTfL6XRaDTzSmg0xAPHH2A8O47b5l4Q/SoldbMLOCylPCKlTAF3AnsmbbMH+N6pn+8CLhX/v737Da2qjuM4/v7g5ra76eafi/8mKjGMCFqwheEzIZCKVhBRVPggqEDBIMrsUUVBT8p6FFhaUoIJBYkEIepj3cz1Rw0yNEptLmqtiU7mvj04v9lt3jun956d3V/fF1y859w/+374wveenXPdT1LYv8vMhs3sFHAyvF9FdZ/tpr6mnoaaBnK1OWbXzaalvoXus92V/lHOOVdR3We7yTfmmVU3i4sjF1OZX5MZ9EuAXwq2fw37ij7HzEaAv4B5k3wtkp6W1COpp7+/f/LVB/0X+mma2cSchjnkanNA8s2b/gs3/l7OOTeVxubX/Nx8GmoagMrPr2lxMdbMtppZh5l15PP5G359vjHPldErtM1tuzrohy4PkW+88fdyzrmplG/MM3R5iGXNy1jYtBCo/PyazKA/Aywt2G4N+4o+R1IN0ExyUXYyry1b5+JOBi4NMDg8yKiNMjg8yMClAToXd1b6RznnXEVNxfyazKDvBtokrZA0k+Ti6p5xz9kDrAv3HwYOmJmF/Y9KqpO0AmgDDlem9H+1NrfStbKLXG2OvqE+crU5ulZ2+bdunHPT3lTMr+t+vdLMRiRtAL4i+XrldjM7Juk1oMfM9gDbgI8lnQT+IPkwIDxvN3AcGAHWm1kqXxRtbW71we6cq0ppzy8lB97TR0dHh/X09GRdhnPOVRVJR8yso9hj0+JirHPOufT4oHfOucj5oHfOucj5oHfOuchNu4uxkvqBn7Ouo4j5wO9ZF5Gi2PNB/BljzwfxZywn3zIzK/q/rKbdoJ+uJPWUuqIdg9jzQfwZY88H8WdMK5+funHOucj5oHfOucj5oJ+8rVkXkLLY80H8GWPPB/FnTCWfn6N3zrnI+RG9c85Fzge9c85Fzgd9EZKWSjoo6bikY5I2hv1zJe2T9GP4d07Wtd6MCfK9IumMpN5wuzfrWm+GpHpJhyV9E/K9GvavkHRI0klJn4Y/u12VJsj4kaRTBT1sz7rWckiaIemopL1hO5oeQtF8qfTPB31xI8DzZnYbsApYHxY6fwnYb2ZtwP6wXY1K5QPYYmbt4fZldiWWZRhYY2Z3AO3AWkmrSBat3xIWsf+TZFH7alUqI8ALBT3sza7EitgInCjYjqmHcG0+SKF/PuiLMLNzZvZ1uP83SSOW8N9F0HcAD2ZTYXkmyBcFSwyFzdpwM2ANyeL1UMX9gwkzRkNSK3Af8EHYFhH1cHy+NPmgvw5Jy4E7gUPAAjM7Fx76DViQUVkVMy4fwAZJ30raXq2npuDqr8S9wHlgH/ATMBAWr4cSC9VXk/EZzWysh2+EHm6RVJdhieV6B3gRGA3b84irh+Pzjal4/3zQT0BSE/AZ8JyZDRY+FpZKrOojqCL53gNuITkVcA54K8PyymJmV8ysnWSd4ruAWzMuqeLGZ5R0O7CZJGsnMBfYlGGJN03S/cB5MzuSdS1pmCBfKv3zQV+CpFqSIbjTzD4Pu/skLQqPLyI5kqpKxfKZWV8YHqPA+yQDsqqZ2QBwELgbaAmL10NKC9VnoSDj2nBazsxsGPiQ6u3hauABSaeBXSSnbN4lnh5ek0/SJ2n1zwd9EeFc4DbghJm9XfBQ4SLo64Avprq2SiiVb+xDLHgI+H6qa6sESXlJLeF+A3APyXWIgySL10MV9w9KZvyh4EBEJOevq7KHZrbZzFrNbDnJGtQHzOxxIulhiXxPpNW/6y4O/j+1GngS+C6cAwV4GXgT2C3pKZI/pfxIRvWVq1S+x8LXuQw4DTyTTXllWwTskDSD5GBmt5ntlXQc2CXpdeAoyYddtSqV8YCkPCCgF3g2yyJTsIl4eljMzjT6538CwTnnIuenbpxzLnI+6J1zLnI+6J1zLnI+6J1zLnI+6J1zLnI+6J1zLnI+6J1zLnL/ACAA+X+HGKJHAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# 青いラインが推定された本塁打率.緑のラインは,単純に本塁打率の中央値を年齢ごとにプロットしたもの\n",
"plot_HRR_posterior(samples)\n",
"plot_basic_HRR()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### モデル3:個人差を考慮(GLMM)\n",
"モデル2では「年齢$j$における本塁打率は,年齢$j-1$における本塁打率から影響を受ける」と仮定しましたが,本塁打率は各選手によって潜在的に異なる,つまり個体差があると考えられます.高齢の選手ほどデータ数が少なくなります.また,高齢の選手は有能な選手だからこそ高齢までプレーを続けることができたと考えられるため,高齢のデータはある意味特殊な事例であり,そのデータを使って一般的な本塁打率を推定するのはやや無理があります.そのため,個体差を考慮した統計モデリングが必要となってきます.\n",
"\n",
"個体差$r_{player}$を考慮してモデリングを行いましょう.モデル3は以下の通りです:\n",
"\n",
"$$\n",
" \\begin{align}\n",
" \\mathit{HR}[i] \\sim \\mathit{Binomial}(\\mathit{AB}[i], \\mathit{HRR}[i]) \\\\\n",
" \\mathit{HRR}[i] = \\frac{1}{1 + e^{-(\\beta + r_{age}[age[i]] + r_{player}[i])}} \\\\ \n",
" \\beta \\sim \\mathit{N}(0, 1) \\\\\n",
" r_{age}[j] \\sim \\mathit{N}(r_{age}[j-1], sd_{age}) \\\\\n",
" sd_{age} \\sim \\mathit{HalfCauchy}(1) \\\\\n",
" r_{player}[i] \\sim \\mathit{N}(0, sd_{player}) \\\\\n",
" sd_{player} \\sim \\mathit{HalfCauchy}(1)\n",
" \\end{align}\n",
"$$\n",
"\n",
"以下,モデル3をNumPyroで記述し,各種パラメータの事後分布を推定します."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### モデルの記述"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [],
"source": [
"def glmm_model(ABs, HRs=None, ages=None):\n",
" player_num = ABs.shape[0]\n",
" \n",
" beta = numpyro.sample(\"beta\", dist.Normal(0, 1))\n",
" sd_player = numpyro.sample(\"sd_player\", dist.HalfCauchy(1))\n",
" sd_age = numpyro.sample(\"sd_age\", dist.HalfCauchy(.1))\n",
" r_age = numpyro.sample(\"r_age\", dist.GaussianRandomWalk(scale=sd_age, num_steps=max(ages)))\n",
" numpyro.deterministic('HRR_age', sigmoid(beta + r_age)) # 年齢毎の本塁打率をtraceするために保存しておく \n",
" \n",
" with numpyro.plate(\"player_num\", player_num):\n",
" r_player = numpyro.sample(\"r_player\", dist.Normal(0, sd_player))\n",
" HRRs = beta + r_age[ages] + r_player\n",
" numpyro.sample(\"obs\", dist.Binomial(ABs, logits=HRRs), obs=HRs)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### MCMCサンプリング"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"sample: 100%|██████████| 4000/4000 [04:43<00:00, 14.10it/s, 1023 steps of size 2.73e-03. acc. prob=0.77]\n"
]
}
],
"source": [
"rng_key = random.PRNGKey(0)\n",
"rng_key, rng_key_ = random.split(rng_key)\n",
"\n",
"num_warmup, num_samples = 1000, 3000\n",
"kernel = NUTS(glmm_model)\n",
"mcmc = MCMC(kernel, num_warmup, num_samples)\n",
"mcmc.run(rng_key, data.AB.values, data.HR.values, data.modified_age.values)\n",
"\n",
"samples = mcmc.get_samples()\n",
"\n",
"# 推定パラメータの基本統計量\n",
"# mcmc.print_summary()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### 年齢の影響度($r_{age}$)の推定"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plot_r_age_posterior(samples)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### 年齢ごとの本塁打率($HRR$)の推定"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# 青いラインが推定された本塁打率.緑のラインは,単純に本塁打率の中央値を年齢ごとにプロットしたもの\n",
"plot_HRR_posterior(samples)\n",
"plot_basic_HRR()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"以上で,[@muijp](https://qiita.com/muijp)さん執筆の「[野球選手が本塁打を一番打てるのは何歳のときなのかPythonとStanで求める](https://qiita.com/muijp/items/7b6097edfcdb30fc6ae8)」のNumPyroでの再現を終えます."
]
}
],
"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.6"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment