Skip to content

Instantly share code, notes, and snippets.

@wheremyfoodat
Created December 27, 2025 14:42
Show Gist options
  • Select an option

  • Save wheremyfoodat/7b7e1a839fab17431dbf11f8a81e89ff to your computer and use it in GitHub Desktop.

Select an option

Save wheremyfoodat/7b7e1a839fab17431dbf11f8a81e89ff to your computer and use it in GitHub Desktop.
Sigmoid function approximations
Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 63,
"id": "1bd1d8dd",
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import torch\n",
"import torch.nn as nn\n",
"\n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "bcaf36e7",
"metadata": {},
"outputs": [],
"source": [
"def sigmoid_numpy(x):\n",
" return 1.0 / (1.0 + np.exp(-x))\n",
"\n",
"# Exponential-less, branchless sigmoid approximation (https://stackoverflow.com/a/10733861)\n",
"def fast_sigmoid_branchless(x):\n",
" return 0.5 * (x / (1 + np.abs(x)) + 1)\n",
"\n",
"# Neural network to find approximation formulae for the sigmoid function in a given number range\n",
"# Based on our branchless approximation, we look for solutions with the general form\n",
"# σ(x) = a * (b * x / (c + d * np.abs(x)) + e), where x belongs in [lower bound, upper bound]\n",
"# By piecing together multiple of these solutions for different boundaries, with some fixups (to guarantee monotony/continuity, etc) we can derive a \n",
"# very good, hardware-friendly sigmoid approximation\n",
"class SigmoidApproximator(nn.Module):\n",
" def __init__(self, lowerBound, upperBound):\n",
" assert lowerBound < upperBound\n",
" super(SigmoidApproximator, self).__init__()\n",
"\n",
" self.lowerBound = lowerBound\n",
" self.upperBound = upperBound\n",
" \n",
" self.a = nn.Parameter(torch.randn(1))\n",
" self.b = nn.Parameter(torch.randn(1))\n",
" self.c = nn.Parameter(torch.randn(1))\n",
" self.d = nn.Parameter(torch.randn(1))\n",
" self.e = nn.Parameter(torch.randn(1))\n",
"\n",
" self.lossFn = nn.MSELoss()\n",
" \n",
" def forward(self, x):\n",
" return self.a * (self.b * x / (self.c + self.d * torch.abs(x)) + self.e)\n",
" \n",
" def loss(self, y_pred, y_true):\n",
" # Apply penalty for any values outside [0, 1], the proper output range of the sigmoid function\n",
" penalty = 0.0\n",
" penaltyFactor = 10\n",
" \n",
" # Penalties if prediction is < 0 or > 1\n",
" penalty += torch.sum(torch.relu(-y_pred)) * penaltyFactor\n",
" penalty += torch.sum(torch.relu(y_pred - 1.0)) * penaltyFactor\n",
" \n",
" # Total loss = MSE loss + penalty\n",
" return self.lossFn(y_pred, y_true) + penalty\n",
" \n",
" def paramsToFloat(self):\n",
" # Convert parameters from tensors to floats and return them\n",
" params = [self.a, self.b, self.c, self.d, self.e]\n",
" return [param.data.float() for param in params]\n",
"\n",
"def getSigmoidApproximation(*, lowerBound, upperBound, N, epochs):\n",
" nn = SigmoidApproximator(lowerBound, upperBound)\n",
" nn.train()\n",
"\n",
" optimizer = torch.optim.Adam(nn.parameters(), lr = 0.001)\n",
"\n",
" # Generate N samples from lowerBound to upperBound\n",
" x = np.linspace(lowerBound, upperBound, N)\n",
" y_true = torch.Tensor(sigmoid_numpy(x))\n",
"\n",
" x = torch.Tensor(x)\n",
" \n",
" for epoch in range(0, epochs):\n",
" optimizer.zero_grad()\n",
" y_pred = nn(x)\n",
"\n",
" loss = nn.loss(y_pred, y_true)\n",
" loss.backward()\n",
" optimizer.step()\n",
"\n",
" return nn.paramsToFloat()\n",
"\n",
"def plotApproximation(lowerBound, upperBound, a, b, c, d, e): \n",
" # Plot full sigmoid function\n",
" x = np.linspace(-8, 8, 10000)\n",
" y = sigmoid_numpy(x)\n",
" plt.plot(x, y, color = \"blue\", label = \"Numpy sigmoid\")\n",
"\n",
" # Plot approximation for boundary\n",
" x = np.linspace(lowerBound, upperBound, 10000)\n",
" y = a * (b * x / (c + d * np.abs(x)) + e)\n",
" plt.plot(x, y, color = \"orange\", label = \"Approximation for given boundary\")\n",
"\n",
" plt.legend()\n",
" plt.show()\n",
" \n",
"def printParameters(lowerBound, upperBound, a, b, c, d, e):\n",
" print(f\"Estimated parameters for bound [{lowerBound}, {upperBound}]\")\n",
" print(f\" a: {a}\")\n",
" print(f\" b: {b}\")\n",
" print(f\" c: {c}\")\n",
" print(f\" d: {d}\")\n",
" print(f\" e: {e}\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "d1ce19d4",
"metadata": {},
"outputs": [],
"source": [
"def getAndGraphApproximator(*, lowerBound, upperBound, N = 1000, epochs = 100000):\n",
" (a, b, c, d, e) = getSigmoidApproximation(lowerBound = lowerBound, upperBound = upperBound, N = N, epochs = epochs)\n",
" printParameters(lowerBound, upperBound, a, b, c, d, e)\n",
" plotApproximation(lowerBound, upperBound, a, b, c, d, e)\n",
" \n",
" return (a, b, c, d, e)"
]
},
{
"cell_type": "markdown",
"id": "b37f90a6",
"metadata": {},
"source": [
"Approximator for $x \\in [0.0, 1.0]$"
]
},
{
"cell_type": "code",
"execution_count": 68,
"id": "d7b7c6df",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Estimated parameters for bound [0, 1]\n",
" a: tensor([1.0395])\n",
" b: tensor([0.2839])\n",
" c: tensor([1.1252])\n",
" d: tensor([0.1417])\n",
" e: tensor([0.4800])\n"
]
},
{
"data": {
"image/png": "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8oKFhQXatGmD6OhojddZuHAhHBwcYGlpiYCAADx9+lTj62fOnEHXrl1hZ2cHa2vrAq8crlAosHr1avTp0weVK1fG/PnzUa9ePXz11Vca2/39998wMjJSB1M5CSGFjhYtpCBSuTKwdKl0BV0GEdJpQgekpKQIACIlJSXf1548eSKuXLkinjx5IjWoVEJkpcuzqFRa7VdISIjw8vISQgixd+9eUadOHaHK8xx//PGHACA8PDzEgQMHxMWLF0WvXr1EnTp1RGZmphBCiPXr1wsTExPh5eUlTpw4Ic6ePStatWol2rRpo36e2bNni8qVK4tu3bqJc+fOiQsXLgiVSiVatGgh2rVrJ86ePStOnTolWrZsKTp27Kh+3MqVK4W1tbW4efOmiIuLEzY2NuKbb75Rf33YsGGiT58+6vsdO3YUlpaWYt68eeLatWti3rx5wsjISHTv3l2sWbNGXLt2TXz44YfC1tZWPHr0SAghRGZmppg1a5Y4ffq0uHHjhti8ebOwsLAQoaGhQggh0tLSxIABA8Qbb7whEhISREJCgsjIyBAxMTECgDh//rwQQojbt28LCwsLMWrUKBEVFSV27dol7OzsxOzZszXqs7KyEnPmzBHXrl0TGzduFAqFQhw4cKDAn09aWppYv369AKB+bSGE+Prrr4WVlZXYtm2buHr1qpgyZYowMTER165dE0IIdW116tQRP/30k7hx44aIi4vL9/w5OTmiYcOGomvXriIyMlIcO3ZMtGrVSgAQu3bt0niu3P2cOHGiaNeuncbzTJw4Ufj4+AghhFCpVKJt27aid+/e4syZM+LatWti4sSJwtbWVty7d0/9+1ClShXRv39/cenSJXH06FFRo0YNMWPGjAK/D0IU7fds586dwsTERKxcuVJER0eLxYsXC6VSKQ4dOlTgvgghxIMHDwQA8ccffwghnv3Oe3t7i8OHD4vLly+L9u3ba7xOaGioMDU1Fd999524evWqmDlzprC0tBTNmjVTb/P777+L77//Xly5ckVcuXJFBAQECAcHB5GamqreBoCwt7cXISEh4t9//xU3b94Un332mWjUqJHGvk+YMEF06NCh0O9NvvegMnL3rhB9+wohRRIhXn9diJs3y/QliUrsRZ/feelfGMlKF2IL5Fmy0rXarzZt2oglS5ZIZWdlCTs7OxEeHq7+eu4b8/bt29Vt9+7d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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"(tensor([1.0395]),\n",
" tensor([0.2839]),\n",
" tensor([1.1252]),\n",
" tensor([0.1417]),\n",
" tensor([0.4800]))"
]
},
"execution_count": 68,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lower, upper = 0, 1\n",
"\n",
"getAndGraphApproximator(lowerBound = lower, upperBound = upper)"
]
},
{
"cell_type": "markdown",
"id": "9d3a677e",
"metadata": {},
"source": [
"Approximator for $x \\in [1.0, 2.0]$"
]
},
{
"cell_type": "code",
"execution_count": 69,
"id": "a0e0d824",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Estimated parameters for bound [1, 2]\n",
" a: tensor([-0.3460])\n",
" b: tensor([-0.6023])\n",
" c: tensor([0.4117])\n",
" d: tensor([0.2342])\n",
" e: tensor([-1.1782])\n"
]
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"(tensor([-0.3460]),\n",
" tensor([-0.6023]),\n",
" tensor([0.4117]),\n",
" tensor([0.2342]),\n",
" tensor([-1.1782]))"
]
},
"execution_count": 69,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lower, upper = 1, 2\n",
"\n",
"getAndGraphApproximator(lowerBound = lower, upperBound = upper)"
]
},
{
"cell_type": "markdown",
"id": "406503b1",
"metadata": {},
"source": [
"Approximator for $x \\in [2.0, 4.0]$"
]
},
{
"cell_type": "code",
"execution_count": 67,
"id": "711fb1be",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Estimated parameters for bound [2, 4]\n",
" a: tensor([-1.4539])\n",
" b: tensor([0.8033])\n",
" c: tensor([-0.2292])\n",
" d: tensor([-0.7260])\n",
" e: tensor([0.3473])\n"
]
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"(tensor([-1.4539]),\n",
" tensor([0.8033]),\n",
" tensor([-0.2292]),\n",
" tensor([-0.7260]),\n",
" tensor([0.3473]))"
]
},
"execution_count": 67,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lower, upper = 2, 4\n",
"\n",
"getAndGraphApproximator(lowerBound = lower, upperBound = upper)"
]
},
{
"cell_type": "markdown",
"id": "13d129dc",
"metadata": {},
"source": [
"Approximator for $x \\in [4.0, 6]$"
]
},
{
"cell_type": "code",
"execution_count": 76,
"id": "730b5d11",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Estimated parameters for bound [4, 6]\n",
" a: tensor([0.2892])\n",
" b: tensor([0.8950])\n",
" c: tensor([0.0413])\n",
" d: tensor([0.2349])\n",
" e: tensor([-0.2479])\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAGdCAYAAADAAnMpAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABOSklEQVR4nO3deVhU1f8H8Pcw7AooIAiKiEuCWi6QiLummFq5JfjTVAwtMlfctdTUcinLHTMRdyVNTQtNzFxyyRXzq4iZKAoo4gK4sc35/XFjZASUYbvMzPv1PPeZO5c7M5/LMvPmnHPPVQghBIiIiIhkYiR3AURERGTYGEaIiIhIVgwjREREJCuGESIiIpIVwwgRERHJimGEiIiIZMUwQkRERLJiGCEiIiJZGctdQGGoVCokJCTAysoKCoVC7nKIiIioEIQQSEtLg7OzM4yMCm7/0IkwkpCQABcXF7nLICIioiK4efMmqlevXuDXdSKMWFlZAZAOxtraWuZqiIiIqDBSU1Ph4uKi/hwviE6EkZyuGWtra4YRIiIiHfOqIRYcwEpERESyYhghIiIiWTGMEBERkax0YsxIYQghkJWVhezsbLlLISIDoVQqYWxszCkHiIpJL8JIRkYGEhMT8eTJE7lLISIDY2lpCScnJ5iamspdCpHO0vkwolKpEBsbC6VSCWdnZ5iamvK/FCIqdUIIZGRk4O7du4iNjUXdunVfOqkTERVM58NIRkYGVCoVXFxcYGlpKXc5RGRALCwsYGJighs3biAjIwPm5uZyl0Skk/QmxvM/EiKSA997iIqPf0VEREQkK63DyOHDh/Huu+/C2dkZCoUCO3fufOVjDh06BE9PT5ibm6NWrVpYsWJFUWolHTdjxgw0btxY7jIAAO3atcPo0aNfuk/NmjWxcOHCMqmHiMiQaR1GHj9+jEaNGmHp0qWF2j82NhZdu3ZF69atce7cOUyZMgUjR47ETz/9pHWx+iQgIAAKhQJz587V2L5z5069HYA7btw4/P7773KXAQDYvn07Zs2aJXcZRESEIgxg7dKlC7p06VLo/VesWIEaNWqo/8P08PDA6dOn8c0336B3797avrxeMTc3x7x58/Dxxx+jcuXKcpdT6ipWrIiKFSvKXQYAwNbWVu4SiIjoP6V+Ns3x48fh6+ursa1z584IDQ1FZmYmTExM8jwmPT0d6enp6vupqamlXaYsOnbsiKtXr2LOnDmYP39+vvvMmDEDO3fuRFRUlHrbwoULsXDhQly/fh2A1Mry8OFDNGvWDIsWLUJ6ejrGjBmDqVOnYvLkyQgNDYWlpSVmzpyJDz/8EABw/fp1uLm5YfPmzVi8eDHOnj2L2rVrY9myZWjXrh2EEKhbty6CgoIwbtw49Wv/73//wxtvvIF//vkHtWvXzlPvwYMHMWHCBFy8eBEmJiZo0KABNm3aBFdX1zzHkpWVheDgYKxbtw5KpRJDhgzB7du3kZKSou7+a9euHV5//XUolUqsXbsWpqammDVrFvr374/hw4dj27ZtcHBwwNKlSzVC8qFDhzB+/HicP38etra2GDRoEGbPng1jY2P18zZu3FgdkpOSkhAYGIj9+/ejatWqmD17dlF+pESkL7LTgYyHQOZD6Tb7CeDYPs9uQgCZmZpLRkb+6zn3s7OfLyqV5m1B64X9ukolLUJIS+71F++/uB4QADRtWsbf5/+Uehi5ffs2HB0dNbY5OjoiKysLycnJcHJyyvOYOXPm4IsvvijS6wkByDX3maUloE0Pi1KpxFdffYV+/fph5MiRqF69epFf+8CBA6hevToOHz6Mo0ePIjAwEMePH0ebNm3w119/ITw8HEFBQejUqRNcXFzUjxs/fjwWLlyI+vXr49tvv8V7772H2NhY2NnZ4cMPP0RYWJhGGFm9ejVat26dbxDJyspCjx49MHToUGzevBkZGRk4efJkgd1O8+bNw8aNGxEWFgYPDw8sWrQIO3fuRPv2mn/wa9euxYQJE3Dy5EmEh4fjk08+wc6dO9GzZ09MmTIF3333HQYMGIC4uDhYWloiPj4eXbt2RUBAANatW4fLly9j6NChMDc3x4wZM/KtJSAgADdv3sSBAwdgamqKkSNHIikpqQg/CSIqD7KygLRUgUcP0/A05T6epdxHxqP7yHpyH6qn94GM+zDKug8TcR9muA9zxX1YKO/D0vg+LE0ewEz5TOP5nmZYoO5nT5CerhkwsrJkOsBS0KKFHocRIO+lg4UQ+W7PMXnyZAQHB6vvp6amanyAvsyTJ4BcPQGPHgEVKmj3mJ49e6Jx48aYPn06QkNDi/zatra2WLx4MYyMjFCvXj3Mnz8fT548wZQpUwBI39O5c+fi6NGj6Nu3r/pxw4cPV3eXhYSEYO/evQgNDcWECRMwePBgTJs2DSdPnkSzZs2QmZmJDRs24Ouvv863htTUVKSkpOCdd95RhxUPD48Ca16yZAkmT56Mnj17AgCWLl2KiIiIPPs1atQIn332mcZx2NvbY+jQoQCAadOmISQkBH///TeaN2+O5cuXw8XFBUuXLoVCoYC7uzsSEhIwceJETJs2Lc+pmFeuXMGePXtw4sQJeHt7AwBCQ0NfWjsRlZ20NCAxEbidqEJq8gM8e5iEjLQkZD9OgiIjCcZZd2EmkmCpTIK1aRIqW95FZcv7sK1wH5WN80kLJv8tr6BSKZDy1AYPH1fCwyeVcDsxC9mqV39sKpWAiQlgaird5rcYGUn75dwWtK7t13MWheL5bc6S+35+6/Xra/+zKSmlHkaqVq2K27dva2xLSkqCsbEx7Ozs8n2MmZkZzMzMSru0cmPevHno0KEDxo4dW+TnaNCggcaHrKOjIxo2bKi+r1QqYWdnl+e/fR8fH/W6sbExvLy8EB0dDQBwcnJCt27dsHr1ajRr1gy//PILnj17hj59+uRbg62tLQICAtC5c2d06tQJHTt2hJ+fX76tXykpKbhz5w6aNWumUaOnpydUKpXGvm+88Uae43j99dc1jhWA+tiio6Ph4+OjEXZbtmyJR48e4datW6hRo4bG80dHR6uPPYe7uzsqVaqU73ESUckQArh/H7j+7zPcvp6IlMQEZKbEA88SYJqVAEujBFgZ34FdhSQ4WCehlvVdGCuzAQtISyE9yzTDw6d2SEu3xaMMWzzNtsUzYYsMSEumwhaZSjuojG0hTCpDmNjCyLwSjM2tYGFjBAsLwMIC+OskYG6ef8jI2WZsLH24k3ZKPYz4+Phg9+7dGtv27dsHLy+vfMeLFJelpdRCIYeiTgDbpk0bdO7cGVOmTEFAQIDG14yMjNQtSTkyMzPzPMeL30uFQpHvthc/6POT+0N8yJAhGDBgAL777juEhYXB39//pTPdhoWFYeTIkdi7dy/Cw8Px2WefITIyEs2bN3/lawHIc6yFObac58g5NiGEVq1xr2qpI6JiyHqM+zdvIP7KDTyMv46n9+Nh9CwBFohHJbMEVLVOgKfVfWnfKv8tr/AooxLSMh3wVOWADCMHZJs4AOYOMK7gAFMbB5hb28Pcxg6Wle1gVtEW5sYWqAqgamkeJxWL1mHk0aNHuHr1qvp+bGwsoqKiYGtrixo1amDy5MmIj4/HunXrAABBQUFYunQpgoODMXToUBw/fhyhoaHYvHlzyR1FLgqF9l0l5cHcuXPRuHFjvPbaaxrbq1Spgtu3b2t8wOYezFpcJ06cQJs2bQBIYz7OnDmD4cOHq7/etWtXVKhQASEhIdizZw8OHz78yuds0qQJmjRpgsmTJ8PHxwebNm3KE0ZsbGzg6OiIkydPonXr1gCA7OxsnDt3rthzkdSvXx8//fSTxvfs2LFjsLKyQrVq1fLs7+HhgaysLJw+fVrdUhMTE4OHDx8Wqw4ig5CZCqT9Czy+gYyHN3Av7gae3r0OZfoN2BjfQCWLe7AFYAsA5gCc83+a9CxzPEx3xhPhjAzjaoCFM0ysnWBp6wQbRwdYVKoCmDsAZlVQUWmK8nFeHpUUrcPI6dOnNQYY5oztGDRoENasWYPExETExcWpv+7m5oaIiAiMGTMGy5Ytg7OzMxYvXmzwp/W+6PXXX0f//v2xZMkSje3t2rXD3bt3MX/+fLz//vvYu3cv9uzZA2tr6xJ53WXLlqFu3brw8PDAd999hwcPHqjPuAGkbpGAgABMnjwZderU0ejWeVFsbCxWrlyJ9957D87OzoiJicGVK1cwcODAfPcfMWIE5syZgzp16sDd3R1LlizBgwcPit1CMWzYMCxcuBAjRozA8OHDERMTg+nTpyM4ODjfqbvr1auHt99+G0OHDsXKlSthbGyM0aNHw8JCi3ZgIgOTnQ1cuABknZkHL4uvAACmAJxyVnJdxPjhYxskproiJdsV2aYuUFpVg6WdMyo5O8PBtRrMKzvDzKQSHNk6abC0DiM5p30WZM2aNXm2tW3bFmfPntX2pQzOrFmz8OOPP2ps8/DwwPLly/HVV19h1qxZ6N27N8aNG4eVK1eWyGvOnTsX8+bNw7lz51C7dm38/PPPsLe319gnMDAQX331lUZIyY+lpSUuX76MtWvX4t69e3BycsLw4cPx8ccf57v/xIkTcfv2bQwcOBBKpRIfffQROnfuDKVSWaxjqlatGiIiIjB+/Hg0atQItra2CAwMVA+CzU9YWBiGDBmCtm3bwtHREbNnz8bnn39erDqI9ElGBvDXX8CRI9Jy7BiQmgoMaV8TLn0ccCPZFTeSXZH0uCYUFV1R0dEVdjVcUe01V9StbwMPHWyxprKjEC9LFuVEamoqbGxskJKSkqdF4NmzZ4iNjYWbmxuvmKmFnHlGCtMtcvToUbRr1w63bt3Kc5p2SVKpVPDw8ICfnx9nRyWdoc/vQTduAHv2AHv3Ar//nnc8npUV0KKFgLe3Ak2bAp6eQLVq2k1xQPrtZZ/fuZXJqb2km9LT03Hz5k18/vnn8PPzK/EgcuPGDezbtw9t27ZFeno6li5ditjYWPTr169EX4eICkcIICoK2LoV2LEDuHxZ8+sODkCbNkDr1tLyxhuAUsnkQcXHMEIF2rx5MwIDA9G4cWOsX7++xJ/fyMgIa9aswbhx4yCEQMOGDbF//37O70FUxqKigPBwKYT8++/z7Uol4OMDdOkCvP020LgxT1ul0sFuGiKiYtDV96D794FNm4DQUCmM5DA3B7p2Bd5/XwohnG6HioPdNEREpEEI4PhxYMkSYPt2aVAqIE3Y9e67gJ+fFETKyfUsyYAwjBAR6bnMTGDbNuC774BTp55vb9QICAwE+vcHeCFrkhPDCBGRnnr2DPjhB2D+fODWLWmbmRnwwQfAsGHyXRSN6EUMI0REeubZM2DVKmDOHCAhQdrm6CgFkKAg6awYovKEYYSISE+oVMDatcDnnwPx8dI2Fxdg6lQgIEBqFSEqjxhGiIj0wOHDwJgxQM5k19WrSyFk8GCGECr/eMY4FVlAQAB69Oghy2tfv34dCoWiRC8aWJAZM2bA0dERCoUCO3fuLPXXy60sj/Nl1qxZg0rl+BzPGTNmFPsCi7oqPh7o0wdo21YKItbW0hiRq1elLhkGEdIFbBmR2bFjx9C6dWt06tQJe/fulbscrSxatOil1ykqKQEBAXj48KFGEHBxcUFiYmKe6+iUtOjoaHzxxRfYsWMHmjdvjsqVK5fq672orI6TdI9KBaxcCUycKF0jxsgI+Ogj4IsvOCaEdA/DiMxWr16NESNGYNWqVYiLi0ONGjVK/TUzMzNhYmJS7OexsbEpgWqKRqlUomrVqqX+Ov/+Nx1l9+7di3U14aJ+z8vqOKnk/i7KQkwMMGQI8Oef0v1mzaRg0qiRvHURFRW7aWT0+PFj/Pjjj/jkk0/wzjvv5Lni8cGDB6FQKPDrr7+iUaNGMDc3h7e3Ny5cuKDeJ6f5fOfOnXjttddgbm6OTp064ebNm+p9cpqwV69ejVq1asHMzAxCCMTFxaF79+6oWLEirK2t4efnhzt37gAALl++DEtLS2zatEn9PNu3b4e5ubn69V/spmnXrh1GjBiB0aNHo3LlynB0dMTKlSvx+PFjDB48GFZWVqhduzb27Nmjfkx2djYCAwPh5uYGCwsL1KtXD4sWLdKofe3atfj555+hUCigUChw8ODBfLsvDh06hGbNmsHMzAxOTk6YNGkSsrKyNOobOXIkJkyYAFtbW1StWhUzZswo8OczY8YMvPvuuwCkqetzwohKpcLMmTNRvXp1mJmZoXHjxhqtWjm1/fjjj2jXrh3Mzc2xYcOGfF/j8uXLaNWqFczNzVG/fn3s379fozso93GqVCpUr14dK1as0HiOs2fPQqFQ4Nq1awCAlJQUfPTRR3BwcIC1tTU6dOiA8+fPaxxXzhT/NWvWhI2NDfr27Yu0tLQCvxc5XvZ7BgAhISGoXbs2TE1NUa9ePY3LCOT3M3v48KH6Zwo8/53//fff4eXlBUtLS7Ro0QIxMTEarzN37lw4OjrCysoKgYGBePbsmcbXT506hU6dOsHe3h42Njb5XjlcoVBgxYoV6N69OypUqIDZs2ejTp06+OabbzT2+9///gcjIyN1MJWTEFLoaNJECiIVKgCLFklX0GUQIZ0mdEBKSooAIFJSUvJ87enTp+LSpUvi6dOn0gaVSojMR/IsKpVWxxUaGiq8vLyEEELs3r1b1KxZU6hyPccff/whAAgPDw+xb98+8ffff4t33nlH1KxZU2RkZAghhAgLCxMmJibCy8tLHDt2TJw+fVo0a9ZMtGjRQv0806dPFxUqVBCdO3cWZ8+eFefPnxcqlUo0adJEtGrVSpw+fVqcOHFCNG3aVLRt21b9uGXLlgkbGxtx/fp1ER8fL2xtbcV3332n/vqgQYNE9+7d1ffbtm0rrKysxKxZs8SVK1fErFmzhJGRkejSpYtYuXKluHLlivjkk0+EnZ2dePz4sRBCiIyMDDFt2jRx8uRJce3aNbFhwwZhaWkpwsPDhRBCpKWlCT8/P/H222+LxMREkZiYKNLT00VsbKwAIM6dOyeEEOLWrVvC0tJSDBs2TERHR4sdO3YIe3t7MX36dI36rK2txYwZM8SVK1fE2rVrhUKhEPv27cv355OWlibCwsIEAPVrCyHEt99+K6ytrcXmzZvF5cuXxYQJE4SJiYm4cuWKEEKoa6tZs6b46aefxLVr10R8fHye58/Ozhb16tUTnTp1ElFRUeLIkSOiWbNmAoDYsWOHxnPlHOfYsWNFq1atNJ5n7NixwsfHRwghhEqlEi1bthTvvvuuOHXqlLhy5YoYO3assLOzE/fu3VP/PlSsWFH06tVLXLhwQRw+fFhUrVpVTJkyJd/vgxCF+z3bvn27MDExEcuWLRMxMTFiwYIFQqlUigMHDuR7LEII8eDBAwFA/PHHH0KI57/z3t7e4uDBg+LixYuidevWGq8THh4uTE1NxQ8//CAuX74spk6dKqysrESjRo3U+/z+++9i/fr14tKlS+LSpUsiMDBQODo6itTUVPU+AISDg4MIDQ0V//77r7h+/br48ssvRf369TWOfcyYMaJNmzYFfm/yvAeVkrt3hejRQwgpkgjx1ltCXL9eqi9JVGwv+/zOTf/CSOYjITZCniXzkVbH1aJFC7Fw4UKp7MxMYW9vLyIjI9Vfz3lj3rJli3rbvXv3hIWFhfrDOufD8sSJE+p9oqOjBQDx119/CSGkDx8TExORlJSk3mffvn1CqVSKuLg49baLFy8KAOLkyZPqbd26dROtW7cWb731lujUqZNGWMovjOT+oMzKyhIVKlQQAwYMUG9LTEwUAMTx48cL/L4MGzZM9O7du8DXESLvB9uUKVNEvXr1NOpbtmyZqFixosjOzs63PiGEePPNN8XEiRMLrGXHjh3ixczu7OwsvvzyyzzPM2zYMI3acn62BdmzZ48wNjZWhxwhhIiMjHxpGDl79qxQKBTi+n+fQtnZ2aJatWpi2bJlQgjpQ9ja2lo8e/ZM47Vq164tvv/+eyGE9PtgaWmp8cE8fvx44e3tXWCthfk9a9GihRg6dKjG4/r06SO6du2a77EIUXAY2b9/v3qfX3/9VQBQ/437+PiIoKAgjdfx9vbWCCMvysrKElZWVmL37t3qbQDE6NGjNfZLSEgQSqVSfUwZGRmiSpUqYs2aNQU+d1mEkT//FMLZWQohJiZCfPONEP/9WhOVa4UNI+ymkUlMTAxOnjyJvn37AgCMjY3h7++P1atX59nXx8dHvW5ra4t69eohOjpavc3Y2BheXl7q++7u7qhUqZLGPq6urqhSpYr6fnR0NFxcXODi4qLeVr9+/TyPW716Nf7++2+cPXsWa9aseeW4iTfeeEO9rlQqYWdnh9dff129zdHREQCQlJSk3rZixQp4eXmhSpUqqFixIn744QfExcW99HVeFB0dDR8fH436WrZsiUePHuFWztSTL9QHAE5OThq1vEpqaioSEhLQsmVLje0tW7bU+L4B0PiZ5CcmJgYuLi4aY0KaNWv20sc0adIE7u7u2Lx5MwCpayopKQl+fn4AgDNnzuDRo0ews7NDxYoV1UtsbKxGN0PNmjVhZWWlvl+Y78Orfs+io6ML9X0pjNw/JycnJwDPf2dyfta5vXg/KSkJQUFBeO2112BjYwMbGxs8evQoz+/Viz8jJycndOvWTf13+Msvv+DZs2fo06eP1sdQEoQAli8H2rWTJi9zdwdOngTGjuXVc0m/6N8AVqUl4PdIvtcupNDQUGRlZaFatWrqbUIImJiY4MGDB688a+PFUJBfSMi9rUKFChpfE0Lk+5gXt58/fx6PHz+GkZERbt++DWdn55fW9eIAQIVCobEt97gLAPjxxx8xZswYLFiwAD4+PrCyssLXX3+Nv/7666Wv86q6c7blfs2C6supRRv5vdaL2178nhem5sLo378/Nm3ahEmTJmHTpk3o3Lmz+mwblUoFJycn9RiM3HKfmlvU78Orfs9e9n0x+u/TM+fnAkiDRvPzst+ZwggICMDdu3excOFCuLq6wszMDD4+PsjIuTLcf/L7GQ0ZMgQDBgzAd999h7CwMPj7+8PSsvB/2yXl6VNpxtScoWR+ftIVdnkRO9JH+petFQrAuII8SyE/WLKysrBu3TosWLAAUVFR6uX8+fNwdXXFxo0bNfY/ceKEev3Bgwe4cuUK3N3dNZ7v9OnT6vsxMTF4+PChxj4vql+/PuLi4jQGIF66dAkpKSnw8PAAANy/fx8BAQGYOnUqBg8ejP79++Pp06eFOsbCOnLkCFq0aIFhw4ahSZMmqFOnTp6BgqampsjOzn7p89SvXx/Hjh3T+KA7duwYrKysNAJfcVlbW8PZ2Rl/5pzGkOu1cr5vheXu7o64uDj1oGFAGnj5Kv369cOFCxdw5swZbNu2Df3791d/rWnTprh9+zaMjY1Rp04djaW4pwe/6vfMw8Pjpd+XnJa5xMRE9deLMn+Kh4eHxt8EgDz3jxw5gpEjR6Jr165o0KABzMzMkJycXKjn79q1KypUqICQkBDs2bMHH374odY1Ftfdu0CHDlIQMTICvv4a2LKFQYT0l/61jOiAX375BQ8ePEBgYGCe02Pff/99hIaGYvjw4eptM2fOhJ2dHRwdHTF16lTY29trnMViYmKCESNGYPHixTAxMcHw4cPRvHnzlzb5d+zYEW+88Qb69++PhQsXIisrC8OGDUPbtm3VTddBQUFwcXHBZ599hoyMDDRt2hTjxo3DsmXLSux7UadOHaxbtw6//fYb3NzcsH79epw6dQpubm7qfWrWrInffvsNMTExsLOzy/eU4mHDhmHhwoUYMWIEhg8fjpiYGEyfPh3BwcHq/8hLyvjx4zF9+nTUrl0bjRs3RlhYGKKiovKEyFfp1KkTateujUGDBmH+/PlIS0vD1KlTAeTfApHDzc0NLVq0QGBgILKystC9e3f11zp27AgfHx/06NED8+bNQ7169ZCQkICIiAj06NHjlV1HL/Oq37Px48fDz88PTZs2xVtvvYXdu3dj+/bt2L9/PwDAwsICzZs3x9y5c1GzZk0kJyfjs88+07qOUaNGYdCgQfDy8kKrVq2wceNGXLx4EbVq1VLvU6dOHaxfvx5eXl5ITU3F+PHjYWFhUajnVyqVCAgIwOTJk1GnTp08XUCl7epVoEsX6bZyZWDrVuCtt8q0BKIyp38tIzogNDQUHTt2zPdDtXfv3oiKitI4DXHu3LkYNWoUPD09kZiYiF27dsHU1FT9dUtLS0ycOBH9+vWDj48PLCwssGXLlpfWkHP6aOXKldGmTRt07NgRtWrVQnh4OABg3bp1iIiIwPr162FsbAxLS0ts3LgRq1atQkRERAl9J6TA06tXL/j7+8Pb2xv37t3DsGHDNPYZOnQo6tWrpx5XcvTo0TzPU61aNURERODkyZNo1KgRgoKCEBgYWKQPu1cZOXIkxo4di7Fjx+L111/H3r17sWvXLtStW1er51Eqldi5cycePXqEN998E0OGDFHXa25u/tLH9u/fH+fPn0evXr00PmQVCgUiIiLQpk0bfPjhh3jttdfQt29fXL9+XT1ep6he9XvWo0cPLFq0CF9//TUaNGiA77//HmFhYWjXrp16n9WrVyMzMxNeXl4YNWoUZs+erXUd/v7+mDZtGiZOnAhPT0/cuHEDn3zyicY+q1evxoMHD9CkSRMMGDAAI0eOhIMWM4EFBgYiIyOjzFtF/voL8PGRgkjNmtIpuwwiZAgUIne7djmVmpoKGxsbpKSkwNraWuNrz549Q2xsLNzc3F75Bq5rDh48iPbt2+PBgwcFTsW9Zs0ajB49Gg8fPizT2qh0HD16FK1atcLVq1dRu3ZtucsxWEePHkW7du1w69atV4a4knoP+v134L33gCdPAE9P4JdfAM53R7ruZZ/fubGbhkhGO3bsQMWKFVG3bl1cvXoVo0aNQsuWLRlEZJKeno6bN2/i888/h5+fX7Fbkwprzx6gZ08gPR3o3BnYto3jQ8iwsJuGSEZpaWkYNmwY3N3dERAQgDfffBM///yz3GUZrM2bN6NevXpISUnB/Pnzy+Q1f/4Z6N5dCiLvvSfdZxAhQ8NuGiKiYijOe9DOndIVd7OypNuNGwEduTwOUaEUtpuGLSNERDL4/XfA318KIv37A5s2MYiQ4WIYISIqYydOSF0zGRlAr17SfCLGHMFHBkxvwogO9DYRkR7S9r3nwgWga1fg8WOgUyepRYRBhAydzoeRnGmjnzx5InMlRGSIct57XpxiPz8JCVIQefBAmk9kxw7AzKy0KyQq/3Q+jyuVSlSqVEl9ES1LS8siXe+DiEgbQgg8efIESUlJqFSpEpRK5Uv3f/wYePdd4NYt6YJ3v/4KvOLyRUQGQ+fDCAD1VU+1ufoqEVFJqFSpksaVl/OTnQ306wecPQvY20tB5BXXwiQyKHoRRhQKBZycnODg4FDgVUCJiEqaiYnJK1tEAGDiRGDXLqlL5uefgVyX0SEi6EkYyaFUKgv1xkBEVFY2bQIWLJDW16wBWrSQtRyicknnB7ASEZVXFy4AQ4dK61OmAH37ylsPUXnFMEJEVApSUqQ5RJ48kU7hnTlT7oqIyi+GESKiEqZSAYMGAVevAjVqSF017EEmKhjDCBFRCVu8WBqoamoK/PSTdAYNERWMYYSIqARFRUlnzwDAwoWAl5ec1RDpBoYRIqIS8uSJNJ9IRoZ07ZmgILkrItINDCNERCVk3DggOhpwcgJWrQI4GTRR4TCMEBGVgF27gJAQaX3dOo4TIdIGwwgRUTHdvw989JG0Pm4c0LGjvPUQ6RqGESKiYhozBrhzB/DwAGbNkrsaIt3DMEJEVAy//ip1yxgZAatXA+bmcldEpHsYRoiIiiglBfj4Y2l9zBigeXN56yHSVQwjRERFNG4cEB8P1KnD6d6JioNhhIioCI4elU7fBYDQUMDSUt56iHQZwwgRkZaysoBhw6T1wECgTRt56yHSdQwjRERaWroU+PtvwNYWmDtX7mqIdB/DCBGRFuLjgc8/l9bnzuXkZkQlgWGEiEgLY8cCjx4B3t5SFw0RFR/DCBFRIR08CISHS3OKLF8u3RJR8fFPiYioEFQqIDhYWv/oI6BpU3nrIdInDCNERIWwfj1w7hxgbQ188YXc1RDpF4YRIqJXePwYmDpVWp86FXBwkLceIn3DMEJE9AoLFkhn0dSsCYwcKXc1RPqnSGFk+fLlcHNzg7m5OTw9PXHkyJGX7r9x40Y0atQIlpaWcHJywuDBg3Hv3r0iFUxEVJYSEoB586T1efN4ITyi0qB1GAkPD8fo0aMxdepUnDt3Dq1bt0aXLl0QFxeX7/5//vknBg4ciMDAQFy8eBFbt27FqVOnMGTIkGIXT0RU2qZPB548AXx8gD595K6GSD9pHUa+/fZbBAYGYsiQIfDw8MDChQvh4uKCkJCQfPc/ceIEatasiZEjR8LNzQ2tWrXCxx9/jNOnTxe7eCKi0nTlChAWJq1/8w2gUMhbD5G+0iqMZGRk4MyZM/D19dXY7uvri2PHjuX7mBYtWuDWrVuIiIiAEAJ37tzBtm3b0K1bt6JXTURUBqZPB7KzgXfeAVq0kLsaIv2lVRhJTk5GdnY2HB0dNbY7Ojri9u3b+T6mRYsW2LhxI/z9/WFqaoqqVauiUqVKWLJkSYGvk56ejtTUVI2FiKgsnT8PbNkirc+aJW8tRPquSANYFS+0VQoh8mzLcenSJYwcORLTpk3DmTNnsHfvXsTGxiIoKKjA558zZw5sbGzUi4uLS1HKJCIqspzrz/j7A40by1oKkd5TCCFEYXfOyMiApaUltm7dip49e6q3jxo1ClFRUTh06FCexwwYMADPnj3D1q1b1dv+/PNPtG7dGgkJCXBycsrzmPT0dKSnp6vvp6amwsXFBSkpKbC2ti70wRERFcWJE9KAVSMj4NIloF49uSsi0k2pqamwsbF55ee3Vi0jpqam8PT0RGRkpMb2yMhItCigQ/XJkycweuECDkqlEoDUopIfMzMzWFtbayxERGUlZ4KzgAAGEaKyoHU3TXBwMFatWoXVq1cjOjoaY8aMQVxcnLrbZfLkyRg4cKB6/3fffRfbt29HSEgIrl27hqNHj2LkyJFo1qwZnJ2dS+5IiIhKwOHDwIEDgIkJMG2a3NUQGQZjbR/g7++Pe/fuYebMmUhMTETDhg0REREBV1dXAEBiYqLGnCMBAQFIS0vD0qVLMXbsWFSqVAkdOnTAvJxZhIiIypEvv5RuAwOB/97WiKiUaTVmRC6F7XMiIiqOkycBb29AqQSuXpWmfyeioiuVMSNERPosp1VkwAAGEaKyxDBCRARpXpFdu6RZVidPlrsaIsPCMEJEhOetIv7+wGuvyVsLkaFhGCEigxcdDWzbJq1PmSJvLUSGiGGEiAze3LmAEECPHsDrr8tdDZHhYRghIoN26xawaZO0zlYRInkwjBCRQVuyBMjKAtq2Bd58U+5qiAwTwwgRGazUVGDFCml93Dh5ayEyZAwjRGSwQkOlQFKvHtC1q9zVEBkuhhEiMkiZmcDChdL62LHSFXqJSB788yMig7RtGxAXBzg4SDOuEpF8GEaIyOAIAXzzjbQ+fDhgbi5vPUSGjmGEiAzOoUPA2bOAhQXwySdyV0NEDCNEZHAWLZJuBw0C7O3lrYWIGEaIyMDcuCFdEA8ARoyQtxYikjCMEJFBCQkBVCrgrbeA+vXlroaIAIYRIjIgT58Cq1ZJ68OHy1sLET3HMEJEBmPLFuDePaBGDeCdd+SuhohyMIwQkUEQQroODQAMGwYYG8tbDxE9xzBCRAbh+HHg3DnAzAwIDJS7GiLKjWGEiAzC0qXSbb9+PJ2XqLxhGCEivZeYCGzdKq1z4CpR+cMwQkR6LzQUyMoCfHyApk3lroaIXsQwQkR6LTv7+em8nPqdqHxiGCEivRYZKc26WqkS8P77cldDRPlhGCEivfbDD9LtwIHShfGIqPxhGCEivZWY+Pw6NEOHylsLERWMYYSI9NaaNdLA1RYtgIYN5a6GiArCMEJEekmlet5F89FH8tZCRC/HMEJEeun334HYWMDGBujTR+5qiOhlGEaISC+tXCndDhgAWFrKWwsRvRzDCBHpnTt3gJ07pXV20RCVfwwjRKR3cgauNm8OvP663NUQ0aswjBCRXhECCAuT1ocMkbcWIiochhEi0it//QXExEjjRPz85K6GiAqDYYSI9EpOq8j77wNWVvLWQkSFwzBCRHrj6VNgyxZpPSBA1lKISAsMI0SkN3buBFJTgZo1gbZt5a6GiAqLYYSI9EZOF82gQYAR392IdAb/XIlIL9y8CezfL60PGiRvLUSkHYYRItIL69dLp/W2awe4ucldDRFpg2GEiHRe7rlFOHCVSPcwjBCRzjt2DLh6FahQAejdW+5qiEhbDCNEpPPWrJFu/fyAihVlLYWIioBhhIh02pMnQHi4tM4uGiLdxDBCRDrt55+BtDRp0GqrVnJXQ0RFwTBCRDptwwbp9oMPOLcIka7iny4R6ay7d4HffpPW+/eXtxYiKjqGESLSWeHhQHY24OUF1KsndzVEVFQMI0SkszZulG4/+EDeOoioeBhGiEgnXb0KnDghjRPx95e7GiIqDoYRItJJOa0inToBVavKWwsRFQ/DCBHpHCGehxEOXCXSfQwjRKRzTp0C/vkHsLQEevaUuxoiKi6GESLSOTmtIt27c/p3In3AMEJEOiUzE9i8WVrnWTRE+oFhhIh0yv790mRnVapIg1eJSPcVKYwsX74cbm5uMDc3h6enJ44cOfLS/dPT0zF16lS4urrCzMwMtWvXxurVq4tUMBEZtpwuGn9/wMRE3lqIqGQYa/uA8PBwjB49GsuXL0fLli3x/fffo0uXLrh06RJq1KiR72P8/Pxw584dhIaGok6dOkhKSkJWVlaxiyciw/LoEbBjh7TOLhoi/aEQQghtHuDt7Y2mTZsiJCREvc3DwwM9evTAnDlz8uy/d+9e9O3bF9euXYOtrW2RikxNTYWNjQ1SUlJgbW1dpOcgIt23caMUQmrXls6mUSjkroiIXqawn99addNkZGTgzJkz8PX11dju6+uLY8eO5fuYXbt2wcvLC/Pnz0e1atXw2muvYdy4cXj69GmBr5Oeno7U1FSNhYho0ybptn9/BhEifaJVN01ycjKys7Ph6Oiosd3R0RG3b9/O9zHXrl3Dn3/+CXNzc+zYsQPJyckYNmwY7t+/X+C4kTlz5uCLL77QpjQi0nP37wP79knrffvKWwsRlawiDWBVvPAviRAiz7YcKpUKCoUCGzduRLNmzdC1a1d8++23WLNmTYGtI5MnT0ZKSop6uXnzZlHKJCI9sn07kJUFvPEG4OEhdzVEVJK0ahmxt7eHUqnM0wqSlJSUp7Ukh5OTE6pVqwYbGxv1Ng8PDwghcOvWLdStWzfPY8zMzGBmZqZNaUSk58LDpVu2ihDpH61aRkxNTeHp6YnIyEiN7ZGRkWjRokW+j2nZsiUSEhLw6NEj9bYrV67AyMgI1atXL0LJRGRo7twBDhyQ1nmFXiL9o3U3TXBwMFatWoXVq1cjOjoaY8aMQVxcHIKCggBIXSwDBw5U79+vXz/Y2dlh8ODBuHTpEg4fPozx48fjww8/hIWFRckdCRHprW3bAJUKePNNoFYtuashopKm9Twj/v7+uHfvHmbOnInExEQ0bNgQERERcHV1BQAkJiYiLi5OvX/FihURGRmJESNGwMvLC3Z2dvDz88Ps2bNL7iiISK+xi4ZIv2k9z4gcOM8IkeG6dQtwcZHW4+KerxNR+Vcq84wQEZW1rVul21atGESI9BXDCBGVa1u2SLfsoiHSXwwjRFRuXbsGnDwJGBkB778vdzVEVFoYRoio3PrxR+m2fXuggKmMiEgPMIwQUbnFLhoiw8AwQkTl0uXLwPnzgLEx0KuX3NUQUWliGCGicilnbhFfX8DWVt5aiKh0MYwQUbkjBLtoiAwJwwgRlTsXLkjdNGZmQPfucldDRKWNYYSIyp2cVpGuXQFOukyk/xhGiKhcYRcNkeFhGCGicuX0aSA2FrC0BLp1k7saIioLDCNEVK7ktIq89x5QoYK8tRBR2WAYIaJyQ6V6fkovu2iIDAfDCBGVG8ePA/Hx0qDVzp3lroaIygrDCBGVGznXounRAzA3l7UUIipDDCNEVC5kZwNbt0rrfn7y1kJEZYthhIjKhaNHgcREwMYG6NRJ7mqIqCwxjBBRuZDTRdOzJ2BqKm8tRFS2GEaISHbZ2cC2bdI6u2iIDA/DCBHJ7sgR4M4doHJl4K235K6GiMoawwgRyS6ni6ZXL3bREBkihhEiklVWFrtoiAwdwwgRyerQIeDuXcDODmjfXu5qiEgODCNEJKvcXTQmJvLWQkTyYBghItlkZQE//SSts4uGyHAxjBCRbP74A7h3D7C3B9q1k7saIpILwwgRySani6Z3b8DYWN5aiEg+DCNEJIvMTGD7dmmdXTREho1hhIhk8fvvwP37gIMD0Lat3NUQkZwYRohIFjldNO+/DyiV8tZCRPJiGCGiMpeRAezYIa2zi4aIGEaIqMzt3w88fAhUrQq0aiV3NUQkN4YRIipz7KIhotwYRoioTKWnAzt3SuvsoiEigGGEiMpYZCSQkgI4OQEtW8pdDRGVBwwjRFSmwsOl2z59ACO+AxERGEaIqAw9ewb8/LO07u8vby1EVH4wjBBRmfntNyAtDaheHWjeXO5qiKi8YBghojKTcxYNu2iIKDe+HRBRmXj6FNi1S1rnWTRElBvDCBGVib17gUePgBo1AG9vuashovKEYYSIykTuLhqFQt5aiKh8YRgholL35Amwe7e0zi4aInoRwwgRlbqICODxY6BmTeDNN+WuhojKG4YRIip1OV00fn7soiGivBhGiKhUPXoE/PKLtN6nj7y1EFH5xDBCRKVq927ptN7atQFPT7mrIaLyiGGEiErV5s3Sbd++7KIhovwxjBBRqXnwQJpfBAD+7//krYWIyi+GESIqNdu3A5mZQMOGQIMGcldDROUVwwgRlZotW6RbtooQ0cswjBBRqbhzBzhwQFr395e3FiIq3xhGiKhUbN0KqFRAs2bSmTRERAVhGCGiUpHTRdO3r7x1EFH5xzBCRCUuLg44elQ6lZfXoiGiVylSGFm+fDnc3Nxgbm4OT09PHDlypFCPO3r0KIyNjdG4ceOivCwR6YjwcOm2TRugWjV5ayGi8k/rMBIeHo7Ro0dj6tSpOHfuHFq3bo0uXbogLi7upY9LSUnBwIED8dZbbxW5WCLSDTkTnfEsGiIqDIUQQmjzAG9vbzRt2hQhISHqbR4eHujRowfmzJlT4OP69u2LunXrQqlUYufOnYiKiir0a6ampsLGxgYpKSmwtrbWplwiKmMxMYC7O2BsDCQmAvb2cldERHIp7Oe3Vi0jGRkZOHPmDHx9fTW2+/r64tixYwU+LiwsDP/++y+mT59eqNdJT09HamqqxkJEuiFn4GqnTgwiRFQ4WoWR5ORkZGdnw9HRUWO7o6Mjbt++ne9j/vnnH0yaNAkbN26EsbFxoV5nzpw5sLGxUS8uLi7alElEMhGCZ9EQkfaKNIBV8cLVroQQebYBQHZ2Nvr164cvvvgCr732WqGff/LkyUhJSVEvN2/eLEqZRFTGzp8HLl8GzMyAHj3kroaIdEXhmir+Y29vD6VSmacVJCkpKU9rCQCkpaXh9OnTOHfuHIYPHw4AUKlUEELA2NgY+/btQ4cOHfI8zszMDGZmZtqURkTlQE6rSLduAId3EVFhadUyYmpqCk9PT0RGRmpsj4yMRIsWLfLsb21tjQsXLiAqKkq9BAUFoV69eoiKioK3t3fxqieickOl4rVoiKhotGoZAYDg4GAMGDAAXl5e8PHxwcqVKxEXF4egoCAAUhdLfHw81q1bByMjIzRs2FDj8Q4ODjA3N8+znYh029GjwI0bgJWV1DJCRFRYWocRf39/3Lt3DzNnzkRiYiIaNmyIiIgIuLq6AgASExNfOecIEemfDRuk2/ffByws5K2FiHSL1vOMyIHzjBCVb8+eAU5OwMOH0pV627eXuyIiKg9KZZ4RIqL8RERIQaR6daBtW7mrISJdwzBCRMWW00XTrx9gxHcVItIS3zaIqFju3wd+/VVa/+ADeWshIt3EMEJExbJ1K5CRAbzxBvD663JXQ0S6iGGEiIolp4tmwAB56yAi3cUwQkRFFhsL/PknoFBwojMiKjqGESIqsk2bpNsOHYBq1eSthYh0F8MIERWJEMD69dI6B64SUXEwjBBRkZw5A8TEAObmQK9ecldDRLqMYYSIiiRn4GqPHrxCLxEVD8MIEWktIwPYuFFaZxcNERUXwwgRaS0iAkhOBqpWBTp3lrsaItJ1DCNEpLWwMOl2wADAWOtrfxMRaWIYISKt3LnzfPr3gABZSyEiPcEwQkRa2bAByM4GmjUD6teXuxoi0gcMI0RUaEI876IZPFjeWohIfzCMEFGhnTkDXLwozS3St6/c1RCRvmAYIaJCy2kV6dkTqFRJ1lKISI8wjBBRoTx79vxaNOyiIaKSxDBCRIXy88/Aw4eAi4t0YTwiopLCMEJEhZLTRTNoEKBUylsLEekXhhEieqVbt4DISGmdc4sQUUljGCGiVwoNBVQqoG1boHZtuashIn3DMEJEL5WdDaxaJa1//LG8tRCRfmIYIaKX2rNH6qaxs5NO6SUiKmkMI0T0UitXSreDBkmTnRERlTSGESIq0K1bzy+K99FH8tZCRPqLYYSICpR74Gq9enJXQ0T6imGEiPKVe+AqW0WIqDQxjBBRvnIPXO3VS+5qiEifMYwQUb44cJWIygrDCBHlcfPm84GrQ4fKWwsR6T+GESLKY8WK5wNX3d3lroaI9B3DCBFpePbseRfNiBHy1kJEhoFhhIg0/PgjkJwMVK8OdO8udzVEZAgYRohITQhgyRJp/ZNPAGNjeeshIsPAMEJEaidPAqdPA6amHLhKRGWHYYSI1HJaRfr2BapUkbcWIjIcDCNEBAC4c0caLwJw4CoRlS2GESICIJ1Bk5kJNG8OeHnJXQ0RGRKGESJCRoY0twgADB8uby1EZHgYRogIW7YACQmAkxPw/vtyV0NEhoZhhMjACQF88420PnIkYGYmbz1EZHgYRogM3P79wIULQIUKwMcfy10NERkihhEiA5fTKhIYCFSuLG8tRGSYGEaIDNjffwP79gFGRsDo0XJXQ0SGimGEyIB9+610+/77gJubvLUQkeFiGCEyUAkJwKZN0vrYsfLWQkSGjWGEyEAtWiRNcta6NdCsmdzVEJEhYxghMkD37wPLl0vrEybIWwsREcMIkQFavBh49Aho1Ajo1k3uaojI0DGMEBmY1FSpiwYApk4FFAp56yEiYhghMjDLlwMPHwLu7kCvXnJXQ0TEMEJkUJ48eX467+TJgFIpbz1ERADDCJFB+eEH4O5daU6R//s/uashIpIwjBAZiGfPgK+/ltYnTQJMTOSth4goR5HCyPLly+Hm5gZzc3N4enriyJEjBe67fft2dOrUCVWqVIG1tTV8fHzw22+/FblgIiqa778H4uOB6tWBQYPkroaI6Dmtw0h4eDhGjx6NqVOn4ty5c2jdujW6dOmCuLi4fPc/fPgwOnXqhIiICJw5cwbt27fHu+++i3PnzhW7eCIqnMePga++ktY//xwwM5O3HiKi3BRCCKHNA7y9vdG0aVOEhISot3l4eKBHjx6YM2dOoZ6jQYMG8Pf3x7Rp0wq1f2pqKmxsbJCSkgJra2ttyiUiAHPnSgNWa9UCLl9mFw0RlY3Cfn5r1TKSkZGBM2fOwNfXV2O7r68vjh07VqjnUKlUSEtLg62tbYH7pKenIzU1VWMhoqJJSQHmz5fWZ8xgECGi8kerMJKcnIzs7Gw4OjpqbHd0dMTt27cL9RwLFizA48eP4efnV+A+c+bMgY2NjXpxcXHRpkwiyuXbb4EHD4D69YF+/eSuhogoryINYFW8MGWjECLPtvxs3rwZM2bMQHh4OBwcHArcb/LkyUhJSVEvN2/eLEqZRAYvOfn5vCIzZ3JeESIqn4y12dne3h5KpTJPK0hSUlKe1pIXhYeHIzAwEFu3bkXHjh1fuq+ZmRnMOMKOqNi+/FK6Bk2TJkDPnnJXQ0SUP61aRkxNTeHp6YnIyEiN7ZGRkWjRokWBj9u8eTMCAgKwadMmdONVuYjKxNWrwLJl0vrcuYARZxUionJKq5YRAAgODsaAAQPg5eUFHx8frFy5EnFxcQgKCgIgdbHEx8dj3bp1AKQgMnDgQCxatAjNmzdXt6pYWFjAxsamBA+FiHKbNAnIzATefht4Ycw5EVG5onUY8ff3x7179zBz5kwkJiaiYcOGiIiIgKurKwAgMTFRY86R77//HllZWfj000/x6aefqrcPGjQIa9asKf4REFEef/4J/PST1BqSM+sqEVF5pfU8I3LgPCNEhadSAT4+wMmTwNChwMqVcldERIaqVOYZIaLyLzxcCiIVK0pn0BARlXcMI0R65PFjYOJEaX3iRKBqVXnrISIqDIYRIj0yezZw8ybg6goEB8tdDRFR4TCMEOmJy5eBBQuk9UWLAEtLeeshIioshhEiPSAEMGKEdCpv167Ae+/JXRERUeExjBDpgW3bgP37ATMzYPFioBBXZyAiKjcYRoh0XGoqMGaMtD5xIlC7trz1EBFpi2GESMdNmgTExwO1aknrRES6hmGESIcdPgyEhEjrP/wAWFjIWw8RUVEwjBDpqKdPgSFDpPWhQ4EOHeSth4ioqBhGiHTUjBnAP/8Azs68/gwR6TaGESIddPIk8M030vqKFQAvgE1EuoxhhEjHPHoE9O8vXRCvXz/g3XflroiIqHgYRoh0THAwcPUq4OICLF0qdzVERMXHMEKkQ3bulM6aUSiAdeuAypXlroiIqPgYRoh0RGLi87Nnxo8H2rWTtRwiohLDMEKkA7KypPEh9+4BTZoAs2bJXRERUclhGCHSAZ9/Dhw8CFSsCGzeDJiayl0REVHJYRghKud27wbmzpXWQ0OBevXkrYeIqKQxjBCVY9euAQMHSusjRwJ+fvLWQ0RUGhhGiMqpR4+Anj2Bhw+B5s05yyoR6S+GEaJyKDtbmtjs778BR0fgxx85ToSI9BfDCFE5NGUKsGsXYGYmzS3i4iJ3RUREpYdhhKicWbMGmD9fWl+9WuqiISLSZwwjROXInj3A0KHS+uefS3OLEBHpO4YRonLi+HGgd+/nE5zNmCF3RUREZYNhhKgcuHgR6NYNePoUePttICwMMOJfJxEZCL7dEcns6lWgc2fgwQNpfMi2bTxzhogMC8MIkYyuXpUueBcfD9SvD/z6K1ChgtxVERGVLYYRIpn88w/Qtq0URDw8gAMHAFtbuasiIip7DCNEMrh8WWoRSUiQWkT++EOa3IyIyBAxjBCVsRMngJYtpSDSoAGDCBERwwhRGfr1V6BDB+D+feDNN6Ug4uAgd1VERPJiGCEqI6GhQPfuz0/fPXAAqFJF7qqIiOTHMEJUyrKygNGjgSFDpAvgDRwoXXemYkW5KyMiKh+M5S6ASJ/dvw/4+wP790v3p0+XFoVC3rqIiMoThhGiUnLmDODnB1y7Js0dsnatNN07ERFpYjcNUQkTAli4EPDxkYJIzZrAsWMMIkREBWHLCFEJSk4GBg8GfvlFut+zJ7BqFSczIyJ6GbaMEJUAIYCtW6UJzH75BTAzA5YtA376iUGEiOhV2DJCVEy3bwOffgps3y7db9AA2LABaNxY1rKIiHQGW0aIiig7GwgJkVpDtm8HjI2BadOkgasMIkREhceWEaIiOHwYGDkSOH9eut+kCbB6NUMIEVFRsGWESAsxMdK8IW3bSkGkcmVg6VLg5EkGESKiomLLCFEh3LgBfPGFNFeISiVNWvbxx8CsWYC9vdzVERHpNoYRopf45x9gwQKpCyYzU9r27rtSCGnUSN7aiIj0BcMIUT6OHwe+/hrYuVM6bRcAOnYEZs8GvL1lLY2ISO8wjBD95/FjIDwcWLkS+Ouv59vfeQcYPx5o00a+2oiI9BnDCBk0IYBz56RZUjduBFJTpe2mpsAHHwBjx0qn7hIRUelhGCGDdPkysGWLtMTEPN9euzYwdCgQEAA4OspWHhGRQWEYIYOgUkktIL/+Kk1QljM/CCBN3d69O/DRR0D79oART3gnIipTDCOktx4+BA4ckAJIRIQ0bXsOY2PA1xfo21cKItbWspVJRGTwGEZIb9y/L82MeuiQtERFPT8TBgAqVAA6dZIGpPboAdjZyVUpERHlxjBCOunpU6mr5dQp4PRp6TY6Ou9+r70GdOkCdOsmnQ1jZlb2tRIR0csxjFC5plJJs59evAhcuiTd/v038L//AVlZeff38JCmas9ZnJzKvmYiItIOwwjJLjsbiI8HYmOBa9eeLzExUmvHkyf5P87BAXjzTcDLS1qaNZO2ERGRbilSGFm+fDm+/vprJCYmokGDBli4cCFat25d4P6HDh1CcHAwLl68CGdnZ0yYMAFBQUFFLpp0R0YGkJgIJCQ8v81Z4uOlVo/r159PtZ4fU1PA3V2a76NBA6BhQ8DTE6heXbpGDBER6Tatw0h4eDhGjx6N5cuXo2XLlvj+++/RpUsXXLp0CTVq1Mizf2xsLLp27YqhQ4diw4YNOHr0KIYNG4YqVaqgd+/eJXIQVLqEkFon0tKeLykpwL17hVsKw9gYqFkTqFULcHOTbuvUkcJH7drS14mISD8phMh9vsGreXt7o2nTpggJCVFv8/DwQI8ePTBnzpw8+0+cOBG7du1CdK7RhUFBQTh//jyOHz9eqNdMTU2FjY0NUlJSYG3A52AKIbUgZGZK4yVy3+asZ2QAz55JAzyfPdNcf/H2xW2PHj0PG6mpmuFDpSp63aamgLOzNH7D2fn54uQEuLpKwaNaNUCpLLnvFRERya+wn99a/b+ZkZGBM2fOYNKkSRrbfX19cezYsXwfc/z4cfj6+mps69y5M0JDQ5GZmQkTExNtSihR69YBZ85IH7Q5ixCa97VZivrYFwNFfiEjM7N4gaCkVKwozclhbS2dGpvfYm//fL1qVcDWlt0pRERUMK3CSHJyMrKzs+H4wjzZjo6OuJ17Rqlcbt++ne/+WVlZSE5OhlM+pzukp6cjPT1dfT8154IhJWzPHmk6cF2mUAAmJtJibCzdWlhIi7m5tOSsv3j74nrFioCVlbRYWz9fz1kqVODspEREVPKK1BOveOHfXCFEnm2v2j+/7TnmzJmDL774oiilaaVHD2k8gpGR9KFuZPTqpTT2yx0kCrOeexvDARER6Tqtwoi9vT2USmWeVpCkpKQ8rR85qlatmu/+xsbGsCtgCszJkycjODhYfT81NRUuLi7alFoo/v7SQkRERPLR6v9qU1NTeHp6IjIyUmN7ZGQkWrRoke9jfHx88uy/b98+eHl5FThexMzMDNbW1hoLERER6SetG/mDg4OxatUqrF69GtHR0RgzZgzi4uLU84ZMnjwZAwcOVO8fFBSEGzduIDg4GNHR0Vi9ejVCQ0Mxbty4kjsKIiIi0llajxnx9/fHvXv3MHPmTCQmJqJhw4aIiIiAq6srACAxMRFxcXHq/d3c3BAREYExY8Zg2bJlcHZ2xuLFiznHCBEREQEowjwjcuA8I0RERLqnsJ/fPBeDiIiIZMUwQkRERLJiGCEiIiJZMYwQERGRrBhGiIiISFYMI0RERCQrhhEiIiKSFcMIERERyYphhIiIiGSl9XTwcsiZJDY1NVXmSoiIiKiwcj63XzXZu06EkbS0NACAi4uLzJUQERGRttLS0mBjY1Pg13Xi2jQqlQoJCQmwsrKCQqEosedNTU2Fi4sLbt68qbfXvNH3Y+Tx6T59P0Z9Pz5A/4+Rx1d0QgikpaXB2dkZRkYFjwzRiZYRIyMjVK9evdSe39raWi9/wXLT92Pk8ek+fT9GfT8+QP+PkcdXNC9rEcnBAaxEREQkK4YRIiIikpVBhxEzMzNMnz4dZmZmcpdSavT9GHl8uk/fj1Hfjw/Q/2Pk8ZU+nRjASkRERPrLoFtGiIiISH4MI0RERCQrhhEiIiKSFcMIERERyYphJJcrV66ge/fusLe3h7W1NVq2bIk//vhD7rJK1K+//gpvb29YWFjA3t4evXr1krukEpeeno7GjRtDoVAgKipK7nJKzPXr1xEYGAg3NzdYWFigdu3amD59OjIyMuQurciWL18ONzc3mJubw9PTE0eOHJG7pBIzZ84cvPnmm7CysoKDgwN69OiBmJgYucsqNXPmzIFCocDo0aPlLqVExcfH44MPPoCdnR0sLS3RuHFjnDlzRu6ySkRWVhY+++wz9XtKrVq1MHPmTKhUqjKvhWEkl27duiErKwsHDhzAmTNn0LhxY7zzzju4ffu23KWViJ9++gkDBgzA4MGDcf78eRw9ehT9+vWTu6wSN2HCBDg7O8tdRom7fPkyVCoVvv/+e1y8eBHfffcdVqxYgSlTpshdWpGEh4dj9OjRmDp1Ks6dO4fWrVujS5cuiIuLk7u0EnHo0CF8+umnOHHiBCIjI5GVlQVfX188fvxY7tJK3KlTp7By5Uq88cYbcpdSoh48eICWLVvCxMQEe/bswaVLl7BgwQJUqlRJ7tJKxLx587BixQosXboU0dHRmD9/Pr7++mssWbKk7IsRJIQQ4u7duwKAOHz4sHpbamqqACD2798vY2UlIzMzU1SrVk2sWrVK7lJKVUREhHB3dxcXL14UAMS5c+fkLqlUzZ8/X7i5ucldRpE0a9ZMBAUFaWxzd3cXkyZNkqmi0pWUlCQAiEOHDsldSolKS0sTdevWFZGRkaJt27Zi1KhRcpdUYiZOnChatWoldxmlplu3buLDDz/U2NarVy/xwQcflHktbBn5j52dHTw8PLBu3To8fvwYWVlZ+P777+Ho6AhPT0+5yyu2s2fPIj4+HkZGRmjSpAmcnJzQpUsXXLx4Ue7SSsydO3cwdOhQrF+/HpaWlnKXUyZSUlJga2srdxlay8jIwJkzZ+Dr66ux3dfXF8eOHZOpqtKVkpICADr583qZTz/9FN26dUPHjh3lLqXE7dq1C15eXujTpw8cHBzQpEkT/PDDD3KXVWJatWqF33//HVeuXAEAnD9/Hn/++Se6du1a5rXoxIXyyoJCoUBkZCS6d+8OKysrGBkZwdHREXv37tWLJrlr164BAGbMmIFvv/0WNWvWxIIFC9C2bVtcuXJF598ghRAICAhAUFAQvLy8cP36dblLKnX//vsvlixZggULFshditaSk5ORnZ0NR0dHje2Ojo560y2amxACwcHBaNWqFRo2bCh3OSVmy5YtOHv2LE6dOiV3KaXi2rVrCAkJQXBwMKZMmYKTJ09i5MiRMDMzw8CBA+Uur9gmTpyIlJQUuLu7Q6lUIjs7G19++SX+7//+r8xr0fuWkRkzZkChULx0OX36NIQQGDZsGBwcHHDkyBGcPHkS3bt3xzvvvIPExES5D6NAhT2+nAFJU6dORe/eveHp6YmwsDAoFAps3bpV5qMoWGGPb8mSJUhNTcXkyZPlLllrhT3G3BISEvD222+jT58+GDJkiEyVF59CodC4L4TIs00fDB8+HH///Tc2b94sdykl5ubNmxg1ahQ2bNgAc3NzucspFSqVCk2bNsVXX32FJk2a4OOPP8bQoUMREhIid2klIjw8HBs2bMCmTZtw9uxZrF27Ft988w3Wrl1b5rXo/XTwycnJSE5Ofuk+NWvWxNGjR+Hr64sHDx5oXEK5bt26CAwMxKRJk0q71CIp7PEdP34cHTp0wJEjR9CqVSv117y9vdGxY0d8+eWXpV1qkRT2+Pr27Yvdu3drfJBlZ2dDqVSif//+svxxFVZhjzHnDT8hIQHt27eHt7c31qxZAyMj3fufIiMjA5aWlti6dSt69uyp3j5q1ChERUXh0KFDMlZXskaMGIGdO3fi8OHDcHNzk7ucErNz50707NkTSqVSvS07OxsKhQJGRkZIT0/X+JoucnV1RadOnbBq1Sr1tpCQEMyePRvx8fEyVlYyXFxcMGnSJHz66afqbbNnz8aGDRtw+fLlMq1F77tp7O3tYW9v/8r9njx5AgB53tiNjIxkOc2psAp7fJ6enjAzM0NMTIw6jGRmZuL69etwdXUt7TKLrLDHt3jxYsyePVt9PyEhAZ07d0Z4eDi8vb1Ls8RiK+wxAtJphu3bt1e3bOliEAEAU1NTeHp6IjIyUiOM5HSV6gMhBEaMGIEdO3bg4MGDehVEAOCtt97ChQsXNLYNHjwY7u7umDhxos4HEQBo2bJlntOxr1y5Uq7fM7Xx5MmTPO8hSqVSns+8Mh8yW07dvXtX2NnZiV69eomoqCgRExMjxo0bJ0xMTERUVJTc5ZWIUaNGiWrVqonffvtNXL58WQQGBgoHBwdx//59uUsrcbGxsXp3Nk18fLyoU6eO6NChg7h165ZITExUL7poy5YtwsTERISGhopLly6J0aNHiwoVKojr16/LXVqJ+OSTT4SNjY04ePCgxs/qyZMncpdWavTtbJqTJ08KY2Nj8eWXX4p//vlHbNy4UVhaWooNGzbIXVqJGDRokKhWrZr45ZdfRGxsrNi+fbuwt7cXEyZMKPNaGEZyOXXqlPD19RW2trbCyspKNG/eXERERMhdVonJyMgQY8eOFQ4ODsLKykp07NhR/O9//5O7rFKhj2EkLCxMAMh30VXLli0Trq6uwtTUVDRt2lSvTnst6GcVFhYmd2mlRt/CiBBC7N69WzRs2FCYmZkJd3d3sXLlSrlLKjGpqali1KhRokaNGsLc3FzUqlVLTJ06VaSnp5d5LXo/ZoSIiIjKN93scCYiIiK9wTBCREREsmIYISIiIlkxjBAREZGsGEaIiIhIVgwjREREJCuGESIiIpIVwwgRERHJimGEiIiIZMUwQkRERLJiGCEiIiJZMYwQERGRrP4fh0ti8kGXAFIAAAAASUVORK5CYII=",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"(tensor([0.2892]),\n",
" tensor([0.8950]),\n",
" tensor([0.0413]),\n",
" tensor([0.2349]),\n",
" tensor([-0.2479]))"
]
},
"execution_count": 76,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lower, upper = 4, 6\n",
"\n",
"getAndGraphApproximator(lowerBound = lower, upperBound = upper)"
]
},
{
"cell_type": "markdown",
"id": "0e6ece9c",
"metadata": {},
"source": [
"σ(x) for x >= ~6 is practically 0.99999..."
]
},
{
"cell_type": "code",
"execution_count": 77,
"id": "bba9ffa5",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.9989932291799144\n"
]
}
],
"source": [
"print(sigmoid_numpy(6.9))"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "base",
"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.12.7"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment