diff options
author | Theodore Aptekarev <aptekarev@gmail.com> | 2024-11-02 18:39:03 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-11-02 15:39:03 +0000 |
commit | 8200b59e4e0219b0f97933c4b59ebb07b8cb80b2 (patch) | |
tree | bc752a11dec2da0dbea990f84d25b81cacb9516d | |
parent | 1a632ee0c98a28a41e9810e2a105b023f65c2283 (diff) |
Remove hacktoberfest 2024 folder (#6929)
-rw-r--r-- | examples/Ethereum Crypto Trend Analysis Notebook.ipynb | 289 | ||||
-rw-r--r-- | examples/Risk-Return Analysis and Portfolio Management in OpenBB.ipynb | 301 | ||||
-rw-r--r-- | oss.gg/README.md | 69 | ||||
-rw-r--r-- | oss.gg/code_side_quests/1-openbb-integration.md | 29 | ||||
-rw-r--r-- | oss.gg/code_side_quests/2-custom-backend.md | 29 | ||||
-rw-r--r-- | oss.gg/code_side_quests/3-custom-copilot.md | 29 | ||||
-rw-r--r-- | oss.gg/code_side_quests/4-agentic-agent.md | 29 | ||||
-rw-r--r-- | oss.gg/no_code_side_quests/0-set-upper.md | 41 | ||||
-rw-r--r-- | oss.gg/no_code_side_quests/1-pilot-copilot.md | 27 | ||||
-rw-r--r-- | oss.gg/no_code_side_quests/2-fundamental-blog.md | 30 | ||||
-rw-r--r-- | oss.gg/no_code_side_quests/3-reddit-legend.md | 27 | ||||
-rw-r--r-- | oss.gg/no_code_side_quests/4-social-poster.md | 42 | ||||
-rw-r--r-- | oss.gg/no_code_side_quests/5-financial-post.md | 30 | ||||
-rw-r--r-- | oss.gg/no_code_side_quests/6-social-hero.md | 51 |
14 files changed, 161 insertions, 862 deletions
diff --git a/examples/Ethereum Crypto Trend Analysis Notebook.ipynb b/examples/Ethereum Crypto Trend Analysis Notebook.ipynb index 395040e5018..1595a333304 100644 --- a/examples/Ethereum Crypto Trend Analysis Notebook.ipynb +++ b/examples/Ethereum Crypto Trend Analysis Notebook.ipynb @@ -1,21 +1,10 @@ { - "nbformat": 4, - "nbformat_minor": 0, - "metadata": { - "colab": { - "provenance": [] - }, - "kernelspec": { - "name": "python3", - "display_name": "Python 3" - }, - "language_info": { - "name": "python" - } - }, "cells": [ { "cell_type": "markdown", + "metadata": { + "id": "HeB3TlvkmFoK" + }, "source": [ "# Ethereum Crypto Trend Analysis with OpenBB\n", "\n", @@ -32,16 +21,11 @@ "\n", "The dependencies for running this includes openbb, pandas, and matplotlib.\n", "\n" - ], - "metadata": { - "id": "HeB3TlvkmFoK" - } + ] }, { "cell_type": "code", - "source": [ - "!pip install openbb -q" - ], + "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" @@ -50,134 +34,14 @@ "id": "yHKLjDTDmduo", "outputId": "1fa908b5-ff79-4f1a-db42-f586e217f4c0" }, - "execution_count": 2, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "\u001b[?25l \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m0.0/260.7 kB\u001b[0m \u001b[31m?\u001b[0m eta \u001b[36m-:--:--\u001b[0m\r\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m260.7/260.7 kB\u001b[0m \u001b[31m17.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25h\u001b[?25l \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m0.0/9.8 MB\u001b[0m \u001b[31m?\u001b[0m eta \u001b[36m-:--:--\u001b[0m\r\u001b[2K \u001b[91m━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[90m╺\u001b[0m\u001b[90m━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m4.5/9.8 MB\u001b[0m \u001b[31m135.0 MB/s\u001b[0m eta \u001b[36m0:00:01\u001b[0m\r\u001b[2K \u001b[91m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[90m╺\u001b[0m\u001b[90m━\u001b[0m \u001b[32m9.4/9.8 MB\u001b[0m \u001b[31m136.0 MB/s\u001b[0m eta \u001b[36m0:00:01\u001b[0m\r\u001b[2K \u001b[91m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[91m╸\u001b[0m \u001b[32m9.8/9.8 MB\u001b[0m \u001b[31m132.3 MB/s\u001b[0m eta \u001b[36m0:00:01\u001b[0m\r\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m9.8/9.8 MB\u001b[0m \u001b[31m84.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m273.4/273.4 kB\u001b[0m \u001b[31m21.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m96.3/96.3 kB\u001b[0m \u001b[31m8.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m108.3/108.3 kB\u001b[0m \u001b[31m9.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m105.0/105.0 kB\u001b[0m \u001b[31m10.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m96.8/96.8 kB\u001b[0m \u001b[31m9.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m40.5/40.5 kB\u001b[0m \u001b[31m3.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m59.4/59.4 kB\u001b[0m \u001b[31m5.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m92.2/92.2 kB\u001b[0m \u001b[31m9.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m5.0/5.0 MB\u001b[0m \u001b[31m77.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m54.4/54.4 kB\u001b[0m \u001b[31m4.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m61.4/61.4 kB\u001b[0m \u001b[31m5.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m10.9/10.9 MB\u001b[0m \u001b[31m96.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m59.7/59.7 kB\u001b[0m \u001b[31m6.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m130.2/130.2 kB\u001b[0m \u001b[31m12.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m66.4/66.4 kB\u001b[0m \u001b[31m6.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m58.3/58.3 kB\u001b[0m \u001b[31m5.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m76.4/76.4 kB\u001b[0m \u001b[31m7.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m78.0/78.0 kB\u001b[0m \u001b[31m7.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m71.9/71.9 kB\u001b[0m \u001b[31m7.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m313.6/313.6 kB\u001b[0m \u001b[31m23.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m341.4/341.4 kB\u001b[0m \u001b[31m27.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m3.4/3.4 MB\u001b[0m \u001b[31m84.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m425.7/425.7 kB\u001b[0m \u001b[31m30.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25h" - ] - } + "outputs": [], + "source": [ + "!pip install openbb -q" ] }, { "cell_type": "code", - "source": [ - "from openbb import obb\n", - "import pandas as pd\n", - "import matplotlib.pyplot as plt\n", - "import numpy as np\n", - "\n", - "# Download historical Ethereum (ETH) to USD price data\n", - "eth_data = obb.crypto.price.historical(symbol='ETH-USD', interval='1d', start_date='2024-02-01', end_date='2024-06-01')\n", - "\n", - "# Convert to DataFrame\n", - "df = eth_data.to_df()\n", - "\n", - "# Calculate moving averages\n", - "df['MA50'] = df['close'].rolling(window=50).mean()\n", - "df['MA200'] = df['close'].rolling(window=200).mean()\n", - "\n", - "# Calculate daily returns and volatility\n", - "df['Daily_Return'] = df['close'].pct_change()\n", - "df['Volatility'] = df['Daily_Return'].rolling(window=30).std() * np.sqrt(252)\n", - "\n", - "# Visualize the Ethereum price trend with moving averages\n", - "plt.figure(figsize=(12, 6))\n", - "plt.plot(df.index, df['close'], label='Price')\n", - "plt.plot(df.index, df['MA50'], label='50-day MA')\n", - "plt.plot(df.index, df['MA200'], label='200-day MA')\n", - "plt.title('Ethereum Price with Moving Averages (Feb 1 - Jun 1, 2024)')\n", - "plt.xlabel('Date')\n", - "plt.ylabel('Price (USD)')\n", - "plt.legend()\n", - "plt.xticks(rotation=45)\n", - "plt.tight_layout()\n", - "plt.show()\n", - "\n", - "# Analyze daily trading volume for Ethereum\n", - "plt.figure(figsize=(12, 6))\n", - "plt.bar(df.index, df['volume'])\n", - "plt.title('Ethereum Trading Volume (Feb 1 - Jun 1, 2024)')\n", - "plt.xlabel('Date')\n", - "plt.ylabel('Volume')\n", - "plt.xticks(rotation=45)\n", - "plt.tight_layout()\n", - "plt.show()\n", - "\n", - "# Plot the 30-day rolling volatility of Ethereum prices\n", - "plt.figure(figsize=(12, 6))\n", - "plt.plot(df.index[30:], df['Volatility'].iloc[30:])\n", - "plt.title('Ethereum 30-Day Rolling Volatility (Mar 2 - Jun 1, 2024)')\n", - "plt.xlabel('Date')\n", - "plt.ylabel('Volatility')\n", - "plt.xticks(rotation=45)\n", - "plt.tight_layout()\n", - "plt.show()\n", - "\n", - "# Additional quantitative analysis\n", - "print(\"\\nQuantitative Analysis:\")\n", - "print(f\"Current Price: ${df['close'].iloc[-1]:.2f}\")\n", - "print(f\"Price Change (Start to End): {((df['close'].iloc[-1] / df['close'].iloc[0]) - 1) * 100:.2f}%\")\n", - "print(f\"Highest Price: ${df['high'].max():.2f}\")\n", - "print(f\"Lowest Price: ${df['low'].min():.2f}\")\n", - "print(f\"Average Daily Return: {df['Daily_Return'].mean() * 100:.2f}%\")\n", - "print(f\"Average Daily Volume: {df['volume'].mean():.0f}\")\n", - "print(f\"Current Volatility: {df['Volatility'].iloc[-1] * 100:.2f}%\")\n", - "\n", - "# Identify potential buy/sell signals based on moving average crossovers\n", - "df['Signal'] = np.where(df['MA50'] > df['MA200'], 1, 0)\n", - "df['Position'] = df['Signal'].diff()\n", - "\n", - "print(\"\\nTrading Signals based on MA Crossover:\")\n", - "print(df[df['Position'] == 1][['close', 'MA50', 'MA200']].to_string()) # Buy signals\n", - "print(df[df['Position'] == -1][['close', 'MA50', 'MA200']].to_string()) # Sell signals\n", - "\n", - "# Calculate Relative Strength Index (RSI)\n", - "def calculate_rsi(data, window=14):\n", - " delta = data.diff()\n", - " gain = (delta.where(delta > 0, 0)).rolling(window=window).mean()\n", - " loss = (-delta.where(delta < 0, 0)).rolling(window=window).mean()\n", - " rs = gain / loss\n", - " return 100 - (100 / (1 + rs))\n", - "\n", - "df['RSI'] = calculate_rsi(df['close'])\n", - "\n", - "print(\"\\nRSI Analysis:\")\n", - "print(f\"Current RSI: {df['RSI'].iloc[-1]:.2f}\")\n", - "print(\"Overbought periods (RSI > 70):\")\n", - "print(df[df['RSI'] > 70][['close', 'RSI']].to_string())\n", - "print(\"\\nOversold periods (RSI < 30):\")\n", - "print(df[df['RSI'] < 30][['close', 'RSI']].to_string())\n", - "\n", - "print(\"\\nEthereum price and volume analysis completed!\")" - ], + "execution_count": 5, "metadata": { "colab": { "base_uri": "https://localhost:8080/", @@ -187,41 +51,40 @@ "id": "s355_BwumQcv", "outputId": "dc606514-4f19-40fb-c76d-384eb9d007f6" }, - "execution_count": 5, "outputs": [ { - "output_type": "display_data", "data": { + "image/png": "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cXEx7u7u3H///WWOzcrKwtbWltmzZwOVv5aq8l5ITU3lvvvuw9nZGVdXV6ZOncrhw4er1adq1apV5Ofnc+edd3LXXXexcuVKCgoKjNsjIiIYPHhwmeP0ej3+/v7ccccdJutu9L25cOFChgwZgre3NzY2NrRv394kw+Tqa73yyiv4+flhb2/P4MGDOXHiBC1btiyTWVeV9zvA0qVL6d69O05OTjg7O9OxY8cy74vy/PLLL/Tu3btGffGq+pwZ/PXXX3Tp0gVbW1vat29f5ay+wMBAkwBIfaqoX1x5P58GDRpEREQEJ06cYPDgwdjb2+Pv7897771XpWv5+fnVeuZheZm948ePBzD+/AI4ceIEJ06c4OGHHzYGpAAef/xxFEUxKbcbMGBAmX+PAQMG4O7ubnLOqz311FOMHz+e/v37VzjW7t274+7uzq+//lqlexNCiKZGglJCCNGMZWZmkpKSYrIYykS8vLyMHyzHjx/P999/z/fff28SvNDpdIwcORIPDw/++9//MnDgQObOncvXX39tcp1HHnmEf/3rX/Tr14+PP/6Y+++/n8WLFzNy5EiKi4tN9j19+jSTJ09m+PDhfPzxx3Tp0oW8vDwGDhzIDz/8wJQpU/jkk0/o168fc+bMYdasWTW+f51Ox+jRowkMDOS9996jZcuWzJw5k0WLFjFq1Ch69OjBu+++i5OTE1OmTDEGlaorPT2d9PR0PDw8TNa//vrr/PHHH8yePZu33nqrwpK99evXM2DAAE6cOMFTTz3F3LlzGTx4MKtXrzbuc/z4cfr06cPJkyf597//zdy5c3FwcGDcuHGsWrWq0vH179+fbdu2GR+npaVx/PhxLCws2Lp1q3H91q1b8fLyol27duWe56OPPiIgIIDw8HDj6+X//u//TPZ54oknOHz4MC+//DKPPfYYv//+e7V62QwYMICAgACTIOGyZctwdHRkzJgxZfbPz89n0KBBfP/999xzzz28//77uLi4MG3aNGPwwsrKivHjx/PLL79QVFRkcvwvv/xCYWEhd911V6Xjqsp7Qa/XM3bsWH788UemTp3Km2++SXx8PFOnTq3y/YNaujd48GB8fX256667yM7O5vfffzdunzRpEv/88w8JCQkmx23bto3Lly+b3MuNvjdBLTMLDg7mP//5D3PnziUwMJDHH3/cGOA1mDNnDq+++io9evTg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v/8lLCwMOzs77rjjDoqKioz7jB07FhsbG1atWoW1tTXFxcXccccdVTp/x44dCQ8PZ/LkybRr146IiAgOHTpksk9aWhqrVq2iuLiYefPmGdfrdDoWLFjAm2++WeX7EUI0bMeMpXtVK8e+s0cA+2PT8XayYdaINthbl//fZa8Qd+yttSRnF3IiPuu6pYFCCCGEEEKIKxpUUGrz5s0mj21tbfn888/5/PPPKzwmODi4THnetQYNGsTBgwdrY4hVo9FUuYSuIcnJySE6OtpYuta9e/frllAGBweXOU+7du3YvXu3ybprG6Nv376dadOmMX78eOO1z58/b7KPpaWlsWm5tbU1d911V7UCXw888ACPP/64ScDpaosXLyYgIIBffvnFZP1ff/3F3Llzee2119BqtVW+nhCi4TpxWW1yXtnMe1ezt7bkk8ldr7ufjaWWm8I8+etEIhtPJUlQSgghhBBCiGpoUEEpUb9mz57N2LFjCQ4O5vLly7z88stotVomT54MYFJC6e7ujrOzM0888YRJCWV5nnzySfr168d///tfbrvtNtatW2fSTwqgdevWrFy5krFjx6LRaHjxxRfR6/VlzjV9+nTatWsHqIGs6njooYe48847y/TEMpg/fz533HFHmVn+AgMDmTNnDn/++Sdjxoyp1jWFEA2PoijG8r2IKgalqmNwuDd/nUhk0+kknhzautbPL4QQQgghRFNltp5SwvwuXrzI5MmTadu2LRMnTsTDw4Ndu3bh5eVl3OfDDz/klltuYcKECQwYMABfX19WrlxZ6Xn79OnDN998w8cff0znzp3566+/eOGFF0z2+eCDD3Bzc6Nv376MHTuWkSNH0q1btzLnat26NX379iU8PLxMn6rrsbS0xNPT09gv6mr79+/n8OHDxgywq7m4uDB06FDmz59fresJIRqmy5kFpOcVY2mhoY2vY62ff3BbdaKNQxcySM0prPXzCyGEEEII0VRpFEWRzqzXkZWVhYuLC5mZmTg7m/YjKSgoICYmhpCQEGxtbc00wqZLURRat27N448/zqxZs8w9nCqR14QQDctfxxN4+Pv9tGvhzNqn+tfJNUZ/vJWT8Vl8MLEzt3cLqJNrCCGEEEII0VhUFke5mmRKiQYrOTmZzz77jISEBO6//35zD0cI0UgdK+0nFeFXtSbnNTHkqln4hBBCCCGEEFUjPaVEg+Xt7Y2npydff/01bm5u5h6OEKKROm7oJ1WHTciHhHvz+aZotpxOokSnx1Ir3/kIIYQQQghxPRKUEg2WVJYKIWrDcePMe3WXKdUl0A1Xeysy8oo5eCGDni3d6+xaQgghhBBCNBXyVa4QQogmKzm7kISsAjQaaNei7oJSWgsNA9uoJXwbTyXV2XWEEEIIIYRoSiQoJYQQosk6flkt3Qv1dMDBpm6Tgw2z8G2SoJQQQgghhBBVIkEpIYQQTdaV0r266ydlMLCNFxYaOJWQzeWM/Dq/nhBCCCGEEI2dBKWEEEI0WYZMqQj/uivdM3BzsKZrkDopw6bTki0lhBBCCCHE9UhQSgghRJNlyJSKqIdMKYDBbdW+UptOJdfL9YQQQgghhGjMJCglhBCi0YnPzCcjr6jSfTLzi4lNzQOgfR3OvHe1weFqX6ntUSkUFOvq5ZpCCCGEEEI0VhKUEg3GtGnTGDdunLmHIYRowAqKdbyz9hQ3vbuJwf/dzNGLmRXue6I0SyrAzQ5Xe+t6GV/7Fs74ONuQX6xjT0xavVxTCCGEEEKIxkqCUs3Y22+/Tc+ePXFycsLb25tx48Zx+vRpk30KCgqYMWMGHh4eODo6MmHCBBITE032iYuLY8yYMdjb2+Pt7c2//vUvSkpK6vNWqmzRokVoNBratWtXZtvy5cvRaDS0bNmyzLb8/Hzc3d3x9PSksLCwHkYqhLjWnpg0bv54K19uiUanV0jPK+bub3ax73z5wR9jP6l6Kt0D0Gg0xln4NsosfEIIIYQQQlRKglLN2JYtW5gxYwa7du1i/fr1FBcXM2LECHJzc437PPPMM/z+++8sX76cLVu2cPnyZW6//Xbjdp1Ox5gxYygqKmLHjh18++23LFq0iJdeeskct1QlDg4OJCUlsXPnTpP18+fPJygoqNxjfv75Zzp06EB4eDi//PJLPYxSCGGQU1jCi78cY+JXOzmXkou3kw2fTO5KrxB3sgtLuG/+HrZHpZQ57srMe/VTumdgKOHbdDoJRVHq9dpCCCGEEEI0JhKUasb+/PNPpk2bRocOHejcuTOLFi0iLi6O/fv3A5CZmcn8+fP54IMPGDJkCN27d2fhwoXs2LGDXbt2AfDXX39x4sQJfvjhB7p06cLo0aN5/fXX+fzzzykqqrjfi06nY9asWbi6uuLh4cFzzz1X5sPbn3/+yU033WTc55ZbbiE6Otq4fciQIcycOdPkmOTkZKytrdmwYUOF17a0tOTuu+9mwYIFxnUXL15k8+bN3H333eUeM3/+fO69917uvfde5s+fX+G5hRC1a9PpJEZ8sIXvd8UCcFfPQNbPGsitnf349v5eDGjjRX6xjvsX7eXvE6ZZnMcuGWbeq79MKYB+YZ5YaTXEpuYRk5J7/QOEEEIIIYRopiQoVQcURSGvOM8sy418K5+ZqX6Ac3d3B2D//v0UFxczbNgw4z7h4eEEBQUZs4x27txJx44d8fHxMe4zcuRIsrKyOH78eIXXmjt3LosWLWLBggVs27aNtLQ0Vq1aZbJPbm4us2bNYt++fWzYsAELCwvGjx+PXq8HYPr06SxZssSknO6HH37A39+fIUOGVHqvDzzwAD/99BN5eWoT5EWLFjFq1CiT+zCIjo5m586dTJw4kYkTJ7J161ZiY2MrPb8Q4sak5xYxa9kh7l+4l8uZBQS627F4em/emdAJFzsrAOystXwzpTsj2vtQVKLn0R/28/vhywDkF+mITs4BoIN//WZKOdpY0jvEA5ASPiGEEEIIISpjae4BNEX5Jfn0XtLbLNfeffdu7K3sq32cXq/n6aefpl+/fkRERACQkJCAtbU1rq6uJvv6+PiQkJBg3OfaQI7hsWGf8nz00UfMmTPHWAr45Zdfsm7dOpN9JkyYYPJ4wYIFeHl5ceLECSIiIrj99tuZOXMmv/76KxMnTgTU4NK0adPQaDSV3m/Xrl0JDQ1lxYoV3HfffSxatIgPPviAc+f |