Skip to content

Instantly share code, notes, and snippets.

Created July 12, 2013 07:43
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 anonymous/5982625 to your computer and use it in GitHub Desktop.
Save anonymous/5982625 to your computer and use it in GitHub Desktop.
{
"metadata": {
"name": "shogun_mmd"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "heading",
"level": 1,
"metadata": {},
"source": [
"Kernel two-sample testing in Shogun"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Generate some very basic example data in 1D.\n",
"\n",
"Gaussian: $p(x)=\\frac{1}{\\sqrt(2\\pi\\sigma^2)}\\exp\\left(-\\frac{(x-\\mu)^2}{\\sigma^2}\\right)$ with mean $\\mu$ and variance $\\sigma^2$\n",
"\n",
"Laplace: $p(x)=\\frac{1}{2b}\\exp\\left(-\\frac{|x-\\mu|}{b}\\right)$ with mean $\\mu$ and variance $2b^2$\n",
"\n",
"Means and variances are set to be equal"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from scipy.stats import norm, laplace\n",
"\n",
"sigma2=1\n",
"mu=0\n",
"b=sqrt(0.5)\n",
"\n",
"Xs=linspace(-2, 2, 500)\n",
"plot(Xs, norm.pdf(Xs, loc=mu, scale=sigma2))\n",
"plot(Xs, laplace.pdf(Xs, loc=mu, scale=b))\n",
"_=legend([ 'Gaussian','Laplace'])"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"png": "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\n"
}
],
"prompt_number": 1
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Sample from these distributions and plot histogram, and compute first two moments"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"n=220\n",
"X=norm.rvs(size=n, loc=mu, scale=sigma2)\n",
"Y=laplace.rvs(size=n, loc=mu, scale=b)\n",
"\n",
"subplot(1,2,1)\n",
"hist(X)\n",
"xlim([-5,5])\n",
"ylim([0,100])\n",
"title('Gaussian')\n",
"subplot(1,2,2)\n",
"title('Laplace')\n",
"hist(Y)\n",
"xlim([-5,5])\n",
"_=ylim([0,100])\n",
"\n",
"print \"Gaussian sample mean\", mean(X)\n",
"print \"Laplacian sample mean\", mean(Y)\n",
"print \"Gaussian sample variance\", var(X)\n",
"print \"Laplacian sample variance\", var(Y)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Gaussian sample mean -0.0574626457444\n",
"Laplacian sample mean 0.0348045465941\n",
"Gaussian sample variance 1.16888710379\n",
"Laplacian sample variance 0.86255333807\n"
]
},
{
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAXIAAAEICAYAAABCnX+uAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAGqtJREFUeJzt3XtwVOX9x/HPYoJyyRXMBgh2WyBAUCRVQZmpLM1smDJG\no1ykjGlU6JRhUEFbUTsKHatEkFocR2urphFGEaczgHKVwqIVK+OASgttKEJDMNkCuZdLIDy/PyiL\n+YHZZK95Nu/XzJlJds+e77MnXz6cfc7uWYcxxggAYK1usR4AACA0BDkAWI4gBwDLEeQAYDmCHAAs\nR5ADgOUI8jgxceJELV++PNbDANp06NAhdevWTefOnYv1UOIKQR6ClStXasyYMerdu7ecTqduvvlm\nvfLKKzEZy/r161VUVBST2ohfLpdLf/7zn2M9DARAkAdp6dKlmjt3rubPny+fzyefz6ff/e53+vjj\nj9Xc3Bzr4QFh4XA45HA4Yj0MBECQB6G+vl4LFizQK6+8orvuuku9evWSJI0aNUorVqxQ9+7dtW7d\nOuXm5iolJUXXXHONfvWrX/kf7/V6NXDgwFbbdLlc2rp1qyRp586duvHGG5WSkqLMzEw98sgjkqRT\np07pnnvuUd++fZWWlqbRo0fr6NGjkiS3263XX39dknTgwAH98Ic/VN++fXX11VfrnnvuUX19fata\nS5cu1fXXX6/U1FRNmzZNp0+fjtwOQ1ypq6vTbbfdpoyMDKWnp6ugoEBHjhzx3+92u/X4449rzJgx\nSklJUWFhoWpray+7rdLSUuXk5Cg5OVmDBg3S73//+1b3r1mzRqNGjVJKSooGDx6sTZs2STr/b3DG\njBnq37+/srKy9OSTT3bp6RqCPAiffPKJTp8+rTvuuONb1+ndu7dWrFih+vp6rVu3Tq+88orWrFnz\nret/86jnoYce0rx581RfX6+vvvpKd999tySprKxMDQ0NqqysVE1NjV599VVdddVV/sd/cxu//OUv\nVVVVpX379unw4cNauHBhq1rvvvuuNm3apIMHD+rLL7/UH//4xyD3Brqac+fOacaMGaqoqFBFRYV6\n9OihOXPmtFpn+fLlKi0tVVVVlRISEvTggw9edltOp1Pr1q1TQ0ODSktLNW/ePO3evVvS+QOa4uJi\nLV26VPX19frwww/lcrkkSffee6+6d++uAwcOaPfu3dq8ebNee+21iD7vzowgD8KxY8fUt29fdet2\ncfeNHTtWaWlp6tmzpz766CONGzdOI0aMkCRdd911mjZtmrZv396u7Xfv3l379+/XsWPH1LNnT40e\nPdp/+/Hjx7V//345HA7l5uYqKSnpkscPGjRIeXl5SkxMVN++fTVv3rxLaj/44IPKzMxUWlqaCgoK\n9Pnnnwe7O9DFpKen684779RVV12l3r1764knnmjVXw6HQz/5yU+Uk5Ojnj176umnn9aqVat0ucs6\nTZw4Ud/97nclSbfeeqvy8/P10UcfSZJef/11zZgxQ3l5eZKk/v37a+jQofL5fNqwYYNeeOEF9ejR\nQ1dffbXmzp2rlStXRuHZd04EeRD69OmjY8eOtXopt2PHDtXW1qpPnz4yxujTTz/V+PHjlZGRodTU\nVL366qs6fvx4u7b/+uuvq7y8XMOHD9fo0aO1bt06SVJRUZEmTJigadOmacCAAZo/f77Onj17yeN9\nPp+mTZumrKwspaSkqKio6JLamZmZ/p979OihpqamYHYFuqATJ07oZz/7mVwul1JSUjRu3DjV19e3\nCupvTh1ec801OnPmjI4dO3bJtjZs2KCbb75Zffr0UVpamtavX+/v1crKSg0aNOiSx/z73//WmTNn\n1K9fP6WlpSktLU2zZs3yTzN2RQR5EG655RZdeeWVWr169WXvN8Zo+vTpKiwsVGVlperq6jRr1ix/\n8Pfq1UsnTpzwr9/S0tKqCQcPHqy33npLR48e1fz58zV58mSdPHlSCQkJeuqpp/T3v/9dO3bs0Pvv\nv68333zzkvpPPPGErrjiCv3tb39TfX29li9f3ub8ISez0BFLly5VeXm5du7cqfr6em3fvl3GmFZB\nXlFR0ernC68Ov+n06dOaNGmSHn30Uf3nP/9RbW2tJk6c6N/OwIED9a9//euS+gMHDtSVV16p48eP\nq7a2VrW1taqvr9eePXsi9Iw7P4I8CKmpqVqwYIFmz56tP/3pT2psbNS5c+f0+eef67///a8kqamp\nSWlpaerevbt27typt956yx+Y2dnZOnXqlNavX68zZ87o17/+dauTjStWrPAHe0pKihwOh7p166Zt\n27Zpz549amlpUVJSkhITE3XFFVdcMr6mpib16tVLycnJOnLkiJYsWdLm8+FKxmhLc3OzTp065V9q\na2vVo0cPpaSkqKamptWJfOl8P61YsUL79u3TiRMn9NRTT2nKlCmXHDA0NzerubnZP025YcMGbd68\n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\nAJb7P0jq9eRGvsl8AAAAAElFTkSuQmCC\n"
}
],
"prompt_number": 17
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Bring into Shogun representation and create quadratic time MMD instance"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from shogun.Features import RealFeatures\n",
"from shogun.Kernel import GaussianKernel, CustomKernel\n",
"from shogun.Statistics import QuadraticTimeMMD\n",
"from shogun.Statistics import BOOTSTRAP, UNBIASED\n",
"\n",
"feat_p=RealFeatures(reshape(X, (1,len(X))))\n",
"feat_q=RealFeatures(reshape(Y, (1,len(Y))))\n",
"kernel_width=1\n",
"kernel=GaussianKernel(10, kernel_width)\n",
"mmd=QuadraticTimeMMD(kernel, feat_p, feat_q)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 3
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Compute two-sample test using permutation/bootstrapping, precompute kernel matrix for that"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# precompute kernel to be faster for null sampling\n",
"p_and_q=mmd.get_p_and_q()\n",
"kernel.init(p_and_q, p_and_q);\n",
"precomputed_kernel=CustomKernel(kernel);\n",
"mmd.set_kernel(precomputed_kernel);\n",
"\n",
"alpha=0.05\n",
"mmd.set_null_approximation_method(BOOTSTRAP);\n",
"mmd.set_bootstrap_iterations(250);\n",
"p_value_boot=mmd.perform_test();\n",
"\n",
"print p_value_boot, alpha"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"0.008 0.05\n"
]
}
],
"prompt_number": 4
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Visualise distribution of MMD statistic under $H_0:p=q$ and $H_A:p\\neq q$. Sample both null and alternative distribution for that."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"num_samples=250\n",
"\n",
"# sample null distribution\n",
"null_samples=mmd.bootstrap_null(num_samples)\n",
"\n",
"# sample alternative distribution, generate new data for that\n",
"alt_samples=zeros(num_samples)\n",
"for i in range(num_samples):\n",
" X=norm.rvs(size=n, loc=mu, scale=sigma2)\n",
" Y=laplace.rvs(size=n, loc=mu, scale=b)\n",
" feat_p=RealFeatures(reshape(X, (1,len(X))))\n",
" feat_q=RealFeatures(reshape(Y, (1,len(Y))))\n",
" mmd=QuadraticTimeMMD(kernel, feat_p, feat_q)\n",
" alt_samples[i]=mmd.compute_statistic()"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 5
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Visualise both distributions, $H_0:p=q$ is rejected if a sample MMD is larger than a the $(1-\\alpha)$-quantil of the null distribution. The null distribution has a very complicated form and is hard to analyse. However, there exist some more sohpisticated methods (faster than bootstrapping/permutation) that are implemented in Shogun."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"subplot(1,2,1)\n",
"hist(null_samples, color='blue')\n",
"title('Null distribution')\n",
"subplot(1,2,2)\n",
"title('Alternative distribution')\n",
"hist(alt_samples, color='green')\n",
"\n",
"figure()\n",
"hist(null_samples, color='blue')\n",
"hist(alt_samples, color='green', alpha=0.5)\n",
"title('Null and alternative distriution')\n",
"\n",
"# find (1-alpha) element of null distribution\n",
"null_samples=sort(null_samples)\n",
"quantile=null_samples[round(num_samples*(1-alpha))]\n",
"axvline(x=quantile, ymin=0, ymax=100, color='red', label=str(int(round((1-alpha)*100))) + '% quantile')\n",
"_=legend()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"png": "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\nQU5EpHL/B3n50PLtYx3iAAAAAElFTkSuQmCC\n"
},
{
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAXIAAAEICAYAAABCnX+uAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XtUlHX+B/D3oJiKIIPKcAdvhCAKhseszFEaWm+ElzQ1\nHa9b6pZ6tgtaCZrmuHoqUU9b5mXWEjJ3D5IpKeasVhqrCJo3NhLxMkwIIldDYH5/8HPWgWFmgLnw\nwPt1Ducwz+37eQZ4z8P3+T7PI9JqtVoQEZFgOdi7ACIiahkGORGRwDHIiYgEjkFORCRwDHIiIoFj\nkBMRCRyDvA3ZvXs3RowYoXvt4OCA3377zebtNsWcOXPw3nvvWbgiy1m/fj0WLlxo9Xbi4+Mxa9Ys\nAEBeXh6cnZ1hqZHBixYtwtq1a5u9/sCBA3HixAmL1ELWwSBvRQICAiCRSFBRUaGb9vnnn2PUqFF2\nrMq6RCIRRCIRAEClUsHX19dutRhqf8WKFdi+fbvV2374HgCAn58fSktL9aYZYu4H6CeffIJ3333X\nrDoMfbD+8ssvePbZZ81an+yDQd7K1NbWYvPmzfYuw6YsdeRZXV1tke20JbW1tfYugWyAQd6KiEQi\nvPHGG9i0aRPu3bvXYH5ubi4cHBz0/jilUil27NjR5LZ27dqF4OBguLi4oG/fvvjss89081QqFXx8\nfPDhhx9CIpHAy8sLu3fv1s0vLCxEdHQ0unfvjmHDhiEnJ8doWy+++CI8PT3h6uqKkSNH4tKlSw32\nu6KiAmPGjMHt27fh7OwMFxcX5OfnQ6vVQqFQoF+/fujZsyemTZuGu3fv6r0fO3fuhL+/PyIjI6FU\nKvHMM8/gzTffhJubG/r06YPU1FST+11eXt6gfbVardflMWbMGGzbtk2v9sGDByM5ORkAcOXKFchk\nMvTo0QNBQUH4+uuvG31Prl27hpEjR8LFxQVRUVG4c+eObl79n/Pu3bvRt29fuLi4oE+fPti7dy+u\nXLmCV199FadOnYKzszPc3NwA1B1RL1q0CGPHjkW3bt1w/PhxvaNsQ0fxDg4OyMnJwWeffYa9e/fi\nb3/7G5ydnfHCCy8AqPtP8dixYwCAP/74A8uWLYO3tze8vb2xfPlyVFVVATD9e0PWwyBvZSIiIiCV\nSrFp0yazln+0a6IpJBIJvv32W5SUlGDXrl1Yvnw5zp07p5uv0WhQUlKC27dvY8eOHViyZInuw2XJ\nkiXo2rUr8vPzsXPnTuzatctoDePGjcOvv/6KgoICDBkyBDNnztSbr9Vq0bVrV6SmpsLLywulpaUo\nKSmBh4cHEhISkJKSghMnTkCtVkMsFmPJkiV66584cQJXrlzBd999B61Wi/T0dAQFBaGwsBBvvfUW\n5s+fb3K/nZycGrTv6emp9/7OmDEDiYmJum1dunQJeXl5GDduHMrLyyGTyfDyyy+joKAASUlJWLx4\nMS5fvmzwPZkxYwaGDh2KwsJCvPfee1AqlQbfw/LycixduhSpqakoKSnBqVOnEBYWhqCgIHz66acY\nPnw4SktLUVRUpFsnMTER7733HsrKyvDMM8+Y9TsiEonw5z//GTNnzsTbb7+N0tJSHDhwQDfv4frr\n1q1Deno6srKykJWVhfT0dL3+d2O/N2Q9DPJWRiQSYc2aNdiyZYveUZqljR07Fr179wYAPPvss4iK\nisLJkyd18x0dHbFq1Sp06NABY8aMQbdu3XD16lXU1NTgX//6F9asWYMuXbogJCQEcrncaPfInDlz\n4OTkBEdHR8TFxSErKwulpaUNljO0jU8//RRr166Fl5eXbv39+/fr/VcSHx+PLl26oHPnzgAAf39/\nzJ8/HyKRCLNnz4Zarcbvv/9ucr8Nta/VanXTY2JikJmZiRs3bgAAvvzyS0yePBmOjo44ePAgevfu\nDblcDgcHB4SFhWHSpEkGj8rz8vJw5swZvP/++3B0dMSIESMwYcKERt9DBwcHXLhwAZWVlZBIJAgO\nDm60XpFIhJiYGAwfPhwA8NhjjxncpjHGfpZ79+7FqlWr0LNnT/Ts2RNxcXHYs2ePbn5jvzdkXQzy\nVigkJATjx4+HQqFo1tG2OQ4fPownn3wSPXr0gFgsxqFDh1BYWKib36NHDzg4/O/Xo2vXrigrK0NB\nQQGqq6v1Tgr6+fk12k5tbS1iY2PRr18/dO/eXRei5n5I5ebmYuLEiRCLxRCLxQgODkbHjh2h0Wh0\ny9Q/Qenh4aFXNwCUlZWZtd/GODs7Y9y4cbqj8qSkJN1/F9evX8fPP/+sq1MsFmPv3r16dT50+/Zt\niMVidOnSRTfN39/fYJtOTk746quv8Pe//x1eXl4YP368yWC05gnj27dv69Xq5+eH27dv61439ntD\n1sUgb6VWr16N7du349atW7ppTk5OAKA3qiU/P7/J2/7jjz8wefJkvPXWW/j9999x9+5djB071qyT\njr169ULHjh2Rl5enm/bo9/V9+eWXSElJwbFjx3Dv3j1cu3YNgP5R38MPK0MfWn5+fkhNTcXdu3d1\nXxUVFfD09Gywvimm9tvQdupPmz59OhITE3Hq1Cncv39fN6LIz88PI0eO1KuztLS0QZ86AHh6eur2\n46Hr1683uh9RUVE4cuQI8vPzERQUpBsO2ZwPeScnJ6O/P6a26eXlhdzcXN3rvLw8eHl5NbkOsiwG\neSvVt29fTJs2TW8ES69eveDt7Y09e/agpqYGO3fuNHmi0ZCqqipUVVWhZ8+ecHBwwOHDh3HkyBGz\n1u3QoQMmTZqE+Ph4VFZW4tKlS4327wJ1R8KPPfYY3NzcUF5ejpUrV+rNf7TrQiKRoLCwECUlJbr5\nr776KlauXKn7sCgoKEBKSkqT9xkwvd+G2q//4TZ27Fhcv34dcXFxeOmll3TTx48fj+zsbHzxxRd4\n8OABHjx4gP/85z+4cuVKgzr8/f0RERGBuLg4PHjwAD/88AMOHjxosObff/8dBw4cQHl5ORwdHeHk\n5IQOHTro6r158yYePHjQaL0Ppz2cPnjwYFy8eBFZWVm4f/8+4uPj9ZaVSCRGrz2YPn061q5dizt3\n7uDOnTtYs2aN7mQw2Q+DvBVbtWoVKioq9EJy+/bt2LhxI3r27IlLly7h6aef1s2rf1KrsXB1dnZG\nQkICpk6dCjc3NyQmJupGKJhaFwC2bt2KsrIyeHh4YN68eZg3b16jy86ePRv+/v7w9vbGwIEDMXz4\n8AY1PnwdFBSE6dOno0+fPnBzc0N+fj6WLl2K6OhoREVFwcXFBcOHD0d6enqjdRo6sffwtan9rt++\nWq1usL1OnTph0qRJOHbsGGbMmKGb3q1bNxw5cgRJSUnw9vaGp6cnVqxYoRvRUd/evXvx888/w83N\nDWvWrIFcLjdYc21tLT766CN4e3ujR48eOHnyJD755BMAQGRkJEJCQuDh4QF3d3ej+/9wWmBgIFat\nWoXnnnsOjz/+OEaMGKG3/Pz583Hp0iWIxWJMmjSpQd3vvvsuIiIiMGjQIAwaNAgRERF6Y9St1RVI\nxon4YAkiImEzekR+9epVhIeH6766d++OhIQEFBUVQSaTITAwEFFRUSguLrZVvUREVI/ZR+S1tbXw\n9vZGeno6tmzZgp49e+Ktt97Chg0bcPfuXSgUCmvXSkREBpjdR56WloZ+/frB19cXKSkpuj49uVyu\nu7KNiIhsr6O5CyYlJWH69OkA6q7ekkgkAOrOchsaK8uTHkREzdPUU5dmHZFXVVXhm2++wYsvvthg\nnrHLfx8Oe2qLX3FxcbZpyw7vo832ra3/7Lh/3L9mfDWHWUF++PBhPPHEE+jVqxeAuqPwhxcSqNVq\n3dAnIiKyPbOCPDExUdetAgDR0dFQKpUAAKVSiZiYGOtUR0REJpkM8vLycqSlpeldHBAbG4ujR48i\nMDAQ33//PWJjY61aZGsklUrtXYLVtOV9A7h/QtfW9685rHZBkEgkanZ/Dz1CJAL4PhK1G83JTrNH\nrRCR9bm5uekenEFtm1gs1ruPfEvwiLy14xF5u8K/m/ajsZ91c34HeNMsIiKBY5ATEQkcg5yISOAY\n5ERETXDy5EkEBQXpXgcEBODYsWN2rKidBrmLi5vu1gLGvlxc3OxdKlGrcvnyZYwePRqurq7o37+/\n3g3zcnNz4eDgAGdnZ93XunXrdPP37t0LLy8v9O7dGyqVSjc9JycHTz/9dKs9yevg4KD31KQRI0bo\nPfnJ2G1KbKVdDj8sLb0LwPQvTWkpb/xF9FB1dTVeeOEFLF68GMeOHYNKpcKECRNw7tw59O/fX7dc\nSUlJg2Crrq7GihUrcO7cOZw5cwavvfYaLly4AAB4/fXX8fHHH9s9DI1prR8yD7XLI3IiarorV65A\nrVZj2bJlEIlEGDVqFJ5++mns2bNHb7na2toG6xYWFsLb2xsSiQSRkZG6I9z9+/fD19cXQ4cONdp2\nbW0t3njjDfTq1Qt9+/bFtm3b4ODgoGurfvdGfHy83rNEX3zxRXh6esLV1RUjR47EpUuXdPPmzJmD\nJUuWYPz48XBxccGTTz6pq+/ZZ58FUPesU2dnZ3z99ddQqVTw9fU1WKdWq4VCoUC/fv3Qs2dPTJs2\nzSbXBTDIiajZamtr8csvv+hN8/f3h6+vL+bNm4fCwkIAdQ8OLywsxK1bt3D06FEMHDgQZWVlWLdu\nHdavX2+ync8++wzffvstMjMzcebMGezfv7/RZ78+fP2ocePG4ddff0VBQQGGDBmCmTNn6s3/6quv\nEB8fj7t376Jfv3545513AAAnTpwAAJw/fx6lpaUG7wD7qISEBKSkpODEiRNQq9UQi8VYsmSJyf1r\nKQY5kdCIRC3/aobHH38c7u7u2LhxIx48eIAjR47gxIkTqKysBFAX1mfOnEFeXh7Onj2L0tJSXWA6\nODjgk08+wZQpU/Dhhx9i+/btWLVqFV5//XVkZmZi9OjR+NOf/oSLFy8abHvfvn1Yvnw5vL29IRaL\nsXLlyiZ1d8yZMwdOTk5wdHREXFwcsrKyUFpa+v9vpwiTJk1CREQEOnTogJkzZyIzM7NZ79Gnn36K\ntWvXwsvLS9fW/v37Df6XYkntso+cSNDs1F/r6OiI5ORkvPbaa9iwYQOGDh2KqVOnonPnzgAAJycn\nDBkyBADg7u6OrVu3wtPTE+Xl5XBycsLo0aNx6tQpAEBWVhYyMjKwadMmBAQE4Mcff0ReXh4WLFig\nW+ZRarVarzvDz8/P7LpramrwzjvvYP/+/SgoKICDQ93x6507d+Ds7AwAugflAECXLl1QVlbWxHen\nTm5uLiZOnKhrAwA6duwIjUYDT0/PZm3THAxyIjJbaGio3oiTp556CnPnzjW6Tv2jUa1Wi9deew1b\nt25FQUEBampq4OvrC3d3d5w/f97gNjw9PZGXl6d7/ej3QN2HSHl5ue61Wq3Wda/s3bsXKSkpOHbs\nGPz9/VFcXAw3NzernMD08/PDrl27MHz4cItv2xh2rRCR2S5cuID79++joqICmzZtgkajwZw5cwAA\n6enpuHr1Kmpra1FYWIjXX38do0aN0h31PvT555/jiSeewKBBg9CjRw9UVlbi8uXLOH78OPr27Wuw\n3alTpyIhIQG3bt3SPez90X7wsLAwJCUlobq6GmfOnME///lP3byysjI89thjcHNzQ3l5OVauXKm3\nbVOBLpFIkJOTY9b78+qrr2LlypW6D5qCggKkpKSYtW5LMMiJyGx79uyBl5cXJBIJjh8/jqNHj8LR\n0REA8Ntvv2HMmDFwcXFBaGgounTpgsTERL3179y5g4SEBLz//vsA6rodtm7ditGjR2Px4sXYsmWL\nwXYXLlyI559/HoMHD0ZERAQmT56sF8Dvv/8+cnJyIBaLER8fr3cyc/bs2fD394e3tzcGDhyI4cOH\nGz1R+nDaQ/Hx8ZDL5RCLxbqTrI0NlVy6dCmio6MRFRUFFxcXDB8+HOnp6ea8tS3SLu9+WPdDMKe2\nVrAPvPthu9Ka/25ak9zcXPTp0wfV1dV6/dFCwrsfEhGRDoOciASpNV8JamvsWjG+pP33gV0r7Upr\n/rshy2LXChER6TDIiYgEjkFORCRwvLKTqBURi8U8iddOiMVii23L5MnO4uJiLFiwABcvXoRIJMKu\nXbvQv39/TJs2DdevX0dAQAD27dsHV1dX/Q234pM2PNlJRK2VVU52Ll26FGPHjsXly5dx/vx5BAUF\nQaFQQCaTITs7G5GRkVAoFM0umoiIWsboEfm9e/cQHh6u95gjAAgKCsK///1vSCQS5OfnQyqV6j36\nCKj7VImLi9O9lkqlkEqllq2+mXhETkSthUql0rsR2erVq5ucO0aDPDMzE6+88gqCg4ORlZWFJ554\nAh9//DF8fHx0T73QarVwc3Nr8BQMdq1YCIOcqF2xeNdKdXU1MjIysHjxYmRkZMDJyalBN0prePAo\nEVF7ZjTIfXx84OPjo3ue3pQpU5CRkQEPDw/k5+cDqLvvr7u7u/UrJSIig4wGuYeHB3x9fZGdnQ0A\nSEtLQ0hICCZMmAClUgkAUCqViImJsX6lRERkkMnhh1lZWViwYAGqqqrQt29f7Nq1CzU1NZg6dSry\n8vI4/NDa2EdO1K40Jzt50yzjS9p/HxjkRO1Kc7KzzV3Z+c47a3Dx4n/tXQYRkc20uSPyHj38UFS0\nHEBPI0vNBo/Iiag14hG5zmQAfkbmz7ZVIUREVse7HxIRCRyDnIhI4BjkREQCxyAnIhI4BjkRkcAx\nyImIBK6NDj8kS4mNj0V+cb5N2vJw9YAing8pIWoqBjkZlV+cj4CYAJu0lZuca5N2iNoadq0QEQkc\ng5yISOAY5EREAscgJyISOAY5EZHAMciJiASOQU5EJHAMciIigWOQExEJHIOciEjgGORERAJn8l4r\nAQEBcHFxQYcOHeDo6Ij09HQUFRVh2rRpuH79OgICArBv3z64urraol4iIqrH5BG5SCSCSqXCuXPn\nkJ6eDgBQKBSQyWTIzs5GZGQkFAresY6IyF7M6lrRarV6r1NSUiCXywEAcrkcycnJlq+MiIjMYrJr\nRSQS4bnnnkOHDh3wyiuvYOHChdBoNJBIJAAAiUQCjUZjcN34+Hjd91KpFFKp1CJF205HiEQik0s5\nO4tRUlJkg3qIqK1RqVRQqVQt2obJIP/xxx/h6emJgoICyGQyBAUF6c0XiUSNht2jQS5M1QC0Jpcq\nLTUd9kREhtQ/yF29enWTt2Gya8XT0xMA0KtXL0ycOBHp6emQSCTIz697aoxarYa7u3uTGyYiIssw\nGuQVFRUoLS0FAJSXl+PIkSMIDQ1FdHQ0lEolAECpVCImJsb6lRIRkUFGu1Y0Gg0mTpwIAKiursbM\nmTMRFRWFiIgITJ06FTt27NANPyQiIvswGuS9e/dGZmZmg+lubm5IS0uzWlFERGQ+XtlJRCRwJket\nkPli42ORX5xv0W3uBjBn2ZwG0z1cPaCI54VYRMQgt6j84nwExARYdqObYXCbucm5lm2HiASLXStE\nRALHICciEjgGORGRwDHIiYgEjkFORCRwDHIiIoFjkBMRCRyDnIhI4BjkREQCxyAnIhI4BjkRkcDx\nXisCdfbsWYM307J4O5lnLX//GCKyKAa5QFXWVNokYH9I/8HqbRBRy7BrhYhI4BjkREQCxyAnIhI4\nBjkRkcAxyImIBI5BTkQkcAxyIiKBMyvIa2pqEB4ejgkTJgAAioqKIJPJEBgYiKioKBQXF1u1SCIi\napxZQb5582YEBwdDJBIBABQKBWQyGbKzsxEZGQmFQmHVIomIqHEmg/zmzZs4dOgQFixYAK1WCwBI\nSUmBXC4HAMjlciQnJ1u3SiIiapTJS/SXL1+OjRs3oqSkRDdNo9FAIpEAACQSCTQajcF14+Pjdd9L\npVJIpdKWVUtE1MaoVCqoVKoWbcNokB88eBDu7u4IDw9vtCGRSKTrcqnv0SAnIqKG6h/krl69usnb\nMBrkP/30E1JSUnDo0CHcv38fJSUlmDVrFiQSCfLz8+Hh4QG1Wg13d/cmN0xERJZhtI/8gw8+wI0b\nN3Dt2jUkJSVh9OjR2LNnD6Kjo6FUKgEASqUSMTExNimWiIgaatI48oddKLGxsTh69CgCAwPx/fff\nIzY21irFERGRaWbfj3zkyJEYOXIkAMDNzQ1paWlWK4qIiMzHKzuJiASOTwiyiI513U6uALIML9Gp\nU2esWPG2TasiovaBQW4R1QC0AOYACDC4RFVV04cUERGZg10rREQCxyAnIhI4BjkRkcAxyImIBI5B\nTkQkcAxyIiKBY5ATEQkcg5yISOAY5EREAscgJyISOAY5EZHAMciJiASOQU5EJHAMciIigWOQExEJ\nHIOciEjgGORERALHICciEjgGORGRwDHIiYgEzmiQ379/H8OGDUNYWBiCg4OxYsUKAEBRURFkMhkC\nAwMRFRWF4uJimxRLREQNGQ3yzp074/jx48jMzMT58+dx/Phx/PDDD1AoFJDJZMjOzkZkZCQUCoWt\n6iUionpMdq107doVAFBVVYWamhqIxWKkpKRALpcDAORyOZKTk61bJRERNaqjqQVqa2sxZMgQ5OTk\nYNGiRQgJCYFGo4FEIgEASCQSaDQag+vGx8frvpdKpZBKpRYpmoiorVCpVFCpVC3ahskgd3BwQGZm\nJu7du4fnn38ex48f15svEokgEokMrvtokBMRUUP1D3JXr17d5G2YPWqle/fuGDduHM6ePQuJRIL8\n/HwAgFqthru7e5MbJiIiyzAa5Hfu3NGNSKmsrMTRo0cRHh6O6OhoKJVKAIBSqURMTIz1KyUiIoOM\ndq2o1WrI5XLU1taitrYWs2bNQmRkJMLDwzF16lTs2LEDAQEB2Ldvn63qJSKieowGeWhoKDIyMhpM\nd3NzQ1pamtWKIiIi8/HKTiIigTM5aoXIVs6ePYs5y+ZYvR0PVw8o4nkRG7UdDHJqNSprKhEQE2D1\ndnKTc63eBpEtsWuFiEjgGORERALHICciEjgGORGRwPFkJ7U7thodA3CEDNkGg5zaHVuNjgE4QoZs\ng10rREQCxyAnIhI4BjkRkcAxyImIBI5BTkQkcAxyIiKBY5ATEQkcg5yISOAY5EREAscgJyISOAY5\nEZHAMciJiASOQU5EJHAMciIigTMa5Ddu3MCoUaMQEhKCgQMHIiEhAQBQVFQEmUyGwMBAREVFobi4\n2CbFEhFRQ0aD3NHRER999BEuXryI06dPY9u2bbh8+TIUCgVkMhmys7MRGRkJhYI3zicishejQe7h\n4YGwsDAAQLdu3TBgwADcunULKSkpkMvlAAC5XI7k5GTrV0pERAaZ/YSg3NxcnDt3DsOGDYNGo4FE\nIgEASCQSaDQag+vEx8frvpdKpZBKpS0qVtgcsHr1apNLderUGStWvG2DesgWbPVYOT5STrhUKhVU\nKlWLtmFWkJeVlWHy5MnYvHkznJ2d9eaJRCKIRCKD6z0a5FQLIM7kUlVVpsOehMNWj5XjI+WEq/5B\nrjkHfPWZHLXy4MEDTJ48GbNmzUJMTAyAuqPw/Px8AIBarYa7u3uTGyYiIsswGuRarRbz589HcHAw\nli1bppseHR0NpVIJAFAqlbqAJyIi2zPatfLjjz/iiy++wKBBgxAeHg4AWL9+PWJjYzF16lTs2LED\nAQEB2Ldvn02KJSKihowG+TPPPIPa2lqD89LS0qxSEBERNQ2v7CQiEjgGORGRwDHIiYgEjkFORCRw\nZl/ZKWidtgGd/1tv4jKDizbUhOUc0wFRLaDt04TiiIhapn0E+WM5QEgHoONjj0zsaubKTVju1gNA\nVA5om1gfEVELtI8gB4AOjkCHTo9M6NToovqasJyIPVVEZHtMHiIigWOQExEJHIOciEjgGORERALH\nICciEjgGORGRwDHIiYgEjkFORCRwDHIiIoFjkBMRCRyDnIhI4BjkREQCxyAnIhI4BjkRkcAxyImI\nBI5BTkQkcEaDfN68eZBIJAgNDdVNKyoqgkwmQ2BgIKKiolBcXGz1IomIqHFGg3zu3LlITU3Vm6ZQ\nKCCTyZCdnY3IyEgoFAqrFkhERMYZDfIRI0ZALBbrTUtJSYFcLgcAyOVyJCcnW686IiIyqcnP7NRo\nNJBIJAAAiUQCjUbT6LLx8fG676VSKaRSaZMLJCJqy1QqFVQqVYu20aKHL4tEIohEokbnPxrkRETU\nUP2D3NWrVzd5G00etSKRSJCfnw8AUKvVcHd3b3KjRERkOU0O8ujoaCiVSgCAUqlETEyMxYsiIiLz\nGQ3y6dOn46mnnsLVq1fh6+uLXbt2ITY2FkePHkVgYCC+//57xMbG2qpWIiIywGgfeWJiosHpaWlp\nVimGiIiarkUnO8kaHPROdsTD8MkP0W+8KJeI6jDIW51aAHGPvF5d73UdrbbpZ7aJqG3iYR0RkcAx\nyImIBI5BTkQkcAxyIiKBY5ATEQkcR60QtQFnz57FnGVzbNKWh6sHFPG8fXVrwiAnagMqayoREBNg\nk7Zyk3Nt0g6Zj10rREQCxyNyATN1u8tOnTpjxYq3bVQNEdkLg1zQGl7x+aiqKl79SdQesGuFiEjg\nGORERALHICciEjgGORGRwPFkJ2H9+g2oqrpveGbO/0bHcBQMAba7+OjKL1cQNDDI6u0Awr/IiUFO\n/x/ijY2A+QLAy/+/HEfBkO0uPvoh/Qde5GQmdq0QEQkcg5yISOAY5EREAscgJyISOAZ5cxXn2rsC\n62nL+wag8l6lvUuwqtzMXHuXYFVtff+ao9mjVlJTU7Fs2TLU1NRgwYIFePvtdjYsrTgXcA2wdxUm\nOJi8sZZBje6b6e0JYYhiZUnbD/KAsAB7l2E1bX3/mqNZQV5TU4O//OUvSEtLg7e3N4YOHYro6GgM\nGDDA0vVRi9TC1I216pgb9qa3xyGKRLbXrK6V9PR09OvXDwEBAXB0dMRLL72EAwcOWLo2IiIyg0ir\n1WqbutL+/fvx3XffYfv27QCAL774Aj///DO2bNnyvw2LRJarkoioHWlqLDera8WckG7G5wMRETVD\ns7pWvL29cePGDd3rGzduwMfHx2JFERGR+ZoV5BEREfjvf/+L3NxcVFVV4auvvkJ0dLSlayMiIjM0\nq2ulY8fxMkomAAAEv0lEQVSO2Lp1K55//nnU1NRg/vz5HLFCRGQnzb4gaMyYMbh69Sp+/fVXrFix\nwuAyb775JgYMGIDBgwdj0qRJuHfvXrMLbU1SU1MRFBSE/v37Y8OGDfYux6Ju3LiBUaNGISQkBAMH\nDkRCQoK9S7K4mpoahIeHY8KECfYuxeKKi4sxZcoUDBgwAMHBwTh9+rS9S7Ko9evXIyQkBKGhoZgx\nYwb++OMPe5fUIvPmzYNEIkFoaKhuWlFREWQyGQIDAxEVFYXi4mKT27HqlZ1RUVG4ePEisrKyEBgY\niPXr11uzOZt4OIY+NTUVly5dQmJiIi5fvmzvsizG0dERH330ES5evIjTp09j27ZtbWr/AGDz5s0I\nDg5ukyOrli5dirFjx+Ly5cs4f/58m/pPOTc3F9u3b0dGRgYuXLiAmpoaJCUl2busFpk7dy5SU1P1\npikUCshkMmRnZyMyMhIKhen7pFs1yGUyGRwc6poYNmwYbt68ac3mbKKtj6H38PBAWFgYAKBbt24Y\nMGAAbt++beeqLOfmzZs4dOgQFixY0OZGVt27dw8nT57EvHnzANR1gXbv3t3OVVmOi4sLHB0dUVFR\ngerqalRUVMDb29veZbXIiBEjIBaL9aalpKRALpcDAORyOZKTk01ux2b3Wtm5cyfGjh1rq+as5tat\nW/D19dW99vHxwa1bt+xYkfXk5ubi3LlzGDZsmL1LsZjly5dj48aNugOMtuTatWvo1asX5s6diyFD\nhmDhwoWoqKiwd1kW4+bmhr/+9a/w8/ODl5cXXF1d8dxzz9m7LIvTaDSQSCQAAIlEAo1GY3KdFv82\ny2QyhIaGNvj65ptvdMusW7cOnTp1wowZM1ranN21xX/HDSkrK8OUKVOwefNmdOvWzd7lWMTBgwfh\n7u6O8PDwNnc0DgDV1dXIyMjA4sWLkZGRAScnJ7P+LReKnJwcfPzxx8jNzcXt27dRVlaGL7/80t5l\nWZVIJDIrc1r8qLejR48anb97924cOnQIx44da2lTrUJ7GEP/4MEDTJ48GS+//DJiYmLsXY7F/PTT\nT0hJScGhQ4dw//59lJSUYPbs2fjHP/5h79IswsfHBz4+Phg6dCgAYMqUKW0qyM+cOYOnnnoKPXr0\nAABMmjQJP/30E2bOnGnnyixLIpEgPz8fHh4eUKvVcHd3N7mOVf+/TE1NxcaNG3HgwAF07tzZmk3Z\nTFsfQ6/VajF//nwEBwdj2bJl9i7Hoj744APcuHED165dQ1JSEkaPHt1mQhyoO7/h6+uL7OxsAEBa\nWhpCQkLsXJXlBAUF4fTp06isrIRWq0VaWhqCg4PtXZbFRUdHQ6lUAgCUSqV5B1NaK+rXr5/Wz89P\nGxYWpg0LC9MuWrTIms3ZzKFDh7SBgYHavn37aj/44AN7l2NRJ0+e1IpEIu3gwYN1P7fDhw/buyyL\nU6lU2gkTJti7DIvLzMzURkREaAcNGqSdOHGitri42N4lWdSGDRu0wcHB2oEDB2pnz56traqqsndJ\nLfLSSy9pPT09tY6OjlofHx/tzp07tYWFhdrIyEht//79tTKZTHv37l2T22nWTbOIiKj1aHun7omI\n2hkGORGRwDHIiYgEjkFORCRwDHIiIoFjkBMRCdz/Ad+vlIj9Ji3NAAAAAElFTkSuQmCC\n"
}
],
"prompt_number": 6
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"So far, we basically had to precompute the kernel matrix for reasonable runtimes. This is not possible for more than a few thousand points. The linear time MMD statistic can help here. And it can do more cool things, for example choose the best single (or combined) kernel for you. But we need a more fancy dataset for that to show its power. We will use one of Shogun's streaming based data generators for that, the mmd class asks for examples one by one."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from shogun.Kernel import CombinedKernel\n",
"from shogun.Features import GaussianBlobsDataGenerator\n",
"from shogun.Statistics import LinearTimeMMD\n",
"from shogun.Statistics import MMDKernelSelectionOpt\n",
"from shogun.Statistics import MMD1_GAUSSIAN\n",
"\n",
"m=20000\n",
"distance=10\n",
"stretch=5\n",
"num_blobs=3\n",
"angle=pi/4\n",
"\n",
"# these are streaming features\n",
"gen_p=GaussianBlobsDataGenerator(num_blobs, distance, 1, 0)\n",
"gen_q=GaussianBlobsDataGenerator(num_blobs, distance, stretch, angle)\n",
"\t\t\n",
"# stream some data and plot\n",
"num_plot=1000\n",
"features=gen_p.get_streamed_features(num_plot)\n",
"features=features.create_merged_copy(gen_q.get_streamed_features(num_plot))\n",
"data=features.get_feature_matrix()\n",
"\n",
"figure(figsize=(8,5))\n",
"subplot(2,2,1)\n",
"grid(True)\n",
"plot(data[0][0:num_plot], data[1][0:num_plot], 'r.', label='$x$')\n",
"title('$X\\sim p$')\n",
"subplot(2,2,2)\n",
"grid(True)\n",
"plot(data[0][num_plot+1:2*num_plot], data[1][num_plot+1:2*num_plot], 'b.', label='$x$', alpha=0.5)\n",
"_=title('$Y\\sim q$')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAeMAAACoCAYAAADTn4YjAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsfXl4VOXd9j2ZJEwm22RPICRsCaAIRFYVdFABxYWoxQUV\n4kJea23rh4rba4vWtbaVqpfiUoWqsSW+ouJCMcJBZDGlTRQBQSAICSQkZF8Jyfn+uPPknJnMJJNk\nljPh3NeVK3P2Z/89v90gy7IMHTp06NChQ4fPEODrAujQoUOHDh1nOnRirEOHDh06dPgYOjHWoUOH\nDh06fAydGOvQoUOHDh0+hk6MdejQoUOHDh9DJ8Y6dOjQoUOHj6ETYx06dOjQocPH0ImxDh06dOjQ\n4WPoxNjP8e9//xvXXXcdoqOj8dlnnwEAcnJyMGTIEDz++OOoqqrycQl16NDhKnbu3Imrr74aSUlJ\nWL9+fef5Xbt2ISUlBY8//jgaGhp8WEIdnoJBj8Dl/zh58iRSU1OxZ88eDB06FC+++CJuvfVWREdH\n+7poOnTo6CV+/vlnjB49GseOHeucw//4xz8wdepUjBgxwsel0+Ep6MR4gOC2225DfHw8hg4dihtu\nuAFxcXG+LpIOHTr6iFmzZuHaa6/Fr3/9a3zxxRdISEjAueee6+ti6fAgAn1dAB3uwa9+9Sucd955\n2L17t1NC/NZbb+Hjjz/GkCFD8OSTT9pwzp9//jnmzZuH7777Dv/5z3+wb98+nH/++Thx4gQGDRqE\nRYsWeasqOnSc8Vi8eDFefvllTJ48GcHBwV0IsStzGQD279+PVatWwWq1Ij8/HyNHjsRNN93k1bro\ncA26zniAYP/+/Rg7diwkSXJ4fd++fWhpacHHH3+M//3f/8V9992Hbdu2AQC2bduG6upqAEBZWRlG\njx6Nw4cPY/78+Vi4cCGefPJJb1VDhw4dAK677jrs2bMHRUVFuOSSS2yuuTqXGxoa8Itf/AL3338/\n5syZg61bt+KCCy7wel10uAadGA8AfPjhh5gwYQIeeeQRvPzyyw7vOXbsGO644w4AwODBg/Hmm29i\n06ZNuOKKK7B27VosXLgQADBnzhxs2LABV111FQCgoKAAsbGx3qmIDh06AACtra0wm82d81INV+fy\nhx9+iHHjxiE6OhqnTp3CiRMnkJKS4tV66HAdupjaz7F27Vqkpqbi7LPPRnp6Ou677z5IkgSr1Wpz\n36xZs2yOjUYjHn30UYfvzMvLw5133gkAWL16Ne6//36PlF2HDh2OsXnzZsyYMcPhNVfnckVFBTIy\nMgAAGzduxPnnn+/+gupwG3TO2E/x5Zdf4qabbsITTzyBkSNHAgC+//57REdHY9myZZ1uTr1FTU0N\nKisrsXHjRrzxxhuYNm0arr32WncWXYcOHd3gn//8J1588UW0trYiPz+/z++58cYbcfToUXz22Wf4\n4x//iLlz57qxlDrcDd2aWocN1q5dix07duC5557zdVF06NDhJkydOhWbNm1CaGior4uiwwl65IyP\nHj2KWbNm4eyzz8a4cePw4osvAgCWL1+O5ORkZGRkICMjw8ZBXYd/4scff8Rf/vIXnDhxArW1tb4u\njg4PQJ/PZxYaGhqwfPlyHD16FNu3b/d1cXR0gx4549LSUpSWlmLixImor6/HpEmT8NFHH2HNmjUI\nDw/H0qVLvVVWHTp09BP6fNahQ5vo0YArMTERiYmJAICwsDCMHTsWJSUlAABdwq1Dh39Bn886dGgU\nci9QVFQkp6SkyHV1dfLy5cvl1NRUefz48fLtt98uV1VVdbkfgP6n/+l/Lv55G72Zz75uG/1P//On\nv77A5afq6urkSZMmyWvXrpVlWZbLysrk9vZ2ub29XX700Ufl22+/vevL+1god+P3v/+9r4sgy7I2\nyqGFMsiyXg57eHuu9HY++2Iu+6Jv9G9q55svvCDLv/+9LF98sSxnZsrysmWyvHq1Z7/pDvR1rrjk\nZ9za2orrrrsOt9xyCzIzMwEA8fHxndfvvPPOziARWsThw4d9XQQA2iiHFsoA6OXwJfxlPvuib/zh\nm7m5QEkJYDIBWVn87+lvugO9/abJBDQ1AeHhwIgRQFQUcP31nv2mL9GjNbUsy7jjjjtw1lln4d57\n7+08f/z48c7fa9euxTnnnOOZEurQocNt0Oez/6OkBKiuBoqKgDVrfF0azyErCzj7bGDVKmDCBODe\ne/u28fAX9MgZb926Fe+++y7Gjx/fGc3l6aefxvvvv4/CwkIYDAYMHz4cr732mscL21dkZWX5uggA\ntFEOLZQB0MvhK/jTfPZF3/jDNwXH2BdOsa/fdAdc+aY91y/y06jz1PRGMuBP89ujQT8MBoNuoalD\nhwvQ+lzRevnOBAgiZDQCZjNw880Dj1NcsQLYuhWorASSk4HXXutaxxUrKBloaiLnrLWEcn2dK2dE\nOExnmYy8DS2UQwtlAPRy6OgZvugbLX9TiKeLi4GgIIVI5eaSQK1cCTQ3u/eb7kR33xR1yM8HysuB\nEyeAI0eAu+7qWqfeSAb8aX7riSJ06NChabgillTfEx7OBb0/Bk5agbpeRqNjIiSIdFMTdcha4xQF\nJAkoLOzaRxERrGdrKzByJIlwezvrFRAAvPsu0JG3BgD7dM0atoE/9609dDG1Dh0agNbniq/Kl5sL\n5ORwoR49moY8ISFcqNetA0JDgbAwYNw44NQpEqTiYiAtzbEY0x2WyJ6EfflWrlQIbXo6OWJ7IrRy\nJY25oqK0beSkFi+r+6i4GKipASoqgJQU4PXXgdmzWdegIPZfR8bIXsMX/d3XuaJzxjp06NAEcnOB\nzz4DGhrIOY0dS7FlSwt1iGYz8NRTCoE6cgQIDAROnwa2byexmjEDmD6dC7wjMabWuEh7YiHK9847\nwJNPkhseM4ZEKTkZWLKEmxD1MxERrG9ysm/rooYjImgykTM+fZqbqLo6IC6O5T58mJus118HLBb2\ny9tvA5GRQGMjRdUmE7B0KTceISHAK6/w3u6gtf7uDrrO2IvQQjm0UAbAC+XIzgasVmDePM5G++Pe\nlMPJszrci5ISoLQUOHYM2LED+NvfJHz/PfDzz4AsAxMn0s1FiGvNZhJtoxG47joS5qQkEqyzz3bM\nJQp9Y3ExUFbWVc/q7fnx2WdATo6EtWuB995TCNaJEyxnSwtQUMC6FxeToNi7Np04QS5TXHcFnq6n\nI/erESMkhIayLsnJwHffse8AbrzeeUchrkuW8NykSbb1KioCqqqAQ4eAZct6LseRI1K/Lc+9hTOP\nM87OBvbv50zOyel5a6XDP7F/P7B5M39nZ3PFUh9bLLynqQn417+6Hwf27xrIzp0+Qm4urWi//ZZ6\nwkGDuFAPGkQiO3QoxdDr1ytcVnY29YnjxpFYR0ZyoV61yrlIUugbY2PJgVdU+JZj2raNGxCTCbjy\nShKhLVsoeq+rI0d8332UDAiCsmqVre74N78BDh7kxuThh31TDzVEX9bUADNnsoy5uZxCssyyx8UB\nc+eyD7ZuJad8+rTSb+vWsb/z85V3AOSIjx/ndP3jH3suy2WXsX39Qb88MHXG3RFcq1VZWBcsOPMW\n1p42I2PGcPQGBQE7dwKpqb4pZ38xbx7wxRfAlCnAhg3AwoW2x5mZro8D+3d5YAN3puqMhThz61Yu\nvl99ReOd6GhyVmefzUV06FCgvh746SfqFc86i8M0LY1Eq66OvxsaFF2x0C2bTMCePcDRo4p48x//\n0Iaedfx4ltFspp70rbc4RffsIYc8ezavV1QA55wDXHopcOutwCefKATm+edJ1EeMIJefluZbnfiK\nFSxvQQFw7bXU9wp9segrqxVYvpznjEZywE1NJMgpKcCuXSTcFRVAYiLrsmQJ67dsGQmxVvko3bVJ\nQHAumzdzAc3Otr1uNvP/lClUUDh63l4k6Q9iyu7KqL62Z4/jthH3HDyoWFPMmOHFCrgZOTkkshs2\ncPbW1nJW5+ZyFqvHgdncff+q36XVFcBPIQjx99+TCzKbuSCXlXExPnoUuOgi4OWXyT2lpJD7PXKE\numHBZb34IjlDNceoFpVu3Wor3hTRnXxt8DR2LIdUVBSJ6MqVwLBhrNPkycB//sMpeewY67B8OTBr\nFiUEQrweHk59eVwcn/V1dC6TiQZ3M2fSF1qcU/fVhg0sZ3U1cPIkN2FHj/LezZspmj5wgBuwkye5\nVL/3HttK6JUHGvyHM3ZVvKzmfKOigEOHIBUWwmq1KlvOgweplFJzfeL9u3ZRJgRwAbZYOKprapRz\nfRzlkiSxHJ6AI47fQZ0kAFaAW/KJE4Evv+SslmVbQhQQwK25h8IierQt7OGobTr0yNKiRbBmZ1P2\nBZBjXru299/op/rjTOSMc3PZFbt2AQkJ3P8lJHBqGo1AW5sEk8mKOXPYha2tNPQ5epQLssnE5wMD\nqYUwGsn53nILr6mtjAsKqHu2WMgVO+seb41LYYhkNAL19RIuusiKlhYSrLIyZeNQVsbNSVMTNyOy\nTBF7ezv/L14M3HijwimvWuUax+/Jer73HvD550BwMCUYP/3ETcLXX0u44QYramqAv/+dG6qaGsBg\n4L2xsZSI1NdzSWpu5jWTiZuwxYttXZxcgVfXmQ4MfGvqnvR2YjHcvZvHwcGcpSNHAsOHc0TU1ir3\n//a3wEcfOX4/oHDOmZkKIY6KcsxNawGC04uN5TZ66FDWV13ngADOYoAr388/K0TI/p72duCSS7g9\n92fdenY22S4AyMhQ+k9ssiTJ1oJnyxZyyL2ts5/olY8ePYpFixbhxIkTMBgMyM7Oxm9+8xtUVlbi\nhhtuwM8//4xhw4ZhzZo1sLi5zx1ZDh85wv+1tcBtt3GqRkezW06fJidVU8Pp29jI+2bOpOFTeTl1\ni6WlFH0OG0ZR7S238Htqf1StiTe/+Yb749paICaGG5KkJE7HceO4H5w7lwIsgEtZYiKvm0x87qKL\nSHg/+UTReXvbB9eR1XR5Obn8LVu4HB89yvYPDeWyk5rKjUZTE9+RkKBsMj79FLj/ft43bRqQl0fO\n2GIBfvELz9fHl/AfzrgnvZ2a+zEYOHpbW52/z54DEu/PyOBoefttfkOcF9trrehQ7TkxcU7Is9SI\njATa2rjlVJ8LDORIB2wJNUDZV10dfwuZmb8QZXXb/Oc/ZJsAblBGjOjKvc6ezVmvRnIyN3Kucrr9\n1Ct7izMuLS1FaWkpJk6ciPr6ekyaNAkfffQR3n77bcTGxmLZsmV47rnnUFVVhWeffdat5bMPY9jY\nCDz+OC2GDQbgiiuAq66iePLtt7mwt7ezC4YNY9MKnbDwU33tNZ47dYpE/Kab6IvsSxcWRwTK3iXn\n4os5LBsbgfPPJ5EVU3HkSGDfPhIoi4VTde5cPj91Kq2OhwzhUhQX51tRu7pPGxqAUaOobkhKogCy\nuhrYu5fEOChIIbzl5VySDAa+JzSUS6+9TvyllxR9uK/71VX0da74DzEW7inOFAZiMXQE4YyoRlAQ\nCWxrK60H3nwTeOCBru/v6bu+wuDBClcbFkZ5V1AQVzk1hw+QsJSUcBbYIzGRbSBWAouFW+6GBhIo\nddvFx3OV0FI7OIJ6YxYUpGzKYmO55RYIDAT++18S6exsbs5EXdWbE1dE1/0cJ74SU2dmZuKee+7B\nPffcg82bNyMhIQGlpaWwWq348ccf3Vq+JUvIEYWHU5xqMtFesLWVgqwHH6SIurSU4ujgYIXIbNjA\n6bl9Oxfw0aNJjN5/n9dra0mo5szxvR7YUezkqVPJCZ8+TUI8bhywejWnbUQEp9XIkSRcQUEk2q2t\nFM/W1FAnnJ5OwhQaSkI2dCgJu6fr2l3gDLUqwGjksvGf/3CaBQdzerW08N6UFBLVmhqK4UUgk+ho\nnhMbrbFjKf3IynJd7K4leExM7UuxFgDnujj78zk5XGzb2rq8QkpLg3XvXtuTra0Kx5SXR2uQvXv5\nfvt3u0nk6Fb9hVq0quZ4f/qJ2+Xych5bLKxrx+CQ0KEzFpg0iUTniy9InIQzJ8B2yMvjzAHYXmoR\nbD/0pB7V5aiNs4qLuWkJD+cKqPavPH0a0oQJsFZWsuzqsaOeTD1NLHU7+BEOHz6MgoICTJs2DWVl\nZUhISAAAJCQkoKysrMv9WVlZGDZsGADAYrFg4sSJnX0o/Fa7O/72W6C83IqICODmmyW0tQGRkVYc\nOQIkJEjYsweorbWiro561NDQQoSG3ourrgKeeEKCLAMGA3Wr+fkS9u0D7r7bitxcYNYsCUOGAPfe\na4XJ5Fp5HB2Lcz3dv3y5hIoKYNw4K7KygB07lOsmE7Bvn4TwcCAwkNf37JHQ3AwEB1uxaxdw4oTU\nsfxYUVUlwWjkRiU+3oqUFKCuTkJLCxAUZMXIkUBQkISqKiAuzoqyMrbPxImAydS7+onjFStWuNx/\nJSVAYSHLYzZbsWiRcj0ry4o1a4DERAnr17O8sgyMGiVh0yZAlq0ICKD+/9ixQoSF3YuWFqCmRkJM\nDHDDDVa89Rbby2wGzj7biuHDgXfekfDBB8D8+VakpwNDh0rYscNz/dmfY0mSsKpjzRTzoy/okTPu\nq1gLcNNuX83lDB/O7ZXZzK2wEMeaTMo5ew4YHQTIYOh5URXGPWquU3BFbvBPdisBEqLV0FBuKQWS\nkri9FD4D8fFkNZwR40GDWKf6eoWDFO157rlsTzGwMzKAjRuVuvfDTcyjxFjNpV55pTJO5s/npuPU\nKaUcAKxxcWS3xOZMjcBAKq8iIpz3uxvc5bzNGdfX1+Oiiy7CY489hszMTERFRaFKbLoAREdHo1IY\nMrqpfBMnkjuUZU6xqChyRD/+yGEcGso9U2wshT2VlRIaGqyIjGT3xMdT/V9SQm5q3jzaFwrtUXh4\n/915XB2XjrhfEUGstpbTx2IBvv6a++KgIGqQLBZyh0VFbIfGRiA4WEJamhVVVYp19fPP03K6qkoZ\nfrfcArzxBi2pp0+npKCvdXW1nsLIrraWzhUPPNA1ApgoQ3OzYutaXMxyFhdzCYmPBywWCUVF3EzF\nxZErFvryY8e4FF14IZf43bs5Xlpb+5eZaUAZcCUmJiIxMREAEBYWhrFjx6KkpASffPIJNncsQIsX\nL4bVau1CjPuN7Gz2FEBCYDYri15HmRAWppjfOYEV6JkQC8OnefMUywL1c24w0HHroBgyhCNabaAF\n2BpktbV1MdCyKYHBQBmSkCMBCnFvbiaxj4lRiHNMjO23enIT6wYemSBiw3ToEAnuiBFc7QDWdd06\nW704OtpDrJaOcPq0Qsyd9Xs/2sEXaG1txXXXXYdbb70VmZmZANApnk5MTMTx48cRHx/f5/c7E2uO\nHk3X9REjuGfMzydBCw7mlDMaqRtOSaE++N//tuKHH5Rnzz+f3SrLfGdJCfDsszRtEGn3tm93nHbP\nVbg6LoWrztGjXDpWrmQ5Sku5HEVGskz19fyLiOCSlZjIjURzM43XACAszIrBgzkNd+/mcPrsM4rw\nq6tpUR0by28uWcJ3G438Zl/9iV2tZ0kJ276ggH22bp1trHB1wBQRPezAAeDf/+bGorYWOO88mpyU\nlFhx6JCyMWls5DLW2Ki4rV10EeufnExCXlystK8n66kF9MqaurdiLaCfoq38fKCykgtmaiqkY8d4\nfcoUIDcX0uLFwO7dsHaIaaWOb1oBIDAQkiwDbW2dBMjmujgeNYrPp6ZC6lh0rR0LkTRqFHDnnbzf\nbOb9o0fD2rHgelL00ePx4cOQOkTR3davu+OOjYbN9cZG5dhoBE6e5HFzM6S8PCAzE9aOckh33837\nP/oIsFh82x4ApP/7P2W82NdXlh3XV30dAEJDYW1tBU6dsr1uMEDauxeYNg3Wjohdnd/Pyel0k4Jw\no+uhvO4SbfUWsizjjjvuwFlnnYV777238/zVV1+N1atX48EHH8Tq1as7iXRf4CgecG4uDXBKSmiA\n9M47vGf/fgofSku5wAcEKN50J0+S6NTVKda3M2Zwod66lftzER6zspL7rdhY70TUElbLx44pgUri\n4/nfaCTneuwYNw+hoRRk/elPwO9+R4vut96ikVp1NTnEn35ifU0mSgzEhkPtN63e5NTVKTpWT9ZX\n7TMcEkJCfOCAYkQ3bJgSNxogxy+cOHbuVPbyd9/Ncs6YwQ3HqVNKKFNZJuG+4AKF4DY306q6ro48\nkD3hH4hw2YCrt2ItwA2iLXsLVYDciQjeGhTE0bBzp+PnO0TTEuw4QsH9Ca4a4Ja1tJSzedQoWpCo\nfZHdYMjlVpGJaJvISMqFMjIUs0V70GmTZYBdW3QHtfET4NYIVB4RH0VHK/ptgYiIrtIDdTlg1x5X\nXEHrk2+/tb1R1YaeiNzmLTH1N998gwsvvBDjx4+HocOU9ZlnnsHUqVNx/fXX48iRIw5tQHpTPkdZ\nhKxWcnilpZxSQUHkdD/9VBFsRUZy6gUGAtdcA3z8sYTGRiv27+c0j4lhRKf//pccaXs7F2kR1zgg\ngO9YtarvQ7S343LBAgqfjEZachcUUJiXmEgic+AAy/zww2wHQVCNRuCHH8jJV1RIGD7cirY2tkNS\nEqe3faQttWi8tJTf6Kthk6v1FKLn669nv+blcektLWVQO1lWxMhLl7Ltm5tJbM1m9vPvf8+QnZIk\nYdcuK9avp1QgJIRTdtUqLiv27lgrVvB7FRU0VnvnHc/V053wqJ+xp8VaTtHBcdgQwDVr+Fv4/qqN\nl+zhrEGEjlU8GxVFwjtrFrenO3bwfHo6t+6pqYpfqlYg2iYwUBEnT5igEJHAQJZZKJyE2ak9nOnS\nDQZFpDtmDP+Eu5dWYK/HnzTJ1kUpMZF9OWmSYi0uEBbGOtlv5HbtcjymBCEOCyPBr67WVlu4iBkz\nZqDdTlQvkGfv3tVHOPJ1ra5WiG5ZGRfX774j8SwrI3GqqeF+0mwm53vPPSReVVXUJMTFMSFEXR1d\n5CsqlExOVVWKC4za79bTuPBCRYeblcX6/fwzYwuJqTVoEAnOnj00v2hvp0hWBPSQZbr8vPUW8Ktf\n0TSmuLhrPdSc8sMP2xJqT8FkshVDjx7NqZSRwY3HjBnsuxUraE5iNLJOQgMWF6dogCRJ4YMyM4FN\nm9guiYmO+0t8z2xWgrwMZPTIGcuyjMWLFyMmJgYvvPBC5/lly5YhJiYGDz74IJ599llUV1d7xoDL\nEeLilJl42WU0sOrrd4KCKCN66inbSFsCyclKnDYtQm08JLh7NRYssE2S0B3UhFnNCQ4ezO08oK1E\nG/aGU6+/ztl74gRnvcWiSE7UenEBIQ8TOOccblzs/bQdISaG/ipuagN/jcDVnduL+lpeHhfv48ep\nIw4JIVc4a5YyZEeOJFE1m0nAxo2j6PLrr8lpjRrF/WZjI6fskSM0aLJYfJfTV805iqhfH35IH9vU\nVEWHLGwkQ0JIjAIDyVH+9BPrdu+9FOV258pj/y1vQ3y/rIzLZEEBJRjffMN6fvcdzw8aRCmF0cjp\nmJVlG596yxZOs/R0x8ZZaumBOqKav8Bjsam3bt2Kd999F5s2bUJGRgYyMjKwfv16PPTQQ/jyyy+R\nnp6OjRs34qGHHupTwfuEnTtJJPfs4TbNUcWFCWZ3CAzsnhAHBHCkaRlq46EdO7hREQgOpuJKRCUT\nMBpZd4B1BBge88IL+TsjQyEwZjNZDgFhyOYo7re3YW84ZbHQYTMujiueCHzsiBADtoQ4MZGrvrCq\nUUOMI5HvDeC400Ib+BiOUuU5unbJJfy74AIusEOGAE8/zWEXEcHpnJ2t2CU2NZHoFhezm8eM4fnr\nr+fiPmGCbco9X8WaNplYn5Ur+XfjjSzjeedxGtFNi5y9iLNsMLCuZ51FQcvChSRwa9Z0Xw/BpXqb\nMC1dSqJ7++3A1VdT16vWIxcWchlNTaWIfepUcv5BQdT2ffIJn/36ay4lZjMlGM7SGopxU1xs62s+\n0NEjMRZircLCQhQUFKCgoACXXXYZoqOjkZeXh/3792PDhg2e8TF2htRUcqupqba+nYKwhIaSsKrc\neTqvqSHC2+zf35UQAwwH48aIW2rfN7dBncQgNZVmiwJtbSRGqkAXkjgvXMCEyHL4cIYHXbCAK2Ra\nGtvsrLOAX/5SiVvtJstht7SFowQOFosye8WGIzKS/x1YTHeW4txzGS/R0TiYOpVyNZE4IyKC//3E\netqTsDcycnYtMpJDqbqaIurYWBKs48c5zNLSSGhuvZX3M1uThKgo4K9/tSVQjoiSuwiVo3GZm0uu\nzj73sbj2/PMcBh98APzf/7GuEyaQ8E6cyGEoy/xrbyeHHxvLPeKIEcBXX0kIC1M4Xm8Q3N7MP/sc\nwuHhJJT79gH//KcSxmDIEAb8GDWKwjSAfbtnjwjmIiEoiGYZEyZwHIhNjLpduxtTnqynr9EjMdY8\ncnIUl5v2dm6xzzuv632O9GQVFdyiCgITFaUsuBkZHGlah9Bli2AltbUKJ+cgAIpDTJmiWL2sWaMY\nr7W3Uwqh5gC1ksEoO5sEcscO+hKrMy6lpPD/6dPcWmdk0Mc4Otr5+4KDuSlzZOz17bck5GKz8v33\n2mgDDaA7Tk597cQJckUhIUrO4ZoaNl94OBfzTz6h684NNzCRwMiRXLBXrVI81LwFNQE+fLh77r+h\ngcOmuJj1EOcSEkiYzz2Xy1JiIjnhsjIOp1GjuEExGslR+pID7G7DERLCcyKHcHk5RevffENjOpH6\n8IILWIe0NCX5Q0sL6z1yJNtARNZatIjvcdSuWsmo5W34TzhMZ8jO5pa0qopEecwYjp5duzjq7REQ\nwFFVWdnVSltwOVoMf+kK1DpUwDakowhrqdYFA9zC7t5tW1d7S20P5vHtM+zrCihWzqL8amv5BQvI\ntjjalIWHc7z88pdKJDJ18Bj7YCcegL/qjB3BPg6z0Onm5nKRnjBB0f1++CEX7EsvdRzEwlFwDW/A\nVcvllSs5rI4c4SbikUds9b533cVNRk0N8PHHJNg33EADLF+GerTX9a9c6bydq6ttk2xkZ9P4qraW\n3HB5OVMlCstqodMvKqJNQEgIkzzYG5z5Ss/vaQz82NTOoF6UY2IUq1lh3S2iKo0eTTPH/HwlFrE/\nEtzuYB9BoIg5AAAgAElEQVSfW4TFjIpiG/3hD9y0CKtZ+zSKIiJ/SAhF/X/9q+N43VpAdxsG4YYm\n6iquOQmXCkAxADv3XI6doiJSjNBQr1iRDyRifM01bPrmZg6x11/n77vu4hQVyQ0A4N13SaBvvtnx\nYuyrBVv93bvuAv73fx1H+WpuZspAWVYMjRwZWuXkkBgFBjI3s8XiW4MsR0k7XG3n559nnQMD2c/j\nxvHZIUMcu2Q5g68N0jyFM5cYq32RIyNtXVvmz2ewhvJyWD/91OcExeM+b9XVdLosLWV75OZ2IabS\np5/C+uabXAEjIrhdd6Qn9YAvrRr9bgtBcJ9/3vmGwd43PCZGyVUtygHAKiQqwidZWFN7uA3UGEjE\neOFC6hdF7uAvv1SsY81m54TXHpIkYfp0q1cXbDEu7QmFMw5dhMBsaKD945IljsvZHYfvC1/YpUsl\nBAVZO4kv4DphXLlSsWbPyFAkHGlpnEbOJBi+qOeA8zPWNNS+yIAtMbJYqPDpLpXiQILFQkdNNQGy\nJyZhYUoeZ6vVlhCLtIn+YJikrpszgmlf///+l/4UqtjUnaoNQYBFmFV/aAMNQS32/MtflEhTX35p\nGz5xwoTeEVW1n6s3Yf9dZ0ZFJSVKPuX168kPOPOZdZdRkjtw2WUst5r4utrOwo/8qacU3X96OvXC\nWqmfX0L2IDz8eseoqpLlBQv4/6KLhBEjz+mwxeWXs20sFlm+4gpZPnxYabuBClFnQJYzMlhXcW7K\nFJ+1gU/mSi/QU/leeEGWf/97WV62TJZXr7Y9f8UVsjxtGpu1qcmz5fQUmppYL/vyv/qqLM+ZI8sX\nXijLTzzhvH7OntcC1qxhP736au/LJ+pVVaXd+nkbfZ3L/i+mFnAUjKKfCd8HPLSaq9mTqK4GbruN\n5FhYkGugHbw1V26//XZ89tlniI+Px66OJCzLly/Hm2++ibgOH/VnnnkGl112Wa/K50y3qxZpigAd\nAwmOdMb+Bl8ZyQ1UeCzoh9/AUTCKDjcc6Xe/08QqoAWfN5syqN2ifFkOb8JiYcQ2dXILH7aDt3Hb\nbbdh/fr1NucMBgOWLl1qE0egt3DmjuIoQIer8MUY6e03TSZGl7rzzv6lM/Q21N8UIvTiYjqgOHJv\ncvc3vQUtrLmuYuAQY0fBKMQiGxbmu3Lp0KEhzJw5E1FRUV3O95crdxaswldRo3S4DrGRmjiRhmiO\n/Km1iu78o/0N/m/AJeAoqUQHtJLTUgvl0EIZAL0cWsNLL72Ev//975g8eTL+/Oc/O4yo1690qH08\nFvB5ek4PHouUmn15vrzcipIS4MgRCZddBsyZ49rz4pzVaoXJBKSkSCgsRKeFdWKiBEnSfn+WlFhR\nXQ3s2yfh55+BZ55xb3ldOZYk96RDHTg6Yx06/BjenCuHDx/GVVdd1akzPnHiRKe++LHHHsPx48fx\nt7/9zWfl8yS6S2zhj3Cnvtcf/X61GDhE1xl3A63oDbRQDi2UAdDLoSXEx8fDYDDAYDDgzjvvRH5+\nvq+LBMAzfdNdYgtPfbMn9OebfXWZcvRNT6sUPNG2PYXO9Kf57RIxvv3225GQkIBzzjmn89zy5cuR\nnJxsk8lJhw4d/ofjx493/l67dq3NPB9o0Jq/b18hdKWtrfTx1QpX6G0MJJsEl8TUW7ZsQVhYGBYt\nWtQp2nr88ccRHh6OpUuXOn/5ABFt6dDhaXhrrtx0003YvHkzKioqkJCQgMcffxySJKGwsBAGgwHD\nhw/Ha6+9hoSEBJ+Uz9PwR1GsIwjxdEEB7VNFAoZ16waWGN4e/qBm8GgErpkzZ+Lw4cNdzg+EyalD\nx5mE999/v8u522+/3Qcl8SzsF21nRMofFndHEBx+Wxuznwqxe2WlokNes8Y/fYa76xOhZvDn+jlD\nv6yptWqB6ciCrz8Wi+46XrFihU/qrz4uLCzEvR3BaH3ZHvZ946vy+Ko93GWBOZAhSX2PK2y/aDsj\nUvb3paRoP35ybi7Db5aVARdfzP9C7L5qlWti+P60bV+h/qaa4EZEMCaTiO/d3Mzfjghub9UMvqhn\nX+GyNbU/W2BqpUO0UA4tlEEvR1doZa44gy/Kt3y5BIvF2idu1t7K1lm6Qvv7duzQPjFesYKh1Csr\nmQd51iwl+YarYnhfE2O1FXhxMZPt1dcztndsrPOUlb1VM/iinh7P2mRPjF25pvUFRocOrUDrc8UX\n5XPmtmN/PiSExHnPHmYOCg8HbrzRNo2fs0XcH3XIjnJD+5u4NjsbOHiQfXXhhUyyIfJa//rXzlMw\n+oNawetZm44fP46kpCQAA98CU4cOHd7H7t1MxRgeDjz8MLB0KfDNN8Dx48CoURTRXn89idPWrUBh\nIcWdw4cDO3bwvFisTSYSbXFOLOS+ygrVW6iJ0I03Atu3k4OMi/ONVXh/iWJaGlOtt7YyxXx8PPvH\nZGLazaws4JFHKLUICQFeeYWxnAayztgl16abbroJ559/Pvbt24ehQ4firbfewoMPPojx48djwoQJ\n2Lx5M1544QVPl7XP0IqvmRbKoYUyAHo5dPQMo1FCRART8z36KPDBB+R+T56kFfH+/bzPZKLI1mgE\n2tuZmOLwYaYJfP55JVRiTz7GgHb9jEtKuOHIzQV++1vgr38lR9xXl6b+1DM3lwEP8/LY1t2FzlSH\nq9ywQflmeDj7qqiIKRgTEpgXuaGB6QXuuAPYuJF9fegQsGwZn1PrjI3GnkNh+tP8dokzPlMsMHXo\n0OF9OOOyzGb60IqFt66Oi64sA8nJQFUVxZrx8bw2bBjwww/ktkpKKMbdsoUpztes0Z6Psaj3kSPA\n9Oksn6O2yM0lIf7+e2DIEG48fvUrujO58n53i3RLStjGFRXkWp96qvt7hQtWQwMJa1YW/7ZsAVJT\nWZ9t26j/3raNfd3czA3V6dPA0KFMObBiBa+lp1NHvnLlwOKS9XCYOnRoAFqfK54snzPdcHMzcP/9\nXLALCoBvv6WxT1AQF+hhw4Bjx4DaWhKF8HAaM61eDYSGcvG3WIDRo2nAZTJ5Xz/cHUF0VG+1cVZy\nMvDaayQ6FRVMNBYUBJw6xf8WC9vmtdcc18dTqRFFWsyjR3vOOioM5L78kmJ1ABgxAhgzhpKOykr2\n38SJwLhxwK5dPC4r42YLADIyKI5PS7OtS19DYXpa7+xxA66+QOsLjA4dWoHW54onyycW1a1bSYDb\n25kbOCGBC3ZrK7nh/HxeT0zkgh4XB+zcyXMmEwlwbCwQGEj/2/Z2nk9L852RU3cEcckSRScuUmtf\ncgk5YKORZY6NZd2Tknh9924Sq927Wd8RI2iBLIJ+qAnLypUU+ba1AXPn8nvuIDyOjN6cEThx70cf\nASdOkPg2NlLqceoU2yU0lNdCQsgBT5oEfPgh3xcQQKmB1aq4cAnC21fjO0/nb9ZjU3cDregNtFAO\nLZQB8KNyZGdzJZg3jzNYh9tgH9IxOppNfPgw8Oc/A3/4g4TmZnKFJSXAOedQ9HzyJM/96U/A5Mnk\nskJCFAOfuXOBhQuBq66iiLo3Rk7uHpfdicbT0+ljGxws4ZNPeC40lATIYAD27qUxWlISxfAPPMCh\nOHYsEBMDzJ7NZ9RBP9TIymJ0rokTKVFQX+9PPR2FoHSmjxf3zpoFnD4tITWVfVVayr/GRvZnWxuJ\n84ED5LovvRQYPBiYOpWbkW+/5Z8sc+MiNmA9hcJ0VE+tqSsEzghi7BDZ2RzlYlTrC60OR9i/H9i8\nmSxGdravS9NvOIozX1lZidmzZyM9PR1z5sxBtRfmgtoI6PBhil3DwqgjBGgtbTbTcrqpCRg0iAQl\nOJiLaWMjcMEFJFJxceSGi4roHhMczEV6yZLukwh4A90lMggPJ0G2WBSiEBZG0XNQEOuVm8sh+Mc/\nKlznhAl0/6moIPF2RlhMJnLMra2eJzyCwH3zDaUZCxcqS2puLolnczP7praWKgSTidKLpib2p7AJ\nmDqVdRT9J8uUbhiNlI6sX08Dr77mMO4puYSvcOaKqa1WLrICiYncinanANFx5mHePBLiKVPoN+Oh\n8eGtueIozvyyZcsQGxuLZcuW4bnnnkNVVRWeffZZj5ZvxQoS4n37SHQnTaIOeP166kqHDmVTf/EF\ng0EUFZFQBwaScwwK4iIdFUWdcGkpF/OEBGDxYuDOO91WVLdh6VJbVx2hwzYa6eZjMgGZmcDvfse2\n+Mc/uBmJj+ezd9zB94iNTGsrLc1376Y0IDy8q6jaW37U4jsffED/4fp69uHdd7O8ra08FxFBzvfY\nMda7oYF92dTEfo2KAp54ArjrLuWdNTXciG3cSKJdWUkpyTnnkGgLP3Ot+B4PXDG1p8SEZrPtcWnp\ngOB8dLgZOTnAggUeJcTexMyZMxEVFWVz7pNPPsHixYsBAIsXL8ZHH33kse8L0XR+Prnf1laKKD/4\nAHj1VU7Liy/mIvvAA7QeFuLM5mbF/UXEZW5oIHc1fDj1p3PmUN/siTL3lRMTKCoil/vllzRKeuMN\nEqQPPlDchDZsoFFUdDQ539Onye2fOqW8p6QE+PlnGjtt2cL2ys9nOf/nf2zL6K2sRuvWkVgWFJDQ\nCuL6wgss/759rF9TE7ncjAzW3WLhpspgIFEOD6cdwIoVFEdff73CIV97LZ8JCSHBP3qU111xWfMH\n9Cs2tVcgxIQAiaWj1s7O5n1mMxdPu0XTYUi0nBxuo7Zvp/XAlCnsZavV6Xv6Cy2EXnS5DD20qdfK\n4WFIkgRrTo7zulos/j3DXUBZWVlnlqaEhASUlZU5vM8dceZLSqyorqb+8MABICHBigMHgMZGCbIM\nFBdbERTEGNErVxYiPPxeVFcD7e183mCwIjgYkGUJQUFAUpIVEyYAhw5JCAwEHniA4TP7GjdcnFNf\nLykBCgsltLQAZrMVixb1/L4FCySUlgJDh1rxyit8vrYWqK+3dhBXCcuXA5GRVtTWSmho4FL06KNW\nNDcDI0ZICA/n95KSgKIiCZLE91O8K8FgAC680Ir9+4GDB3k8caK1M8Z2d+VzZ5z83FzgscckFBcD\nra1WnDoFBAZK+O9/AZPJ2sG1SkhPL8TJk/di5EggKEjC+PG8v7wcOH6c5R882Ir6+q7tnZIiobCQ\n/d3YCABSxyaD7bFvH9vr+ut77s/+1tf+2G1x5mUPwi2vv/xyWQZkecoUWa6qcnzPRRfxHkCWFyzo\ncnnTpk38sWQJ7738cuVdVVV8pqqqx/f0F53l8BYc1HfT0KGyHBkpy7Gxsnz4sPNn/bEtHPVvD/dv\nmjBBlqOjPVpXV+DhqWiDoqIiedy4cZ3HFovF5npUVFSXZ1wt35o1svzCC7L86quy3NTU9fqrr8ry\nsmWy/MwzvD5liiyHhsqyySTLERGyPHu2LA8ZIssJCbIcEbFJvvhiWR40SJYDAtg9BoMsDxsmy2ef\nLcsPPijL55wjy2PHyvL8+a51eU9wNC7ty+wKpkyR5fh4Dq3zzuNzVVWyfMEFsjxqlCxbLLKcksI6\nm0yb5OBgWR4+XJbnzZPl1avZjtdcw3o+9pjtd997T5YnT5blSy6R5See4HsXLZLlpUtdL6M7598L\nL8jyWWexDwMCZDkwUJaDg/k7KEiWzWZZTk2V5QULNsnnnss+njOH7SrKfeWVsjx3Luvz4ouO27up\nSZbffFOW33ij6/nVqx3X2+trrtz3uax9nXF1Nbm0kBDKZtTcS3Y25SMnT1LelZEBjB9PixCzmRYQ\n4pm4OODjj6mAACh6tOd4vKQf9BrUenFRX4tFaYPkZMp6xoyhLLClhfLB6Gi2Z16ef7WFo/p2h8GD\nqZQT8GFdvWlfYR9LfsyYMZAkCYmJiTh+/DhmzZqFH3/8scfyOXJnUbuNNDRQTyiy8SxZwufUOsxr\nr6UrD0B94dy5fEd7O8WtBoNiXRwczCGbkkLd8ODBfDY4mCJvT7kv9UXveu65dFsyGGiQdPPNLNt7\n7wGPPUYdcVwcRbNHjqCDm6TV8T/+QRFtRQXw+ecU686aZdvGFRUUCV97LXXJvoyxvXIlRe3ff89+\nNxrpblVdzR1uQABtAgwGCiGFnjgmhmL4tjZO19hYthPgf/HC1fB6bGqvQYgJk5JIMACOyo8+omhR\nnAM4Sw8fVhbkuDiOeoC939rK31FRVMzYIyeHBL4nT3Z/gdCLG41U6Pz8M9sB4AwZNYozprRUIdDf\nfsv/mZmcIWYzf3tIXO1WiPqGh9NpdcYM1jk1lZYj9uVXK9eCg7mCnIG4+uqrsXr1ajz44INYvXo1\nMjMzXXpOHSf4/vs5nPLzOVXj4ri4fvUVCfL69WzekBAa4KxaxWk8axb3gNOns2uKi0mI29q4kJvN\n/B0YSOLb0sJvWq3UQ86ebZtC0BPobfzq3FwaLx06xH3ujBlK2crL2U4BAaxbSwvrB/D/tm3cE551\nFpeyU6dofSzCTgr9b2srLaUF8fJljO2sLPbPL37Bcu3cyT1+aSldlRITWdfzz6eOe98+TrfQUF4P\nDAS+/hq44QaF+Pp7NK2+QPsGXAJqCwaDgf8PHlTOjR/PGS4W5LCwzlEuGY0KIQZogqi2vRcQhN9D\nBMfrvrU5OSS+bW2UHsyYAenll7kStLcDksSZpCbQAFeDt99mW4jNzRdf0MHRTUZ0HmmLnBxSgbo6\nWpFs3crVfetWW9ckYRRoMEACuCqcOkVJQEwM+3+AurvZx5l/++238dBDD+HLL79Eeno6Nm7ciIce\nesild+3ZoyyugsDu3End5113KfGHjUYS2+uvBz77jIT5ww8ZY7m5mV3261+T4OTl0ZI4LAwID6ce\nOSGB3GFMDF2cUlLYXYmJ3GO5002lu3HpzJArN5fTaMEC4KWXOGWMRpbPYGDd1q3jPX//O/eHSUm8\nf9Qo6lcDA7n5iI4mgT5yhEtWUBAjUQljJcA9rjl9nX/qNnjvPZbl1lu5IcvKYp0zMjgexP7++HHW\n4d13JaSnU2qQlcVrRiP7V4wPd0Mr8QxcgfY5Y2FIJAhwRgYJBUCOp7iYv4cP5yKak0PnPcERi+2n\nGjt38v+oUdyauUJ8PWzQ5DaIch46xFVLwGymE+DMmZz1Ap9/TjlacDBw3nncoqo5RLXVubA414pB\nk6M+mTyZhDcykquB+B8bSwI9bx43IU1NynuCgyk7A0g9ampIFeLj+fzOnRxrAwCO4swDQF5eXq/f\nJTLvjBhBolxTw6EVEcHEDjU1XJTT0yleXrmSw62tjYtwaCiJUlUVYy3v3s1nRSjIkBB2y7XXshu+\n+gq4/HKFg46KouW0t0SZJSXkXE+etM0KVVLCIXXyJPDppxxqISEkpMHB3HS0t3MYtbSw3unptBa/\n/XbWrbGRm5fYWP6+8EIS7WHD+P7XX7fNQOUrzlEtDSkuViKC7d3LaVhXx+stLZRYiKXm4EFyxo2N\nwDvv8FxEhOKu5s1+1Cpc4ox9GihAWFOfPMkZunGjoi/eu5f3hIVx1lZXKwsywNnQ0gKrkAPZ4+RJ\n54E/7F2q3BD8waPWw6K8f/87y3n0KDnC1lauDHv2AKmpsNbW2hLj1lbe195OYlteTkIk6piTw+0u\nQI7ZkXi/D3BLW3z6qdInt93Gc8IV6bvvlP/Dh5OVEhyyiq2xAkoQXDWENKWigtTGlTFyhkEErYiL\nY1q/0FCKZy+4gESkooILrNjbCB1iSws53N27ScQPHuRzp05xsR81CvjlL4H166144AGmT7z7boox\nH3jAs8E8uhuXJhOXDIOBw0HsSUUQktOnOY1aWngsxOuxsYr0QGSX+vOf+dwrrwBhYVYMHcppWl3N\nDcukSZQ0nHsuiZe79/49zT97bl9MGXX0qunTFRez06fpspWfT4K8YAE3Imaz4j88ZYoVL76opK6M\njOR7RaAXT0ALHhuuwiVifNttt2H9+vU255599lnMnj0b+/fvxyWXXNIlSIDbIDizKVPoWLdsmUJ0\nKit5rb6es33sWPbwhg08L5wYnSEkhKOhspLPp6c7J77qcriJIPUa3S3+orz2UoDAQG5annqKGw8h\nO7JHaSnliwDb8Pnn+b3MTEZwz8zUniGXWlYoNhgWC/8WL+a4iIykhKC2lteFRVB3CAlRJDEAV1gx\nRrKzlX744IMBFZ2rt1CLS+++m/+zskgw7UXUYuFOTCTxHjOGYRrLyzlFCwu5gA8dSj0yYOsj6+y3\nt+s7dCgNxdQhNrOyuN8zm8kXjBpFo6rJk5V7b7yRBCksjEPy3ns5fC0WtkNDA5erUaMonFq0iNd8\nUU+Am6LSUoqY169XNh7h4eSIQ0Mpnp46leU0GLi0CC3RI49wmQoIoFBpwgSqLkQWqhUr+M6KCv/3\nD3YbXDW7tneHGD16tFxaWirLsiwfP35cHj16tNtMvG2gdj2SZVuXGxf/NrlyX1iY8nv4cFmOiuLv\njAx+274cfUC/zezVdY+Ls3XhES5gERH9bwvh4tNb96ZeuBb1qS3s33/ppbZ95KidFixQ2saV9jjn\nHPqfOLo/OJjX1K5QPbnduQi3zBUPorvyOXJnamqiC8qbb/K3cD85fpwuOU89xW5LT+d0S0+X5fPP\nl+XBg+km85vfyPJDD23yTuVU6GlcOnOjqaqS5dtuo1uOfZ3F70WLZNlqZf2XLlVcmGbM2CRbLHT/\nueoq97ho9YSe6vnqq3RBuvBCuhuJ+r7wgixPny7LaWmyPG0a+3PhQk6xadM43ZqaWK+nnmLf3ncf\nXZVEf77wgiz//vd8/7x5vXMZc3c9PYG+zuU+64y9GSjAumYNkJ0NKT8fOHyYokWDAZIsAyEhsIaF\nAeXlNMZBh+gR6DyG3bH9dWtwMDB9OqS8PGD0aFhjY4GiIl43m2Ht4Aalu+8GCgv77CheWFjYq/u7\nHHfoOa3h4azvF18AmZmwpqcDtbWQgoOBxERYm5qA1laH9S10VH/7Y4OB9f/pJx53SAMclu9Pf4K1\nvh4wmyEdPQr88APfl53N9upPfe2P8/OB775T3t/hQ2GNibG9v0OKIY0eDSxaBOuMGUB8PKQOI75u\n22PPHlg7OGeb9rFYICUlAVu3KvePGgUkJMD66ae87otAARqAOmftli1KBiERklLtAmWxAFdeyfuj\no8kVicxEhw5RsCMCYDz5pE+r5RDO9LUWC/DWW13Pq+997TVyhzExCme9cqWtSD8tDfjkE99bEwsL\naYOBFttqffXJk4pI/ne/Y3//9BONzl5/nVxxXh77dNgwCuZmzqTIXbyjqYnnBg+2ff+ZDJf9jO19\nE6OiolCl0rVFR0ejUoiNxcvd6Tup9iE1GGz1nvPnU9GitpjuDUJCOFIOHqRlxowZlMVERlLnqBXj\nHeFzXVXF0R4Wpsj/tm61vddsZnv0pk0CA7sqcEJDKUdz5BoE2PZLYiJlW57y17X3Ax87VnFtmz+f\n7m6A0k4FBZSDBgVRLvrNN73/ZkYG+//tt2mB/8UXbPfQUMpTjx93i1GfpuO4o/vyiRSIu3dzqPzw\nA5tHEGV1Evizz6Y+taiIzfjRR9QtVlRQqxAYyKH21VeKqYI34Mkct+p333gjia3woRVtt28fnTzi\n4nybwCA3lxbvat9w+1jXVisJcXQ0faLt80Rfcw3HQn09j6dOpR2BeJcvfaK9Aa/7GSckJKC0tLQz\nUEB8fHxfX+Ua1Fa96opmZJBoqnV83cERwQkKUojZ2LG8B6ASZMoUKn+0YEEtXK+qqxWL8bw8ZdUS\nvtSRkbSQOXHC9XdPmUKvfXXbTJnC7a5om9tuA9autX1OrUvPzaXC0FN+2vZ+4I7c3QBFb1xUpNgM\nHDrEVV/9TE9QGwyK74t2r68nxRBW+1qyMvcysrJY9fJyJbrsFVcoukBHKevEYmyxUCc5ezYJUUEB\n8Je/8Lynk8CrobYSFv68nni3Pdcr2u7hh22JtK8gdMV1dYpvuLq8JhPPL1vGTFJiaqjvEeksBw2i\n7zHDnCq+6FpJ6KA19NnPWAQKANCrQAF9htqqNyODlhQxMfz717+6LrIGA7djsBNXOzLdE8Y9AGdM\nXR1/BwZyhXGTgY7bfN7UFuODBnEbGxzMSAEANxFOCHGXEkRG8tkDB/gugeRkcp9qS2NHhEydSCE1\n1WU/7T61hb0fuJB7qd3dAIUwqo33Tp3idt6+HM6MuTIymOk9M1MxmFO3+5QptEoRv31l1KcBmExc\ngCsq+BcTw+GwezddfqqquMALAx61AdaSJbSSfuQR+uO+9ZbSvZs3S15LACA2DFVVEoxG1xJDuJJA\nIjeXe9nt2ykJcJTmMCVF8rqxlrP5ZzKReAYGOvf9tVi632+/8golJFu20IdYbMROn/Zefwr4k5+x\nS8TYnYEC+gyLhbHy4uI421NSqLzIy+tKeARX9OmnvR/dRqPyjg5irsnFVhDBQYO4eTh1irKu3iIw\nkM9WVSmbknPOoeW6xWIrkQgO7vq8hwOldIvcXLaBmnsFaFlubzUuUuAIiAgSagItksjOm8d3qgOe\nnHsu5XOtrYplufi+1qzMfYCSEjZlSAjFl2lpHC5btgD//CeN0X/1q66EqzvL6OBg7yWBF5bhv/gF\n99+uEA11tqD77nNMmEtKmOIxMJDODFrnBrOy2Na33koh17p1vc9YpSbWaot7s9l7/emP0H5sajUc\n6SfViIykvvfddxVf5Lffds2RLSODItmTJ3k8fz4d/bQeHjMujoTGbKa+e84ctktEhC3HP3gwt6uf\nf277vAiKoUaHARdSUyk/zMtj+9gTPS1BHQBExNUWKgl1HQMCyPE2Ntrq2dV2CJmZFMerddTBwcr9\nIu61GwPB+LPOGOBiLYx43niDukQhZo6I4H7vyivZNWef7ZoY2Fe6RaHHjYrqXn+rvk/k5hV6cVE/\nV9+lVahjjdfXc5PVVzHze+9x+Zk+vasueiBh4OYzVkOtn9yxw1ZsnZpKf1g1p7N/v0KIg4KAq6/u\nqlvOyCDh3biRlgbi/atW+ZbrcxU7d1KkvGcPOdq9e0ksvv/eNljH7t20zAi0MxNw5Hcsy4rP9Ztv\nOpKdI9kAACAASURBVOY+tQa1X3hoKMt84IAS+EPUu72dbRQRoTxrNNKBUmDbNq5AahG8uF8tJXFD\nIBgtYdiwYRg/fjwyMjIwVcwFF5GVRam9CFCRlcVhOXcuLWoXLSIh7g1X5Et/YleCiqjvCw93zPW5\nI3SlL6HW9w8b1r+8weXlJObFxWeseUX3cINblVO4/fX2vr49pT/s8C/dFBbGdIHqeyIj6VscEaGk\nE3SDL3F38LrPm7o+HT66m9T+1EFBjv1pRb46D6YUdHtb9JRqMzaW181mWb7pJvoLBwUpfsYmU1c/\nazUcjQ1X0nu6CA9PRZcwbNgw+eTJkw6v9aV89n62ztLcOYMvfET7+s2+1K+/3+wPXP2mul59SSWp\nxv/7f5v69Xxf4E9+xv5FjLuDo4WxqkqWhw+XN40bx+uDBytE6PvvSZDF4puc7PEi+mJgdKJjI7IJ\nYDukpspyeLhS/8BAWf7mG7aD2LS4gcg4g9vbwp5Y2gcIOXyYdbPblG0S9Zw2zXaT0l2uZ2ff7Ae0\nQowrKiocXvNF+bRMpLTyzZ7yR7vzm/3ZcMiyLP/rX5v69Xxf4E/E2L90xt1B+Jba63fVema1W9OC\nBcCmTYq+tSN284CFvY9uZqbSLgJCF+qsLf0BQo+7a5cSLtU+t3FKCmN3R0TQGfbddxUfYgFX8iG7\nEVrQGY8YMQKRkZEwGo34n//5HywRCYjB8i1evLj/AXz0Y7ceFxZaUV0N7NsnoamJ100mYMQICcHB\nvi/fmXBsH8Dn8ccf79NcHjjE2BkEEVIjPByYNo0OjfPmMRjEQCDE3RkU2RNY0S5igxIbS7NPZ8E9\n/AXqzRfgOADJjBldjbGqq5UgIp4KWtINtDBXjh8/jqSkJJSXl2P27Nl46aWXMHPmTM2UT0dX3+tV\nq3o2ItPhXZwZBlx9QU4OpOho/g4LoyFXXR2tbf/wB3JIXiLEHvd5c2RQJJIaLFzIkJYdITk7jZOE\nkdPo0V3z/noQHmsLYeSXkeE8uYXKGEsSK5bFohi/naGuSklJSQCAuLg4XHPNNcjPz/dpefozRlzx\nAXb3N/uK3nxT7U61Zo1rRmT9/aa7cKZ8s68Y+MTYYgFWr6YLUH29Eh5Si77D/YWjzFLOLH6FpbgI\n1OHIWtgfITYZGzfSPckRUVVbSYeFKef9wXreQ2hsbERdR7CbhoYGbNiwwSZlqr/Bnmj1lThrDfbR\nzNQW51lZ5IyNRnLM/lzPMxEDX0wtIMSy6ljDA23RdaTrtdcVO6uzP+uJBwB8PVeKiopwzTXXAABO\nnz6Nm2++GQ8//HDndV+Xr7ew9++1j4/tTyLc7mJb2yMri5qW9nbeI5J16PAe+jpXzhxifKYSmzO1\n3n4GTc0VB9BS+VyJWW0fMMSfg2+oA2/0tJFYsIC5S4xG3nfHHd4rpw5C1xl3A0mSNCGC9In+wq7e\nWtGh6OXQ0RPUfaMWMx8+3H3widxc3tfYqJxzNfiGlvSaos75+TRzEUZa3YnbL7yQAecuvZSpCXv7\nTU/iTPlmX9HnrE06dOjQ4S2oMx+VltITsbGRhPnqq2332OLewkLb/MohISRi/pI1SNQjKYnE+Kmn\nbMXtjrJLRUcrScv8Bd7MzqVlnDliah06NAytzxVfl0+ImYuLGfX2T3+i9bDBAFx8MfC3v3W9V+RX\nFvGwKyu1rzdWE6bWVtZXiNbXrSMBrq2ld55I5KAmZP6oGxdi+MJCRrINDWXYzPDwnomzFgm51/MZ\nCwwbNgwREREwGo0ICgryuTuEDh06Bh5E3t/YWFoMBwYyrHpQEInTypVcvMvLKcpNT2dsbEHMrr+e\nFsZazRokiMrWrfQybG1lHc4+W9F7l5QwK+jRo7TFNJkowm5rY1ts3866//wz20Jlf6dp7N7Nsp88\nSaeXxkbWa+hQW8mGI0LryTzU3ka/dcYGgwGSJKGgoECzhFgregMtlEMLZQD0cujoGQsWSLjmGnKB\nf/kLF+m9e7lAx8Upicja2xX9akUFCXBQEDMDqfXE9npjR+5OvvJtFkSlpgYoKOCG4eabbRNlmEy8\nPngwie62bdyI/PgjJQSxsWyjiAhg5EhaXXf3TW/D0Tdzc4GyMkotTp9m2IPycm62jhwBhg/v6p6W\nnQ08/zzb2WjsfoPlT/PbLTpjLYvXdOjQ4Z8oLeUifeAAk5NFR5Pg1NaSa5Jl4LLLmIzMYKDhUkEB\nOSm1Dy5gK84UcDdX5er77EWrgOI/PHMmcOyY4issOMLcXHLNBw8CI0ZQh2wwkAOeOJF65bg4ZlZS\nSwO0AFHfI0eYPlGI1vfsYR8XFrLup09zIzF4MNOrjxtHDln0pxDBHzxIgp2e3lV64M/ot864p3i2\nOqHWoaNnaH2u+KJ8M2ZQhFldTcJjMDAraGAg9YomE0W2NTVcxCdPZjbU225zTZfqbnennt7nSBQt\nytLcDNx/P8v4ww8krmedxbSUixaRI1y/nnVtbCQROn2ahHnsWKbbFsTXFzmgu8OKFayz4H4bGliH\n1lbmua6p4cYqIYFlDghgKIixYxli/tpr6aIl2nffPnL+cXG2Ug6t6I59pjPeunWrTTzbMWPGdMaz\nBYCsrCw9uLx+rB/bHUt2weXPVHS3iM6bR/1nbS2PAwK4mBuNwKxZwMcfc1Fvb+c9JSUKkbbnUgXn\nWVxM7nrlyp4DaPQWQq9t/z57IlxTA3z+OTnA5GQSYpMJGDWKBLeujn/h4bSgBnhdlkl0582jtbTg\ngG+5pStB0hJ27yb3azQyCGJFhZJWXpap805MJPE1mWi89cknwE8/cdNx3XW8V7Tvww937beBoDt2\nqzX1448/jrCwMNx33318uUZ2+5IkdS6IZ3o5tFAGvRxdoZW54gyeKp+aa0pOBl57TeFq162TMG6c\nFe+8Q2IbEADExJD7bW+nCHPfPnJYkZHAr34FPPIIF+glS4BDh0jUMjNJ2Mxmfqe7ZAqeGA/CWnj7\ndnL106eT+01L4/+DByWMGWNFQABFtydO8L7f/Ab47W9Zn+Zm4L33gH//m+VvaGB9Xn5ZcWPqTXAQ\nT457+w3WSy+x7OXlEiorrTAY2GcGA/sxIIB/f/wjNxtFRTRQa22lhGDkSGDMGOV99lKP7oK6+GJ+\n+yTox0CLZ6tDx5mM9evXY8yYMUhLS8Nzzz3n0W+pA1qUlysGSGvWcKHdto2E8z//IZENCyPxaWri\nuYsuoigzKgoYMoTHcXHK+9PTKbo2m0nAhFFXb5IpuAuCK58xg2LZt98G/vUv1rWxERg0iFGzampY\n3uBglvWdd5jdU7zjjjtIlMrLafRUVWVrpGUft9oXyM1l6Pe8PODTTxl85JVXyBG3tHDj0N5OLjk0\nlFxxayt/b9nC32lpNNyKjGR7VVfbBnmxjzsOuB7URcvoF2c80OLZ6tDhK/h6rrS1tWH06NHIy8vD\nkCFDMGXKFLz//vsYO3as28qn5pjq6sjd1dUB335LAnLsGAns8eOKRe3cuSRSeXm812wGHnsM+PJL\ncouyTK45IoK/r7++e/0i4H2d6m9+Q+5/1CgSpW+/JZEBaKQUFsbNQmoq6/rDDxTHh4Wx7MnJjKz1\n00/A11+TEEdEUF88bx6lAIJ79nbd7LnglSvZVxUV3BgkJFBEXVfHDYbJxH5NS6NlfGUluWKAUo+o\nKLZXaytF9tOnsx+Fu9aqVcA//qHt0KY+0RkPHz4chSIlnw4dOvwW+fn5GDVqVKf++sYbb8THH3/c\nSYzdAfsoWjU1JDrXXksCFR1NQnPkCAm1xUIDrfnzaSXd1ESCtmoVueiqKiAlhQS6rIyLvFgDu9Mv\nelufuGMH65qfTwlASwsJZ1QUcMUVFKfv36+E+VSLcOvquDlZv55tFhHBzUdrKzBpEom40JGqrce9\nBftoZ7LMPgoJAc47D3j6afoPA0rCvPPOY98WFZHAGo2KIVdNjSI5iIxkv730Evt6xAj2pTPdvL/j\nzIlNrQFooRxaKAOgl0NrKCkpwdChQzuPk5OTUVJS4tZvCDHq0aM0ZCopIWf49ddcmPfuJfdXWUkO\n8sgRCf/+N7mioUPJKZ48qXDBQ4cy/8msWVzcL72UxkziW4sW8bzaV7cneGI8nD5NQlpSoohqQ0NJ\nsN5/H9ixQ0J1NYlxZSU3FyYTxe8JCSRW//0vDaF27OD5e+4hceurSNpd9VT36a5dwKZN1A8XFTFz\na0ODcm9bm4RTp1jH1laWe+hQipdDQ0mQhTHegw/yvlWr+I30dEo37NNGeque3oAem1rHwEZ2NtkO\ns5nKLH8K2utFGIR5azfor2fEiBGA2WzFsWPAW29JKC0Fjh61IiYGiIiQUF8PnDpFA5+2NgkBAYWo\nraUBV0aGhEGDgNmzrYiNBerqJFx6KWCxWLFkCXDsmIRp0wCTyfXyODoWcKfl/C23AI89xvIDVsgy\nYDRKaG4GUlKsKCsDWloktLYCgwZZYTIBgwZJmD4dyMiwIigIeOABCUYjcPq0FaWlwLhxEsrLgXvv\n5f29LZ+QaPa3fllZVqxZA2zbJmHXLvZfQABw4AD7V5atokUBFEKW2X9HjvD+0aOtHVHTJMgyx0ds\nLLB/v4R9+wCj0YqkJCApScK55/a+fwX8wTNCj02tY2DDauUWHWB+OUdpfjQAX8+VHTt2YPny5Vi/\nfj0A4JlnnkFAQAAefPDBPpdPrU+MiKCVsMlES9mtWymCDQykThQgV1RWRm5KiDSNRoqkk5OBDz4g\nF6018WR37lm5ueR4X3mFxkrNzcD48Yo4OiCA9d6zh/dHRPAvLY1tMXYsh/DTT5NTNJkYAGXYMN/5\n1jr67ksvsYy1taxPYCBwzjncBwsxtdFI4zSLhSL28nKKqb//npxxfT0QHw/ccAPv+egjiusnTFD8\nrf0BPvMz1qFD0zCb+X/KFMo0HUHnnjF58mT89NNPOHz4MAYPHox//vOfeP/99/v1TrWOuLiYBKap\nic0cEEAr4tBQiiDDwqgXrK9XrJ5LSriANzZSVP3008670JdQ1/O++xTXowsvJPFtaGAAj717ef/P\nP7NeVVUUt7e3839AAAl2ezvrXF/P/0VFNFR6/XXqjgXz5W3fWkdBS+6/nzpio5E63f37WY+zzuIz\np0+ToAp/4oAA3ltTQ9G9waBYyt9yC43YROrHnTu5ERPi6YEOXWfsRWihHFooA+DFcuTkkCPesMEh\nkZUkiSvI5s3AF1+QMJ+BCAwMxMsvv4y5c+firLPOwg033NBv4y21q8306crvl18GLrmEEbOmTqVe\n8M032T2TJ3Oxrq4GTp+WOolSZCTwxBPKu/saB7onuDIu7b9tMtGAafduGlsdO0b96cqVwP/9H4nK\n4cMkYM3NvE7RNAlaY6OEoCBuQoSLV3g4dalpaWyzu+9mDGq1FLQ/rkw91dNR+9rHzy4uprFdXh7r\nl5xMfXZ4ODcajY2KxTsAGAwSwsJYx5MnSbwbG4GMDNY1Lo6E2GTi32uvkSPuj8W0VtY7V6Adzljn\nTtwLR+2ZnU2TzsGDbc99+ilnzaRJnIVabvvejhOLpWfRtCvc8xmAyy+/HJdffrnb3qe2egVsLWDf\nfJPHgYEkxrt3Mwb1rl1crJublShNAQGKeFtwf76MuGT/7fBwGjDFx1NMW1pKIjt4MEW1+fnk+IQb\nT0AANxcxMSRa7e1sqzfeIJc5cSLf/cc/dh8hzJNWxfbcfloa65GUROJvMCjxpIXR2cyZlAIUFNAl\n6/vvubEyGFi+qCg+X17OTcWxY9yAtLbSf1ptGQ74xjrcl9COzthPdHt+A0ft2dM59XmtwpVxkp3N\nMD2nTgHnntvzBqO6ms+8/rrPNiK+1hn3BHeWz97f+MMPSYhbWrjAG42Kzhhgl8yaBUybRsIXEQGs\nXUsObeZM5vX1pg555UoKUdra6Afd3MwhWVGhBLQoKSFhnTUL+OorEpqWFhKXd98ll3zJJXThmT2b\notpvv6X1tDrmsq+gjmhlNCrBWU6fpm/zqVPsg1OnSIg/+0yxaD95kn/NzVRFGI38HxbG3zffTIJd\nWUnOuLqam5WZM31fb3fA/3XGveFOBHd06BAdDSMiXOOSziTu21F72p/LziYrIpCR0X3ba6H9XBkn\n+/eTPQEoQ8vOZln372fKl9RU2zFjzz1roZ4DGGqua8cOEmJBhI1GuvwkJ5NrNpmA228nIWtoUFIk\njh7NBX3wYO8v3llZ9KkdPpxlKStjeUJCuPfbvFkRxSYlcagFBnLj8e67rMepUyTS8fGsW3U1CXdQ\nkDYM1NRc96pVJJyBgRSe7d/PTcPgwSxvWhrw5JPcfDQ2kus/eZJ92NJCu4B588jlDxumGKIB7O/r\nrqOLk4ixfaZCOzrjHnR7NhA6vqNHaU2g1vWNGcPn4+JoKWGxQDIaKRt6/31FN5iezhFSXe35unXA\no/qL7GxyjfPmcSbV1jL6em4usGwZZ8727ZAsFoVT3L+fMwPg9Y0bu297N+pW+9wWrowTQbABZYMh\nyl5cbDNmHJZD1yF7FGpd59y5CvcEMCXi/PnAN98A11wjYdkycpsFBSRmQv/c2kpOShj7uAuujEuT\nid8Wfr4rVlC3mZlJf2BhoPWLX5DAhIVxqMoyCXZjI+9raiIx27dPcpi/2JPoqZ5CRLxunRItbdw4\n6sTT07nXnT2b1t5xcdzfVlczcEtTE/to9mwS76ws1j06WurUga9YQUK/aBEDs9x5p2fqreuM+wJX\ndHsCYrGNjKSsSs0lFRUpseaGD1esBwBaggDc4pWXK4utIEz+zAkJAgJwdpSX8/cDD9Cn5Phx5d5Z\nsyhR2LGDx5GRDAbcU721oFt1ZZzk5HAFMBgYzsdicT5mHEWQO3hQuff5591a/IEMV11t7Lmu666j\nqHriRHLJZjPfNWsWXX6qq8lh1tUpWYx8HYHJXl8r0hyOHs1yDh6siM9feYX74eRkQJI4LIOCqDN+\n6SXguee0K54tKSEhvuAC1isjg8eJiZwesbFsg1//moJKsxn45S9tM2IBbKuZM7n3F212552+rZvW\noB2dcW8gdHzPP88RX1hIghMURIuItrbun4+NpbxryhRyWGPHKmLNlBQScX8jzPPmcXMxZQpnSV6e\nUr+FC3kNoMwoMJAESY3MTCqBuoMGdKsuwZGY2X7M2NdB/UxlJRV4ADc2kycrkhYPjYuBoDN2ljXI\nGZEWPrg//EDO8rPPKOyKiSGHdcMNimuPVuMQq5GdzX2ciKFsP0SqqynSDQmh+PbRRxmHWcuwz4a0\napXj/nj+ee7nR4zwL59gT8D/dca9geCOsrNJhIuKaFngCBERSnLQ2lrO8pEjSZCEuFZw0gC3fYLD\nzM5WuDCt6xFzchRC+dvfknhERtJ3pKxMiS6gjk+nxrZtXC26q1dvpBe+gOij7duVPs3KomJO9F1k\npDJ21P2pliwkJvJ/UJAiQYmJUaIXqMfFGQ41oTUaHbva2Fsfh4TY+qsKLis5mcP01CmKOR1ZYWsV\nS5cyR3F9PYnRBx905fwsFnKHu3ZRrBsa6puy9gb2EgBnFtw//cTl9eBBJvLQ0Xv0S2fszZRrDiEW\nUGeEGAAaGyGJ1C7JyeSCv/2WnPADD3BhbW/nverZYS+KVesRnemb1XpbB7poj+ovBKG0WJjSpryc\n3PGBA0pYHDAonUOcOMFNSh/q1Rd4pC3WrWMfqTdXn3xCnxG1DlgQ082bIQlCKwix0ci+N5lsTXoF\nznD3J3uo09mZzY7T2Nn7wzryV62spADiuuuAW2/l1NyxQ+pVHGJ3oDfjUu2LK6zB29q4VDiKLpqb\ny/+DBgEXX6zou32h13T1m/btbzJxM3XXXTTdeOklWk2npZHvGTnSNq1jX77pTpwROuO2tjbcc889\nNinXrr76ardmeekRO3d2fz08nFyxQFsbuSYB4aEvCIwInRMQQJHkiBGK763QOYaH2+qb1RySmrvy\nJfekjoLQG3FJZSXrlZTEeguLY63UqyeoiTCgSAMEDAbg449JZNXtor6nrY1E3R5BQVx9hHhb65IS\nL0FNaEXABnuxtD03JZ6ZOZO61cpKxVJaLd7WOtQcf3m5spe//XbHhmUlJYxM1dJC62Etc/rdoaSE\nvEx9PSOCRUZyWUxP920uZX9Hn3XG27dvx+OPP94Zy/bZZ58FADz00EPKyz2lBxML4Tff9Kwf7gnB\nwVzEhWGPI8TFUfYUFsYRqNbHqhdhtd7WFatwd0C0hdplp7HR1ne4P5g/n+3j7Xr1BbNns2/Gj6fe\nf8sWxVq8PzAYGNvwo4+UurvZL96fdMZqYqs21BHExZnuWMA+7669XtJfiJS63FlZwCOPUCvkzHjN\nX+tpj5UraXDX0kK/4gce4Hl/UCd4A32dy30WU3sj5ZpTCE6tv4QYIKExGBgqJ9CBoMBoVES+QUFc\niZy51vTGPctdEKJZtctOWBg3Ge6AweCbevUGQowO0BBt82bqiYW/TH8hy3yn2s1JC5blbsLy5cuR\nnJyMjIwMZGRkdG6wnaGkhCYGubkkKvYLcE9hGu1Fn1lZjsXbWoe63ImJwFtvUXzbnRW5P9bTHhER\nNL1JSaEVtZB2eFOdMBDRZzG1KynXgP6nXXN4fOgQj0NCgKAgWGtredzxTWvHf3Eszjm7bpVl4Jtv\n6I+svm40AuPGwfrdd8CUKZAWLQIKC2Ht4IK6lK+wELj7blg7CJb99RUrVrin/uL4yiuB8vKu9fnX\nv4DwcEhmMzBqFKwFBUBbGyQAhQDutb/fZAKam7u2T1gYcOAArAsXAjk5rF9/yqs6Vuty+v2+js2Z\nBAAXXcT2378fUod7lxUAAgMhddgWqNvLYXuojy0WWKurgdhYSHv3AtOmsX1zciBlZgKDBsGamQmY\nzZDuvhsIC/Nq2jV3wGAwYOnSpVi6dKlL95tMtGUzGKhutw9H2dswjc7CHkqS1Nl23kJvvtnbcI3+\nWk97nDjBcA5NTZSKuNoG/lZPr0PuI7Zv3y7PnTu38/jpp5+Wn332WZt7+vH67nHBBbJMfkWWg4Jk\nOTBQOQZk2WKRZYOh83iT+pqzP0fvOHxYlquqZHnBAv7vJzZt2tT/ui9ZIssXXSTLl19u2w6q+nZ3\nzqW2mDNHlufPt33/ggX9L7sKfW4Ldf1Fn1x+Ocs4ZQrPLfn/7Z1dTBxlF8f/u3VtbWjpmpSPshaw\nFNqFYXcTCl7YiLpcEQFTY9BIiUVrSIwxEK03tNz0Q6NpiNHGGExITLTWhLYXxbSJrUWNIWnBGtek\nTVxsS6AJyBtLJUDreS+mw87sF7vTmXlm4fySCTuzyz7/58xz9szz/TrRo49GtDudsfc3FXts2EDU\n3Ey0caP8Op4tnnrKEBuZ5isp0N3dTR9++GHSz6j1zc4StbYSdXQQHT4sn5uBIf5iYZrffEN09CjR\nsWPp2STT8nnsGNG776Z/7zMtn3rR68u6fwEWFhbo8ccfp3A4THNzc+Tz+SgUChkiakk8nqUDSl7e\n0p9RjtWr5aCunD/yiByI1D/4dkH946/k0emUD3WenE6iVatSt4FyPPNMJK3oIGcH4gW/6Acm9WdW\nryZaty59O7hcRDU1RA8/rL0ebYulbBTv4SEOooNxYWEhVVZW0p49e2g6js5ofbOzRH195gXiTOTo\nUaIDB+RA1dcnWo158L1Pjl5f1t1Mrd5y7d69e2hra7NuJHVhodxHmgxlEY9UmJvTnq9dK/e/AvIQ\nwaoq+4yYVfdVnjghj544eTJ2Go56hHA6/Pwz8OSTcsfQsWPy969dK/fF2mHkcLy+2uj5z+rlMOfm\n5DCqRtlgNRnr10cW/lDYtCm231w9vzueXWwyEr2urg4TcXzi4MGDaG9vx/79+wEAXV1d6OzsRG9v\nb8xn43U5rVlTC8CALpdlcH79OuBy1cLtBvLyLuDCBXvpM+p8zRpg8+YL+OUXe+gRfW5Yl5PBDwUa\nTPt6pTairgUmqeUsNkWqa4qJmi6zs4mCQfm1ukYV3QSZYo1HjSFNJkotcPfuSPrqfETX5JTjfl6S\nNstGH0qeDWqKVaPbFql0G0xPR1oNduwgunJFbu1wueRDVQ7i2qOsLFIGlKb+rCy52yLd+55i64LJ\nrpgy4XCYKioqYq6L0JdpzZp6a4yZlk9OMzl6fSUzV+BS1h6+ezeyBKZS+3A6E9cK1aOvlb3O1GRn\nA7/+Kv/du1f+XmUaU/SIWStrPNFzWqO3PlSW95QkebKjsua0mofTHF2dbLcnkaSyCtiGDcAff2hr\nrNXVsdO9EtWQ//lHbnUoLY2s8T0zIy+W/PffkSlwqdz3pWrONmB8fBz5+fkAgP7+fkiSJFiR/Ym3\nxOdK23+XMRiDHwo0mPz1kVpKMEhUX0/U1CTXglavju3/A4gCAaKcHO17mzbJ/9vYGFtzSVYLs7I/\nNV7NVJ3+6GhEp3JdXVsOBCI1vXiH260doLRpk7bmrf7+TCW6NQWQB3k1NRH9+KP2en197P8EAtoB\nbW63ofYw3VeS0NLSQpIkUWVlJTU2NtLExETMZ0TqMwu9A66IVk7/MJM+en0ls4JxdBNhouZTdTOl\ncng88vXoJky9P6gGjrJekniBP1H6yvXRUfkBo6kpku/6+tgR1i6X/ACjBOtAILltM5Xpadke0Q9j\nxcVyXt1u+VyStDZW21C5D263bF8DsXuws7s+PTxIQNU7ophZ/qyMYBwdIJLVTlVB93xZmfZ9KwOp\nClP7SVPVkJUVv2949255Ck8wqA08JtX8TevLWapPN+ph7HxFRewDWyJMLDd2D3Yi9Jnd3xcvoKaa\nppEjildKX+pKSVOvrzzQRhGWE913mWxlKKXfsLhY7ld++eXIGtTqTRUyASP1lpXJf9evl/8qtvzr\nr8hKY3v32n/VrUSoN/RQr5iloJQLJW/qMvXbb6ntWpVJ9mAS8iArYvGKU4zRZNZ+xunup6sMsFEG\n3BiwhnDG09oqByqvV7bhhg3yprK//67d4zkTA87evfLeddPT8i7o33+/dD5sskdzJq1NzTBMSpr5\nCAAAB2xJREFUYixfm1oI6dZMrl6NBGK3W/xIYDug1IB/+EEeYT06Kr+enJS3mMzUQAzI93t6Wn69\neXNq+eDaLsMwNiCzgnG63G+CvJCVJW+cKvgHV70eszANs7PyC6V5Op1mWiN1mGELdV7uT8IXooMx\nBBH3htPkNEWxvIOx0u/51Vfyql0M0NWl7QvO1L7heCynvDAMs6LIrD5jhlmm2N1X7K6PYezCyugz\nZhiGYZhlyIoIxnbpN7CDDjtoAFgHszQrpY+R01xeaeplRQTjkZER0RIA2EOHHTQArINZGhH3htPk\nNEWhOxh3d3fD4/EgEAggEAjgu+++M1KXofxPWexDMHbQYQcNAOsQwYkTJ1BeXo5Vq1bh8uXLmvcO\nHz6MrVu3Ytu2bTh79qwghVpE3BtOk9MUhe5dmxwOBzo6OtDR0WGkHoZhTEKSJPT39+ONN97QXA+F\nQjh+/DhCoRDGxsYQDAZx9epVOJ0rouGMYWzBA3lbpoyuHB0dFS0BgD102EEDwDpEsG3bNpSWlsZc\nP3XqFF566SW4XC4UFRWhpKQEQ0NDAhRqEXFvOE1OUxh6F8Pu7u6mwsJCqqyspD179tB0nMXzAfDB\nBx8pHlZRW1tLly5dWjx/88036csvv1w8b2tro2+//ZZ9mQ8+dB56SNpMXVdXh4mJiZjrBw8eRHt7\nO/bv3w8A6OrqQmdnJ3p7ezWfowypOTPMciGRzx46dAjPPfdcyt/jcDg05+zLDGMuSYPxuXPnUvqS\n1157LS1HZxjGHFL1WTUFBQW4cePG4vnNmzdRUFBgpCyGYZZAd5/x+Pj44uv+/n5IkmSIIIZhzEdd\n021oaMDXX3+N+fl5hMNhXLt2DdXV1QLVMczKQ/do6n379mFkZAQOhwPFxcX47LPPjNTFMIzB9Pf3\n46233sLk5CTq6+sRCAQwMDAAr9eLF198EV6vFw899BA+/fTTmGZqhmFMRldPcxocOHCACgoKyO/3\nk9/vp4GBAbOT1DAwMEBlZWVUUlJCR44csTRtNYWFhSRJEvn9ftqxY4clab766quUk5NDFRUVi9em\npqYoGAzS1q1bqa6uLu7AOyt0iCgX169fp9raWvJ6vVReXk49PT1EZL1NEukQ7SupYJVGUX5rtp+K\n8kmrfVCEr4nwq9nZWaquriafz0fbt2+n9957j4j05dP0YNzd3U0fffSR2cnE5e7du7RlyxYKh8M0\nPz9PPp+PQqGQEC1FRUU0NTVlaZoXL16ky5cvaxzwnXfeoffff5+IiI4cOUL79u0TokNEuRgfH6fh\n4WEiIrp9+zaVlpZSKBSy3CaJdIj0lVSxQqNIvzXbT0X5pNU+KMLXRPnVnTt3iIhoYWGBampqaHBw\nUFc+LZnVT4JGYg4NDaGkpARFRUVwuVxobm7GqVOnhGgBrLfDzp074Xa7NddOnz6N1tZWAEBraytO\nnjwpRAdgvT3y8vLg9/sBAFlZWdi+fTvGxsYst0kiHUBmjFo2W6NovzUzf6J80mofFOFrovxq7f19\n1Ofn53Hv3j243W5d+bQkGH/88cfw+Xxoa2uzdHmysbExPPbYY4vnHo9n8eZYjcPhQDAYRFVVFT7/\n/HMhGgDg1q1byM3NBQDk5ubi1q1bwrSIKheAvBjA8PAwampqhNpE0fHEE08AEGuTVDFbo0i/FeGn\nIsufFeVNhK9Z6Vf//fcf/H4/cnNz8fTTT6O8vFxXPg0JxnV1dZAkKeY4ffo02tvbEQ6HMTIygvz8\nfHR2dhqRZErYaRDKTz/9hOHhYQwMDOCTTz7B4OCgaElwOBzCbCSyXMzMzGDXrl3o6enBunXrNO9Z\naZOZmRm88MIL6OnpQVZWllCbqBHtzyL9VrSfWln+rLiXInzNar9yOp0YGRnBzZs3cfHiRZw/f17z\nfqr51D2aWo1d5yNHz5+8ceMGPB6PZemryc/PBwBs3LgRzz//PIaGhrBz507LdeTm5mJiYgJ5eXkY\nHx9HTk6O5RoAaNK1slwsLCxg165daGlpQVNTEwAxNlF0vPLKK4s6RNkkGtH+LNJvRfipKJ80u7yJ\n8DWRfpWdnY36+npcunRJVz5Nb6YWOR+5qqoK165dw+joKObn53H8+HE0NDRYlr7Cv//+i9u3bwMA\n7ty5g7Nnzwqbl93Q0IC+vj4AQF9f32KBtRoR5YKI0NbWBq/Xi7fffnvxutU2SaQjE+buW6FRlN+K\n8lNRPmnmvRThayL8anJycrHZe3Z2FufOnUMgENCXT8OHlkXR0tJCkiRRZWUlNTY20sTEhNlJajhz\n5gyVlpbSli1b6NChQ5amrfDnn3+Sz+cjn89H5eXllulobm6m/Px8crlc5PF46IsvvqCpqSl69tln\nLZ3aFK2jt7dXSLkYHBwkh8NBPp9PM83BapvE03HmzBnhvpIKVmkU4bdW+Kkon7TaB0X4mgi/unLl\nCgUCAfL5fCRJEn3wwQdERLry6SDKgOGbDMMwDLOM4Q1LGYZhGEYwHIwZhmEYRjAcjBmGYRhGMByM\nGYZhGEYwHIwZhmEYRjAcjBmGYRhGMP8H69JdG9OwYMUAAAAASUVORK5CYII=\n"
}
],
"prompt_number": 7
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"What is the best kernel to use here? This is tricky since the distinguishing characteristics are hidden at a small length-scale. Create some kernels to select the best from"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"sigmas=[2**x for x in linspace(-5,5, 10)]\n",
"print \"choosing kernel width from\", [\"{0:.2f}\".format(sigma) for sigma in sigmas]\n",
"combined=CombinedKernel()\n",
"for i in range(len(sigmas)):\n",
" combined.append_kernel(GaussianKernel(10, sigmas[i]))\n",
"\n",
"# mmd instance using streaming features, blocksize of 10000\n",
"block_size=1000\n",
"mmd=LinearTimeMMD(combined, gen_p, gen_q, m, block_size)\n",
"\n",
"# optmal kernel choice is possible for linear time MMD\n",
"selection=MMDKernelSelectionOpt(mmd)\n",
"\n",
"# select best kernel\n",
"kernel=selection.select_kernel()\n",
"kernel=GaussianKernel.obtain_from_generic(kernel)\n",
"print \"best single kernel\", kernel.get_width()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
" choosing kernel width from ['0.03', '0.07', '0.15', '0.31', '0.68', '1.47', '3.17', '6.86', '14.81', '32.00']\n",
"best single kernel"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 3.17480210394\n"
]
}
],
"prompt_number": 15
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now perform two-sample test with that kernel"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"alpha=0.05\n",
"mmd.set_null_approximation_method(MMD1_GAUSSIAN);\n",
"p_value_boot=mmd.perform_test();\n",
"\n",
"print p_value_boot, alpha"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"0.0167300748355 0.05\n"
]
}
],
"prompt_number": 9
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For the linear time MMD, the null and alternative distributions look different. Let's sample them (takes longer, reduce number of samples a bit)"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"mmd=LinearTimeMMD(combined, gen_p, gen_q, 5000, block_size)\n",
"num_samples=100\n",
"\n",
"# sample null and alternative distribution, implicitly generate new data for that\n",
"null_samples=zeros(num_samples)\n",
"alt_samples=zeros(num_samples)\n",
"for i in range(num_samples):\n",
" alt_samples[i]=mmd.compute_statistic()\n",
" \n",
" # tell MMD to merge data internally while streaming\n",
" mmd.set_simulate_h0(True)\n",
" null_samples[i]=mmd.compute_statistic()\n",
" mmd.set_simulate_h0(False)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 18
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"And visualise again. We can do kernel selection since both null and alternative distribution are Gaussian."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"subplot(1,2,1)\n",
"hist(null_samples, color='blue')\n",
"title('Null distribution')\n",
"subplot(1,2,2)\n",
"title('Alternative distribution')\n",
"hist(alt_samples, color='green')\n",
"\n",
"figure()\n",
"hist(null_samples, color='blue')\n",
"hist(alt_samples, color='green', alpha=0.5)\n",
"title('Null and alternative distriution')\n",
"\n",
"# find (1-alpha) element of null distribution\n",
"null_samples=sort(null_samples)\n",
"quantile=null_samples[round(num_samples*(1-alpha))]\n",
"axvline(x=quantile, ymin=0, ymax=100, color='red', label=str(int(round((1-alpha)*100))) + '% quantile')\n",
"_=legend()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"png": "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\n"
},
{
"output_type": "display_data",
"png": "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\nVcIAAAAASUVORK5CYII=\n"
}
],
"prompt_number": 19
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 11
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment