470 lines
123 KiB
Plaintext
470 lines
123 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "134e7f9d",
|
|
"metadata": {},
|
|
"source": [
|
|
"# Hello, KAN!"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "59cf5cd0",
|
|
"metadata": {},
|
|
"source": [
|
|
"### Kolmogorov-Arnold representation theorem"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "f88e5321",
|
|
"metadata": {},
|
|
"source": [
|
|
"Kolmogorov-Arnold representation theorem states that if $f$ is a multivariate continuous function\n",
|
|
"on a bounded domain, then it can be written as a finite composition of continuous functions of a\n",
|
|
"single variable and the binary operation of addition. More specifically, for a smooth $f : [0,1]^n \\to \\mathbb{R}$,\n",
|
|
"\n",
|
|
"\n",
|
|
"$$f(x) = f(x_1,...,x_n)=\\sum_{q=1}^{2n+1}\\Phi_q(\\sum_{p=1}^n \\phi_{q,p}(x_p))$$\n",
|
|
"\n",
|
|
"where $\\phi_{q,p}:[0,1]\\to\\mathbb{R}$ and $\\Phi_q:\\mathbb{R}\\to\\mathbb{R}$. In a sense, they showed that the only true multivariate function is addition, since every other function can be written using univariate functions and sum. However, this 2-Layer width-$(2n+1)$ Kolmogorov-Arnold representation may not be smooth due to its limited expressive power. We augment its expressive power by generalizing it to arbitrary depths and widths."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "ebd8766a",
|
|
"metadata": {},
|
|
"source": [
|
|
"### Kolmogorov-Arnold Network (KAN)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "2cf3b1ee",
|
|
"metadata": {},
|
|
"source": [
|
|
"The Kolmogorov-Arnold representation can be written in matrix form\n",
|
|
"\n",
|
|
"$$f(x)={\\bf \\Phi}_{\\rm out}\\circ{\\bf \\Phi}_{\\rm in}\\circ {\\bf x}$$\n",
|
|
"\n",
|
|
"where \n",
|
|
"\n",
|
|
"$${\\bf \\Phi}_{\\rm in}= \\begin{pmatrix} \\phi_{1,1}(\\cdot) & \\cdots & \\phi_{1,n}(\\cdot) \\\\ \\vdots & & \\vdots \\\\ \\phi_{2n+1,1}(\\cdot) & \\cdots & \\phi_{2n+1,n}(\\cdot) \\end{pmatrix},\\quad {\\bf \\Phi}_{\\rm out}=\\begin{pmatrix} \\Phi_1(\\cdot) & \\cdots & \\Phi_{2n+1}(\\cdot)\\end{pmatrix}$$"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "f6521452",
|
|
"metadata": {},
|
|
"source": [
|
|
"We notice that both ${\\bf \\Phi}_{\\rm in}$ and ${\\bf \\Phi}_{\\rm out}$ are special cases of the following function matrix ${\\bf \\Phi}$ (with $n_{\\rm in}$ inputs, and $n_{\\rm out}$ outputs), we call a Kolmogorov-Arnold layer:\n",
|
|
"\n",
|
|
"$${\\bf \\Phi}= \\begin{pmatrix} \\phi_{1,1}(\\cdot) & \\cdots & \\phi_{1,n_{\\rm in}}(\\cdot) \\\\ \\vdots & & \\vdots \\\\ \\phi_{n_{\\rm out},1}(\\cdot) & \\cdots & \\phi_{n_{\\rm out},n_{\\rm in}}(\\cdot) \\end{pmatrix}$$\n",
|
|
"\n",
|
|
"${\\bf \\Phi}_{\\rm in}$ corresponds to $n_{\\rm in}=n, n_{\\rm out}=2n+1$, and ${\\bf \\Phi}_{\\rm out}$ corresponds to $n_{\\rm in}=2n+1, n_{\\rm out}=1$."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "1b410498",
|
|
"metadata": {},
|
|
"source": [
|
|
"After defining the layer, we can construct a Kolmogorov-Arnold network simply by stacking layers! Let's say we have $L$ layers, with the $l^{\\rm th}$ layer ${\\bf \\Phi}_l$ have shape $(n_{l+1}, n_{l})$. Then the whole network is\n",
|
|
"\n",
|
|
"$${\\rm KAN}({\\bf x})={\\bf \\Phi}_{L-1}\\circ\\cdots \\circ{\\bf \\Phi}_1\\circ{\\bf \\Phi}_0\\circ {\\bf x}$$"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "54bbde9a",
|
|
"metadata": {},
|
|
"source": [
|
|
"In constrast, a Multi-Layer Perceptron is interleaved by linear layers ${\\bf W}_l$ and nonlinearities $\\sigma$:\n",
|
|
"\n",
|
|
"$${\\rm MLP}({\\bf x})={\\bf W}_{L-1}\\circ\\sigma\\circ\\cdots\\circ {\\bf W}_1\\circ\\sigma\\circ {\\bf W}_0\\circ {\\bf x}$$"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "1c5f7795",
|
|
"metadata": {},
|
|
"source": [
|
|
"A KAN can be easily visualized. (1) A KAN is simply stack of KAN layers. (2) Each KAN layer can be visualized as a fully-connected layer, with a 1D function placed on each edge. Let's see an example below."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "adcb5f75",
|
|
"metadata": {},
|
|
"source": [
|
|
"### Get started with KANs"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "2571d531",
|
|
"metadata": {},
|
|
"source": [
|
|
"Initialize KAN"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"id": "2075ef56",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"from kan import *\n",
|
|
"# create a KAN: 2D inputs, 1D output, and 5 hidden neurons. cubic spline (k=3), 5 grid intervals (grid=5).\n",
|
|
"model = KAN(width=[2,5,1], grid=5, k=3, seed=0)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "3d72e076",
|
|
"metadata": {},
|
|
"source": [
|
|
"Create dataset"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"id": "46717e8b",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"(torch.Size([1000, 2]), torch.Size([1000, 1]))"
|
|
]
|
|
},
|
|
"execution_count": 2,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"# create dataset f(x,y) = exp(sin(pi*x)+y^2)\n",
|
|
"f = lambda x: torch.exp(torch.sin(torch.pi*x[:,[0]]) + x[:,[1]]**2)\n",
|
|
"dataset = create_dataset(f, n_var=2)\n",
|
|
"dataset['train_input'].shape, dataset['train_label'].shape"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "8c6add1d",
|
|
"metadata": {},
|
|
"source": [
|
|
"Plot KAN at initialization"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"id": "ac76f858",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAZcAAAFICAYAAACcDrP3AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB3NklEQVR4nO3dd1QTWfsH8CcJIYTeLIAV7L13RcUKYsECih3r2rEvuig21oq9995FXRXFjl1E1y72XlBAesl8f3/4S15ZG2WSmeD9nON5z9mXzDy5yc0zc+fe50oAgBiGYRiGR1KhA2AYhmFyH5ZcGIZhGN6x5MIwDMPwjiUXhmEYhncsuTAMwzC8Y8mFYRiG4R1LLgzDMAzvWHJhGIZheMeSC8MwDMM7llwYhmEY3rHkwjAMw/COJReGYRiGdyy5MAzDMLxjyYVhGIbhHUsuDMMwDO8MhA6AYfQBAPr48SPFx8eTqakp2djYkEQiEToshhEtdufCMD8RExND8+fPp+LFi1OePHmoaNGilCdPHipevDjNnz+fYmJihA6RYURJwnaiZJjvCwkJofbt21NiYiIRfbl7UVPftRgbG9Pu3bupefPmgsTIMGLFkgvDfEdISAi5ubkRAOI47od/J5VKSSKR0D///MMSDMN8hSUXhvmPmJgYKlCgACUlJf00sahJpVJSKpX08uVLsrS01H6ADKMH2DMXhvmP9evXU2JiYqYSCxERx3GUmJhIGzZs0HJkDKM/2J0Lw3wFABUvXpweP35MWekaEomEHB0dKTIyks0iYxhiyYVhMoiKiqI8efLk6PU2NjY8RsQw+okNizHMV+Lj43P0+ri4OJ4iYRj9xpILw3zl48ePOXq9mZkZT5EwjH5jyYX57UVHR9OKFSvI2dmZatSoke1nJjKZjCZPnkyXL1/O0vMahsmNWHJhfkspKSm0b98+at++Pdnb29OgQYPI2NiYNm7cSF5eXtk6ZqNGjejAgQPUoEEDKleuHE2dOpUePXrEc+QMox9YcmF+GwAoLCyMBg4cSA4ODtS+fXt69uwZzZgxg168eEE7d+6k48eP044dO0gmk2XpDkYikdCgQYPo4cOHdPjwYapduzYFBQVR2bJlydnZmZYvX06fPn3S4rtjGHFhs8WYXO/+/fu0efNm2rJlCz158oQKFixI3t7e1KVLFypbtiwREV27do28vb3p9evXtHDhQsqbNy+1atUqUyv0iYgqVqxI169fp9GjR9OUKVPI0NCQEhMT6cCBA7R161Y6duwYSaVSat68OXXp0oVcXV3JyMhIJ++fYQQBhsmF3r17h4ULF6JmzZqQSqWwtLREnz59cOrUKahUKs3fqVQqzJ49G0ZGRqhevToePHig+f+OHDkCExMTSCQSSCQSEJHmn/q/mZiYICQkBCqVCjNnzoSBgQGqVauGyMjIb+JZtGgR6tSpA4VCgbx582LAgAE4c+ZMhngYJrdgyYXJNRISErBt2za0atUKcrkchoaGaNOmDXbu3InExMRv/v7169do3rw5ZDIZxo4di5SUlG/+Jjo6GvPnz4eTk1OG5OLk5IT58+cjJiYmw99fuXIFxYoVg6mpKdavXw+O47455r179+Dv74/ixYtDoVCgWLFimDhxIu7evctfYzCMwFhyYfRaeno6Tpw4gV69esHCwgJSqRR16tTBkiVL8OHDhx++7tChQ8ifPz8cHBxw7NixX56H4zicPn0aVlZWOH369HeThtrnz5/Ro0cPEBG6dOmC2NjY7/6dSqVCWFgY/vjjD+TLlw8KhQK1atXCggUL8Pbt21+/eYYRMZZcGL3077//YuzYsShYsCCkUimKFy+OSZMmfTMc9V9JSUkYMWIEZDIZ3N3d8f79+0yf88aNG7CxscGNGzcy9fdbtmyBubk5ihYtigsXLvwyrr1796JTp04wNTWFUqmEu7s7tmzZgvj4+EzHyDBiwZILozdevXqF2bNno3LlypBKpbC1tcWgQYNw/vz5n95JqN25cweVK1eGUqnEggULMvWar2U1uQDA48ePUatWLchkMkybNg3p6em/fM3Hjx+xcuVKNGzYEAqFAtbW1ujVqxdCQ0Mz9XqGEQOWXBhR+/z5MzZs2ICmTZtCJpNBqVSiY8eO2L9//3efkXwPx3FYuXIlTE1NUa5cuSwlh69lJ7kAQGpqKvz8/CCRSNCwYUO8fPky0699/Pgxpk2bhrJly0KhUKBw4cIYO3Ysrl+/nuXkyDC6xJILIzppaWk4fPgwvL29YWJiAqlUikaNGmHVqlWIjo7O0rE+ffqEjh07QiaTYcCAAUhISMh2XNlNLmonT56Eg4MDrK2tsW/fviy9luM4XL58GSNGjIC9vT0UCgWqVKmCWbNmZSlZMYyusOTCiALHcbhy5QqGDx+O/PnzQyqVomzZspgxYwaePn2arWOePXsWRYoUga2tLfbs2ZPjGHOaXAAgKioKbdu2BRFh4MCB353F9iupqak4dOgQunbtCgsLCxgZGaFZs2ZYv379DycPMIyuseTCCOrJkyeYNm0aypQpA6lUCjs7O4wYMQLh4eHZHvZJS0uDv78/5HI5GjZsiOfPn/MSKx/JBfiSSJcuXQojIyOULVsW//77b7aPFRsbi/Xr16N58+YwMjKChYUFvL298c8//yA1NTVHcTJMTrDkwujcp0+fsHLlSjg7O0MqlcLU1BRdu3bFkSNHkJaWlqNjP3nyBPXq1YOhoSGmTJnC6wNwvpKL2q1bt1C+fHkoFAosWrQox89QXrx4gdmzZ6NKlSpQKBSwt7fH8OHDcfnyZfZ8htE5llwYnUhJScG+ffvQoUMHGBkZwcDAAM2aNcPGjRsRFxfHyzm2b98Oa2trODo64vz587wc82t8JxfgyxTkwYMHg4jg7u7+07U5mcVxHG7cuIGxY8eicOHCUCgUKFu2LKZOnYrHjx/zEDXD/BpLLozWcByHc+fOYeDAgbC1tYVUKkWVKlUwZ84cvHr1irfzxMXFwcfHBzKZDJ07d87yQ//M0kZyUdu/fz9sbGxgZ2eH0NBQ3o6bnp6O0NBQ9O7dG9bW1lAoFGjYsCFWrFiBjx8/8nYehvkvllwY3j148AD+/v4oVqwYpFIpChUqhHHjxuHmzZu8n+vatWsoXbo0zM3NsW7dOq0O/2gzuQBf1vG4uLhAIpFg3LhxvD8ziY+Px9atW+Hu7g6lUglTU1N07NgRe/fuRXJyMq/nYhiWXBhevH//HosWLULt2rUhlUphYWGB3r174+TJk1opzKhSqTB37lwYGRmhWrVquH//Pu/n+C9tJxfgy/sKDAyEgYEBatSogYcPH2rlPG/fvsWCBQtQu3ZtKBQK5MuXD3/88QfCwsJYIU2GFyy5MNmWmJiIHTt2wN3dHYaGhjA0NIS7uzu2b9+erSm2mfXmzRu0bNkSMpkMo0ePzvRiypzSRXJRu3TpEpycnGBmZoaNGzdq9Vx3797FX3/9hWLFikGhUKBEiRLw9/fHvXv3tHpeJndjyYXJEpVKhZMnT8LHxweWlpaQSqWoXbs2Fi1alKU6Xdl1+PBh2NnZwd7eHiEhIVo/39d0mVyAL9UJunXrBiKCt7e31tewqFQqnD17FgMGDEDevHmhUChQp04dLFy4UCefLZO7sOTCZMqtW7cwbtw4FCpUCFKpFMWKFYO/v79OhqMAIDk5Gb6+vpDJZHBzc8O7d+90ct6v6Tq5qG3atAlmZmZwdHTExYsXdXLOpKQk7NmzBx06dICpqSmMjY3RunVrbNu2LUdVDpjfB0suzA+9fv0ac+fORZUqVSCVSmFjY4OBAwfi3LlzOl03cffuXVSpUgVKpRLz588XbM2GUMkFAB49eoQaNWrAwMAA06dP12kBy48fP2L58uVo0KABFAoFbGxs4OPjg+PHj7NCmswPseTCZBAXF4eNGzeiefPmMDAwgJGRETp06IB9+/bpfEYRx3FYtWoVzMzMUKZMGVy/fl2n5/8vIZML8KXsy/jx4yGRSNCoUSNBaoo9evQIU6dORZkyZaBQKFCkSBGMGzcuR1UGmNyJJRcGaWlpCAkJQdeuXWFqagqpVApnZ2esXLkSnz59EiSmT58+oVOnTpDJZOjfv78o9jQROrmoHT9+HPb29rCxsUFwcLAgMagLaQ4bNgx2dnZQKBSoWrUq72uYGP3FkstviuM4hIeHw9fXF/b29pBKpShdujSmTZuGJ0+eCBpbWFgYihYtChsbG+zatUvQWL4mluQCfCmA2aZNGxARBg0apNXZeb+SkpKCgwcPwtvbG+bm5jAyMkKLFi2wYcMGfP78WbC4GGGx5PKbefr0KWbMmIFy5cpBKpUif/78GD58OK5cuSJ4/am0tDRMnjwZcrkczs7OePbsmaDx/JeYkgvw5QJh8eLFMDIyQrly5bSySDWrYmJisG7dOjRt2hQKhQKWlpbo1q0bDh8+zApp/mZYcvkNREdHY/Xq1WjUqBGkUilMTEzQpUsXUXX4p0+fon79+pDL5QgICMhxAUttEFtyUbt58ybKlSsHIyMjLF68WPCLBLXnz59j5syZqFSpEhQKBRwcHODr6yuKCxlG+1hyyaVSUlKwf/9+dOrUCUqlEjKZDE2bNsX69etFN1Sxc+dOWFtbo2jRojh37pzQ4fyQWJML8GVB66BBg0BEaNOmDaKiooQOSYPjOERERGDMmDEoVKgQFAoFypcvj+nTpws+BMtoD0suuQjHcbhw4QIGDRqEPHnyQCqVolKlSpg9e7YodyuMj49H3759IZPJ4OXlpbWCk3wRc3JRCw4Oho2NDezt7XHixAmhw/lGWloajh07hp49e8LKygoKhUKzy6hQk0cY7WDJJReIjIzE5MmTUaJECUilUhQoUABjxowR9Y9gREQEypQpAzMzM6xZs0Yvhkn0IbkAwMuXL9GoUSNIJBKMHz9eNEOf/xUXF4ctW7agVatWUCqVMDMzg6enpyDT3hn+seSip6KiorBkyRLUqVMHUqkU5ubm6NWrl+gXtqlUKsybNw9KpRJVq1bVq/pV+pJcgC+l9mfMmAEDAwPUrFkTjx49Ejqkn3rz5g3mz5+PmjVrQqFQIH/+/Bg0aBDOnz+vFxcezLdYctEjSUlJ2LVrF9q0aQNDQ0PI5XK4ubnpTUmOt2/fwtXVFTKZDKNGjdK7q1N9Si5qly5dgqOjI8zMzLBp0yahw8mU27dvY8KECXBycoJCoUDJkiUxefJkPHjwQOjQmCxgyUXkVCoVTp06hT59+sDKygpSqRQ1a9bEggULBKmvlV0hISGws7ODnZ0djhw5InQ42aKPyQUAYmNj0bVrVxARunXrJroJHT+iUqlw+vRp9O/fH3ny5IFCoUC9evWwePFiVkhTD7DkIlK3b9/Gn3/+iSJFikAqlcLR0RETJ07E3bt3hQ4tS5KTkzFq1CjIZDK4urri7du3QoeUbfqaXNQ2btwIU1NTODk54fLly0KHkyWJiYnYtWsXPDw8YGJiAmNjY7Rt21br2zsw2ceSi4i8efMG8+bNQ7Vq1SCVSmFtbY0BAwbg7NmzermB071791C1alUYGRlh3rx5evkevqbvyQUAHj58qCmAGRgYqJefSVRUFJYuXYr69etDoVDA1tYWffr0wcmTJ0X9vPF3w5KLwOLj47F582a0aNECBgYGUCgU8PDwwJ49e/TumYQax3FYs2aNpuBkRESE0CHxIjckF+BLAcxx48ZBIpHAxcVFr2uBRUZGYsqUKShdujQUCgWKFi2KP//8UxTVCn53LLkIID09HUePHkX37t1hZmYGqVSKBg0aYPny5fj48aPQ4eVIdHQ0vLy8IJPJ0LdvX1EUnORLbkkuaqGhobCzs4ONjQ32798vdDg5wnEcLl68iCFDhmgKaVavXh1z587F69evhQ7vt8SSi46oVymPHDkSDg4OkEqlKFWqFKZMmSL6aaKZde7cOTg6OsLa2ho7duwQOhze5bbkAgAfPnyAu7s7iAiDBw9GUlKS0CHlmLo6RefOnTWFNFu2bIlNmzbpzWSG3IAlFy17/vw5/v77b5QvXx5SqRT58uXD0KFDcenSpVwzfz8tLQ0BAQGQy+WoX78+nj59KnRIWpEbkwvw5cJn0aJFmrIst27dEjok3kRHR2PNmjVwcXGBQqGAlZUVevTogSNHjoiyfl1uwpKLFsTExGDNmjVo3LgxZDIZjI2N4eXlhX/++Ue0q6Wz69mzZ2jQoAHkcjkmT56cqztsbk0uav/++y/Kli0LIyMjLF26NNdc/Kg9e/YMgYGBqFChAhQKBQoUKICRI0ciPDw8171XMWDJhSepqak4ePAgPD09YWxsDJlMBhcXF6xbtw6xsbFCh6cVu3btgo2NDYoUKYKzZ88KHY7W5fbkAnyZ8jtw4EAQEdq2bSuqAph8Ue9lNGrUKBQsWBAKhQIVKlRAYGCg6LZ50GcsueTA1w8R8+bNC6lUigoVKmDmzJl48eKF0OFpTXx8PPr37w+ZTIZOnTr9NgUHf4fkorZ3715YW1vDwcEBJ0+eFDocrVHvwvp1IU0XFxesXr1a9IVUxY4ll2x49OgRAgICULJkSUilUjg4OGD06NGC7/GuC9evX0fZsmVhZmaGVatW/VbDCb9TcgGAFy9eoGHDhpBIJPDz88t1Q7r/9fnzZ2zevBmurq6aQppeXl7Yv38/UlJShA5P77DkkklRUVFYtmwZ6tWrB6lUCjMzM/To0QOhoaG/xcItjuMQFBQEpVKJKlWq6F2lAD78bskF+DJtftq0aZDJZKhVqxYeP34sdEg68fr1a8ybNw81atSAQqGAnZ0dhgwZggsXLvxWF1Q5wZLLTyQlJWH37t1o164dFAoF5HI5XF1dsWXLlly1fuNX3r17h1atWkEmk8HX11dvF3fm1O+YXNQuXLiAokWLwtzcHFu2bBE6HJ26desW/Pz84OjoCIVCgVKlSiEgIACRkZFChyZqLLn8h7pYXr9+/WBtbQ2pVIrq1atj/vz5el0XK7uOHj0Ke3t75M+fH4cPHxY6HEH9zskF+DILskuXLiAi9OjR47dbM5Keno5Tp06hb9++sLW11RTSXLp0aa6c+JBTLLn8v7t378LPzw9FixaFVCpFkSJF4Ofnhzt37ggdmiBSUlIwevRoyGQytGjRAm/evBE6JMH97skF+DI8un79epiamqJYsWK4cuWK0CEJIjExETt27EC7du1gYmICExMTeHh4YOfOnayQ5v/7rZPL27dvMX/+fFSvXh1SqRRWVlbo168fTp8+rZcF/fhy//59VKtWDUZGRpg7d+5v3RZfY8nlfyIjI1GtWjUYGBhg5syZv/V35MOHD1iyZAnq1asHhUKBPHnysN8R/IbJJSEhAVu2bIGrqyvkcjkUCgXatm2L3bt354rSFznBcRzWrVsHc3NzlC5dGteuXRM6JFFhySWjlJQUjBkzBkSEpk2bshpeAB48eIDJkyejZMmSUCgUcHJywoQJE3D79m2hQ9O53yK5pKenIzQ0FD169IC5uTmkUikbK/2P6OhodOnSBTKZDD4+PoiLixM6JNFhyeX7jh07hvz588PW1hYHDx4UOhxR4DgO58+fx+DBg5E/f34oFArUqFEDQUFBv80Qc65OLtevX8fo0aNRoEABSKVSlChRAgEBAXj48KHQoYnK+fPn4ejoCCsrK2zfvl3ocESLJZcfe//+Pdzc3EBEGDJkyG8/CvC15ORkBAcHw9PTE2ZmZlAqlXBzc8OWLVty9UVcrksuL168wMyZM1GxYkVIpVLkyZMHgwcPxsWLF9n89P9IT0/HlClTYGhoiHr16uHJkydChyRqLLn8HMdxWLBggaacyu86GeZnPn36hFWrVqFx48aaQpo9e/bE0aNHc11dvlyRXGJjY7Fu3Tq4uLhAJpNBqVTC09MTBw4cyPWrirPr+fPnaNiwIeRyOSZNmpTrvtjawJJL5ty4cQOlS5eGUqnE8uXL2UXdDzx58gQzZsxA+fLloVAoUKhQIYwePRrXrl3LFW2m18klMTERnTt3homJCaRSKRo1aoQ1a9YgJiZG6NBE7Z9//oGtrS0KFy6MM2fOCB2O3mDJJfMSEhLQv39/EBE8PDx+q0XHWcVxHK5evQpfX184ODhAoVCgUqVKCA4OFjq0HJEAAIlMVkJSqVQkkUg0/7Iiq38vZllpMwDEcRxJpdLfus2IstZu6enpFBMTQ5aWlmRgYJCl8+Smdsvqdw3Ab98/iTLXbuq+qVKpSCaTkUwmy/J5xNJuWeshOhIQEEAVK1bU2vETEhIoPj6e+vfvr7Vz6Jq22yw+Pp4SEhJyVZsREc2aNYvKli2bqb8FoOn0me3ACQkJlJiYSD179sxBlOIyefJknfTPAQMGaO0cQpg2bRqVL19ea8dPTEyk+Ph46tu3r9bOkSXC3DD9nJeXF9LT07Xy7/Dhw6hSpQo6dOgg9NvklTbbbN++fbmyzQDAx8dHa+128OBBNGzYED179hT6bfLK09NTq/2zUqVKaN++vdBvk3fe3t5aa7fQ0FDUqFEDXl5eQr9NDanQye17JBKJ5paQz3+fP38mDw8Pmjp1qtBvkXfaarMXL16Ql5cX/f3330K/Ra3QVrs9e/aM+vbtS5MmTRL6LfJOW20WHx9P7dq1y5X9k0h77ZaSkkIdOnSgiRMnCv0WMxBlctEGjuPI2dmZunbtSi1atBA6HL2QlJREdevWpfHjx5OLi4vQ4eiN+Ph4cnV1pTFjxlCDBg2EDkcvAKCGDRtSx44dydXVVehw9AYAcnd3p6ZNm5Kbm5vQ4WQgymcufANAI0eOpOTkZFq6dKloHniJGcdx1LJlS6pcuTJNnDiRtVkmpaenk7u7O9WvX5+GDRvG2i0TAND48eMpOjqa1q5dy9oskwDQvHnz6MGDB/T48WPRtdtvkVxCQkJo+fLl9PTp02zNvvjdAKDhw4fT69ev6datW6L70ooVAOrTpw/JZDJatmwZa7dMOnnyJM2dO5f1zyy6fPky/fXXX3T9+nWSy+VCh/ONXJ9cXr9+Te3ataN9+/ZR3rx5hQ5H9ADQ6tWracOGDRQZGUmGhoZCh6QXAJC/vz9FRETQ+fPn2Y9kJr17947c3Nxo586dZG9vL3Q4euPt27fk6upKq1atomLFigkdznfl6uSSmppKderUoREjRlCzZs2EDkcvnD59mgYPHkwXLlygPHnyCB2OXgBAy5cvp82bN9P58+fJxMRE6JD0QlpaGtWuXZsGDhxIrVu3FjocvZGQkED169enPn36kKenp9Dh/FCuTS4AqE2bNuTo6EjTpk1jQxSZEBkZSW5ubrR582aqXLmy0OHoBQC0e/dumjZtGoWGhlK+fPmEDkkvACAPDw+yt7en2bNns/6ZSSkpKdS0aVOqUqUKBQYGirrdcmVyAUB//vkn3blzh+7fvy/qD0AsPnz4QHXr1qW//vqLPDw8hA5Hb4SGhtKwYcNo9+7dVLJkSaHD0QsAaOLEiXTt2jV6+PAhSaW/zaTVHElLS6M2bdqQsbExbd68WfS/a7kuuQCgdevW0eLFi+nevXtkZGQkdEiiFx8fT7Vr16ZOnTrRmDFjRP+lFYuwsDDq2bMnrV+/nmrVqiV0OHoBAG3evJnmzZtH9+7dI6VSKXRIeiE1NZU8PDwoKSmJjh49muXyQ0IQf4RZFBoaSn/88QedOXOGPSDMhOTkZGrYsCFVrlyZFixYwBJLJl2+fJk6d+5MixcvZmuAsuDMmTPk4+NDp06dooIFCwodjl5ISkqidu3aUXJyMh05coQUCoXQIWVKrrofvXLlCrVp04a2b99O1atXFzoc0UtNTaWWLVuSlZUVbd26lQ1PZFJ4eDh16NCBZs2aRW3atGEJOZNu3rxJLVu2pA0bNlDt2rWFDkcvxMTEUPPmzUkqldKRI0f06k4v1/ya3Lx5k1xcXGjRokXk7u4udDiil5aWRu7u7pSenk7//POPXtxmi8HVq1fJw8ODZsyYQZ6eniyxZFJkZCTVq1ePAgMDqVOnTkKHoxdevnxJDRo0oIIFC9K+ffv0bog/VySXW7duUYMGDWjq1KnUq1cv1uF/ITU1lVq3bk1xcXF09OhRtpYlky5dukTt27enadOmUZcuXdj3LJMiIyOpVq1aNHr0aBoyZAhrt18AQDdu3KB69epRs2bNaMOGDXrZR/U+uVy7do3q169Pf/31F/viZkJSUhK5urpSfHw8HT9+XK9us4UCgE6dOkUdO3akv//+m7y9vdn3LJMiIiKoVq1aNHz4cPLz82Pt9gsA6PDhw9S0aVMaMWIEzZo1S28X5OptcgFAZ8+epcaNG9OUKVNo+PDh7Iv7CzExMeTi4kJSqZSOHTvGEksmAKCDBw9S9+7daeHChWwoLJMA0KFDh8jZ2ZkmTpxIEyZMYO32CwBo8eLF1KNHD1q+fDkNHTpUr9tML5MLANq3bx+5ubnRggULaNCgQXr9IejC8+fPqU6dOlSwYEE6ePCg3o3fCkE9rX3w4MG0du1aat26NfueZYJKpaKZM2dS586dadWqVayAZyakpqbS8OHDac6cOXTkyBFq27at3reZ3j3F5TiOgoKCKCAggLZv304tWrTQ+w9BmwDQhQsXqH379tSlSxeaOXOm3t5m65JKpaJp06bR5s2bae/evVSlShWhQ9ILr1+/pv79+9ODBw/o9OnTVLFiRdY/fyEqKoq8vb0pPj6ezp07l2uWUOjVnUtCQgL16dOH5s+fTydPnmSJ5Rc4jqNVq1aRm5sb+fv70+zZs1liyYT4+Hjy8fGhQ4cOUUhICEssmcBxHO3YsYOqV69O1tbWdOnSJapUqRLrnz8BgCIiIqhu3bpkZ2dHx44dyzWJhUhP7lwA0PXr18nHx4esrKzo8uXLrIbTL8TExNDw4cPpxIkTFBwcTPXr12cd/RcA0IMHD8jHx4ccHBwoJCSELCwshA5L1ADQmzdvyNfXl86dO0fz5s2jDh06sDVTv6CuVDBy5EgaN24cDRs2LNe1majfDQD6+PEj+fv7U/PmzcnDw4OOHDnCEstPAKDjx49TrVq16NOnT3T58mVq0KABSyy/oFKpaMuWLeTm5katWrWizZs3s8TyC+o2q169Osnlcrp69Sp16tQp1/1I8i0pKYmGDh1KEyZMoK1bt9Lw4cNzZZuJ9s7lzZs3tG3bNlqyZAkVKVKEQkJC2G32Lzx//pwCAgLo0KFD9Ndff1GfPn3Y4shMeP78OU2cOJFu3rxJq1atImdnZ/Y9+4WnT5/SyJEjKTw8nBYtWkRt2rTJlT+QfIuMjKSePXuSQqGgsLAwKlCggNAhaY1of3nq1q1Ljo6OFBQURM2aNRPlTmtiU7duXWrQoAGdP3+eChcuzH4gM6lFixbUtGlTOnbsGNnY2Agdjl6oXbs2ubm50ZUrV9i+P1nQqFEj6tatG02aNElvaoRllyiTi6GhIfXo0YMqV65MEomEjh07xvs5ihQpwvsxhWRoaEjdu3en2rVr0507d+jOnTu8nyO3tRnRl3bz8vKiWrVq0bVr17RyjtxWoFH9Xatfvz5dvnxZK+fIrd81b29vql+/Pp04cUIr5yhUqJBWjpsdEgAQOoj/SkpK0vo5ZDKZXpZU+BHWZtnD2i3rWJtlz+/WbqJMLlnxdfhsGChzWJtlDwBSqVQkk8lYu2US+65lDwACQBKJRG/bTe+fwEVERJCBgQFFREQIHYreuH79Osnlcrp+/brQoeiVmzdvUv78+enmzZtCh6I3IiIiSCqVsv6ZRdevXydjY2O97qN6n1wYhmEY8WHJhWEYhuEdSy4MwzAM71hyYRiGYXjHkgvDMAzDO5ZcGIZhGN6x5MIwDMPwjiUXhmEYhncsuTAMwzC8Y8mFYRiG4R1LLgzDMAzvWHJhGIZheMeSC8MwDMM7llwYhmEY3rHkwjAMw/COJReGYRiGdyy5MAzDMLxjyYVhGIbhHUsuDMMwDO9YcmEYhmF4x5ILwzAMwzuWXBiGYRjeseTCMAzD8I4lF4ZhGIZ3LLkwDMMwvGPJhWEYhuEdSy4MwzAM71hyYRiGYXjHkgvDMAzDO5ZcGIZhGN6x5MIwDMPwjiUXhmEYhncsuTAMwzC8Y8mFYRiG4R1LLgzDMAzvWHJhGIZheMeSC8MwDMM7llwYhmEY3rHkwjAMw/COJReGYRiGdyy5MAzDMLxjyYVhGIbhHUsuDMMwDO9YcmEYhmF4x5ILwzAMwzuWXBiGYRjeseTCMAzD8E6vkwsAio6OJiKi6OhoAiBwROLH2ix71O3GcRxrt0xi37XsUbfb1/+rl6CHoqOjERQUBCcnJxCR5p+TkxOCgoIQHR0tdIiiw9ose1i7ZR1rs+zJbe2md8nlyJEjMDExgUQigUQiyfAhqP+biYkJjhw5InSoosHaLHtYu2Uda7PsyY3tplfJ5ciRI5DJZJBKpRka/7//pFIpZDKZXn0Q2sLaLHtYu2Uda7Psya3tJgH0Y0AvJiaGChQoQElJScRx3C//XiqVklKppJcvX5KlpaX2AxQh1mbZw9ot61ibZU9ubje9eaC/fv16SkxMzNQHQETEcRwlJibShg0btByZeLE2yx7WblnH2ix7cnO76cWdCwAqXrw4PX78OEszJyQSCTk6OlJkZCRJJBItRig+rM2yh7Vb1rE2y57c3m56kVyioqIoT548OXq9jY0NjxGJH2uz7GHtlnWszbInt7ebXgyLxcfH5+j1cXFxPEWiP1ibZQ9rt6xjbZY9ub3d9CK5mJqa5uj1xsbGPEWiP3LaZmZmZjxFol9Yu2Uda7Ose/v2Le3atStHxxB7u+lFcrGxsSEnJ6dsjy+WK1eO+vXrR0eOHKHU1FSeoxOnnLSZkZERhYSE/DZt9TUbGxsqUKBAtl7r5ORE1tbWPEckbg8ePKBp06aRVJr1nxKJRPJbtdnTp09p3rx5VL9+fbK3t6dx48aRUqnM8nH0pd30IrlIJBIaMmRItl47YsQI6tmzJx0/fpxatmxJefPmpW7dutHevXspMTGR50jFIydtVrBgQfL29qaCBQuSn58fPXv2jOfoxOnt27fUp08fevXqVbZe36BBA54jEqf09HTau3cvNWvWjEqWLEkbN26khg0bZutYQ4cOFfVD6Zy6d+8eTZ8+napWrUpFixalcePGkaWlJa1evZrevXtHM2bMyNb714t20/3SmuyJjo6GiYnJLxca0VcLjkxMTDQlEziOw/Xr1/HXX3+hXLlyICIolUp4eHhg06ZNiImJEfYNakF0dDQMDQ0z1V7/bbM7d+5g6NChMDc3h1Qqhbu7Ow4fPgyVSiX02+JdcnIyZs6cCTMzM1hbW2PWrFkwNjbO9HdNIpFAJpOBiNCwYUPcuHFD6LekFa9fv0ZAQAAcHBxARKhduzY2btyIpKSkLPdPdf/Tt5Imv8JxHMLDw+Hn54fSpUuDiGBiYoKOHTti27ZtiI2NzfD3Of1dEzO9SS7A/1ay/rc8wvc+AJlMhpCQkB8e6/79+wgMDET16tVBRJDL5WjZsiVWrlyJ9+/f6/Bdac+sWbMgl8u/W1Iis20WHx+PFStWoFKlSiAiODo6YubMmfjw4YNA74o/HMdh//79KFasGGQyGYYMGYKPHz8CyPqq6ZCQEBw6dAglS5aEVCrFgAEDck0bnTx5Eh07doSBgQGMjY3Rr18/REREfPO3mW0z9XexQIECePHihe7fFM9UKhXCwsLg6+uLIkWKgIhgZWWFHj16IDg4GImJiT99fXa+a/pAr5IL8OWDMDIy+uGXVl2DJysfwLNnzzB//nw4OztDKpVCKpWiYcOGWLBggV5++TmOQ0BAAAwNDREQEIDDhw9nqm7Rz9qM4zhcuHAB3bp1g6GhIRQKBbp3744LFy6A4zgdvjt+3L59G82aNQMRoWnTprh169Y3f5PZek9ft1tqairmzZsHCwsLWFpaIigoCKmpqbp8a7yIiYnBggULNFffpUuXxoIFC355h5/ZNlu3bh0KFy6MokWL4vHjxzp6V/xJTU3FsWPHMGDAAOTPnx9EhHz58mHAgAE4evRolj/zn7Wbuu2y+rsmNL1LLgDg4+MDS0tLODo6ZvgAnJycMH/+/BwNcb179w4rVqxAixYtIJfLQUSoUaMG/v77b0RGRvL4LrSD4ziMHz8ehoaGmDlzpua/R0dHY/78+d+tuJrVNvvw4QNmzpyJokWLgohQuXJlrFy5EvHx8dp4S7z6+PEjhgwZAplMBicnJwQHB/80OWa33d6/f4/+/ftDIpGgVKlSelMPKiIiAv369YOxsTEMDAzQsWNHnDx5MksXEJlts2fPnqFYsWIoUKAA7t+/r623xJukpCQEBwejR48esLKyAhGhcOHCGDFiBMLCwpCenp6j4/+o3YgIU6ZM0buhe71LLmlpaciTJw9GjRoFjuMQFRWFJ0+eICoqivcr6OjoaGzatAkeHh5QKpUgIpQvXx7+/v64ceOG6K7YVSoVhg0bBkNDQyxatOi7f8Nnm6lUKhw6dAju7u6QSCSwsLDA0KFDcffu3WwfU1vS0tKwePFiWFtbw8zMDDNnzkRycnKmX5/ddouIiICzszOICK1atRLlj2hSUhI2btyI2rVrg4jg4OCAgIAAvH79OkfHzUybvX79GmXKlEG+fPlw8+bNHJ1PGz5//oxt27ahU6dOMDEx0dzF+fn5ITw8XCu/AV+3W2RkJORyORYsWMD7ebRN75JLSEgIiAjh4eE6PW98fDx2794Nb29vmJubg4hQrFgxjBkzBhcvXhT8QXd6ejoGDBgAhUKBlStX6vz8T548wfjx45EnTx4QERo3boydO3eKYkjo+PHjKFeuHCQSCXr37o03b97o9Pwcx2Hnzp0oXLgw5HI5Ro0aJYqr0EePHmHMmDGwsbHRDA/u2bMHaWlpOo3j/fv3qFixImxsbHDt2jWdnvt7oqKisHbtWrRq1QoKhQJEhCpVqmDq1Km4c+eOzuNp1aoV6tSpo/Pz5pTeJZeePXuiePHigt41pKSk4NChQ+jTpw9sbW01V3tDhgzByZMndd4509LS0LNnTxgZGWHTpk06Pfd/JScnY8uWLahXrx6ICHZ2dvD398fLly91HsujR4/g4eEBIkKdOnVw5coVncfwtcTEREyZMgXGxsbImzcvVq1aleOhlKxKT0/HgQMH4OrqColEAktLS4wYMULwO6pPnz6hevXqsLS0xMWLF3V+/tevX2Px4sVwcXHRTBqqW7cu5s6diydPnug8nq9t2rQJRISnT58KGkdW6VVySU5Ohrm5Of766y+hQ9FIS0vDqVOnMHToUBQoUABEBFtbW/j4+OCff/7J0tBLdqSkpMDT0xPGxsbYtWuXVs+VVf/++y8GDhwIU1NTyGQyeHh4IDQ0VOsXBnFxcfjzzz+hUCjg4OCAzZs3i2oI88WLF/D29tZcEZ89e1br53z37h1mzJiBwoULg4hQrVo1rFmzBgkJCVo/d2bFxsaiXr16MDU1xenTp7V+vkePHmH27NmoU6eOZjp506ZNsXTp0hwPCfIpLi4OSqUSf//9t9ChZIleJZe9e/eCiAS5Nc0MlUqFS5cuYezYsShWrBiICObm5ujSpQt27drF+wPvpKQktG3bFqampjhw4ACvx+ZTbGwsFi9ejLJly4KIULJkScybNw+fPn3i9TwqlQrr16+HnZ0djIyMMHHiRFFPMjh37hyqVasGIoKXlxeePXvG6/E5jkNYWBi6dOkCuVwOIyMj9OrVC5cvX+b1PHyKj49H48aNoVQqcezYMV6PzXEcbt++jYCAAM3UeoVCgdatW2PdunWaaehi1LFjR1SqVEnoMLJEr5JLp06dULFiRaHDyBSO4/Dvv/9i0qRJqFChAogIRkZGaNu2LTZu3JjjRVAJCQlo2bIlzM3NcfToUX6C1jKO43DmzBl4eXlBLpdDqVTCx8cHV69ezfGxL168iBo1aoCI0KlTJ70ZQlCpVFi7di3y5csHpVKJSZMm5fhu4vPnz1i6dCnKly+veTY4Z84cUf94fi0xMRGurq5QKBQ4ePBgjo7FcRyuXLmC8ePHo2TJkiAimJqawtPTEzt27EBcXBxPUWvXnj17QESinCzzI3qTXNS3hjNmzBA6lGyJjIzEzJkzUbNmTRARDAwM0Lx5cyxfvhxv377N0rE+f/4MFxcXWFlZ6WT4QBvevn2LadOmoWDBgprp3uvWrfvlgrP/evXqFbp16wYiQqVKlfS2PWJjYzF27FgYGhqiYMGC2LZtW5aH8m7duoVBgwbBzMwMUqkUbdu2xdGjRwWfbJIdycnJaNeuHeRyeZaHe9PT03HmzBkMHz4chQoVAhHB2toavXr1woEDB5CUlKSlqLUnKSkJ5ubm8Pf3FzqUTNOb5LJ582YQkeAP1/jw4sULLFy4EI0aNYJUKoVEIkGDBg0QFBT0y6GR6Oho1KtXD7a2trhw4YKOItae9PR0BAcHo0WLFpofgZEjR/5yTVFSUhKmTZsGExMT2NraYsWKFTp/OK4NkZGRaNOmDYgI9erV++WsyJSUFGzbtg0NGjQAESF//vyYOHEinj9/rqOItSc1NRWdO3eGTCb75USVlJQUhISEoF+/fsibN69mMskff/yB0NBQnU+y0YYePXqgRIkSonp++DN6k1zc3d1Ru3ZtocPg3fv377Fq1Sq4urpqFm1Wq1YNM2bM+GYGz4cPH1CjRg3kz59f51OxdSEyMhKjRo2CtbU1iAjNmzfHvn37MvwwcByH3bt3o0iRIjAwMICvr69e1FnKqqNHj6JMmTKQSCTo06cP3r17l+H/f/bsGfz8/JAvXz4Qfalptn37dqSkpAgUsXakp6ejV69ekEgkWLVqVYb/LzExEXv37kW3bt1gaWkJIkLRokUxatQonD9/Xi/v2H7myJEjICJRTNfODL1ILh8/foRcLsf8+fOFDkWrYmJisGXLFnTo0AHGxsYgIpQtWxYTJ05EaGgoKlWqBAcHB1EuNuNTYmIi1q9frxlCLFiwIKZOnYoTJ06gcePGICK4urri3r17QoeqVWlpaVi4cCGsrKxgbm6OWbNm4cCBA2jdujWkUinMzc0xePBg3L59W+hQtUqlUmHgwIEgIsyePfuHfSQiIkJvruqzIzU1Fba2thg9erTQoWSKXiSXVatWQSqV6nzxm5ASEhI0V2XqRZsGBgbo3bt3rrwq+5Hw8HB07doVBgYGICKYmZnh77//ztU/Iv/14MED1KlTR1MKpGjRoli2bJnePIzOqQ8fPmDVqlWackPqu/vp06fn+guM/xo4cCAKFSqkF/1fL5KLi4sLGjduLHQYgnjy5AmKFy8OOzs7eHl5fTOefPz48Vwxnvw9qampmD9/PiwtLWFmZoa2bduiRIkSmqvVRYsWfVPCPLfgOA6XLl1Cjx49oFAoYGhoCDc3N1StWhVEhBYtWoh2Sj4fXr58+c1zyXr16mmKjU6ePPm3usBQO336NIgIYWFhQofyS6JPLm/evIFUKhWkpInQHjx4gKJFi6J06dKaB7TqmTDDhg3TzLTS95kw3xMSEoLSpUtDIpGgX79+mmcOHMfh+PHjaN++PWQyGUxMTDBgwIBcs4dKQkICVq1ahSpVqoCIUKRIEQQGBmq2geA4Dnv37oWjoyMMDAwwfPhw3tcLCeXhw4eYOXMmatWq9dMZldOmTQMRYdy4cb9dglGpVHBwcMCgQYOEDuWXRJ9cFixYALlcrjdz9Ply+/ZtFCxYEBUqVPjhcODXc/jVV/RmZmbw8vLSqzn8X3vw4AHc3d1BRGjQoMFPH16+fPkS/v7+sLe3BxGhbt262Lx5s9arImjDvXv3MGzYMFhaWkIikcDNzQ3//PPPD2fAJSUlYcaMGZrZcsuWLdO72XIcx+HmzZvfXQu2YcOGnybNefPmgYgwbNiw3y7B+Pr6Im/evKIfsRB9cqlduzZatWoldBg6FRERAXt7e1SrVi3TG5dxHIdbt259d/Xx+vXrRX91Gxsbi9GjR0Mul6NQoULYsWNHpn80UlNTsWvXLs3D/jx58mDcuHGin7aelpaG3bt3w8XFRVM2aNy4cVna3+TVq1fo0aMHiAgVKlTAyZMntRcwD9TDfWPHjkXx4sU1F0TZqWKxdOlSEBH69eunF88g+HLlyhUQkegXT4s6uTx58gREhM2bNwsdis5cunQJefPmRZ06dXJ0t/Z13ST1EIO6bpKYJkaoVCqsXr0aefPmhVKpREBAQJYXUn7t7t27GDZsGCwsLCCRSNCqVauf3gEI4dWrV5g0aZLmjqtOnTrYtGlTju64Ll26pBlO6tChg6gSa3p6+jf192xsbHipv7du3TpIpVJ0795d9FfyfOE4DsWKFUPv3r2FDuWnRJ1cAgMDoVQq9XJ4JzvOnj0LGxsbNGzYkNcH1a9evfqm4mu9evUEr/gaFhameUDdpUsXXhf+xcfHY+XKlahcubJmhtXff/8t2NbD33tW1L9/f1y/fp23c6hUKmzatAn29vZQKBSYMGGCYLXVUlJScPjwYfTt21ezDYODgwMGDx7Me+Xwbdu2QSaToVOnTqLY4kEXJkyYAAsLC1EPAYs6uVSqVAmdOnUSOgydOH78OCwtLdGsWTOtJtOoqCisWbMGrVq1gqGhoaYy77Rp03RWt+j58+fo3LkziAhVq1bV6swXjuNw8eJFdO/eXTPrqmvXrjh//rxOxurVuwuWKlUKRIQyZcpg0aJFWt3PJS4uDn5+fpqq0Js2bdLJe/16zyMLCwvN7pO62PNo7969kMvlaN26tah/cPly+/ZtEBGCg4OFDuWHRJtc7t69CyLCnj17hA5F6w4dOgQzMzO4u7vnaEgoq2JjY7Ft2zZ07NhRJ7vsJSQkYPLkyVAqlciXLx/WrFmj07HyqKgozJo1S7M9dsWKFbF8+XKtJPPw8HD06dNHs11wp06dcOrUKZ0+fH78+DHat28PIkLt2rW1Ug1ZTLu1Hj58GEZGRmjWrJmothLQlvLly8PLy0voMH5ItMnlr7/+grm5ea6ZWvsje/fuhYmJCTp27CjoFVdiYuI3+4MXKVIEvr6+CAsLy1ES4DgO27dvR6FChSCXyzFmzBhB16eoVCocOXIkw0r3IUOG5HjdSFJSUobKAgUKFMCUKVMEf8Z14sQJzWysnj175nivknfv3mHFihVo0aKFpmRRjRo1EBgYKPimY8ePH4eJiQkaNmyY64fTp0+fDmNjY9FuKyHK5MJxHEqUKIEePXoIHYpWbd26FUqlEl27dhXVWHFqaiqOHj2KAQMGaGpX5c+fHwMGDMCxY8eyFOu1a9dQv359EBFat26NBw8eaDHyrHv69Cn+/PNPzeLUhg0bYseOHVl6jw8fPsSoUaM02wU3a9bsm5poQktLS8PSpUthY2MDU1NTzJgxI0sXbs+fP8f8+fPh7OwMqVQKqVQKZ2dnLFiwQHRFMsPCwmBmZobatWuLYjtpbXn06BGICFu3bhU6lO8SZXIJDw8HEeHIkSNCh6I1a9euhUKhQJ8+fUQ1k+m/0tPTERYWhhEjRmh2MbSyskKPHj0QHBz8wx+od+/eoW/fvpBIJChTpgxCQkJ0HHnWpKSkYOvWrZpEqK4u/OLFi+/+fXp6Ovbv36+p5mxlZYWRI0eKLnn+16dPnzB8+HAYGBjA0dERe/fu/eHQ1YMHDxAYGKjZJ0cul6Nly5ZYuXLlN4U0xeby5cuwsrJC1apVERUVJXQ4WlOzZk20bt1a6DC+S5TJZfTo0bC1tRXVlR+fli5dCkNDQwwZMkSv5udzHIfw8HD4+fmhdOnSICKYmJigU6dO2LZtGz5//oyUlBTMmTMH5ubmsLS0xIIFC0R1V5YZN2/exB9//KHZnrldu3aafVHU+9Co9wmpXr061q5dq9NnZXy4c+cOmjdvDiKCi4sLbt68CY7jcOPGDfj7+6NcuXIgIiiVSnh4eGDTpk16V336+vXryJMnD8qXL5/lPZP0RVBQEORyuSjXsYkuuahUKhQsWBADBw4UOhStmDt3LgwNDTF69Gi9X1l8584dTJ06VVOqRC6Xw8TEBBKJBL179xZs2i9fPn/+jCVLlmh2dFRvwqVQKNC7d29cuXJF6BBzhOM47N+/HwULFoREItEUSLWwsEDXrl2xZ88evX8wfufOHdjZ2aFkyZJ4+fKl0OHw7tWrV5BIJFi9erXQoXxDdMklLCwMRIQzZ84IHQqvOI7DtGnTYGhoCH9/f71PLF+7e/cunJ2dNT9MEokEMpkMLi4uWLx4cY4fIAslNjYWixcvRtmyZTXb48pkMs1e9PqaXNLS0nDixAkMHjwYDg4OmjtQuVwOMzMzBAUF5apRg8jISBQqVAiOjo56s/11VjRq1AhNmzYVOoxviC65DBo0CAUKFNCr4aJf4TgOEyZMgKGhod5u0/w90dHRGDFiBAwMDFC0aFHs2bMHHMfh9evXWLp0KZo2bapZtFmnTh3Mnj0bjx49EjrsX/r3338xcOBATTLx8PDAsWPHNMNi06dP1wyLVatWDWvWrBH9FX5ycjL++ecf+Pj4wNbWVjObbejQoTh16hTS09Px9u1b+Pj4QCKRoGzZsjh27JjQYfPm6dOncHR0RMGCBX+5y6m+Wb58OaRSqeiG/kSVXNLS0pA3b16MHDlS6FB4w3EcfH19YWhomGs2O0tPT8fy5ctha2sLExMTTJ8+/YcP9j9+/Ih169ahdevWUCgUmr3uAwICcPv2bdHcwSUnJ2PLli2oV6+e5oH+X3/99dMH+gcOHEDLli0hkUhgZWUFX19fUT3Qj4uLw86dO9G5c2eYmZmBiFC8eHGMGzcOly9f/mHbh4eHa9qhTZs2ePjwoY4j146XL1+iVKlSsLOzy1UbrEVFRcHAwAALFy4UOpQMRJVcjh49CiLS2+GG/1KpVBg0aBAMDQ2xbNkyocPhxalTp1CxYkUQEbp3745Xr15l+rVxcXHYsWMHPD09YWpqCiJCyZIlMX78eFy5ckWQRPPfqciNGjXCzp07szwVefTo0ZqpyE2bNsXevXsFGVr69OkTNmzYgLZt28LIyEizWHTy5Mmah/aZwXEctm3bhoIFC8LQ0BBjx47F58+ftRy99r179w7ly5dHnjx5eC29IzRXV1fUrVtX6DAyEFVy6dWrF4oVKyaaq9mcSEtLQ+/evWFkZIT169cLHU6OPXnyBB07dgQRoWbNmrh48WKOjpeUlIQDBw6gV69esLa2BhGhUKFCGD58OM6cOaPV6dkqlQqHDx+Gu7u7ZhHl0KFDeVlEuWHDBk0ByQIFCiAgIEDrz5zevn2L5cuXo1mzZpodO2vVqoWZM2fmeAgoISEBkyZNglKpRP78+bF27Vq9H7KOiopC1apVYWVlpZWqBULYuHEjiAjPnj0TOhQN0SSX5ORkWFhYYOLEiUKHkmOpqano0qULlEoltm/fLnQ4ORIfH4+JEyfCyMgIdnZ22LBhA+8/LmlpaQgNDcUff/wBOzs7EBHy5s2Lfv36ISQkBCkpKbyc58OHD5g5c6am/EulSpWwYsUKraxwvnbtGvr27au18i9Pnz7FvHnzUL9+fUgkEkilUjRu3BiLFi3SyqyoZ8+ewcvLS/Oc6fz587yfQ5diYmJQp04dmJmZ4ezZs0KHk2OfP3+GkZERZs6cKXQoGqJJLvv27QMR6f1YaHJyMtq3bw8TExNRF5X7FY7jsHnzZjg4OEChUMDPz08n5TRUKhXOnz+PUaNGafZMt7S0RLdu3bB3794sryfhOA4XLlzIULiyW7duuHDhgs4KVy5YsCBD4cqFCxdma+X4vXv3MH36dFSrVg1EpNn6ePXq1Tqb9n3mzBlNpemuXbvq9fTeuLg4NGzYEMbGxjh+/LjQ4eRYhw4dULlyZaHD0BBNcvHy8kKFChWEDiNHEhIS4ObmBnNzc72uLnDlyhXNPjAeHh6CzfDiOA4RERGYOHGiZjqwsbExOnTogC1btvy0Ptn3Su7PnDlT0JL7J06cQIcOHWBgYAATExP069fvp+P+X7//MmXKZOn9a1N6ejpWrVqFvHnzwtjYGFOmTNG7RaRqiYmJaN68OYyMjHDo0CGhw8mR3bt3g4hw7949oUMBIJLkEh8fD2NjY0yfPl3oULItLi4OTZo0gaWlpeh3A/yRN2/eoFevXprKtmK7mvvelburq2uGK/e7d+9i6NChmvU27u7uOHTokKieE7x69QqTJ0/+7mZhKpUK586dw8iRI7+5c9u3b5+ofsRjYmIwatQoyOVyFC5cGDt37tTL56XJyclo06YN5HK5XldhT0xMhJmZGSZNmiR0KABEkly2bNkCIsrS9q5iEhMTgwYNGsDGxgbnzp0TOpwsS05Oxt9//w1TU1PY2NhgyZIlol9E9/TpUwQFBWmeOUgkElhaWoKIYG1tjfHjx4tqN8bvSUtLw549ezTbHBsZGWm2PsibNy/69+/P6zMnbbl//z5atWoFIoKzs7NezsJKTU1Fp06dIJPJRFsIMjO6d++OkiVLiiLJiyK5tG7dGjVr1hQ6jGyJiopCrVq1kC9fPr2bQs1xHPbt2wcnJyfIZDIMHTo0R1sr69rLly/h7++vmUZsaWkJmUyWYbaUWNdoqGfL9ezZUzNbzszMDAqFAhKJBC1btsTBgwdFXdT0vw4fPoxSpUpBKpWif//+eP/+vdAhZUl6ejp69OgBiUSCtWvXCh1Othw6dAhEhIiICKFDET65fPr0CXK5HEFBQUKHkmXv379HlSpV4ODggBs3bggdTpbcunULTZo00ZSI15eJFBzHITQ0FB4eHpDJZDA1NcXAgQPx77//Avj+Oo8KFSpg0qRJWVrnoQ2fP3/G9u3bM6zzKVGiBMaPH4+rV6+C4zgkJCRg9erVmu2fixQpghkzZujND3VqaiqCgoJgYWEBCwsLzJs3T68Kl6pUKvTv3x9EhCVLlggdTpalpqbCxsYGY8aMEToU4ZPL6tWrIZFI9K7+1KtXr1C+fHkUKlQox+sjdOnjx48YPHgwZDIZihUrhgMHDojiFvpXPn36hHnz5qFkyZIgIpQtWxaLFy/+5UP9Xbt2oUuXLhlWqI8dOxaXLl3Syfv+XoWCypUrY8qUKb+sUHD58mX07NkTRkZGMDQ0hLe3N86dO6cXn9f79+8xYMAASKVSlCpVCocPHxY6pEzjOA7Dhg0DEWHu3LlCh5NlAwYMQKFChQT/ngieXJo0aYJGjRoJHUaWPHv2DCVLloSTk5Noh13+Ky0tDYsWLYK1tTXMzMwwa9Ysvdhr/OrVq/Dx8YFSqYRcLoeXlxfOnDmT5Y7zdW0t9Ur6/9bW4subN2+wdOlSNGnSRDNMp66tlp3nih8/fsScOXNQrFgxzZ3YsmXL9GKnxevXr6Nhw4YgIri5uQm+U2VmcRyH8ePHg4gwdepUocPJklOnToGIBH/+K2hyefv2LaRSKVasWCFkGFny8OFDODk5oWTJkqJaDfszoaGhKFeunKYUvtgK3P1XYmIi1q1bp9mkqmDBgpg2bRpvcaelpeHkyZMZqgLnyZMHffv2xeHDh7P1AP3JkyeYM2cO6tatm6Eq9JIlS7JUIudnVCoVQkJC0KZNG0ilUpiZmWHQoEG4desWL8fXFo7jsGvXLhQuXBhyuRwjR47Umx0ip0yZAiKCn5+f4HcCmaVSqWBvb48hQ4YIGoegyWXhwoUwMDDQm53i7t69i0KFCqFcuXK8/WBo06NHj9CuXTvNlbPYJxxERkZi5MiRmgfcLVq0QHBwsNZLwVy8eBFjxoyBk5OTZtsAb29v7N69+6er9/+7n41CoYC7uzvWrl2r9e/08+fPMWHCBM021M7Ozti2bZuoZ5YlJiZi6tSpMDY2Rp48ebBy5Uq9mLAwa9YsEBF8fX31JsGMGDEC+fLlE3TWp6DJpW7dunBzcxMyhEy7ceMGHBwcUKVKFdFv8fr582eMGzcOhoaGKFCgALZs2SLaTpGWloZ9+/ZpdkW0trbGqFGjBCmL/vVOjOoNwr7eifHTp08IDw/Hn3/+qVlx/9+dOHUtJSUF27dv1+ynky9fPkyYMEF0+9p/7eXLl+jatavm+ZM+7N20aNEiEBEGDhwoqjVTP3L58mUQEUJDQwWLQbDk8uzZMxARNm7cKFQImXblyhXky5cPtWrVEvVdlkqlwrp165A/f34YGRnB399fK3Wz+PDmzRtMnToVBQsW1BTDXL9+vagWCd6/fx8zZszQbOms/mdsbIxOnTph//79oor31q1bGDx4sGbHzDZt2iAkJES0P4bnz59H9erVQUTw9PQU/TCzevJRz549RX/HxXEcnJyc4OPjI1gMgiWXv//+G0ZGRqIv433u3DnY2tqiQYMGoh4nvnDhQoaOKsYd9ziOw+nTp+Hp6QkDAwMolUr06dMH4eHhQoeWQWpqKo4ePYoBAwYgf/78mmcy9erVQ4UKFSCVSiGVSuHs7Iz58+eL7i4hLi4Oy5YtQ4UKFUBEKFasGGbPni3KNUzfuyAS88Zrmzdvhkwmg5eXl+inWPv5+cHS0lKwiTuCJZfKlSujQ4cOQp0+U06ePAlLS0s0adJEtDNz9GGIITY2FosWLdLUBytZsiSCgoIQHR0tdGgaiYmJCA4ORvfu3WFlZaVZY+Lr64uwsLAMV//v3r3DypUr0bJlS8jlchARatSogcDAQFFtFsZxHM6dOwdvb28YGhrCyMgIPXv2FGWZ+f8O5W7dulW0Q7m7du2CXC5Hu3btRD3j8ubNmyAi7N+/X5DzC5Jc7t27ByLC7t27hTh9phw5cgTm5uZwc3MT5ZVUUlKS6B+O3rhxAwMGDICJiQlkMhnat2+P48ePi+ZH4/Pnz9i6dSs6duyoKbtSunRpTJgwAdeuXctUnNHR0di0aRM8PDygVCpBRChXrhz8/f1x48YN0bzX9+/fIzAwEEWKFAERoWrVqli9erXovtsPHz5E27ZtQUSoW7curl69KnRI33Xw4EEoFAq0bNlSVEOj/1WuXDl07txZkHMLklwmTZoEMzOzH26NK7Tg4GCYmJigffv2orsyUU/rLFKkCAwMDEQ3rTM5ORmbN29G3bp1QUSwt7fHpEmTRFOaPSoqCmvWrEGrVq1gaGio+aGdNm1ajhfDJiQkYM+ePejatSssLCxARHBycsLo0aNx4cIFUTz7SE9Px8GDB+Hq6qqpxzZ8+HDRrT85duwYypYtC4lEAh8fH1FOnw8NDYWxsTEaN24s2meb06ZNg7GxsSDx6Ty5cByHkiVLonv37ro+dabs2LEDSqUSXbp0Ed2Y6o0bNzIsSBNLaW3gyzqPcePGIU+ePCAiuLi4YNeuXaJow1evXmHx4sVo3LgxZDIZJBIJ6tWrh7lz52qtuGVKSgoOHz6Mvn37atrEwcEBgwcPxokTJ0RRGPTx48cYO3YsbG1tQURo0qQJdu/eLYrYgP8t/LWystIs/BXbVOszZ87AzMwMdevWFWwLhJ95+PAhiAjbtm3T+bl1nlwiIiJARKIsB7FhwwYYGRmhd+/eoulgwJeHngMHDoRUKkXJkiVFte/Emzdv0KpVK0gkElhYWGDYsGG4e/eu0GEBAM6ePYvatWuDiGBgYICmTZti2bJlePPmjU7jSE9Px6lTpzB06FAUKFAARAQbGxv88ccfOo3jR5KTk7Fp0ybNHj4ODg5YuXKl0GFpREVFaUoWFS9eXHS7YF68eBGWlpaoXr26KCdN1KhRA23bttX5eSUAQDkUEBBA5cuXz+lhfig5OZni4+Opb9++WX7ttGnTqFy5cpn6W5VKRQDIwMAgy7H5+PhkObastJv6Y5JIJFmOLTvtJtbYsvpdy2psubHNshpbduiy3bLSZjmJLTe1GZHuvmtfnzjHOnXqhNTUVK38u3HjBmrUqIH27dtnKzb18JY2/kVERKBu3brw9PTMVmyenp5ai+3atWuoWbNmtmfkaTO2GzduZDs2bcb177//irbNbt68maPYtNlHb968maM+qs12i4iIyHa7abPNrl+/Lto2u337do6+a2qZv0T/CYlEQnK5nI9DZQCAWrZsScOGDaPLly9n6xjajK1169Y0atQoOn/+fLaOoc3YXF1dacyYMaKNLbufqTbjcnNzoz/++IPCw8OzdQxtx9a/f3+KiIjI1jG03UfF2m6urq40atQounDhgqjiatmyJY0YMYIuXbqUrWNo+7vWu3dv+vfff3N0LClPMWnFkSNH6NOnTzRq1CihQ/nG1q1bKSkpiYYMGSJ0KN9YuXIlpaam0vDhw4UO5Rt79+6l2NhYGjlypNChZHDu3Dl6//49jRkzRuhQvnH58mV6+/YtjRs3TuhQvnHmzBl6//49jR07VuhQvrFlyxZKTEykESNGCB1KBgcOHBBlHyAiun37Nr18+ZL8/PxyfCxe7ly0geM46tChA23fvp2kUnHlwLS0NOrXrx8dOXIky+O/2paYmEiDBg2iCxcuiC629PR08vb2pv3794vqM1Xfha5YsUJUcRH970pyyZIlooytdevWtG7dOtHFlpaWRr1796bQ0FBR9QOO48jT05P27NkjujYDQC1atKDAwEBeYhPXu/vKlClTyNbWltzd3YUO5RuDBw+msmXLUt26dYUOJQMA1K5dO2rWrBlVrVpV6HC+MXz4cCpWrBg1adJE6FAy2LVrF6lUKurWrZvQoXxjz549lJqaSr179xY6lG8sXryYFAoFeXl5CR1KBgCob9++VLFiRapXr57Q4WQwYcIEsre3pxYtWggdyjcuXrxIHz584O1OT5R3Lp8/f6bJkyfTgwcPRHXVQUT0/PlzWr9+Pb18+VJ0sZ0+fZpOnTpF0dHRoovt5cuXtHTpUnr16pWoYuM4jrp3704HDx4UVVxEX2Lr1q0bBQcHiy625ORkGj58OF29elV0sT19+pQ2btxIHz58EFVssbGxFBgYSI8fPxZVXERfEnKrVq1o2bJlvN1Rie7ORf0mPTw8yMnJSehwMgBAzZs3p5EjR5Ktra3Q4WSQlpZG7u7utH79ejI2NhY6nAwAUOPGjcnX15fy588vdDgZTJ8+nfLmzUuNGzcWOpRvTJw4kezt7UV3pweAvL29qW7dulSxYkWhw8lA/V3z8/Mja2trocPRUD/E79SpExUuXFjocL6xZcsWUqlU1LNnT96OKbo7l1OnTtHFixfp8+fPosvuixcvptjYWJoyZYrQoWQAgPr160clSpQgT09PocP5xooVKygqKooCAwOFDiWDxMREmjRpEt25c0d037WPHz9SYGAgPXr0SHSx3b59m/bt2yfKO+QVK1bQ58+fadKkSUKHksGpU6fo6tWrdPLkSdG1WVpaGvn4+NDRo0d5jU1UySU1NZXc3d1p06ZNZGRkJHQ4Gbx48YJGjx5Nly9fFt2DuNu3b9PGjRvp3bt3ovvixsTE0ODBg+nChQskk8mEDkcDAHXs2JGaNGlCxYsXFzqcDABQ06ZNqUePHlSkSBGhw8mA4zhq3LgxzZ49m8zNzYUOJ4P4+HgaPHgwXbx4UVR9VD2qsHHjRlIoFEKHkwEA6tOnD5UvX57q16/P67FFk1wAUPfu3als2bLUsWNHocPJID09nZo0aUJDhw7N9Gp/XeE4jlxcXGjmzJlkY2MjdDgZqIcRO3XqJLoJBuHh4XT06FGKiYkRXUJeuXIlPXnyJNtrILQFAI0ePZrMzc1FN80dALVp04ZcXV2pSpUqQoejoR5VKF68OHXq1EnocL5x8eJF2rJli1YuTEWTXI4dO0Z79uwR3UM4ADRw4EAyNjamGTNmiCo2IqI///yTTE1NRTeXn4ho9erVdP/+fQoLCxNVu6WlpVGzZs1o8eLFZGJiInQ4GTx69IgGDRpE58+f18oiuZy4fv06BQUF0fPnz0X1eRIRHT16lM6dOye6i4UrV66IelShefPmtHLlSq08nxJFcomJiaG2bdvS1q1bycLCQuhwMtiyZQvt2rWLIiMjRXWrTfTlh2jWrFn05MkT0X1xX79+TQMHDqSwsDBR/UgCIB8fHypatGjO6iZpQWJiIjVo0IDGjx9P1apVEzqcDJKSksjFxYXmz59PDg4OQoeTQWJiInl4eNC2bdtENZyenJxMTZs2pWXLloluVCE9PZ1cXFyoZcuW1KNHD62cQ/Dkoh7WadOmDXl4eAgdTgZ37tyhfv36UUhIiOhmh6lUKnJ2diZ/f38qVKiQ0OFkkJ6eTg0aNKDBgwdTjRo1hA4ng927d9OuXbtENyVapVKRm5sblS1bliZPniyq2NQzOKtWrUqDBg0SOpwM1MNhDRo0oDZt2ggdjgYAatu2LVWtWjVbRW21ieM48vb2JpVKRZs2bdLad03Q5AKARowYQdHR0bRhwwZRdaj4+Hhq0qQJBQQEiHKx5KBBg8jCwoImTpwodDgZAKDevXuTsbExzZkzR1Sf6Z07d8jb25sOHjxIVlZWQoejoR6Xf/36Nd24cUNUbQaAJkyYQHfv3hXdzDUANHfuXIqIiKAXL16IJjYANGfOHLpy5Yqo4iL633Oz8+fP082bN7U6qiBYcgFAGzdupJUrV1JkZKSohk44jiN3d3eqUaMG+fr6iurLQfSlPtf69evp2bNnoooNAM2bN48OHDhADx8+FNUw4qtXrzR3emJaNwKA/P396eDBg3Tz5k1RDesAoE2bNtG8efPo1q1bpFQqhQ5JAwAFBweTn58fXblyRTSxAaCQkBD6888/KTw8XFRrzgBQUFAQrVmzhm7cuEGWlpZaPZ9gyeXs2bPUp08fOnbsmKjGcNVXas+fPxfl+ocbN25Qly5daN++fZQ3b16hw9EAQJs3b6YJEybQhQsXRDXG/OLFC6pXrx55enrS+PHjRfOZqjv7ggUL6MqVK6L7PA8fPkx9+vShkJAQcnR0FDokDQC0c+dO6tmzJ23fvl2re65k1aVLl6hdu3a0ZcsWUcUFgPbs2UN//vknnT9/XidD6YJcWkZERFDLli1pxYoV1KBBAyFC+C4AtHfvXlq0aBGdOHFCdHPS79+/T40aNaKpU6dS8+bNhQ5HAwBt27aN+vXrR8HBwaJZtQ2Abty4QXXq1CE3NzdasGCBqBLLypUraeLEiXT8+HFRrbUBQEePHqX27dvTpk2byNnZWeiQNNLT02nGjBnUr18/2rp1K7Vu3VrokIjoS5uFhYVR06ZNafbs2dS+fXuhQ8rgwoUL5O3tTbt376bKlSvr5Jw6TS4A6Nq1a9SwYUOaPHky9ejRQ1SdPSwsjHr06EE7d+4UVYkGAHT58mWqV68eDR48mEaOHCmqdlu1ahX17duXdu/eLZohJ47jaNu2bdSoUSPy8fGhRYsWiWaYDgAtW7aMfH196ciRI6JaA6S+wGrXrh2tWrWKOnToIJrvWmxsLHXu3JlWr15Nx44do9atW4siNvWdVMuWLSkwMJD++OMPUcSldvv2bWrevDktWLCAWrZsqbPz6mxYDAAdP36c2rdvT35+fqL6geQ4jg4ePEg9e/ak+fPnU7NmzYQOSSM9PZ3WrVtHo0ePpvHjx9Po0aNF024AaObMmTRjxgw6cOAANWzYUPDYAFBUVBT5+fnR/v37afny5aL6geQ4jmbNmkUzZsygw4cPi2qyCABasWIFjRw5kjZu3EgeHh6iabfnz5+Tu7s75c+fn86fP0/58uUTOiQiIkpISKCAgABauXIlrV27ltq3by+aNiP6MomlQYMGNHbsWOrbt69OY9NJcklPT6clS5bQhAkTaO7cueTj4yP4BwCAYmNjKSIigtauXUsnTpygJUuWkKenp+CxEX35EYqIiKBJkybRzZs3aePGjeTm5iaK2Ii+TJ0dN24cbdiwgU6cOEGVK1cWPLbU1FTas2cPTZgwgYoXL05hYWHk5OQkeFxqSUlJ5OvrS8HBwXTixAlRrSRPS0ujCRMm0KpVq+jgwYPk7OwsinYDQLdu3aIWLVpQmzZtKCgoiAwNDYUOiziOo9OnT9OoUaNIKpXS6dOnqVy5cqJoM6L/jcS0bduWhgwZQn5+fjqPTavJBQA9fPiQxowZQ9euXaPg4GDBr245jqPw8HDasmULnTp1ilJTU6lJkyZ08uRJKlasmOBfjrS0NLpy5QotWbKETpw4Qe3bt6cVK1ZQ/vz5BY9NLS4ujvr160eXL1+msLAwwZ8XqFQqOnfuHE2dOpUePnxIfn5+1L17d9HMQARAt2/fpgEDBlBKSgqdP39eNDXDANCrV6+of//+9OjRIwoLC6PSpUsLHRYR/W+0o1OnTjRs2DCaOHGi4EObHMfRjRs3aObMmXTq1Cn6448/yNfXV1SVHlJSUmjZsmXk7+9PAQEBNGTIEEF+O3hPLgAoPT2dIiMjad26dbRx40Zq1qwZXbp0SdBy6wDo/v37FBgYSKdOnaLmzZvT9OnTqVq1amRrayvoDzcASkxM1Nw93b59m1q3bk3Hjh2jMmXKiCKpACCO4+jixYs0ePBgsrS0pAsXLgg2wwkApaWl0cWLFykoKIguX75MPXr0oI0bN1LevHkFbzN1ez179oxWr15Nq1atos6dO9PUqVPJ1NRU0NjU8UVHR9POnTtpypQpVK9ePTp//rwoytQDoPj4eFq8eDEFBgbSrFmzqE+fPoJ9purvmvqi7+TJk9SqVSs6c+aMKC5I1TEmJCRQWFgYBQYG0tu3b2n37t3UuHFjweLjLblERETQ8+fP6caNG3T27Fm6f/8+Va1albZt20b169cX9IpDfaeya9cuatKkCYWEhFCJEiVE8aUIDw+n0NBQ2rVrF8XGxlKXLl1oyZIlVKRIEcHji4iIoKSkJIqLi6NHjx7RsWPH6NKlS9S3b18aP368YGsyrl27RhcuXKDdu3fTo0ePqH379jRr1ixydHQURZu9ffuW7t69S2FhYRQeHk5ly5alXbt2Ub169QSNLyIigj5+/EjPnj2jK1eu0OnTp0mhUNCcOXOoQ4cOglatjoiIoNTUVIqKiqJr167Rnj17CAAdPHiQ6tatK1i7hYeH0/nz52nPnj306NEjatWqFR09epTKli0riu/ax48fNb+7YWFhFBsbS127dqUhQ4YIvhyAt+Ti6elJ5ubmVLx4cWrTpg25uLhQ8eLFNV9YAHydKsu8vb2pWrVqtG3bNqpZs6bmSyFkTGqenp5UqlQpGjRoELm5uWUoMyN0fJ07dyaZTEYKhYLy5ctHderUocDAQCpRooSg8Xl6elLhwoWpdevW1K5duwxz9oVuMy8vLzIxMaFChQpRjRo1yM/PjypUqEAGBgaCx+fp6UlKpZLy5MlD5cqVo1mzZpGzs7PmTkrI2Dp37kxSqZSMjY3J0dGRRowYQW3btiUzMzNBY/P09KSiRYtS27ZtqU2bNlSoUCHR/H54eXmRUqkkW1tbKl26NI0dO5acnZ01owlCx8dLcrG1taURI0aQubk5KZVKkkgkdO/ePbp37x4fhyciokqVKmU7tqFDh5KdnR29f/+eDhw4wFtMatld16Fut3z58pFMJqOwsDCeI8tZbMOHDye5XE6GhoZkZGREBgYGdOfOHbpz545gsanbzNbWluRyOV27do2uXbvGSzw5ievr2ExMTEipVJJMJqPnz5/T8+fPRRGbr68vGRsbk5GREcnlckpLS6PQ0FDeYstJHx0+fDgZGBiQkZERKZVKkkqldPz4cd5iy+53zdfXV/Ndi4iIoIiICN5iIspZm40YMSLD50lEdP78ed5iy+l6NQl4SG/p6ek5PcQvSSSSbN22s9hyV2xijYuIxZbbYhNrXETijk3zej6SS26hUqkIgGYIQ0y+/piEHuv9GgACQBKJRFRxEbHYciOx9gOxUrcXAJ0/99b5U/ZLly5RoUKFyMrKinbv3q3r0//U5s2bycTEhIKDg4UO5RsREREklUp5vy3PqeHDh5OJiQndv39f6FA00tPT6a+//iIDAwNq1KgRvX//XuiQvrF27VoyMTGh8uXL082bN4UOJ4OePXuSubk5PX36VOhQviHGfpCamkpVq1alMmXKUFJSktDhaHz8+JE8PDxIKpXS4MGDSaVS6TYACODTp09o3749iAh9+/ZFQkKCEGF8g+M4dOjQAfb29nj79q3Q4WQQHh4OIkJ4eLjQoWgcPXoURIT58+cLHYrGkydPUKdOHchkMgQEBCA9PV3okH7o1q1bKF++PBQKBRYtWgSO44QOCQAQExODQoUKwdnZGSqVSuhwMhBjP5gwYQIMDAxw9epVoUPROHnyJBwcHGBtbY19+/YJEoMgyQX48kO+cuVKKJVKlCpVCtevXxcqlAzev38PBwcHtG3bVjSdHRBfp/r06RMcHBzg4uIimh+gbdu2wcLCAoULF8a5c+eEDidTkpKSMHjwYBAR3N3d8eHDB6FDAvDlx0kikWD27NlCh5KB2PrBhQsXIJVKERAQIHQoAIDU1FT8+eefkEgkaNSoEV6+fClYLIIlF7U7d+6gYsWKMDQ0RFBQkCh+0A8ePAhDQ0OsXr1a6FA0xNapunTpAgsLCzx//lzoUBAXF4devXqBiODp6Yno6GihQ8qy/fv3w8bGBnZ2dggNDRU6HACAr68vDA0NcfPmTaFD0RBTP4iPj0exYsVQs2ZNpKWlCR0OHj16hJo1a0Imk2H69OmC37ULnlyAL1dvw4cPBxHB1dUV7969Ezok9O/fH9bW1nj8+LHQoQAQV6favn07iAibNm0SOhSEh4ejRIkSMDExwdq1a0VxcZJdr169gouLCyQSCcaNG4fU1FRB40lKSkLZsmVRsWJFpKSkCBqLmpj6wcCBA6FUKnH//n2hQ8HmzZthZmaGokWL4uLFi0KHA0AkyUXtn3/+QZ48eZA/f34cPXpU0Fg+f/6MEiVKoGHDhoJfAQDi6VSvXr2ClZUVOnbsKOgPuUqlwpw5cyCXy1GlShVRdHA+qFQqBAYGwsDAADVq1MDDhw8FjefatWuQy+UYP368oHGoiaUfHD58GESExYsXCxrH58+f0b17dxARvL29ERsbK2g8XxNVcgGAN2/eoGnTpiAijBo1StArprCwMCgUCsyaNUuwGNTE0Kk4jkPz5s1hZ2eHqKgoweJ48+YNmjdvDiLCyJEjRXNVzadLly7ByckJZmZm2Lhxo6CxTJ8+HVKpVBTPscTQD6KiomBnZ4fmzZsLeoF1+fJlFCtWDKamptiwYYNgcfyI6JIL8OXqbdasWZDL5ahatSoePHggWCx//vknTExMcOPGDcFiAMTRqZYsWQIiwuHDhwWL4dChQ8ibNy/y5cuHI0eOCBaHLnz+/BndunUT/Ko0PT0dderUgaOjI+Li4gSJQU3ofsBxHDp27Ahra2u8evVKkBhUKhX+/vtvGBgYoHr16oiMjBQkjl8RZXJRu3r1KooXLy7oeHpycjKqVq2KypUrIykpSefnVxO6U92/fx9KpRIDBw4U5PzJycma53ItW7YUxXM5Xdm0aRPMzMzg6Ogo2Hj6w4cPYWJigr59+wpyfjWh+8GmTZtARNi+fbsg53/9+jWaNGkCiUSCsWPHivquXdTJBcg4E8jLywsxMTE6j+HmzZswNTXF2LFjdX5uNSE7VVpaGmrUqIHixYsjPj5e5+e/e/cuKlWqJKoZhbr26NEj1KhRAwYGBoLNBFq+fDmICAcOHND5udWE7AfPnz+HhYUFunTpovNzA8CBAwdga2srqhmFPyP65KK2detWmJubo0iRIjh//rzOzz9nzhwoFAqcPn1a5+cGhO1UAQEBkEqluHDhgk7Pq14LZWxsjJIlSyIiIkKn5xeb1NRUjB8/XrA1DBzHwc3NDfny5cP79+91em41ofqBSqWCi4sLHBwc8OnTJ52eOykpCUOGDAERoVWrVoK1fVbpTXIBvqy+rl27NmQyGaZMmaLTq7f09HQ0btwYxYoVE2TsW6hOdfXqVRgYGGDChAk6Pe+nT5/QoUMHTRUHIe6YxOr48eOwt7eHjY0NgoODdXruN2/ewMbGBh4eHoLcQQrVD+bPnw8iwrFjx3R63tu3b6NChQpQKBRYuHChXt2161VyAb4M0UycOBFSqRTOzs548eKFzs795MkTWFtbCzLuLESnSkxMRKlSpVClShWdrrk4e/YsChUqBEtLS+zcuVNn59UnUVFRaNOmDYgIgwYNQmJios7OvWvXLhAR1q9fr7NzqgnRD+7cuQMjIyMMGTJEZ+fkOA7Lli2DUqlEmTJlBJ9QlB16l1zUTp8+jQIFCsDKygp79uzR2XnXrVsHQ0ND7N+/X2fnBITpVMOGDYORkRFu376tk/OlpaXB398fUqkU9evXx7Nnz3RyXn3FcRwWL14MIyMjlCtXTqcr6bt37w5zc3Odf0a67gepqamoWrUqSpUqpbMaiB8/foSHhweICAMGDBBN7cWs0tvkAmT8EPr376+TD4HjOLRv3x4ODg46nbGk604VGhoKIkJQUJBOzvf06VPUrVsXUqkUkydPFkU5DX1x8+ZNlC1bFkZGRli8eLFOhk7UxS0bNmyo09pyuu4Hf/31FwwMDHDlyhWdnO/UqVOCXDRrg14nF+DLj/3y5ct1evuoLm7Zrl07nY2B6rJTRUdHo0CBAjorSrljxw5YWFigUKFCCAsL0/r5cqPExEQMGjQIRIQ2bdroZJHriRMnQESYM2eO1s+lpst+cPHiRchkMkyePFnr50pLS8OECRMgkUh0PtyvLXqfXNS+fvC1YMECrf/oHzhwAIaGhlizZo1Wz6Omy07l7e2tk6KU8fHx8PHxARGhU6dOellwUmyCg4NhY2MDe3t7nDhxQuvnGzFiBBQKBW7duqX1cwG66wfx8fEoXrw4atSoofW76MePH2smKk2dOlUU5ab4kGuSC/Blyt7QoUN1NmWvX79+OituqatOtWPHDhCR1kuOXLt2DSVLloSxsTFWr16tV7NgxO7ly5do1KgRJBIJxo8fr9XJGElJSShTpgwqVaqkkwV9uuoHf/zxh06KUm7ZskXQJRbalKuSi9rBgwc1i420OXUwNjYWxYsXR6NGjbR+taGLTvX69WtYW1ujQ4cOWvuxV6lUmDt3LgwNDVG5cmXcu3dPK+f53aWnp2PGjBkwMDBAzZo18ejRI62d69q1azAwMMCff/6ptXOo6aIfHDlyBESERYsWae0ccXFx6NmzJ4gInTt3FmRxuLblyuQCZCyTMGbMGK1dVZ09exYKhULrmyppu1NxHIeWLVsif/78Whuvf/v2LVq0aAEigq+vL5KTk7VyHuZ/Ll26BEdHR5iZmWl1i4SpU6fqpLiltvvBx48fYWdnh2bNmmntAuvrslbr1q3LtXftuTa5AF+ukmfOnAkDAwNUq1ZNawXexo8fD1NTU/z7779aOT6g/U61dOlSEBEOHTqkleMfOXIE+fLlQ968eQUtfPk7io2NRdeuXUFE6NatGz5//sz7OdLS0lC7dm04OTlptbiltvuBp6cnrKystFL9QEwFeXUhVycXtStXrmhKU69fv573KwV1ccsqVapo7Wpcm53qwYMHMDY2xoABA3g/dnJyMnx9fUFEaNGiBd6+fcv7OZjM2bBhA0xNTeHk5ITLly/zfvzIyEiYmJigf//+vB9bTZv9YMuWLSAibNu2jfdjv379WrOVyOjRo0VdcJIvv0VyAb6UL+/RoweICF26dOG9hMu///4LU1NTjBs3jtfjqmmrU6WlpaFmzZooVqwY7yVW7t27h8qVK0Mul2Pu3Lk6XQ/BfN/Dhw81BTADAwN5/0yWLVsGIsLBgwd5Pa6atvrBixcvYGlpic6dO/N6XEBcmyDq0m+TXNTUszOKFi3KeyHG2bNnQ6FQ4MyZM7weF9Bep5oyZQrvRSk5jsPq1as1BSevXbvG27GZnEtNTcW4ceMgkUjg4uLC674kHMfB1dUV+fLlw4cPH3g7rpo2+oFKpUKTJk14L0qZlJSEYcOGgYjg5uamNwUn+fLbJRfgy7zyWrVqQSaTYdq0abzN9FIXtyxevDjvd0ba6FTqopR+fn68HTM6OhqdOnUCEcHHx4cVnBSx0NBQ2NnZwcbGhtdyRq9fv4aNjQ3at2/P+xC0NvrBggULQES83lXcuXMHFStWhKGhIebPn59rH9r/zG+ZXIAvV29+fn6QSCRo2LAhbw/w1MUt+/Xrx8vx1PjuVImJiShdujQqV67M2/hvWFgYChcuDAsLC8E2U2Ky5sOHD3B3dwcRYfDgwbxtiLdz504QEe/b7/LdD+7evQsjIyMMHjyYl+NxHIcVK1ZAqVSidOnSuH79Oi/H1Ue/bXJRO3nyJBwcHGBtbY19+/bxcsw1a9bwXtyS7041fPhwKBQKXopSpqenY/LkyZBKpahbty6ePn3KQ4SMrnAch0WLFkGhUKB8+fK8FSrt2rUr78Ut+ewHqampqFatGkqWLMlLXcJPnz6hffv2ICL069dPbwtO8uW3Ty7Al/Llbdu2BRFh4MCBOS5fznEcPDw84ODgwNs4K5+d6vjx4yAizJs3L8fHevbsGerXrw+pVAp/f39WcFKP/fvvv5oCmEuXLs3xUE50dDQKFiyIRo0a8TZxgM9+4O/vD5lMxsvMuTNnzqBgwYKwsrLC7t27c3y83IAll//HcRyWLl0KIyMjlC1bNsdrVtTFLfkad+arU6k7fOPGjXPc4Xfu3AlLS0sULFhQK5MYGN1LTEzEwIEDQURo27ZtjhfU8nkhA/DXDy5dugSZTIZJkybl6Dhf7y/VoEEDrdfj0ycsufzHrVu3UL58eSgUCixatChHiWH//v0wNDTE2rVrcxwXX52Kj6GK+Ph49O3bF0SEDh066HzbV0b79u7dC2trazg4OODkyZM5OpZ6CJaP4pZ89IOEhASUKFEC1atXz1HdtSdPnqBOnTqC7IyrD1hy+Y6kpCQMHjwYRAR3d/ccTans27cvrK2t8eTJkxzFxEen4uMha0REBEqVKgVjY2OsXLnyt5wF87t48eIFGjZsCIlEAj8/v2z/EPM5eYSPfjBo0CAolcoc1bXbtm0bLCwsULhwYa2XvNFXLLn8xP79+2FjYwM7OzuEhoZm6xjq4paNGzfO0ZVNTjuVuihldofpOI7DvHnzYGhoiEqVKuHu3bvZioPRL+np6Zg2bRpkMhlq1aqV7Qrg4eHhvEx7z2k/CAkJARFh4cKF2Xp9XFwcevXqBSKCp6cn2ybiJ1hy+YVXr17BxcUFEokE48aNy9bV25kzZ6BQKHK0qVJOOpW6KGV2F7a9e/cOrq6uICIMHz6cFZz8DV24cAFFixaFubk5tmzZkq1jqBfs5qS0fE76wcePH2Fvb4+mTZtm63ljeHg4SpQoARMTE6xdu5bdtf8CSy6ZoFKpEBgYCAMDA1SvXh0PHz7M8jHGjh2bo+KWOelUOSnJERISgnz58iFPnjxaK2rJ6IeYmBh06dIFRIQePXpkuQBmWloaatWqlaNSQznpB15eXrC0tMzymjaVSoXZs2dDLpejSpUqWt/jJbdgySULLl26BCcnJ5iammb5uUVycjKqVKmCqlWrZuvKP7udKjIyEsbGxlkuJpiSkoKRI0eCiNCsWTO8efMmS69ncieO47B+/XqYmpqiWLFiWd5bPqdFUrPbD7Zu3QoiwtatW7P0ujdv3qBZs2YgIowcOfK3KDjJF5Zcsujz58/o3r07iAje3t5ZKvNy48YNmJiYZGtTpex0quyWQb9//z6qVKkCuVyOOXPmsIKTzDciIyNRrVo1GBgYYObMmVn6juRke4fs9IOXL1/C0tISXl5eWTrXoUOHkDdvXuTLlw8hISFZDfW3x5JLNm3evBlmZmZwdHTExYsXM/26WbNmQaFQ4OzZs1k6X3Y6lXoDp8yOcXMch7Vr18LExAQlSpTQ+layjH5LSUnBmDFjQERo2rQpXr9+nanXfb0xXVafAWa1H6hUKjRt2hT29vb4+PFjpl6TnJyM4cOHg4jg6uqKd+/eZSlG5guWXHLg0aNHmvLl06dPz9RssPT0dDRq1AglSpTI0ph1VjuVenZOZu+SoqOj4eXlBSJCr169tLrhE5O7HDt2DPnz54etrW2mn+tld0vtrPaDhQsXgogyfedx9+5dVKpUCYaGhggKCmIP7XOAJZccSk1Nxfjx4yGRSNCoUaNMPSx8/PgxrK2ts/QcJCudKikpCWXKlMn0uoJz586hcOHCMDc318pGSUzu9/79e7i5uYGIMGTIkEwVwNyxYweICBs3bsz0ebLSD+7duwelUolBgwb98m85jsPKlSs120RERERkOibm+1hy4cnx48dhb28PGxsbBAcH//LvV69eDUNDQxw4cCBTx89KpxoxYkSmVkSnp6cjICAAMpkMderUyfFCT+b3xnEcFixYAIVCgQoVKuDOnTu/fI23tzcsLCwyXTYls/0gNTUV1atXR4kSJX5ZQPLTp0/o0KEDiAh9+/Zl20TwhCUXHkVFRaFNmzYgIvzxxx8/LYDJcRzatWuX6eKWme1UJ06cABH9ck3N8+fP0aBBA0ilUvz111+s4CTDmxs3bqB06dJQKpVYvnz5T4eWoqOjUaBAgUzXustsP5g0aRJkMhkuXbr00787e/YsChUqBEtLS+zcufOX52cyjyUXnnEch8WLF8PIyAjlypXDzZs3f/i37969g729fabGnTPTqWJiYjJVhXb37t2wsrJCgQIFcPr06V+/KYbJooSEBPTv3x9EBA8Pj58+TA8NDQURISgo6JfHzUw/uHz5MmQyGfz9/X/4N2lpafD394dUKkX9+vV53RaA+YIlFy25efMmypUrByMjIyxevPiHySM4OBiGhoZYv379T4+XmU7VvXv3nxalTEhIQL9+/TLV4RmGD19fyJw6deqHfzds2DAYGRn9ci+ZX/WDhIQElCxZEtWqVfthNY2nT5+ibt26kEqlmDx5Mrtr1xKWXLQoMTERgwYNAhGhTZs2Pyxf3qdPH9jY2Px0k61fdapdu3aBiH6YpK5fv64ZqlixYgWbBcPozIsXL+Ds7AypVIqJEyd+98dcXdyySpUqP52E8qt+MHjwYBgZGf2w9t2OHTtgYWGBQoUKISwsLHtviMkUllx0IDg4GDY2NrC3t8eJEye++f9jY2NRrFgxuLi4/HA68886lXrPcg8Pj2+SBsdxmD9/PhQKBSpWrJiph6wMw7f09HRMmTIFMpkMtWvX/u7kkatXr8LAwAATJkz44XF+1g+OHj0KIsKCBQu++f/i4+Ph4+MDIkKnTp1YwUkdYMlFR16+fIlGjRpBIpFg/Pjx39yynz59GgqFAnPnzv3u63/UqTiOg6ur63eLUn49PXTo0KG87Y/OMNl1/vx5FClSBObm5t8txRIQEACpVIoLFy589/U/6gefPn2Cg4MDmjRp8s3zxmvXrqFkyZIwNjbG6tWr2V27jrDkokPp6emYMWMGDAwMULNmTTx69CjD/z9mzBiYmpp+dxLAjzrV8uXLv1uU8ujRo8ifPz/y5MmTrYKVDKMtMTExmgW7PXv2zLBgNy0tDTVr1vxhccsf9YPOnTvD0tISL1680Pw3lUqFuXPnwtDQEJUrV87R/i1M1rHkIoBLly7B0dERZmZm2LRpk+a/JyUloXLlyqhWrdo3xS2/16kePnwIExMT9O3bV/PfUlJSMHr06CyX5GAYXeI4DuvWrYOJiQmKFy+Oq1evav6/+/fvQ6lUYuDAgd+87nv9YNu2bSAibN68WfPf3r59ixYtWoCI4Ovry7aJEABLLgKJjY1F165dQUTo1q2bphTM9evXYWJikmFTJY7jNNM1Q0NDwXEc0tPTUadOHTg6Omqu/B48eIBq1apBLpdj1qxZrOAkI3r3799H1apVv/nOLlmyBESEw4cPa/72e/3g5cuXsLKygqenp2a468iRI8ibNy/y5s2b4fWMbrHkIrCNGzfC1NQUTk5OuHz5MgBg5syZMDIywuHDhxEUFAQnJycQkeafk5MT3NzcIJVKce7cuW+uArNaBp1hhPT13bZ6eweO49CiRQvY2dnh0aNH3+0Hjo6OKFmyJOzs7PDx40ckJyfD19cXRIQWLVrg7du3Qr+13xpLLiLw8OFDTQHMwMBApKamokKFCpBIJCAizf/+959cLsfu3bvRuXPn745fM4w++fo54T///INXr17BzMwMMpnsp/1AoVBg5cqVqFy5MuRyOebOncvu2kWAJReRSE1Nxbhx4yCRSFCpUqUfdqTv/TM2Ns7yJkgMI0Zfb6ndtm3bTPUD9d8UKFAA165dE/otMP9PAgDEiEZwcDC1a9eOsvKxKJVKev36NVlaWmovMIbREQD0999/0/jx47P0OmNjY3r16hXrByIhFToAJqOnT59mKbEQESUnJ9OGDRu0FBHD6JZEIiGlUpnl1yUlJbF+ICLszkVEAFDx4sXp8ePHWUowEomEHB0dKTIykiQSiRYjZBjtY/0gd2DJRUSioqIoT548OXq9jY0NjxExjO6xfpA7sGExEYmPj8/R6+Pi4niKhGGEw/pB7sCSi4iYmprm6PVmZmY8RcIwwmH9IHdgyUVEbGxsyMnJKcvjxRKJhJycnMja2lpLkTGM7rB+kDuw5CIiEomEhgwZkq3XDh06lD3EZHIF1g9yB/ZAX2RiYmKoQIEClJSURBzH/fLvpVIpKZVKevnyJZvfz+QarB/oP3bnIjKWlpa0e/dukkgkJJX+/OORSqUkkUhoz549rEMxuQrrB/qPJRcRat68Of3zzz+kVCpJIpF8c5uv/m9KpZIOHTpEzZo1EyhShtEe1g/0G0suItW8eXN6+fIlBQUFkaOjY4b/z9HRkYKCgujVq1esQzG5GusH+os9c9EDAOjTp08UFxdHZmZmZG1tzR5aMr8d1g/0C0suDMMwDO/YsBjDMAzDO5ZcGIZhGN6x5MIwDMPwjiUXhmEYhncsuTAMwzC8Y8mFYRiG4R1LLgzDMAzvWHJhGIZheMeSC8MwDMM7llwYhmEY3rHkwjAMw/COJReGYRiGdyy5MAzDMLxjyYVhGIbh3f8BfRYRiA58YRAAAAAASUVORK5CYII=\n",
|
|
"text/plain": [
|
|
"<Figure size 500x400 with 16 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"# plot KAN at initialization\n",
|
|
"model(dataset['train_input']);\n",
|
|
"model.plot(beta=100)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "ddf67e30",
|
|
"metadata": {},
|
|
"source": [
|
|
"Train KAN with sparsity regularization"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 4,
|
|
"id": "97111d75",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"train loss: 1.57e-01 | test loss: 1.31e-01 | reg: 2.05e+01 : 100%|██| 20/20 [00:18<00:00, 1.06it/s]\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# train the model\n",
|
|
"model.fit(dataset, opt=\"LBFGS\", steps=20, lamb=0.01, lamb_entropy=10.);"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "2f30c3ab",
|
|
"metadata": {},
|
|
"source": [
|
|
"Plot trained KAN"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 5,
|
|
"id": "3f95fcdd",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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\n",
|
|
"text/plain": [
|
|
"<Figure size 500x400 with 16 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"model.plot()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "61d537b7",
|
|
"metadata": {},
|
|
"source": [
|
|
"Prune KAN and replot (keep the original shape)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 6,
|
|
"id": "1269a698",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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\n",
|
|
"text/plain": [
|
|
"<Figure size 500x400 with 16 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"model.prune()\n",
|
|
"model.plot(mask=True)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "576856cf",
|
|
"metadata": {},
|
|
"source": [
|
|
"Prune KAN and replot (get a smaller shape)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 7,
|
|
"id": "7fe6fb12",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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W+uPAP5Fh0gIgenTp2PJkiWqrKqqCps3bx7UzSKlRFNTE9544w01qBgTE4NnnnmGg4rkd4QQmDlzpuZspObmZmzcuFGXdWK3IqVEX18fPvjgA3z++efq/rRYLFizZg1iY2P5MDcCGC7DEBwcjGeeeQYREREABlovr7/+OlpaWr73tS6XC6+99ppmrOX+++/nPmLktzxrt2JjY1XZV199hc8//3xYU/lvRUqJrq4ubNiwAVu2bFEbwprNZqxevZqr8UcQw2UYhBAoKChASUmJKqurq8P69etvebNIKbF371688847qiw5ORnPPfccWy3kt4QQSE9Px0MPPaQ5qfKdd97BoUOHdO0ek1LC6XTixIkT+J//+R/s3LlTBYvJZEJxcTHuvfde3m8jiOEyTEFBQfjZz36mtheXUuKNN9646VHIUkpcvHgRv/3tb9Hd3Q1g4MP+7LPPIjMzk09R5NdMJhPuvvtuzJ8/X5X19PTgL3/5Cw4cODDsE149XWCVlZX405/+hJdeegm1tbXqXjSbzSguLsaPfvQjNf5DI4PhMkxCCEyZMkUzw6ujowP/+Z//idbWVk3AeGar/OY3v8GJEydU+ezZs/HUU09xUJECQkhICJ588knk5OSositXruDVV1/F5s2b0dPTc1utGCklXC4XLl++jLKyMvzud7/D73//e+zbt08z3dliseDRRx/FmjVrEBYWxge5EcaJ3Towm8147rnnsHv3bhUaBw8exL//+7/jpZdeQnx8PICBjftefPFFfPLJJ+q1CQkJePHFF7lZHgUMIQRiY2Px/PPPY926daivrwcA2O12vPPOOzh48CCWL1+O6dOnIzIyEkIITRB4gsfhcKC9vR3V1dWoqKhAdXU1urq6rgsmz9KBH/3oR8jPz2dX2ChhuOgkMTERL774In7605/iypUrkFLik08+QVNTEx577DG4XC68++67OH78uPrwh4WF4Ze//CUKCgr4FEUBRQiBlJQU/PznP8drr72mVuxLKVFbW4tXXnkF8fHxyM7OxsSJExEfH4/g4GA4HA5YrVacP38eZ8+excWLF2G322/Y0jGZTBg3bhxKSkqwcOFChIeH8z4bRQwXnQghsHDhQvzHf/wHXnzxRfT29kJKiSNHjuDIkSPX/fuQkBC88MILmk0wiQKJEALJycn4xS9+oaYJe7qx3G43Wlpa0NLSok5mFUIMqrvMYrEgNzcXd911F6ZPn46IiAiGigEYLjoymUx48skn4XK58NJLL6Gzs/OG/y46Ohr/8i//gp/+9KccVKSAJoRAVFQUnn76acyePRsff/wxqqurb7ix5a2CJTQ0FOnp6SgsLERhYSHGjh0Ls9nMUDEQw0VnwcHB+Id/+Afk5eVh3bp1qKiogN1uBzCwh9HcuXPxT//0TygsLGTfLxEGAsZsNmPatGnIzc3F6dOnUV5ejpMnT6KlpQV9fX2aqf0mkwkhISGIjY1Feno68vPzkZ+fj9TUVISEhDBQvATDZQSYzWYsWLAAs2fPRn19Pc6ePQshBDIyMjBhwgTeAEQ3IIRASEgIcnNzkZubi76+Ply5cgXt7e3o6uqC0+lEcHAwIiMjERsbi+joaISFhcFkMvF+8kIMl6u43W5UVFTAZrPp+r6eD359fb2aGeOPXC7Xbe2tRt7J7XajpqbGa06MBAbuIU8Xcnd3t1oj5o3cbrdX12+0MFy+YzKZkJOTg507d2Lnzp1GV8dneZ4qyTd5VtEfPnwYhw8fNro6PstisahtoQKVkEafN+olPNtF8M8xfEFBQZwB56M8CxJ5Hwyf2WwO6PuA4UJERLoL3FglIqIRw3AhIiLdMVyIiEh3DBciItIdw8VHcDYb0cBaqu7u7mGf+0Ijj+HiI44fP47U1FQcP37c6KoQGebs2bP4yU9+grNnzxpdFfoeDBciItIdw4WIiHTHcCEiIt0xXIiISHcMFyIi0h3DhYiIdMdwISIi3TFciIhIdwwXIiLSHcOFiIh0x3AhIiLdMVyIiEh3DBciItIdw4WIiHTHcPEBUkp0dHTA7Xajo6ODZ7pQQJJSor29HT09PWhvb+d94OUYLl7MarXi5ZdfRnZ2Nu666y60tbXhrrvuQnZ2Nl5++WVYrVajq0g04q6+DwoLC/Hpp5+isLCQ94GXE5Lx75XKysqwevVq2Gw2ANA8pQkhAADh4eEoLS1FSUmJIXUkGmm8D3wXw8ULlZWVYcWKFZBSwu123/TfmUwmCCGwdetW3ljkd3gf+DaGi5exWq1IS0uD3W6/5Q3lYTKZYLFY0NTUhNjY2JGvINEo4H3g+zjm4mU2bNgAm802qBsKANxuN2w2G958880RrhnR6OF94PvYcvEiUkpkZ2ejvr7+tmbCCCGQkZGB2tpa1Q9N5Kt4H/gHhosXaW1tRWJi4rBeHx8fr2ONiEYf7wP/wG4xL9Ld3T2s13d1delUEyLj8D7wDwwXLxIZGTms10dFRelUEyLj8D7wDwwXLxIfH4/MzMzb7i8WQiAzMxNxcXEjVDOi0cP7wD8wXLyIEAJr164d0mtfeOEFDmKSX+B94B84oO9lOL+fiPeBP2DLxcvExsaitLQUQgiYTLf+v8ezMvnDDz/kDUV+hfeB72O4eKGSkhJs3boVFosFQojrmvmeMovFgm3btqG4uNigmhKNHN4Hvo3h4qVKSkrQ1NSEdevWISMjQ/OzjIwMrFu3DufPn+cNRX6N94Hv4piLD/CcY9HV1YWoqCjExcVx0JICDu8D38JwISIi3bFbjIiIdMdwISIi3TFciIhIdwwXIiLSHcOFiIh0x3AhIiLdMVyIiEh3DBciItIdw4WIiHTHcCEiIt0xXIiISHcMFyIi0h3DhYiIdMdwISIi3f0fY1YFLUICffcAAAAASUVORK5CYII=\n",
|
|
"text/plain": [
|
|
"<Figure size 500x400 with 4 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"model = model.prune()\n",
|
|
"model(dataset['train_input'])\n",
|
|
"model.plot()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "bd08ad99",
|
|
"metadata": {},
|
|
"source": [
|
|
"Continue training and replot"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 8,
|
|
"id": "18a2db11",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"train loss: 4.74e-03 | test loss: 4.80e-03 | reg: 2.98e+00 : 100%|██| 50/50 [00:07<00:00, 7.03it/s]\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"model.fit(dataset, opt=\"LBFGS\", steps=50);"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 9,
|
|
"id": "af27aba7",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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\n",
|
|
"text/plain": [
|
|
"<Figure size 500x400 with 4 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"model.plot()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "cf35d505",
|
|
"metadata": {},
|
|
"source": [
|
|
"Automatically or manually set activation functions to be symbolic"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 10,
|
|
"id": "b3c0642b",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"fixing (0,0,0) with sin, r2=0.999987252534279\n",
|
|
"fixing (0,1,0) with x^2, r2=0.9999996536741071\n",
|
|
"fixing (1,0,0) with exp, r2=0.9999988529417926\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"mode = \"auto\" # \"manual\"\n",
|
|
"\n",
|
|
"if mode == \"manual\":\n",
|
|
" # manual mode\n",
|
|
" model.fix_symbolic(0,0,0,'sin');\n",
|
|
" model.fix_symbolic(0,1,0,'x^2');\n",
|
|
" model.fix_symbolic(1,0,0,'exp');\n",
|
|
"elif mode == \"auto\":\n",
|
|
" # automatic mode\n",
|
|
" lib = ['x','x^2','x^3','x^4','exp','log','sqrt','tanh','sin','abs']\n",
|
|
" model.auto_symbolic(lib=lib)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "821ba616",
|
|
"metadata": {},
|
|
"source": [
|
|
"Continue training to almost machine precision"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 11,
|
|
"id": "c0800415",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"train loss: 2.02e-10 | test loss: 1.13e-10 | reg: 2.98e+00 : 100%|██| 50/50 [00:02<00:00, 22.59it/s]\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"model.fit(dataset, opt=\"LBFGS\", steps=50);"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "e39da499",
|
|
"metadata": {},
|
|
"source": [
|
|
"Obtain the symbolic formula"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 12,
|
|
"id": "bf44f7e0",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/latex": [
|
|
"$\\displaystyle 1.0 e^{1.0 x_{2}^{2} + 1.0 \\sin{\\left(3.14 x_{1} \\right)}}$"
|
|
],
|
|
"text/plain": [
|
|
"1.0*exp(1.0*x_2**2 + 1.0*sin(3.14*x_1))"
|
|
]
|
|
},
|
|
"execution_count": 12,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"model.symbolic_formula()[0][0]"
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "Python 3 (ipykernel)",
|
|
"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.9.7"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 5
|
|
}
|