Skip to content

Instantly share code, notes, and snippets.

@thekensta
Created April 9, 2018 18:08
Show Gist options
  • Save thekensta/de3d66213df7da8a95f0fcad35d8df66 to your computer and use it in GitHub Desktop.
Save thekensta/de3d66213df7da8a95f0fcad35d8df66 to your computer and use it in GitHub Desktop.
Price Elasticity from Analytics Made Skeazy
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"https://web.archive.org/web/20160225093224/http://analyticsmadeskeezy.com:80/2012/10/08/revenue-management-for-meth-dealers-in-flint/"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### If you used Anaconda or Miniconda to install Python\n",
"\n",
"`conda install jupyterlab pandas matplotlib seaborn`\n",
"\n",
"### if you used homebrew \n",
"\n",
"`pip install jupyterlab pandas matplotlib seaborn`"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"\n",
"import matplotlib.pyplot as plt\n",
"\n",
"# Initialised matplotlib so plots will show up inline\n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 85,
"metadata": {},
"outputs": [],
"source": [
"# Load data \n",
"# Don't have the raw data file, so just hard code it here\n",
"df = pd.DataFrame({\n",
" 'Month': np.arange(1, 19, dtype=np.int), \n",
" 'PricePerGram': [100.0] * 18,\n",
" 'CompetitorA': [105.0] * 9 + [110.0] * 9, \n",
" 'CompetitorB': [115.0] + [120.0] * 5 + [90.0] * 6 + [95.0] * 2 + [100.0] * 4,\n",
" 'Demand': [52, 55, 55.5, 54, 54, 55, 50, 48.5, 49, 49, 50, 50, 49, 48, 50.5, 51, 51, 49]\n",
"})\n",
"\n",
"# Calculated Fields\n",
"df['Revenue'] = df['Demand'] * df['PricePerGram']\n",
"df['MeanCompetitorPrice'] = (df['CompetitorA'] + df['CompetitorB']) / 2\n",
"df['PriceRatio'] = df['PricePerGram'] / df['MeanCompetitorPrice']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Plot the raw data. Always plot the raw data!\n",
"\n",
"There are lots of libraries to plot data. `matplotlib` is probably the most common. It can basic and lots of other libraries have built on top of it. For simple charts, it is a good place to start."
]
},
{
"cell_type": "code",
"execution_count": 86,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(df['PriceRatio'], df['Demand'], 'o');"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Fit a Line to the Data\n",
"\n",
"This is done in one step in Excel, built into the chart tool (fit a trend..)\n",
"\n",
"Because Regression is a massive topic, just under the hood, there are a LOT of options but we can do the same in a couple of lines of code."
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.linear_model import LinearRegression\n",
"from sklearn.metrics import r2_score"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [],
"source": [
"# Most regression uses multidimensional X (independent variables)\n",
"# so it is df[['PriceRatio']] NOT df['PriceRatio'] \n",
"\n",
"lr = LinearRegression()\n",
"lr.fit(df[['PriceRatio']], df['Demand'])"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"y = -42.15378554877636 * x + 91.39856844372405\n",
"r^2 = 0.7735289183048111\n"
]
}
],
"source": [
"# The estimates based on a model are referred to as y_hat \n",
"demand_hat = lr.predict(df[['PriceRatio']])\n",
"\n",
"# r2 (R-squared) is a measure of how good a fit we have. \n",
"# Don't worry about it here\n",
"r2 = r2_score(df['Demand'], demand_hat)\n",
"m, c, = lr.coef_[0], lr.intercept_\n",
"\n",
"print(\"y =\", m, \"* x +\", c)\n",
"print(\"r^2 = \", r2)"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAD8CAYAAABn919SAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzt3Xl4lOW5x/HvbQgkbCIQrWwGreCWEiQCigiiCLggolY91SPaU0rdsCoClVNal+optKJite5V3KqVHFur4HJUUBYTCARUVBQlYGUTBYkV4n3+mEkygYRMktnn97muXHnneZe5J2F+eXjeZ97X3B0REUl++8S7ABERiQwFuohIilCgi4ikCAW6iEiKUKCLiKQIBbqISIpQoIuIpAgFuohIilCgi4ikiGaxfLKOHTt6bm5uLJ9SRCTpFRcXb3L3nPq2i2mg5+bmUlRUFMunFBFJemb2aTjbachFRCRFKNBFRFKEAl1EJEXEdAxdRBLHzp07KSsr49tvv413KRKUlZVFly5dyMzMbNT+CnSRNFVWVkabNm3Izc3FzOJdTtpzdzZv3kxZWRndu3dv1DESPtALl65j2pxVrN9aTqd22UwY1pNRvTvHuyyRpPftt98qzBOImdGhQwc2btzY6GMkdKAXLl3H5OdKKd9ZAcC6reVMfq4UQKEuEgEK88TS1N9HQp8UnTZnVVWYVyrfWcG0OaviVJGISOJK6EBfv7W8Qe0iklzKyso488wzOfTQQznkkEMYP3483333HY888ghXXHFFvMujsLCQd999t+rxr3/9a1555ZU4VrR3CR3ondplN6hdRKKncOk6Btz2Gt0nvcCA216jcOm6Jh3P3Rk9ejSjRo3iww8/5IMPPmD79u3ccMMNEaq4pl27djV4n90D/cYbb+Tkk0+OZFkRldCBPmFYT7IzM2q0ZWdmMGFYzzhVJJKeKs9nrdtajlN9Pqspof7aa6+RlZXFJZdcAkBGRga33347Dz30EDt27GDt2rUMHz6cnj178tvf/haAb775htNOO41evXpx1FFH8fTTTwNQXFzMoEGD6NOnD8OGDePzzz8HYPDgwfzqV79i0KBB3HLLLeTm5vL9998DsGPHDrp27crOnTu5//77OeaYY+jVqxdnn302O3bs4O233+b5559nwoQJ5Ofns3r1asaMGcOzzz4LwKuvvkrv3r3Jy8vj0ksv5d///jcQuMTJ1KlTOfroo8nLy+P9998H4I033iA/P5/8/Hx69+7Ntm3bGv2zq0tCB/qo3p25dXQendtlY0DndtncOjpPJ0RFYiwa57NWrlxJnz59arS1bduWbt26sWvXLhYvXszjjz9OSUkJzzzzDEVFRbz00kt06tSJZcuWsWLFCoYPH87OnTu58sorefbZZykuLubSSy+t0cvfunUrb7zxBlOnTqVXr1688cYbAPz9739n2LBhZGZmMnr0aN555x2WLVvG4YcfzoMPPshxxx3HyJEjmTZtGiUlJRxyyCFVx/z2228ZM2YMTz/9NKWlpezatYt77rmnan3Hjh1ZsmQJv/jFL5g+fToA06dP5+6776akpIR58+aRnR35kYaEDnQIhPpbk4bwyW2n8dakIQpzkTiIxvksd691Vkdl+9ChQ+nQoQPZ2dmMHj2a+fPnk5eXxyuvvMLEiROZN28e++67L6tWrWLFihUMHTqU/Px8br75ZsrKyqqOd95559VYruzVP/XUU1XrVqxYwcCBA8nLy+Pxxx9n5cqVe6191apVdO/enR49egBw8cUX8+abb1atHz16NAB9+vRhzZo1AAwYMIBrrrmGO++8k61bt9KsWeQnGSZ8oItI/EXjfNaRRx65x9VXv/76a9auXUtGRsYeYW9m9OjRg+LiYvLy8pg8eTI33ngj7s6RRx5JSUkJJSUllJaWMnfu3Kr9WrVqVbU8cuRIXnzxRbZs2UJxcTFDhgwBYMyYMcycOZPS0lKmTp1a76dn3X2v61u0aAEEhpEqx+4nTZrEAw88QHl5Of37968aiokkBbqI1Csa57NOOukkduzYwaOPPgpARUUF1157LWPGjKFly5a8/PLLbNmyhfLycgoLCxkwYADr16+nZcuWXHjhhVx33XUsWbKEnj17snHjRhYsWAAELmlQVw+7devW9O3bl/Hjx3P66aeTkRF4Tdu2bePAAw9k586dPP7441Xbt2nTptax7sMOO4w1a9bw0UcfAfDYY48xaNCgvb7e1atXk5eXx8SJEykoKFCgi0h8RON8lpkxe/ZsnnnmGQ499FB69OhBVlYWv/vd7wA4/vjjueiii8jPz+fss8+moKCA0tJS+vbtS35+PrfccgtTpkyhefPmPPvss0ycOJFevXqRn5/P22+/Xefznnfe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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Plot the lines \n",
"x_ = np.linspace(df.PriceRatio.min(), df.PriceRatio.max(), num=25)\n",
"y_ = m * x_ + c\n",
"plt.plot(df.PriceRatio, df.Demand, 'o', label='Observations')\n",
"plt.plot(x_, y_, label='Fit')\n",
"plt.legend();"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This is all linear regression. Linear regression is a **massive** topic. It is one method of fitting a function to data.\n",
"\n",
"Fitting a function to data is what machine learning does. \n",
"\n",
"Depending on the _data_ and the expected relationship between data and output, we will use different functions and different methods.\n",
"\n",
"For example, if there is lots of noise (errors) in the raw data, we will want to fit the data with a method that is _\"robust\"_ \n",
"\n",
"- this also depends on the type of noise or errors!\n",
"\n",
"If we had a binary (0 or 1) output we might use Logistic Regression. This fits a different function (curve rather than a straight line) and is used in classification.\n",
"\n",
"\n",
"There are many ways to perform Linear Regression. The `seaborn` library build it into charts, like Excel does. \n",
"Other ways exist to plot the relationship"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<seaborn.axisgrid.FacetGrid at 0x7f64833dea20>"
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 360x360 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import seaborn as sns\n",
"\n",
"sns.lmplot('PriceRatio', 'Demand', data=df)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### From Above Linear Estimate \n",
"\n",
"Linear Relationship $y = mx + c$\n",
"\n",
"$m = -42.15378554877636$\n",
"\n",
"and\n",
"\n",
"$c = 91.39856844372405$\n",
"\n",
"#### Demand\n",
"\n",
"PriceRatio = OurPrice / MeanCompetitorsPrice = $\\frac{P_o}{P_c}$\n",
"\n",
"Demand = -42 * PriceRatio + 91\n",
"\n",
"Demand = -42 * (OurPrice / MeanCompetitorsPrice) + 91\n",
"\n",
"$D = -42 \\frac{P_o}{P_c} + 91$\n",
"\n",
"\n",
"#### Revenue\n",
"\n",
"$R$ = Revenue = Demand * Price = $D * P_o$\n",
"\n",
"$R = P_o * (-42 \\frac{P_o}{P_c} + 91)$\n",
"\n",
"$R = -42 \\frac{P_o^2}{P_c} + 91 P_o$\n",
"\n",
"\n",
"**Now Revenue is defined in terms of our price and our competitor's price**\n",
"\n",
"Revenue _is a function of_ price \n",
"\n",
"Understanding what-is-a-function-of-what is **really** important! It means some output **depends** on some input.\n",
"\n",
"$R(P_o)$ means Revenue is a function of our price.\n",
"\n",
"In business-land we are normally looking for outputs, like profit or revenue, that depend, in predictable ways, on things we can control, like marketing spend. Or prices.\n",
"\n",
"This can get quite abstract - like _who-a-person-is_ is a function of _some-image-pixels_ for facial recognition.\n",
"\n",
"The function mapping one to the other is much, much more complex"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"From the link:\n",
"\n",
"> “Yes, although for the moment, let’s assume that your competitor’s price is fixed, ok? Whatever p-c is, let’s assume it’s stuck there,” I answered, “That way all we need to worry about is moving our price around their price.”\n",
"\n",
"Assume that $P_o$ is **constant** i.e. 1\n",
"\n",
"Then plot the likely values to see the shape of the curve"
]
},
{
"cell_type": "code",
"execution_count": 68,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"price_ratio = np.linspace(0, 2.5, num=100)\n",
"revenue = -42 * (price_ratio ** 2) + 91 * price_ratio\n",
"plt.plot(price_ratio, revenue)\n",
"plt.xlabel(\"Price-Placeholder\")\n",
"plt.ylabel(\"Revenue-Placeholder\");"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Depending on the values found above, we get different shaped curves\n",
"\n",
"Which would describe different relationships\n",
"the important bit is the **sign** (+/-) of the coefficents"
]
},
{
"cell_type": "code",
"execution_count": 71,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYoAAAEKCAYAAAAMzhLIAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzs3XdYFMcbwPHv0os0QUQFBRUUpYti7zX2XhM1URNLetGYWBLzS9cYY0xsiSWWxI41icbeQbCLXVFBem8HN78/TolGhVOBO2A+z3NPvLvdnffiee/uzsw7ihACSZIkSXoSA10HIEmSJOk3mSgkSZKkAslEIUmSJBVIJgpJkiSpQDJRSJIkSQWSiUKSJEkqkEwUkiRJUoFkopAkSZIKJBOFJEmSVCAjXQdQFBwcHISrq6uuw5AkSSpVQkND44QQlQrbrkwkCldXV0JCQnQdhiRJUqmiKMoNbbaTt54kSZKkAslEIUmSJBVIJgpJkiSpQDJRSJIkSQWSiUKSJEkqkEwUkiRJUoFkopAkSZIKVCbmUUhSYYQQpGTmEpeeTXxaDgnpOaRn55Kek0tGTh65eWpy1QK1AENFwdhIwdjAAAtTQ6zMjLEyNcLO0gSHCiY4VDDFzNhQ1x9JkkqMTBRSmRKTmkVEdCpXY9O5EpvG9fgMbidmcCcpi0xVXpG1U9HSBGc7c1zsLKhhb0Ftxwq4O1pR27EC5iYyiUhli0wUUqmVnKHiRGQiYTcSOXkrmbN3UohLy85/v4KpEa4OFrg7WtG6jiNVbMyoZGVKRUsT7CxMsDYzxsLUEAsTQ4wNDTBUFAwMFPLUAlWempw8NZk5eaRm5ZKapSIhPYfY1GxiU7OJSskiMiGDc1Ep/Hk2mly1AMBAgdqOFfCqaoO3sw2BNSriWcUKI0N5l1cqvWSikEqNlCwVR68mcPByHIevxBNxNxXQ/Dh7VLailUcl6lW1xtNJc2ZfycoURVGeuh1DAwVDA0PMjA2xNjOmsnXB26vy1NyIT+fS3TTOR6dy9nYyBy7HsT7sNgAWJoYEVLejWW0Hmtd2oF5VawwNnj4uSdIVRQih6xieW2BgoJC1nsqmq7Fp7Dofw64Ldwm5nkiuWmBmbEBD14oEuVUkoIYdvs62WJrq3znPnaRMQm4kEno9gaPXErgQrUlsdhbGtKnjSDvPyrT0cMDKzFjHkUrllaIooUKIwEK3k4lC0jeXY9LYeiqK7Wei8n9c61S2oq2nI608KuFf3RZTo9LXDxCTmsXhK/HsiYhld0QMSRkqTAwNaOnhQFefKrT3rCyThlSiZKKQSpW4tGyCw++wIew2p28noyjQsEZFOns50bF+ZZztLHQdYpHKzVNz4mYSf56NZtvpKKKSszAxMqBDvcr0C3CmhbuD7NeQip1MFJLeU6sFB6/EsfLoTf4+d5dctcCrmjW9/Z3p7lMFR2szXYdYItRqQVhkEsHhtwk+eYfEDBWVrEwZEOjMoIbVcalYtpKkpD9kopD0VkqWij+OR7Ls8A1uJmRgZ2FMvwbO9A90waOyla7D06mcXDW7I2JYExLJPxdiEEArj0qMaOpKK49Kz9Q5L0lPIhOFpHciEzJYtP8qa0JvkZGTRyPXigxtXJ3OXk6lss+huN1JymT18UhWHbtJbGo2tR0r8HIzN/oEVJMT/qQiIROFpDfOR6Xw894rbDkVhYEC3X2r8nIzN7yq2eg6tFIhJ1fN1tN3WHzgGmdup+BQwZRRLdwYGlRddn5Lz0UmCknnzt1JYfbOi/x17i6WJoYMbVyDl5u54WRTPvoeipoQgiNXE5i35zL7L8VhbWbEy83deLm5G9YyYUjPQCYKSWcu3U1l5l8X2XE2GiszI15p7sbIpm7YWMgfs6Jy6lYSc/+5zF/n7mJjbsyYljUZ0dRVL+eTSPpLJgqpxEUlZ/Ld3xdZG3oLCxPN2e4rzd2wMZcJoricvpXMdzsv8s+FGBwqmPJ2B3cGBrrIobWSVmSikEpMenYuP+25wsL9VxECXmxSg/FtalPR0kTXoZUboTcS+XL7eY5fT6RmJUsmd/GknaejHCUlFUgmCqnYqdWC9WG3+XrHBWJSs+npV5X3O9Upc5PjSgshBDvPx/Dl9vNciU2nhbsDU7vVw72cDzmWnqzUJApFUQyBEOC2EKKboihuwGqgInACeFEIkVPQMWSiKHln7yTz8cYzhN1MwtfFlmnd6xFQ3U7XYUloihQuP3yD73ZeJCMnjxFNXXm7gwcVZP+F9B/aJgp9uJH5JnD+gedfAd8JIdyBROAVnUQlPVZqlorpwWfp/sMBbsZn8G1/XzaMbSqThB4xNjTg5eZu7HmvNQMCXfjl4DXaz9zL9tNR6PrEUCqddJooFEVxBroCi+49V4C2wNp7mywFeukmOum//j53lw6z9rH08HWGBtXgn3db06+BMwayZLZesq9gyhd9vFk3til2liaMXXGCV5aGcCcpU9ehSaWMrq8oZgMfAOp7z+2BJCFE7r3nt4BqughM+ldsajbjV55g9LIQbC2M2TCuGTN6ecnhrqVEQHU7Nk9oxsddPTl8JZ6O3+1jxdEbqNXy6kLSjs4ShaIo3YAYIUTogy8/ZtPHfpsVRRmjKEqIoighsbGxxRKjBFtPRdHxu738ffYu73X0IHhCc/xcbHUdlvSUjAwNGNWiJn++1RJfFxs+2nCGIYuOEJmQoevQpFJAZ53ZiqJ8AbwI5AJmgDWwAegEOAkhchVFaQJMF0J0KuhYsjO76CWm5zA1+CybT97Bx9mGmf195eiZMkIIwR8hkczYoukanNLNkwGBLnIobTmk953ZQogPhRDOQghXYBDwjxBiKLAb6Hdvs+HAJh2FWG4dvBxH5+/3sf10FO928GD92KYySZQhiqIwsGF1tr/ZgvpVrZm47jSjl4UQ/8B645L0IF33UTzOROAdRVEuo+mzWKzjeMqN7Nw8Pt92nqGLjlLB1IiN45vxejt3Ocu3jHKpaMGq0Y35uKsn+y7G0fn7/ey/JG/jSo/S+TyKoiBvPT2/G/HpTFgZxunbyQwNqs7HXethbiJLWZcX5+6k8MbqMC7HpDGmZU3e71QHY3mCUOZpe+tJzsCR2HoqiknrTqEoMP/FBnSq76TrkKQSVq+qNZsnNOezredYsO8qIdcTmDskgKq25roOTdID8pShHMvJVTN10xnGrzxBLccKbHuzhUwS5Zi5iSH/6+3ND4P9uXg3jRfm7Gf3hRhdhyXpAZkoyqno5CwGLjjMssM3GNXcjT9ebSJrNEmAZmGp4AnNcLI2Y+SS43z390U556Kck4miHDpyNZ5uP+znYnQq84YG8HG3epgYya+C9K+alSqwcXwz+gY48/2uS4xaFkJypkrXYUn/lZdb+DZFQP46lCNCCJYdvs7QRUexNjdm04RmvOBdRddhSXrKzNiQb/v7MKNnffZdjKXn3ANcupuq67Ck+/JyYX5LODin2JuSiaKcyMlVM3nDaaZuOktrj0psGt+M2o5yboRUMEVReLGJK6vHNCYtO4/e8w7xz4W7ug5LAjj1O8SchYpuxd6UTBTlQEJ6DsMWHWXVsUjGta7FgpcCsZJrLEtPIdC1IsETmlHD3oJXlobw894rshKtLuXmwN6voIov1O1W7M3JRFHGXYlNo/e8g4TfSuL7QX580LkuhrLaq/QMqtqas+a1JrzgVYUvt19g0rrTqPLUhe8oFb3w3yDpBrSdAiVQekXOoyjDDl2J47XloRgbGrBqdGMa1JBrRkjPx8LEiLlD/Kn1tyVz/rnMraQM5g1tINdFL0mqLNj7DbgEQe32JdKkvKIoozaG3Wb4L8eobG3GxvHNZJKQioyiKLzTsQ7f9vfl2LUE+v10iFuJsgptiQldAql3oO3HJXI1ATJRlDlCCH7ac4W3fg+nQQ071o5tiktFOT9CKnr9Gjiz9OVGRKdk0fenQ5yPStF1SGVfTjrsnwluLTWPEiITRRmSpxZMDz7LVzsu0N23KktfbiRvCUjFqmktB9a+1hQFhQE/H+bwlXhdh1S2HZ0P6THQ5uMSbVYmijIiJ1fNm6vDWHr4BqNbuPH9QD9MjWRRP6n41XGyYv24pjjZmDH8l2NsOx2l65DKpsxEODgbPDpD9aASbVomijIgIyeXV5YeZ8upKD7sUpePutaT61hLJaqqrTlrX2uKj7MNE1ae4PfjN3UdUtlz6AfIStb0TZQwmShKueQMFUMXHeXg5Ti+7uvDq61q6TokqZyysTBm+StBtHCvxMR1p5m/94quQyo70mLgyE/g1Q+cvEu8eZkoSrG4tGwGLTzC2dspzBvagAENXXQdklTOmZsYsvClQLr5VOGL7Rf49s8IOTGvKOz7FnKzoc1knTQv51GUUtHJWQxddITbSZksGh5IS49Kug5JkgAwMTLg+0H+WJkZMXf3ZbJUeXzU1VOuyf2skm5CyC/gPwzsdXPHQCaKUuhWYgZDFh4lPi2bpSMbEVTTXtchSdJDDA0UPu/tjamRIYsOXCM7V80nPerLvrNnsftzMDCEVhN1FoJMFKVMZEIGgxceITlTxW+jgvCvLifSSfpJURSmda+HqbEB8/deRZWn5vPe3jJZPI27Z+Hkamj6OthU01kYMlGUIpEJGQxacITULBUrRgXh42yr65AkqUCKojCpc12MDQyYu/sygEwWT2PXDDC1huZv6zQMmShKiftJIi07l5WjG+NVzUbXIUmSVhRF4d2OHigK/PCPTBZau3EYLm6HdlPBoqJOQ5GJohS4nZTJ4IWaJLFiVJBMElKpoygK73TwADTJQlE0yUJ2cD+BELBzOlRwgqCxuo5GJgp9dzcliyELj5CcoWLFaJkkpNLrfrJQC8GPu69gamTItO71ZLJ4nIs7IPIIdJ0FJrqv1SYThR6LTc1m8MIjxKVms1z2SUhlgKIovNexDtkqNYsOXMPUyIBJXerKZPGgvFz4exrY14aAl3QdDaBFolAUxQA4JYTwKoF4pHuSM1S8uPgoUUlZLH25EQFydJNURiiKwkddPcnOVTN/31XMjA15+95tKQkIXwFxETBgORjqR1HPQhOFEEKtKMpJRVGqCyFkAZcSkJ6dy4glx7gam87iEYE0ctNtR1ZZ99+Zw/LstvgpisInPeqTpcrj+12XsDY35pXmxb/2s97LyYA9X4BzI/Dsruto8ml766kKcFZRlGNA+v0XhRA9iiWqcixLlceY5SGcupXMj0MCaOEuZ1wXJF2Vzt2Mu8RnxhOfFU9CZgKJ2YkkZyeTkpNCSnYK6ap0MnIzyFBlkJWXRXZeNjl5OeSqc8kTeajFw8t5GigGGClGGBkYYWZkhqmhKaaGplgaW+Y/rE2ssTG1wcbUBltTW+zN7bE3s8fB3AFHC0dMDE109H+k9DAwUPiijzepWbnM2HIOKzMjBgSW8zI0R+ZBahT0X1JiixJpQ9tE8UmxRiEBmvUk3lodzsHL8czs70tnLyddh6RzGaoMbqbe5GbKTSJTI7mddps76XeISosiOj2ajNxHV1ZTUKhgUgEbExusTKyoYFIBJwsnzI3NMTPU/PCbGJpgbGCMoYEhhoohCpp/lAJBrjqXXJGLKk9FTl5OfnLJUGWQrkrndtptzuecJzk7mczczMfGbWdqh5OlE1UrVKVqhapUq1CN6lbVqW5dnaoVqmJsoB+3FHTNyNCA7wf7MWppCJPWncLazIjOXlV0HZZupMfBgdlQpytUb6zraB6iVaIQQuxVFKUG4C6E2KkoigUgFzsoQkIIPt54hh1no5narR59GzjrOqQSla5K51LiJS4nXeZy0mWuJF3hWvI17mbcfWg7W1NbqlhWwc3GjSZVm+Bo4YijhSMO5g7Ym9ljb26PjYkNhgYl8/XMycshMSuR+Kx44jPjicuM427GXWIyYohOj+Z68nUO3Tn0UEIxUoxwtnLGzcaNWra1qG1bG3c7d9ys3TDWk3vSJcnUyJD5LzZg2KKjvLEqnKUvm9CkVjksS7P3K1BlQPtpuo7kEYo2lR0VRRkNjAEqCiFqKYriDvwshGhX3AFqIzAwUISEhOg6jOcy868IfvjnMuPb1OL9TnV1HU6xSslJ4WzcWc7Gn+Vc/DkiEiK4mfpv95eFkQW1bGvhau2Km40bNaxr4GLlgouVCxVMKugw8mcjhCA+K57I1EhuptzkRsoNriVf42ryVW6m3CRX5AJgZGCEu607nvaeeFb0xMvBCw87j3JzGyspI4d+Px/mbnIWv7/ahHpVrXUdUsmJuwTzGkPAcOg2q8SaVRQlVAgRWOh2WiaKcKARcFQI4X/vtdNCiJIvjP4YpT1RLDt8nambzjKooQtf9Clbk5DUQs3VpKuEx4YTHhPOydiTXE+5nv++cwVnPO09qVuxLh52HrjbuVPFsgoGSvmogK/KU3Et5RqXEi8RkRjBhfgLnE84T1J2EgDGBsbUrVgX30q++Dn64VfJj8qWlXUcdfG5k5RJ358OkasWrC9P672vHgpX98IbYVCh5PolizpRHBVCBCmKEiaE8FcUxQg4IYTweY4AXYBlgBOgBhYIIb5XFKUi8DvgClwHBgghEgs6VmlOFDvORDN2RSjt6lbm52EBGBmW7h9ItVBzKfESR6OOEno3lBMxJ/J/9CqaVcSnkg8+Dj7Ud6hPffv62JjKCYT/JYQgKj2KM3FnOBN3hpOxJzkbf5bsvGxAk1wDnQIJrBxII6dGVKlQtu7pX7qbSr+fD2NvacK6sU2xsyzjV1TXD8KSF6DtFGj5Xok2XdSJ4msgCXgJeB0YB5wTQnz0HAFWAaoIIU4oimIFhAK9gBFAghDiS0VRJgF2QogC6+uW1kQReiOBIQuPUq+qNStHNcbcpHR2+0SnR3Pw9kEO3TnE8ejjJGZr8rqLlQuBlQMJqBxAgGMALlYuZepqqSSp8lRcSLhAWEwYoXdDCY0JJTk7GYAa1jUIcgqiabWmBDkFlcrbc/8Vcj2BIYuO4l3NhhWjgjAzLp3/NgqlVsOidpB2FyaElPgs7KJOFAbAK0BHQAH+BBaJIly6SlGUTcDce4/WQoioe8lkjxCiTkH7lsZEcTU2jT4/HcLOQnPWVLEUnTWp1CrCY8LZd2sf+2/t50qyZslLR3NHGldtTFCVIBo5NcLJUo7aKi73r9yORR/jSNQRQqJDyMjNwEgxwtfRlxbVWtDapTU1bWqW2uS8/XQU41aeoHN9J+YOCcCwLBYRPLUG1o+CXj+D3+ASb75IE0VxUxTFFdgHeAE3hRC2D7yXKIQocFpyaUsUCek59J53kLSsXNaPa0oNe0tdh1SodFU6B24fYNfNXRy4dYBUVSpGBkYEVg6kebXmNK3alNq2tUvtj1Jpp8pTER4bzsHbBzlw+wARiRGA5jZVa5fWtK3elgDHgBIbDVZUFh+4xowt53i5mRtTu9fTdThFKycD5jYES3sYvQcMSv62s7aJosDhsYqinAaemEmep4/igTYqAOuAt4QQKdr+0CiKMgbNSCyqV6/+vGGUmCxVHmOWhRCdnMWqMY31Okmk5KSwJ3IPf13/i0N3DqFSq7AztaNdjXa0dm5N46qNsTTW3/jLE2NDYxo6NaShU0PeavAW0enR7Lu1j7239vJHxB/8dv437EztaFO9DR1rdKRRlUalYi7HK83duJWYwS8Hr+HmYMGLTVx1HVLROfwjpNyCPvN1kiSeRoFXFPfmTgCMv/ff5ff+OxTIEEJ8+lyNK4oxsAX4Uwgx695rEZTRW09CCN5cHU7wyTvMGxrAC9761wmZocpgd+Rutl/bzsE7B8lV51LFsgrta7SnXfV2+FXyK3VnpeVduiqdg7cPsuvmLvbe2ku6Kh0bUxvaV2/PC24v0KByA73+O81TC8YsC2HPxVgWDw+kdR1HXYf0/FKi4IcGUKsNDFqhszCKuo/ioBCiWWGvPWWACrAUTcf1Ww+8/g0Q/0BndkUhxAcFHau0JIpZf19kzq5LfNC5DuNa19Z1OPly1bkcvnOYzVc3s/vmbrLysqhsUZnOrp3p5NoJLwcveUupjMjOy+bg7YP8ef1P9kTuISM3g0rmleji1oUetXpQp2KB52Q6k56dS/+fD3MzIYN1Y5tSx8lK1yE9n03j4eTvMP4o2NfSWRjFMY9ighDiwL3nTYF5Qgi/5wiwObAfOI1meCzAZOAo8AdQHbgJ9BdCJBR0rNKQKIJP3uGNVWH0b+DM1/189OKH93LiZTZe3siWq1uIz4rHxtSGzq6d6eLWBX9H/3Izl6G8yszNZO+tvWy9upUDtw+Qq86ljl0detTqQbda3ahopl/FKKOSM+k59yDGhgZsmtAMhwqmug7p2USdhPmtoMl46PQ/nYZS1ImiAfALcH/QexLwshDixHNFWUT0PVGERyYxcP5hfJ1t+W1UECZGuvsBTlels+3aNjZc2sDpuNMYGRjRyrkV3Wt1p2W1luWyhIQEiVmJ7Li+g+DLwZyJP4ORYkRrl9b0du9Ns6rN9ObW1OlbyfSffwjvajb8NioIUyP9iEtrQsCSrhBzXjO5zly3a8wUy6gnRVGs7+2T/DzBFTV9ThTRyVn0mHsAEyMDNo1vhr2OzoLOxZ9jzcU1bLu6jYzcDGrb1qZ37d56eeYo6dblxMtsuLyBzVc2k5idSBXLKvR170sf9z5UstB9NeMtp+4wYaV+XZ1r7ewGWDNCs3Jdw1d0HU3RJApFUd4paOf7HdC6pq+JIkuVx4D5h7kSk8b6cc1K/L5qdl42f13/i9UXVnMq7hRmhmZ0cu1E/zr98XEoZf/ApBKnylPxT+Q/rLm4hqNRRzFSjGhXox2D6gyiQeUGOv3+zPorgjn/XObjrp6MalFTZ3E8FVUmzG0EZtbw6j7Qg6u0IhkeC5TyHiPdEULw4frTnL6dzMIXA0s0ScRmxLI6YjVrL64lISsBV2tXJjacSI/aPbA2KUeF1qTnYmxoTCfXTnRy7cSNlBv8EfEHGy5v4M/rf+Ju584wz2F0rdkVU8OSv0p+q70HF++m8fm289Rxsiod67YcmgvJN6HXZr1IEk9DLybcPS99vKJYuO8q/9t2nnc7ePB6O/cSafN8/HmWnVvGjus7yFPn0cq5FYM9B9O4SmPZMS0ViczcTLZf286K8yu4mHiRimYV6e/Rn0F1B+Fg7lCisaRn59Jn3iGiU7LYPKE51e31uIBgyh3NcNja7WHg8sK3LyFF3ZntDPwANEMzAe8A8KYQ4tbzBloU9C1R7L8Uy/BfjtGpvhPzhgYU6yW6EIKDdw6y5OwSjkYdxcLIgt7uvRlSdwjVrUvPRESpdBFCcDz6OL+d/409kXswNjCme63uvFT/JWralNytoBvx6fSYe5AqNmasG9sUS1Nt12IrYetGwblgmHAM7Fx1HU2+ok4UfwMr+XfC3TBgqBCiw3NFWUT0KVFEJmTQ7YcDOFmbsX5c8X1xc9W5/H3jbxafXkxEYgSO5o4MrTeUfh795O0lqUTdSLnBsrPL2HRlE9l52bR1acso71F4VyqZVQj2XYxlxK/H6OzlxI9DivfE7JncOAy/doaW70Pbj3UdzUOKfB7Ff+dMPO41XdGXRJGlyqPPvEPcSsxg8+vNi6U8hypPRfCVYBafWUxkaiRuNm6MrD+SbjW7yaGtkk4lZCWw6sIqVp5fSUpOCkFOQYzxGUNDp4bF/uO9YN8VPt92gQ+71OXVVrqbwPYIdR4saAUZiTDheIlXhy1MUXVm3xenKMowYNW954OB+GcNriwSQvDRhjOci0rhlxGBRZ4ksvOyWX9pPb+c+YXo9Gjq2dfju9bf0bZ6W9n/IOmFimYVGe83nhH1R7D24lqWnl3KK3+9QoBjAK/6vEqTqk2KLWGMblGT8MgkvtpxAe9qNjStXbL9JU8U+itEn4b+S/QuSTwNba8oqqMp/90ETR/FITR9FDeKNzzt6MMVxfIjN5iy8QxvtnPn7Q4eRXbcnLwcNlzawILTC4jJiMGvkh+v+r5Ks6rN9O8SW5IecP/kZvHpxdzNuItvJV/G+42ncZXGxfLdTcvOpefcAyRlqNjyRnOq2JgXeRtPJSMBfgiAyl4wfDPo4b/XUlVm/HnpOlGERybR/+dDNK/twOLhDTEogrr5KrWK4MvB/HzqZ6LTo/F39Gec3ziCnIJkgpBKlZy8HDZe3sjC0wuJTo8mwDGACf4TaOjUsMjbuhyTSs+5B3GvbMUfrzbRaRUEtrwNoUvhtQNQWT9LpBd1H0UlYDSa5Unzb1cJIV5+jhiLjC4TRWJ6Dt1+OADA1jeaY2vxfAsQqYWaP6//yY/hP3Ij5QY+Dj6M9xtfrJftklQScvJyWHdpHQtPLSQ2M5amVZvyRsAb1LevX6TtbDsdxbgVJxjR1JXpPYr22Fq7fQIWtoWg16DLl7qJQQtF3UexCU0Bv51A3vMEVpao1YK3/wgnNjWbtWObPFeSEEJw+M5hvjvxHRcSLlDbtjZz2syhtUvrUpEgVCoVt27dIisrS9ehSHrMDz/mes8lThXH5xGfM2jLIDrU6MCbAW9Sw7pG4QfQwgveVRjZzJVfD16noWtFuvqUcDl/tRq2vQcVHKHNhyXbdjHRNlFYFLZudXk0b89l9kTEMqOXFz7Oz17c61z8OWaFzuJo1FGqVajGFy2+4AW3F0pVJ/WtW7ewsrLC1dW1VCQ2SXeEEMTHxzPXci47Unaw7Nwydt/cTT+Pfrzm+xr25vbP3caHXTwJj0xi4rpTeFaxomalElxHPGw53A6FPgvBzKbw7UsBbX+JtiiK8kKxRlLKHLkaz6y/L9LTryrDgp5tYlt0ejQfHfiIQVsGEZEQwcSGEwnuFUy3mt1KVZIAyMrKwt7eXiYJqVCKomBvb48qR8UE/wls67ONPu59WHNxDV03dGXR6UVk52U/VxsmRgbMHRKAkaHCuBUnyFKV0I2QjATYOR1qNAPv/iXTZgko8NdIUZRURVFSgDfRJIssRVFSHni9XIpLy+aNVWG42lvyeW/vp/5xzFBlMDdsLt03dGfHtR2M8BrBtj7bGFZvGCaGz9fHoUsySUjaevC74mDuwJQmU9jQcwMNnRry/Ynv6b6hO9uvbed5BttUszVn9kA/LkSn8snmc0URduF2fQJZyfDCt3o5yulZFZhTTUjTAAAgAElEQVQohBBWQgjre/81EEKYPfC8XE7/VasFb/8eTlKmirlDAp5q5rUQgi1Xt9B9Y3fmn5pPG5c2BPcO5p0G72BlIusvlpQXXniBpKSkAreZOnUqO3fufKbj79mzh27duj3TvuWZm40bP7T9gcUdF2NrassH+z5g+I7hnI0/+8zHbF3HkbGta7Hq2E02n7xThNE+RuRxCF0Cjcfq7SinZ6XVr9y9ZUuHAm5CiBmKorgAVYQQx4o1Oj30094r7L8Ux/96e1Gvqva58lz8OT4/+jknY09S374+M1vNxM9RLya2lxtCCIQQbNu2rdBtP/30uZaDl55DoyqNWNV1FcFXgpl9YjaDtwymt3tv3gx485nWTnmngwfHriXw4frT+DjbFEvFBPJyNcNhratB60lFf3wd0/ZG+Dw0k+2G3HueBvxYLBHpsdAbCcz6+yLdfKowpJF2/RJJWUl8evhTBm0ZRGRqJDOazWBl15UySRSTWbNm4eXlhZeXF7Nnz+b69et4enoybtw4AgICiIyMxNXVlbi4OABmzJhB3bp16dChA4MHD+bbb78FYMSIEaxduxYAV1dXpk2bRkBAAN7e3ly4cAGAY8eO0bRpU/z9/WnatCkRERG6+dBlkKGBIb3de7O191aG1x9O8OVgum3oxsrzK8lV5z7VsYwNDZgz2B9DA4UJK8PIzi2G/opj8+Huaej8JZiWvbsD2iaKICHEeCALQAiRCJTem+nPIDlTxRurwqlqa8bnfQrvl1ALNesurqPbxm6sv7SeYfWGsaX3FnrV7lXqOqpLi9DQUH799VeOHj3KkSNHWLhwIYmJiURERPDSSy8RFhZGjRr/DsEMCQlh3bp1hIWFsX79egqai+Pg4MCJEycYO3ZsfjKpW7cu+/btIywsjE8//ZTJkycX+2csbyqYVODdwHdZ13Md9e3r88WxLxi0ZRDhMeFPdZxqtuZ829+X07eT+XpHESf05Nuw+3Nw7wie3Yv22HpC2xvsKkVRDNGU77g/AU9dbFHpGSEEk9ef5m5KFmtea4K1WcHF9yISIphxZAYnY08S4BjAx40/xt2uZNak0AefbD7LuTtFO9ahXlVrpnUvePLUgQMH6N27N5aWmlsLffr0Yf/+/dSoUYPGjRs/dvuePXtibq4p9dC9+5P/kffp0weABg0asH79egCSk5MZPnw4ly5dQlEUVCrVM302qXA1bWqyoMMC/r7xN18f/5oXt79IX/e+vBXwFrZm2g1N71CvMi81qcHiA9do4e5A6zqORRPcnx+COhe6fF2mOrAfpO2p7RxgA+CoKMr/0KxH8XmxRaVn/giJZOvpKN7tWAf/6nZP3C5DlcHMkJkM3DKQyNRI/tf8fyzpvKRcJQldetIImfuJQ9vtH8fUVLOKm6GhIbm5mlsfU6ZMoU2bNpw5c4bNmzfLyYbFTFEUOrp2JLhXMMPrDWfj5Y302NiDzVc2a/13OfkFT+pUtuK9NSeJTX2+IbgAROyAc5s0JcQruj3/8fSUVlcUQogViqKEAu0ABeglhDhfrJHpiSuxaUwPPkfz2g682vLJC7Lsv7Wfz458xp30O/R178vbDd7GxrRsTLZ5WoWd+ReXli1bMmLECCZNmoQQgg0bNrB8+XIWLFjw2O2bN2/Oq6++yocffkhubi5bt25l9OjRWreXnJxMtWrVAFiyZElRfARJCxbGFrzX8D161O7BJ4c/YfKByWy6sompjacWuliXmbEhPwzxp/sPB3h3zUmWjHiO2mzZaZoZ2JU8oekbz3aMUkKrKwpFURoDt4UQPwoh5gK3FEUJKt7QdC8nV82bq8MwMzZg5gDfx36hErISmLhvIuN2jcPMyIwlnZcwven0cpskdCkgIIARI0bQqFEjgoKCGDVqFHZ2T74CbNiwIT169MDX15c+ffoQGBiIjY32f28ffPABH374Ic2aNSMvT1a2KWkedh4s77Kcj4I+4mzcWfoE9+GXM78U2tntUdmKj7vVY9/FWH45eO3ZA9j9OSRHQvfvwaiMd9neHzJY0AMI414BwXvPDYAT2uxbEo8GDRqI4vDl9vOixsQtYseZqEfeU6vVYsuVLaLFqhbCb5mf+DHsR5Gdm10scZQG586d03UIzyQ1NVUIIUR6erpo0KCBCA0N1XFE5UdRfmei06LFG7veEF5LvET/4P7iQvyFArdXq9XilSXHhftH28T5qOSnb/B2mBDTbYUIfvMZI9YPQIjQ4jdW2z4K5d5B7ycXNdp3hJdKR67G8/PeKwxu5EKn+k4PvRebEcsbu99g0v5JuFi5sKbbGsb5jSvVs6rLqzFjxuDn50dAQAB9+/YlICBA1yFJz6CyZWVmt5nNzFYzuZtxl0FbBvFj+I+o8h4/wEBRFL7q6421mTFvrQ5/uhIfebmw+Q2wrATtpxdJ/PpO2x/7q4qivAH8dO/5OOBq8YSke8mZKt75PRxXe0umdPt3hqW4N7P6i2NfkJOXw3uB7zHMcxiGBoY6jFZ6HitXrtR1CFIRud/Z3cipEV8d/4qfT/7MPzf/4bNmn+Fp7/nI9vYVTPmmnw8jlxznmz8jHvq3XqAj8yDqpGbVOvNnLwZammh7RfEa0BS4DdwCgoAxxRWUrk3bdIa7qdnMHuiHhYkml8ZlxvHm7jeZfGAytW1rs7b7WobXHy6ThCTpGVszW75o8QVz2swhISuBIVuHMC98Hir1o1cXbeo65g+ZPXAprvCDJ1zV9E3U6Qr1ehVD9PpJq0QhhIgRQgwSQjgKISoLIYYIIWKKOzhd2Hoqio3hd3i9bW18XTRnC39d/4vem3pz8PZB3gt8j187/YqrjatuA5UkqUBtqrdhY8+NdHLrxE8nf2LYtmFcSbryyHaTX/CkViVL3l97kuTMAubCCAGb3wJDY+hator+FUbbUU9miqKMVxRlnqIov9x/FHdwJS0mJYuPNp7G19mG8W1qk5KTwof7P+Tdve9SrUI1/uj+h7yKkKRSxMbUhi9bfMms1rOISotiwOYBLD27FLX4d76wmbEhswb4EZOazSfBBRQgDF8B1/Zq+iWsqxZ77PpE21tPywEnoBOwF3AGUosrKF0QQvDBulNkqfKYNdCP8NhQ+gb3Zfu17Yz1HcvyF5ZTy7aWrsOUJOkZdKjRgfU919O0alO+DfmWMX+NITo9Ov99XxdbXm9bm/Vht9l+OurRA6RGw5+ToXoTaDCyBCPXD9omitpCiClAuhBiKdAV8C6+sEreqmOR7ImI5f1OtQi+uZBX/nwFU0NTlnVZxji/cRgbFFy2Qyr7kpKSmDdvXv7zO3fu0K9fPx1G9LDY2FiCgoLw9/dn//79rFmzBk9PT9q0aUNISAhvvFHwpDBtyq8/ycaNGzl3roTWfHhGDuYOzGk7h2lNpnEq7hR9gvuw4/qO/PfHt6mNj7MNkzecJib1gVn2QsDWdyE3G3rMBYPyV6tN2098/8ZdkqIoXoAN4FosEd2jKEpnRVEiFEW5rChKsdbtjUzI4H9bz9Ggloq/Eqfwy5lf6OPehz+6/YFPJZ/ibFoqRf6bKKpWrZpfYVYf7Nq1i7p16xIWFkaLFi1YvHgx8+bNY/fu3QQGBjJnzpwC99+2bRu2ts82iqc0JArQjIzq59GPNd3X4Grtyvt732fqwalkqDIwNjRg1gA/MnLymLz+zL9lQc6uhwtboM1kcKit2w+gK9pMtgBGAXZAKzTDYmOA17TZ91kegCFwBaiJpkrtSaDek7Z/ngl3eXlqMWD+QVH/609Fg+WBotmqZmLn9Z3PfLzyStcT7q5duybq1q0rRo0aJerVqyc6dOggMjIyhBBCXL58WXTq1EkEBASI5s2bi/Pnz+e/HhQUJAIDA8WUKVOEpaWlEEIzCa9t27bC399feHl5iY0bNwohhBg4cKAwMzMTvr6+4r333hPXrl0T9evXF0II0ahRI3HmzJn8eFq1aiVCQkJEWlqaGDlypAgMDBR+fn75x/qvr776Snh5eQkfHx8xceJEIYQQYWFhIigoSHh7e4tevXqJhISEJ36esLAw4eLiIhwcHISvr6+YPn26sLS0FB4eHuK9994Tu3fvFl27ds3/fCNGjBBeXl7C29tbrF27VgghRI0aNURsbKwQQojly5eLhg0bCl9fXzFmzBiRm5srhBDC0tJSTJ48Wfj4+IigoCARHR0tDh48KOzs7ISrq6vw9fUVly9fFt9//73w9PQU3t7eYuDAgY/9zLr+zuTk5YjvQ78X3ku8Rdf1XcWZOM3f38J9V0SNiVvEutBIIdJihfjKTYj5rYXIVek03uKAlhPudD6r+rFBada++POB5x8CHz5p++dJFD/vOyPqfD9MeC3xEiN3jBTRadHPfKzyTNf/6K9duyYMDQ1FWFiYEEKI/v37i+XLlwshhGjbtq24ePGiEEKII0eOiDZt2gghhOjatatYuXKlEEKIn376KT9RqFQqkZysma0bGxsratWqJdRq9UOJ4X6b95/PmjVLTJ06VQghxJ07d4S7u7sQQogPP/wwP47ExETh7u4u0tLSHop927ZtokmTJiI9PV0IIUR8fLwQQghvb2+xZ88eIYQQU6ZMEW+++WaBn+fXX38V48ePzz9uq1atxPHjx4UQ4qFE8cEHH+QfSwiRn4DuJ4pz586Jbt26iZycHCGEEGPHjhVLly4VQggBiODgYCGEEO+//76YMWOGEEKI4cOHizVr1uQfs0qVKiIrKyv/cz+Orr8z9x2LOiba/dFO+C3zE8vOLhOq3DzRd95B4T1th8hY+ZIQn9gLcVc/Yi1q2iaKAifcKYryTiFXI7Oe8UKmMNWAyAee35+7UaT2HFvF7xFfYmwtmOA3gVHeo+SIpqKwfRJEny7aYzp5Q5cvC9zEzc0NPz/NglANGjTg+vXrpKWlcejQIfr3/3eh++xsTdXQw4cPs3HjRgCGDBnCe++9B9wrKz95Mvv27cPAwIDbt29z9+7dAtseMGAAHTp04JNPPuGPP/7Ib++vv/4iODg4fw2LrKwsbt68iafnvxPAdu7cyciRI7GwsACgYsWKJCcnk5SURKtWrQAYPnw4/fv3L/DzaGvnzp2sXr06//l/62Ht2rWL0NBQGjZsCEBmZiaOjpqS3CYmJvnLvDZo0IC///77sW34+PgwdOhQevXqRa9e+j3foKFTQ9Z2X8uUQ1P4+vjXHI06ypSeH7L4p4WYR2xEtJ6M4vjohL3ypLCZ2bpaqulxA5QfqiOsKMoY7k36q15du9Xm/ismJQUTcphvHkBT31ef6RiS/rhfChw05cAzMzNRq9XY2toSHq79QjcrVqwgNjaW0NBQjI2NcXV1LbSEeLVq1bC3t+fUqVP8/vvvzJ8/H9AknXXr1lGnTp0n7iuEKHQhrPue5fM8bXtCCIYPH84XX3zxyHvGxsb5+z5Ycv2/tm7dyr59+wgODmbGjBmcPXsWIyP9rfpja2bLnDZzWHlhJTNDZnIh/kU+s77BqVQ3Iiz607/wQ5RpBf7NCSE+AVAUxUEIocW0xSJzC3B54Lkz8NDK6EKIBcACgMDAQO0XFnjAgPav0nPHTUyPzIVLf4N7h2eNV3pQIWf+Jcna2ho3NzfWrFlD//79EUJw6tQpfH19ady4MevWrWPgwIEPnWEnJyfj6OiIsbExu3fv5saNGwBYWVmRmvrkUeGDBg3i66+/Jjk5GW9vzaDATp068cMPP/DDDz+gKAphYWH4+/s/tF/Hjh359NNPGTJkCBYWFiQkJFCxYkXs7OzYv38/LVq0YPny5bRq1arAz6Otjh07MnfuXGbPng1AYmLiQ1cV7dq1o2fPnrz99ts4OjqSkJBAamrqQ6sD/teD/2/UajWRkZG0adOG5s2bs3LlStLS0p65o7ykKIrCUM+h+Dv68+7WF3mtkjk1bVpyaVsELepUxcnGTNch6kyBo54URemmKEoscEpRlFuKojQtobiOA+6KorgpimICDAKCi6Mh03ZToFJdCH4dMhOLowlJx1asWMHixYvx9fWlfv36bNq0CYDZs2cza9YsGjVqRFRUVH6J8aFDhxISEkJgYCArVqygbt26ANjb29OsWTO8vLx4//33H2mnX79+rF69mgEDBuS/NmXKFFQqFT4+Pnh5eTFlypRH9uvcuTM9evQgMDAQPz+//NtUS5cu5f3338fHx4fw8HCmTp1a4OfR1scff0xiYiJeXl74+vqye/fuh96vV68en332GR07dsTHx4cOHToQFfWYuQUPGDRoEN988w3+/v5cunSJYcOG4e3tjb+/P2+//bbeJ4kH1Yu6wB/XrtC2giuXTHejdvyViRuO/DsKqjwqqAMDOAXUvffnIGCvNh0fRfEAXgAuohn99FFB2z53mfHbJ4SYbifEujHPd5xyTF86Jp9Genq6UKvVQgghVq1aJXr06KHjiMoXvfzOpEQL8aWrEAvaCLUqR/x27jfhs8RP1FvQUsw7uFvX0RU5iqjMeK4Q4sK9hHKUEuyzEEJsE0J4CCFqCSH+V6yNVfWHFu/CqdVwfnOxNiXpj9DQUPz8/PDx8WHevHnMnDlT1yFJuiSE5s6CKgN6/YxiZMxQz6Es6fwrJkaCeRffZunp33UdpU4U1rvk+J+RTw89F8U36qnktXwfLv0Jm98ElyCoUEQLr0t6q0WLFpw8eVLXYUj64sQyzW9A56+gkkf+y/6V/VjU/jde2vwW3574jGup55kcNLlcrT9T2BXFQjRXEfcf/31edhiZQO8FmnVwg9/QnF1IklQ+JFzT1HJyawmNHl1BoYFLdV6t8znZca1Zd2kdw7cPf6hWVFmn1aincsOxLrSfpvnChP0GAS/qOiJJkoqbOg82jgPFAHrOe2Itp9daebDtdH/i4mty1eh3Bm4ZyMxWMwl0CizhgEveU1e3UhTlRHEEojeCxoJrC9gxCRKv6zoaSZKK28Hv4eYh6PIV2Lo8cTMTIwO+7OtDQqwHjc2mY21izei/RrPqwqoyPyLqWcoglu3VOgwMoNdPoBjC+jGa9XElSSqb7oTD7v9BvZ7gO7jQzf1cbBnZzI1Nx/N4z/tHmlZryudHP2f64enk5OWUQMC68SyJYmuRR6FvbF2g60yIPAoHyk5/fVl2/fp1vLy8nmqf6dOn589ZuHDhAn5+fvj7+3PlyqOroBWFwYMH4+Pjw3ffffdIe02bFjxFaerUqezcufOZ2g0PD2fbtm3PtG+ZlpMB60eDZSXoNlvrFeve7eiBs505n266yrctZzPGZwzrL61n1F+jiM+ML+agdUPrRKEoSg1FUdoLIT5WFMVcUZSy1Zn9Xz79wXsA7PkSboXoOhqpmG3cuJGePXsSFhZGrVpFv0BVdHQ0hw4d4tSpU7z99tuPtHfo0KEC9//0009p3779M7UtE8UT/D0F4i5q7iBYVNR6NwsTIz7r5cWV2HQW7L3O6/6v802rbzgff57BWwdzIeFCMQatG9ouhToaWAvMv/eSM7CxuILSG12/BetqsG4UZJepBf3KpLy8PEaPHk39+vXp2LEjmZmZACxcuJCGDRvi6+tL3759ycjIeGi/bdu2MXv2bBYtWkSbNm0eOe6OHTsICAjA19eXdu3aAZCQkECvXr3w8fGhcePGnDp1CoD09HRefvllGjZsiL+/f/6s6Y4dOxITE4Ofnx+ffPLJI+1VqFAhv72vv/4ab29vfH19mTRJsxTLiBEj8te+CA0NpVWrVjRo0IBOnTrlz5pu3bo1EydOpFGjRnh4eLB//35ycnKYOnUqv//+O35+fvz+++/s3bsXPz+//CuagsqSlFkRO+D4Img8Hmo9+ndemNZ1HOnuW5Ufd1/mamwanV07s7SLZonVl7a/xK6bu4ohaB3SZlYeEI5mXYiwB147rc2+JfF47pnZBbl+SIjptkKsf6342igDdD3LtqAy43FxcfnbffTRR2LOnDlCCCGmTZsmvvnmm0f+/KCYmBjh7Owsrl69KoT4twT4hAkTxPTp04UQQuzatUv4+voKIZ5cVvy/Jcr/2979EudPKjl+v4x3Tk6OaNKkiYiJiRFCCLF69WoxcuRIIYSmrPg777wjhBBi69atol27dkKIR8uPd+vWTRw4cEAIoVmbQqXSzToLOvvOpERp1piY10wIVdYzH+ZuSqbwnrZDDJp/OH+Gf2xGrBiyZYjwXuItFp1alP+6vqIoyow/IFsIkXO/aqSiKEb8p5prmVWjiWYy3t6vNGcePgMK36ec++rYV0V++V23Yl0mNppY4DaPKzMOcObMGT7++GOSkpJIS0ujU6dOWrd75MgRWrZsiZubG6ApAQ5w4MAB1q1bB0Dbtm2Jj48nOTn5iWXFzc3NtWrvcSXHHxQREcGZM2fo0EFTwDIvL48qVarkv9+nT59HPv9/NWvWjHfeeYehQ4fSp08fnJ2dtYqtTFCrYcOrmv6JfovByLTwfZ7A0cqMSV08mbzhNGtDb9E/0AUHcwcWd1rM1ENTmX1iNleTrzK9yXSMDUv3UsraJoq9iqJMBswVRekAjAPKT62Llh/A1b2w5R1wDoSKNXUdkfQYjyszDprbNhs3bsTX15clS5awZ88erY8pnlCSWzxmOKSiKE8sK/6kH21t23vw/fr163P48OHHvn///0FBJcAnTZpE165d2bZtG40bN2bnzp35hQ/LvENz4Ooe6D4HKj259Lu2BjV0Yf2JW3y+7TztPStjZ2mCmZEZX7X4CjcbN+aFz+NO2h1mt5mNjanN88evI9omiknAK8Bp4FVgG7CouILSO4ZG0Hch/Nwc1r4CL/+pmcktPVZhZ/4lLTU1lSpVqqBSqVixYgXVqlXTet8mTZowfvx4rl27hpubW34J8JYtW7JixQqmTJnCnj17cHBwwNraWquy4gV5Usnx++rUqUNsbCyHDx+mSZMmqFQqLl68SP369Z94zP+WR79y5Qre3t54e3tz+PBhLly4UD4Sxe1Q+GeGZihswEtFckgDA4X/9fam65z9fLn9Al/18wE0Jw1jfcdS3ao6Uw5OYdi2YfzY7keqWz/b2jm6plVnthBCLYRYKIToL4Tod+/P5ePW03221TVnIXdOaL5sUqkxY8YMgoKC6NChw1P/IFaqVIkFCxbQp08ffH19GThwIKAZWhsSEoKPjw+TJk1i6dKlgHZlxQvypJLj95mYmLB27VomTpyIr68vfn5+hY6YatOmDefOncvvzJ49e3Z+iXFzc3O6dOnyVDGWSplJsGYkWFWF7t9rPRRWG3WcrHiluRu/h0QScj3hofe61uzKoo6LSMpOYui2oYTHPPuCU7qkaPN7ryjKNR7TJyGE0It7MIGBgSIkpISGsG55G0J+gSFrwKNjybRZCpw/f/6h5T0lqTAl9p0RAtYMhwtbYeQOcGlY5E2kZ+fSYdZerM2N2fx6c4wNHz4Hv5Fyg3E7x3E34y5ftPiCDjX0Y5E0RVFChRCF1iDRdh5FINDw3qMFMAf47dnDK8U6fQGVvTUdYsm3dR2NJEmFCVkM5zZBu6nFkiQALE2NmN6jPheiU/n14LVH3q9hXYPfXviNuhXr8u6ed1l2dlmxxFFctL31FP/A47YQYjbQtphj00/GZtB/CeRmw7pXZIkPSdJnUadgx2So3QGavF6sTXWs70R7T0dm77xEVHLmI+/bmdmxqOMi2tdozzch3/D18a9RC3WxxlRUtJ1wF/DAI1BRlNcoa2XGn4ZDbeg+G24e1tSJkSRJ/2Qlwx8vaWZd9/75iVVhi9K07vXJUws+23r+se+bGZnxTctvGFJ3CMvPLWfSvkmlokaUtqOeHlz6Kxe4DpTvCQU+A+D6AU0tqOqNwUP7sfllVWFDOyXpvmIfCyMEbBoPSTdhxFawdCje9u5xqWjB+Da1mfX3RQY3jKO5+6PtGhoYMqnRJJwsnZgVOov4rHhmt5mNlYn+nntre+upzQOPDkKI0UKIiOIOTu91+RqcfDRVZhNv6DoanTIzMyM+Pr7Ml1uWnp8Qgvj4eMzMzIqvkSM/aZY1bj9dM2m2BI1pWZMa9hZMDT5DTu7jby0pisJIr5F83vxzTtw9wct/vkxcZlyJxvk0tB31ZAr0BVx54CpECPFpsUX2FEp01NN/JVyF+a3Bvua9+RXPPtOzNFOpVNy6dYusrCxdhyKVAmZmZjg7O2NsXAwzliOPwa9dwL0TDFpRpENhtbU7IoaRvx5nYue6jG1dcJHJA7cP8M6ed7A3s2dBhwW4WD95TYyipu2oJ20TxQ4gGQgF8u6/LoTQi9XodZooQDPsbvUQCHwZun2nuzgkqbxLi4H5LTUnbGP2grmtzkIZsyyE/Zfi+Oe9VlSxKbiEy6nYU4zfNR4DxYCf2/+Mp33JDDUv6uGxzkKIgUKIr4UQM+8/njPGsqNuV2j2pmZ+RdgKXUcjSeVTXq5mUl1mIgz8TadJAmBKt3qoheDzbYXXPfOp5MPSLksxMTTh5T9fJvRuaAlEqD1tE8UhRVG8izWS0q7tVM3C7Fve1qyaJUlSydo1HW4c0CxC5KT7nyuXiha82qoWm0/e4ejVwhc0qmlTk+VdllPJohKv/v0q+27tK4EotaNtomgOhCqKEqEoyilFUU4rinKqOAMrdQyNoN+vmtWyfn8RMhIK30eSpKJxdgMc+gEajgK/wpc0LSljW9Wimq0504LPkptX+JwJJ0snlnReQi3bWrz5z5tsu6ofC05pmyi6AO5AR6A70O3ef6UHWTrAwGWQFg1rX5aT8SSpJESfgY3jwLmRpnKCHjE3MeTjrp5ciE5l5bGbWu1T0awiizsuxs/Rj0n7J7Hm4ppijrJw2g6PvQG4AG3v/TlD233LnWoNNOttX90NO6fpOhpJKtsyEjQDSUytYeByvazq3NnLiaa17Jn510US0rWbXFfBpAI/tf+JFs4t+PTwpyw5s6R4gyyEtjOzpwETgQ/vvWRMea31pI2Al6DhaDg8F079oetoJKlsysvVXLmnRikoUPUAABmFSURBVGk6r62cdB3RYymKwvQe9UnLzuW7vy9qvZ+ZkRmzW8+mk2snZobO5MfwH3U2T0nbq4LeQA8gHUAIcYfyXMJDG52/gBrNIfh1uBOm62gkqezZOU1z5d51VrEV+ysqHpWtGBZUnRVHb3AhOkXr/YwNjfmqxVf0qt2Ln0/+zHeh3+kkWWibKHLurT8hABRFsSy+kMoIQ2MYsFTTub1qCKRG6zoiSSo7wlZortgbjYGAF3UdjVbeau+BlZkxn24+91Q/9oYGhnzS9BMG1hnIr2d/5YtjX5R4MUFtE8UfiqLMB2wVRRkN7AQWFl9YZYSlAwxepSlOtnoIqB6tKClJ0lO6eQS2vAU1W+td53VB7CxNeKeDB4euxPPXubtPta+BYsBHQR8xvN5wVl1YxaeHP/1/e3ceH0WVLXD8d0hIBMIawr7vCCKyCIgKKoo7rqAiCAqMoDLO6KhPfc44PvXNcxwdd1FRcEVBFJVdWURlk0XZjSCLIgRlXwJJzvvjVsYYQqdJurt6Od/Ppz90uqurz02RPl117z03oski2M7sfwLjgQlAS+ABVX06nIHFjVonwRWj3DKMH97qipUZY0pm1yYYdz1Uru/K/ScFW9c0OvTv0oAWNdN4+JPVHDqSW/wLChAR7uh0B0NPGsqE7ybwwBcPkJt3fPsoqWA7s/8ErFbVv6jqnao6I8xxxZfWF7tFU1aMh7n/LH57Y8zRDu2Bt66BnMNw7TtQrqrfER235KQy/PfFJ7Lp1wOM+fKH4369iDCyw0hGtB/Bh99/yL3z7iUnL/zD8IO99FQJmCYin4vILSJSszRvKiKPicgab/LeRBGpUuC5/xKRTG9yX/zU7j79z9CuH8z6H1gxwe9ojIkt+SOcstZA39cgo4XfEZXYGc0zOLtVDZ75LJMd+7JLtI/hJw9n5CkjmbxhMo8vDn81pWAvPT2oqm2AW4A6wBwRmVmK950BtFXVdsA6vGG3InIicA3QBjgfeE5EkkrxPtFDBC59Ghp0g4nDXYVLY0xwpt0LmTPcHKWmsb+45r0XtubAkVyenBn8cNnChrYbyv1d7ue6VteFMLKiHe+kue3Az8AvQI2SvqmqTlfV/POl+UA9734f4B1VzVbVDUAmcGpJ3yfqJKdCvzehcl14+1r49ei1dY0xhSx4ERa+CN1uhU6D/Y4mJJrVSOP6Lg14a8Em1m3bW+L99GvVLyJlyYPtoxguIrOBT4HqwFDvbCAUbgSmePfrApsLPLfFe6yomIaJyGIRWZyVlRWiUCKgQjpc9x5oLrzV12pCGRPImk9gyt3Q8iI4NyqWvwmZ23u1IC01+ZjLpkaTYM8oGgK3q2obVf2rqq4q7gUiMlNEVhRx61Ngm/twS6vm1+YuaoWRIocJqeooVe2kqp0yMjKCbEaUqN7MnVns/MEbNmuL/RhzlC2LYfxNrizOlS9Dmfi4Cp2vaoUURp7TnLnrspi9drvf4QQUbB/FPUCaiAwGEJEMEWlczGt6qWrbIm4fevu4AVdcsL/+NvtkC66mVL56wE/H2abY0Kg7XP4ibPoKJg6DvMhOoDEmqv3yvTvjrlgLrhsHKeX9jigsBnZrRMP08jw6eQ25edE7dN6XWk8icr63v0tV9UCBpyYB14hIqpeImgPx2+vb9go472FY9SFMv8/mWBgDbpW6N65096+f4CauxqmU5DLcfX4r1m7by/ivNxf/Ap/4VevpGe/1M0RkmYi84O13JfAusAqYCtyiqpGZUeKXbrdAl+Ew/zn44t9+R2OMvw7tcUli3za4dhykB15vOh5c0LYWHRtW5fHp69ifHZ1LE/hS60lVm6lqfVVt791uLvDcw6raVFVbquqUQPuJCyLQ+xFoe5UrcrbUivKaBJWT7WZdb1sJfcdGfaG/UBER7ruoNdv3ZvPS5+v9DqdIpan19HL4wkowZcrAZc+78eGTRsLa+M+PxvxOXi5M/ANsmAN9noXm5/odUUR1aFCVi9rV5sU569m2J/oGt5Sm1tNT4Qws4SSnQN/XoU57eG8Q/DDP74iMiQxVt9b8yolw7kNRtZRpJN3duxU5eXk8OfM7v0M5StAT7lR1Rn6tJ+AzEekfxrgSU2qam2NRtZGrafPjEr8jMia8VGHGA7BkDJxxB3Qf6XdEvmmQXp7+XRoybtEmMreXfBJeOARMFCJSyau99IyInCfOrcB6oG9kQkwwFdJhwEQoXw3euAK2R/9kHGNKbN6/4MunoPMQOPu//Y7Gd7ed3YzyKcn8Y+pav0P5neLOKF7HXWr6FhgCTAeuBvqoap9ALzSlUKkODPwQklJh7GVuTLkx8Wb+8/Dp3+Gkq+GCx9zAjgSXnpbK8J5NmbFqG4t+iJ6qDcUliiaqOkhVXwSuBToBF6vqsvCHluCqNYaBH0DeERhzqZvFbUy8WDwapt4DrS+By15wAzoMADd2b0zNSqk8Mnm1b2tkF1bc0TmSf8ebz7BBVaPr4lk8q9HanVkc3gdjLoFd0Tshx5igLXvLdV437w1Xjo65xYfCrVxKEn/q1YKlm3YxbWV0LKFcXKI4WUT2eLe9QLv8+yIS/ArhpuRqneT6LA7ucsliT3xWNDEJYvk78MEIaHKWmyuRnOJ3RFHpqo71aFYjjcemrSUn1//yPgEThaomqWol71ZRVZML3K8UqSATXt0OcP37sH8HvHYR7P7R74iMOX7L34GJN0PjM+Gat6DsCX5HFLWSk8pw53kt+T5rPxOWbPE7nONej8L4pX5nd2bxn2Th/38eY4JWMElc+07cFvkLpd5tatK+fhWemPHdca+vHWqWKGJJfrI48ItLFrs2+R2RMcVbMtaSRAmICHef34qf9xwq0fraoWSJItbU6wQDPoCDO2H0BTZ01kS3hS/BpNtceZo4LhceLt2aptOjRQbPzf6e3QePFP+CMLFEEYvqdYQbPoacg/DqBTYpz0SnL5+GyXe61emufRvKlvM7oph01/kt2X3wCKPm+vel0BJFrKrdDgZNBgRevRB+Wup3RMY4qjDrEZh+P7S5HPqOcevFmxJpU6cyl5xch9HzfiBrb7YvMViiiGU1WsHgyZCSBq9dAhvm+h2RSXR5eTDlLpjzDzhlAFzxMiSV9TuqmPfnc1twODePZ2dl+vL+lihiXXpTuGkaVK7rFnxZ/bHfEZlElXvElQpfOApOuw0ufdom04VI4+oV6NupHm8t2MSWnQeKf0GIWaKIB5XqwOApUKsdvDsAvh7jd0Qm0WTvhbf6wbfvwjkPuHLhVrsppG47uzkIPPVp5MuQW6KIF+WruXIfTc6Cj0bCrEdtDW4TGfu2w2sXw/rZ7izijDssSYRBnSrlGNC1IeO/3kLm9n0RfW9LFPEkNc0NQWzfH+b8rxuWmOvfkDqTAHZkwivnQtZaN7Kpw0C/I4prI3o2pVzZJJ6cuS6i72uJIt4klXVLSZ55Fyx93V0OOLTb76hMPNr4JbzSy112GvQxtOjtd0RxLz0tlRtPb8zH32xl9dbIlduzRBGPRODs++CSp9waxK/0hp0b/Y7KxJNv3oWxfaB8dRgy000ENREx5PQmVDwhmX/NiNxZhSWKeNbxBrh+gqs4+/I5sHmR3xGZWJeXB589DO8PhfpdYMgMqNbE76gSSuXyZRl2RhNmrNrG8s27IvKelijiXZOe7o85pYKrD7Xsbb8jMrEqe58bVTf3/6D99a6icbmqfkeVkAaf3piq5cvyeITOKixRJIKMljB0FtQ/FT64GabdB7k5fkdlYsnOjTC6N6ydDL0fhT7P2FoSPkpLTebmHk2Zuy6LhRvCv2SqJYpEUb6aqzx76jD46hl48yrY/4vfUZlY8P1nMKqHW2Gx/3vQbYQNf40CA7s1IqNiKp+u2Rb295JoWZO1NDp16qSLFy/2O4zYsWQsfHInpNVwq4zV7eB3RCYaqcK8J+CzhyCjFfR7w1UCMFEja282GRVLXkdLRL5W1WJHItgZRSLqMBBunOruj+4NX79mk/PM7x3cCe/0h08fhBMvg5tmWJKIQqVJEsfDEkWiqtsBhs2Bht3hoz+6USzZe/2OykSDH7+GF8+E76ZB70fgqtFuMqdJWJYoElmFdDd89qz7YcUEGNUTfv7W76iMX1Rh/vNu3o0qDJ4K3W6x/ghjiSLhlUmCHn+BGz5ywx9fOsd9WOTl+R2ZiaR9WfDm1TD1HmjWC/4w1y29awyWKEy+RqfD8C/ckpVT73GjovaGfzSFiQLfzYDnT3PrmVz4T1ezqXw1v6MyUcTXRCEid4qIikh172cRkadEJFNEvhERG44TSRWquw+Jix6HjV/Ac11h5Qd+R2XCJXsffHS7+1JQoToMmw2nDrVLTeYoviUKEakPnAtsKvDwBUBz7zYMeN6H0BKbCHQe4jq6qzaE926A8TfBgfBP6jERtPFLeKG7G/F22kg3IbPmiX5HZaKUn2cUTwB3AQXHZfYBxqozH6giIrV9iS7R1WjlhkSedT+s+sCdXaz60O+oTGll73VzaF69wOuwngznPQRlT/A7MhPFfEkUInIp8KOqLi/0VF1gc4Gft3iPFbWPYSKyWEQWZ2VlhSnSBJdU1nV0D50FFWvBuwPd2Po9W/2OzJTEdzPg2a6w6GXoMhxGfAUNT/M7KhMDwragrYjMBGoV8dR9wL3AeUW9rIjHipwJpqqjgFHgZmaXMEwTjNrtYMhnrvTH7Efh2VPh7Puh0022JnIs2POTG6Cw6kOo3hJumu7qfhkTpLD9latqr6IeF5GTgMbAcnGdZvWAJSJyKu4Mon6BzesBP4UrRnMckpLh9Nuh9SUw+U6Y4i2MdNETNowyWuUegYWjYNYjkJfjkvtpIyE5MrN5TfyI+KUnVf1WVWuoaiNVbYRLDh1U9WdgEjDQG/3UFditqnadI5qkN3Xlpa8e44oKvtILJt7svrWa6JE50w15nXYvNOgGI+bDmX+xJGFKJNquG0wGLgQygQPAYH/DMUUSgTaXQbNz4PPH4atn3WWN0//sZvKmlPc7wsS1fQ3M/Cusm+oWFLp2nFui1Ia8mlKw6rGm9H7dADMegNWTIK0W9LwHThlg/ReRtGcrzH4Elr4BKWlwxh3QdbidQZiAgq0ea4nChM7Gr9y32c0LIL25SxhtLndlQkx47N/hSoEvesX1Q3Qe4i4xVUj3OzITAyxRGH+oulXQPn0Isla7dQx63OVKVVvCCJ19WTD/WVgwCnIOQrt+0ONuqNbY78hMDLFEYfyVl+cm6s35B2StgfRm0P2P7gPNLoeU3K7N8OXTbvGpnEPQ9grocQ9ktPA7MhODLFGY6JCX6/ou5j0BW5dDxdqunlDHwVZ47nj8uATmPwcrJ7qf213jEq8lCFMKlihMdFGF9bNg3pOwYQ4knwDt+kLnoW5CnzlaTjas/ggWvgSb50NKRegwALqOgCr1i3+9McUINlHYsBQTGSKuhHnTs2HbKlj4Iiwf5y6h1OkAHQe5yyipFf2O1H9Z69xkxmVvwoFfoGoj6P0onHI9nFDJ7+hMArIzCuOfgzvhm3dh8auu4zu5HLS+2F1WadIzsYbX7t/hListf9stRSpJ0OpC6HQjNO4JZWzpGBN6dunJxA5V2LLIfUiueB8O7YLy6dDqYjjxUmjcwxUojDf7tsOaT1yn/4a5oHlQsy2cfC2cdDVUrOl3hCbOWaIwsSknG76b7hZMWjcVDu+D1EruklWL3m6ZzrQafkdZMnl58PM3kDkD1k51Zw4oVGvq5pu0uRxqtfU7SpNArI/CxKbkVFd4sPUlcOQQfP8ZrJsC66a7b94AGa2h8Rlu+db6XVwJ9GiUlwvbVroJiD/Mc2cNB70FoOp2hLPuhZYXuLMIK7FhopidUZjYoOqG166f5T5wN37lJpoBVG4A9TpCrXberS2k1Yzsh2/OYfh1PWxbAVuXuVh/XAqH97rnK9V1/S5NerpLaXZZyUQBu/Rk4lvOYfdhvGUhbF7o5hnsLrCqbmolN8kvvZkbSlq5PlSu59aGrpDh+kCSTwgumeTluQ/8/Ttcv8L+7bD7R9i1EXZtgl8yXZLIy3HbJ6VCzTZQ5xRo0NWd9VRpYGcNJupYojCJ5+BO+HkFbF8FO76DHetcwcI9P4LmHr19mWRIqeCK6CWVdSONyiS5D/zcHMg9DIf3/3ZWUFhKGlRp6MpmZLR05UpqtHb/xmPnu4k71kdhEk+5qq7vovEZv388Nwf2/ezOAg7sgP1Zbn5C9j7XWX54v0sOeTmuX6FMMiSluOG5KWnu7CQ1DcpXh7QMqFDDnZ2Uq2pnCSYhWKIw8S8p2X2wV67ndyTGxCSbxWOMMSYgSxTGGGMCskRhjDEmIEsUxhhjArJEYYwxJiBLFMYYYwKyRGGMMSYgSxTGGGMCiosSHiKSBWws4curAztCGE4ssDYnBmtzYihNmxuqakZxG8VFoigNEVkcTK2TeGJtTgzW5sQQiTbbpSdjjDEBWaIwxhgTkCUKGOV3AD6wNicGa3NiCHubE76PwhhjTGB2RmGMMSaghEkUInK+iKwVkUwRuaeI51NFZJz3/AIRaRT5KEMriDYPEpEsEVnm3Yb4EWeoiMhoEdkuIiuO8byIyFPe7+MbEekQ6RhDLYg29xSR3QWO8QORjjHURKS+iMwSkdUislJE/ljENnF1rINsc/iOtarG/Q1IAr4HmgApwHLgxELbjABe8O5fA4zzO+4ItHkQ8IzfsYawzWcCHYAVx3j+QmAKIEBXYIHfMUegzT2Bj/2OM8Rtrg108O5XBNYV8X87ro51kG0O27FOlDOKU4FMVV2vqoeBd4A+hbbpA4zx7o8HzhGJ6XUug2lzXFHVucCvATbpA4xVZz5QRURqRya68AiizXFHVbeq6hLv/l5gNVC30GZxdayDbHPYJEqiqAtsLvDzFo7+Jf9nG1XNAXYD6RGJLjyCaTPAld6p+XgRqR+Z0HwT7O8k3nQTkeUiMkVE2vgdTCh5l4hPARYUeipuj3WANkOYjnWiJIqizgwKD/cKZptYEkx7PgIaqWo7YCa/nVHFq3g7xsFYgivTcDLwNPCBz/GEjIikAROA21V1T+Gni3hJzB/rYtoctmOdKIliC1Dw23I94KdjbSMiyUBlYvuUvtg2q+ovqprt/fgS0DFCsfklmP8HcUVV96jqPu/+ZKCsiFT3OaxSE5GyuA/MN1X1/SI2ibtjXVybw3msEyVRLAKai0hjEUnBdVZPKrTNJOAG7/5VwGfq9RDFqGLbXOia7aW4657xbBIw0BsR0xXYrapb/Q4qnESkVn5fm4icivub/8XfqErHa88rwGpV/dcxNourYx1Mm8N5rJNDsZNop6o5InIrMA03Gmi0qq4Ukb8Di1V1Eu4gvC4imbgziWv8i7j0gmzzSBG5FMjBtXmQbwGHgIi8jRv5UV1EtgB/BcoCqOoLwGTcaJhM4AAw2J9IQyeINl8FDBeRHOAgcE2MfwEC6A4MAL4VkWXeY/cCDSBuj3UwbQ7bsbaZ2cYYYwJKlEtPxhhjSsgShTHGmIAsURhjjAnIEoUxxpiALFEYY4wJyBKFiUkikutVyFwhIu+JSPljbDdZRKqE4P1me5V4l4vIFyLSssDjIVuv2KsA+nEJYjsqBnHVgZ8JVWwmcVmiMLHqoKq2V9W2wGHg5oJPehOtyqjqhaq6K0Tv2d8rjzAGeCxE+4waXkUCY45iicLEg8+BZiLSyKvX/xyu7k19Efkhv4yBiAz0CiAuF5HXvccyRGSCiCzybt2DeL+5QLPCD4rI8yKy2Fsv4MECj3cWkS+9910oIhVFJElEHvPe8xsR+UOBXaV5RRrXiMibBWbbniMiS0XkW3HrUKQWEcNgEVknInNwk7TyHy+ynSLyNxEZJSLTgbFBtN0kIPsGYWKa9y34AmCq91BLYLCqjvCez9+uDXAf0F1Vd4hINW/7fwNPqOo8EWmAm8neupi3vQT4tojH71PVX0UkCfhURNoBa4BxQD9VXSQilXCzZm/ClZXo7H3gf+F9WIOrDNoGV5voC6C7iCwGXgPOUdV1IjIWGA48WeB3URt4EFezazcwC1gaRDs7Aqer6sFi2m0SlCUKE6vKFShl8DmuBEsdYKO3/kBhZwPjVXUHgKrmF3zsBZwovy09UklEKno1/wt7U0QOAj8AtxXxfF8RGYb7u6oNnIirWLpVVRd577sHQETOA9qJyFXeaysDzXGX0Raq6hZvu2VAI2AvsEFV13nbjwFuoUCiALoAs1U1y3vtOKBFoHZ69ydZkjCBWKIwseqgqrYv+ID3Ibj/GNsLRZeZLgN0K/xBKSLTgJq4ulj5S8T2V9XFRe5cpDFwJ9BZVXeKyGvACQHeV4DbVHVaof30BLILPJSL+zsNdhGtY9XkOVY74di/M2MA66MwieNT3Df+dIACl56mA7fmbyQi7QFUtbfXWR7sOuKVcB+4u0WkJu5yGLhLT3VEpLO3/4re5bJpuAJuZb3HW4hIhQD7XwM0EpH8vpEBwJxC2ywAeopIurffqws8V2Q7jQmGnVGYhOBVzn0YmCMiubhr94OAkcCzIvIN7u9hLoVGUAW5/+UishRYCazH9S2gqodFpB/wtIiUw/VP9AJexl1SWuJ1VmcBlwXY/yERGQy85yWaRcALhbbZKiJ/A74CtuI69JO8p0PSTpOYrHqsMcaYgOzSkzHGmIAsURhjjAnIEoUxxpiALFEYY4wJyBKFMcaYgCxRGGOMCcgShTHGmIAsURhjjAno/wFo4J2ghPeaRQAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"price_ratio = np.linspace(0, 2.5, num=100)\n",
"revenue = -42 * (price_ratio ** 2) + 91 * price_ratio\n",
"revenue2 = 42 * (price_ratio ** 2) - 91 * price_ratio\n",
"revenue3 = -21 * (price_ratio ** 2) + 45 * price_ratio\n",
"plt.plot(price_ratio, revenue, label='original')\n",
"plt.plot(price_ratio, revenue2, label='negative coefficients')\n",
"plt.plot(price_ratio, revenue3, label='half coefficients')\n",
"plt.legend()\n",
"plt.xlabel(\"Price-Placeholder\")\n",
"plt.ylabel(\"Revenue-Placeholder\");"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"### Finding the maximum\n",
"\n",
"This is solved here _analytically_ or _explicitly_ or _exactly_ or in _clased form_ \n",
"\n",
"Often we need to solve this problem _iteratively_ but we are looking for the same thing - the _minimum_ or _maximum_ value\n",
"\n",
"We can easily look at the values to see where the maximum is ..."
]
},
{
"cell_type": "code",
"execution_count": 84,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Ratio</th>\n",
" <th>Revenue</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1.00</td>\n",
" <td>49.0000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1.01</td>\n",
" <td>49.0658</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1.02</td>\n",
" <td>49.1232</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1.03</td>\n",
" <td>49.1722</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1.04</td>\n",
" <td>49.2128</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>1.05</td>\n",
" <td>49.2450</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>1.06</td>\n",
" <td>49.2688</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>1.07</td>\n",
" <td>49.2842</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>1.08</td>\n",
" <td>49.2912</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>1.09</td>\n",
" <td>49.2898</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>1.10</td>\n",
" <td>49.2800</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>1.11</td>\n",
" <td>49.2618</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>1.12</td>\n",
" <td>49.2352</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>1.13</td>\n",
" <td>49.2002</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>1.14</td>\n",
" <td>49.1568</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>1.15</td>\n",
" <td>49.1050</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>1.16</td>\n",
" <td>49.0448</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>1.17</td>\n",
" <td>48.9762</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>1.18</td>\n",
" <td>48.8992</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>1.19</td>\n",
" <td>48.8138</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>1.20</td>\n",
" <td>48.7200</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Ratio Revenue\n",
"0 1.00 49.0000\n",
"1 1.01 49.0658\n",
"2 1.02 49.1232\n",
"3 1.03 49.1722\n",
"4 1.04 49.2128\n",
"5 1.05 49.2450\n",
"6 1.06 49.2688\n",
"7 1.07 49.2842\n",
"8 1.08 49.2912\n",
"9 1.09 49.2898\n",
"10 1.10 49.2800\n",
"11 1.11 49.2618\n",
"12 1.12 49.2352\n",
"13 1.13 49.2002\n",
"14 1.14 49.1568\n",
"15 1.15 49.1050\n",
"16 1.16 49.0448\n",
"17 1.17 48.9762\n",
"18 1.18 48.8992\n",
"19 1.19 48.8138\n",
"20 1.20 48.7200"
]
},
"execution_count": 84,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"price_ratio = np.linspace(1.0, 1.2, num=21)\n",
"revenue = -42 * (price_ratio ** 2) + 91 * price_ratio\n",
"prdf = pd.DataFrame({'Ratio': price_ratio, 'Revenue': revenue})\n",
"prdf"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Or solve it analytically (we manually calucate hte derivatives, you don't need to do this normally)\n",
"\n",
"$R' = -84(\\frac{P_o}{P_c} + 91)$\n",
"\n",
"$0 = -84(\\frac{P_o}{P_c} + 91)$\n",
"\n",
"$\\frac{-91}{-84}P_c = P_o$\n",
"\n",
"$1.08 P_c = P_o$"
]
},
{
"cell_type": "code",
"execution_count": 82,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1.0841086660884383 times our price\n"
]
}
],
"source": [
"#or generically\n",
"\n",
"def best_price(m, c):\n",
" return c / (2 * -1 * m)\n",
"\n",
"print(best_price(m, c), 'times our price')"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.4"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment