Last active
February 24, 2021 07:47
-
-
Save balzer82/e09c4e23410f7ec5ff38 to your computer and use it in GitHub Desktop.
Top 10 Video views of CCC events from media.ccc.de
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"metadata": { | |
"name": "", | |
"signature": "sha256:57ff8faa4b969cc9b7886303f581329d5dd2711403c5571fe05208d04f5c50e1" | |
}, | |
"nbformat": 3, | |
"nbformat_minor": 0, | |
"worksheets": [ | |
{ | |
"cells": [ | |
{ | |
"cell_type": "heading", | |
"level": 1, | |
"metadata": {}, | |
"source": [ | |
"Crawls 'media.ccc.de' and ranks the videos for views" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"from bs4 import BeautifulSoup\n", | |
"import requests" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 118 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"#%matplotlib inline\n", | |
"import matplotlib.pyplot as plt\n", | |
"import pandas as pd" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 124 | |
}, | |
{ | |
"cell_type": "heading", | |
"level": 2, | |
"metadata": {}, | |
"source": [ | |
"Some URLs you can use" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"#url = 'http://media.ccc.de/browse/conferences/datenspuren/2014/index.html'\n", | |
"#url = 'http://media.ccc.de/browse/conferences/eh2014/index.html'\n", | |
"#url = 'http://media.ccc.de/browse/conferences/fiffkon/2014/index.html'\n", | |
"#url = 'http://media.ccc.de/browse/conferences/vcfb/2014/index.html'\n", | |
"#url = 'http://media.ccc.de/browse/conferences/hackover/2014/index.html'\n", | |
"#url = 'http://media.ccc.de/browse/conferences/mrmcd/mrmcd14/index.html'\n", | |
"#url = 'http://media.ccc.de/browse/conferences/froscon/2014/index.html'\n", | |
"\n", | |
"#url = 'http://media.ccc.de/browse/congress/2014/index.html'\n", | |
"\n", | |
"\n", | |
"# Or you can even try all years for the congresses:\n", | |
"for year in range(2000, 2015):\n", | |
" url = 'http://media.ccc.de/browse/congress/%i/index.html' % year\n", | |
" r = requests.get(url)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 119 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
" soup = BeautifulSoup(r.content)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 120 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
" eventname = soup.find('h2').text.encode('utf-8')\n", | |
" if len(eventname)==0:\n", | |
" eventname = soup.find('h1').text.encode('utf-8')\n", | |
" \n", | |
" print('%s...' % eventname)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 121 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": true, | |
"input": [ | |
" talkurllist = []\n", | |
" for link in soup.find_all('a', attrs={'class': 'event-preview'}):\n", | |
" talkurllist.append(link.get('href'))" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 122 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
" talks = {}\n", | |
"\n", | |
" for talkurl in talkurllist:\n", | |
" r = requests.get('http://media.ccc.de/' + talkurl)\n", | |
" soup = BeautifulSoup(r.content)\n", | |
" title = soup.find('h1')\n", | |
"\n", | |
" ul = soup.find('ul', attrs={'class': 'metadata'})\n", | |
" for i,li in enumerate(ul.find_all('li')):\n", | |
" if i==2:\n", | |
" talks[title.text.encode('utf-8').strip()[:60]] = int(li.text)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 123 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
" name = 'Views \\'media.ccc.de\\''\n", | |
" df = pd.DataFrame(data=talks.values(), index=talks.keys(), columns=[name])\n", | |
" df.sort(name, inplace='True')\n", | |
" df = df.tail(10)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 125 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
" df.plot(kind='barh', figsize=(11,5), title='Top 10 Most Viewed \\'%s\\' Talks' % eventname, color='#94C600')\n", | |
" plt.tight_layout()\n", | |
" plt.savefig('%s-Top10-Talks.png' % eventname, dpi=150)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"metadata": {}, | |
"output_type": "display_data", | |
"png": "iVBORw0KGgoAAAANSUhEUgAAAscAAAFgCAYAAABXB9TlAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xm8VWXZ//HPN8VUsDITh4Q0FafIA6ipYQ6HfDS1UtNG\n0yyb1Z40rKy0x3oijMq0MDPHBucB9Wep2xGHVPDIcaScssex0MIpTa/fH/e9WWtv9oYDnM06wPf9\nevFir+le17r2PnDte197HUUEZmZmZmYGr6s6ADMzMzOzgcLFsZmZmZlZ5uLYzMzMzCxzcWxmZmZm\nlrk4NjMzMzPLXBybmZmZmWUujs3MzDpM0tGS/lx1HK1IulbSr6qOY6CT9LCkI9st29LDxbGZ2VJG\n0mvz+fNgh877WUk1Sf/I53l3m/0OkHS/pJck3SvpY30Yux77Hi22XZi39VuBJ+kTkl6bzz5DJb0s\n6Qtttu8r6VVJ6wPHAu/qr/j6WeQ/LUlaN+d3eF5eUdKlkh6R9KKkJ/JzsEnTcYMkTZT0mKQXJN0g\naXSL8TeTdKakv+XXxMOSLpC0Q2mfH+XXymxJz0q6UdL7msa5VtJRba7h6D78XHxyAfM0z7zZksvF\nsZnZ0mfN0p+987pRpXVbdui8KwFXAV/Ly3MVDpI+CJwM/AJ4Z358hqRd+jD+I8BnmsZbG3gf8NdW\n5+ukiHgKuAg4qM0uBwHXRMQDEfF8RMxafNF1VABXAPsAI4DdgOWBqyWtWNrvWOBA4LOk19yDwFWS\n1qjvIOm/gNtJr8tPA5sAuwO3AL8sjXUX8EXSa2Yr4HrgYklbNMXV7jVwLMXrfy3gZuC3NP6snLMA\nObClmItjM7OlTEQ8Vf8DPJNXP11a9y5J0/Is3ZOSfi5p5frxkk6TdKWk/5b0f5Kel3SOpFXnc97j\nIuIHwNXz2G08cFbed2ZETAIuAI7ow6WdCuySC+K6A4EbgIcAla5hkKQJeTby35LulvTR8mCSPpNn\nI1/Ms93XSXprnrE8I+9Tn1U8pU1MvwS6JI1pGvvtwE55e8u2CknvzTOgL+Q4T5H05rxt/XzeDUr7\nPyzp0dLyhnmfDUvXfLSkB/M13SXps03nfJukP+Rz/lXSwW2z3UZE/DsifhYRt0bEoxExDfgWsAZQ\nj+UNwOeAr0fEpRFxN/Ap4N/A5/M+K5PyfHVEvDci/hgRD0XEXRExkVQE1895WkRck7fPjIhvALOB\nbcqXR+k10BTz86WfiyeBl4EXSz8TmwN/yK+DZ/Ms9AK9iZQ0TtIzkg7Jy+tIOl/S0/n5eEDS4Qsy\nplXDxbGZ2TJE0juBKcC1pFm4/UkzdSc27boVsD2wM2lmtgv49SKeewVgC+APTZv+CGwtqWVhU/IA\nacbwU3m815GK45Py9vKs4f+SZpkPBTYDfgP8RtJO+dgxwGTg+6TZz+2B0/OxNwJfzo/rs4qHtgoo\nImo5rubZ408DTwMXtjoux3ER8DtgJPBBYF3SGwUi4gHSbHg93vWBocAb6sVw3va3iKgX3b/K43wW\n2Bj4H+CHkg7MYyjHs2q+3j3yn7laHVpdarsNklYh5fpB4P68egzwekrPdUS8BlwJjM2rdgZWJz0H\nc58w4p9tzre8pP2AFYFrmmJc2E8PBgMnAFuTCu4/k4rlN/flYEkfJz13n4uIn+XVvwBWAbqBjUiv\niUdbj2ADyfJVB2BmZovV14DbI+KwvDwzzx5eKOnIiKj/5y1gv4iYDSDpS8AfJb09Iha2Z/ktpP93\nnmha/wSpkHoz8I95HB+kQviHpIJqZ1JRcyHpI3dyrCsDBwNfiYjz8+of5JnAI0kz28OB54GL8zU+\nSvrovj7Gv2BO68T8/Ao4UtJXI+IFScsBBwCnR8R/2hzzHeC4iPh56ZwHAA9LemdEzCAVft35mncC\nbiLNvO5EKt52yvsgaT1gP2CTiJiZh3xE0sY5F6fksbqAERHxl3zcx0hFeFsR8TCwXPN6ST8k5X0w\n8Bdgl4h4OW9eK//d/Fw/SVGMj8h/3zOv85fOtzvwe1L7zvPAvhEx5zmLiB37Mk4rEXFR07k+R2pJ\n2oX0BmYeYelw0sz5ByKiXKwPBy7MzyXMJ882cHjm2Mxs2bIpafa17HpSMbxpad099cI4u6l0fJUu\nAgZLei9phvSMiHilaZ8NgBVofZ2b5cdXkGY6H5L0e0kHSVptIWM6lTSL+ZG8vBtptvmktkekHtz/\nVvqC2WxJs4G7SW8A6jPD1wI75Mc7kfq5r8mPydvqLSxbkJ7DaU1jfoOUD0jP3d/rhTFARPydYrZ3\nQU0kFds75jGu7ONMa312d36fFDS7mtT+8C7SJx1nqc2XPheUpPWUvhT4Z0n/BP4JvJFU4M7LZ4Fj\ngB2bCmOAnwLflHRLbvHZrj9itc5zcWxmtuzpS1GyoIVLX/wd+A+pcCxbgzQjOt8vrOVC+DTSTN1u\npFlbWMCP0yPieVJBuScwk9QH+xe1uJtCH8Z6GriYVChB6Yt48zhMwARSsVf+syFFK8LVwOq5FWaH\nvHw1sIOkkaSWhHpxXP//fJum8TYjtc/My0I91xHxj/xlw+uAvYDVKN4gPJ7/bvVc17fVi/LN6IOI\neCEiHoyIaRFxBDCVNu0uC+FSYB3STPi7SEX/U6Q3WfNyM6n3+TPNGyLiNOBtpEJ+LeBySWf2U7zW\nQS6OzcyWLXcD72latz2puLy7tG6T3Etat23+u08fgbeSP3K/jfRRddkuwM0R0dcC9yRS3+rNpRaC\nsr+Qiu3tm9ZvD/SW4nktIm6IiKMiYgypaKt/ae9lmNOn2xe/BLaStGu+nl/OZ//bgXfkYq/5z/M5\nvkdJ/cyHkFoJbgN6SK0phwIPlNpgpuW/39ZivIfytnuAtzR9ye8tFO0Ni6L+Zbh6+8U00nMw57nO\nPeLjSEUtpF7zp0itLnMPOJ8vgOZzzdXusaDyJwabABMi4sqIuI8U+9A+HD6D9MZlL0lzfVIQEU/k\nLxPuTyqgPy5pyKLGbJ3lnmMzs2XLscB0ST8mFZnrAscDv4mIv5X2C9It1r5FmhH8Oak/t22/saT6\nl9fqd5PYUNILwOP5DgGQPoo/T9KtpOJoN9Ls7e59vYCIeCAXNP8unz7/Iff9/gw4RtLTpALmQ8D7\nScUZkj4ArEe608XTpC+QDaMo/usF5Qck3Qi8UC9a28RUk/QA6fZg/6DNF/FKvgNcIWkScCZp9nHD\nHOeXI+KlvN/VpC8gXp7fPISk64BPkto56uf/i9IdNX4laTzpVmiD83W9JSImRsRVku4kfTHxYOAV\nUv92c1vKPEnantSicRPpbijDSHcbeZXiC4X/knQi8L+SHgceJvW7v578xiEiXsx91hdKuhKYRJrF\nHwz8F6mY3Fjp1m9fBC4j9Sy/ifQmZifSa2dhlO9s8QzpNfBZpXuAv4X0On2xxTFzLUfEPUp3OKlJ\nOhU4MCJC0gk55pmktpu9gL9GxHMLGbMtJp45NjNb+s2ZkY2IXlKR+B7SLOQZwCXk22uV3Eqa4bsS\nuBy4k3RniHn5PDCd9BF1kIq36aRbetXPfzGp6PkSqWg9CNg/Iv64QBcU8WxElIuX5jsVHElqufgp\nabb4Y8DHS32hs0h3aric9PH+BOCYiDg1j38bcBypkHuS9AZifn5F6lNt9UW8hvgi4lpScfdOUi/0\nncCPgX/RWKxeQ5odLd8e7+oW6yC1dfwkX/vdpB7l/Uizz3UfJPXTXk+6a8mlpOdoQbwI7AvUSIXf\nb4Fnga0j4v9K+32N9Bo4mTRTvj7w3tIbJSLiD6T+6ydJd0O5N8e0HWnGHNKboHeS3nDMJLWdjAJ2\njYgpCxj7nFPnP/W7aOyT45tB+vLiTyjaP8rHtFyOiPtJn0zsBJyeZ8mheP1dR5r933Uh47XFSH3/\nFMvMzJYFkk4D3hoR7606FjOzxc0zx2ZmZmZmmYtjMzNrtii/TMHMbInmtgozMzMzs8x3qzCzynzh\nC1+ID33oQ1WHMWCcd955OB+Jc1FwLgrORSPno9DT08Nhhx3WL/dnd3FsZpV54IEHGD16gX/nwlLr\n5JNPdj4y56LgXBSci0bOR+H000/vt7Hcc2xmlVlzzeZfnrVsGz58fr+pdtnhXBSci4Jz0cj56AwX\nx2ZWqQkTJlQdgpmZ2Rwujs2sMoMHD2bixIlVhzFgvPGNb6w6hAHDuSg4FwXnopHzUdh88837bSwX\nx2ZWmQ022KDqEAaUkSNHVh3CgOFcFJyLgnPRyPkodHV19dtYvpWbmVWmVqvFuHHjmDVrVtWhmJnZ\nEmz69Ol0d3f3y90qPHNsZmZmZpb5Vm5mVpmenh4Annx+asWRDAy33tzLVtv4Y1JwLsqci4Jz0Whh\n8jF40HCGrOC7XMyLi2Mzq9SuB0Lt0fdXHcaAMPMpmP1o1VEMDM5FwbkoOBeNFiYf3cOmuDieDxfH\nZlaZrq4uVty26igGjhG+l/8czkXBuSg4F42cj85wz7GZmZmZWebi2BYrSa9KukNSj6RpkrbpwzHX\nShqdHz8s6c3z2Lfldkl7SDoiP/6gpE0W5Tr6QtIOki5ZgP3XlnTuAp5jeUn/K2lmzusdkr654NFW\no95zbMnM6VVHMHA4FwXnouBcNHI+OsPFsS1uL0TEqIjoAr4B/KAPx0Sbx+32netWLhFxSUT8MC9+\nENi0L8EuThHxWETss4CHfQ9YE3hHRIwCtgMGLcgAkvzvgJmZWeb/FK1KbwRmwdyzrJJOkLR/uwMl\nDZZ0WZ6B7pVULioPzrPSMyRtlPc/QNLxeaZ6D+DYPMv69qZxT5P0C0k3S3ogx3W6pHsknVra7xeS\nbpN0l6SjS+t3kXSvpGnAnk3xniLpT5KmS5rrG2iS1pXUW4r3AkmX51nhH7bYf2XgM8DBEfEyQEQ8\nFxHfLe3ziXzOOySdWC+EJT0n6UeSeoBt8vLEfD1XStpa0nU5B3uU4rs+53bOrH/O0bWSzs3X/pu8\nfidJF5Ziea+kC8rX0J83bV8auH+w4FwUnIuCc9HI+egMF8e2uK2UC7V7gV8Bx7TZL5j3LPEuwP9F\nRFdEjAT+WNr2dESMASYDhzcMGnEzMAU4PM9gP9jivG+KiG2A/877TgQ2A0ZKqv9+yiMjYktgc2B7\nSSMlrQicBOyez79m6RqOBGoR8S5gJ1JxvvI8ro889r7ASODDkt7atH0D4K8R8Xyrg3PryL7AtnlW\n+TXg43nzysAtOX835uVaRLwDmA38T45zz/wY4EngvfnaPgL8rHS6LuBQ0oz82yVtGxFXAxtLWi3v\n8yng181xXnbyfLJgZma2GPluFba4vZgLNSRtDZwJvGMhxpkB/EjSBODSiCjfKLc+Ozkd2KvN8fP6\nLTr1Gey7gCci4u4c793AusCdpGL1INLP0FqkonA54KGIeCAf/xvgs/nxzsAekurF+uuBYcD984ij\nFhGz87nvyef+v3Y7SzqAVKCuBmwLdANjgNslAawEPJF3fxU4v3T4yxFRf4PRC7wUEa9KuiufF2AF\n4IT8BuFVYMPS8bdGxGM5jh5gPeAm0vO7n6TTgK2BT5RjPu6447i81JW90hBYZ0QxG1Lvp1tWlq8+\na9m+/vJyuZdyIMRT5XJ93UCJp8rlv82EnT4ycOKpenlh8tE9LP09dWr6b3Ps2LFL5PLkyZPp7e1l\n+PB0W7qhQ4fS3d1Nf/Cvj7bFStLsiFiltPwEqTjeGPhGROyW158MXB8RZ0i6BjgsIqZLeggYExGz\nJL0J2A04iFRIHtO0fQvg2IjYMReOYyLi4NwecUlENHzEn897KqnYPl/Sunm/kaVtlwB3AFcAW0TE\nP/P6a4Ee4GcRsX3e//3AQRGxh6TbgY9GxJ/nkZs55yvHm7ddkq/l+tL+KwN/BdaNiOdK63uB3Unt\nI2tHxFxf0GvxPMxZlnQU8FxETCpvy+0jK0fEeEnLkQroQZJ2yM9Pvf3ieOD2iDhd0lo5ZyfnOL9e\njmPSpElx+OGHc8JN7bKybJk53R+T1jkXBeei4Fw0Wph8dA+bwhqDx3YmoAr510fbUkHSxqTZ1n8A\njwCbSlohF707zefYtUjF2W+BHwGjFuDUs4E3LFzUCFgFeB74l6Q1gF1J7RP3AeuW+pg/Wjruj8Ah\npfgXJN7yueeIiBdIbQonSHp9Hnc50gxvADXgQ5JWz9veLGlR7vz+BoqZ50+Snrt5iojHgceAbwGn\nNm93z3Ej/6dfcC4KzkXBuWjkfHSG2ypscVtJ0h35sYBPRvr44lFJ55BaGR4itUS0Uv+oYySpb/c1\n4BXg8232jRaPzwJ+JelgYJ82fcetHgNERMzI13Af8CgwNW/4t6TPApdJegG4ARicjzsG+KmkGaQ3\npQ8CrX4tXKt428UCqZf5GOAuSbOBF4HTgMcj4hVJ3wKuyF/EewX4Imm2eX5jt8rBL4DzJX0S+APw\nXJv9m5d/B7wlIubVQmJmZjYguK3CzDpK0gnAtIiYa+bYbRWN/JFxwbkoOBcF56KR2yoK/dlW4Zlj\nM+uYfEu72aQ7f7S064GLLx4zM7P5cXFsZh2Tb/vWVldXFytuu7iiGfg8I1ZwLgrORcG5aOR8dIaL\nYzOrVPewKVWHYGa2zBg8aFG+l71scHFsZpXp6elh9Gj3VdRNnTp1zj08l3XORcG5KDgXjZyPzvCt\n3MzMzMzMMt+twswqU6vVYvRoN82Zmdmi8S8BMbOlxoQJE6oOwczMbA4Xx2ZWmZ6eHiZOnFh1GAPG\n1KlTqw5hwHAuCs5Fwblo5Hx0hotjMzMzM7PMPcdmVplarRbjxo1j1qxZVYdiZmZLMPccm5mZmZl1\ngItjM6tMT09P1SEMKO4fLDgXBeei4Fw0cj46w8WxmVVq/PjxVYdgZmY2h3uOzawyvs+xmZn1B/cc\nm5mZmZl1gItjM6uMe44buX+w4FwUnIuCc9HI+egMF8dmZmZmZpl7js2sMu45NjOz/tCfPcfL98cg\nZmYL69vHfJEvf/VjVYdhA9TgQcMZssLwqsMws2WIi2Mzq0xPTw8//8lZbLLPWVWHMiDMnA4jPJEO\nFLnoHjZlmS+Op06dytixY6sOY0BwLho5H53hnmMzMzMzs2yexbGk1STdkf88Lulv+fEzku5e2JNK\nOkDS06Wx75C08UKO9dzCxtFirG82Ld/YX2MvCkmnSdq7zfoHSzlcqK+tStpB0iXz2WcPSUfkxx+U\ntEkfxv1AeT9J35XUvTAx9pWk30u6U9Kh/TzugZJm5LF7Je2R19efgx5J90s6XdJb24xxraRHmtZd\nJGl2f8baXyRtJel6SfdJmi7pV5JWWoTxrpU0pryuq6tr0QNdinjWuOBcFDwzWHAuGjkfnTHPtoqI\n+AcwCkDSUcDsiPixpLcBly7CeQP4fUQcsghjlMfqE0nLR8R/5rHLN4D/nTNwxLsXJbB+FLS+zgAO\nj4gLOh5AxCVAvYD+YH5873wO27O8X0Qc1bEAAUlrAltExIb9PO46wDeBURExW9LKwNC8ueE5kPQV\n4GpJ74iIV1oM94ykd0fEjZLeBKzFAryGF1Uffgbq+60BnAN8OCL+lNftDawCvLiQ52n3OjYzMxsw\nFrStQqW/l5N0kqS7JP1R0ooAktaXdLmk2/Os00bzGatYIe0p6ar8eK08E7dGnmm+WNI1kmZK+k6L\nYyXp2DyrN0PSvnn9DpJukHQxcFded1GO7y5JB+V1E4CV8gzsmXndc30Y+1pJ50q6V9JvWl6odJCk\nW/Ps4nn12bc863icpBslPVCfHc7nOyHP2F1JKsTafQOzVR5/Kunb+fF/Sbouj3mapBMl3ZZzu1uL\nY9+c83OnpJsljczrD5B0vKRtgD2AY/Ns4ttbXZ+kbVvsN2cGXFJ3Xj9D0q8lrZDXPyzpaEnT8ra5\nXj+SVpR0at4+XdIOedMVwFvzczi26Zg9JN2S979S0tC8/mhJp+TX1gOSDm6R46HAbOB5gIh4ISIe\nbvUcRMRPgSeAXVuME8DZwEfy8l7A+eXjJX0t5/JOSUfndevm18Kp+Xn7raSd8+tmpqQt5/PcHS3p\nTKVPFs7Ir4fNS+ecWt+35EvAafXCOF/b+RHxlNKM8k05lzdKGpHHOUDSFEk14Mr8PJ0l6R5JFwAr\n0fR69X2OG82cXnUEA4dzUfC9bAvORSPnozMWped4Q+CEiHgH8CxQ/9j/JODgiNgC+BrwixbHCviw\nGtsqXh8RFwKPS/pyHuc7EfFkPmZLUjHxTmAfSc0fuu0FbJ63jyMVZWvmbaOAQyKi3rrxqRzflsAh\nklaNiK8DL0bEqIjYL+8XfRi7CzgU2BR4u6RWs83nR8RWEdFFmkX9dGnbmnmGendgQl63JzAC2AT4\nJLAtrWfclGOp5/DMvP4bOb87AscBB0Rxz77hEbElsBtwoqTXN435XWBaRGxOmi09o7wxIm4GppBm\nS0dHxIOtri8ibmqxXwCh9EbqVGDfiHgn6ROML9RPATwdEWOAycDhLa77S8Cr+diPAqfn4noP4IH8\nHDb/i3FDRGwdEaNJBer40rYRwM7AVsBRkpZrOrYHeBJ4KBfSu7eIqWw60K5NqAa8R9LrgA/nWACQ\ntDOwQURsRXrNjpG0Xd68PvCjPO5GpBndd5PyU28HmtdztzHQHREfA34NHJDPOQJ4fUT0NsW5GTCt\nzTXcC2yXc3kUpU9bctx7R8SOwBeB5yJi07zfGFq8jnc9sM1ZzMzMKrAod6t4KCJm5MfTgHUlDSYV\ncudKcyaIVmhxbABntWmrOBi4G7gpIs4urb8iIp4ByLNQ25GKkLqxwO9yEfiUpOtIxe+/gFsjotzr\neaikD+bHw0iF/q3zuNb5jf1YjqsHWBdo7lUeKel7wBuBIcAfSnm4CCAi7lX6KBvgPaXzPS7p6jZx\ntWyriIgXlWbEbwAOjYiHSvufk/f5i6QHmbuIezfpzQARcY1S3/kqLc5dngFsd33N+9WXNyK9fv6S\n151OKniPy8v165lej6VFjD/LMd6v1Mc7AphX//kwSecAa5Jekw/m9QFcllsg/iHpKWAN4LH6gRHx\nGrBLnqHtBn4iaUxEfLfNuUT79oFXgamkon7FiHik9LOyM7CzpDvy8mBgA+BRUr7uBlDq978q73MX\n6TVXz0ur5y6AKRHx77zfecC3JX0NOJD0RqXddbTyJtIM9AZ57PK/I1dGxLP58Xbk5zQieiXNoElX\nVxcrbtvmLMsg99kWnIuC+0oLzkUj56MzFqU4/nfp8avAiqSZ6GciYlQfjm/3H++wPN4aklSa8Ww+\n9rWmddFizPqxz885MH0E3w1sHREvSbomxz4v8xq7OQ+tcnoa8P5cIOwP7FDa9nLpcf0crc63oN4J\nPA20/HJYSXMey3HUtet3rjuN9tc3v2Pr5yuvq+e0XT5bxTg/xwM/iohLJW0PHF3aVn4O2p4zIm4D\nblNqdTmVNFMLc1/PaIrida5hgLOAC0mzqc1+EBEnlVdIWpfG19lrpZhfa4q3XV5eKF3HC/kaPgjs\nk+NtdjdppndKi23HALWI2FPp+wfXlrY937TvPJ+n8847j+mPwGprpeWVhsA6I4rCqP7RupeX3eVV\n/tbLHuNSAVD/CLleEHjZy15edpcnT55Mb28vw4enWz0OHTqU7u7++c5/n39DntIX8p6LiEn5P+tL\nIqLe03gYMCQivqt0h4efRMR5SlNiI0szzPWxDgDGRMTBTeuXB24CvkL62Pf+fL4DgO8D7wBeAm4h\ntUZMlzQ7IlaRtCfwOeB9wGrAbaSPyTcFDouI+t0F3g98JiLer3SHjDuA/4qI6yXNAobWv0i0EGMf\nD9weEac3XdfTed9ngf8HPBoRB0o6Fbg0Is6fx/nWIBUqn2meIW4+vrT+baT+2+2By4HPRcStkk4D\nVie1cLydVNSsT5rtPywi9pB0HKmt4Xv5jcSkiBhTfs4k/QyYHhGnzef6mvc7lfQFvcuAmcBOEfFA\njmtaRBwv6aF8nlmStgCOzR/Rl6/vv4HNIuIzuS3gCtLs/1spvS6bjpmeczg9x7FuROyo1Nc7OyIm\n5f16gd0i4q+lY9cC1oqI6Xn5M6Q3A+8vPwf59X4waRZ8s2j6Qlp+I3ZYjuGrpJ7eWaXn/b2kwrM7\nIp5XuuvFy6QZ5PLPW/mc69a3zeO5a7jGPMZo0pdqr4uIj7bI11DSpyn7RsSted2epE9FTgR+ExEX\n5LH3j4j1mn+u8/O0aUQcJOkdpJ+1d9XzCDBp0qRYcdtWnTPLJt/nuFC+z/Eag5ft2THfy7bgXDRy\nPgpV/oa8aPO4vPxxYLKkbwGDgN8DzR+nBqkntvyMfpHUz3t9RNyUP4K9TdJlef9bSV9eWgc4s/Qf\nbABExIVKXxa7M6/7WqQvD23SFOsfgM9Luge4H7i5tO0kYIakaZH6jhd07FZ5Afg28CfSTO6fSK0H\nrfYvn28n4B7gr6Q3DO0cm3NdP35r4GRSEfaEpE8Dp+WWgMjj3Qq8gVQ0vyypfBeBo4FTJN1JmgXc\nvzR2fZ+zgF8pfXltn3lcX/N+5Ov7t6RPkdpvls/xnNgmH63y+QvSa2wG8B9ScfZKbk9o927v6Hy+\nZ4CrgbfN5xxlg0h5Xpv05uwp4POl7ccqfQFyZdLracfmwrhZRPy4vJjXXZlfUzfna5kNfKJNjK1+\nFo9m/s9d/fzTJf2TNi0V+fX9EeBHuVB+DbiO9PMzkdTn/S3SG5362M3nmQycmn/W7gVub5kMMzOz\nAaTPM8dVajfTbAumPnPbPANty55c6F8TEe3uJrNY1Gq1uG/lcVWGYAOcZ47NrC/6c+Z4SfkNeb4/\nqlk/kfRJUmvSN+e37+Jw2clVR2BmZlZYIorjiDi9zZ0tbAFExKc8a2wRcUZEDG/uVa9CT08Pl59S\ndRQDh+/tW3AuCr6XbcG5aOR8dMYSURybmZmZmS0OS0TPsZktnWq1WowbN457H211xzgzGDxoOENW\nGF51GGY2wFV5twozs37nL1yZmdlA4bYKM6tMT09P1SEMKO4fLDgXBeei4Fw0cj46w8WxmVVq/Pjx\nVYdgZmY2h3uOzawytVotRo/2r4QzM7NFsyze59jMzMzMrONcHJtZZdxz3Mj9gwXnouBcFJyLRs5H\nZ7g4NjPBBeAqAAAgAElEQVQzMzPL3HNsZpVxz7GZmfUH9xyb2VJjwoQJVYdgZmY2h4tjM6tMT08P\nEydOrDqMAcP9gwXnouBcFJyLRs5HZ7g4NjMzMzPL3HNsZpWp1Woxbtw4Zs2aVXUoZma2BHPPsZmZ\nmZlZB7g4NrPK+D7Hjdw/WHAuCs5Fwblo5Hx0hotjM6vU+PHjqw7BzMxsDvccm1llarVavHWjF6oO\nwwaYwYOGM2SF4VWHYWZLkP7sOV6+PwYxM1tYtUffX3UINsB0D5vi4tjMKuO2CjOrjHuOG82cXnUE\nA4d7KQvORcG5aOR8dIaLY7Mmkl6VdEfpT79PYUk6QNLxbda/Kmlkad1dnYih6bwrS/qtpBmSeiXd\nkNetK6m3k+c2MzMbSNxWYTa3FyJiVH8OKOl1EfFaH3f/G3Ak8JG8vDi+GHAo8HhEfBxA0obAfzp9\n0q6uLu7r9EmWICNGVx3BwDF27NiqQxgwnIuCc9HI+egMzxyb9UGe0b1A0uWSZkr6YWnbR0szrhNK\n65+T9CNJPcA2kj4l6X5JfwK2bXOqAC4FNpM0okUcO0u6SdI0SedIGixpS0nn5+0fkPSCpOUlrSjp\ngbz+EEl3S7pT0u9bnHdN4LE5QUT8OSJezovLSTopz2D/UdKKecwuSbfkMS+Q9CZJQyXdnrdvLuk1\nSevk5Qfqx5ZddnL7vJuZmS1uLo7N5rZSqaXi/NL6zYF9gZHAhyW9VdLawARgR6AL2FLSB/L+KwO3\nREQX8CBwNKkoHgtsSvsZ4deAicA3yyslvYU0o9wdEWOAacBXgen53ADbAb3AVsC7gFvy+iOArojY\nHPhci3OeAhyRC+9jJG1Q2rYhcEJEvAN4Ftg7rz8D+Foesxc4KiKeAlaUtEqO5TbgPZLeBjwZES+V\nT9rT08Plp7TJwjLIPccF91IWnIuCc9HI+egMt1WYze3FFm0VAdQiYjaApHuAdYG3ANdGxD/y+t8C\n7wEuBl4F6sX1u4BrSvudDcw1M1zyO+BISeuW1m1NKqpvkgSwAnBTRLyaZ2U3BrYEfpxjWA64IR87\nA/idpIuAi5pPFhF3Sno7sDMwDrhN0jbAS8BDETEj7zoNWFfSG4A3RkR9/NOBc/Pjm4B3k4rjHwC7\nACrFMsd1110HFLPHKw2BdUYU7QX1YnFZWf7bzIEVT1XL3cPS3/X/+OsfHS+ry3UDJZ4ql3t7ewdU\nPFUvL8v5mDx5Mr29vQwfnr6SM3ToULq7u+kPvs+xWRNJsyNilaZ1+wNbRMTBefkS4EfAG4G9I2L/\nvP7TwCYRcXh5nDybvFdpv0OADevjtTqPpIOAMaRCc3fSjPXHIuJjLWL+FvAC8D5Sr/LppE+GDo+I\nuyW9jlQw7wHsCoyMiFfnkYPjgYdIxf2lETEyrz8MGAz8FOiNiLfl9esD50TEGEmfIBXxO5Jmym8G\n7sjjXFY+T61Wi3HjxnHCTe0isWVR97AprDHYvZRm1nf9eZ9jt1WY9U2rH7gAbgW2l7SapOVIhel1\nLfat7/dmSYOAffpwntNIs7ir53P9CXh3LkTJ/cYb5n1vAL5Cmkn+O7AaMCIXxgKGR8S1wNdJBf3g\nhpNK20paNT9egVTcPtzmuhUR/wKekVSvYPYDri3F8gngz5Hefc8iFe3+/M/MzAY8F8dmc2v1cUq0\nWh8RT5AKzmuAHuD2iLikeZyIeJzUc3wzqUi8e37niYhXgONIxTER8TRwAPB7SXeS2hc2ysfdCgwF\nrs/Ld5L6gCG1T50paQapP/m4XNyWrQ9cW9rntoi4oE0+6sv7A8fmWN4J/E+O85G8vR7LDcAzEfHP\n5ov1fY4buee44F7KgnNRcC4aOR+d4Z5jsyYR8YYW604ntSrUl/coPT4LOGt+40TEaaTZ4Hmdu/k8\nxwPHl5avIX3Zrvm4F4EVS8ufKz1+hdT/O6/zngmc2WL9w6TCt748qfT4TmCbNuMNLz3+Aan3uKVd\nD5xXZGZmZouXe47NrDK1Wi3uW3lc1WHYAOOeYzNbUO45NjMzMzPrABfHZlYZ9xw3cs9xwb2UBeei\n4Fw0cj46wz3HZlap7mFTqg5hwFjlb71sNWxk1WFUbvCg4cBfqw7DzJZR7jk2s8rUarUYPXp01WGY\nmdkSzj3HZrbUmDBhQtUhmJmZzeHi2Mwq09PTw8SJE6sOY8Bw/2DBuSg4FwXnopHz0Rkujs3MzMzM\nMvccm1llarVajBs3jlmzZlUdipmZLcHcc2xmZmZm1gEujs2sMr7PcSP3Dxaci4JzUXAuGjkfneHi\n2MwqNX78+KpDMDMzm8M9x2ZWGd/n2MzM+oN7js3MzMzMOsDFsZlVxj3Hjdw/WHAuCs5Fwblo5Hx0\nhotjMzMzM7PMPcdmVhn3HJuZWX9wz7GZLTUmTJhQdQhmZmZzuDg2s8r09PQwceLEqsMYMNw/WHAu\nCs5Fwblo5Hx0xvJVB2Bm9uTz/gce4JmXenny+aqjSAYPGs6QFYZXHYaZ2WLnnmMzq0ytVotx48Zx\nwk1VR2LNuodNYY3BY6sOw8ysT9xzbGZmZmbWAS6Ord9IWk3SHfnP45L+lh9Pl9S2hUfSaZIezPtO\nk7T1Ap73m4sQ8/aStpnPPhdJunkhxz9N0t59Xd+0zwqSrsp52WcBz/s2SR/t476v5nP0SjpH0koL\ncJ7NJe3aZtt7Jd0uaUb+e8fmfXyf40Yzp1cdwcDhXsqCc1FwLho5H53h4tj6TUT8IyJGRcQo4ETg\nx3l5dET8Z16HAofn474O/LJ5B0nzeq1+YxHC3hHYtt1GSW8C3gGsIGm9hRg/8p++ri8bDUTO4bkL\neN71gI/1cd8X8jlGAi8Dn+/LQfkNzyjgfW12eRrYPSLeCewPnNlqp10P7GOUZmZmi4GLY+skSerO\ns5IzJP1a0grt9s1/3wBskA9+WNIESdOAfSR9NI/TK2lC3mcCsFI+x5l53Sck/SmvO7FeWEvaJc9M\n90i6UtLbgM8B/533bdVguRdwCXAu8JHShZ0m6ThJN0p6oD4LrOQESfdJuhIYWrq2dkl6WNLRObYZ\nkjaSNBT4DbBlju3tksZIujbPwv5B0pr5+A3yDHNP3vZ2YAKwXT720Hk+S41uADaQtLukW/Ks/5U5\nHnKcZ0qaCpwBfBf4cKvZ7YjoiYgn8uI9pOdpUHmfrq4udvvMAkS3lBvhWz7PMXas+53rnIuCc9HI\n+egMF8fWSSsCpwL75NnD5YEvzOeYPYAZ+XEAf4+IMaSibQJppreLVDR+ICK+DryYZz73k7QJsC+w\nbZ6Jfg34uKTVgZOAvSKiK8f0CI0z3K0+n/oIcDZwDlBuUwhgzYh4N7B7jg1gT2AEsAnwSdKs9Pxm\niAN4Ol/nZNIs+lPAp4Eb8nU8ChwP7B0RW5Dy+v18/G+B4/N1bQs8DhxRPzYijpvP+YE5M8HvI+V/\nakRsHRGj8/WPL+26MdAdER8DvgOc1YfZ7b2BaRHxSl9iMTMzq4pv5WadtBzwYET8JS+fDnwJaC7W\nBBwr6VtAvSisOzv/vSVwTUT8A0DSb4H3ABc3jdUNjAFulwSpQH8CeBdwfS6IiYhnm84/F0lrABtE\nxC15+WVJm0XE3XmXi/JY9+Z9yTH9LtJtYB6XdHXLzMztgvz3dNJsdXNcGwGbAVfl61oOeEzSEGDt\niLg4x/JyjnVBvrG7kqQ78uPrgV8Dm0g6B1gTWAF4MG8PYEpE/LsU4/xmxjcjvXl4b/O24447jif/\nA6utlQMZAuuMKGZQ6z24y8ry1WcNrOuv9zPWZ6cW53K5l7KK8w+k5eacVB1Plcu9vb184QtfGDDx\nVL28LOdj8uTJ9Pb2Mnx4uuXk0KFD6e7upj/4Vm7WEZKOIhVS3RGxfV7XDXwxIvZu2vdU4JKIuKBp\n/UPAmIiYJen9pFnT/fO2TwObRMThkmZHxCp5/ZdJxeI3m8baHfhIRHyiRZzPRcSkFtdwMHAM8Exe\ntQpwYkR8K8d8aUScn/edHRGrSPoJMCMiTs3rzwd+2+La5lxz03VuARwbETtK2gE4LCL2kDQS+GVE\nbNs0zirAPRExrGn9nGObr6vFdc7JX2ndtcCPIuJSSdsDR+eYGvIlaX9gi4g4uM3Y6wA14ICImOtL\njZMmTYoVtz18fiEuM2ZOHzitFVXfym3q1Kn+yDhzLgrORSPno+BbudmS4lVgXUnr5+X9gGvb7Du/\nF/RtwPZKd8RYjtTucF3e9oqKu2HUgA/lNgokvVnScOAW4D2S1q2vz/vPJhW9rXwU+K+IWC8i1gO2\noNR33Mb1pB7c10lai9QG0h/uB1ZXvpOHpEGSNo2I2cDfJH0gr3+90t0m/kXpuiS9VdJVC3C+NwCP\n5ccHlNY3P09t86f0ZcbLgCNaFcaQeo6tMFAK44HA/+EXnIuCc9HI+egMF8fWSS8CnwLOlTQD+A+p\nx7eVdnd0SA8iHifdyeIaoAe4PSIuyZtPAmZIOjMi7gW+BVwh6U7gClJv8N+BzwIXSOoBfp+PvQTY\nM3+h7N318+UielhE/KkUw8PAs5K2ahFz5H0uBP5M+gLa6cCC/nqL8l0s5jzO7RIfAn6Y478DqN+C\nbj/gkHy9NwJrkPqGX81f0jsUWIuU/3bnbHY06Xm7nXTXibliyq4BNm31hTzgy8D6wFEqbvH3luYT\nXXZym6jMzMwq4LYKs2WApC8Bj0TEpVXHUjZp0qQ4/PDD/RvyMrdVFPxxccG5KDgXjZyPQn+2VfgL\neWbLgIj4edUxmJmZLQncVmFmlXHPcaOBMms8EHg2rOBcFJyLRs5HZ7g4NjMzMzPL3FZhZpXp6ekB\nUn+rwa0397LVNiOrDgOAwYOGV3p+91IWnIuCc9HI+egMF8dmVqnx48dX+sWvgWTVFXEuzMwq5rtV\nmFllarVajB7tRlszM1s0/iUgZmZmZmYd4OLYzCpT7zm2ZOrUqVWHMGA4FwXnouBcNHI+OsPFsZmZ\nmZlZ5p5jM6uMe47NzKw/uOfYzJYaEyZMqDoEMzOzOVwcm1llenp6mDhxYtVhDBjuHyw4FwXnouBc\nNHI+OsPFsZmZmZlZ5p5jM6tMrVaLcePGMWvWrKpDMTOzJZh7js3MzMzMOsDFsZlVxvc5buT+wYJz\nUXAuCs5FI+ejM1wcm1mlxo8fX3UIZmZmc7jn2Mwq4/scm5lZf+jPnuPl+2MQM7OF9eTz/liwvwwe\nNJwhKwyvOgwzsyWai2Mzq0xPTw/3rXx41WEMGDOnw4hFmEjvHjZlqSmOp06dytixY6sOY0BwLgrO\nRSPnozPcc2xmZmZmlrnn2MwqU6vV4r6Vx1UdxlKje9gU1hjsWSQzW/b4PsdmA4ykIyXdJelOSXdI\n2moBjl1b0rnz2eeNkr7QYr0k3SBpl9K6fSRdvmBXMN8YB0maIGmmpGmSbiqfs49jrCupt3n9ZSf3\nX5xmZmaLysWx2SKStA2wGzAqIjYHuoFH+3js8hHxWETsM59dVwW+2Lwy0kc/nwd+LOn1koYA32+1\nb1/lgrv53fcxwBrAZhExBvggsMoCjNny35qenh4uP2VhI136zJxedQQDh+/fWnAuCs5FI+ejM1wc\nmy26NYG/R8QrABExKyIeB5C0paQbJfVIukXSEEkHSJoiqQZcKeltku7K+x8g6WJJ1+RZ2u/kc0wA\n1s+z0j8snzwi7gYuAY4AvgOcDjwr6aI8k32zpJF5/KMlHVY/Ns92D8+zuvdLOh3oBdYp7bMy8Bng\n4NI1PhUR5+btv5B0Wx7r6NJxD+fZ5mnAh/op12ZmZh3lu1WYLborgO9Iuh+4Cjg7Iq6XtAJwFrBv\nREzLs7ov5mNGASMj4llJ6wLl5v8tgc3yvrdJuoxU+G4WEaPaxPBd4A7gpXz8JGBaRHxQ0o7AGfmc\nzV8yKC9vAOwXEbc27bMB8NeIeK7NuY+MiGckLQdcJekdEXFXHvvveaaZfJ0Nurq62gy5bFqUO1Us\nbfwN/IJzUXAuGjkfneHi2GwRRcTzksYA2wE7AmdL+jowHXg8Iqbl/Z4DkBTAFRHxbJshr4iIZ/K+\nFwBjgYvmE8MLks4CZkfEy5LeDeyVt10jaTVJ82uDeKRFYdwXH5Z0EOnfk7WATYG78razm0MtL5x3\n3nlA0Xe80hBYZ0RRJNbbDLzct+Vbb+5l1RWL/zDrH7l62cte9vLStjx58mR6e3sZPjzdvnLo0KF0\nd3fTH3y3CrN+JmlvYH/gm8CJETG2afv+wBYRcXBeXhe4JCJGSjoA2CEiDsjb/gd4GpgCXBoRI+dx\n3qNIxfGPJU0H9o6Ih/K2v5Jmow8BXo6IY/P6P5N6pF9Xj6HFuCsDfwXWi4jZTdvWI82cbxER/5R0\nKnBNRJwh6SFgTETMahfzpEmT4vDDD+eEm9rtsWzpj/scLy13q/D9WwvORcG5aOR8FHy3CrMBRNII\nSRuWVo0CHgbuB9aStEXeb5XcejC/H973SlpV0krAB4Abgefo2xfg6mPfAHw8n3cH4Olc2D4MjM7r\nRwPrzW/AiHgB+DVwnKRB+djVJX0ox/Q88C9JawC79iHGBrseuKBHmJmZdY7bKswW3RDgeElvAv4D\n/Bn4bES8IunDedtKwAvAe0mtBfPq/b0VOJ/0pbgzI2I6QP5iXy/w/yLiiDax1Mc5GjhF0p2k4nX/\nvP584JP5C4B/IhXwrWJo9i3ge8A9kl7KY347ImZIugO4j3SHjrZfnZa0NnBc+c4cXV1drLjtPM66\njHHPccGzYQXnouBcNHI+OsNtFWYDSG6rGFNvuVja+ZeA9K+lqa3CzGxBuK3CbOnValZ5qdXT01N1\nCAOK73Nc8P1bC85Fwblo5Hx0htsqzAaQiDiddJ9iMzMzq4DbKsysMm6r6F9uqzCzZVV/tlV45tjM\nKnXvuR/hy1/9WNVhLBUGDxpedQhmZks8F8dmVpmenh5+/pOzOObbv6g6lAHB9ywtOBcF56LgXDRy\nPjrDX8gzMzMzM8vcc2xmlanVajFu3DhmzWr7S/TMzMzmy7dyMzMzMzPrABfHZlYZ3+e4ke9ZWnAu\nCs5Fwblo5Hx0hotjM6vU+PHjqw7BzMxsDvccm1llarVajB49uuowzMxsCeeeYzMzMzOzDnBxbGaV\ncc9xI/cPFpyLgnNRcC4aOR+d4eLYzMzMzCxzz7GZVcY9x2Zm1h/cc2xmS40JEyZUHYKZmdkcLo7N\nrDI9PT1MnDix6jAGDPcPFpyLgnNRcC4aOR+d4eLYzMzMzCxzz7GZVaZWq8W4ceO499EpVYeyxBk8\naDhDVhhedRhmZgNCf/YcL98fg5iZLYrao++vOoQlTvewKS6Ozcw6wG0VZlYZ3+e40czpVUcwcLiX\nsuBcFJyLRs5HZ7g4NrNK7Xpg1RGYmZkVXBybLQEkDZP0oKRV8/KqeXmuz9UlHSnpLkl3SrpD0lYd\nju27knbKj78iaaW+HtvV1cVun+lcbEuaEb7l8xxjx46tOoQBw7koOBeNnI/OcHFstgSIiEeByUD9\npsATgF9GxF/L+0naBtgNGBURmwPdwKOdikvS6yLiqIi4Oq86FFi5U+czMzPrNBfHZkuOnwBbS/oK\nsC3woxb7rAn8PSJeAYiIWRHxOICkMZKulXS7pD9IWjOv30DSVZJ6JE2T9HZJO0i6pD6opBMk7Z8f\nPyxpgqRpwD6STpW0t6SDgbWBayRdLelTkn5SGuMgST8uB+ue40buOS64l7LgXBSci0bOR2e4ODZb\nQkTEf4DxwI+Br0TEqy12uwIYJul+ST+X9B4ASYOA44G9I2IL4FTg+/mY3wLHR0QXsA3weKvT5z/1\nx3+PiDERcXYRXhwPPAbsEBE7AecAe0haLu9zAPDrhbx8MzOzxcK3cjNbsuxKKkBHArXmjRHxvKQx\nwHbAjsDZkr4OTAM2A66SBLAc8JikIcDaEXFxPv5lgLzPvJw9vx1yLFeTCuT7gEERcXd5n7/85S9M\nr8Fqa6XllYbAOiOK3tv6TOqyslxf19f967NG9b7DpWl57NixAyoeLw+c5bqBEk/Vy8tqPiZPnkxv\nby/Dh6ev3gwdOpTu7m76g38JiNkSQlIX8BtSgTwVeFdEPDGfY/YG9ge+CZwUEds2bV8FuCcihjWt\nHwt8IyJ2y8snA9dHxBmSHgLGRMSsvO1U4JKIuKDFtq2AI4F7gYcj4sTyeWq1Wkz63Th/KW8hdA+b\nwhqD/WUcMzPo318C4rYKsyWA0lTuZODQ/OW8Y2nRcyxphKQNS6tGAQ8D9wOrS9o67zdI0qYRMRv4\nm6QP5PWvz3ebeATYVNIKkt4E7NTHUGcDb6gvRMStwDrAx4DfN+/c09PD5af0ceRlgHuOC+6lLDgX\nBeeikfPRGS6OzZYMB5FmXuutFL8ANpG0XdN+Q4DTJN0t6U5gY+Do/AW9DwE/lNQD3EHqLwbYDzgk\n738jsEYuwM8B7iK1UPS1bDsJ+IOkcsvHOcDUiPjnAlyvmZlZJdxWYWYdle968eOIuKZ5W61Wi3Hj\nxnHCTRUEtoRzW4WZWcFtFWY24El6k6T7gRdaFcZmZmYDkYtjM+uIiHg2IjaKiA+328f3OW7knuOC\neykLzkXBuWjkfHSGi2Mzq9SuB1YdgZmZWcE9x2ZWmVqtFm/d6IWqw1giDR40nCErDK86DDOzAaE/\ne479S0DMrFL+UpmZmQ0kbqsws8q457iR+wcLzkXBuSg4F42cj85wcWxmZmZmlrnn2MwqU6vVYvTo\n0VWHYWZmSzjf59jMlhoTJkyoOgQzM7M5XBybWWV6enqYOHFi1WEMGO4fLDgXBeei4Fw0cj46w8Wx\nmZmZmVnmnmMzq0ytVotx48Yxa9asqkMxM7MlmHuOzczMzMw6wMWxmVXG9zlu5P7BgnNRcC4KzkUj\n56MzXBybWaXGjx9fdQhmZmZzuOfYzCrj+xybmVl/cM+xmZmZmVkHuDg2s8q457iR+wcLzkXBuSg4\nF42cj85YvuoAzGzZ9uTz/se97pmXennyeRg8aDhDVhhedThmZssk9xybWWVqtVrct/K4qsMYcLqH\nTWGNwWOrDsPMbInhnmMzW2pcdnLVEZiZmRVcHJtZZXp6erj8lKqjGDhmTq86goHDvZQF56LgXDRy\nPjrDxXE/knSkpLsk3SnpDklbLeQ4n5O0Xz/Ec0GO48+Sns2Pp0vaRtLDkt68kOO+TtLPJPVKmiHp\nVknrLmq88zjf5pJ2bbNtZUm/zXH0SrpB0mBJb5T0hT6M3af95jPG1pJuyfm9R9JRef0eko5YgHGO\nlnTYosTSZtzn+ntMMzOzpZW/kNdPJG0D7AaMiohXcuH5+oUZKyJ+2R8xRcReObbtgcMjYo9SvAEs\nbG/Oh4G1ImJkHmtt4IVFiVXS8hHxnzabRwFjgMtbbDsUeDwiPp7H2RB4BVgd+CIweT6nXrWP+83L\n6cCHIqJXkoCNASLiEuCSBRinU18AGLBfLOjq6qo6hAFlhG/5PMfYse65rnMuCs5FI+ejMzxz3H/W\nBP4eEa8ARMSsiHgcQNIYSddKul3SHyStmdevL+nyvP56SRvl9XNmEPNxEyT9SdL9ksbm9StLOkfS\n3XmG+BZJY9rE1q4IPljStDzrWj/3YEmn5PNNl/T+Ntf6eH0hIh6LiGfz8TtLuimPe46kwXn9lpJu\nlNSTYx0i6QBJUyTVgCvzNTWcW9Ig4H+AD+eZ2X1axPJYKZY/R8TLwARg/XzMD/N1XVW63vp1NeyX\nY/1ang2/U9LRbXJXtjrwRD5/RMS9eZwDJB2fH19U/zQgfzLwmz6MS97/wvwauUvSQaX1z0n6Xs7p\nzZKG5vXr5eUZkr5X2n+t/Dq7I8+yvzuv3yXnpUfSlXndVvl5nJ6ftxGla7pY0jWSZkr6Tmn8T+Tn\n7g5JJyp9wrCcpNNUfMrwlb5et5mZWRVcHPefK4BhuYD9uaT3AOTi7nhg74jYAjgV+H4+5iTg4Lz+\na8Av8vqgmO0LYLmIeBfwFeCovP6LwD8iYjPg26SZ1QWdIXw6IsaQZk0Pz+uOBGr5fDsBx0pauem4\nc4A9chH0I0ld+Vrfko/vzuNOA76ac3A2cEhEdAHjgBfzWKNybnYEvtV8bmBQvr6zImJURJzbFMsp\nwBG5kDtG0gZ5/RHAA/mYI4CXgD1zXDsBk1rtJ2lnYIOI2CrHtoWk7fL1XVZ/Y9PkJ8D9+U3KZyXV\nPzEoPx+fBb6Tx/oq8OUW47RzYH6NbAkcImnVvH5l4Oac0+uBeuF8HPDziHgnpTcOwMeAP0TEKGBz\n4E5Jq5Neh3vlcepvPu4FtouI0aTX3P+WxtkS2At4J7CP0pu/TYB9gW3z+K8CH8/nWTsiRuZ4Ti1f\nmO9z3Mg9xwX3Uhaci4Jz0cj56Ay3VfSTiHg+z9xuB+wInC3p66QCcTPgKkkAywGP5RnVbYFz83qA\n/9/enYdXVV/7H38vQpgHKw7IEAkoVgQJQRECF8GgVi1OoKCtFeV6Ffk5FCk4cdtqaSmKoihUr61V\nb52vVahV0WhRBKoCkYhYRUFAEBSQqQIq6/fH/ibnnJBAwJzsQD6v5zlP9rzXXglhne9Ze6dOOYd/\nJnydB7QJ0z2BieHcC81swV6EnXzcc8P0KUSFb3GxXBdoDfwr6Vo/CyPNJ4VXQRjRbQB0AGaFa6oD\nzAKOAla6+9yw/2Yoae14uXjUuZxzZxGNfJc5+u3u75pZ27BvP+Bti1pctpbatBbwu1Cc7gBahJHW\n0sc9BTjFzOaH+YbAEcAb7n5GOTHcamZ/CfteCFxA9DNgSdusCaOsrwJnJ11zRVxjZmeH6dbAkcBb\nwHZ3fz4snwucHKbzgHPC9P8Cvw/TbwF/Cm9Wng256wvMcPdPQ5zFcR0APBzebDipvyumu/t6iPra\ngV5ExXBX4J3wva8PrCZqK2lrZncDzxO9iSwxY8YMWhyReGJF/UbQqn2ivaC4WKwp8ys+jL7mt46+\nFv/HV/zRqeZr5nyx6hJPnPNFRUXVKp6452tyPqZMmUJRURFZWdEz4Q855BDy8/OpDHrOcZqY2QDg\nYo/nA4MAACAASURBVOBG4H53zyu1vgnwgbu3KGPfXwKb3P0OM3sNuM7d54WR2bfdPdvM/grc5e7/\nCPvMBS5z953GnsysTzhGcs/xEqCru68zs+OA29y9r5m9A1zg7h/twbVeBxxOVPhc6O4XllrfCZji\n7r1KLb8YOM7drwrzZZ679Ha7iWUSsAT4P+BvSX3RQ4AfAT9x9+/C9Z9IVDRPS9ruduBDd7+/otdf\n6vwZwBdEBfWZRDkuvr7fAUOAX5Z1/PB93+zuE5KW9QFuBU52963h5+GX7v66mW1y98Zhu4HAGe5+\niZl9CRwarrMJ8FnSds2BHwPDgTuA9cBgd/9pqVj+DLzj7veY2eHAP8LP3RCgj7sPCdvdAnxJeMPh\n7jeWcV0NiHJ/EbDO3YcWr9Nzjsum5xyLiOwZPee4GjKz9hbdDFasC7CUaMT1YDPrHrbLNLMO7r4R\nWBKKGixybPIhd3PKN4k+xsbMOgCdKudKeAm4uiQIsy6lNzCzLhbdhIeZ1SL66HwpMAfoaWbtwrqG\nIScfAIeFIhwzaxyKyNLXWN65NwGNywrWzPKK2wzMrA7RyPXSMvZpAqwJBWNfomK+rGO/BFxqiV7p\nlqH1oFxmljyi3B74lqjoTN6mG1GBmAuMtIo/3aMJsD4Uxj8EuldgnzeBwWH6J0kxZBG10jwAPED0\nMzoH6F0cT1LLRhMSLRmXlDr+yWb2AzOrD5wFzAQKgIHFuTKzA80sy8yaAbXd/Rmi9hjdciYiItWa\niuPK0wj4s0U3yL1L9MSCX4Ub9AYCvzezQmA+0CPs8xNgaFj+HtFIY7HyhvSLl08mKroXEo0sLgQ2\n7GKf0sfzctbfCmRadPPUe8CvyzjeIcBUMysC3gW2A/e4+5dEI6OPhRzMAo4KORgETArX+hJQr4y4\nyjv3a0AHK/uGvHbAP0JbyTyikfVn3H0d8KZFN4L9HvgLUf/wAqIRzEUA7r42eTt3fxl4FJgdtn2K\n6Hu7q57jn1rUaz4feJhodLr42jwU7fcDl4SbNK8j6pUuy81mtjy8lgEvArXN7H3gd8DspG3L+x5e\nAwwP8bdIWt4XKDSzeURvrO4K37P/Ap4J35vHw7bjidpQ5hG1AiWf6y2ikfl3gafdfV64CfFmYHr4\n3k8nulmyJfBayM0jwPXJF6ue41TqOU5QL2WCcpGgXKRSPtJDbRX7qDBim+nu28JI7ctA+108Dk3k\newttFSWtIt/XhAkTvF7eyN1vWEN8OC/qP1ZbRfSfvh5TFVEuEpSLVMpHQmW2VeiGvH1XQ+DVcHOV\nAcNUGEsVKOtTiL2Wk5PDB5V1sP2AnnOcoP/wE5SLBOUilfKRHiqO91HuvonokVoiVcbdHyL6oyeV\n5vkH4Iz/rMwjioiI7D31HItIbAoLC3mhvO7rGkg9xwnqpUxQLhKUi1TKR3po5FhEYpffemrcIVQL\njVcU0a11JxpmZsUdiohIjaUb8kQkNgUFBd6vXz/WrVsXdygiIrIP03OORURERETSQMWxiMRGzzlO\npf7BBOUiQblIUC5SKR/poeJYRGI1atSouEMQEREpoZ5jEYlNQUGB5+bq4b4iIvL9qOdYRERERCQN\nVByLSGzUc5xK/YMJykWCcpGgXKRSPtJDxbGIiIiISKCeYxGJjXqORUSkMqjnWET2G+PGjYs7BBER\nkRIqjkUkNoWFhYwfPz7uMKoN9Q8mKBcJykWCcpFK+UgPFcciIiIiIoF6jkUkNgUFBd6vXz/WrVsX\ndygiIrIPU8+xiIiIiEga1I47ABGpuYqfc7x6S83tm2uYmUWjOllA1D/Yq1evmCOqHpSLBOUiQblI\npXykh4pjEYnVaZdCwfIz4w4jNvmtp5YUxyIiEj/1HItIbAoKCvyDBv3iDiNW+a2ncmhDjfyIiHwf\n6jkWEREREUkDFceyXzOzm8zsPTN718zmm1m3NJ/v12Z2Upi+1szq7+H+S83s6aT5gWb2YJjub2aj\nd7N/HzObVs66PY4n3Yp7jiWiZ5YmKBcJykWCcpFK+UgPFcey3zKzHsAZQBd37wzkA8vTeL5a7v5L\nd381LLoGaLAXh8o1s6PDdEnfk7tPc/fff48Q9zaeXTIz3bsgIiL7DRXHsj9rDnzp7t8AuPs6d18F\nYGZdzewfZvaOmb1oZs3D8iPM7BUzKzSzuWbWtvRorJndY2YXh+mlZjbOzOYC55nZg2Y2wMyuAloA\nr5nZq2Z2iZndmXSMy8zsjjJidmACcFPxpkn7DDGzSWG6nZnNMbMFZvYbM9uUdIxGZvaUmS0ys/8N\n21+dFE9BWLbZzMaHkfWXzay7mc0ws4/NrH/Ypo2ZvR5yMTe84SgeoX7DzJ4D3jOzWmZ2m5m9FUbp\n/ytsd1jYf76ZFZlZSnNtTk5Oxb+bNYDuOk9QLhKUiwTlIpXykR4qjmV/Nh1obWb/MrN7zaw3gJll\nApOAAe5+HPAgMDbs8xdgkrvnAD2AVWUc10mM6DpRAd7V3Z8oXubuk4CVQB93Pwl4EuhvZhlhmyHA\nH8uJ+ymi0eN2u7i2u4A73f1Ydh4N70I0StwBaGtmee5+d1I8+WG7BkCBu3cENgG3ACcB54RpgNXA\nye7eFRgM3F3qPFe7+w+B/wS+cvduQDfgMjNrA1wAvOjuXYBjgZ36KJ5/YBdXKSIiUsX0cajst9x9\ni5l1Bf4D6As8YWbXA3OBY4BXzAwgA1hpZo2AFu7+XNh/O0DYZlee2N0GIZZXiQrkD4BMd19Yzubf\nAbcBNwAvlLNNd6D4+WePAbcnrXvL3VeG2AuBNsCsMo6x3d1fCtNFwFZ3/87M3gv7ANQB7jGzziGu\nI0ud59MwfQrQycwGhvkmwBHA28CfwhuSZ9393eQA7rrrLl5I6pCu3whatYf2udH8h/Oir/vzfOMV\nRfTvF43+TJkyhU6dOpWMBhX3E9bE+eReyuoQT5zzpXMSdzxxzhcVFTFs2LBqE0/c8zU5H1OmTKGo\nqIisrOhRmIcccgj5+cVjP9+PHuUmNYaZDQAuBm4E7nf3vFLrGwPvu3vrUst7ATe4+xlh/gHgdXd/\n2MyWAF3dfV1Y9yAwzd2fKWNdN6J2iUXAUnf/QxkxLgG6AhuB94HJQGd3v8TMhoTjXWVmXwKHuPsO\nM2sCfObujc2sD3Cduxe3RUwC3i4n1k3u3jhM/xLY7O4TkteZ2a+ABu4+Kox6b3X3zDLO8zRwn7u/\nXMY1NQd+DAwH7nD3R4rXTZgwwUeOHMk9ZZXuNUTyo9z0QP8E5SJBuUhQLlIpHwl6lJtIBZhZezNL\nHunsAiwF/gUcbGbdw3aZZtbB3TcBK8zsrLC8bni6w6dABzOrY2YHELUeVMQmohFUANz9LaAVcCHR\naG+53P1b4E5gBEk35SWZAxSP0g7em3gqqAnweZj+GdEoe1leAq4svjkv5L6BmWUBX7j7A8ADRN+D\nEuo5TqX/5BKUiwTlIkG5SKV8pIeKY9mfNQL+bGYLzexd4IfAr8INegOB34e2g/lE/cUAFwFXh+3f\nBA519+VEPcPvEbVQzKvg+e8HXiy+AS54Epjp7hvK2Se5EP4jqcVocq/ztcCIEH87YEOp7SoST+nt\nvIzpycDF4TxHAZvL2f4BopHueWZWBEwhatvqAxSa2TzgfKJeaRERkWpLbRUiVSg89eIOd3/tex6n\nvrt/HaYHA4Pc/ZzKiLEqqa1CbRXlUS4SlIsE5SKV8pFQmW0VuiFPpAqEdox/AoXftzAOuprZPUSP\nelsPXFoJx4zFafts5CIisj/SyLGIxKagoMA/aNAv7jBilTxyLCIie0cjxyKy38hvPTXuEGLVMDMr\n7hBERCSJimMRiU1hYSG5ueqrKKb+wQTlIkG5SFAuUikf6aGnVYiIiIiIBOo5FpHYFBQUeG5ubtxh\niIjIPk5/BERE9hvjxo2LOwQREZESKo5FJDaFhYWMHz8+7jCqjZkzZ8YdQrWhXCQoFwnKRSrlIz1U\nHIuIiIiIBOo5FpHYFBQUeL9+/Vi3bl3coYiIyD5MPcciIiIiImmg4lhEYlNYWBh3CNWK+gcTlIsE\n5SJBuUilfKSHimMRidWoUaPiDkFERKSEeo5FJDZ6zrGIiFQG9RyLiIiIiKSBimMRiY16jlOpfzBB\nuUhQLhKUi1TKR3qoOBYRERERCdRzLCKxUc+xiIhUhsrsOa5dGQcREdlbY269kv834sK4w4hFw8ws\nGtXJijsMERFJouJYRGJTWFjIvXc+ztHnPR53KLHIbz01pTieOXMmvXr1ijGi6kO5SFAuEpSLVMpH\neqjnWEREREQkUHEsUgXMrLmZPW5mi83sHTN73syOrMTjn2hmPfZivwZm9hczW2BmRWb2hpk1NLOm\nZjZsN/u+Gb72MbNpexN3Tk7O3uy239IIUIJykaBcJCgXqZSP9FBxLJJmZmbAX4FX3f0Idz8OuAE4\ntBJP0xfI28O4agPXAKvc/Vh37wRcCnwD/AC4chf74e49v1fEIiIi1ZCKY5H06wtsd/f7ixe4+wJ3\nn2lmt4UR2wVmdj7sPBJrZveY2cVheqmZ/crM5oZ9jjKzNsDlwM/NbL6Z9TSzg83saTN7K7zywv6/\nMrNHzGwm8DDQHFiZFNdH7r4dGAe0C8cbH0am3zCz54D3wrE2l75QMzvezOaZWbaZdTWzf4SR8hfN\nrHnp7fWc41R6ZmmCcpGgXCQoF6mUj/TQDXki6dcRmFt6oZkNADoDxwIHA2+b2etl7O/hVTz9hbt3\nDW0PI939MjP7A7DJ3e8Ix34UuNPd3zSzLOBFoEM4xg+BXu6+zcw6A9PNbCBQADzk7ouB0cAx7t4l\nHK8P0CUs+zQpluTryQPuBs4EVgN/Afq7+1ozGwSMBYaWvrjTLt1V6kRERKqWimOR9CvvYeI9gUc9\netj4GjObARwPbNzN8Z4JX+cB5yYtT36+Yz/g6KijA4DGZtYwxDLV3bcBuPu7ZtYWOCXs83boXd5a\nxnnfSiqMSzsauA842d0/N7OOwDHAKyGGDJJGqIvl5ORQb4+aQfZv6h9MUC4SlIsE5SKV8pEeKo5F\n0m8hMLCcdaUfWO7At6S2PNUvtc228PU7yv83bMAJoUUisTAqVP+dckL3LUQ90X81sx3A6cD/lXHM\nLeWcC2AVUBfIBf4ezr/Q3XdZ+j799NPM+xSaHRbN128ErdpD+/B3QT6cF33dX+ffml3ED+ol/oMr\n/ohU85rXvOY1v+v5KVOmUFRURFZW9DjMQw45hPz8fCqD/kKeSBUwsznAH939f8L8scDZRDfRnQ40\nA94GuhEVma8DRwENiEaIf+XuD5vZEqCru68zs+OA29y9r5mNAJq4+6/C8f8CzHf328N85zBK/Etg\ns7tPCMvzgEXuvt7M6gAvAPcC/wDmuXubsF0f4Dp37590TZvcvXHxOqKWiZeBq4HZRG8KLnL3OWaW\nCRzp7u8n52XChAleL29kJWR435TfeiqHNkyM/OiZpQnKRYJykaBcpFI+EirzL+TphjyRqnEO0C88\nyu09ov7bR4EFwLtE/b6/cPc17r4ceJLoxrcniIrjsiT3Ik8Dzim+IY+oQD3OzN41s4VEN+wl71es\nHfAPM1sQzvO2uz/j7uuAN8PNgr8vda6yjuPuvgb4MVFx3ZlotPz3ZlYIzAf2+FFzIiIiVU0jxyIS\nm4KCAv+gQb+4w4hN6ZFjERHZOxo5FpH9xvMPxB2BiIhIgopjEYlNYWEhL/wp7iiqDz2zNEG5SFAu\nEpSLVMpHeqg4FhEREREJ1HMsIrEpKCjwfv36sWj51LhDiUXDzCwa1cmKOwwRkX1eZfYc6znHIhI7\n3ZQmIiLVhdoqRCQ2hYWFcYdQrah/MEG5SFAuEpSLVMpHeqg4FpFYjRo1Ku4QRERESqjnWERiU1BQ\n4Lm5uXGHISIi+zg951hEREREJA1UHItIbNRznEr9gwnKRYJykaBcpFI+0kPFsYiIiIhIoJ5jEYmN\neo5FRKQyqOdYRPYb48aNizsEERGREvojICISm8LCQsaPH8/1118fdyjVwsyZM+nVS38QBZSLZLvK\nxZdffsn27durOKL4bNiwgaZNm8YdRrVR0/JRp04dDjrooLSfR8WxiIjIPmjz5s2YGS1atIg7lCpT\nk661ImpaPtauXcvmzZtp1KhRWs+jtgoRiU1OTk7cIVQrGilNUC4SysvFhg0bOPDAA6s4GpH4HHjg\ngWzYsCHt51FxLCIisg8yM8wq5f4jkX1CVf3MqzgWkdjoOcep9MzSBOUiQbkQqVoqjkUkVqNGjYo7\nBBERkRK6IU9EYpOTk0PLo/7N6i3798hYw8wsGtXJ2u126rNNUC4S9sdc5OXlcfvtt5OXlxd3KHvk\no48+YujQoSxdupQxY8Zw2WWXxRLHsmXL6NKlC1988QW1atXi/PPPZ8CAAQwaNCiWeCpq+PDhtGjR\ngptuuinuUHZJxbGIxKpg+Zlxh5B2+a2nVqg4Fvk+Nm9fxpZvlqXt+BV9kzdw4EC6du3KDTfckLL8\n73//O9dddx0LFy5k1qxZ6Qozre6++2569+7N66+/Xub6/v37c/3119OzZ88qjevJJ5+s0vN9HxXt\nGe7cuTPPP/88rVq1SnNEO1NxLCKxKSwspN6+NXCUVnq2b4JykVDRXGz5Zlla32xW9E3eBRdcwNix\nY3cqjp944gnOO+88atXadzs6V6xYQbdu3cpdr5skd6+if5k5zjzuuz+hIjEws2ZmNj+8VpnZijC9\n3swW7uUxL0k65nYzWxCmf7sXx1pqZk8nzQ80swd3s09nMzttb2LfzXH7mNm0yj6uiFRvp59+OuvW\nrWP27Nkly7766itefvllBg8eDESjgjNmzACiYmnixIl07dqVI444gksvvZSvvvoKgCuvvJJ7770X\ngJUrV9KsWTP++Mc/ArBkyRLatWsHRM+/HTx4MNnZ2bRr144zzjij3CLs+uuvp1OnThx++OGcdNJJ\nzJkzp2Td8OHDGTt2bMn8zJkz6dixIwBnnXUWM2fOZPTo0WRlZfHJJ5/sMg/jxo1jyJAhXHHFFWRl\nZdGrVy8+/vhj7rzzTo466iiOPfZYXnvttZLtN27cyFVXXUWHDh045phjGDt2LDt27ABgx44djBkz\nhiOPPJLc3FymT5+ecq7+/fvzyCOPlOTlrLPO4ogjjuDII4/k8ssvZ+PGjeXGOWfOHE499VSys7Pp\n1KkTjz32GABff/01N998M507d6ZNmzacfvrpbN26dZf7lLZgwQL69OlDVlYWQ4cOZdu2bSnrX3rp\nJXr37k12djY/+tGPeP/993eZ06qi4lhkD7j7Wnfv4u5dgD8Ad4TpHGDHXh7zwaRjfgb0CfM37mo/\nMyvvk59cMzu6+PAVCKELcHrFI969XcSWQs85TqWR0gTlImFfy0X9+vU5++yzefzxx0uWPfvss7Rv\n354OHToAqSOs9913Hy+88AJ/+9vfWLRoEQcccAC/+MUvAOjZsydvvvkmALNmzaJNmzYlLRlvvvlm\nSc/yvffeS8uWLVm8eDEffvghY8aMKXfksWvXrrzxxhssWbKEAQMGcMkll6T8lcHy9nvuuefo0aMH\n48ePZ9myZbRt23anbaZOnZrSRz19+nQGDRrEkiVLOPbYYzn33HMBeP/99xk5ciQjRowo2Xb48OHU\nqVOHuXPnMmPGDF577TUefvhhAB566CGmT5/OjBkzePXVV5k6dWpKnKVHrEeMGMGiRYuYM2cOn332\nGePGjSvzmpYvX87555/P5ZdfzuLFi3n99dfp1KkTAP/93/9NUVERL730Ep988gm//vWvqVWr1i73\nSbZ9+3Z++tOfMnjw4JKCfdq0aSVxLliwgKuvvpqJEyfyySefMGTIEC688MKS70VhYWEsLRWg4ljk\n+7Kkrxlmdr+ZvWdmL5lZPQAza2dmL5jZO2b2upkdtduDRm4zs6Iwknx+WN7HzN4ws+eAskaqHZgA\nFN/tUPLb0swamtmfzOyfZjbPzM40s0zgFmBQWHZ+OF+TEMNaM7so7P+wmeWbWV0zezBsN8/M+oT1\nQ8xsqpkVAK+QVJib2fFh2+zSAT//wO6yISL7msGDBzN16tSSQufxxx8vGTUu7c9//jM33XQThx12\nGJmZmYwaNYqpU6eyY8cO8vLymDNnDu7O7Nmzueqqq/jnP/8JRMVycSGamZnJ6tWrWbZsGRkZGXTv\n3r3c2M477zwOOOAAatWqxfDhw9m2bRuLFy8uWb+7j/0r2hYA0KNHD/r27UtGRgZnnnkm69ev59pr\nryUjI4NzzjmHZcuWsXHjRtasWcMrr7zC2LFjqV+/PgcddBDDhg3jr3/9KxC9uRg2bBgtWrTggAMO\n4Oc//3m5cWRnZ3PiiSeSmZlJs2bNGDZsWLk93k8//TR9+vTh3HPPJSMjgx/84Ad07NiRHTt28Oij\nj/K73/2O5s2bU6tWLY4//njq1KlT7j6lvfPOO3z33XdcccUVJdffpUuXkvUPPfQQF198Mbm5uZgZ\ngwcPpm7durzzzjsVzm+6qDgWqTxHAve4e0fgK2BAWH4/cJW7Hwf8AphcgWOdC3QGjgX6AbeZWfOw\nrgtwtbuXV2Q/RTR63K7U8puAAnc/ATgJuA3IBMYAj7t7rrs/CbwJ9AKOAT4O0wDdgVnA/wO+c/dj\ngQuAh8ysblJsA9y9D6EwN7M8YApwprsvSQ6osLCQF/5UgWzUEHqebYJykbAv5qJ79+40a9aMv/3t\nbyxZsoT58+czcODAMrddvnw5F110EdnZ2WRnZ9OjRw9q167NmjVryM7OpkGDBhQVFTF79mxOPfVU\nmjdvzuLFi5k1a1bJjW9XXXUV2dnZDBgwgNzcXO66665yY5s0aRLdu3enTZs2ZGdns3HjRtauXVvh\na9uTXtiDDz64ZLpevXoceOCBJfvXr18fgC1btrB8+XK++eYbjj766JI8jBgxgi+//BKAzz//nJYt\nW5Yca1cjqmvWrGHo0KEcc8wxHH744QwbNox169aVue3KlStp06bNTsvXrl3L1q1by1xX3j6lrVq1\nisMOOyxlWevWrUumly9fzuTJk0uuNzs7m5UrV/L555/v9tjpphvyRCrPEndfEKbnAm3MrCGQBzyV\n9Au1zm6OY0BP4FGPhgbWmNkM4HhgI/CWu3+6i/2/Iyp8bwBeSFp+CtDfzEaG+bpAVjhf8m/7N4De\nwKdERe1/mVkLYL27f21mPYG7Adz9X2b2KdCeaKT4ZXf/KulYRwP3ASe7+06/8Yp7DotHj+s3glbt\noX1uNP/hvOjrvj6fH/4/KC5yij8mLz1fVFS0y/War5nzxUqv37BhAy1atKC6GjRoEE888QQfffQR\n+fn5HHTQQWVu16pVKyZNmlTujW49e/bkueee49tvv+Wwww6jZ8+ePPbYY3z11VclH+c3atSIW2+9\nlVtvvZVFixZx9tln06VLF3r37p1yrNmzZ3PPPffw7LPPcvTRUfdZ27ZtS0ZhGzZsyNdff12y/erV\nq/f6+vekiG7ZsiV169bl448/LvOGxebNm/PZZ5+VzK9YsaLcY916661kZGQwa9YsmjZtyvPPP8/o\n0aPLPe+8efN2Wt6sWTPq1avHkiVLOOaYYyq0T1kxr1q1KmXZ8uXLyc6OPkBs1aoVI0aMSGkt2RNT\npkyhqKiIrKzoJtFDDjmE/Pz8vTpWaSqORSpP8p0G3wH1iD6dWR/6ifdU6d+sxZ+hbdnNfg48QlQc\n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\nxyIiIiIiwf8HmEu+igvNjLQAAAAASUVORK5CYII=\n", | |
"text": [ | |
"<matplotlib.figure.Figure at 0x109a6aa90>" | |
] | |
} | |
], | |
"prompt_number": 126 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 126 | |
} | |
], | |
"metadata": {} | |
} | |
] | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# -*- coding: utf-8 -*- | |
# <nbformat>3.0</nbformat> | |
# <headingcell level=1> | |
# Crawls 'media.ccc.de' and ranks the videos for views | |
# <codecell> | |
from bs4 import BeautifulSoup | |
import requests | |
# <codecell> | |
#%matplotlib inline | |
import matplotlib.pyplot as plt | |
import pandas as pd | |
# <headingcell level=2> | |
# Some URLs you can use | |
# <codecell> | |
#url = 'http://media.ccc.de/browse/conferences/datenspuren/2014/index.html' | |
#url = 'http://media.ccc.de/browse/conferences/eh2014/index.html' | |
#url = 'http://media.ccc.de/browse/conferences/fiffkon/2014/index.html' | |
#url = 'http://media.ccc.de/browse/conferences/vcfb/2014/index.html' | |
#url = 'http://media.ccc.de/browse/conferences/hackover/2014/index.html' | |
#url = 'http://media.ccc.de/browse/conferences/mrmcd/mrmcd14/index.html' | |
#url = 'http://media.ccc.de/browse/conferences/froscon/2014/index.html' | |
#url = 'http://media.ccc.de/browse/congress/2014/index.html' | |
# Or you can even try all years for the congresses: | |
for year in range(2000, 2015): | |
url = 'http://media.ccc.de/browse/congress/%i/index.html' % year | |
r = requests.get(url) | |
# <codecell> | |
soup = BeautifulSoup(r.content) | |
# <codecell> | |
eventname = soup.find('h2').text.encode('utf-8') | |
if len(eventname)==0: | |
eventname = soup.find('h1').text.encode('utf-8') | |
print('%s...' % eventname) | |
# <codecell> | |
talkurllist = [] | |
for link in soup.find_all('a', attrs={'class': 'event-preview'}): | |
talkurllist.append(link.get('href')) | |
# <codecell> | |
talks = {} | |
for talkurl in talkurllist: | |
r = requests.get('http://media.ccc.de/' + talkurl) | |
soup = BeautifulSoup(r.content) | |
title = soup.find('h1') | |
ul = soup.find('ul', attrs={'class': 'metadata'}) | |
for i,li in enumerate(ul.find_all('li')): | |
if i==2: | |
talks[title.text.encode('utf-8').strip()[:60]] = int(li.text) | |
# <codecell> | |
name = 'Views \'media.ccc.de\'' | |
df = pd.DataFrame(data=talks.values(), index=talks.keys(), columns=[name]) | |
df.sort(name, inplace='True') | |
df = df.tail(10) | |
# <codecell> | |
df.plot(kind='barh', figsize=(11,5), title='Top 10 Most Viewed \'%s\' Talks' % eventname, color='#94C600') | |
plt.tight_layout() | |
plt.savefig('%s-Top10-Talks.png' % eventname, dpi=150) | |
# <codecell> | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment