Skip to content

Instantly share code, notes, and snippets.

@JonathanReeve
Created June 24, 2021 18:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save JonathanReeve/da8c774047c7eb98e16adc36fd56b320 to your computer and use it in GitHub Desktop.
Save JonathanReeve/da8c774047c7eb98e16adc36fd56b320 to your computer and use it in GitHub Desktop.
03-nyu-pit-APIs.ipynb
Display the source blob
Display the rendered blob
Raw
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"name": "03-nyu-pit-APIs.ipynb",
"provenance": [],
"authorship_tag": "ABX9TyPsLcgZ6Dts6s/gpuFgblXv",
"include_colab_link": true
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"language_info": {
"name": "python"
}
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/gist/JonathanReeve/da8c774047c7eb98e16adc36fd56b320/03-nyu-pit-apis.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "code",
"metadata": {
"id": "EReqIU4AQ_-Y"
},
"source": [
"import requests\n",
"import json\n",
"import pandas as pd\n",
"import time"
],
"execution_count": 108,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "pPsw275ri9BD"
},
"source": [
"time.sleep(10)"
],
"execution_count": 109,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "Jbdd18yHK2TY"
},
"source": [
"# Dictionaries\n",
"\n",
"```\n",
"{\"apples\": 3}\n",
" key value\n",
"```"
]
},
{
"cell_type": "code",
"metadata": {
"id": "gkRY4gc7K3T3"
},
"source": [
"myList = [\"apples\", \"oranges\", \"bananas\"]"
],
"execution_count": 1,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "qT6i8WwqMsq7"
},
"source": [
"fruitInventory = {\"apples\": 3, \"oranges\": 5, \"bananas\": 100}"
],
"execution_count": 2,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "1s9IPNRpNBbs",
"outputId": "8f90ef6a-e496-4b18-f3a8-b77c13e4cb21"
},
"source": [
"type(fruitInventory)"
],
"execution_count": 3,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"dict"
]
},
"metadata": {
"tags": []
},
"execution_count": 3
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "-qvjdj2jNVFC",
"outputId": "da1c3cec-a311-4643-c9d7-cee0f3d387fa"
},
"source": [
"fruitInventory.keys()"
],
"execution_count": 4,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"dict_keys(['apples', 'oranges', 'bananas'])"
]
},
"metadata": {
"tags": []
},
"execution_count": 4
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "bC6M4SIkN2KC"
},
"source": [
"Getting data out of a dictionary:"
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "PXePTavqNfor",
"outputId": "22913b4a-e242-4352-f63c-02b3e612fd49"
},
"source": [
"fruitInventory['apples']"
],
"execution_count": 5,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"3"
]
},
"metadata": {
"tags": []
},
"execution_count": 5
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 163
},
"id": "moOV6pz-NmMh",
"outputId": "bd2dea80-617a-42cc-e201-098d5988491b"
},
"source": [
"fruitInventory['kiwis']"
],
"execution_count": 6,
"outputs": [
{
"output_type": "error",
"ename": "KeyError",
"evalue": "ignored",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-6-98f92fab9a71>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mfruitInventory\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'kiwis'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;31mKeyError\u001b[0m: 'kiwis'"
]
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Qn33hEdVN5he"
},
"source": [
"Put data in a dictionary:"
]
},
{
"cell_type": "code",
"metadata": {
"id": "FSvkPxV7NtZV"
},
"source": [
"fruitInventory['kiwis'] = 10"
],
"execution_count": 7,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "-09PSOMKN-nE",
"outputId": "cdced253-2f52-4bf7-94df-d023faff8985"
},
"source": [
"fruitInventory"
],
"execution_count": 8,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"{'apples': 3, 'bananas': 100, 'kiwis': 10, 'oranges': 5}"
]
},
"metadata": {
"tags": []
},
"execution_count": 8
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "-3kEaTe-N_id",
"outputId": "77bba72f-6f77-4bb0-bb68-79abd5939388"
},
"source": [
"fruitInventory['kiwis']"
],
"execution_count": 9,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"10"
]
},
"metadata": {
"tags": []
},
"execution_count": 9
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "9vdMLuYrOC-8",
"outputId": "c24e18c8-a16e-4a9d-9861-266bc29f1c15"
},
"source": [
"fruitInventory.items()"
],
"execution_count": 10,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"dict_items([('apples', 3), ('oranges', 5), ('bananas', 100), ('kiwis', 10)])"
]
},
"metadata": {
"tags": []
},
"execution_count": 10
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "vunkqpLgOJ3H",
"outputId": "b539feed-5fbe-4c29-f5a2-232a544cd394"
},
"source": [
"type(('apples', 3))"
],
"execution_count": 12,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"tuple"
]
},
"metadata": {
"tags": []
},
"execution_count": 12
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 163
},
"id": "nu3DGoPjOQtv",
"outputId": "687075c2-e5c1-43ff-812a-e29b2bed1a4c"
},
"source": [
"('apples', 3).append(4)"
],
"execution_count": 13,
"outputs": [
{
"output_type": "error",
"ename": "AttributeError",
"evalue": "ignored",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-13-8a48d9e29fdf>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;34m(\u001b[0m\u001b[0;34m'apples'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m3\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m4\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;31mAttributeError\u001b[0m: 'tuple' object has no attribute 'append'"
]
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "JxqQt8h9OYog",
"outputId": "7480474e-2a12-4687-ecdf-7ae95274b279"
},
"source": [
"for inventoryPair in fruitInventory.items():\n",
" # fruitName, numFruit = inventoryPair\n",
" fruitName = inventoryPair[0]\n",
" numFruit = inventoryPair[1]\n",
" print(f\"I have {numFruit} {fruitName} and they are delicious!\")"
],
"execution_count": 16,
"outputs": [
{
"output_type": "stream",
"text": [
"I have 3 apples and they are delicious!\n",
"I have 5 oranges and they are delicious!\n",
"I have 100 bananas and they are delicious!\n",
"I have 10 kiwis and they are delicious!\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "SAyszQH2OmTh"
},
"source": [
"data = {\"items\": [{\"fruitName\": \"apples\", \n",
" \"numFruit\": 3}, \n",
" {\"fruitName\": \"oranges\",\n",
" \"numFruit\": 5}\n",
" ], \"numResults\": 1516}"
],
"execution_count": 17,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "baFXJUYDP2eV",
"outputId": "419221de-418a-490e-d895-9c98cef76c2e"
},
"source": [
"data.keys()"
],
"execution_count": 31,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"dict_keys(['items', 'numResults'])"
]
},
"metadata": {
"tags": []
},
"execution_count": 31
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "MYfbI8OjR3fe",
"outputId": "d984103d-e052-45e3-d1ac-9734dbd61c9f"
},
"source": [
"data.values()"
],
"execution_count": 32,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"dict_values([[{'fruitName': 'apples', 'numFruit': 3}, {'fruitName': 'oranges', 'numFruit': 5}], 1516])"
]
},
"metadata": {
"tags": []
},
"execution_count": 32
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "xmLKHd4ZR5Cd",
"outputId": "f0110ea3-d461-4fe3-b6a9-d2a6e3fd97be"
},
"source": [
"data.items()"
],
"execution_count": 33,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"dict_items([('items', [{'fruitName': 'apples', 'numFruit': 3}, {'fruitName': 'oranges', 'numFruit': 5}]), ('numResults', 1516)])"
]
},
"metadata": {
"tags": []
},
"execution_count": 33
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "cBgGJtiCSDlD"
},
"source": [
"data['items']"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "H848pgTmQEVv",
"outputId": "60814fae-aa6c-4e8a-d14d-f06d3af1a471"
},
"source": [
"data.keys()"
],
"execution_count": 19,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"dict_keys(['items', 'numResults'])"
]
},
"metadata": {
"tags": []
},
"execution_count": 19
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "CctrMQljQGrP",
"outputId": "e3375ac5-017f-4557-9188-89c904e4370e"
},
"source": [
"data['items']"
],
"execution_count": 20,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"[{'fruitName': 'apples', 'numFruit': 3},\n",
" {'fruitName': 'oranges', 'numFruit': 5}]"
]
},
"metadata": {
"tags": []
},
"execution_count": 20
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "k7LTThX-QNXq",
"outputId": "12362145-2108-440f-8fac-2de98dfc39a5"
},
"source": [
"type(data['items'])"
],
"execution_count": 21,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"list"
]
},
"metadata": {
"tags": []
},
"execution_count": 21
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "MHM4WVdkQUNq"
},
"source": [
"fruitDictList = data['items']"
],
"execution_count": 22,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "DFK7BHeYQYZ8",
"outputId": "411313b0-fb23-486b-9b49-29fbd8e532d7"
},
"source": [
"fruitDictList[0]"
],
"execution_count": 23,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"{'fruitName': 'apples', 'numFruit': 3}"
]
},
"metadata": {
"tags": []
},
"execution_count": 23
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "wMgwmWGFQcr4",
"outputId": "06146664-6fc4-4933-af0f-bc1fa39c00ad"
},
"source": [
"for fruitData in fruitDictList: \n",
" name = fruitData['fruitName']\n",
" num = fruitData['numFruit']\n",
" print(f\"I have {num} {name}, and they are delicious!\")"
],
"execution_count": 26,
"outputs": [
{
"output_type": "stream",
"text": [
"I have 3 apples, and they are delicious!\n",
"I have 5 oranges, and they are delicious!\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "dtVmCWjtQjxp",
"outputId": "952c778a-5d64-414a-e090-eb7398b26f92"
},
"source": [
"data['items'][0]['numFruit']"
],
"execution_count": 30,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"3"
]
},
"metadata": {
"tags": []
},
"execution_count": 30
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "jbZO006ETFhV"
},
"source": [
"response = requests.get('http://corpus-db.org/api/id/5.0')"
],
"execution_count": 37,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "X3XBbP3OT4oB",
"outputId": "38592fa2-338c-45f5-9f9d-9fde0d3a1ea0"
},
"source": [
"response"
],
"execution_count": 38,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<Response [200]>"
]
},
"metadata": {
"tags": []
},
"execution_count": 38
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "olEm-QGYT6Rh",
"outputId": "3af6e776-2729-4ba2-bf17-938082743fb2"
},
"source": [
"response.ok"
],
"execution_count": 39,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"True"
]
},
"metadata": {
"tags": []
},
"execution_count": 39
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "E9OGXNnyZOc_"
},
"source": [
"responseText = response.text"
],
"execution_count": 40,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "Gh88XV-hZVrj"
},
"source": [
"responseDecoded = json.loads(responseText)"
],
"execution_count": 41,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "UgewElAMZmXP",
"outputId": "9abd6eff-68ab-4748-dcaf-d83f3f2208e7"
},
"source": [
"type(responseDecoded)"
],
"execution_count": 42,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"dict"
]
},
"metadata": {
"tags": []
},
"execution_count": 42
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "9TikWWgPZpM8",
"outputId": "455ed20e-0cb2-418c-b231-64ce6b74f0e9"
},
"source": [
"responseDecoded.keys()"
],
"execution_count": 43,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"dict_keys(['lcsh', 'summary', 'series_note', 'creator', 'production_note', 'downloads', 'rights_url', 'wp_publication_date', 'authoryearofdeath', '_repo', 'wp_subjects', 'language_note', 'tableOfContents', 'gutenberg_issued', 'identifiers', 'formats', 'gutenberg_type', '', 'publication_note', 'url', 'edition_identifiers', 'rights', 'authoryearofbirth', 'wp_info', 'languages', 'LCC', 'publication_date', 'subjects', 'wikipedia', 'author', 'id', 'gutenberg_bookshelf', '_version', 'releaseDate', 'alternative_title', 'title', 'type', 'wp_literary_genres', 'contributor', 'edition_note', 'titlepage_image', 'jmdate', 'publisher', 'covers', 'description', 'filename'])"
]
},
"metadata": {
"tags": []
},
"execution_count": 43
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 52
},
"id": "BpIpdqXaZtCg",
"outputId": "3d3d5756-dba6-4aaf-d27b-fd88ec8e4331"
},
"source": [
"responseDecoded['lcsh']"
],
"execution_count": 44,
"outputs": [
{
"output_type": "execute_result",
"data": {
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "string"
},
"text/plain": [
"\"{'United States. Constitution', 'United States -- Politics and government -- 1783-1789 -- Sources'}\""
]
},
"metadata": {
"tags": []
},
"execution_count": 44
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 35
},
"id": "NajFtUTVZ03q",
"outputId": "ffb75839-edab-440b-a31a-77e6d62f07ba"
},
"source": [
"responseDecoded['title']"
],
"execution_count": 45,
"outputs": [
{
"output_type": "execute_result",
"data": {
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "string"
},
"text/plain": [
"'The United States Constitution'"
]
},
"metadata": {
"tags": []
},
"execution_count": 45
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 163
},
"id": "VTxjcKYZZ-TN",
"outputId": "d7935f1f-b4a5-45dd-9612-9e0707e2d82c"
},
"source": [
"responseDecoded['authoryearofbirth']"
],
"execution_count": 131,
"outputs": [
{
"output_type": "error",
"ename": "KeyError",
"evalue": "ignored",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-131-a3314f4735e7>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mresponseDecoded\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'authoryearofbirth'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;31mKeyError\u001b[0m: 'authoryearofbirth'"
]
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "HqcHHJXLaBM9"
},
"source": [
"def queryGoogleBooks(startIndex):\n",
" myParams = {\"q\": \"algorithmic bias\", \"startIndex\": startIndex, \"maxResults\": 40}\n",
" response = requests.get('https://www.googleapis.com/books/v1/volumes', \n",
" params=myParams)\n",
" if response.ok == False: \n",
" print('Whoa! Response not OK!')\n",
" return json.loads(response.text)"
],
"execution_count": 156,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "DCNm7YEl__Ab"
},
"source": [
"bookData = queryGoogleBooks(1)"
],
"execution_count": 142,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "RS7Rd8VPAY3C",
"outputId": "9b9a9a87-be75-4116-c5d2-0892a4a3b40d"
},
"source": [
"if 'title' in bookData['items'][0]: \n",
" print(\"Yay!\")\n",
"else: \n",
" print('Nay!')"
],
"execution_count": 146,
"outputs": [
{
"output_type": "stream",
"text": [
"Nay!\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "s5ziYr73gE4p"
},
"source": [
"publicationDates = []\n",
"for n in range(1, 2296, 40):\n",
" data = queryGoogleBooks(n)\n",
" print('Querying...', n)\n",
" time.sleep(1)\n",
" if 'items' in data: \n",
" items = data['items']\n",
" for item in items: \n",
" if 'volumeInfo' in item and 'publishedDate' in item['volumeInfo']: \n",
" pubDate = item['volumeInfo']['publishedDate']\n",
" publicationDates.append(pubDate)"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "ALeDDefwjouK"
},
"source": [
"cleanDates = []\n",
"for date in publicationDates: \n",
" cleanDate = date[:4]\n",
" cleanDateInt = int(cleanDate)\n",
" cleanDates.append(cleanDateInt)"
],
"execution_count": 158,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 282
},
"id": "HQSCl_Bdj9Jt",
"outputId": "f6a5b3eb-102d-4283-92c6-adf911e4c160"
},
"source": [
"pd.Series(cleanDates).hist()"
],
"execution_count": 159,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7fec20e74550>"
]
},
"metadata": {
"tags": []
},
"execution_count": 159
},
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": [],
"needs_background": "light"
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "pWuaV2NMhdKl"
},
"source": [
""
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "1DU9XpNDay_K",
"outputId": "3e4df29e-5b68-4835-a090-9bf0f01625f1"
},
"source": [
"response.ok"
],
"execution_count": 80,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"True"
]
},
"metadata": {
"tags": []
},
"execution_count": 80
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "X7Tj9cHza2AX"
},
"source": [
"bookData = json.loads(response.text)"
],
"execution_count": 81,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "dEj458Nea4bx",
"outputId": "1ae0856b-62ec-40ca-cf8d-347b9f6673ab"
},
"source": [
"type(bookData)"
],
"execution_count": 82,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"dict"
]
},
"metadata": {
"tags": []
},
"execution_count": 82
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "sw19vLb2cA2r",
"outputId": "5cb94e9d-d35d-4c8e-f31e-2dffed80079c"
},
"source": [
"bookData.keys()"
],
"execution_count": 83,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"dict_keys(['kind', 'totalItems', 'items'])"
]
},
"metadata": {
"tags": []
},
"execution_count": 83
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "-BdJurWCep67",
"outputId": "85bf520f-6a06-49e7-b10c-c98c32a9e200"
},
"source": [
"bookData['totalItems']"
],
"execution_count": 84,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"2296"
]
},
"metadata": {
"tags": []
},
"execution_count": 84
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "8VYOjIoBbAK0",
"outputId": "4219cb3f-ca74-4512-acd1-f0724a1c95da"
},
"source": [
"len(bookData['items'])"
],
"execution_count": 75,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"10"
]
},
"metadata": {
"tags": []
},
"execution_count": 75
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "U9XRDBflbCre"
},
"source": [
"items = bookData['items']"
],
"execution_count": 76,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "J3xZUaKxbSVh"
},
"source": [
"items[0]['volumeInfo']"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "TVvuHjzSbUlK",
"outputId": "f431ac3b-2713-4448-f1c0-93c4d702158b"
},
"source": [
"for book in items: \n",
" print(book['volumeInfo']['title'])"
],
"execution_count": 68,
"outputs": [
{
"output_type": "stream",
"text": [
"Start Quilting\n",
"Paper Piecing All Year Round\n",
"Fresh Quilting\n",
"Beginner’s Guide to Free-Motion Quilting\n",
"A Quilting Life\n",
"Utility Quilting\n",
"Quilting Modern\n",
"Step-by-Step Free-Motion Quilting\n",
"Rulerwork Quilting Idea Book\n",
"Country Cottage Quilting\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "sH3MaXGGdJwz"
},
"source": [
""
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "X0cTYbUTez7-"
},
"source": [
"## Functions\n",
"\n",
"A function has (optionally) an input. \n",
"Every function has an output. \n",
"\n",
"```\n",
"def double(number):\n",
" return number*2\n",
"```"
]
},
{
"cell_type": "code",
"metadata": {
"id": "eNYiTAkRe0-g"
},
"source": [
"def double(number):\n",
" doubled = number * 2\n",
" return doubled"
],
"execution_count": 85,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "7ELR_nvOfbKs",
"outputId": "0c561e08-9e6b-4830-acb7-f9cce92672aa"
},
"source": [
"double(5)"
],
"execution_count": 86,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"10"
]
},
"metadata": {
"tags": []
},
"execution_count": 86
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "QfKLsd9UfesR",
"outputId": "e7a5e40d-2148-42dc-efc5-b4e56f5d2c62"
},
"source": [
"double(10)"
],
"execution_count": 87,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"20"
]
},
"metadata": {
"tags": []
},
"execution_count": 87
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 35
},
"id": "u5p6V24ufgMb",
"outputId": "43ac0550-699b-4483-eb90-d293ad3c3c81"
},
"source": [
"double(\"Jonathan\")"
],
"execution_count": 88,
"outputs": [
{
"output_type": "execute_result",
"data": {
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "string"
},
"text/plain": [
"'JonathanJonathan'"
]
},
"metadata": {
"tags": []
},
"execution_count": 88
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "aHZKQwzPfh9V"
},
"source": [
""
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "_40Yd4o7EDc_"
},
"source": [
"## API Example 2\n"
]
},
{
"cell_type": "code",
"metadata": {
"id": "RJKoZalkEDNj"
},
"source": [
"baseURL = \"https://covid-api.mmediagroup.fr/v1/vaccines\""
],
"execution_count": 160,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "CNqOS5YDFiVx"
},
"source": [
"myParams = {}\n",
"response = requests.get(baseURL, params=myParams)\n",
"if not response.ok: \n",
" print('Request not OK!')\n",
"else:\n",
" response = response.text\n",
" vaccineData = json.loads(response)"
],
"execution_count": 163,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "rqhJBe1pGr0W"
},
"source": [
"def getPercentVaccinated(country):\n",
" countryData = vaccineData[country]\n",
" if 'All' in countryData:\n",
" if 'people_vaccinated' in countryData['All']:\n",
" numVaccinated = vaccineData[country]['All']['people_vaccinated']\n",
" if 'population' in countryData['All']:\n",
" population = vaccineData[country]['All']['population']\n",
" percentVaccinated = (numVaccinated / population) * 100\n",
" return percentVaccinated"
],
"execution_count": 196,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "8x3j1PLQGvyW",
"outputId": "870b6fbe-5a87-428e-d653-a8c56efa4533"
},
"source": [
"vaccineData.keys()"
],
"execution_count": 174,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"dict_keys(['Afghanistan', 'Albania', 'Algeria', 'Andorra', 'Angola', 'Antigua and Barbuda', 'Argentina', 'Armenia', 'Australia', 'Austria', 'Azerbaijan', 'Bahamas', 'Bahrain', 'Bangladesh', 'Barbados', 'Belarus', 'Belgium', 'Belize', 'Bhutan', 'Bolivia', 'Bosnia and Herzegovina', 'Botswana', 'Brazil', 'Brunei', 'Bulgaria', 'Burma', 'Cambodia', 'Cameroon', 'Canada', 'Chile', 'China', 'Colombia', 'Costa Rica', \"Cote d'Ivoire\", 'Croatia', 'Cyprus', 'Czechia', 'Denmark', 'Dominica', 'Dominican Republic', 'Ecuador', 'Egypt', 'El Salvador', 'Equatorial Guinea', 'Estonia', 'Eswatini', 'Ethiopia', 'Fiji', 'Finland', 'France', 'Gabon', 'Gambia', 'Georgia', 'Germany', 'Ghana', 'Greece', 'Grenada', 'Guatemala', 'Guinea', 'Guyana', 'Honduras', 'Hungary', 'Iceland', 'India', 'Indonesia', 'Iran', 'Iraq', 'Ireland', 'Israel', 'Italy', 'Jamaica', 'Japan', 'Jordan', 'Kazakhstan', 'Kenya', 'Kosovo', 'Kuwait', 'Kyrgyzstan', 'Laos', 'Latvia', 'Lebanon', 'Liechtenstein', 'Lithuania', 'Luxembourg', 'Malawi', 'Malaysia', 'Maldives', 'Mali', 'Malta', 'Marshall Islands', 'Mauritania', 'Mauritius', 'Mexico', 'Micronesia', 'Moldova', 'Monaco', 'Mongolia', 'Montenegro', 'Morocco', 'Mozambique', 'Namibia', 'Nepal', 'Netherlands', 'New Zealand', 'Nicaragua', 'Nigeria', 'North Macedonia', 'Norway', 'Oman', 'Pakistan', 'Palau', 'Panama', 'Papua New Guinea', 'Paraguay', 'Peru', 'Philippines', 'Poland', 'Portugal', 'Qatar', 'Romania', 'Russia', 'Rwanda', 'Saint Kitts and Nevis', 'Saint Lucia', 'Saint Vincent and the Grenadines', 'San Marino', 'Sao Tome and Principe', 'Saudi Arabia', 'Senegal', 'Serbia', 'Seychelles', 'Sierra Leone', 'Singapore', 'Slovakia', 'Slovenia', 'Solomon Islands', 'South Africa', 'South Sudan', 'Spain', 'Sri Lanka', 'Sudan', 'Suriname', 'Sweden', 'Switzerland', 'Syria', 'Taiwan*', 'Thailand', 'Togo', 'Trinidad and Tobago', 'Tunisia', 'Turkey', 'US', 'US (Aggregate)', 'Uganda', 'Ukraine', 'United Arab Emirates', 'United Kingdom', 'Uruguay', 'Uzbekistan', 'Venezuela', 'Vietnam', 'World', 'Zambia', 'Zimbabwe', 'Global'])"
]
},
"metadata": {
"tags": []
},
"execution_count": 174
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "zLHUIc6JHrXG",
"outputId": "aad4cc41-65fa-42b2-90d5-2868afe4ccba"
},
"source": [
"getPercentVaccinated('Germany')"
],
"execution_count": 187,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"33.90027895776011"
]
},
"metadata": {
"tags": []
},
"execution_count": 187
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "uF3WLogQIKlv"
},
"source": [
"percentVaccinatedByCountry = {}\n",
"for country in vaccineData:\n",
" percentVaccinated = getPercentVaccinated(country)\n",
" percentVaccinatedByCountry[country] = percentVaccinated"
],
"execution_count": 188,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "RvGdePSoJHhF"
},
"source": [
"percentVaccinatedSeries = pd.Series(percentVaccinatedByCountry)"
],
"execution_count": 192,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 441
},
"id": "iqS_APzLKHzM",
"outputId": "1fdc0ebd-5b9e-4397-f1c4-6c0faa8ab97e"
},
"source": [
"percentVaccinatedSeries.sort_values(ascending=False).plot(kind='bar')"
],
"execution_count": 200,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7fec20d5fe50>"
]
},
"metadata": {
"tags": []
},
"execution_count": 200
},
{
"output_type": "display_data",
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAGXCAYAAACjs6t/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOydd7idRdW370knCWmU0BPEACKdgDQBKSooCIoogkZBESuIr4rlVbECvoJIFUQMghQpBgFFCL2FhCSkdxLSe89JTsn6/vitcXbyBXNSOdlZ93Xta+/97KfMrFmzZs2aspOZEQRBEGz5NHunExAEQRBsHMKgB0EQVAlh0IMgCKqEMOhBEARVQhj0IAiCKiEMehAEQZXQYnM+bPvtt7fu3btvzkcGQRBs8bz++utzzGyHtZ23WQ169+7dGTBgwOZ8ZBAEwRZPSmlSY86LkEsQBEGVEAY9CIKgSgiDHgRBUCWEQQ+CIKgSwqAHQRBUCWHQgyAIqoQw6EEQBFXCWg16SmmflNLgiteilNKlKaUuKaUnU0pj/b3z5khwEARBsGbWatDNbLSZHWxmBwOHAcuAh4HLgb5m1gPo69//K0OnLtzA5AZBEARvx7qGXE4CxpvZJOBjQG8/3hs4c2MmLAiCIFg31tWgfxq4xz93NbPp/nkG0HWjpSoIgiBYZxpt0FNKrYAzgL+t/pvpj0nX+OekKaWLUkoDUkoDGpZFyCUIgmBTsS4e+qnAQDOb6d9nppR2BvD3WWu6yMxuNbOeZtazeduOG5baIAiC4G1ZF4N+LiXcAvAI0Ms/9wL6bKxEBUEQBOtOowx6SqkdcArwUMXhK4FTUkpjgZP9exAEQfAO0SiDbmZLzWw7M1tYcWyumZ1kZj3M7GQzm9fYh3a//LH1SWsQBEHwX4iVokEQBFVCGPQgCIIqIQx6EARBlRAGPQiCoEp4Rw16DI4GQRBsPMJDD4IgqBLCoAdBEFQJYdCDIAiqhDDoQRAEVUIY9CAIgiohDHoQBEGVEAY9CIKgSgiDHgRBUCWEQQ+CIKgSwqAHQRBUCWHQgyAIqoQw6EEQBFVCkzDosUlXEATBhtMkDHomDHsQBMH606QMehAEQbD+NMqgp5Q6pZQeSCmNSimNTCkdlVLqklJ6MqU01t87b+rEBkEQBG9PYz3064B/mdm+wEHASOByoK+Z9QD6+vcgCILgHWKtBj2l1BE4DrgdwMxqzWwB8DGgt5/WGzhzUyUyCIIgWDuN8dD3BGYDd6SUBqWU/phSagd0NbPpfs4MoOumSmQQBEGwdhpj0FsAhwI3m9khwFJWC6+YmQG2potTShellAaklAY0LFu4oekNgiAI3obGGPQpwBQz6+ffH0AGfmZKaWcAf5+1povN7FYz62lmPZu37bgx0hwEQRCsgbUadDObAUxOKe3jh04CRgCPAL38WC+gzyZJYRAEQdAoWjTyvG8Ad6eUWgETgC+gxuD+lNKFwCTgnE2TxCAIgqAxNMqgm9lgoOcafjpp4yYnCIIgWF9ipWgQBEGVEAY9CIKgSgiDHgRBUCWEQQ+CIKgSwqAHQRBUCWHQgyAIqoQw6EEQBFVCkzTo8c9FQRAE606TNOhBEATBuhMGPQiCoEoIgx4EQVAlhEEPgiCoEsKgB0EQVAlN3qDHjJcgCILG0eQNehAEQdA4wqAHQRBUCWHQgyAIqoQw6EEQBFVCGPQgCIIqIQx6EARBldCoP4lOKU0EFgMNQL2Z9UwpdQHuA7oDE4FzzGz+pklmEARBsDbWxUP/gJkdbGY9/fvlQF8z6wH09e9BEATBO8SGhFw+BvT2z72BMzc8OUEQBMH60liDbsC/U0qvp5Qu8mNdzWy6f54BdN3oqQuCIAgaTaNi6MCxZjY1pbQj8GRKaVTlj2ZmKSVb04XeAFwE0LzDDhuU2CAIguDtaZSHbmZT/X0W8DBwBDAzpbQzgL/PeptrbzWznmbWs3nbjuud0NjTJQiC4L+zVoOeUmqXUto2fwY+CAwDHgF6+Wm9gD6bKpFBEATB2mmMh94VeDGl9AbwGvCYmf0LuBI4JaU0FjjZv29ywlMPgiBYM2uNoZvZBOCgNRyfC5y0KRIVBEEQrDuxUjQIgqBK2GINeg69RAgmCIJAbLEGPQiCIFiVMOhBEARVQhj0IAiCKiEMehAEQZVQNQY9BkeDINjaqRqDHgRBsLUTBj0IgqBKCIMeBEFQJYRBD4IgqBLCoAdBEFQJYdCDIAiqhDDoQRAEVUIY9CAIgiohDHoQBEGVUHUGPVaMBkGwtVJ1Bj0IgmBrpWoNenjqQRBsbVStQQ+CINjaCIMeBEFQJTTaoKeUmqeUBqWUHvXve6aU+qWUxqWU7ksptdp0yQyCIAjWxrp46JcAIyu+XwVca2bvBuYDF27MhG0sIpYeBMHWQqMMekppN+AjwB/9ewJOBB7wU3oDZ26KBAZBEASNo7Ee+u+A7wIr/ft2wAIzq/fvU4Bd13RhSumilNKAlNKAhmULNyixQRAEwduzVoOeUvooMMvMXl+fB5jZrWbW08x6Nm/bcX1uEQRBEDSCFo045xjgjJTSaUAboANwHdAppdTCvfTdgKmbLplBEATB2lirh25m3zez3cysO/Bp4GkzOw94BjjbT+sF9NlkqdwIxOBoEATVzobMQ/8ecFlKaRyKqd++cZIUBEEQrA+NCbn8BzN7FnjWP08Ajtj4SQqCIAjWh1gpGgRBUCWEQQ+CIKgSwqAHQRBUCWHQgyAIqoQw6EEQBFVCGPQgCIIqYasz6LHAKAiCamWrM+hBEATVShj0IAiCKiEMehAEQZUQBj0IgqBKCIMeBEFQJWy1Bj1muwRBUG1stQY9CIKg2giDHgRBUCVs9QY9Qi9BEFQLW71Bz2TDHgY+CIItlTDoQRAEVUIY9LchPPUgCLY0wqCvhTDsQRBsKazVoKeU2qSUXkspvZFSGp5SusKP75lS6pdSGpdSui+l1GrTJ/edI2LsQRA0dRrjoa8ATjSzg4CDgQ+nlI4ErgKuNbN3A/OBCzddMoMgCIK1sVaDbmKJf23pLwNOBB7w472BMzdJCpso4akHQdDUaFQMPaXUPKU0GJgFPAmMBxaYWb2fMgXYddMkMQiCIGgMjTLoZtZgZgcDuwFHAPs29gEppYtSSgNSSgMali1cz2Q2XVaPrYfnHgTBO8U6zXIxswXAM8BRQKeUUgv/aTdg6ttcc6uZ9TSzns3bdtygxG5JhGEPgmBz05hZLjuklDr5522AU4CRyLCf7af1AvpsqkRuyYTnHgTB5qLF2k9hZ6B3Sqk5agDuN7NHU0ojgHtTSr8ABgG3b8J0BkEQBGthrQbdzIYAh6zh+AQUTw+CIAiaALFSNAiCoEoIg76ZiVkxQRBsKsKgB0EQVAlh0IMgCKqEMOhNhAi9BEGwoYRBb2JEbD0IgvUlDHoTJwx8EASNJQz6Fkb3yx8LIx8EwRoJgx4EQVAlhEEPgiCoEsKgB0EQVAlh0KuAiKUHQQBh0KuKGCwNgq2bMOhBEARVQhj0KiY89SDYugiDHgRBUCWEQd8KCE89CLYOwqBvRcSgaRBUN2HQgyAIqoQw6EEQBFXCWg16Smn3lNIzKaURKaXhKaVL/HiXlNKTKaWx/t550yc3CIIgeDsa46HXA982s/2AI4GvpZT2Ay4H+ppZD6Cvfw+2ICKmHgTVxVoNuplNN7OB/nkxMBLYFfgY0NtP6w2cuakSGQRBEKyddYqhp5S6A4cA/YCuZjbdf5oBdN2oKQuCIAjWiUYb9JRSe+BB4FIzW1T5m5kZYG9z3UUppQEppQENyxZuUGKDIAiCt6dRBj2l1BIZ87vN7CE/PDOltLP/vjMwa03XmtmtZtbTzHo2b9txY6Q5CIIgWAONmeWSgNuBkWZ2TcVPjwC9/HMvoM/GT14QBEHQWFo04pxjgM8CQ1NKg/3YD4ArgftTShcCk4BzNk0SgyAIgsawVoNuZi8C6W1+PmnjJicIgiBYX2KlaPAfYj56EGzZhEEPgiCoEsKgB0EQVAlh0IP/j9gSIAi2TMKgB2slDHsQbBmEQQ+CIKgSwqAHjSY89SBo2oRBD9aZiLEHQdMkDHoQBEGVEAY9CIKgSgiDHgRBUCWEQQ+CIKgSwqAHQRBUCWHQgyAIqoQw6MEGE9MXg6BpEAY9CIKgSgiDHmw0YsFRELyzhEEPgiCoEsKgB0EQVAlh0INNxuohmAjFBMGmZa0GPaX0p5TSrJTSsIpjXVJKT6aUxvp7502bzCAIgmBtNMZD/zPw4dWOXQ70NbMeQF//HgSNIjz2INg0rNWgm9nzwLzVDn8M6O2fewNnbuR0BVsREZoJgo3D+sbQu5rZdP88A+i6kdITBP8hDHsQrBsbPChqZgbY2/2eUroopTQgpTSgYdnCDX1csBUShj0IGsf6GvSZKaWdAfx91tudaGa3mllPM+vZvG3H9XxcEIRhD4K1sb4G/RGgl3/uBfTZOMkJgrUThj0I1kxjpi3eA7wC7JNSmpJSuhC4EjglpTQWONm/B0EQBO8gjZnlcq6Z7WxmLc1sNzO73czmmtlJZtbDzE42s9VnwQTBJidmxQTBqsRK0aCqCCMfbM2EQQ+qmjDswdZEGPQgCIIqIQx6sFUQnnqwNRAGPdiqCMMeVDNh0IMgCKqEMOjBVknMhgmqkTDoQUAY9qA6CIMeBBXEVr7BlkwY9CBoBGHggy2BMOhBEARVQhj0IFgPwmMPmiJh0INgIxCGPWgKhEEPgo1IDKoG7yRh0INgMxCGPtgchEEPgneQMPDBxiQMehA0IcKwBxtCGPQgaIJEiCZYH8KgB8EWRBj44L8RBj0ItmDezpOvNPjRCGw9hEEPgiCoEjbIoKeUPpxSGp1SGpdSunxjJSoIgk1HY7z6YMtkvQ16Sqk5cCNwKrAfcG5Kab+NlbAgCN4Z1mbwG/sebH42xEM/AhhnZhPMrBa4F/jYxklWEARbOtEgbH42xKDvCkyu+D7FjwVBEGwwG6unsDU1FMnM1u/ClM4GPmxmX/TvnwXeZ2ZfX+28i4CL/Os+wFxgDrD9FvZOE0hDU30P2YRMQiabVjbtzGwH1oaZrdcLOAp4ouL794HvN+K6AVvie1NIQ1N9bwppaGrvTSENTe29KaShqb439py1vTYk5NIf6JFS2jOl1Ar4NPDIBtwvCIIg2ABarO+FZlafUvo68ATQHPiTmQ3faCkLgiAI1on1NugAZvY48Pg6XnbrFvreFNLQVN+bQhqa2ntTSENTe28KaWiq740957+y3oOiQRAEQdMilv4HQRBUCWHQt2JSSs1TSp1TSge+02lpaqSU2m6Ee7RKKe3vr5YbI12bk5RS+5RS+3c6Hf+NjVFOjXhGs5RSh039nI3BOxJySSkdBLzfv75gZm804prmwEeA7sCBwEjAzOyalNIBaGHTAqAtUGNmK1NKewP7As8D9Wa2ZKNnppGklA4ws6EV308HHjOzlaudtz/aSqFNPmZmd652TmdgdyTDu81sQcXxc83sprWk5VngDGAI0Al4C3jKzC5zOQ83s31TSjsA31tDek5cx7wfA/wU6IbGbZJuY+9ay3WdgR4Vz94fOMvv0wbYDmiJyn43wIDRFbfYHV/8ZmaNarRSSkcDfwTam9kerqtfNrOvrkM6Qc7SX4CZwDJgb+AFYCUwz8+5rfI+ZjawMWlsZD7Wqkdvdx4wArgTaIfKajbwAzN7wq/pAfwaOAhNiADNk+662r0/aWZ/W+3YJcAdwGIk50OAy83s3+uYv3UqJ9flLyH7kccO2wG3mdlTKaVtgBZmttjP/ytwMdCAZvR1AK4DerOqrGYBF6L6NBOod7lMAn7xdmXqMwMvRWOQBwHPoZmC7wd2AWqAYcBjwD9XtxNvK5dNbdBXK8C7gNORQGciIbVHiX7RL9kJOBzYGZiPhPlJYCEy2JOA45FQhwFfQRWlPbDC77s/EvKvUAVqjgTdHPgQsAMq2Bf8ma38+E5Aaz92uN+rshczBVXcTsBSpPj1/vlcoA642/N6jqe3BbAjMj4L/Jrd/NUOqPXrrgfOQ4sIalweJwEveR7v8zS28HvU+j3v8mOPA5cARyOD8QLwLHAAsMjv3cll0BIZmRYu41Yuv//x+43zcxb4PU5GleHTfl0tWiTW2uXTHTWwuwFdgM5+vBkysvi1b6AKAoCZjXeDciJwPlpp3MqfvY3LpbXLt52nfalfvg1adDEXOA34AWq86/33vmhB23BgFPAd4ErgHrSG4odID8aicm4N/ARV2juBz3i+2wOPAjcB7wXe7XncEZgBdAW29fS9DBznZbcdangaPN3LUdmu8Pwll0c3v74BmOZl1ALpeUvgf8zs0QrD2w3Vh/093Tv6+VOACX6fHv7b3p7GHsAS/629y6iF5zl/ngjsgXS3I6o3o1Dd/RKwp8sE4JfAj5CunIga/ROB//Pf90Y6cTCqo+2B17x8evozhnlevgL8FZjuZbqt5/sxz++2SN+6uPxuBD7nxxciGzLK5dDR793M5TsD1RmAPi7TKX7th13WzVCj3xLp02hP18HAQH/mAFQPbnR5zUG6Ps2ftwBthdLHj+/vZfSAyxWXwTbI4ZzszzB/bjPPY3K5v4R0pp0/vxMwwsyOZW00dsL6+r6AN/z9Q0jJZiCDdTxSwBrPxHIXVkPF95We0el+fB6qXMO9IL/s91gI/K//vhIZt9mosg9GRuu7LvgaP27IcC33zysr3vPn/L3On78YVUjz+/ybUokGVaR1CqpA85DiLgVeRcZiob/m+29TPV1L/Z4zgDc9bVkOOS21/p5lkT9P8/eRfn4LVNka/FXn5y7we9QCD3la/wVc6/maWpHXyvybpy+XzRI/Nt/LbJa/L/bf/+kyXlLx7NXluXre6lf7PT9zrqcr681EL/d5wM/8+9iK9Jlfc5unZ57n93t+j3l+7izgq56GFaxa/m/6tR/1d6u4d9bRKRX5yO+L/beH/L6PeJmsAP6EeomgxmaGl/EYZCBm+bGxLres/8b/L7+V/pxuwN89v338OStWO385RXf/6Wn9IaqLNcDlSH8GI+PdgHR6OerBPVSRr6f92MrVZJaf+arfc4E/Z4XfeynS+VEuv2cryibLM+vpc/5brd9/md97hsupF3CZ/36Zl8NjSBfrgIf9fZGnJetslt0dfu0SYCiqg4+4PMzvl2WXy77W71VTIc9KGeRrbweuqijHBtT7Nc/HaOB+Pz7K5bLS0z7T09Yb2Yn7kPN7Oton60+bemFRY0n+fhoS4mwAM3vOMzMedfHbIOVvCSz370uBV5BwEqrYR6BW8C7UAi5GBXg0av1WosaiI2oVOwCtzexqVFHH+HMWIY+kt6chV8JRqKD6ARegAn7enzkOtZjL/JkfQd36t8zsEKScByAPdbqfMxp5gpjZJX6PCzxt7/Y8Zi9pBWqNd0Xeea4o5yMl2NOP/YXioS7296m412Jm9ci7nO7nD0VK+aA/a6I/uznyPC/w5//Wy+huSoX8uMtqGOoB1JlZe7/HSpflJL9/DqF09vQk4D3+zN8iz24J8CnkqY31NNSYWQuX/RIzawmsNLN2yJvJ91uCvJYhfvxs5AnfhirEOC/Ll83sS8ANLt+EenTtkLdV43K7AOlEA9KdOqQfdS6PK7ysG1DPoQ74jed1iue/xq+tQboxAnnyzfz3VlQ0CCmlXVDvcwlqZPb08uuI9O8rLpepqJc4xGXf3D8P8usxs0nIi1yMPOJRLv+hyGNuQJ7rcKClmZ0KNDezXyLdWGlmV/pnc3nknkN2GP5J6eFOQvVgLjLQzyPjPc6fe7P/NtPzvivy1s3l3A4Z/Vr/fJKndbDLbZiZHe+/jfZ0DPHPjwGTzay3P3u532sWClFkp+gAT2Mz/zzE8/8oqhtfQDqbe4p1XgZTKc7AOC/PRX7Pv3iZDPC0TKM0UMs91DQfhV0+hXoTxwG1ZrYHaiDvQbp9DsWpmu9yWQ7M9LQdAJxoZp8ys3/469MozLx2NoOHfgfyZMeibtf3XZh3o5ZsBarofYFlfs0y4Bcu1FEuqGkUb34lpWVfhrrz1/rn3Kr/HClj9iD38Xs8jIzRDD/vZi+02ahijHJBT/a0LAdG+efXUDd1mafl5/68F5GBrPHzJrgyzAAORb2D3M2sRwo1BCnPDM/Ha8Af/Hg2ug3AHL/nCv9tJqrUS5GS597ALE/38yj8UIfCLstQpVmIlDF7RmchpbrPn3UlxWvI3c+pKHQ0yZ/xOjDa0/OEXz8MGdFFSBkbkIH4h+fjW5Q4ZP+Kz68Br/m9liCD9pCn+0t+7VeBW/zYYpfXbGR0x3neliAdW4BCKYdRPPlJXn5jkIGb6mUz3T8PQ5V0GaqES13G8/yZdS7TrJeLvOyW+r0X+rXvqpB9f0rZX+ZyXIZCatnLrPN0Pexlc4eX6UpP30CX9ctZTsgwZ4Pezc/tQ2l4s042+DNe8N/GenoWIF3MZf4Pl113T2cNRa+u8/zUIr16EzWaP3a53eLp3t3LYwElhDIUeaU1KGTS2j8/7+nZ2ctoWUWdOgiV/USklw2oLkx0ecyihDYe8TTUsqp3/yqlUf+CP+vjLrPXKN52jV+Xezkz/H65V/A6RbcPRbr9BvAU0tEb/Dl1Xj7jkdPyEb/vXKQbO7Oqp55fiyihmvzsWchx/RXF2L8LhX0eQQ3OyMbY280RQ2/mCZsAHIsK/mwU39wJFUAb4M+oK/g1VPl6+S2WUmKoWaH3RMajPTLkp6ABkuZ+jwtQweyF4nNtKPHxpciTHYQUrzOKg74LFdSuqLCbIaXujLyWBuRFbI8Uo5Mfn48KunIU3Cihi238WJ3n8WBkRHZAcbx2yIAsQpW2DcUDGYla5vtQy/9nFJ/bHVXg7sg7nIeMdR6kyrHRo1wurZACHefX5fGGpX7u0y6Ln6LGtR9wDTLsdf4+HvWIpiGj9UVUhoZ6OduhEEVC3vNSFDP9A4rf1/gzu7nMZvt5d6NKfBRlkLPG5ZYb9P39+ArPVx6Uej+qBGegQbqPU3o5r1VcZ14+81Bs837/3hpVpp28rHJFb4HCAu9HcfVPep7fhwbxcniglcu7BnlgU7w8f4xCjC94WV3vz7sCjVPc62VwFOpxtkL6NhGVdw779AD+hrrdzVFF3xbpxnOoEVqJGuMfevn0Qvo40e/9P8iDPcnvsZvLL89eyQZghefrBL/PDqis2wLPoK2xh1OMXK3fZ56n/SkUvjHKWEA7v++byLjj1+UejyH9mIoaocuQPXg3csASJcyVZwnNQQ3yL/3ZH0U92M6o4X6X57MO2YuEjOuNyLZkp/A1//2rqPxv8vPO8vTv4feY4Mdf8XS/BHzbn/c7VGc/7ml7yMvlPFQ/hiAdaAZ8ADl+s1A9bOGyHYEakPcgnbkY6XIzf3ZPz/OX86D0f2NzGPSEMvgu5IVPRgr2FhLI9sjI9UEVs4+ZXZBSGocM2Y5+/imUAaZcuX9IiXfNQQI72O+bkEE5GFXKz6CK9aS/PgV805M5kxKeqEUVrR8yfneiSvQ5T8tU4EEze9jzd3xFdtv4OW95SImU0iAzOySlNMTMDvTpay+Y2ZEppW5+3Xv9fVtP8zLU4CxEvY9pyJi8G1WEjp6Hszw927hcshdyCmo865Ah+qBfM8fM/ppSuhAp6XZIiTqgcYdJyGAdgWKBn0cj8WNQpX4RGbe3kMd1BTIAebDmhSwXz3s3pMAtUYXZw5+5wk/Js5sMOBLFxm8ws4NSSmf4sy5hVY6iDE6e6fLYDjVmt6GKV+OyPB31Dt80s5+llE5Fxu+XlFkyi5ABuxNVqhqXTXuX3/NIz85yGd5kZuNSSq1RzHR/L6vMsagydkaVNhujuahcxyMjvcTMHkopZcflx2hM4CZkAGcgT9bQOMeHUB35N3COmX3c5dvDNEtje0/vdaiutfPvOXRylZk9XynIlNJZwNNmttC/d0LleSHF0J+E6u1JqEcxwOX3Hcqg56PIeB0BTDWzhSmlvZCh+l/P93cpjcBhLndQozQH9TYxsy+klNqhRivbjo6o4V/usr3E0/luSu+0p5fjJL9vR+RUNEe6NRiFaXf3Z/4U+OwaZHInZaDyeGRw27tMZ6GeQAekd0M9L82Q87gcNYTX+LNGAN/wtDzl6W0G/MbMevjzvoHs00zkqI738zohW/A34AAzy3Xmv7I5DPrNqEU8EVWWe5FCjKGMyDegCvk4qtTHoS7M9/w21yLv5wPII/s+ZUT6FVRApyGPtTll0CJ38Y8ws218eln2js5FlfRh1GNIyOjfjQz9783sGs/DZ5FSX1yRpkrBJcrshXH+jBNQyOdKT+uOqLB2QS3zcsqMmjz1K4eT3kDGYH+gv5kdlVL6Cao870OFfSSqrPf4taciz7OTp3GqP3NX1DAeXpHmjkg590ax7c8jYz0f+KznZzFS3BP8+5/N7ICU0lB/5smerz09zW29jE6gDMbhx97rZbEr6jGchyr2C/783yFj0A95xRNRxctxaCge8VzPI3j31My28+mWCz0fC1EP7VK//06e3j09T7m39R6Xw5XIU7wc6cS1nsfPoEr9EeBq5KVOoDTAw5EBH4P040bUxX4FGZguyHB19PQ3Q41zD1TmRhljWooM+U6oATkdVfKeqCd0L9LZ3VGPKMf08wyZ5S7THNNfSpkkANLNhX7+DGTw3+15b+l5+bbnbayno97ltdjv8U9/7tnAqWb2dEope6f3utwy/dB4wx+QMTze3/8zpmBmLX0K7d6ooTgJOVZvmdmJFdNBv+z37IA8/b1R/ahDBv1R1NAPY9WZa/82s4EppUNR438ZqnNLkA7NQx73vpQZMLmOnIYPsJrZN33fql8Di81sF5/WuD/SI1CD+4Tn8xYzuyKllENf70OD1+/ysjoWjWedgMrzKc/LkS7r5i670zyffwAws4dYC5vDoA9EXZ0HkHJtg4T9U+Ql5/hjG5Q5KDMHEmWKV05oLarwPZDhexEp2KvIqBlSXJDi5mmDv/Fn/JQSq9wNVYQ8qLMfCnPkQbRfIyX7nB/Lhhf//hjyhlt4uvL81pXI8PwBOAZVkB5IcTogw3sSCicc7/k31LqPQhWtDWXq30p/3jBPM5SBtll71gcAACAASURBVMf88yH+fhBlSmIrPycrP6iHtAdqgFqgbuIpqGf0pZTSYk/Ptp7WPBD8IKoM5yPFb4G80Ec9fceiSvFe5NU+hsJiJ/ixPPC7GBmPnigmWu/p3IbSZZ7seeiEPJSDUKXo4jLY36+7FXmTU1AZd/C0LDWzDimlh1E8+kxU/r9DxvZEz/8wL5+5qJFvTwmvLfO0dvH0zfbP9RT9munHskcJ8rz3SSlNRJ5XQgb6F6hHMwX3ZIFPICch9/K6UnpbOX5di/SiAzJE21AG9E5AcdwcRmiHDHl7iiF/2d+7o17WHv77e/xeCTXM27msDkM9sHNQuPJJZKyfoTQ+sOoMKChOTTb+rVDD0ny162aiHsepyMOtQXXhBUqI8LKKe+apfM1cxn9FvdY84aDW89Kx4txEqYs1/t6a0jOcixqsZkgH8iD2Cj8vpzeXaT2loWyJwjWHeB4r9zK/C/Va/oB6W3kCRauKtOVedAfUeHWl9PCWIE+/o3/Ps49WonUbF7A2NsOgaD/kWU/zDExCLeNPvHC+i+J+vdBg2Jcrrh2HCut5F8qdyAu4Dyldvu5Nf1+GjNEY/zwQKdASPycPIOUpks+hLmx+vUgZlMqDUcu9EB4EvlWRtjcqPg9BivAGZWpWrR8fCgxZg1wGeGHlcYEhSGmG+O87+7VjUNw5v/akzCleiTzAPK2sAXk+IAM2FSnOcNSI/IzSYO2EGrzX/bk/Qg3jP/36cyhTL++nTDmdjir9YfgAqZ8/2N9HAm0qyu9wygDYJC+fGzztvVzuoyjzzFv48e8gw3c06tmMRjMKcLlN9+tWoobjfygDxA8Bv0cVa3CFLsxAjVAeKE5+j2kux1rkcU1BPcGj/ZrbUWz7QKCbp+FQZOxu8/MnIZ38q//2hqd/H9QYnODH5ng5ven3edHLeIiX7xX+vGl+z6loymMXv/9byPgu9esHId38hZ/7MNLh2cgr/DcK4wzy84ci41WDPP0cqhyNHI88aL9HRZnu4XL9MqoP3/Hvw5ARm4S80zsqXvNQfc1/aDMaNYT3IKOdB+cXIRvxst+rVcXEgqkuq94obDjffxvr933O0/MMCjV1cxl/2svuaP88ijLnfzDS+eORTTjeX6OA4/3+70f68gZyAMcjuzGLMgNpkD/7014meWrjUs9vf+Abq9X55sh5esbPOxVFJcYgx+UvqJfUu+KaT66Lvd0cHvp5yBM/FCnbZ1FlvJPSYh7gQtrfhdLZj++DKv9ISiihG1LIScCnzWx4SullioeYJ++3pngyeW7q2ahLveNqydwWFeqerLqQqA8KR0wzs2NSSq+Z2RGer5dRF/teT+OZqJDu8ufMQZXyPX6vVv6cnSirJaF4Xa8jT3Q5Gqg5y2U2y+U3Ahmv7H3Vospxsd/nDhQSGIpa/T382LuQV5G9kIXAq2Z2bkppOKpQhyNlW4IqUh3qCbxMWZz0ITSI+xk0LfDxlNKTqLLtQQlbvRf4q5l9PqX0jF+z2GV+EmqM8bR8CnU3J6HQyBGoYn0CGbC2yPhmWbX0Z73f75MXLs1Fhutl5A13RQYtLzLqgBa97I0auuf9XmNQBX8P8oK38zKa7J+bUXqIuadzl8vsQi+3uZQQ1jikR9l7zWEVXAZvobDTINQzuMFlkMeG2lK8QFBD8ZQ/bwUa7M+zOc5Bhj8v1NvO73eal+FHUV2qQ/Wpwa9b6s+egvTrOU9/HnCuQw3Epz3fM102dchzvhGNbdS4LK5BhjP3wl73PHzUzDqllEZ63lZ42f0ReaGnI32rR2U8AXm9K1Djbij+fgFqrH6GdLI9sh87Vsh2WUU5LUW6AAqT7YqMZV+ku5ciJ/IlFE45LaW0JzKsn0V1ZlsUGp2CGu08FvMhVH+aoXo1FzUKN6Iw7Y/8/YOo/n6oIo3NkY1Y7p9zb7IdchqS5+8eNG1xV1CEw8wOpZFslqX/XrG386/tkTECZayLH2tAYYal/p4XlzRDXfMOaKBuGAqFdKfMwkh+3lCkTO1QZb0HGfMLUQHkWSUvoS7eNqj7fTAl1jkZGQNDhuZYSmgmC/5N1IIfi0IBOSzyF89HL1TZRqApVN1QA/Ogf38JNR61KATwEVQR9keGvzWlO9fBn7vCzN6TUvohMp7TkNeXnz0SKVY71DB8DPUCDkKVb7cKmbb1Z7dy2U73Z72/QpbZGOaBvZXIWF7hcssGoHK2RA6N5cUXCXl/R6BKCapQp6KQzApkXN6idEnbeNntjeZkj/BzL0Ceap710BbF4k9AjeTf/X67AF9n1f+7beFl0MW/P42693mcYHvUc5iPwjg5XHEpJebZHxm2epd9M79vgz+3t187DBnpj3u6HkKG5SXUcPwVGYhD/fnbI+/8INSTyqHHIajMVvpzs6NRuSdMnr7bEunkT9CA4U2oh9EFTTH8jMu33u81lRJymOO/DUUGtUvFfRcgRyqvGh6A6stKyuyhPBusBjWOByNDl3uUl6He00gU0hyF9O7dKJR5B2rA+yM9fBg1Rs+jRuVS1CPIYcPJlBW+01221/jno5Ghz+GRBs/XXl5GlyM96oNsSS7nrO8tKPpajxqzXfycfZFRn4V6anl1blsUhvwzcJiZzUspTXG55sVOByLbUo8a3Usp+gNlEVkrT3ueBz/d034KgJnlLSPelk1m0FNKXSq+Hr2GUxYjr+lppIQfQoV5G2UOeY5tn4GUrg9SogNQRdgZKdgnkVD6A/9rWuST09EZKfurlNbyRH/PcbO2yGg2Rz2HVyvSeS7yLOsoUxBB3sUoFAvugBTnUr/X31GBzKIs+FhqZj1TSss8nVeiyn4GatET+ku/J32Gz/vMbK7PXngUKfG9SLHONbPalNKvkNHriIzd+4D7zOwXvlT8RmQwlyCF+QryXr/leXwf8nzeNLPnUkqfRgZgnpfNd11GO7lscgWY4u+GGsJjAcxsiXvt15vZIymlwS6zjsigbYuM1YN+z89SVs7u5On9NjL+n0Pho72zl+IbJN2KDGNeCNKjokzaoQampZfbF9BAUx5EPxdV8r8hw3k58pa7o8r0NOoVZvK0v9NQI3M+JT67NwpBXIL09ut+j5UuuzOQgX0vMkwd/DkdXJbPmtlhKaXDkbF7ARnEDqjS7+/y3xX1ki6keNz9UEVfTPFmazxPeZznJVS+C1Cd+ANASukN4BkzuzSl9JTnpaW/z0Llfb6XzXFettehhvVM1OjnXnJ2EOYjHf81ZdLBfL9+vH8+3/N3rstjV+RZ70KZ/vsLNBMtz4B5DTl4u3i+cs9gWz/3CJfXti73nVA441nUc12Myvo8yr40iymOx0f8WZ9AenGxl+EPUD3+IcWDzuNS05AOd0RO0Y6UnkFbZLTztGFDA9r7o8b6O8i2/Rj1CD6A6scCL8/OlEkdC1l1xbzZWvY+gk1r0N9k1VH8LpTBCENdoONQS3yambVIKfVHyjKZMoLcDLXmdUiwk5F3NRPY3sw6eg8gt6p5VH4xUurjkdCfRZX7FaQYz/n5H0HKmBfCfAIZ27xnCGgw7UXgfDOb4PnLm/18G1XI9yFlm4QUcBsza5tSeosyZelk5NnvhRqZfZFHNwiFC/6PMo8892Kme7pHUXoW/ZDiv9fvMxp5vfWsut9JOz/WYGar7ErnmxEdjRrJnqiyVYaC8pLrTkgZk2nDrkORgXscVZRjkJK/iJRzL5fF9qgRmoMaiDybaYEfn4salanIA1mKKtTfUUO3HyrTcajhvgv1OsZ7/r9J2RYg7yFyNaqEf6aESFq5fP6BDMkuyHC1QPrVEo0HDESVdKcKMXVwOaxAYzdf9esXIodjO9TYz0X6drM/4yXUS3sGhbNu9+9d/DnNUcPaHBmjpZ6PHII8GJWrIb2Z4XnfB3mJ/ZBBzAvm5vs9dkDOziN+bTekk3kLhic9HdegxugOv981qDfbAenaXpSe6AFIRyeZphQOoEz3XOl5/ATqcUIZ9znT5TQBNX5dkOf9R79mMWpAT0AG8m4Ukjkf6f+YinLIIdi8pcD7kKHbEXnqzfz5v0W6eQiqT+0pDV5CDepc/9zJ0/eo3zuv6P4kciZ6o3GBhUj3DkI9nW5+zxy2zc7N7l5OdcAuZta6whFpiZypC5C3Xo/qzhlIX+70Zw7wtF9nZnk23bqxqQdFK4L7h6FK/SyapTINGa1pLpRzKPtELEeG7A3Kkt5Jfl1enfd7VEm/jozqdORdzkUGdhaq1P2QUu+FGoI8p3qx3+tpSmtaR9mjYTnysK5Cip/nqE/z10z/bS5S7pkoVJP34cihh8rPP6eMcq++4tUo+2I8TlnoUl9xj8rXXMpS8V4un6+gSvhVZFCnVeQth01Wv08eXJ2FDPINyEDcgjzcfyLFnoEav3l+3xF+zco13D/PCngL9T4Wo97LYNQFv96PfQ95YXlwq97zn1c8LvCyrEFGPm++9md/zgOent/7a7qXwWzUSOZtCaYgD7fWv49DBvQJL7t5lAHHiynhgk8iIzgPGfSzkeF72u83jrJKcoCnIe9PUkdZRLPM0zYWVeSnUMOcB+xnu0zH+X0WU1Y95kVYY/1Z8yn6MMZl8ggymteiBvQ+fz2EdLfG75f36slzuv9N6UGOQ4Pf/T29eVLASJdL3hZhGWUAOY/l5LqT9TjrdX+Xd947Z5yn7x7K4GvlQGqWWY2flwf9reK+CyueV0dZdZl/b1jt/GnICVgIPOm26C9In5d7Hue7HHPdraPo8AJKQ9IHRRDmoEb6l8CtVla3f9Q/34t0ZDYamB+JGox/UfR5mud5DrJH9ajnmvV/jqdnCbJxLd/RQVH35FbndlRgnZFX9mvkcQ9FFeR9qIX+NfJe70ddvKUoNHAeEshdlIHSnyPP6moze9UXW0xDXuUOFMOQdxRsh1r061B3cgJStMuQ0K9ACp9b9TxNLK9uG42MZRvU3f6O3+9R1MpORV2p8cgYzEJeyDjUG3nJzAaklHI+6zwv2SurRwWc+TJSio6e5iOQYTXkLe6PGr79KKtXt0eKug3yQFv69Q+jhjNPh0yUmR/buMzw875DiZU/gzzF3T29D6AewYtmdjaAz08/HDW6N3kavkaZeracMnf6SjSAdIPn+wB/zo6oMuxH8YyPpEwly4OHC1CDthIp/m2e7gtQOCZXzrzkvy3qQRyLDPZl/nsrpIfjKasa82piowweftvMflSxSO5q01zkZUjX/uzPvgJ5rw+inkZevZunsfZEDsbhSB92owzc5wrd3a9JyMt9DDWu70Gxd5CunYUMyi2oPmzvsj8KNbZ5i4IRXpadKSt1JyLdyaGBypWbk1y+nzTthplcZj9FDlQe99gFGZ7fovryCjKUdyCdetXT3A/paEek30tQPczXX+15mgvcbFov8iU0BlBvZjunlO73sluM9GI3pNMvoEZ5KhrszlNdJ/m5Q1BP6DTU+6hBIbtPumyamdn+KaXrUM/sCOTZ7+/pyyuq3/LvAz2dH/R8DPEyfRjZrebIs/8sZQLDPJf9PMqulLsjT7yll8HjLp8cXv223zPvQ5Rnr32RtbApDfozazjck9IV7oi6zecjwR6SUnoFKd8l/ttzKJM5BLEtJUZYj6bYnVERrz8Jxeg+hBR0GWVwaQoyHoORMPv7NYeihuNW5MX/jLKMfyoy3NsgRemAlPZ0P5ZnIExHleBznv7fogpV789/GVW8D3geLkWzZ1oghfwO6ra2Rgb3QmRwD0be9wmod3MAagQGIa/qQJfPu5HS7USZi9yAKlQebMqj6nv5uQ3IeOyLjMZe/hnk2eVVoXkEvxnqEr+KegIHej7zSsBvotDUTcjAjkMx4LwQpz+qZO9xWWbvJ4d7WqEwwquoV/ADl08erG7l+ejm6d+dEgvNSryUYujbIw/peZfh0ai7n5egt6B4uXtW3GNbym6S7Sm9pmf9WnM5PObl0poy22ZURZoeR47KB1CZrvR7XIA842+hrnaeENCeYjiGunzz/PIc570DwMyOSCnNQF74vWigtRXy7o/1+3RHOrrEy2IfZABPQg3PIGSgv488wDe9LH7vz/2ulw8oXHId0umTUM8tD8bXVOQ5LwiEVfcMx+XwO6Qv2/sr722Sx7BaUWaGTUazUA5xZyHTE+nGj5A+zfbrWqGe3wX+wnwVqI8bzKBMQ/4RKv/RlPDM+yn7uBzn8h+A6t0NKFzaCennmZ7fh1ADP4Oijw0u88qVrwNRXboBleEVlD1ldkQN+O6oURyDVoa28rS/7mMtb5jZQayNzRVy8YbjZaTE81FLNBt5sDkO9xzqGuUudwNSvHqK0ZxB2fxqPOpuLqVsbbsCeZoTUfz8TyjGeoOf8xCqeGeimF6+NocMhlO6Yl/y34dRNuI5Gyn/yorXIkpX7QEv0FuRwkyhdAmzoVjhhbcEtfpvUfbSyK8av+8PPU15NkUOt9R5um5zJchzw7tTNm3KG45lz7+mIh3j/fMzq+Ujx87rKLHhGmC2l+Fc5HXdRNmNLs+Lz3Jc4Gl4HHlIr6Pu5v0uj/5eHrOQAVmEPLIcl81yugYZ418g4zXc3/NGY/e7DPZGleQGtNR6IGU++6+RIfmyp/0tv/9SZDTmUNYBvIx08yRUqQ9DjegCT/ci5D1NRV7fVV7uI1CDdqA/P8s7h0bmIo/9X5SwXJ7WusI/P+m/XetlPgLpeg7f1KMG5D7UMI2mLH6ajvT9DeCoivp2l8snz7rIMlxA2Ub4IRTOGUEJwS2jbIecy9j82rspC4gmULaVneOv/H2C3zfXyfl+7/kVn5/1NH8TGfxlrBqKzAtxnqcsSHvM8zMWGeMzkCGfwqpb5Wa5TaPsjLikIm8NyEnMPcFFnpbbKWtWfuLH/4T0Zq6nfSFlG+Aa1LiNRDajK9rVEdQYPOBlk/NT488d6PKajZy7G/35h/kzfop6YaPRDL2BjbKxm8GIt0Ut4q2oq3mTK9EgF9BwSjwux1CXuRJdjVr82RSlvhh5C/O8UE9HinuTC2WuPzcv0GnuArqXsj/J3ynbos7w++9Mibn382PPeAGMQa113h0yNyy50uYFRKMpsb+JlO7aNM/P8f79UeQRfMHvnRUwe1aDK+Q3FHk7K1F4aRaqfNM9vdlI5Vhlg5/zOvKMJ1AU9OuUQeABnvZZLrur/XlvoMpzKzJ4V/o9xyAjN8flPgh5G3neeh3qIeyLKuAZyIgO9/zlhVMjKAvCxvuz5yAv/Qv+rNc9fy/nskTezxi//kpUgR/xss3jK6+5LGb4dT/xMsx7TdeiCnY8MgLHI4+xv5fpEmSs8zTQS/y37yGHo9aP16Fpid+j7IyZFxbVIsO+HIV2nqcsbPuDP/d6tLUEyInZDXnBNV4u1yLP/1Uv09Eul76e50X+3h040O+zmLLCOi82M38fQ6kPVnGuUYxobnzqUUM6299neN5me/7yIrY7gQsr9PQ61FNYRvkTlFrKuFSNH/8aZfzgTi/H8X7/8/1eVyNdn4d6F/k+lQ3JP5FRHEVxRCai8EaePjwOGeO+SGevQjp6vL++6OnoQ3FeFnma3kSOQB7bySGs45FuzkS6t9JlZH6f3MPJeTwT1YHDkG7d4c85gmKDFnoe89jPZyhjKwM9Xyc2FYN+H+q+Dasw8HkF2jOrvfLg52UVrwtRJc7e9dWuWCPxLSX981iKB5q7M3nAxpBhHIqMw4MurFGo9Zvq986GujuqBD8CHq7IS073WUgZj3EFuMrvMRMp5whU4Qb6+TtQVuq94ucMQcbsp8Dr/tsxyKvNDcETXqDdKHtbd3MFudLzvB8Kl7yMjNWvkJfY19M0Gyn1YNSt35/yj0TPu8z7IsPyHMV7zYNjz/ixhf55FmqYD6SEW45yObyJlC83crnBaECx8H2BhyrkuR+qAOeihmRPFAb4Eho4m4ca7PGoJ5LvnUMReeArz3vP3mXuyudeQ149eweqjOe6XD7ur9xoTvfnz0Dln7cmyF70dMp0suzh/Z7yBxtvUjzZvPDrA/75Ni+jq1Z7zUQOxHCkj7P8GY9Tthn4IqoXX3S5zkKe8mVreA1Gg+LDPI03UrZ/PtzzcpzL9o/IkRnm91vgaeiCyn8/1EiOQ4bmNZdb7s0tQo3TP/zzf9Lhz+uPb6RXUea3oLqzEjW4s122J1Pq3E1IBx5Fupk99ezoLaU4ESs9zSP892f9OUs9vzt5GTzj5+RdPqcCAyrSlVd6j0e6sAj17vIEiX6ehsso895vQrbnUX/Pjd9yihP6ZsX7oZQ/xRjs5x2IQniTKKtP613WD6G6vEtj7e3mWCk6AHmoxyOD0QoJeAFlscRbSMmyh1OPWsm9/NodkZJlL709UoLPm9kTKaW+qDv6dxQ/r0WFfCQqvDfRnOOZSEBf8ufnMEne32QGitE183QuoihwPYpV57jaGE9T3qEvx2Qnokr0a78+L+DIXa68vB0/f6k/9y6kLG2Q8hyDFKgNqsBQVkB2oMR3cwE2ICXtjEIPn/HztkGKfIDfK59vnv+W/l5LWcnYBVXiPZB3OBp5Gq+hBnkfZAT28PzksNgH/BkTkEd7l8tzBWUByraUfW9e8rT0oOxdAlL8lZQ9ctqgMtwLNUIHUxbDjAYOtorVdBXTxV4zxZtf97Rdhxrj9qy6L08li1GlbuWfd/dr85TCvVAIKC9gaYPmGt9smtb5usvmMy7j6choPoMGxGb4tdP9fntQxgkW+v3yfPa8RH+yy3w00tc8tbWz328i0pk2aFHTy37fMWgArwsy4Lugxjnr5VOehl2RruxCmcWSd6PM4cejvHy2pcSSl6Cwx0qkF7dRBuwno/o32+V9PnJC8iBx3tdnIqpDL6Nxjpmer9eQXnSgOGYghwjgONNK1EGU/zf4PMXA51XZl3neT0bx7l8gW/RBKv7fljKr7QrKFsyDUZ1fgRqu71P+VOczqMHuQ+ltfBVt3jUI/rOa/Fik9z/0vPwI1Y+s28NdTs0pe7hMRT2GvOiyE1qtnledvy2bw6C/jAqmHRLYZ9GASB3q0vRCQrsaTbifg4zm/khgX0NGJ3tQHVCrfQhlKfP7UPf4X2gu8GWo9WxL2ZlvH0pcsItfm1evzvLP0/05XfyZudJtT1k1l6c1rkDdqEnIE/kx6gbeRdmkfzDy9heh1rbe03sLMky1ntY7KJsK7WUa6c+rCjsjo/gRz8N5aErUh/x5h1D2NR+GvM/2lIp7LRrEbIkq2QBk4LdDvZ8/+3srM9vRy+xGz/cOaP5zQpViGWWgLPMI2vHwV76V8H7I0/4UMkhfQbHuaZQ/g3gEGTdDetGasmgprxbOIYzRyBAMQXt57JNSGoEGbV9EetOVUuHx9C7xey1HvZYL/Nhg1Ljt4un7OWrgX3TZ1rlscpggDzL3QB5fM1Qp6708OiM92QGVawvUGM9CFXMhahD2ovQsBiGv9YyU0he9jB5DZXkhMhy1SKfy6sm8OG8Sqvy3+PeL/b7/h+pAnu+/DWqUeyND15IyB/rDqDHsiCYB9PB7NEf/7vVuAN8ieBs0oPdRl81hKJyQx15+gYzZgchY55WnO3ua+iDj395lsitqSI7y+7WjrC2ZaGbtUko1yKFrjRq/OaiRm4cmEGzr+c9O31SXf3YG86Kf9kh/zNO03DTIOgDZhm7+ehL1HlsiXT3Lnz3H7/cX5IX/1WXa2dPdjbIffjsv65aUqZRt0cSBnyAjvqPLbjhy+PLsrZVejgegiRVf9vScjWxOa2BRLpf/ymYIuZyCPPMFnqmVLqA8L/M+F/63vYD7+3UDkae7ABn1Jah7fB6aJfAEZdOjWkqs2CoKIg+wXIUq7lR//6Y/fzJSihrKXORn/PrnkOF5BIUWnkLeWt6boj/lr8fu8MKuQ922OhQH7oW85V4V8sgj3jdTtqtdgbrtj/jnjn58kZ9/FjL8zYAxfp+JlDDSMsq88PqK95Mp09nGIM83Lww6nzIIllej5VDFLsiQnw7s5M97FI2+V5bt6S7zGpdp3prh757/76Hu+DLk4f/Mz98RGejt/LXUZXspZRfEpZSwzRBPV57ydgNlH5Z61LBNdPmdhzzspZSwTA69LOH//9erP3leBqFVoQ1Iry72Y4Mo/x+a5ZTns0+lxMpfQYZrsT97JGUsZbp/nu3fb/BXDlHMQA7GCOQBjqDo9ASkUzsiQ9AXNcpzkQ7O8fJehIzAYNQbHetp6O3pnIoarueAQzzPo9FYx++QTn7Sy+e4/Koo6x9TGpgfI4fpRWTEBqPxmdaozn4Q36DNr70ID294XjuhHlyW6W9RXcqLrmYgg3ec5+GXqHc1Aw1EvoQa6YWUePYCT38en8krtb/g38cgp6iLp3eiP/sIyl45NV4eP/Yy/7HLO2/69hQKXy72tOfwz3BkyyajsFgetB+Oei1LvRwXo57ULZQJIff7dfdRwkhDUU/hVErYdniTiKF7YrZzYX4UVfTPI4Wdi7ySGuSVzPXMT6QM8OXBlBy/HIZi4CtRazmDstryWb//m8ir+ZcXxC2olfwHZbbKOWhg8uuUWTTLKMuZJyEjfaenJad3had1AKr08yj/Q5pnBCzyZ4+n7Gm9L1Li8V64T1MqZTY6eRFQ5asGNWB5Pv1Sv9dU5Fn0ocz4+ZMrVGfP62TKvtgzKIui8ij/836vvsibuooSux2NGs2JyLvtj7zEzyAv4nMu5196WbxCWVRzs5f7kV4mK10OlfHn8UgnnvNjj+PePiUOnueb595MNqZ5kOxZiqHo5DJ/A+nbIGQQLkGN0XGose7tMr2AYjQv8+u+5r/dggYwh6EZLzWoIZyH5jvnOHaeITOQMjNo9fLLr7xo5SaX7VDUa8tlM5/y591zkCGb5vefh/Qtz8SZ6PJ5CDXa7f3cfl4mk1BPLZf9JMpgfp799G/UjcfT/w9/jXdZ5EV3x1Bm4OQ05ph2f4pRy/U0l+8HUD39uMt4OKpzg1Hd7Ov5GOn3GuTPnuH3+C1qlL7g1c9UaQAAIABJREFUeamj/OVgLTJ2Y7zMJvvzd/H8tEN1YhYy/n08/9npywv+sqFd4uUxDTVIL1Pq80KXRz+kR59ATsNCNH4yijI5YrnfJ/8VZQ7f/d3TOBl55N1QgzXB36cjO5PHBJagRvAUyjjhoKZk0HdFcasfUf709XovvOHIOFyGDOzhyOPt7xn8qhf2E6hrPQx5+MuRR30rqvSPo4ow2c/JA61L/HseLa9cFbrYj72KjMAAV7j7KdvzLkfGc6gXzDyk3A95gTzhivMb1C28ESnyZ5DxyKPmS5DnlQdM7kD7TLxF2fgrb30wDHVhB1XIcBiK/2flHYwUepYrzRKX6XZ+fvbyain/bp6ngw5GyrsT8ljyoHP2aPNUxTrKdL3lfo+HKTM1pntZrkDeS56xMh8pe55KmhuscahCnUzZe2eiXzu7Io15athvvFzzwGcOg1S+8uKeS/xeIyjb12YjtRAZpQZkpEaicEzeuCwbqUVevgtczuORQap1mfbzYwsocdSPIwdlJNLF36HFY/j9v+5pzyGwPIBbh0It1yM9G02ZNptnA2UnI3tzfSi9z9lIH7KxHunlPMjvnVd3Po886cn+nImoSz8IOT+3+7E8QJx7MLnRbECGb8eKcphK6ZkZ0pGEGoZBKH7fz6+7w+W/lLLVQ57J9opfM9TL+XHUM51dUQZ5Of0SFI/O6R6F9CUPMuYB8lyW+TWdMvU4z/Q5ATkv3ZGjl9emXEzpzU30dD/or+uBWRX1sa+nMdeFZUi38v807Oll0ooyCJ2dlZeQR/67ivRn3ZuFxg9Ge57H+rP+1Rhbuzli6FehVrQBeWnTUIWbiOKNPZBhXEEZoPiw/zYUCbwXiu3t5xs+7YAPTvqx/DdvT6AY1V3++G+hFr4N5f9CD0GKNQLFqJ5CBbGn/94Mea0T/bdeSHlm+z1b+D0Goobodj/2OaQIr/t5rVA3siMqsKGoAHdG3l87pAjH+Plt0N93vSel1A95w/1Ng3s7oEqZVwguQ2MJXVAXdSaq5Dt5OqegcQlzuV6IjE1rl13er2W+f86DZnd4WW1n2vzri6ih3dfPq0OrQ0/0sr0deUrtUG+mJ2VV6l9RyOWbqEezxHxQJ+l/ZnMFzwvHpnta96ZsCHYLCsU9i2KnN6O/XxudUvqH5+9ol38HZAC2pYSitsNn5ZjZ0a47410G3/Rr7nZZTPJzm6MK2NpffdEYzVTkCWcdmU7Zx+NVNC22H9KVDkh3DkLhoNbIY70VhVrORuGPcZ7/JZ7fPVADcA0yxHOQgeuJdOYjlJlYe/vvjyIDsDvqmV2H4tq5ZzEGOUm/MbPfpZTyMnyj7HYKCvWANoG6wFeIDkc6faSZWUrpTLT3yDGozpyM9LmFma30AUq8LrZxmY2irKasQb30bZC+P+9yPwsNbE/0zcq2Q435TpR9XB5EunA0akxuQWHBW1HYBKR7S9G40Bcom6Jd6/IA1dOTvPz+gAxpV1SHOvlzxnlaD0ENyO1+7RVm1j2l9Bc0xrcvsmf4+Z1cXnuh+jjBZZz3xsmD6M29XMYi3XgEef4jvOy6oga0q5fdR1GdzOOBb89m8M6z55G9xRUVr9wdrXVBVMZy84qrGv9tMFLkvL/Bs8gjzBtQ5YU4Day678MfgcmeliVI+fNgah8vsMu8gO+hbJs5Dxn1l1AMvbu/8oKMNykLSOpXe2bu3v4LVfZOFfK4mlLhaz3Pd6AGYrYX4HleyFOQF1OLDNHrlF3bXsP/PJbS/c77nfRFSnwtZR+aOaixy8o6ihJSGYw8mFdQRR2DvKXlFWXVHxnJ2ag7PAhV2OzhrqAsCsvhlXpkbH/jZfN5T3veA2aen/cF1Mj3RL2tGZR/S88DyXle7kzkSd5A2XztGOB7Fd3tvDVpL2S4c6/li5RNzrKezfeye6Uiz0f6+Wcjb2s3SohsiKfnJ/m1mr7PoSxWyTNHXqL8yfmRlL+Gy/pfjwzx4ciZGYMMyzRKmGShy+V/UIMziaKDb3o+skc/weU5huJh5/Gg5ciI7+HHT/e8XY96Vf0qZHsXGpAegfQvG6G5lJ6feX5up+hrnrY40K+rrZDPYGSwxyGdu5mydiPXo0WUWWkLkZ6ORTrYCzViNwH7+j3zuNB0v+ehlKmaOSKwh5dnnoaYeyB5UdwC/y0vgPs+pUeSF7pVvhqQEW6FGqS/ebr/7mV5sudnOHI0OlHmvy90mR2P6uxC1AiNpvyZeg7V3Igcg2ZNxUP/JxqsmIeEnWc8pIrTtkXK9jxwhpkN8WvfhVrgYykxqoFoNLgzUro8nayb6c+Ff4Jazt2Q938zapUPQpU5T91q4emZjRR7V1ShYNWVaqBWtQUqxLxQKHuWHZHRnFhx/pnI2D2DpitdaWZ3eJ4Gm9nBvhvlsy6PP7kM2vn1eZpWnrb2XeSZ3G5lOfNo5LU/iSriTkhhb0INz4nI8O5FmS5pyBAfRNmR8QlUib9XUR6dKUu7r0Ie/mi/rg2qjJ28PH7BmnmassVAA2VaZ3PK1Ls8O2QFZfl0a9RYLUNe0Cuo/I3y12WP+PcjkLf1KxQ/PTWltB/yaAYiD645ZUn2wfgiDdTY5WmSN/lzH0aDhP38+GDk5d1rZt90uW+PGulnKX+C3A1flo9in0uRNz/KvdWJLt+rKbMwtkGV9jXkhS/ze/0G6WcXZGRqPX0X+zWHe1qvRwP8B6L461koZHmql1F2Tr7sZZSnBV4O7GZm81NKs4ATzGxEKn9WfSHS798jB2IaZXsLUM8gD/xe7mVRuQVDnZ9X7+kc7PLs4Wn6PmqM9kEeaDPUeJ1C+b/PHOpp55+n+j0PptR3KBMgdqZMNW5AupqnG27r6W3v8vw9Za/0s5BtuhvZghM8X3kPpDxDpidqMK9DtmR3yv+z5q0iFiCbcx5l24O2lFj7cMpWIF/3+4/3tOcxlhZ+zVIz2yGl1BYtrjuYRrIp93K53hO6KzIEL6JWcm9kKH5G2XRrF8re4SPM7L2r3asdaqEW+/fjV3vcr/x9bsWx41ElWYgKbgUy6Hm/4RasusH9EtP/UB5N2QfjA0jpdkaDfz9HCt8cdaV/CnzfzDp4ul5D0/by1qxQpjb91vP7XVSxv43CEq/gK1z93L5+/gPIK/k5aqnPRZXyOTP7R0op3yNvfpW9YSjTtI5FhvVBZDhOQUayPTLsS1j1H+sz1yKj8ypabXqpy3AxpWHLzF39YtN0vGxEa/1wbsBbUoz8NMoK3ddRHPxOMzswpdTV8/8S0pt6VDF+jDzIB1APK+tTaxQuMk//dKRbXZFX9ytkGHZx+d9akeSvIGPwe8/rcj++EBmiRchT74kqXDZgKylb3/ZAlXpbZLhOQUb5WtQDXOb52cvvv4gy17gzZV/tyoEzKIZyKWXf77x2oRPlz1+uRGGITshQtK24Hsr4w1B/Vp49BXK2ZvpzswOQ1yXsjPbmnwhaV2La138S2jxrr8p9RlJKp6MB9lZmtqdvHz0YeaDvR7OrLnK55BlYeV3CEyhMWo8atovRGMgkT+f/ol7Aq57HrFO7oYb9/1BZP+b3SX7fTqjxf5jyr0KfA/5o2pxrFGpg8tTk4ZTpw+f7td/28hrlsn2vl2GeibU3ZbO1aZR9+Wu93Ooo/1WcUAPSGendN1D9fNB/rzP/T4dG7+GS2YShll7/5XUp6jrWocqUV1E+jhT1+6gSPAX8wH/7uBdirgyL0dxMvJDy6xo0GLEIFXzutg7Edz5bQ1r3RhU87/swhbKF79N+/Z+Q8TsEKVsOCT3n349CLfokNOAxD82k+Lun+3nURX+BMgCYu5j1SAkf9/Tk7WkvRRUtr5bLK2DzFKtsVKzic+XgZn6vpWwd/CzysA8A/rGaHK5HseDxlKmPeY+OB5H32tLTX+PyGU/ZnjQPFs7Bu+x+32OQ4eqCPP4ZlH+QyoOvF6JK9pyncTYyPnNdBn9BBmYZ8qrmIgOW/1tzsF87GBnfQZT/KR3q5wxCjeIrSEce93Kq7EZng5lnWTV4ueUZC5dStj541WXwDWC8P2MKis1OoBjtN1CD/m2/x98o+8PkwbschnoReb0ve3ktREbvLEoPtYXL7RXkdIylbMU71O+70F+L/ffFKNzTDxmU6yh6/meX/2mevlMooYIf+H2fq5BhjofvhnoM012WT3uen6PU6bvR2FDWsTwwORU14s9TGv5aSsg0e+mL0PjWn1yWr3i6FqKex3s9Tf1y+vx9gMt9OmWmS55iPA81FHnwOs+qyqGVPHCdtznIs7bGVdxvmMsqD/znCRfjkX7mhYuPI5uUp7n+ADkkEynbYXwP6fccL8c5/ry9gNfWye5uKoNeUYDtgOYV33ui1nkwqrT7ueCboYozgxKfnI7HKCl/GD2QsudCnjWQPYo7vNDz4GGOWeXVb3UV185w5fiKC/cPKBZ5GG4oKHO+B1Fiby+iypmNZQ0lrp9XOy5F/9uZ89zcFaC9f8+DmR/z81+m7LudNxmaSDE0LSmK2twVIc9RPh95Lm+gruDpft5TqHLXupJMpkzDMlTpFqGexj9Rg/ZvT/tgv/dcyrS+PEZR6+85dj4MNQRXUfalH4y69zugxi7H1vNrBSX2O5cyU2KQpzlP33rMj3+MsjdGvsdtlFWp21H+2Hu45y0b3I4UI7LA5X2Hv5Z53t/y10v+7BxvrtxTZyT+x+DIG17uz3jD85kNyijkWfb2+/8D6VN+XYN6XXchIzUfzZY53u+ZdfZwl2Me4B1OmebXHxmPPf2Zw/x4racpy/M6ylYZeSrgLMqmWLe6LP+M9HcKxYl5xsttrpfTCtS7exjp5xxkrGv8GSM93bOQLmR93dHzlccVcqOZHY0J/lsegH0JORX3UP7dJ88/v6hCPiejMZnZSNdfQTo3ytO43Mt7jt/3UbxOIhs0mjJbZwjywrtTtnzIY011XobdkA6OQLZplMvncso6gjzW8U2Xxwqge4UNyY7F3yl7oi9E9jDr9EKXx92ovE9oagY9rxL7GWqR7/XMtvh/7Z13uF1F1f8/iwRCCUgvKgRFEaVHERAEAoIFbIAUURBF1FcRxPIq/gQEfUVsKBaKoGBB6QSk9yYtoQXpSei9JSTUZP3++K7J7LPvPueec8u5N9f9fZ79nLPb7Nl7ZtasWTUaYiwiCCehDnhtHBsbH3pMlHMNEbO7VP4opJA5DC17U5CdWYXtbtSBnyFHA3w5Gjv9Ho84p5XQQJpM7pRFc75rotEfiw8+rrRdRk58OzH2Z8SxB6IRzyM7ajyKBuh55Alidjx3AnnWn1qYDG5DA+B+JK65E3XiH8f77IAcE85A3Nke8axH4nmPk7nPF8jONHvEu+2GuOrJRJb7wrf+T+n774AGS7LrTXa0z8TzziITquMRIUucV1ppJcXny/H+H0WTWyLUo9AASwrn1QvPHx9t8kLc/yzZPvi+9F3i2mMIZVnspwl7cxoVVtfEt3wQ9ceH4rnJrnvV+OY/iPIXJTtgzSQTxBdpjFV0KRqoYxARP4BGE8H0fxaZa/wlYna+iPrn+eQEGRsh7vV/kSXOiYjpeZjM7Z4U7/0KIjTPRRtfgAhvel6aWB9HE/P+iEilSeweNE4mogkk+ZWk+EZp0jyOHKvo7Whsv4CI7z5Rhy/F7w+QOPaDiOA9F/U4IerwTdRvX0EiUeLbbR/f4sYo40Uak1uk77g+WgnuH887AfXH4vZ3tKJOIT6SE9g0MjO4ueeVpse1H0N9NY2lsxGN+TWZKE8nM6IzyP40yZFyBvBElP0SstNfAfXd7VBGto7obTeUokkJmD7SbKSwuJcsA3PEPayBOkqKaTAKzfi/Q8qp9RAXeVoq391PD9l1Mlm6AolsppHtd9dHnGySRe2PBtA30OA/Ma7bDS3hjBwTPVmxpDgoaXn4ZLxDsnoZhwbd+1FjrU5OezcXhdR8q5n9Hi1vD0AEdO3SJ5uNJq5Z8bwXyHLm+9Ay9xHU8GMRd/VJRFg2REqyB9DAOxjN+ksgXcab0IBbJspd0d13NrMPA59w9y+ZWZJFrk2Od5ImtDnAL939e2a2JhpMO5K9OdckuzsvhGTa3wP2dvc1AMxslrsn5e88RMzrYmd8ByJkSecBWb78FOK2kqJyNFrGLoUUjHsgb8UJSCme4lePRcR4OuKqF42y/oMmjudRG14az/scOanGnML/BaIeF8Z3n42Wx5ujPjoBLaHfgYjU7u5+ftT1atS2zyMG5z2IOCyAJpL1yI4xC8VzLov6vJ9sSbUQ0gc8iGS0S6G+uAgiei+REzkT9/0V9Zt93f2BiBN+D+o3x6HxsSoidO+O+q9OTk6S3h+y7qaoT/l41OFc1FcNTRwTkCKwiOPJIQ7GoJXcLvFuf0Jtti8aK7cjIrcWmsCuQfl3TymViZk5GnefcfdHSucejXJA8vs3obGyDppIliGLY5LJ6fdQP38F0YvjkEhqY9SOn0ATxVNRzizUlklW/jI5F/FfEdF+IfYT4zMBTZ7TkWL2Bm8jf2glusChX4O4qMTBbos6cpmzXRZxQxMK926BBtvPEVdwAWrsS2O7BBGUG8lOLscjYn0vOcRscs9eAHXYtFSeTuPy/7HYksfns2T37n+ggfZp1ODJ4mVu1O3puPYKNMD3QgN1OhrsRSehl5FVymaos6T6voSWkuUVywTEER6NJoItyeFnPxfP2AMNmmShk7ikJCZJ3EtRbj+TLIK6Gykan6fRkecFNOiLy+gTyd609xTeaypwQmF/ZvxeEO2+fpS/A6GQj/NnI5HTRdGmDyLLjm/Fcw8nh1u+imyedx9aaj+G+lRy9NkKLfU3IEe/TE5M26FV48fi+J/I5rHHxLdeMuqVomDeXqjrpGif5GB1Edmc9odkWfZGaDW1RqntTyRbtOyP+sy3C9928/iOmyNCtiN59XAv6reroHGVxs4URFS+Gu/2HdRfPojGw08Rwd8b9c+kz7gZEexZaNIoimT+jYj/FuRom9ej8fJw4f0+j/rHWlHGJGSpVqQBv47vcgdZhJSci+aQ9UF3RJkpfO3BUe+fxLHUb9P2UuH/nLgn6XBeibpsD2wf9Si2w5XA4vH/YbIZ9avkKJuPoz5yDxFhMa4fF9/kb6jvzkIEfVck9tkstmmF/v0CWYn6rbh+arTbDfGNkg7qu4U2WrojetsFgp4G1VVI/nwfIj6XIxvM9VGHTB5hHyrdf2tFmX8qbMfGh0lxJZJn3d2Ic70HDZgkA3+NbNueVgxFL7Kk9HwCEZZEYP4Zz1uosETaOzrSloh7fBIN2JdifzwaGA/He6+KFLdz0CQ1jZxLcQdEmE5F4qgDESGbEOXcS47FMj7qsDtZbHRvdLJXyMTxIjRIxkU5ybtwdtRj1di+T07skNyXD0YTWlpST41vMo6soE2u7mnZnsQtSR7/MiIg15MHe3IPf40scplFJlqbIC71DyjA1/Lx/K+gzr9HvPc3kezxRjQQ0gTzTDz7XsStL4gG5VpEXkayN+OU+D2RnLZuetTrODSZJiei29DAexGtfu6O3wfRwE46nAuA50v9tUhIDkIKu9/F/4fj92ZkYbFftNNv4nunuOm7ku3NJ8bveWhcFYn0JERUXiYr16YAv4//08ky8DTRJy/Wm6KdtyRCzxa+1ylkT+OXyUzQrcDXCu+XDAwuJDNej9I4Zv8U5SxDnsgmxDe+P9pwbKHM+4hxVzh2CpKxv4bG+AyyIj+J9JJC+IS4Z3Lh/rvJ4tyL49mzo4xE1JMu5dZo59ejbg8ADxbKWoqsJzqX7KFc9KlJYrXESM0li+KOQpP7M4Utfd+pndDbQRe5AETW63fE7t2IyB2ARCvHAB925QO9CC3blyArA5MoJdl2OuJUQQP/TBrNl7ZABGrneOasKG8iWtKtjz7opxDhOo+cE/Qj5MwuP3dl7l4WuNDlsfkdRHg/hWIsLGZmMxFRvASJkhZAjZcCeI1G3MyCNJpJJs34wkhpPMrM7kVWG+vF0vzVwrttiLivhEMQgXsjudP8ChHEm9AEtxCa7X+MBvvWiFAcgYjVZlHWlUhOuJ6ZPYscsdY1s7ScfgUtG5PoZTaNqdZmohXHlqhT/xMN7NXRMvMsd7+BNmBmX0CT2eKoTT6IJv9RiMs38rL/02gltDsalKmNkzfvlYhrPsBlD/4xJKJaMt5pYfIqZUVEzOYgOfUOiLu7E1njfD7eZzripkBEdgnCpNPdF453mOzV4XynkEPHJg/ppeJYMjdcCIkF1os6pTgvCyKCsDrqf2eQ7eiTn8QsRGxWjG0OMl09FcUXWcvMjgVOdYWdXhSJcXaI5+yOmIVnI23aB5Do4edI7PdX1IfGIqKe4pgk3IlCddyALFDmiWPcfVLhOszsGdQ3v4aChc0NcUky73upcPkiKFLi4oX7k3f4o/HOK8W3WwaNwyMQDfhRtM/x5NC4hsQ8o9Gk8LFoj8OQqOkh1J9mxj3LuvuaMR5mkXMNz07ViW+yEmGm6+7PRj2XRuLWOeE7shrZLj5ZWP0hvutF+XP5IfQFXeDQJ6FGXqpwrMF6oDTTPYnkmZPRwNklzu0RL3xhYbsPEbm0JY5nbnzse9AMeD6aQJ4ki2SORzK0e+OjTkJLoZsQIXiNipUD6uR3RaMcTea+Xyd7Tq6LFKt/IyfGTZxmMlNLoo605EyOTE/Gc59Bk8uHENG6HhGs35AVozugwfwhZBGSAhgls6tk0ZK4qocQt7VORTslbjTV6VEyx/0qmVOcXLpv+bj3MiTHTiKep+J7ngn8unC9kS1zNkKT+2XklVoKHjUtrk0xQbaOd7gDiRCOQJPof4r1QpPUXDQppMBZ6dytsb1Otnp6iWw1tDlZAdYj5Rc5ENjZZO4tuXjPpVHJW1T6vhb3PRfveTTiXK+J7b5ov+eQDN/Q6mwKWimtjSblXyEFaLLk2Q4xJH9GisaTEZMyM/pGCkXxMbJyM52fUdgSQ5BEGrPIopUbUD8+mMxdJyuQ+wvbDZQUmIXv9mbyBPQk0oGlMfswGk+TUX/9N7BC6f7LEfG7oPDdn4tzV6LV13pko4ep8Zy3xzVbkJXOtxW2ZNHyKgopQdRjo2ij6fGt9qnoC+fE7zSypc702H+mcN2nCv/HoTEyJbZxhNFB1Gf7im0rgna0RW+7QNDfFp3xPiSH/iCNS58ygSjvr1v4v0dhm05egqcJYCIaIE5jBMM50dFei8ZL9rqp4ZOr/tzoFClcQXIB/zKNy+ZxqPNujWRrv0BE9z/RYD8gD4ppRNq2wv3fJ9vG3owmkW3QpOPxLk8gjmgmeWLZAXEUKWxsCm60V9T7KTSppJCq+6AJ4FzESS6BuNtv0nNZfCPiGjZEhOG8eO5P4x1WRAT/9ibtvGU8LwVJWwlNPMtREJshbiRZ5twUnfY+RMw2inZZI97/ZHLwr5Pj/X5bYBSuQ7L2c8h6hInx/JMRgbiDTNBvIutPPkw2u5uO+kiKiJcCVE0tbBOjLS4mi4d2jmf8DvXFlnLPaKsLkaIvmfkdj0R86yAi/uX4drcibvwGsnw7ZcSai4jbOahPfzu+3S8QYbkZcd6TEWf/LeTtSjz/f8ny9+8gRukt0d5vQQzCK8AScc9dRChdxDTNJqf1exxN2segfnJ1lJnaf+mo/56IIx6N9D7Jge4DSIF8KlLMV323zSu2wxEDuBlZ1HopWZyRJqjbEbG8DnHg4wrbKkgvNhtJBg5CTMM1iOt/gHajHOYYMEeTc+X+hkZadzjqWyk65RTEUE5DY/1faOJKAcEaxIft1KMrIheYF5BpOySbXJasfU8ihdfjfxJ/JGyFOlN5yfYYUlKMN7NkzfJnxNEthAjHXnH5se6+etQhWZiAiN+9qHGnI4uDw9BSelvUOGegAbC0h/dWPP8Sd9+quLwOq4H1yQTwfnI8lRnuvmjh/o1Qp78QOTisZ2aro4H6eXIcja/HNU+5+8Fx78toALwc5/6KBm8K6nMYEkf8BYlkPowm1q8iYr40Wu5OotFKYTxK4XWvmS2P4uBsgwbtJ1EH28LdT6QJIqTBG8lBi0Bu+WPifBI/3IwUo+vFd1vIFZgsEbc1EGe2GzkRyDZkZ54DEXF4NzJz/DmSq16KRCzjw539WCQOWcbMLkZ976r4fRLZH5+PBvN5iBh+Bw2488geiRfEtd9CxHjx+KbJPX0WIiYroL59ScXn2RpNNr+Kcn6OTNr2JPsdrIYmriXJyr29UBt+GrXdHDQBQw5Xkayikm/AWxHBS9Y4+7r7MyFCPIgcTuEaJL57AVjF3e+LdjoTTcZPI8I33t09xAZviu8yATEvX0YM0btQPyxjXvtH2W9CRD6NTzxCWrSDGMc7uvvJsb8HohvroIlsNdTGE8niuXehMXkmhfABLiu52WilexUS0yYv7IVRP/hl4fpfxjPnidQC2xX+fwWNL4D9vOD1ifrsbeSMZucg+vZsBBfc3d2fiOtXQPqdXYEr3X2tXj/OYHPoMWGsgzrx3WgG2g91qtuRzOtp1BG+jWbc4kz8RcQhbRxlGVIizCRzEMlO+QSyNcT1hec/SyiFYv8GRHSfRFYEye72YXLSgUeRqOgK8lI9cRyrxvkUq+RFsmfhVmiSeJnGBAEvtfg+PVYsaFCOJifCbSgLyQD3R1zE62jQrk+27U+c5SXxfS+Pd1mPsN6IsiYWthlkxV9ahs8lWyi0tfSj2s68+H8UeVW1XLTZHcAmcf/28cxfxnf/XbzTm8mJKp4ni4PSKmhq6fnpea8W9l+L7/oFNGGdhYjjC8CbCv3pbnJ/Sh6Jq5OTdNyMzNgeaMJN/hrpEj4a29+jvg+hvn8fmoifi3c5KNrrPdHeG6DxMY3sVfje6Bc7lb512tL7Jg/HGYXrVoz3+lsH43YjNJEvFvsbk/0YZpCd+J6mwnihUM4lSMw2ChHLp8gJS16j4PDXoh43Ftp7DjlP7NZolfM46sOfRpPs8mgiOjm2P1VsKbnO7m+6AAAgAElEQVSJk1fwaWWfRKPJU/gBJN75EJrML4vt33HfTag/v0ZB5ETj2L6FPL5HIcbnzqjnKvT08TCySHF4xENHXOAl8aHH0EhoTy+83IcoDaDShHB/XJOWI8mrMMnDkiw0mSA9S2jfyc4GxYiMySzpErRsv4Rsrpc82pLpXhLhTCNr9meQE8emxk1R9F4rPLMYrS0RlRmlb1QmQDPIcvC58a5pNfU2cnLiYwvPeZUcGbEom/86IppPEllkkDz0f9AK4el4nwPRRHQfIkAzyKEYUoS9aYgzqmrnLQvEuMdWuK4YSTINmCTiSNYWifCeShaHvIQI3y/Q5HQb4obPQpxlJ33yxHjnHyH5azKVWxpx7h8C7o5rx5A9ElNbfAMN8n2IGNlIoXgWWcdxU8VzZyFO7g1kM79ZhJkfmpQXJbJ2xbE3AG8o7P8TrRaOjG0yWkVOJZvnvU7YpJcJC6Es7+NY3hxN+I/TGG6iaCkzE/XdY+Ket6MVyMT4hq/H/+nAO9t87k2o39+MaMWeiJB+C60wDkV99S6yziv5vcylwCyUyt0eiXxWQ2P5oegH9yB6MAut9LdBoqjd0Zi7Per0K2SptzYaM3eTzStfJJtUJuYmhTP4Oo1JxxMdS+LDPcjiwxRR9rJ2vlU3HIve6u5TC/uHoUZJoV4BcPfJcX4MWmL8DGmY/x6XvIsc9yEZ6ydNeNI6fwUNxg8iscPx7v5I2ZnFzB5BnMfRKLfjRmY2xQtLGjPbz92PiP/7uPuRpfe6xt03MbMd3P00M9sfLYt/H5dciAjOH9Ckdmp6xw6+3TyxjLvPimOrR73fQxZXzUWc+VnxLU8IK4VtkILGS6KhaaVHLUKOezIj3uMGRCTej2SsKVD/xV4RLMjMfujuB5nZnypexd3984Vr10ArGQMucfc7zexGd9+gcM3ViGj+ChG/J9HAPDN+fx5lXIqWyXeSUwm6u3+89B0PQxZAr5CjWvaoJ1lc8hMkstgVrcgmxndZnWwhcUl8n48i/dA+aAX0TsTRb5v6vpm9A3HXR5Nj1MxFHOY4xEXuE+/yAJq0VkN6j/MLdRyFJqNkBZHMa/cgZ84pvl+aLO93WYUkb9KJ5IibeIgS2oGZjXM5Jq2KVsm3Fc79E/X33V1WNQ0RAwvRVy9w9016ll75vBQQ7DZ3XyeOvUIW662EVjpLI8bv7Hj+SmY2Aa0O1vdGy6MvIsX6464AY29HxPpOcsTIMWgiWZ3sEXwxavMJ6Luv7LKAmYT0SJejCXPNCpqyPJrwd0T99GIkknkyzhvSk6Xvcg1wmndApLtB0FegMbzp9YjreKxwmaPBsi2NA+h4xFGU5e0e/93lfZnkTDcjbnJrNMCWQlzd/5BljSDZ8meRPH+JaNBbvBCmMqLEfc7dLzWz7Qv3bhi/a6IBcQ6SPe+BOK5bUcUOiXKWQwR5fQYAhYljb3efFsfeiia+ZdFMfyg5LRpkT7955oYeESJLZX8CyaFHIU5nUbRq2goRmY+ipXXZu7WT+h8HHOnutxSOHQzs5u5vLxyb5O7vDg/S1VFHPwXYyt2vjfZ5AfWVe1F73IEG3i5eiNhpSgpcZSa7I4oVtHZct0c85+1oxXM2UiZOifN3IsZiUaQAvw0N4mloSfzZuO4WJEM9Bk2Khibgm1A7fTieUTblXK3wf0mywnbede7+i8J7LUtM2KVvnPQUmyAi9b8oOcN4U3jpHnD3H1YdL8PMNkOEsEw4XnD3LQvE92by2N0VOcqBiPkS5Mk3mYoeF/U4veKZVyJO+o+oXz4OfN3dV43zxb7ySjx/NlnJfxrZrDfhO+S0kn+JY98me+WCVkIJhyOu+zdI1n6Ly9TyJEQH3ofozKnARe6+a3ECKr3PZcDW7v56+Vx/Mbr3S/qNPyN51fdjfxPU+SekC4Ig/xstm36YBlDgLW084zOI81qb7Er/RbLt7otoID2GOtiKSC67DHBNDOzHSmUaWmJeighZwqbxmxRKP4lnLIyCY11bLMTdnzLZ4Q8UPos6w9OFZ0w1ZYgBDZxLkc7huuCGTypPKGa2FiJOyYZ5MyTHuw115BRM6iNomf8Q0sKf11sFzWxbRGBTneZNcGj19B4z+4Vn5erHgJvM7IvufmwceyWUX2mZuiBqo9+a2fFIjLQ6UpJ+Adkz74II8nGlKo129wujboe4e7LnT1ZFmNlpUbcrkELWESf7bTFO82zxZ7j74ib/g08ieep/4lsWn3d+cH1rxLG/ufvm8azjkHv3nma2srs/VPp+K6KV0IaFYxsBhwWRTsG93gSMNrPTkagsfWeL/9eYQjmcXKjH6e5+O33Ht9F4AjEJayHCnJTAr5rZIuj73YRk2TNRGx+EvvGMuPYJcpjfj8Y9PQg66vMLoDb+BlmXkpD6yr3Au8xsV9Ref0P95vX4Xbx4D5ogto/jKZzD3ekCdz8h/TezJdHY3xXpqq6IiWZPJBn4AJIqvAr8yBQ+/Nq49zvufrjlkOLLAw/GSnkOWnWCJBI9Jsr4jt8sSjqaoh25TH82Qh5Io9nfVDRDHhhbsssu28c2VZS0+ez3IuKdbKXvJGdKeT4+5mOIk1i1dO+DvZSdFHhT4ncyFXK6dG4Av+eUJsdvKdTlztK5m0v7ByFO5In4Hkkp9cmKcvdDy9hfVp2vuP4oJKNOyr/bUWKOed8Cccpno0l1NFpZrRBtdDmSk/8VcUKT0HL6dKQcG4sIlNNoZrYPGkwnIBnodWiApVVFj7ZAq6kkW74YcffHRH94OMq8Ejgqrrks6nJB9KVno/+UdRwpLOv7yEm1pyMxQEM9yPk/FyHLUl9CnOM9ZA/mZNr6qajDv9FE+zNkrZWCWS1A+G4UnjWabHZ4FeL4/4eCbL4f/XFlxAE/gQjeNmhSfIpCxEAax3+aCOZ57/byjM8SbvqFY6cgGfrKaAW5KWLs/hJ9ZRNyULp3UwgyF/cfjib0u9CKfl4Qtzi/HBLrpbDAaRtLzuU6p3D9osg8+8bYfkTWWaUIqEk2fnppOyi2Q5E/weJoFbM3MhveGVmf9doe3RC5XI64potcS77TUUd/Dc2QOyJu5QuD8OzJwAdcJkGboY93JuJExyBRSVGcU/y/iLuPjnLuRwTiKuAqd7+jsKw9BimnkghhnlyyUNbC7j4gXLqVvBBL70rUqdJTsbB/O3J+uhmtaGYjuWviepL56BxX0o/b3X1tM9sUmYre36J+t7kSVKTfscB57v7+OH+zZzOuH6LB+EaPYEQh80xyxzvc/dImz0krpMlIbv0cWrksGuffiPpWGvQz6enhtxgw190XNCU52BsN9E3RknqtWF1d5dKzbF6qxrvQKu9X3qjjGIs4ydVQv5iDTEZfI3sqpnosFuenoGBUD6KV0BgkW085RN+OfBnWCdHPHA/5bPGbxv5N7v6eJk2U6rgnmhxuAP7ssYJpBybvx4QF0KSbQhmvhHQuD6K2ud7dny6Mly3QpDuK7GF5ETmU7E3uflbpec+jiWFXd78zjhVl6CCG4Bl3X7l079pI5DuWntzv2uTEHveR8wGDJuGfoP7zZeRfsgzqZ9eiSf8qtDLxeO95q3xvI7hWjA3c/cXY75HMwnJww/YSXfR3hm5jdh1PDm96DerQ65A5j7FowAzGs4uc2e+Ag+P/7TQGldqhuF9Rzhgkkvh+NGbKgVgMRfs0OSPMbR3Ws7wyadhK15ZNAl8mp6xzcryIHp6KhTJuiN9JiBMwGvM+ngOsXdi/L357JMWoeJcUF/w6ZJY1Jt0fx39Yuv5ApBhN+xMrtnMQ5zoN6VWORxz1P9BK4GwUm2Ya4tKOjnaaiFaCGzepa9nBKy25303mspciLF46bNM7IQcga3HdZHLGpnvQimIyjYG35v0W7jkmtRE9nfEOI09klc5OiKDugLj7OxGnun0b9T2SnDxjBjmu96ZxfhyS2d8cZR6IRGNpRTIJKX6PQaufQxDxvxyJZicCR5SeeTOiI3cQnpdxrNhHnivtTyzcf3u0ado2IVumfbOwnRn1ncd9k+nUjlSYDiIivwxZVLcfcEjpmnJ/vozsDDU7vsmaaNW1E5okF4j/KYb7Lb21jbsPasaiYnCf0YhDuRQRwKVpMuArylm61dZLHaYgeSY0erslrvRnaFl4Psqz2Kyc0cgG97vk+NizkRgibYcimfs4Ssu7Dr7ZoWgpnJZcXyl3jtL116Il2U5ocO4A7NDGc36PlG5fJmffmRrPTwNnfGyHIBFDCghW6SlaKPsHUXaKD/JYRQdPAdCmR+cuBnd6ip4+CZchru4RtCS9EIl2lkby1C9GGyYPvLsQB7pqG9+ibGu9ZzxnYjxzGtnctby1sp0+BVipjeffHNsXycR1dokYrUJjBh0v/Caz2nmMBI3Jo9OWbPSTT8g9iMlJ7fpGSjb1TeqbxAa7I3HS+1pcO6tQz8RkFO3lR8V1t6Ex9m+qY+6nyWBZxM3/PN53FmKkvh197bsUfFgK9/egL9HHbijsL44mpmloTKUwDylS6HjEzf8gjq8CvLdw/1loYjqOgqdokz49BRH+VNct0Fh+K2JOno57zkYivEWICbPX9ukL4WmTOE0mCG68xKNokF8eL990wJfKmYaIzTQyJ/xM/J9WcX3xo6R4wxfRU855Z3SsR4G39fIus5Gd6s7kDPLj4ndzCvI9RIg37OM3q4os2cpho61Zu5dnrooG+QqIa3iOLNd9nryyurTZ4GhR9hhCTou4tIMQsb2akENW3FPlk3Cn54F/DlJwvVzoF+l3OhKbXIcmw78hkcJfOvwmK6LY3h8nmJI+fNfLyPL2Kq5x/9h+gOT130AD/jYkt90RTbZzaLSnHtdqa1GfleP3CiSTLtqobxe/Td3L41t8Nf4viLjYWWiM/ZEcyXI0WmX8DY3vfwAfL5RzfFz/ICKUx8axN5Bt/8s6n38V/i+AmAFHK4Hp0Veei766ZunevZCuITGBe0WbJAe189Dk9lL0o6XSN6HRX+ApJApLfXEpJCtPjM+BqH//mWxGukeTPv1ERT0rxzmwQUf9rr8EoUUHqBR3xH4KyTpvwLdR3rHARwr7HwaOrrjuuuiwKW7EQdFgixWuOQUpmd6CtO53pc7aojP/LAbDRUgbvQ+ybkgREddFnO8C9FEJimbp3chJFHZDNrzNrv9R8ZsMULtNIJvXbVk1OJp1PArEj56ONnPj+72tcE3L0KBkp57XkIVDCsS0LE24STShfhiJHa4hPD47/AZvojGu9Wad3B9lbF61Fc4fVNgejd9fR19MWZ62pjF71XFIVr0fkul+iViBlp69KBJBFZ17HqJixYLCTNzfxvtcQ54U/ogUwh9HlkWPokmoh8dmkzbdH4kZZiFG6URETPdCOoWfNanDWHIax8RBp/C7K5MjmF6CFOtXIK5/RfLE/yCaQJ9HYrtH0Gpvk6pvWXj25OLz4v+tNGakugjRqXf00qfTux9IDql9RuGad6HV8n1UOKi1bKeBJAalipfFHXuTRTBTKA34NsrrsdRvcqyH/JrS7BcDophg4Q0ULDFa1GENwt0bEaiVaVweT2lWhza/2arxTdKS68yqQVi4PgUiSiKB/loFfSd+V0CE8PIYGL+Id/43TThWmq/IDiUCL5Fl3sciZei0Fp1+e3KasTOjk29GDqj2SJN7k8fdp2khRmvxDX6KuL5/keNaT+y0nA6fWSQSS8e3vJtso71A6seI2/wrIuYNkSwLZfwT6Q5Sf1wUWSrdQ0QgjOPfQ6KLXr8Tjd6rtxJB0mL/uuh7e1GRhL1UTrIOG4MUiWkl9MYW96yFONsHEEGeFPuLxO/2aEJ5EU0q/w8xXFv2Upe55EQbRT1Wsrg7AMn6jyfnok2EPYWsmLdyiePXk8Nu7Fg4XuzTk9FYup0cVXadaI/b4v2epg2RYY93GsROWlY4TY7O+rZ4kYYB30Z5F9AzKcMFpYGwNBqQ341rxkXH/kk/3yVFUrsgnrsZWbH4PHLlXTA6+r7AmYP1XQdzo9GkbzLiCveJranSOK7vdUUW/4tZn+a5VhfOnxjP/hGyUGr2vEtosRwFFu3jN5iX+KCf37Iq/kgzefsnSvs3I+7xzWjVVsxeVcyeNJqK1SAl7jW1D5pE70MEMsXEb0mAC/cXFduTgdUK+w9U1aNZOfF+xfg+LZkQqjOZ3UF2878dcdpbtChjwRinp8Z2XNT7hOhz02gkwGX91BHRng8j88S7kZXQNUi8ksywH0PWMasQyv5Sn16rom7/jvf5ATnk77Q+9bv+dtw2OvUnYxCneMyrIw6icsC3KGvp6NRpcjiCAmdPoyy1vE0tlZWubdgqnrkBWq69B4lB9iDHJD8LLctvi/dJFid/p4P4xaXnLUcjV3A8EUCoxT1LIXv7tsUDyJwuZWvZIjr6kjQSgLIcs2VwIJoooNO5FnXfm0Yrl6JPQlKgNQx8pLh8lcZUe8mGe2MkCnswrl2XQmC2Nr7NeRSy5fSj71fFH+mVsUCT6KUxZhZARHuPaKNl6CXcdBy7FnGviZtcjcyAvJ+c7HnhDt7nb8AX4/9WZMuUe9CkNaHNclKk0GKI2bT1WG3EPZW6JXLegyoOu2wd9kdEvLeM7Vngr6WxV2RKetAktEL/KhL/vTOOpSxlye/iGWK1T7ZQSX36dXIwstcK+yml4m8JJTMdZipKWzfD504B1nP315PNr0fIzHLMg17KWczD5rcfdVmmsLswmmmXdvcDS9eV7diL8TrWRY30AUohSvtRr2vJzjTFbC+nNbl+L7QieDOyd94I+Le7b9nLc25Bk9SqaKl6FjKbWtFzvJeWtuwVZX6fnPGpGG71bUiG3VbcjlKZH0ET97bufm8c+x45U9HjFbedjBSKEz3bu3fSv05DbXsJjbGGvt5h3avijxRt8G+np1300mjluru731Uoa56Lv+WsOdBozz4vpIOZbY1Ws+9C/XIT5FyXQlSPIXvgNg0FUXqf5cmhZyejSWoT5CS0nZe8XVuUczVawR2GONqEVYDvenUC8TPimX9Bk9PGiCh/q3ytN4mXVLbjju8/Nx0LT9N5YS3M7EdIf3VuL+/ziiuzWQ+/CzO7391XK1z7FCL8JyHRjBWKWgyJOndFOo8lgQ96m5m+Errh+p9wEnKXTfbaVwHEgH+h1Y1x3fvQLDsWWMXM1gW+5O7/U3Ft0a0dAC/E8K4gukeYguscWDo+yiOVFLJwOSaI62kFg//VkdhgPVe86XVQ9Lwf9fZOFVjU3f+3g+v3RauI69x9Qrj5/18b982NifWTKK7KkabYG+uY2QyCUMR/Yn/hZoUBuPuPzewScjCxRKwWQJNgx3D3c8OB5DxTnJm9iNWIuz8XfeD9cflV7n6rmeHuD4W7fsIc2keySOkvZpvZQsAtZnY44sIWKJzfrnS9I+5ubeAoUyrAQxERWxZYwMx2d/dR9AJ3vyiYkY1Q2+3rhVARfYG7P2lm+yLC+8Y4/BIaZ982s4MLY6UVvoHe60wkNx6PJtDbyDHEy/g8MkQ4PZ6fXPp/UbrOEaGvwhwzW82zU9y/gV3M7HOxvzPqZzPJsaIOsFJHIjvfjUaT2fOmQF+zw5ntGWAlM/sSPWP1rIgU3bsipuRfKCzHHYVr/hST507Ar8xsFS85S7VEX9j6vm6UbH7j2OqELWwv916PlJBFsUCPpTyNbu1/QlzcqaVrxhe29yB77KplXQ8xAjlcwRPxOx05sjxGtlGtFDG08Y4dWa2QwyrcQhah3NHmt9w13u8t/alzl/pNDzEBmsymIDv5Q5DIZR+0nH8fFdl6ulzncWgSXCL65C/pxTw27iu7+KesWWvQu9hrfKttAN6ppeK7zTKuRiKxp5EM+1+UkmoPUnsUxURXxLg9kOxH0mtYiyhnLDKXnIomlMNiPE0hm3FOpyKVXqmcYljmr7W4blwn79lNDh3PQZGKx+7p4P52OK8dCbd2V/CjFZBVQBHFmf11JFP/VEVZVauKDZAsczZqwAWQQmYZ1NCH0pg4txPsi7iCFGy/t+Xww6agQWcCF5nZc2iQ9IY90ST2Y3efZmZvIUecGzYocUtj0KB8MrimRVGkzORy/1M0iLZEupY3oXa5EMk9233m25FSq7zC69WVuwh3T+3wMuIu20VlIDF3v6sns9gDxX79bjQ5FCOUthTFtYGWK9Y2y9gEmZ9+zHN2pMqgU2ZWtVJKUShfcfePmdnuaFJ5AOnlKlcJ7n5JtO0H0Fj9p7vPE6mZ2aZFDt4UBO0Wd59lZp9BYp5XkVXL35FC/pnC/VsiujMaJZBpFrJiDI1RZX8DbGxmV3h10LSnzezz8b5/qyqz/KLzxUabnBfVbu13tVH+fk2ON11VIO+ye5Bc7HEkp9wRydC6/X02RxHtek1egJbgvR4bzhviyBcu7C9ML16sbZZ7NZo4bkNc9sG0cHwbhPdqO99uL+W0leGmw7p1rPiuKON0xCW3Y75a5TV8DxJXbU4bqwR6+kfcjJTODebSlMJaRPuniKuPoxXFNLKjXEu/iybvU2ntgnRyJyNnx1OQ2e3xiIFMlnNtWV51TSnaX4Ri6Nc0KiG/7qUZ2cx+jyxFdkHxGV5EM+2evZT/oLuv0mZdlkbOESn7zrpItvscEU/E3ae3/XKNZS+FlCJF7rAy36IppOod7j4z9pdA2vfre3lGDwVnOcDTUMMUg/6naJI0SqsVU1z4PVCUPJBd9i2ISy/D3f3QNp87L7a2ZwXZJHd/d79eqE0UlJ7lQGIdBXnrTYndx7r1W/Edq67FyPGHFkQK1qOQc82FhWtHkWXO6yDxzI7uvkac/x2NuXYbchrEsbJhw8VR3nporOxYuLbY5imYWEpfeCQKz5ASgewP/MGlOyobTDSUWyh/LlmhXSS8KTDgG5EIeCW0CrnT3e+mA3RV5NJPvMPddyseiGXRNYV9Q6ZhzyPF0vmUMqq0QK/r2XjGz5CDQAqOlCKlLYYcQGa2ur+XsiutVmi+VP4DWikkvFhxrFh+Usa8pbScXRyZcQ0nHI7Cjt5ZddLdf2mK5Jni0/+dxuh7IMLxBbTEbougU4itbWZfQ2KbsR3Wvc/wNpSeQwUfAMW3uy9ePhZMzKeQyPLCwrVzUIye8y1nMnubmX3d3X+DuPu9C0VV0bOymGimNxcTLVL4P9NkUTUT6eKMxpjqyRM9ldur+MndF6g6XsLlbVzTFPMTh17FVVYdmzfLdlh+Wxx6zLJJ9vYa0nQXcQB0ltKrUPbtZKuV9ZLVirtv3+T6Ko6kMktKnBuHwh38hEaLgpnIu3XAM6j0FRYp/lqc/4tHhqDyMTNbHE2MX0BL2V94pPlq47kboKXvkmgSWAK5ovfQ/zS5/2x6miPOg7t/rJ1y+gLLCRRAK9R/lJ7dkenlYMHMPobEJaA43+e0uLYsc34etc2jtLFKsJ7m0g8j+fmxVjBnDWZqa3ffOfZXRMzPje5+lZmtghyXTmxS7t5Ijv92ZGq7ARJP9ZnB6wuGPYduZhsj2flyscxOWAIt1cqYbGYbuPuNFWUlJVuPUzTOzk2RZlkz+5K7H209U3ot3uQZ7eBld3/ZzDCzMS5F2DtaXD/VzL6OuHJQpMamWU1ciroHzOxKd7+ieC6Uip2YTA4KLKf7u8mUnzLZPgMNKcrWLN03CtjAZD+8G3IiGe/uz3Xy/EK/eREpjzvFz+N3e2SmlhTyuyLLqMHETYX/k5peNYQw5RTeAJkeAuxrZpu4+/cqrj0RebU2ZDKzxly7va0SyoYNuwFnBAFfysx+gcQcCyFdWepLJ3khq5q7P4hk4M3KfQdSSi+PJo03IzHSVh18nn5j2HPopqQCWyCrjKMKp2YiJca9pevvQh56KRpckr1Wcq2DASskmO7wvjMQEdkPiVmeQ1HsPtLk+pR0dktycuN5SWdbPKdqZdOUs+8mrDrJdIKjCIQH0OhQA2JOXkZmZL9LorChglUkmag69t8GM7sNcbZzY38UUuBW5d5sKXP2XpyhCuVUJVv/LJosHqYikUqIlrZ396Y+MsVykej3vUhU+hl3n9xXaUGUvRQy5+yIQA97gp5gkWm8neuqjrdz70ChEwVrizI2R0HDznf3VweoXl9BXPxqRA7KwOIoocNnBuI5A4Hg2q5pdszMflLk6gqisNfpx+AfKJiyCm3rkQfSZBp6rru/s5v1GG4Igr5FkmubDAwuHw7MRBFmdhaK238RhSxkzcRWZna9u29oYVxgZinOTq/vZWYHAifHinwM0husi/ryp9394rbrPdwJupkd4e77NZNNtpJJhqLykyh11baDWM3ycx/yTry7Oi+/nHS2AS063RtQ/JQeMnRvz8uva2hHZ2IdWAR1G2b2IaQ4n4omlXHIs/mCljeOcIRi/jDk/GdIlv5dd//nkFasBDPbo+LwusiEsUfyc5M38PPIfHEfxDj9x92/38az7kBmjG5meyPx3AeQefQJ7v7edus97GXoZIeXn7e8KmByt94WKTQ+iCIlHtXypoHHYM+SyfLjppZX9YS7+3Qz6+FoY2ZLDwei3q7OxDq3CGr3+SmUwwqunKJ9CuXg7uebHFnWiEN3ecGR5b8V7n6SyTppgzj0v+5eFZNnSOHuJxT3zewo5Mz2KQq5kAuXfBcp4W9HJrTnxnXt4NWCaOWDyL9mDnBncPptY9hz6O3CzLZBM9s2aPb/J4pTsuogPa+lgtUjwfRwgpmd4+7bmdk0sgdmgnuH3pCDgXZ1Jp1aBHXw/CuQI8vR3ofgXqWyWsYUGmg0W7EVnj1kVi5m1tIm3psE1RoqWE+P4eR5/KJXJD/v57OuQ3GKniBy2rr7tDh3l4fdfTsYdkSnGUw25wejpetosmw0EaHzkWfVpoWP8evBqo9X2NN2G8FNfguZc81rS28SbdHdt4vft1SUtfTg1LIzuPsVpoh867h7K5f5Ti2C2sWi7n6DNbrZd2zOGdZPWyCCcC7KonQ1jZYSA420YtsknpvEGBTNlMIAABYkSURBVJ9C8VOGEuVAWkUMRFiCgcafUAyeX6GQxtcgi6VtrBCEK13cBn1qhf2QJ/xywK8K9OsjyLO1bcw3BB0FpP8GpdCyBYxHtrcXm2JD/INqs8Zhi9CaHwm8E5lRjQJmtVDonYK42D/SRkRBM/uju+9VcfzNaELsmAsdDLj7nBg0rdDXODa94WkzW43gdM1sRxR4rVO0E1NoQJHEBKH83tTDryDEBVcN5rPbqNuE3q8aVljEFf/F3P0BMzuaHGJgMuofRZFKb/SpKVw+Dj24cFfo3pbhe8uYnwj6C+5+XrOT7n4LkqV+1xRqd1dgQTM7D7kUH9OlevYHv0WT0inINnZ3pBhphtfd/Q8tzpexoJn9FcXbTmZj70KJlw/pW5UHDbeYvFlPodHK4PT4/WQcOtjMLiMsggbguV9Fysw1zOwRIpRDH8p5yd3nmtnrppAMT6Jood3AUkjnkHQiY+PYkMPMFkQJvOc5FiHx1mtDVqlqlD2GpyBzxNPM7BwUhqFo0tiSPrVCSVcEmiyeBq5O3HrbZc0vMnSTQ8IoFNyn6GjSVPYWDfIBYBd3//ygV7KfsF6SIlRcfzAiFGfQ+E0qlZsmOcLRaHDvAmyIluVf8RbeekOBJvbontrR5LlXdcGDA/T8foVysD7GFBoImNmeaPlftCQ5uKzoGwqY2R+RC32qy2eBOVUrx6GE9fQYXhvFkrm/dOmU+N2JDulT4Vll50RQspMPonb7R8X56rLmI4J+WcVhbyYvnh9hZleiCeiPyDzqMeBzXsi0Urq+avbuVW5nZr9BNrbjgJ28Tbf24QTLGX9S8o23AHe7+5otb+y93CXRymhVGvUSfVYomtmqtB9TaEBgcl3fMHavHy6WJFbKHNTs2HBDKJwTFkYeoJNRnKBm6Bd9Cr3WxWXz3VaYb0Qu86EMri/4LJrlv4bkcSsjuV0lqpSbrVCwgjCkNJsMfNrMPh3lDYtYHzBPrn8kUvCBZMD7uvvDAF7ywAsrih7Zq/qAc1EW+9tRLsiO0Mqaw8zGd9GaYxQKPzsaWN3MVh8mNvoNmYPM7K10KHMeTFh1DPZ5SH4vMfH/I9ElM3urhxNZoax+WY25IkS2FTQwYdgT9IGULw13ePZmfYkWSRHMbEt3v9Ry3JNyOadXHafRbr1TG/Zu408ogmJKPPKZOLZ11cUuV+sNq851iIXdvdznOkGy5lgY6UFuRRPoOuibb9y/6vUOU1yenVEm+TQpOUosMdT4NnBZGC4kh6tBF0N1gI1pnveziFloVZhwKj2jnJ6CEo30CWY2AYX/aBvDnqCTw1UWsSrwfVMew39A72Z3w8FppjcU7MMbUCFC2RwF6f9oRTGO5Hg9TwwDGWoHWM7di3L0P5vZfmmnNNEvgAZTOXxuX/AXU47Ic2hDL1FGgWM7HQUHuz3210Jy7W7gEyjc9LBzZPKcOSiZmN49zOpZmfcTebe6mX0TrX7eCZwc/g9rAm8oMVhL0Ese3gTrJWF4J5Uf9gS9mS1yki+RQ4ROIosTVkEzmyGlxoM0zqbDFcXATQsj7rTHROXuB8XvcOJsBhrPmFJ/nRT7uyLb34TiRP86GninDcBzXwV+BnyfPMgc6HT5/A4vpBRz9ylm1q04LlOR4nHYEMpQMj7k7o+7+ytmth6ROs7aTzA96PDqGOyXo+iQKZnK68AD7v6wmX0cZVBakkYGayZKiNEOKhOGewQS6wTzjVK0ClUWIGZ2LDJTPDf2Pwx8wt2/NBR17C+sRbacwVDgDReYgqwdiZbADlyLMlQNiBVLi+dOBd7r7k/3s5yT0LI82Z7vBox19137WcV2nn0asoG/hMZVxlB6ipYzB/Wa4WeoYD1jsE9EKeHmoIiKjuKkP164Z2N3r8qW1VUMew69GVrIlzZy93kzo7ufZwqcM+xRUqgtgDj2Vm3UJwWe9RLJcDgg9AmtAq8NViKJ+8hp3/qDPZG99b6xfyU5bv1gY2JswwkDkWB60GHNY7DvBRyIRJ0GHGlK4n08wHAg5jAfcOi9yZfc/a7S9Rcgi4giZ7SZu39wsOvaX5RMM18HpgM/9yZ5Ba2PeSOr7utrWQMNUyjRZnCP3KCmsA5VCSTOjAuvqCyh9+efgWSilzFMuNuRAKvI8JOsbqyPsXIGA9Y8BvtY5LW9eFy3DHCtuw9EuIkBw/zAoXcqX9oVxWA4g6zZH/Rl7kCgD6aZHSnwrPPsT0OBqnatyg26iTcmizg7HLO+0c/nnxlbn2BmJ7v7Tk0YEbwLcb+tZ2Cp9OyhDL5WzvBzFYApdVzTJBLdhjfJ+2lm16LYPAkzadTpDAsMe4LuHSamCGK2r5kt1helwlCiwkQT1NknuUIblNGpAm8hxGmMplGpOAPFHhlyuPu8IE6Wc4PuiWSuxQBPixVtf00JJBYbgOefYArBnEIu3O2duaUnEUuZEekmyoGl9kQivCGDD0CC6SHGfcD1psQXDnwcuC32ASpXhN6H3ML9wbAXuXQKUxyXPyIF1Cpmti5KLDAQTieDCjP7O5Kbnx2HtgNuQ4qZU9z98NL1fVLgWZvZn4YKYcG0Pzk36K+9lBvUBimBhJltEc+cHuWuDOwxTJxy2kJSpFshBVor5XqN3tHEPR9kQgzy7N6ArLv4KHCDdzkL2LDn0PuAX6EYCBMB3P3W0KrPD3gzsl1+EeZ1on+hWByTgLJyt68KvDFmdgxtht3tJszsZyjB8jHA2t4kN6gPXgKJXwDbJL2FKUTxSXToIBI2yT9FSYMtNvfupMIrB5Z6BK3MavQRzcynE0xhO8Z7xP4xxVn6Vxeq1oCRSNBx94dKHrPDxrW4FyxPo+3wayhzzktmVkWsZqGohJ0q8DoKu9tlfBO9y/9DzmPpuKGl7o8KK5WPufsp8y4w+z93P6Cfz1+wqIR293tMEQI7xeHAR939zl6vHHjsi7LrfB3pHCYAVSnVarQJM1sO+A5SmBf1EokJWgGJQBNejWNdxUgk6A+F2MVjIO5LTtk23PE3spwOtGz7uynyX1WCgr4q8DoNu9s1NFNKJYQ9cyLo30OTU8KHUITDjmFmX3P33wI3mSICFq2k+hIm4YkhIua4+43x90WGl1v9/Iy/ocik26FsWnugWDkJJwI3hJUUyFu3657ZI1GGvizwaxS10IALkUPKsPBE6w1m9h5yQKpr3L0lMemLAs86DLs7nFB0Jis7llU5mnVQ7mR3Hx9OJV+jMSjY7zsV5xTMKs+k8Rs3i7NTYxijoJcohra+0d03KFzzbmDT2L3S3TvKNjQQGIkc+jvcfbfiAVN6qGHjNFOGmS3h7jNCGTg1tnSuafLmKgWembWjwEvL728XjvXFvX0o4E3+V+13XrgI9y9onTKtHSyB9BvbFIunSZydGsMeiVF6zMy2RX4w5bAct6CQ16MBzGyVwfZsLmMkcujD1mmmGaxn8uZ5p2gR39zMJgGfLivwRrI1g5nNQboDAxYhK4UNRUrsi7wbM3udagVzN5WZNYYpzGw7tFpbGYWkWAJ5kk6M8/sgU9EnkF4q9ZtB9zsoYsRw6POJ00wlvEXy5l7QkQLP+h52d9jA3QerLW/vq7imCDP7jrsfbjn2fAO64XFqZgsjR6yyAm/YZ+0abohv+WXgbcCbgOOaOADui6QDQ+psNGIIOvOB00xvMLNL3H2r3o4V0KkCr09hd2t0hKQIHcp4838B7kLmu4egfjG/GAYMN5yAxC1XAR9G3rf7Vlz3EMPA43UkilyGtdNMFYILWBTFD9mCHFR/CeB8d++RETzuG4OSGidFTJ8UeDXAzA5w9/8boLJGAT91928NRHl9eP7N7r5+UuDFqu0qd99oKOozP6PknDUaOQv1EN+a2XEoxvu/aFSCd9VTdMRw6GZ2hLvvB/zWzKqWun2NvtcNfAnYD3gjciBKBH0G8NtmN7niSv8F+Iu7P9XsuiqEYqe8JD+kw3qPGAwgMR/tCkC1Se9XDxqSAu95U2KNx5GPQ43OMc9qLNq12XUPxrZQbEOCEcOhm9m73X2SmW1edd77GH2vmzCzfdz9yDauM6SA+Ro5Rscc4Mh2iLKZHYVWBBOQc9GOiPP4Ql/rXkMomD/+AclcT6EQcKwbegpTqNfTUNq7PyFR5IHuftRgP3ukoaCEh0ZF/LBUlo8Ygj5SEE5Rq9Lokn9i6Zr9kTxvb4+8qqaEtH9AIppf9fKMtBRPv2OB89z9/QP7Nv99KBD0Yvq8lEnLa8XkyEQbnqRdwYgRuSTEUvdgFKxpNL2Y/g0nhPhkNWTPmlzyHXmhFfFZYGsvBOVy96mmlG0Xong2rfBS/M42szeiMKAr9bP6IwJm9gbUf9LkdgVwiLu3q/BaPibcKWRCnjCo3JOZfcbd/2rVUTu7Ls/9L0NvnqRdwYgj6MBxwDeQLHq4xSnpDe8B3uW9L5sW9IoIi+7+VJtxR84xpa/7GTAZEZpjO67tyMTxiBjvFPufRWKLSlPPCoxCIo4qYetgL4dT+OCqxOo1BhfLuPtxZrZviHevMLMbe71rgDHiRC5mdr27bzjU9egLzOwUFKbgsV6ua+oo1akTVVjKLNwBBzqiYWa3uPt6vR1rcf+wdmKrMTgws+vcfSNTxrTfIE/SU919tW7WYyRy6JdFCNbTaTQfmjx0VWobywL/MbMbaKx72UJnXTObUXG/UZDf9ThZyLwe+7szDDOvDzFeMrNN3f1qmCfCe6mXe4poagbRLYQ894v01MXU8vvBw49CXPdNsidpf7NndYyRyKFfVnHYu62c6AsG20LH5qPM60MFU0KUE4E3IOL8LPA5d7+1zfubxt7pFkzp0q6iJHZ0JWWuMYIx4gj6SIKZbQrs6u5fHaDybnX3deP/74Cn3P3g2G9brPDfADNbAsDdq1ZCwxp1W/73YsSIXCo0+w48DVydTPvmB5jZ+sCngU8B05A98UBhVHJ8AbYC9i6cGzF9ob8oOl0lR5L5zOnqHDP7iLufO9QVqdFdDGni2AHG4qVtCWQ1cp6Z7TKUFesNZra6mR1kZnch+duDaPU0wZV0YaCQMq+fxTDOvD6UCKernZEoytDEOm5IK9U59kVE/SUzm2FmM5voXGoMEExJyns9Nuj1GOkiF1OM8YuHs+WBmc1FxPUL7n5fHJs6GLbzZrYROfP6rDi2OkqqPT8ojgcVtdNVjb6gyrrJhiAx94hfZocCcMgtD3rB9sAuyELnfKSsHJQ6u/t1FcfuGYxnzaeY752uwjLnFnefFc5m44EjvMvJFv4bYGZrIPHcG6wxLPUStLA4GyyMJJFLJcxsAvDcUNejFdz9THffBWWwvwwF6lrezP5gZtu0vrvGAKPsdDUd+PuQ1qhz/AFNSOsiM7r7UUjdGgOPdyDv0CVRWOq0jUemo13FiBG5mNnt9PTEWxoZ+O/u7nd1v1Z9h5ktheS3O7eIh15jEDG/Ol0V4skcCDwSHoy1w9Mgwsw2dvd/D3k9RhBBLyuuHHgmyYlr1GiFVk5XwHzldGVmVwDnA59HMWmeBG5Ncb1rDDyGizPXiCHoNWr0ByPJ6crMVkSmrze6+1VmtgqwRTlqZ42Bw3Bx5qoJeo0ajDynKzNbAdggdm9w9yeHsj4jHcOlj4x4pWiNGm1ilCnFGMjp6tLCufnKGszMdgJuQDqYnYDrzWy+WWHMpzjHzD4y1JWoOfQaNQAz+z7wEeRdvAow3t09nK5OcPehTCnXEczsVhQv/8nYXw75Yqw7tDUbuTCzmSh88auxDUlGo/mK86hRY7Dg7j82s0vITleJ01kAydLnJyxQErE8Q70aH1S4+7CIQV8T9Bo1AiPI6er8iMt9UuzvDNRxXQYR4by4G/AWdz/UzFYGVnL3G7paj1rkUqPGyEN4LW4au1e5+xlDWZ+RDlNS8LnAlu7+zvAjudDdN+jl1oGtR03Qa9QYuTCzZZE/Rj3QBxEFZ66b3X39OHZrt/UWtVytRo0RAjPbyMwuN7PTzWx9M5uC8qM+YWYfGur6jXC8ZmajCG/1UETP7XYlahl6jRojB78FDkDZli4FPuzu10UAqZOQ92iNwcFvgDNQDKYfAzsC/6/blahFLjVqjBAUnVvM7E53f2fh3DxRQI3BQUycWyGTxUvc/c5u16Hm0GvUGDkoLvHLia1rzm0QEXkG7nD338X+Ema2obtf39V61Bx6jRojA2Y2B5iFOMRFgNnpFIoaueBQ1W2kw8xuJpzRYn8B4KZuR7isOfQaNUYI3H3UUNfhvxhWtCRy97mFUBJdQ23lUqNGjRr9x1Qz+7qZLRjbvsDUbleiJug1atSo0X98GXgf8AjwMLAhsHe3K1HL0GvUqFFjhKCWodeoUaNGPzFcMhbVBL1GjRo1+o+zUMaiiylkLOo2apFLjRo1avQTdcaiGjVq1Bg5qDMW1ahRo8ZIQCFj0SvAawxRxqKaoNeoUaPGCEGtFK1Ro0aNPsLM1nD3u8ys0sXf3Sd3tT41h16jRo0afYOZHePue5vZZRWn3d237Gp9aoJeo0aNGn2DmW3g7jcOdT0SaoJeo0aNGn1ERFkcC/wD+PtQxEAvojZbrFGjRo0+IpKGbAe8DpxmZrea2XfNbNWhqE/NodeoUaPGAMHM1gV2AXYCHnf3Tbr5/JpDr1GjRo0BQCS1WB5YAdmkP9n1OtQceo0aNWr0HWb2fmBX4BPA7Uiefrq7v9D1utQEvUaNGjX6BjN7CHgAEfGT3b3rXHlDfWqCXqNGjRp9g5mNc/cHhroeCTVBr1GjRo0RglopWqNGjRojBDVBr1GjRo1+wsx6mCdWHRv0etQilxo1atToH8xssruP7+3YYKOOtlijRo0afYSZbQy8D1jOzPYvnFoCGNXt+tQEvUaNGjX6joVQLJfRwOKF4zOAHbtdmVrkUqNGjRr9xHAxX6w59Bo1atToP8aY2THAqhToah0PvUaNGjXmM5jZrcBRwCRgTjru7pO6Wo+aoNeoUaNG/2Bmk9z93UNej5qg16hRo0b/YGYHo+iKZwCvpOPu/mxX61ET9Bo1atToH8xsWsVhd/e3drUeNUGvUaNGjZGB2sqlRo0aNfoIM9vS3S81s+2rzrv76d2sT03Qa9SoUaPv2By4FPhoxTkHukrQa5FLjRo1aowQ1Bx6jRo1agwAzGxbYE1g4XTM3Q/pZh3q8Lk1atSo0U+Y2VHAzsA+gAGfAsZ1vR61yKVGjRo1+gczu83d1yn8jgXOc/f3d7MeNYdeo0aNGv3HS/E728zeCLwGrNTtStQy9Bo1atToP84xsyWBnwGTkYXLsd2uRC1yqVGjRo0BhJmNARZ29xe6/exa5FKjRo0afYSZbWBmKxb2dwdOBg41s6W7XZ+aoNeoUaNG33E08CqAmW0GHAacCLwAHNPtytQy9Bo1atToO0YVIiruDBzj7qcBp5nZLd2uTM2h16hRo0bfMcrMEmO8FQoDkNB1hrnm0GvUqFGj7zgJuMLMnkami1cBmNnbkNilq6itXGrUqFGjHzCzjZDN+YXuPiuOrQ6MdffJXa1LTdBr1KhRY2SglqHXqFGjxghBTdBr1KhRY4SgJug1atSoMUJQE/QaNWrUGCGoCXqNGjVqjBD8f95rcXVREUK/AAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": [],
"needs_background": "light"
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "tDb4RVnZKeII"
},
"source": [
"import altair as alt"
],
"execution_count": 202,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "s1Qtqy5NNIbn"
},
"source": [
"df = percentVaccinatedSeries.to_frame()"
],
"execution_count": 209,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "MvQWc2mLNjlg"
},
"source": [
"df['country'] = df.index"
],
"execution_count": 210,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "88rFskTiNnQE"
},
"source": [
"df.rename(columns={0: 'percentVaccinated'}, inplace=True)"
],
"execution_count": 214,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 672
},
"id": "SPvpL2ZJLzVf",
"outputId": "d06051f1-a48a-4b34-f773-10da0ec9fd20"
},
"source": [
"altair.Chart(df).mark_bar().encode(x='percentVaccinated', y='country', interactive=True)"
],
"execution_count": 216,
"outputs": [
{
"output_type": "stream",
"text": [
"/usr/local/lib/python3.7/dist-packages/altair/utils/core.py:673: UserWarning: Unrecognized encoding channel 'interactive'\n",
" warnings.warn(\"Unrecognized encoding channel '{}'\".format(encoding))\n"
],
"name": "stderr"
},
{
"output_type": "error",
"ename": "SchemaValidationError",
"evalue": "ignored",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mSchemaValidationError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m/usr/local/lib/python3.7/dist-packages/altair/vegalite/v4/api.py\u001b[0m in \u001b[0;36mto_dict\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 380\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mdct\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 381\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"validate\"\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m\"deep\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 382\u001b[0;31m \u001b[0mdct\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0msuper\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mTopLevelMixin\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcopy\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mto_dict\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 383\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 384\u001b[0m \u001b[0;31m# TODO: following entries are added after validation. Should they be validated?\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/local/lib/python3.7/dist-packages/altair/utils/schemapi.py\u001b[0m in \u001b[0;36mto_dict\u001b[0;34m(self, validate, ignore, context)\u001b[0m\n\u001b[1;32m 326\u001b[0m \u001b[0;34m{\u001b[0m\u001b[0mk\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mv\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mk\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mv\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_kwds\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mk\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mignore\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 327\u001b[0m \u001b[0mvalidate\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0msub_validate\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 328\u001b[0;31m \u001b[0mcontext\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mcontext\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 329\u001b[0m )\n\u001b[1;32m 330\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/local/lib/python3.7/dist-packages/altair/utils/schemapi.py\u001b[0m in \u001b[0;36m_todict\u001b[0;34m(obj, validate, context)\u001b[0m\n\u001b[1;32m 60\u001b[0m return {\n\u001b[1;32m 61\u001b[0m \u001b[0mk\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0m_todict\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mv\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvalidate\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcontext\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 62\u001b[0;31m \u001b[0;32mfor\u001b[0m \u001b[0mk\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mv\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 63\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mv\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mUndefined\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 64\u001b[0m }\n",
"\u001b[0;32m/usr/local/lib/python3.7/dist-packages/altair/utils/schemapi.py\u001b[0m in \u001b[0;36m<dictcomp>\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 61\u001b[0m \u001b[0mk\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0m_todict\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mv\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvalidate\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcontext\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 62\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mk\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mv\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 63\u001b[0;31m \u001b[0;32mif\u001b[0m \u001b[0mv\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mUndefined\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 64\u001b[0m }\n\u001b[1;32m 65\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0mhasattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mobj\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"to_dict\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/local/lib/python3.7/dist-packages/altair/utils/schemapi.py\u001b[0m in \u001b[0;36m_todict\u001b[0;34m(obj, validate, context)\u001b[0m\n\u001b[1;32m 54\u001b[0m \u001b[0;34m\"\"\"Convert an object to a dict representation.\"\"\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 55\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mobj\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mSchemaBase\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 56\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mto_dict\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvalidate\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mvalidate\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcontext\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mcontext\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 57\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mobj\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mlist\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtuple\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mndarray\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 58\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0m_todict\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mv\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvalidate\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcontext\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mv\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mobj\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/local/lib/python3.7/dist-packages/altair/utils/schemapi.py\u001b[0m in \u001b[0;36mto_dict\u001b[0;34m(self, validate, ignore, context)\u001b[0m\n\u001b[1;32m 337\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvalidate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mresult\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 338\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mjsonschema\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mValidationError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0merr\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 339\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mSchemaValidationError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0merr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 340\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 341\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mSchemaValidationError\u001b[0m: Invalid specification\n\n altair.vegalite.v4.schema.core.FacetedEncoding, validating 'additionalProperties'\n\n Additional properties are not allowed ('interactive' was unexpected)\n "
]
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
"alt.Chart(...)"
]
},
"metadata": {
"tags": []
},
"execution_count": 216
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "FggiOUp5MxMA"
},
"source": [
""
],
"execution_count": null,
"outputs": []
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment