diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 351d5ff5..c4b8db11 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -3,7 +3,7 @@ repos: rev: 0.12.0 hooks: - id: nbqa-black - additional_dependencies: [black==21.5b2] + additional_dependencies: [black==21.5b2, click==8.0.4] args: [--nbqa-mutate] - id: nbqa-flake8 additional_dependencies: [flake8==3.9.2] diff --git a/README.md b/README.md index 4a4d64d0..9ebe98f9 100644 --- a/README.md +++ b/README.md @@ -52,6 +52,7 @@ These tutorials introduce a large topic and cover it in detail. * [Local tools](tutorials/local-tools.ipynb) * [Label-Maker](tutorials/label-maker-dask.ipynb) * [LandCoverNet Dataset on Radiant MLHub](tutorials/radiant-mlhub-landcovernet.ipynb) +* [On-Demand Training Data on Planetary Computer](tutorials/radiant-mlhub-on-demand-training-data.ipynb) ## Learn More diff --git a/tutorials/radiant-mlhub-on-demand-training-data.ipynb b/tutorials/radiant-mlhub-on-demand-training-data.ipynb new file mode 100644 index 00000000..67ce529b --- /dev/null +++ b/tutorials/radiant-mlhub-on-demand-training-data.ipynb @@ -0,0 +1,3753 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "a7cf916c-0991-4af6-889f-a1ce86696d46", + "metadata": {}, + "source": [ + "## On Demand Training Data from Radiant MLHub and Planetary Computer\n", + "\n", + "Radiant MLHub Logo" + ] + }, + { + "cell_type": "markdown", + "id": "010b5b89-32c4-4f6b-81fb-f41d782d251f", + "metadata": {}, + "source": [ + "In this tutorial, we will walk through the process of requesting on-demand traning data from the [Planetary Computer Data Catalog](https://planetarycomputer.microsoft.com/catalog) to pair with the [BigEarthNet](https://mlhub.earth/data/bigearthnet_v1) dataset downloaded from Radiant MLHub. This is an important workflow for someone in the geospatial community who wants to train an ML model on a datasource outside of a prepackaged dataset, such as those found on MLHub. They can start with any dataset containing source image and label collections in STAC, obtain a random sample to work with, fetch source images from a different collection or satellite product, and then reproject and crop those images to match the spatial and temporal extent of the original dataset.\n", + "\n", + "**NOTE:** because the workflow documented below uses libraries like `pystac_client` and `stackstac`, the datasets queried need to be organized into STAC Collections." + ] + }, + { + "cell_type": "markdown", + "id": "f130b365-6fff-4d2a-86a9-39085ab13886", + "metadata": {}, + "source": [ + "Let's start by importing the Python libraries we'll use in this notebook." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9fe7b447-cf8a-4cc7-aaed-4e8407d0f270", + "metadata": {}, + "outputs": [], + "source": [ + "!pip install --upgrade wget # not installed on PC by default" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "7e144460-5549-4ab4-ba98-10a1a7ebd236", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/kendallsmith/opt/anaconda3/envs/mlhub/lib/python3.9/site-packages/geopandas/_compat.py:111: UserWarning: The Shapely GEOS version (3.10.0-CAPI-1.16.0) is incompatible with the GEOS version PyGEOS was compiled with (3.10.1-CAPI-1.16.0). Conversions between both will be slow.\n", + " warnings.warn(\n" + ] + } + ], + "source": [ + "import getpass\n", + "import tempfile\n", + "from pathlib import Path\n", + "import os\n", + "import json\n", + "from glob import glob\n", + "import requests\n", + "from typing import List, Tuple\n", + "from datetime import datetime as dt\n", + "from datetime import timedelta as td\n", + "\n", + "from radiant_mlhub import Collection\n", + "import planetary_computer\n", + "import pystac_client\n", + "from pystac import ItemCollection, Item, Asset\n", + "from dask import delayed, compute, distributed\n", + "\n", + "import numpy as np\n", + "from stackstac import stack\n", + "from geopandas import GeoDataFrame\n", + "import rasterio as rio\n", + "import rioxarray\n", + "from xarray import DataArray\n", + "from shapely.geometry import shape\n", + "from shapely.geometry import Polygon\n", + "from pyproj import CRS" + ] + }, + { + "cell_type": "markdown", + "id": "3a5bb87b-9d9c-4140-bac8-3e95f146c029", + "metadata": {}, + "source": [ + "### Define global variables" + ] + }, + { + "cell_type": "markdown", + "id": "2de2f657-3229-4037-bf9c-541c503cc269", + "metadata": {}, + "source": [ + "In addition to the API key, we will also need to define some other initial global variables to get our workflow started. e.g. a temporary working directory to download and write data to, the STAC API endpoints, names of Collections, and other variables like the RGB bands for those collections. These are pretty flexible depending on your individual needs." + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "id": "f3bf07a1-3a4a-4207-a449-7be766fa7e36", + "metadata": {}, + "outputs": [], + "source": [ + "# Temporary working directory on local machine or PC instance\n", + "TMP_DIR = tempfile.gettempdir()\n", + "\n", + "# API endpoints for MLHub and Planetary Computer catalogs\n", + "MLHUB_API_URL = \"https://api.radiant.earth/mlhub/v1\"\n", + "MSPC_API_URL = \"https://planetarycomputer.microsoft.com/api/stac/v1\"\n", + "\n", + "# Names of Collections that will be queried against using pystac_client\n", + "BIGEARTHNET_SOURCE_COLLECTION = \"bigearthnet_v1_source\" # sentinel-2 source imagery\n", + "BIGEARTHNET_LABEL_COLLECTION = \"bigearthnet_v1_labels\" # geojson classification labels\n", + "PLANETARY_COMPUTER_LANDSAT_8 = \"landsat-8-c2-l2\" # landsat 8 source imagery on PC\n", + "OUTPUT_DIR = \"landsat_8_source\"\n", + "\n", + "# Default variables that will be used in the API queries\n", + "BIGEARTHNET_TIME_RANGE = \"2017-06-01/2018-05-31\" # full date range for BigEarthNet\n", + "LABEL_CRS = CRS(\"EPSG:4326\")\n", + "DATE_BUFFER = 60\n", + "LANDSAT_8_RGB_BANDS = [\"SR_B4\", \"SR_B3\", \"SR_B2\"] # names of RGB bands from BigEarthNet\n", + "BIGEARTHNET_RGB_BANDS = [\"B04\", \"B03\", \"B02\"] # names of RGB bands from PC Landsat 8\n", + "\n", + "# Bounding box for demonstration fetching Items over Luxembourg\n", + "LUXEMBOURG_AOI = [6.06, 49.58, 6.21, 49.66] # aoi around Luxembourg" + ] + }, + { + "cell_type": "markdown", + "id": "5d5e31b3-5cde-4a7b-af43-dc194b06d0a0", + "metadata": {}, + "source": [ + "### Authentication with Radiant MLHub" + ] + }, + { + "cell_type": "markdown", + "id": "5f11e821-b98b-4df1-a26c-826c9bdbec50", + "metadata": {}, + "source": [ + "Programmatic access to the Radiant MLHub API using the `pystac_client` library requires both the API end-point and an API key. You can obtain an API key for free by registering an account on [mlhub.earth](https://mlhub.earth/). This can be found under `Settings & API Key` from the drop-down once logged in." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "f4c9dd60-3abc-464d-af25-4b23c0d2783b", + "metadata": {}, + "outputs": [ + { + "name": "stdin", + "output_type": "stream", + "text": [ + "MLHub API Key: ································································\n" + ] + } + ], + "source": [ + "MLHUB_API_KEY = getpass.getpass(prompt=\"MLHub API Key: \")" + ] + }, + { + "cell_type": "markdown", + "id": "ccad2439-109f-4eef-ac3b-dac65f54e3aa", + "metadata": {}, + "source": [ + "Once you have your API key, you need to update the default profile file in your home directory. You can use the `mlhub configure` command line tool to do this:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "cfd2681d-56ed-440c-a352-b4ecfd125c03", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Overwrite existing API Key (****b0eced) [y/N]: ^C\n", + "Aborted!\n" + ] + } + ], + "source": [ + "!mlhub configure --api-key={MLHUB_API_KEY}" + ] + }, + { + "cell_type": "markdown", + "id": "5c77d029-191e-42a5-8250-bc451b80f247", + "metadata": {}, + "source": [ + "### Configure API connection to Radiant MLHub" + ] + }, + { + "cell_type": "markdown", + "id": "b0480635-eef5-4e3f-847a-5060c409ae4f", + "metadata": {}, + "source": [ + "This makes a connection to the Radiant MLHub Data Catalog using the API endpoint URL, and the API key from your account." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "bf79c301-76df-4158-bf97-3da53552e143", + "metadata": {}, + "outputs": [], + "source": [ + "mlhub_catalog = pystac_client.Client.open(\n", + " url=MLHUB_API_URL, parameters={\"key\": MLHUB_API_KEY}, ignore_conformance=True\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "637734bc-af77-4c81-ab26-98e808de6415", + "metadata": {}, + "source": [ + "### Fetch label items from BigEarthNet over Luxembourg" + ] + }, + { + "cell_type": "markdown", + "id": "e9f19ce4-57fd-43d0-9263-7a5edd106ee8", + "metadata": {}, + "source": [ + "We will now use the `search` function from the API client to get label Items over Luxembourg as a sample use-case." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "fc61a3d4-cfc0-4da5-9717-bf3c8e427100", + "metadata": {}, + "outputs": [], + "source": [ + "origin_label_items = mlhub_catalog.search(\n", + " collections=BIGEARTHNET_LABEL_COLLECTION,\n", + " bbox=LUXEMBOURG_AOI,\n", + " datetime=BIGEARTHNET_TIME_RANGE,\n", + ").get_all_items()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "917c392c-9ae5-43e2-b7e0-71dd9f749cc2", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "178" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(origin_label_items)" + ] + }, + { + "cell_type": "markdown", + "id": "e9d121a9-e54b-4039-9cef-04277962c2ca", + "metadata": {}, + "source": [ + "This is another helper function that simply displays the geometry for labels from an ItemCollection overlayed on a map of the region." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "2f203e31-5b09-4f2e-bf27-9a3ef8e3fc4d", + "metadata": {}, + "outputs": [], + "source": [ + "def explore_search_extent(items: ItemCollection) -> None:\n", + " \"\"\"Extracts geometry from ItemCollection to display polygons on a map.\n", + "\n", + " Args:\n", + " items: ItemCollection of Items retrieved from pystac_client search\n", + "\n", + " Returns:\n", + " GeoDataFrame object with the .explore() method called\n", + " \"\"\"\n", + " item_feature_collection = items.to_dict()\n", + " geom_df = GeoDataFrame.from_features(item_feature_collection).set_crs(4326)\n", + " print(geom_df.bounds)\n", + " return geom_df[[\"geometry\", \"datetime\"]].explore(\n", + " column=\"datetime\", style_kwds={\"fillOpacity\": 0.2}, cmap=\"viridis\"\n", + " )" + ] + }, + { + "cell_type": "markdown", + "id": "ab923855-3c20-4f10-af00-d4175a54fdd4", + "metadata": {}, + "source": [ + "Here are the BigEarthNet chips with their bounding boxes that matched the spatial parameters for the city of Luxembourg and surrounding areas." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "b86bf5d8-8dc8-491d-b3cd-1ea1263774ca", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " minx miny maxx maxy\n", + "0 6.197958 49.579464 6.215240 49.590700\n", + "1 6.198663 49.590240 6.215949 49.601477\n", + "2 6.199368 49.601017 6.216659 49.612254\n", + "3 6.180682 49.569146 6.197958 49.580381\n", + "4 6.181383 49.579923 6.198663 49.591158\n", + ".. ... ... ... ...\n", + "173 6.151709 49.634721 6.169003 49.645951\n", + "174 6.152406 49.645498 6.169703 49.656729\n", + "175 6.153102 49.656275 6.170404 49.667506\n", + "176 6.135808 49.645951 6.153102 49.657180\n", + "177 6.136501 49.656729 6.153800 49.667957\n", + "\n", + "[178 rows x 4 columns]\n" + ] + }, + { + "data": { + "text/html": [ + "
Make this Notebook Trusted to load map: File -> Trust Notebook
" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "explore_search_extent(origin_label_items)" + ] + }, + { + "cell_type": "markdown", + "id": "13c6e607-c79b-4678-a483-9bacb0b3b1df", + "metadata": {}, + "source": [ + "### Download the entire label collection for BigEarthNet from Radiant MLHub" + ] + }, + { + "cell_type": "markdown", + "id": "2e131160-50bb-487f-8fcb-96d37ce80167", + "metadata": {}, + "source": [ + "We could certainly use the method above to query label Items directly from our connection to the Radiant MLHub API endpoint. However, on very large collections, such as in the case with BigEarthNet, pagination becomes a bottleneck issue in obtaining and resolving STAC items, as it only returns 100 items at a time. Querying the entire Collection of nearly ~600,000 Items could take hours.\n", + "\n", + "Therefore, downloading the label Collection (which is only 160 MB) directly is preferrable to paginating over the entire Collection using the API." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "93f67824-bf8f-4cce-862e-856d9cfed26d", + "metadata": {}, + "outputs": [], + "source": [ + "label_collection_path = os.path.join(\n", + " TMP_DIR, BIGEARTHNET_LABEL_COLLECTION, \"collection.json\"\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "21bd7e52-6bc7-4a8d-bf56-060e80f4019b", + "metadata": {}, + "source": [ + "Check if collection folder already exists before downloading 173 mb dataset. Otherwise download and uncompress the `.tar.gz` file to extract the label collection files." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "81f5a8c4-c604-4f8a-8fb9-1d90607206ee", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "a454f851de6b45289f1db2c42a44beb4", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/173.0 [00:00,\n", + " ,\n", + " ,\n", + " ]" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "first_label_item.links" + ] + }, + { + "cell_type": "markdown", + "id": "5d23fb83-400e-487b-940f-fc158b5ae41b", + "metadata": { + "tags": [] + }, + "source": [ + "### Fetch source items for random sample from BigEarthNet" + ] + }, + { + "cell_type": "markdown", + "id": "e419d96f-f8b9-4911-b5d1-4a4077767062", + "metadata": {}, + "source": [ + "If we had the source collection archive downloaded and uncompressed in the same parent directory as the labels collection, we could reference the source Items and images directly. However the BigEarthNet source collection is over 60GB when compressed. Therefore to work around the disk size limitations of a Planetary Computer instance, we can query the same source items from the MLHub API endpoint, the same way we got the labels, but filter to the exact source item using IDs." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "fa334c57-9dbe-495e-b040-980adf1192c4", + "metadata": {}, + "outputs": [], + "source": [ + "def get_source_item_ids(label_item: Item) -> List[str]:\n", + " return [\n", + " link.href.split(\"/\")[-2] for link in label_item.links if link.rel == \"source\"\n", + " ]" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "f4fa6f4b-8463-40a4-8aec-527d868be5e2", + "metadata": {}, + "outputs": [], + "source": [ + "origin_source_items = mlhub_catalog.search(\n", + " collections=[BIGEARTHNET_SOURCE_COLLECTION],\n", + " ids=get_source_item_ids(first_label_item),\n", + ").get_all_items()" + ] + }, + { + "cell_type": "markdown", + "id": "03e775fa-dd60-4623-8d44-3d83beafcb2c", + "metadata": {}, + "source": [ + "This is the number of source items that match the query parameters we sent to the MLHub API using the first label's bounding box and datetime properties." + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "2c98a5d6-1a55-466a-b768-4433cea148ca", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(origin_source_items)" + ] + }, + { + "cell_type": "markdown", + "id": "c0ba4eaf-03d8-4e56-92c8-4e98b26ba983", + "metadata": {}, + "source": [ + "Taking a look at some of the properties of the first source Item found:" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "854abe53-e1b7-452a-8aa2-c139aa220348", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "bigearthnet_v1_source_S2A_MSIL2A_20180413T95032_75_25\n", + "2018-04-13 09:50:32+00:00\n", + "[25.018573933032233, 60.14150761429367, 25.040815502323284, 60.15259741371799]\n", + "{'gsd': 30, 'datetime': '2018-04-13T09:50:32Z', 'eo:bands': [{'name': 'B01', 'common_name': 'Coastal Aerosol', 'description': 'Coastal Aerosol'}, {'name': 'B02', 'common_name': 'Blue', 'description': 'Blue'}, {'name': 'B03', 'common_name': 'Green', 'description': 'Green'}, {'name': 'B04', 'common_name': 'Red', 'description': 'Red'}, {'name': 'B05', 'common_name': 'Vegetation Red Edge', 'description': 'Vegetation Red Edge (704.1nm)'}, {'name': 'B06', 'common_name': 'Vegetation Red Edge', 'description': 'Vegetation Red Edge (740.1nm)'}, {'name': 'B07', 'common_name': 'Vegetation Red Edge', 'description': 'Vegetation Red Edge (782.8nm)'}, {'name': 'B08', 'common_name': 'NIR', 'description': 'NIR'}, {'name': 'B8A', 'common_name': 'Narrow NIR', 'description': 'Narrow NIR'}, {'name': 'B09', 'common_name': 'Water Vapour', 'description': 'Water Vapour'}, {'name': 'B11', 'common_name': 'SWIR', 'description': 'SWIR (1613.7nm)'}, {'name': 'B12', 'common_name': 'SWIR', 'description': 'SWIR (2202.4nm)'}], 'platform': 'Sentinel-2', 'instruments': ['MSI'], 'constellation': 'Sentinel-2'}\n" + ] + } + ], + "source": [ + "for source_item in origin_source_items:\n", + " print(source_item.id)\n", + " print(source_item.datetime)\n", + " print(source_item.bbox)\n", + " print(source_item.properties)\n", + " break" + ] + }, + { + "cell_type": "markdown", + "id": "5303475f-d29b-4e84-82ef-d355ef0519de", + "metadata": {}, + "source": [ + "With the properties from this sample source Item, we can observe where the chip is located, the relevant Sentinel-2 bands (assets) and datetime the image was captured." + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "01d88ffe-f530-46d6-87d9-4337c1ec0202", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " minx miny maxx maxy\n", + "0 25.018574 60.141508 25.040816 60.152597\n" + ] + }, + { + "data": { + "text/html": [ + "
Make this Notebook Trusted to load map: File -> Trust Notebook
" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "explore_search_extent(origin_source_items)" + ] + }, + { + "cell_type": "markdown", + "id": "77109ba6-f0a1-426e-8884-39a5fac2795f", + "metadata": {}, + "source": [ + "This is the location of the source items fetched from the label Items sample." + ] + }, + { + "cell_type": "markdown", + "id": "a5e0cbba-32b8-47ad-9913-e7ba2a939922", + "metadata": { + "tags": [] + }, + "source": [ + "### Fetch Landsat 8 scenes based on source Item bbox and datetime" + ] + }, + { + "cell_type": "markdown", + "id": "4392b23e-eebb-4a53-88d8-f49fbfacfaf1", + "metadata": {}, + "source": [ + "Configure API connection for the microsoft planetary computer stac endpoint" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "1eddda32-d50d-413d-add8-dedaa2f9a067", + "metadata": {}, + "outputs": [], + "source": [ + "def temporal_buffer(item_datetime: str, date_delta: int) -> str:\n", + " \"\"\"Takes a datetime string and returns a buffer around that date\n", + "\n", + " Args:\n", + " item_datetime: string of the datetime property from an Item\n", + " date_delta: integer for days to add before and after a date\n", + "\n", + " Returns:\n", + " a string range representing the full date buffer\n", + " \"\"\"\n", + " delta = td(days=date_delta)\n", + " item_dt = dt.strptime(item_datetime, \"%Y-%m-%dT%H:%M:%SZ\")\n", + "\n", + " dt_start = item_dt - delta\n", + " dt_start_str = dt_start.strftime(\"%Y-%m-%d\")\n", + "\n", + " dt_end = item_dt + delta\n", + " dt_end_str = dt_end.strftime(\"%Y-%m-%d\")\n", + "\n", + " return f\"{dt_start_str}/{dt_end_str}\"" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "f77e4ec0-a1b8-490c-b732-4c10d89b06ea", + "metadata": {}, + "outputs": [], + "source": [ + "def min_cloud_cover_scene(label_geom: Polygon, search_items: ItemCollection) -> Item:\n", + " \"\"\"Finds the Item with minimal cloud cover from an ItemCollection\n", + "\n", + " Args:\n", + " label_geom: Polygon geometry to ensure label completely within scene\n", + " search_items: ItemCollection of the Items found from pystac_client search\n", + "\n", + " Returns:\n", + " Item where label completely contained within, and minimal cloud cover\n", + " \"\"\"\n", + " min_cc = np.inf\n", + " min_cc_item = None\n", + " for item in search_items:\n", + " item_geom = shape(item.geometry)\n", + " item_cc = item.properties[\"eo:cloud_cover\"]\n", + " if item_cc < min_cc and label_geom.within(item_geom):\n", + " min_cc = item_cc\n", + " min_cc_item = item\n", + " return min_cc_item" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "c3b23fa5-d588-42d4-b913-fab7819e7ea3", + "metadata": {}, + "outputs": [], + "source": [ + "def get_landsat_8_match(label_item: Item) -> Tuple[Item, Item]:\n", + " \"\"\"Finds the best Landsat 8 match using source Item datetime and bounding box.\n", + "\n", + " Args:\n", + " label_item: the STAC label Item object\n", + "\n", + " Returns:\n", + " Tuple of the BigEarthNet source Item and the Landsat 8 match Item\n", + " \"\"\"\n", + " # get the matching source Item properties\n", + " source_items = mlhub_catalog.search(\n", + " collections=[BIGEARTHNET_SOURCE_COLLECTION],\n", + " ids=get_source_item_ids(label_item),\n", + " ).get_all_items()\n", + "\n", + " if source_items:\n", + " source_item = source_items[0]\n", + " source_bbox = source_item.bbox\n", + " source_datetime = source_item.properties[\"datetime\"]\n", + "\n", + " # search PC Catalog for L8 Items\n", + " l8_items = mspc_catalog.search(\n", + " collections=PLANETARY_COMPUTER_LANDSAT_8,\n", + " bbox=source_bbox,\n", + " datetime=temporal_buffer(source_datetime, DATE_BUFFER),\n", + " ).get_all_items()\n", + "\n", + " # filter to best L8 Item match\n", + " signed_l8_items = planetary_computer.sign(l8_items)\n", + " best_l8_match = min_cloud_cover_scene(\n", + " shape(source_item.geometry), signed_l8_items\n", + " )\n", + "\n", + " if not best_l8_match:\n", + " print(\n", + " \"No Landsat 8 Item was found on the Planetary \"\n", + " \"Computer matching the query parameters:\"\n", + " )\n", + " print(\n", + " f\"Source Item ID: {source_item.id} \"\n", + " f\"Bbox: {source_bbox}, \"\n", + " f\"Datetime: {source_datetime}\"\n", + " )\n", + " best_l8_match = None\n", + " else:\n", + " print(\n", + " \"No Sentinel-2 source Item was found in the \"\n", + " \"BigEarthNet dataset matching that label item!\"\n", + " )\n", + " source_item = None\n", + " return source_item, best_l8_match" + ] + }, + { + "cell_type": "markdown", + "id": "69ad7ef1-143e-47f0-b6b9-26c73e5cc65d", + "metadata": {}, + "source": [ + "Since it is known that the BigEarthNet dataset from MLHub has a 1-to-1 pairing of source and labels, we can safely assume the first source item is the appropriate match for our label." + ] + }, + { + "cell_type": "markdown", + "id": "ab77ef46-b54a-42e7-a780-bc8e8094ec6f", + "metadata": {}, + "source": [ + "This makes a connection to the Planetary Computer Data Catalog using the API endpoint URL." + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "38280716-e130-4de4-9699-2c0bcbfc056d", + "metadata": {}, + "outputs": [], + "source": [ + "mspc_catalog = pystac_client.Client.open(MSPC_API_URL)" + ] + }, + { + "cell_type": "markdown", + "id": "39f35d02-d2de-4be5-9317-c80214502c88", + "metadata": {}, + "source": [ + "We will now use the API client with the helper function above to fetch the best Landsat 8 match for the sampled label Item. This will find only the scenes where the label is completely within the scene, and there is minimal cloud cover." + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "53d3ab14-86c7-42a8-be96-8156f5e74d64", + "metadata": {}, + "outputs": [], + "source": [ + "source_item, best_l8_match = get_landsat_8_match(first_label_item)" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "53556cf0-375b-4044-9262-d16de707a13d", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "LC08_L2SP_187018_20180510_02_T1\n", + "[24.323999281168234, 58.95366546927769, 28.882648861314085, 61.187374530722316]\n", + "{'datetime': '2018-05-10T09:22:33.464049Z', 'platform': 'landsat-8', 'proj:bbox': [356085.0, 6537585.0, 601215.0, 6785115.0], 'proj:epsg': 32635, 'description': 'Landsat Collection 2 Level-2 Surface Reflectance Product', 'instruments': ['oli', 'tirs'], 'eo:cloud_cover': 0.01, 'view:off_nadir': 0, 'landsat:wrs_row': '018', 'landsat:scene_id': 'LC81870182018130LGN00', 'landsat:wrs_path': '187', 'landsat:wrs_type': '2', 'view:sun_azimuth': 163.43293558, 'view:sun_elevation': 46.70358845, 'landsat:cloud_cover_land': 0.01, 'landsat:processing_level': 'L2SP', 'landsat:collection_number': '02', 'landsat:collection_category': 'T1'}\n" + ] + } + ], + "source": [ + "if best_l8_match:\n", + " print(best_l8_match.id)\n", + " print(best_l8_match.bbox)\n", + " print(best_l8_match.properties)" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "3f3b5d88-7f3c-4e74-8e68-2408ba762b0f", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " minx miny maxx maxy\n", + "0 24.32561 58.956597 28.877931 61.185413\n" + ] + }, + { + "data": { + "text/html": [ + "
Make this Notebook Trusted to load map: File -> Trust Notebook
" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "explore_search_extent(ItemCollection([best_l8_match]))" + ] + }, + { + "cell_type": "markdown", + "id": "66c13807-50a3-4a8c-8a89-33002eafabe6", + "metadata": {}, + "source": [ + "If everything worked correctly, the geographic scope of the Landsat 8 scene should encompass a much larger surface area than the Sentinel-2 source and label chips. From here we need to crop the image down and make sure the chips from both products match." + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "258a1d9e-55aa-4781-a0f5-e77ace273240", + "metadata": {}, + "outputs": [], + "source": [ + "def get_redirect_url(asset: Asset) -> str:\n", + " \"\"\"Returns the direct URL to an asset.\n", + "\n", + " Args:\n", + " asset: Asset object from an Item\n", + "\n", + " Returns:\n", + " string response URL direct to Asset\n", + " \"\"\"\n", + " response = requests.get(asset.href, allow_redirects=True)\n", + " if response.status_code == 200:\n", + " return response.url\n", + " return None" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "1e4e977d-eb14-4aa9-85df-adbe84b1732d", + "metadata": {}, + "outputs": [], + "source": [ + "s2_stack = stack(\n", + " items=ItemCollection([source_item]),\n", + " assets=BIGEARTHNET_RGB_BANDS,\n", + " epsg=rio.open(get_redirect_url(source_item.assets[\"B02\"])).crs.to_epsg(),\n", + " resolution=10,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "id": "287f9b13-82a3-4a5d-82f2-9ab5066c6be1", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.DataArray 'stackstac-9b126e799083670f3b31d7b4408e224e' (time: 1, band: 3, y: 128, x: 128)>\n",
+       "dask.array<fetch_raster_window, shape=(1, 3, 128, 128), dtype=float64, chunksize=(1, 1, 128, 128), chunktype=numpy.ndarray>\n",
+       "Coordinates:\n",
+       "  * time                 (time) datetime64[ns] 2018-04-13T09:50:32\n",
+       "    id                   (time) <U53 'bigearthnet_v1_source_S2A_MSIL2A_201804...\n",
+       "  * band                 (band) <U3 'B04' 'B03' 'B02'\n",
+       "  * x                    (x) float64 3.9e+05 3.9e+05 ... 3.912e+05 3.912e+05\n",
+       "  * y                    (y) float64 6.67e+06 6.67e+06 ... 6.669e+06 6.669e+06\n",
+       "    instruments          <U3 'MSI'\n",
+       "    constellation        <U10 'Sentinel-2'\n",
+       "    gsd                  int64 30\n",
+       "    platform             <U10 'Sentinel-2'\n",
+       "    title                (band) <U35 'S2A_MSIL2A_20180413T95032_75_25_B04' .....\n",
+       "    common_name          (band) <U5 'Red' 'Green' 'Blue'\n",
+       "    center_wavelength    object None\n",
+       "    full_width_half_max  object None\n",
+       "    epsg                 int64 32635\n",
+       "Attributes:\n",
+       "    spec:        RasterSpec(epsg=32635, bounds=(389960, 6668780, 391240, 6670...\n",
+       "    crs:         epsg:32635\n",
+       "    transform:   | 10.00, 0.00, 389960.00|\\n| 0.00,-10.00, 6670060.00|\\n| 0.0...\n",
+       "    resolution:  10
" + ], + "text/plain": [ + "\n", + "dask.array\n", + "Coordinates:\n", + " * time (time) datetime64[ns] 2018-04-13T09:50:32\n", + " id (time) " + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAqoAAADQCAYAAADPo0PkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAEAAElEQVR4nOz9edgkyVXfi39OblX17r1Pz6bRaGORECAhwJjFgLG8AbaBC9jGBmxswJjre41B14Dxgi0b/wzCNsiyDEaXRciysGQbxHYRq5CQhPbRMtKMpnu6Z3p597e2XM7vj4jIjMo3s6re3mdU3+fpfqsyIyMisyIjTpzzPeeIqrLAAgsssMACCyywwAJ3GoLb3YEFFlhggQUWWGCBBRZowkJQXWCBBRZYYIEFFljgjsRCUF1ggQUWWGCBBRZY4I7EQlBdYIEFFlhggQUWWOCOxEJQXWCBBRZYYIEFFljgjsRCUF1ggQUWWGCBBRZY4I7EQlB9GkBEHhCR99+kut8iIi++zjq+RER2ROTdIvJeEfkNETltz4mI/LiIPGzPfXbt2lBE/lhE/tf19GGBOx9Px3EsIl0RebuIvEdEPiAi//RG3M8CdyaepmP4PhH5LRF5yI7h774R97PAAvNiIagucKvwu6r6mar6GcAfAd9pj/9Z4Dn237cBP1m77ruBh25ZLxdYYDqOOo5HwJeq6guBzwReKiKfd2u7vMACEzjqGM6A/1tVPxX4POA7ReTTbnGfF/gkxkJQffogEpGfsTvh14vIEoCI/KCI/JGIvF9EXiUiYo+/RUT+tdX2fEREvtAe74nIa209vwj0bmQnbfurwJY99FXAa9TgD4ENETlry94L/Hng1TeyDwvc0XhajWP7fd+Wie2/RZaVpzeebmP4oqq+C0BV9zCKg3tuZF8WWGAaPukFVRH5KRG5NK+5RkS+TkQ+aE0gP3+z+3cEPA94ld0l7wLfYY//B1X9HFV9Pmai+wveNZGqvgT4P4F/Yo99O9C39fww8KKmxkTkR635qP7v+1r694Ui8m7gMeDLgZ+yx+8BznnlzlNNgj8G/COgmHn3Czxd8LQbx2LoK+8GLgG/rqpvm+dBLPCUxdNuDHttPQB8FrAYwwscgoh8ys2o95NeUAX+K/DSeQqKyHOAlwFfoKqfjplU7hScU9Xft59/FviT9vOfEpG3icj7gC8FPt275g327zuBB+znL7LXo6rvBd7b1Jiq/gNrPqr/e3lL/5y56T7gp4F/Y49LU/Ui8heAS6r6zmk3vcDTDk+rcWzbyFX1M4F7gZeIyPPbbn6BpwWedmMYQERWgP8O/J+quttS9wKf3Pi1m1FpdDMqfSpBVX/H7hJLiMizgP8InAL6wN9W1Q8Bfxv4j6q6Za+9dIu7Ow11c6KKSBf4CeDFqnpORH4I6HplRvZvzuRYmGmaFJEfBf5Uw6nXTpkgHd6EmfDA7Nrv887dC1wAvgb4ShH5c7bPayLys6r612b1bYGnNJ5u47jqjOq2iLwFszG+KQ43C9wReNqNYRGJbbmfU9U3sMAnLUTkx9tOARs3o81PekG1Ba8C/q6qflREPhczwXwp8FwAEfl9IAR+SFXffPu6OYH7ReTzVfWtwDcAv0c1EV6xu+GvAV4/o57fAf4q8FtW8/MZTYVU9R9cR1//JPAx+/lNwN8TkdcCnwvsqOpFjOb6ZWA8VYF/uBBSPynwtBrHInIKSK2Q2sOYWv/1dbS5wJ2Pp9sYFuC/AA+p6r+7jrYWeHrgm4H/m2pz5eMbbkaDC0G1BjuJ/Angv1muO0DH/o0wHpFfgtlt/q6IPF9Vt29xN5vwEPA3ROQ/AR8FflJV+yLyn4H3AY9iPDxn4SeBnxaR9wLvBt5+g/rneFEC7AB/yx7/ZeDPAQ9jtNfffIPaW+CpiafbOD4L/IyIhBiq1etUdRFq7emNp9sY/gLgrwPvs9cB/D+q+ss3qD8LPLXwR8D7VfUP6iespeCGQ1QXDqjW9P+/VPX5IrIGfFhVzzaUeyXwh6r6X+333wS+T1XnmXQWWGCBBRZYYIEFnrIQkePAUFX7t6rNhTNVDZYk/oiIfC2UQZBfaE//DywXSEROYqgAH78d/VxggQUWWGCBBRa4lVDVzVsppMJCUEVEfgF4K/A8ETkvIt+K4QV9q4i8B/gAJr4cwK8CV0Xkg8BvAd+jqldvR78XWGCBBRZYYIEFbiVE5C4R+UkR+Y8ickJEfkhE3icirxMbA/2Gt7kw/S+wwAILLLDAAgssMAsi8mbgfwPLwDcCPwf8Akah9+Wq+lVTLr+2NheC6gILLLDAAgsssMACsyAif6yqn2U/P6aq93vn3m1jRt9QfFJ7/SfS0S7Lt7sbC3wSYo+tK6p66kbUtRjHC9wO3MgxDItxvMDtwY0ex0fFn/lTy3p1M289/873jn5VVedKSnSL4FNGXzPl3A3DJ7Wg2mWZz5Uvu93dWOCTEL+hr//EjaprMY4XuB24kWMYFuN4gduDGz2Oj4ormzlv+9V7W8/HZz928hZ2Zx68UURWVHVfVb/fHRSRZwMfuRkNflILqgsssMACCyywwAK3C4qSartG9U6Dqv5gy/GHMYksbjgWguoCCyywwAILLLDAbcBTTVB1EJETwA9hEkIoJgPbP7sZkZA+6cNTLbDAAgsssMACC9wOKJBStP67g/Fa4BLwVzCa1MvAL96Mhm6qRlVENoBXA8/H/B7fYvMf+2W+BPgxIAauqOoXi8jzmLzhB4EfVNUfs1kRfhF4AJOK7utUdcvW9TLgW4Ec+Puq+qtH7XN0v8cVyRsGiar5B1AUk8f9vwCFonr9A02k2k+oFhPfJxCIu8D0Q8T8C7zy/rl63/0yQQC9LsWSyR6bbXTZv7dD/7RQJPYyV60CARShux6kMMdzm+E6W1aSbSFIvWYyCDLz2dVJAWFaVWvuC/KOaa9IoLCjVnIQreqqKgYNzb+yzrHpUxFX16qYsuHQ1O/6EQ0m+xak5loNIbPlwtT0x50D2y8x9Yr3SM/82KFMczcd0QPPAC0O/7aF9z2Qaoy7cm58TIzjhnocmo77Y6sNbWWCwLQXBM1l6sdEqnFfaDW2g6qcri6h3YTxMTMYd5+RMDhTjSn3+6GAmDEiTsEhZiyka0qRmILRfkg4pBrnmHGggRkj/lgMMjMeNGTivSkSNe3YsqKACkEGeWKeaTgUsmU1ddixLJmU49IfZxpAODJ/01VzMN4TpDD3Eoyr/hQxE21raM67cw5FbPsfwD3/6taPYYDw+DHzoWku9uHGTG2salEgQYAWLePcjafavD3ZicCb83VyvDl4461p3Iqbg127AGF4qNzEmuLegdwMRllZRk9ukB5fYveZHYYbpp2iY+Ye9ZcFNx97Y1RyyJYgW82Jt03b4dCeK6jmZjH1iZpxobXbybugdg42Y0nN/OhuMRPCsa3DvkdF4uZfJRhXYxjsOC6qMe7epXRVifelPCY5hANvzIvpSziqxm2QQpCbeVq0Oh6OzPO4+0duzziehYKW+fXOxnFV/efe938hIl99Mxq62ab/VwBvVtWvEZEEWPJPWkH2J4CXqupjInIaQFU/DHymLRMCjwO/ZC/7PuA3VfXlIvJ99vv3isinAV8PfDpwN/AbIvJc1WvUqdcnq6YF2U0+RTE5AZXnBSEs6yqFVn+ymwPuOiegtgqrrs+Ba4PDQsc8QgSYyTFNCQ5MAopkK+TYpSVWTywxOGMW/IO7AtIl0HjyUrc4grfwSSVghiP7d+xNojp5fRFVE6SbGIvICqD21jUwC6nkZnICU6aIzPdy8srtJKzgHpsKxAee0OsenZ2sJaeSlKU6Ftm+o/Y+/XXFEyCcUOJPyHcE/EXXR9OC7eALAP5C7/62LfhtbdTL+XW6hbqoCSZBw3h35YpaXwDyqk7Z6yN7fbpXTLnOk8uMTy7TP5twcEbIrKN53rWbn4zK1mSFVwIFu5BqoGgkZuF0C31uBdXAu9Yu3kVsBVU7HotEbTlTj2m8WowldwKIVvXatuNdKkECs3BDJTiAEXAdJJ8UAgq1mzB3b1iBxBPM3XXhyAjzcrutkvW5uLWcm0yqseiEVCcoan0cN82N/lArtH1M+3O438fw8ByrdaWGCI0zsf8e5TlEEcTmx9X+AB49ID4XcvLcBuP7jgNwcE+HgzNGgeA23Kid0wpvM5+DRlqNaYyQG4zN5twp7wQzRtRTPEA1hutzMJg5L0hNQTf/i3jjUkFDRXIh6ld9yq1AGXoCsRuvUV/KzVSQmj6J16a7TrSat4Pc3EeQmTYjezxPJteYOwkKpNcRJrRJIQh8mCMq9ETkRcB/BXrALwPfrdPjl/6WiHw98Dr7/Wsw8VVvOG6aoCoia8AXAX8TQFXHwLhW7BuBN6jqY7bMpYaqvgz4mKo6z7yvAr7Efv4Z4C3A99rjr1XVESYF6sPASzBZp+ZHKeyJeXHbFvVZA8svE7gX2E6WwWHtgEgwoX2tfwcmvvvC6yFBNs/N53LyrO3824TVcqL2Zmp3D2mGbO8S7x0QXTUre+/JJdKVmP17Y4YnPNklpxJM7eXRgdHuBGNP4+Q0n1KV06i26GN343YhL5RSYCjrKyqBU0MzIWlQTXyh1ZAi3oQ2tvXFdhduR2a+VPUj8IQQd40TNvKO6XOYM6FxKO/H3eLtElT18KJd/p1YVINJbZVfvkl72SSQ+uXaxlZbfU3l6udUK43ZtPeu6ZxquQC7ZyKbu3R2D0iuLLN0cZl01Qyo3fsjRsexGz17iRMSCyEYWO1OJpVA6xRtdhMlRWVZCNQbw95MG4yFIpp8Hk7LZLSvplLJBe0YwSLac22b+ssNmh1feQTBCHzpR+07GPW9DaFdxAs12jV3DPsulPdthQwNzPVPG9THbX3M+O9HINXGbmJdmJzXJ44HXp2+QsL+1r52V62mFJFGgVqCwAirpWQmldB66QrxpSsAHHt4jZVnnmZ4qsPBXWbwjY5V+zc3H2mCEeJGQTWnpXaz5WkfNbaaVLcxc9rTsLJCVNpXo02lmLSWOaG23MhbS1Pct3U7BUFmhM1gRLlhRCHaP6zdj6yywW2qgsyM73TZUxKoXUPcJtEtZYHd5N2BUFXG1xfPvkkh+P9wdIXeTwLfBvwhRlB9KfAr9cZEZI9qu/N/Af+vPRUC+8A/uZ6bacLN5Kg+iOEs/LSI/LGIvFpE6kHyngscE5G3iMg7ReSbGur5ekzWA4czqnoRwP49bY/fA5zzyp23xyYgIt8mIu8QkXekjOqnF1jgKYHFOF7g6YDFOF7gkx1W8d36bxo8heB/AaMQVNVtjOLuZ2yxnwG+2n4uFXqq+gjwMPASm/p0TVXfarWor/Gumeyv6qqqrtm/garG9l+gqmtHfwKzcTNN/xHw2cB3qerbROQVGKn+B2plXoTRmvaAt4rIH6rqRwDs7uArgZfN0V6TKufQNkVVXwW8CmBNjh/extT5bmXtniZpnt1PownV240fKt6sPa3zU6ddV//cSg+oH3b35vO46toGVybPkatG/Rjv7hPHMVH/OJc/uzdhRs+6RhPqdrrRACSt+KdQaVzV07yilnPl7abd7l9yY7ovzZSead4pHfLEaKTCsRAfmGNBBnnPlI/cscLUI3mlAQaz63dmf98UJVm1UweIhlbr5Jl6NTDto94O/ya9YTPHcVWw+tykQSoafuumsj7NxS/T1E4d82pO2467vjitqt+Pupa1zrH16QTuWlVjIbi6Q2dnn05gVEfxwUmefHGn1DSC5eAlRmsUHVitmNUCmXO2Spm0BoDRaDlTrPhUlAxExNox7XmrfS1iUMtRVXsy3g7KcZctAYUZf+jku0FAxb0GEFtv6FkFnIa/qGgLKCW/2r0HedfU43ivNwtzj+Npmvp52vHGrYSh0Wa2aVPLeTQ01oY2mlZds9pUrqZl1Tw3x8LJh1pqWb1+us/S9G6KlBxX3d0jevcuq50OvefdB8CTL1kqx3Fm/QTyJUMliXdlguLkxp1403+RGA2qeJQVrKm9CM1fW8PEOHZ1FhForMZyAEgmJFum3dyOYaCkAbh/wARVpdS82najrOqns1xEA6r52/5XhGYdce9CkHq0iDsMipDWicCTOCki7/C+v8q+NzCpEHwh8E7gu6kp9BytEqO8+0OvLqfQS+3n+vFGiBUuVLWwctrzgUdVdXPqzV4jbqageh44r6pvs99fjxFU62WuqOoBcCAivwO8kCpo7J8F3qWqT3rXPCkiZ+3DP4vxOnN13eeVuxe4cORe+4Kkv1hPW/Adh8+dq5evCadNZv02XI8zVhO3FSoKAtA8ufr33GQ6dsfSFNKU5DFYO3EXO88wM0fepTTdx3u2mbEVDAvInYlJjMBIXk1MebfimDr4i/8EX85SB/BMrEEOQd+YUcsJzU3C3s/gqAHOfOTaC0eU5qVSCHB1ZdVkqiEQ2Cp981bIpAnsToqrUaOilIuoPz7r3NC2Y9MoAvXjbXzU+rn68Sahtc7184XXpmNNtIGJMZyVP3TnsW3WTp5i58GgXNQ0VDRSor2gEuysGdM5gYAdF47y4gmvjbw4O77883lHCUfmgIwdVUgIR0w4AfrcQ+foBdVfx9su28kqc795fnaMFlC4Y0HV9/K+Azvu85u32ZoLs/ip0zZBLeW1aTyX1xaURHbfdF8387f1ZWJdsO9Wm09C00bPOyZtvGxVQw3wrwlDNMuIHjVL5epd93P1+eHkeIyUcBAQjCbnUU2q+bds21IBNKrGVjnf4W3AimoclxsxDL+aAqI9cw+uPWfeL8ejfY+C1CgyXNsl5US98lrxuKGiqvibQOc8pqFRGrh3Nsg4rLW6Q6DAeLpx+4qqvrjlXJtCsA1tCr25FH0A1mHqPwGFiPxdDM3gAHiuiHy7qv7PKe1fE27aFKSqT4jIORF5nnWO+jLgg7VibwT+g4hEQAJ8LvCj3vlvYNLsD/Am4G8AL7d/3+gd/3kR+XcY7sVzgLdfxw1UO9f68Tp8T9M5dvhzCZ9Nk9sRnbDa6pzQtvoaVl9DUL+fCaGmJvAMBqx8ZAs4BsDePaHRpuaUWk0wfCFfU1p6WPseoJZjiteMc1wyHtFM8J4kp/QoBQj79lhnUmAMrBdqqf0sKg1Y6AmxodUGOK0ZQJCrPS+V4FmYNzvA4x+K3d17gnMp3NwuTHWSajjnO0eVgq2nxfQXz7onddv1Dm1C7byoC7y+prUNdaHV77eDO98fsPahXYponYO7TD/zrhD2xWy43CvheKtuowTlGJ1wNAkVMit0SjUepbDDO6640c4RBSg9nR3fOcgr2amMLmDHaBktIzALvWjlrJgtmTJBOim8+hYI1x+B0tMbzLh1lobwTrHIXyOPb8Lr39VTWoictt2ZT4LJjVwTH7UuPNc9/uvCah1Bw7vhrvX66HNWfRwStFXRNEXCkGJ7B4C1t58nHN/D7jMi+mdss2lAsm0FQffqO227ixLgqvQE3NInwCoayvkZymgDvlOpUR4Ine3q/SgiM45Ea0KyHd8T8zp2vEo1t6oYK4LYDZq5H1N/UVMOOEtessMERzzeP/Qo7wgokF67RqNNIXhUhd55+7l+vAn/BKNQ7AHvAT5HVT8sIs8A/jvw1BFULb4L+DmrGv448M1WAkdVX6mqD4nIm4H3YnQEr1bV9wOIyBLwp4G/U6vz5cDrRORbgceAr7X1fUBEXocRhjPgO6/Z4990oPrcNqk4MnwbRcChFs5kqka1SYMwofFq0YpNQdmWH7LHd9wqai9Jmxajftx9L3Lk0iare8brorN5mp1ndUhXvPac9qioFsPCTkTasSZzJjWfvrZKbBioIK0m0CI2k59zjAKq6ABBNckFVhPqa2mddtdpxZx5zGlE3XnTdyGwVJBKcyVlG26CL7VnnqYt6zU/yluGeRb3Wc6B/sLYJhROE0Dr4dL8fk0TXpucr+qWi7Zrc+/Hbuuzbwmx5YKLlzm+c0DvuSb199ZzE6MF0kqzGIwgD2sOJ9bRpPDoIc57v4xKUZcvIiXHaU9NG+FQJmgsgdNousXZWgA0tGPU/WyZXfC73mbQbu6Cgkk6gKW2lD9FUDnJuD66sFRFdLjftxRuczyvkDqL6uKOO4S1TUyTgxQ0m/mbIsPM0gA7Z9ZZa4b9rnneqiwpqQFBgIShmZ8cHWBvn+U/Pk80OAvYEINdSu18GRYwrDZO5Xxn5zSnxfSVC0FqN/BuTPSMI5/b3IMZh+HQ29BZZEt2PI4sFcu1WdipoXxvTNkiqeoMxxymfNmyvtNi1vOUBGlVVrJqjbnToAj5NboLTVEIfpAjKPRUNReRPRH5POBtwDcB/35auwAi8phtF1X9hLTGzrw+3FRBVVXfDdRV1q+slfkR4Ecaru0DJxqOX8X8GE3t/TDww9fY3Wa0LXKqk5qmNm9lODR5TYSp8tHGcaqfL+aYEHHdORxNYKIPLVAtzKTX0PdDY9FN9kOjekkevcyJvTXGx3v0z5hZbnhMqvBSfpXBJHdIsYJpUe28fU2V80QGO+mNq/PAhOeyX6mbkEuPUbsb14hJk763eNepAk5r5r4XkdUEeKF9nBlrIjrAnYYmLVFdg97ET52o4wjSi6/9bOOm1ttsWpxnCSvOS3peZNnhduIYxmN6HzPJVZLtFUYnuuzfbSJbgB2DLrqE0/gExnxvNj+mzsCGuSo1WI5vZ7X5/nhyUS0IIFuyG9pccCGu3BgrY02OzULsNkkujNRExAlP++Rv+ibiH1MJ2X64tcJpe2NjnbhtqEeoAKMFrWv3wZi/x+NDWshD4ana0CbY+nQA993f3NeVBbMsYbPoL4eu9frn99PnvdpjTlAlz9GdXZI/HnDXBbPpGt6/zt59MaMNDlGSfG1qEVeKhcCLJ+3iZafL1TzqNvrl+MUIokVihVGfGuNu14uv6rT9GlWb+sjGKPbfjzI+tU/hcmW0OlTWbd85nyZQD6N4p+A6NarQoBDEjJqjKvS+nSo81a/Q4PHvICKBGiHiW7xjIcYyfsOxSKHahlnOHnU0aYocmgJENx1v01g65EXzAj9FaK2HwqoLmkfhy7ryh+pyDgeub4MhweMjuttLxHtrAGTPX2G8ShkLD6yg58X9m+xoJew53qibrJwpMrAx9LKlyQXfLeyl5tYF6XdhqqgETSmYMHs5bq2ZqN1v6XXLCcRJNRG6+3GxWl1AdbgDTP9NaHMYhEnt5zyhfOqffZNqfXFuFQS8a6fxo6ddB5TxjOtl2gQDp+H1wgSVf/smQGk4HLF0tUO8v8GVF5iVdLzGhPkSPPqHiolVCchYTIggqTZfUG16wqGUY7nchAm4uELOJKsFpfk1i8xCHlgh1Y8VDJSmULCh0zwtadk2pk9lXFenPRNP2LBhsPIudK5y++Br4ic27Q3OfU5Qq52rC66HqAB+W02ob8ynKY3aHGbr4a3mMf8DE4o2p7ENjQb1EJ0BJrSshNYZ7PxFALpPXqZz5R6ufNYaow3Xnm0mr6xKRWykPFUzX5b+AYWZz8J8MowfxSSfNO8y4cBX3podj+lKFfLMWQzUG3tg25Sqf+VcW0wK2W6TVS0qpmw09urBlOld4Y6Ecaa6dlGsRSEIR1Toqeo7ME5Rs/BtGIF0qKo+vfI+jAb3huNOcvVYYIEFFlhggQUW+KRCjrT+uwPxclUdisi/9g+q6qOq+rM3o8GFRnUeNGmOfDium6/RadEeTdVetvGeZvHxpqFBi6talMebkg+YpoLDtIMGTcGEhrb+nPYPCEdma7t8uku6GhkHEBdAOqq0kOX7qJSOKmWIJ2u2z+NJflTheSi7DD0uZavTvgKINS9VIVVMnY7v5ztZOfPnhAm3UKsplUoLFVvNLZWW1gV7z5Y8k9PtNJvWI09MG19NXvxNHvhNTilhWGkl3TtQN3/OM3anaWyn3pvHW/U1wm33MI1/Xg9llWXQL4jPFawevwuAzeWwdAopU/KqcYiSAmRk6nfa+XBkxptryXGrfQ6fCw/lrATlMYwGqzT9B8a0KlpzQFFvTLrbdFzUmjZXrQWhbs3w0wZrAKnTHN8J6gw/3W9RmDFX/00dBatBW+prGg+lU3XXz8ODdeGr6lrVJi1qmyVtWt3TnrVImfWqSSNcht0C89dSAio6QEFw7klW7lpivGYGV9Q382S6Uo2RcChlZqpSy4/Vuq5QOvSBmXdLpyZHg4nM8aIWTcBpRIPUc9ATq9G3YxXMuHaOfT7vFWflsh1SrPXK54Xb91JsOuB0xV6fcvuSr8yAqpDWwy7c2TgrIl8MfKWIvBYmpWlVfdeNbnAhqM5C2+Q1LWSP+9xw7VSO6DQh9UahjV5QEyxa47A2QLVAihoX1i0kqbHnxHsZ0SAq8zODFQhHVpjzeEc+NxUsCT+1sVg9PmkulHnKfZO8LziCJfePmRCIfe6T/5qVk2nNM9WF7imztwAubmXJ64soUwy6exxv3CZPlEOe+9Ju6p97ka7di7s2q60AdacSZ+b0uXqt75XX32mm/1mxX+vC6zTUhdkGJysGA+J9c59BHpZRI0q+tOXlQW1xtjzRvKulST8aVtzqCQcP2/WsZz44wdfn6gVjyk2Yn563XLCVihdouYPqPwKhTLVZz63uCyDjddu/Dhzcfxu9qUpaR20TnOfmd/J+W83z5pBOfplaHOAJ7mp9TLV5/NfnxTILXNCyGWwQbH2492Ja2Cs4vNHyM8oFUsVo9RGAjq1NPTQc7mgvpQijsqoiqYRLsNxSt3H3NirByPBIJfdM9y5FqTPVQ5kFMFvWiXS+paOq7xMQVHPtRHZBpzAod3emTufECqYv5Xzs9Tcc23jaUUW90gB2H4TjzU/4tkIRxrc1BtyR8YOYyAL3Av+udk6BL73RDT6lns4tQZv2tL4o1ifE+kTXqHmtJt0Jbui00Cdt/atrhfy22zRG0xbsWdEDCj0sXHt9VSYJSeqCNNo6k/PbbITHGB6LyTvm2TkHDj+lnmIXY89rXzITWkRySFe9XbZNBZl3J52kDnGjPCcR8SZFx+crPIcox4FSgaB8nlBEYuK/ej97kAFFzQmgMLv47JRbHG7TIj+Px/O8ntSurjanqiZe6CxBs7y+YdzNEmbbzjlBsy6c+sf97/69+XUWxeH3MApJnjTxbY59JGRwIqR/umrDH8e+s586jVEqZUxh8DZrbtzaED0FlKGqXHD1icQAzslQKAO1Q7VJEqUMeeVi/broFmDKlB7+7raFMtSV60+yY7i42b1Dbqv1cdoYrm2cSs3hFM38VH7qIX6oFTr9JABtAqc7nnuxxNzY9q+Z5o/Qug7UBOZ6hALfudZ3OAN7T9X41qIg+diT3J0aB6v9+3vs3RcYb3nf2c9pTEeTY8eFfSo3VUuVFrMUWjtQBJVm1r+NIprc3AfWKqHChEOsS8RSRlSJgNHkmHfh2+qxivPEHAsHlFzc0UmliG/jhmsKFJ5SGlVVfT3wehH5AVX957eizYWg2oZpAmdb+aZwOk079PL0pGPSITQJlnXvaR91s2VTH9vq9ftnJ+i68HkklP2zZprNLTq7e3TW14j3zb5258GYdJmJhdCR6P3YfM6xQ2qOIWX4qXxycXbE/MATaP04l2U568BS5m23CFI3WXsmXOfl7QsMNc3teM0IrdldI1Y3jHpilN6mV+yQSbth0zUtLNS8475eT5OH/yzMciKcI+NP2XYdbQ5ffh+b8rgfaq9ALhpvjOWrOywdX6P7rA02n2d+32x5UkvkUGY985xS/PMldcCaREVNWZjUQPmZhMooGP5j97VQ7r1JKTVRJd0mrNorYwdbAUDUeHSbi2H84JAzp3YZ53fYItrkSOW04DOc8OoOSCUlwDObN2osnRDcND5K6lMx+dfRp/y5vUnQ9QXitnPT0EAxcPdy6M1RRXd2CR8yKtGNC6v0Lp3m6qd7GdmkCnOWe9kFEZPZz23kodrw+AJjGQWgODxHBxkTVjGnLCidp/AUDVopIJyWtqRquSIxyLhG67JjeXgcxjbZmdw1IGrMvnH7cT3hqW4XRESAXxORv4yZSS5gwlzdlIe8EFRvJGZpsPyx2CK0HuKMNk6MDYJEPW5km7A6D5yJuK6lncdLtX7cxY51HqjbOyy939hjupePsf+MZfbvCUutZIARHt2kBmbi8+M5+iGBgnHF2SsR2oW8RiHwg7H7GqSJ2K2eQOvzB50g4JrxM/447Vi6Asku9N7RoX/Wxi687za7/TfRSepoEyqbBLuyXjvG6mbypqgBpUZ2DtVc08LcFKJtWl1NQrpfb1A73tROvU8eP5A8Ry5vsbJzQPfySQD2Huixd29AtsIEnzRMgRwkrcatH3Dfj2zhuKwl5SWyj87TfrrwUvUQU+U4lto5maSslIk0Am+jpZUgPN4wFa5+Qlh5S4et+0+TPa9/OE7grYLPR60fr3+fskbOFTi/SaMKk0LkPILjZCNoochEBIx63+ecq9t45j5yx8WtaXInulQglq6jV7foDIac6Z9l59lml3JwVnApdifS76aHNe/lmIsoM0uFg2r+LMe880XwBFSHIDc/XR5V7ZTvgUfROuThb60HpZ8DxqpVRDA6BkuXYPWcOb63ucTwrutQvNxEGI3qU0cUE5GvAH4C+CjwuD18L/BsEfkOVf21G93mU+fp3Cochas3Lf953dzYhIad8LxxTmeaVevahjrmuU/fMcHxwealEtSrKnf4IYwMkz64cIW13QHdK2sMzhjBbnAyMGFS/HndWa/shFhawlwMPqGa0KzWVa1JH6x1uiaQujzt9eNltiHP/FWEpjuH1hPbx6G3ijuBYOOjpsL0QpfbhiZnuFmmf1/QbBpjTcH/69mq2iwBfl0ikxorr89NY38ik9o0NMSwdBxq/9hE2Vnxi102tjJ7kX02eU70CZPw5djmMkuX1tm/J2Fw3JRLV6ksA55pcyLlr59z3QkFrhnbbJFU5Qpvkdak0pC6zFQTtxBXAkWpufXiX4ae41Q4gtE6RH0pz6Nw6j05o0duY9YKP/VtE6bwlDXPzQZZpBqjztmoJthOOFjVHfHq731dWFQrTLsxZsevNsX0dYJrGB4WWP1x6CgEddrBtPE/MY6naIA9TTKq6N4+8r6HOf7YGgBrz7yLnWf16J8W8l5lrSpD/nljeSI5gCdUhjYTYJWlzSTJkEFVxtXZRL8qYwC7JdIqGfJOpT11wnAwqPoTjpXRhmAcE5XulunU8sWC4Yk7U9wx4anuMKvFdLwC+HJVfdQ/KCLPBH4Z+NQb3eCd+cstsMACCyywwAILPM2hCvn1Bfy/1YgwKVfreBy4KWkVFoJqG+bxuK9rUuvapGmc1Vo607qHfelsNcs06Tu6tGVdqWtXZ2lTfeqAry2bdd0c2lbVAsqds8L2Dsn+AcmlVQB6Z1YZnojpnwknUvc5ZYXzei6P20xUEwH/k0kTahF61l4vyLnTEPh8WBXAN61aOO/siQDtAQxOQXqPzcj1WKekCcQHWpa7LZjXrA3NY/2oESca8o83ol5nGBzSrM6dhMIPno7VoM1rRvXR5ojSBmct8Z/R9i6dgwHJpVWGZ01MnOHJmIPTQuF52DuEIybGN1TjsPA1r17IH9O3SvuaJ9V4dM5UgU8xUCZ4g66cM/v7fO1RF/rPHrP00aQs52gw0eg2cvuaaExtFixgIjuZ1DSUHlqdqvy66nXUUVrEPF+DPC/N/NKgqT9EA6jDjcUms/0shy7/+mkUmrC6vnRAC0PUJbl438c48egKG/eeZP/+ZfbvsVY+G2KttHBhver9MGlYLasdu2WoNVumzPDnjodQ2KxqfoY/ya2TrDd+lUpT6/rjwlA5zuzgpNC/R9n4kJAuC0Fm+t4tlPjgTnWmesppVH8K+CMbmsqSK7gP+Hrgv9yMBheCahuaQt1Mw7TFfoaA1xYGqn68MeZpU7YWmC20NpWtO9m0cV1n8VInOq2t50qT7DiFy5sAJFs7JMfWCfLjHNxlXt4iwuzThAlnkdL7M/YE2ZQynJSfUcrFnCxNoFklbKKTfFhH2ndxJl0swXAMYimnWdccH96Vs7xuDh4cj0i2QnpXlN6TRoLIeneI6f+oyPPKgQQmBQE4PL7q6YTD8PC4qqNuep+WYa1JcM3tOzIjzW+dTiMujFC9H219bIuIURdo0hR58iq9qzsAdNdX4bNO0D9tQuo4HrbavOhiU6wCpXPUhPOKmtjBftiowlJfJlIG2+tR80x8j+0iMkJC6UyVKOFIiPvV+M6WYHwqY+14n+GKEVSjPnS2CzpXR4wfuM2mfzeH+nNX2/zmCaQuRJ7meeM81CisNlFj5uHq2/dFaDDpYwRU1ydDCagE2jJ8Vc3xylEEymv98hN9DioHWJ9i1Qaf8uDSrxZFJbQGAXrQJ/jIOdbP95DPux+AvftCM0Y9x0EXE7XwIqIUjm2RGqUBVIJoEYP4joBSCajOmcs5XvnCrx/2z43bcASdTXudrW+8rshdA/rbS3S2YOlJw4dJtkfsPXOZOxFPNUFVVf+ViPwP4KuAz8c8/fPAX1XVD96MNheCahu0JgBOE1aneR63ckgPH5+IQzorhqm/c87rO+c5NEJNWod5MctrfKr3tE4IJhoUk4JDUcDOHkuPxYzW1wEYrVe8OdFK4+QEUl9rmcVUnFM3r1sv1UNp/YKKiF/GZo1heFrJVwo0soJNLkRbEfF+1fbwtNrwP0qamYOynpIPApYupcRbRjux2voQbzLafoN5xqfT0M+KLOE2Mk1JAOpoi3ta7zNwKHzbFNSF0pIX2DDvl+V84bMumLQJpfMIqzDh+CM7e6w93CHrrjA4JRO8PMe/K72nXRgqbzPlIk34HGpnKfAD8wNVFApv3A/uUorjhtAX2DBpxVaHeFcggMHdVqjJBcmEg4MOPGDGbfTBHt2rY+IL26xlt1Gj2hKKCji8UagrBiwXs+5I5fippZA2rd62c/WNTk41RnytvtsczXAkLMetKx+GiIuNWt5jwKwIAhLWBr4/D7hri9pGzeP0ApBlpp4wRIdD1j5olAh59yT9U2KSBDitphvW3m07zf5EwH+lDDvoR6twaVUJPM99rcb14KzpW35yTNTNyMchsmmk33gvQAVGxxSx5O1gJIz2EvKzGeEgItk0CoPwiU3W0pzZM8qth/LUcqYCUNWHgIduVXtPradzK1FfWNs0SW1o0qbO0HD5i/PURbq+aDYJAdP6Oyvea9N1szTDdTNz3SFnihlatYC0WgCkUIInNlk+YbbYGsSMVwSNjCDpsj355voJr3+3uLs1LjGTpO897fKaq0C2CuM1c6I4lpKsjClGEWFoJ8ndmHjf7OSdV3R+KkWCAh2FjPet2iBQJBeSzSFqn3989eB6gnzdOswbVcRf9Nu07W4jNG/M1hbHwEMWBS+jmmlfys0OUI27sJZ8ol5PnlfH8uKw0NGGluQYZd+tg5V/X+GFTVY2OqRLyYSGPu8wEWbHbbgCTyPqRw/wF3waHmWQGo3t+HRGsGK0SCsrQ4JACYOCrW2jTYr2Awigf3dBfNJYArJxCAcReT8iXq3i/IS7I+Mw9sS2i5h169GkBHBja455rMnbv1GT6s/XTfF2y4tbxnQ9dqr73DD2psJp/y1FoDVagCe0aqGVBrVpbJbHZmjtSguiolKY6bMoSmtX79I6g5Muq4Xrh416UlRjVBQIoJBJaoqLMezirlb3Yq53x8ZrkK4XxHf3We+ZCtIsJIkztraXiXfMMwoyGNwF+WqB2NjDGgjhXohGaoL/75mNl/b7BBfSO1JQ5c5NldoIEXkX8Abg51X147eizYWgWoebSKbxoqBZc1Q/dqNCik3jHTXx6erCxLz8Qf98XZPha9Bm9RMqHtQsL9UGHpUGJnxK9+HLAET9Yxzc3S0jAkyERikgKCqvaLc7h0oQEDXCrZ9qz4WqStcLio2MuGcqCBTGfRN5PRuYiqLdkLwL43vGhN28LJd0MoZFQHzBTN4r56B3uUCGY8RpuWfxHW8W6kJVU8ixNsyrZTpqGLRZbbeFsWoKT9V2XuRQefW0VIChmxwlzFBTm0330iTU5Dm9T2wT5OscnDXjpH9aykDpZRM2FFCpecLTrHppLKWo+H5QZbEqegWd032Od8eE9uQwjRmOIopC0KtGSi46yuieEUGkZXe7S2MGhdB9tMPKY6bRpcsZQd/lubyNmIeD78rVPzdwTf3sVYcE1vr83TZe28ZwPQOV/93xVrVZIJFAJvirOm1sujrtX2mSP32LQS2D1eH6asf8NK2esN59z6OcvXSK/WetsXePaXS8Xgmf/hwc1LT7QWrm4JKH3a2Ouwgt6TEzt3ZO9TnWHSOiDEZx2cW9fhee6Josb8DoTG43eAr2WB6ELJ0PWX4CVh4fw8BsxqTTOcRTvlNgNKpPHdM/cAzYAN4iIk8AvwD8oqpeuFkN3lRBVUQ2gFcDz8f8Ht+iqm+tlfkS4McwLMQrqvrF064VkRcCrwRWgEcxvIhdEYlt+c+29/UaVf1XR+50U3aTWelSfczSOraY/J2GZ+4Uq/V6jhqkfRrqmgWYbXrLa4tCW+aV+j00Cfwu2cDuLgDR3j7rl9ZJHjzO7jMTUstl8oOlOwSpmRtdjFVTwAipAVVA82yloFjKiVZSkrAgt+Z7dWbWQUjUt7+JwvjeMcsbg/KWszxk9Pgyq58I6GyZg6vnUpJNG38ltTqo4R2w2MOkkDqLunFUtGWscpg2NudxXLHjplHD2lanH8d3nvitR0GhVUzV+nGYpLEUBWzt0NnepfP4OgDJc4+x/exoIhuQBlSh0tzeEMxg9sJOlbzSnlJsZETLZpCvLY9IwpysCEgtP2UwjMn6MYxCgtz0qTgx5sSJfQ4GHQprLh1/fJW188LSZWXlnFnYo50hGoVIP4fsNo5hn5vq4Autc2yq1Odf2u/l36Z3Ydr70bhhc+WDSTpJU0aquvm+7FPNmlATXOfGhDDWEH+2CfUytXFcCvODITx2kdXtPeK9uwDYeVZC1qvGJdQsBa6qzLMQxJXVYHxMyVcz4tUxJ1atM5co4zykG+bs2Xl5tNMh3IsIh0K+bPoTrKYUaQiZkJw3m8D1jymd7Zzlcwd2g+PI3GN0cJtjWrdAVUiLp5TOcEtV/yHwD0XkC4FvAN4lIg8Bv6Cqr7rRDd5sn+RXAG9W1U8BXkiN02CF0Z8AvlJVPx342jmufTXwfar6AuCXgO+xx78W6NjjLwL+jog8cDNuaoEFFlhggQUWWOB6oUCBtP6bByLyqIi8T0TeLSLvsMeOi8ivi8hH7d9jXvmXicjDIvJhEfkz3vEX2XoeFpEftxmo2vuu+ruq+h3APcC/xjhX3XDcNDFeRNaALwL+JoCqjoFxrdg3Am9Q1cdsmUtzXPs84Hfs518HfhX4AczvvSwiEdCz5XeP3PG6JnVWOlL3ue33bDHh1LWoUzmp00yh08JhzfLU9ov6Tgc+7+uQttNXX87Y5xzSytb4ZE0Zj3yvXF8jsbVD7wNDuk+sM7jHhP/Zuz8m7TER+seFLHEmJaDMQz3hyR+AxAoq5FlIPrSFRyHhfmA8TE9aj9HlMbEKo1FEZB2sxvsJ6x8LOPGBEXkclHWSK7I/qMxtaS0K+63GrNSp9ec/jR7Q9D40cVGnBfz3cRTNboM1QiQw/NRZ1gVH9ygqpuWEV/Q07mkb6o5Xto6J5AJ+goAggM1tAFbe1Wfp/AYH96+w+wzTj6xH5WjiZeiRnDJkGhjNVJnvPCwILI86sDyC/UGHdGgq0B0Ttyc50y9NsFoIBwPzEoy2jf315IeFYx8eUERB5dwlQrC5DaroqD5t30L4Dnv1yBKzNJ52HMi0kHy2DgmCdueqtusmfBjs+Cx0Uv3j5nXfyak4rFV1GtRDt9OmVfVpBdPWDpc4oGy7wbJV72udb+s7WxUFemWTrrUUJZunOXiGGce5tXD5wf8n0qq6JlOTvQqgiITimBLHlSY4VyHNQraeXCXcN88tVKHoFRQbOYxt/1LjbRj0I459yFq1HhtSJOb3Dq7soPadIwzR8W2ei1ugSGkFuU78KVW94n3/PuA3VfXlIvJ99vv3isinYUJJfTpwN/AbIvJcVc2BnwS+DfhDTPD+lwK/UmvnI4fuwVz7ZvvvhuNm6psfBC4DP23N9e8EvltVD7wyzwViEXkLxkH6Far6mhnXvh/4SuCNGC3qfbau12PCJVwEloB/oKqb9U6JyLdhfgi6LNVPHxbmmoS7pnipHhEdmLnoTXgqt5n52+qY8OScY8I+3PjMcqXgOs2ZoCnUVb3OeTxom44VGPM/VPyu8Rh54gpLB9YJZOkM6f0BCGU6yNKbOqSaOFPjpBJkJpwJQDgKGO8nFF0lHEiZpadIDI+vWMrprJrJeKU34mDQYbifwBNmke+MDB81vjIgu98IzoowPr1Ed39QmUujm/OKzRzHTWjjUF8PZaQpVnC9/ra+HAVNDnjXirb3ahov0I/36r9/064py+QQepSLNCV4covVgxHZ0ikAdp4paFg5nwAlj9rPgx6MzFjubArZqEO2Ygb5ZrcLaUA4kFJOytdyNCzodlICG5CyKISDfgd5rMfKFVPp0uWcaHvA6K4VRseMCTVJQrpPgGYZktyUGN7AnOO4jWM/K4oEtQ04lJ+dUFp+b8qo1rSBLjcoLTdUFwLrnvlNcVLnjAxgiioToa1cXbOoYq5vhys8xHk9VLZhI1rs7ZvvD+2zem4ZKZ7F1rNtOEGbyU+UysPfbq7EzsOOrtXZhHCUkC4lXF0x8304DJBUiDFzMZjywdqYICzQrulnPg5IHuvQ2YSlJ81mKj63yeiZJ9n69DVWP5GQHBiJuOj3J+LH3km4ieGpvgr4Evv5Z4C3AN9rj79WVUfAIyLyMPASEXkUWHP0TBF5DfDV1ARVVf36m9HZabiZgmqE4Yt+l6q+TURegZHof6BW5kXAl2G0oG8VkT+cce23AD8uIj8IvIlK0/oSTJCQuzFk398Vkd+oe6VZ/sSrANbk+Pyr5SwunRMsj6CVObTYzuLTNWnH2vo4Lxq0Z62BsF0bTVrWozjV1DHreisgaG4Xk61tANbeGxANT7B/Nio1pWXwZ2HCWcWR+F0IFMnNrr6IjYAwPGPD93QLZCmDQujERnrd2lqGS11WHhc2Pm5TMAZCZzslGI5Z+rjpjyYR4xNLk8/0Jmmj5h7Hda1l0xhp0qo2YZ44vfO2Meu6o8SArcdhbXJyqo3ZaYKub+GYiA7Q1Lda261h5ZyAYwrDeAybYzbeazVGww327w7J/FCPnie172VNYQRayawXP1B0AjSA0fEC1qwloJcyHsR044zdvtGejh5fZulCwPGHMorI9L2zOUZ29ukOU5JVUy5fTmBlGdnePdpvcUTMNY7LzeuMzUl9HmtwnlGP2zoREWCWVcz/WdsSQ2gBhIfHo/+5bdw5YXMeLem8qDt3NSaMOSwwm7I1qwB4Y7hapyQM0eGIlQ9dRQOTS3r/bqNdFahCCQbmMsnNX9eTcARhauL2FtuVsDY6rhQdRSP7XuVCHOdk4xDdNJP98vmAYx/Jifo58bbd4Y3HdD72JJ2LPbLjy9CxUQr6fchuW+yKqVC9Ic5UCvyaiCjwn+x7dUZVL5o29KKInLZl78FoTB3O22Mpkxmn3PEJiMjnAg9Z36AeRjb7bOCDwL9U1Z3rvZk6bqageh44r6pvs99fj7mhepkrVlN6ICK/g+Gj/m7btar6IeArAETkucCft2W+EcNpTYFLIvL7wIuB6w+fMI8A2GROcYKrZxY8EprqqzsgNYVQmajj2ie8phiEZZvQrF2F+SIE+Ne1tVE6JdRNufbz5jZL7x/TO7fC4O6KDuDCpThnqzA1Qmo993QRQ96DwT0Z8ZqZ6ESF5aURuxfW6F80lJ7uDixfVJaeTOk9vmeuDwKCUQrbu0hm41F2O3TGmemryyk+uk2OKG0e6fN4q0M7xaPpd55Vlzs+h/Z/InTULNQ3dk3v4DU4jJU54jHvrIRhu7Dmm/znyRjkfw8EubwFwFp/xPL5VQZ39dh9wEzLLsKFhpMxJovYPkqtrAZ5AunZMZ21EUlkxt5Kd8TFrRNc/ugJOpumb2c+qvQujelc3K3Ms4MRHAzQnT2CTdN2cGwd0hTV4vY7oTRp7afMef5Ge1oGqqkbch+hZ1mqCWolfA17U6zTaXN/UxzgqpNoLdta5Wg1R//rwqp/3G+/qX9lvGFXTihFTDfui8xE1nj0PCtPGqvzyj2n6T9zg+1nReVGK8jMcAucoOplRXNUltxGAhidzglWx+g4ZPmY0YjuX14mu7BEcjVg/RHT9vLFEZ3Hto3j6sCGoTrom3UrjokGa+jQjt08p0jvTEEVoGiJBmFx0vFOLV7V4LD0Bap6wQqjvy4iH5pSX1NjOuV4HT+FkdPA+BL1MfzULwN+GvjLU9q+Jtw0QVVVnxCRcyLyPFX9MOYm6lkL3gj8B8srTYDPBX502rUiclpVL4lZFb4fEwEA4DHgS0XkZzGm/8/DRBO4ftTj9U3TTvlo4tTZBe2aTJdH0WzUw65UnWjt99wTd73eMlbqbC7soT5OE2pnaI01y2BnD/b2WdpfByAcnWD/3mSCt5pbran5bK+NIF2D8bGcoJtR5JYvfLHLQdHj+EeFlYtmYtMAlh/dgzxHhkZbJXkB/X6ZdtBUniNZBlGEWm6qjm8Tv69NS+rHtm0bv352Kfd9WjlX7zx9aqxHvSLBIYFz7kQYsxIc1CMBNGwES95rrd4JQXRK9I46/Cge4nH/Si5rYTc02zuE+wesbK4ixUkA9u+JKEKqZABQZqYiMEqvsVVCFklBZ21EJ87Yf8S8C4NBwPrjsP5ohlgBqPfoDjKyYXtcyKb+AB2NbBYkq0ne2TXvZJqhd9oC72+Q/PmgNk5bw1BNw6w53QmtDfzk1tSmWhzOLiWBJ5TmzRzVaWuE097CxHVldAPb5txRA5r67oRu102fZ1uLiy1xVGos9eHHWL60SefqPew909A5xqsmO5tkll7lbkPMmM6WIFux99HLCKICeaLL+AmjET1+DtYeMaTtpYcumXKDAZqmSBhSHPRNV+ymKsgL9PLVyQQIN0JLfRMwh+n/iqq+eGodNjSUlY1+CWNhflJEzlpt6lnAPjjOU1EmAe4FLtjj9zYcryNQVTcpvFhVP9t+/j0Refe0fl4rbnZMhO8Cfk5EEoxm85tF5O8CqOorVfUhEXkz8F7M2H21qr6/7Vp7/BtE5Dvt5zdgJHiA/2g/vx8zrf+0qr73uno/zdzfxMWbMzbjkYTUo8R7rHNG3V9/lz4vPcAK5G2Tf3WgRava9L0JTdmNHNpi2R5y6CnQq0Yz1dnbp3NhA02i8l5HZ1fZek5CnsB4w1ySrSh6coRsJhz/7S5jm0Jq/dGc3hNDwr0BMnJ5VY1mvFjpVlqonT1j+hMpJ3CJI+N4MhyhA0+AvZ2Ywww+IdT6Wux6HfM6STUJwvV2mzZMvkNKA1o3eNcSqq0lNmu9/kbB+AgWkkMUgpZ6RQwHVje3WP4jw/9bevQYRTdB0pzBfcZisPm8iKJjwqxl6znhMaOx172E7m+vogHc+3EzbruX+gQHI2T3oArTA+hqz7zHO7uuk0gUQVwtBzocgSrF0Aqw2W1yRAmCww579dBn7mPDZnemgDrN0tB0fJ75c56MUY2XeeOwmEyfag8aAdcmEpgaa9WH7yTVpmFtWmfaqGn+O+pCWPlrTCAUB32ihx/n2OZGVV0UMLx3na3nxqX2NFuCdFUpNlJk34y/jbd3yJMOKxcLVh4zAmh0eQ+sMFrWd+YEsrNv5n4rJEsg5lkHAlmG2t/rTtamKkJ2Hc5UIrKMER737OevAP4Zhhr5N4CX279vtJe8Cfh5Efl3GKrkc4C3q2ouInsi8nnA24BvAv59Q5PvF5FvVtWfBt4jIi9W1XdYC/dNmShuqqCqqu/GmN99vLJW5keAH5nzWlT1FRh1c/34PpPhrRZYYIEFFlhggQXuaMwbhqoFZ4BfspGkIkzGqDeLyB8BrxORb8VYnL8WQFU/ICKvw1ipM+A7rdc+wLcD/xXjM/QrHPb4B/hbwCtE5PuBKxjfonPAOXvuhuMpFWX2lmJWJpQ5zel1TA3oPyvrTlv7TfC1C3NEBfC1EW1aiFa+6rUGjnfX+iZk8Ey0M3iSTtvindc0A8uVEqsh6o4yeM4ZBmeVcGidAFKQJzqceC8cf9cVtGMzoIxSE14qm0yFSbdjQvb4fYpCJOpVZS1/eMLcH0XGceZ2YJYHvnv2ddQpHPP8vvNopprQ5HBS0+74JncX+km1uHGB/BsoAE3vZ5t2dGq9TuNU47C20QQkDMvxJBevGONuErNkf4vtZx1n/0xBkAqSCsEjxrR67DycffMFitUlAhsVgwPPgcTd48aa+euNb4kiyvS0vindaaFut7d0GE6M0zK7VN0SYL+X9IW29KlNYaim8vwbOKnuuMM0y1fdm36ODEmtqVO984foBLWyU83+dSeqaV1qcshy7fhZ3vxQXKoUu/uTWtAso7d/ht0H7uPgXlePGCfXKzHHLKvy1G88Br0uDIZleCn1fttg1VgXpD+qHNqcVcvxyfPc/M7uWTtN8h1o/lflusJTWYfxFzYcv4qhTTZd88PADzccfwcmydK09naAvykiq5gITRHGp+jJo/d+PiwE1Tpm8SybzKQT13ufr8Vb9lB2mxmm24lYfi2m8mnXt6GlTN1RYaLOWcJKvd62z7Oce+rHPOel0hSf56h7hlc36W6fZrQlnH6X45gq4agg3uwjg7ERTh2y3NTpP8+DPmF/MLnI2MXShWqROK7Ou4nzeqIh3Ag0OaQ18VWbrjkK53he3vY1QpsW06NmnZoVueMoffH7gFkgS2GvpY+zqAKqBaRV+ZLTnmXIpjHTr57fIF0JOPNHYxOyZ2weSrzZh719goN+9XtZLuwEtraR7eDQPUgYUgwOJmO/YjZ785itbyXK/tS5ql5MVPNBmvmp7nhdYGxzNKzxMetOshPOVm3wBTvXXH3sNghSEgjaIES2xVw9VLdf57xCWr0fTc5h/jkXF9aPv+rOZR7tIIooLl9l9fxZhseM6HHvb+2T9yKinSHBVTPGdXPbbPAbKBcSBNV86/sHeL99MbaOVQ2OaXciFCHT27xOXANUdQ94D4CIHL+ZbS0E1Tq8Se6QADYNTUGoA+YSVq/ZuepacY3OVPXzjUkCptRfnmsSamYJDvMIvg55bhcxyyUcj8m6EB9A77Edc9nBCLoJGoeTAqkfwsQX6ILAcJ5suCnDg7KCiQufRWp2/WlG0DUhVKTXhf396fd2M+DH/XRo41nXNwlNTnJN3v3zxkxtKuOE5Kb5ueGdOfSOzAzl1sJndm1PQ9s729SeL4TOiAzQiFnOaIVJJ6w2JFvWewbhEHofftJ4O7vr4vgwNx0j3JcOaq6+LCud/cCOZctDlcQ4r+g4tXy/ZIK7esvh5t+wlg7Upad1aBKmvdioErvwCNZ5zZ6biKNa/y3mnf/ded/R6tB9zOH9T7MAWiswWd+Ma+rC2iHheEp/6s5YLtLAIYG4QRAur5247wAdp+Sx0LtsDoePPkGY5WZ8upjT3m+t3kZEwtD8Zi4iR2Yc/cS/tuGebUcJkoRidOelUVVmev3fURCRL8BkCC0w4UL/BfAsm8b+61wc1huJhaBaR33xnodgD83aJxEq/0aLJpMm3kJcn0jqu/k2YWNeTVbLxHsUj/+Jyf1aMMObv63uqaGy/EN5TnB8g/EDJph6thKx9WkcFq7yAiK7uPiLcT6eFNicoFYLo4QK0umUFAOTucVMqNKz3gLu762GBMYpuFE77X0Og8MLa1Oih7qwelQh1V1T1+oe6lvNnOodmxBWr8Xsfx1a1Fl9K4+1RR6Yt23V8vdRzZBuh/5nP4N432ygrnwGIIquryBPXq0W6MJaAeK4/J3KyBNetizVSnirNliYiBVWSAUjgEiSQBIjK8uwuTVf/280AqnGqz/X1QVXf2zVKEMyZygrV89EUoCm/pR9ce3ZTVObkNqEJjP0LGXFFMpJPWpAk3bVHWu6rzp9oCxbu5+m7/W2JZBSSHVOeOGJ4xT3nIIw5PJnVZuK06sr6OWr5nm6fhWFmY8LPbTWaOZtzsS0U6RZud/VKCqfre+MFiSJmZPvQEEVvT5nqtuAHwW+DlgB/jfw1ar6eyLy2Rjnqy9oukhEngE8R1V/w8ZfjaxWdiYWguostC0wbcdnCVNOYVuLjXfdmXbSvLntJm3YETi1E5fNacZuEzLbIgjM5ZnrQunM4M86/lpxYo2Lf8IIif37cuildD6ReMKnQH+AjEPDP03MqyAHA6NV9cMzNT2rQIyWJgjAZe4ZVPFUy/HR6Uy/t5uFUvNSEygLrTiHE+PSCV7us1QaWVfHRKiXmnZral8atIYzOdaT79dc2dv8OMN1y4hfZ140C+h+36ZxGIsCE2unRndpouk0fW5r89D9FeT3neGJz4tJV+34vGtI8EgP2dk319hUlqVGKgoNfQCPOuBpVKUIUGycWKtllE5SvV+OT21NtWaM3wGLqP8759qs7WyirDitqh/oPwwrnquFP6/4SQHKvxO/v0JYG3fueB1N3Mg2gVMCHL+lLaVqK+y1dQ2o/7c1FSugRXBIoK2qPlynf73mHI5QABPxiPMH7uITf26VIoH0REb3vBU99vYNR3o0qrjFSUIZJs5uxNxmQ6Ko0orn1bPy5ybz7GpREcLgjqOwOCg81Uz/saq+D0BELqvq7wGo6rusAHoIIvK3MRnojgPPwoS+eiUtHNo6FoLqLMxatBx8qkBbOecUoHqIFjDVyaoJ9UmnTYiAubiGs5ypnKDZlI6wrtVtE2jrwuo1a2QbUK832Okj+ToA4UHAqd8LiAY5Yjl9jFMQQZd6pKdXiPatSb9jtEiM08PaP8/sZISiwoShKrzz3QRZ6jWbIm83nKn90PiYczM277tQL9dG9WjZAJThb1y/6k5U9X4f4vo1aG7rgqQLLVbXgvoavHqdZZkpjopH2QC2xQ/2HATDzT2i/VWwXsFr7+my9GRaPuPSwauzRH7XcYLByNBa7PWiCmnqCV1WA2Zjxro+62BoyjuzKhgN1A18R68JjWb0JoGrYTPUNO/ZjbsEwSEnrbm13m3jri6wBlJxUpuE0zodQIsJwXHiXB0eJ9Q3v/tCaZsz1SEh2K09NYG2ri1trM+/tuxr6GltzXgKPvwY3Zd8OsOTcPdvBHQ3q0QommXGCrZi07KdOAZ5gYxGldOfUx6Ap0AoTGBsj8ai49RuDMyxoONZtG5iKuDrgQJZ8ZQSVP3Ovqx2LqEZ34mJ7fo2AFX9qJcpayYWguoCCyywwAILLLDAbYAiTymOKvADIrKkqn1V/R/uoIg8C3hNyzUjVR2L44ybJE9z7+oXguostHlFz+Ku+vzGNkwzGTnM4sVBpR06VP/sXZqvJT2k4fQ5mY4jNC0BwDSNhFdXvb2ZmWPavHddvU3t7u6x/vEzAESDgI33XkWywmTkgdJMmp5eYf++Dt0r1kv/ZA8plHCYI6lpLxikBMOxec5uh2+zUvnmLeewocfXTFtw2KHpdqJNI1rTXhq+2JyOWHA4dNg0jdc8mOe9KNvTdo3wPH2ovV+lybEp+oZPj3D1NT2XWffaFsHiEIc6R7d32Pj4XRzcZZ7xyd9/0pj709RoQK1GK7/rOMO7eiTbIXrCaKaCtEDSAklzk+4XjKUgz5G8QPsmdJDuD41TShJPjuVOx2itottoHahz9O0xkTnCTDWN0TqNpWYFqluNyjnKaZrLcEcN1rMmioCpZFJ7OiUlb9mO01BOCal02NHJt2J41zU4clVa00or22byb9KkNtEEJvpe1yAXBcc/PKa/FbP+e49W4QQtdUWSBD1zAoD0+BLBuEB0uXyewSBF0tzMSzZsmtG4ZlAUZUaq8vexod4CF44Nbh8Naxb0qWX6V9U3tRz/GPBvWi77bRH5f4CeiPxp4DuA/zlvmwtBdRqanCPcsfqk1OQkcmji8rhPE9w5JhxGTDUNJs4mNDlYtd5PA1+VFgG13sejeOg3tWXraqQOQLuw3NbHGdBxyuojxts+yJdNnNR8DBsmBh+5or2Y8UYMCmKff7oakfUEiJHc/iZFj2ioRP2ccGAmyfix3HBcw8rMJWGIdDtkqz2iK3NxxG8t2jZd9TlyWoSFtg2aQ1uEgHnra3RUrITFQylJQ+9dKaaMVdXDJuB6OwWN6VPLcER+f9x71yRUz3JwnMYl95+frWfl0X2CbLk6FgYQJIY7as2Zo5NdgnFBEYcUsblufMxwskUpdRfRICe0FJjwouUwHgyQJMbnZctSD13ulCmDbzsmNgomEsIEVC3vuOHauuNVm+Nrk9e/3chp029ZP1bnQpd9r/3enjBV/m2KldqUmcq7biqH1acdlJcfNuHPk2J1HjpBW39KwXGc0n1kEzhuBMaDA1Nnt4NzAhwfX5q4NluK0cgKxMe6oEo4LgjGdvOQFwT7Q+TyVqmAMOG8ciSKjZOroxP0B+00ituMp5rpX0QexKSvv4DJevWjwOcDDwHfo6qPNlz2fcC3Au8D/g7wy5jIAXNhIageFbO0PG3CAMzFFS2dHjC7bg2qQOGa50fTNs2BJk2CHxKkRF3DdFTMqVGbql2dw3tavGccPPYEAKu76xAGZBtL5cQXpAXpaoIUSrJXLXrhuCDvhEiuBDZSVd4RRmtCuhyQ7Jn643NeelnntJCmyF2nCAYp7N4BguqsANeq1lGmmFykp/1WdSGsLQJGPXRQfUz5v2Ubr3vKWCsjANQ1qk4grYdNm5be1+Mdlw5IDRzjxs3jtPfwqBE56uGlrGY7eOwJVrZXy7p0qQdxiIZCvlxRwsJxQdYNCUemn3lXCcYKQiW8rkbIcki8lxNesu1YRxMdp6UzlWysm43aHTCOSy23++5i1sIEPxxonyOaNiw23vJEMW8D40JYETYIsT6mRbCox1ytB9qvHWv03G+6pv7Z3NBk2zWU4aL8/kxJEOC0tOJzQhv62dwX229v7Soev0h316aetuH7WOqhSYh2E7OhAjQUNA4mNtDhKCcYF2TLEUVktcCqhGFAdGmzMWaq9LpluEHd2ze+A3cgnoKm//8K/AKwDvwhJnX9P8Okbv0p4EvrF6h5Yf8z8J9F5LSqXjpKgwtB9UbBTWD1Xbr75zAtK8mE6cZousSbfNxnJafRJFbvzzwCB5Sag8psMt9LU2aHmZXFq60/1xJaa55jtk51Zv7BEFleQtZ7pHZhzztCEQkaClc/PSBbMX049kEIxxCkEA3NPUV9JesFZL0A8cy+ZdBwt7kIQ/LVHuH+sJyIdf9gvnu7Gah7Gjd6zueHx0IT2kIvtcGNDf87NEegaPp+SNvZsPDWBJjGtuua1HpfgmDiXWrLSCVSmdndd1VPwHeRFK7lXWwr6xym8hyubFbtnD1FutGl6IQUSbWaP/E5XUYnYOPD5vruVoGoEowKQvsqFLGQ94yQW5pQg0mBFTDhgTITbk1HlePLrcbEhsSipGbUtdzmgupY2zN3GtaG8/OGxZugHUxzDITmEGY+HWCiLW8s5nnze1v/7pWptJ+HheAShU4Ido3e8C0CcbtjVVWHT4c61PT2DoRhGWc6X18iW03QSAgs1eoTf7ZDMBJOvTsvlQgaChpAOMjKRC5FYtuQStPraAdaKLK6Um068pzCZrm6E5E/hUz/wKqq/iSAiHyHqv7/7PH/IiJ/zy/Ykgjg7SLyWYCo6uY8DS4E1WmYV3vaNiE28ZYaTHtGs9UihE0s5A0TNByeEOuaqrYoADDZlzZBEqrdrVRxBqcKtE2C6zx8silc1qnXNcHno3U7aCDkHXMs65m6D84G9F60SX9gBFh5/zJFBEUoxHumnWR7TN7t0tnN6V60gmdWmfv9sCoEkB1bguPG5BQ94iUQuB2YFmg8CD2tzpSx3DY2m6gvfl1N5esC64wxcE1oeud8lAJqYISzGSlRm+g4Wn9us7iy8whQbXDhtABZWqLoJkZIjQQXfnF4PEQ/f4dikBB8wHg6B5kyXg3pXi2It022nvR4DznI6Ty+OymABsFEtnHtRBTdhCCOkCubtydpBc0bh6nz8oT2skXL6iI7+OMRpm+2m/io/vep1zVQWYqaAFobg02CZFPM0onrJagEVHesSciVoEHQ5FDZOg91ltlfvA17Y9tW8A421qv40qGUa8vglJmDe8/b4d6NbXbee391aTckPMgI9wZmfgWig5To8l6lkPAQxBEkSflOBmdOU1x8sozreidBFfKnkOkfKETkuRiN6pKIvFhV3yEiz2ZCrQ/AFeATtWP3AO/CvBgPztPgQlC9kTgkWFq0CYrThMS2+gNMLMR5+DY+17Tetv+95kAAk1SApu+HMO+E78Pdd+3+6+0cEljnFWico0SvS35mY+JZaCioQGdLOfiD4+WLIIWiAlJAumoXiLhD3hE6mynBxaum4NhOeL75MIkJNw/Qns14Bbc3q48qzaQ9i8LToE97lk08zTpPu2nhnuWANSvblfucFy2hf+zv6wTJoAAaNL8l9cbbwF0rhQVPy+fX6dCmea5THaZtbpva7BmzZXF6A1QpQqGIjUUAID5Qwt9dZzWn1ELliSBqtKjZuhEM8m5I9/y+ET7dc/OoGeJMsvtDwmGKduyCf7vh8yqdI1WbwOoEJvc75bVyvvOpTwNowITVyKHF4ar1XWgaa4FQrukzHKuqvkjjZ3vgcAVNzlQ+L9YvNyOZgN+nxkQI1ATaNgewbgdWlilWzDgbHevgdkjOgrX2mlW2uut0d9NSeyppgcYBxXIHtab/6Oo+emXThKTy+qqFGmfZnd2KYpAkBCvLd2RmKpCnmqD6jzCOUAXw1cDLROSFwBrwtxvKfjmGu+pirz6iqs88SoMLQXWBBRZYYIEFFljgNkDhKcVRVdXfBJ7nHfo9ETkJbKlqXiv7b0XktcCPisg54J9wyMQwGzdVUBWRDYxn1/MxnfuWeh5YEfkS4MeAGLiiql887Vorub8Sk77rUeCvququveYzgP+EkewL4HNU9dZuoZq0pU0awFne023wtKpVVTXtTlFrZ1a9DfxBqXEMGzlHTSbVm4BWbe6cXFrtDwjPX0GPrzF4ntFMpatC96oiBax/vCAcm2eWJ0ZThVLSBPIkRApF8qLSpLr2i6JKPRlHJhKAPQ5U4axuBya0ky0UgCaHJqcl9kNUWceeiTBW8zgS+d/rZv4GZ5aJa+fQ8kpRcUzLd8KPBNAEP9g9Vdk2CsBUjuo0tDmMzYtS8ytlBqrg4lVYW2H3gXXiAyXZt30v4NhHMyRT1DpOFQhSFGRLIXnPBl7PtNT2l5oxx7cMw0p7OhqBxtCJJgKq31a48RZSjb9DHvY6OUbTGZrrmtNda5pm9z47yggcHrvTKC/T0DBvSxi2akSlPhX7CQMOtd+iqWuiHbTMEU2m/8NhqfK5tLyapnDpCkG6AcDoU9YoIqF3xYxdgKiA7pUhGgaolVBUIOuFSDesxJxQbKKKyXlOQky4qyxDCjues3w+K+TtgEL+FBJUAURkHXgpxoyvmAgAbwZ26mVV9TzwtSLyF4FfB5bqZWbhZmtUXwG8WVW/RkQSah20wuhPAC9V1cdqmQrarn018A9V9bdF5FuA78EEoI2AnwX+uqq+R0ROALduhr1WwbMN9UgBUAuv447p4UWzLYRWW5/qk/a1YF4htSnm5hEiAkADZ5WGBca/z6JAh0NktFSaSsMRhCMlyJTOVko4MEMl78WkaxHxbpUJJV2PSbbGRLsj6JiJT4fDSkB1E2Uco6t2mN4Jc6LPE2tcxFrGQlbj1YbB3L/R1Lqb6AH+hqjN0dDFdm0zozbEGq6nKG5FIFPLzlrcmgTeqo81AWSa5/gMlHWPRhAbITVMtQyhFvULku0RMs7KdMB5JywdVPKuORbtjU1M4DiuNl0ilcm/jJkaQhiW9d9JaKVduGMuCge5GVNNc0NTKKq6ANo0B8MhH4M2itQ1Zd7zhda6h37DPQKTcVnD6XSCRswa4xNRNRp4rNOyZ1UFq8/eex6OoYhN2DQngMZXD0z4wG5E0bFpfrMCyXM0iQj6NjJFmiMryxSDQVm/S6cqcWTGuOPCHtUZ9BZCn2KmfxH5Joxm9NeAx+3hPwX8SxH5p6r6mqbrVPV/ishvYFKoHgk3TVAVkTXgi4C/CaCqY2BcK/aNwBtU9TFb5tIc1z4P+B37+deBXwV+ABMa4b2q+h57zdUbdjNNg7yJT3etTiBNvLzGfjQ4YgWUwupE95xnbFN99fuZ4jk/N+YRcqd5X09psx5Cq2kh8JMHlPW4PNFxVP4+Gx8xTiXZaowGUMZQdfJcIHQvDggvXoUVR9rvEjx6EToJ2h9U9a8vw2hcLQ6jMbJ/YO7HCbF1oe9Woc3Lf1bIKjeO61r5NmehJgc5n3vcVHfTdW19mYW2PvnD0fW9KYh/vQ4n5HhaVtWi1KK6Y2A1SfMsfv7GcRqazhdq2gm9G0pzNh7aJ1tPKOzGK0gVGWdGsEyNIBANM4KrO6BKcOaYKfeJJyAMJkJRBWurWI+OKiFGXqBZNtnu7UDDuCs5qvV5rEm7Wo+h2oZy3DfwpvN8ekpkb1xP5fH7/apHeKlvwiaiGHhCaNOYLcf7jMQMTvAFyhirfhSCadc5aNGYaKAttJV/nREgYxOz12rpVx7epVhOKCIpY1kDyDiFUAjHNjLF5S2jCDi+hn7sMVMojtHxGE0zgmUzV+t4bHi0wxF60EefNFGQgqWlVm7tnYDr9x+VEHgH8Liq/gXrbf+LwAMYy/PXqeqWLfsyTEzTHPj7qvqr9viLMKGnepg4p9+tjQGE+cfAi1R1u9aHY5gUqa+pHf8UjOb1baq6D7zfHn+pqr55nvu7mbPQg8Bl4KdF5I9F5NUislwr81zgmIi8RUTeaSX1Wde+H/hK+/lrgfu8ulREflVE3iUi/+iael13GoH2kDM+mn5PFwKlHgrF1yZNy+zUNjk6OoH717BYi5uU2pxG3Lm2875A4f+7XhRF9a8JdaF9Spu+0Op/JoknQtAU+wcU95xidN8xY8IvlM6VIfFOSnSQmyxSoZQeqOHlbRiPjbl1OCJ4coti/wA96Fe/pTONu7iLqibTT5abSXL/wPwb1fdmdxjaxugstP0uTWNlnsgMcPhd8Oupj8Om4/49+fBNwUFL/2rHfFN/a1SAeiafGdEDaoXbn5H9LSSOjJAaiBUsU/T0cfrPPEYwGJFcOiDeS82/XaNNRZUiiSiSiGDngOLqJmQZwdVdgqu75NvbZiwPhqb/hdEkOocUHQzNv9HICLLjtAxjdadgIs6tN4+Vz3/W3AbtY8Zp+N25MJych+tJI9y/hjHeGh2lSfHR5njoBFh/DNcxjd41y9zthGYX89T/59fh/pkbK/+VwmgtFqyL2Sq9nnEElAAKJd/dg+MbpA+eIX3wDMFwTHRpl2h/THS1T3S1j/RHZkwmEbK5i2zuUuztw3CEPHmVot+n6PfRwQBNM9Ov2pqiWWY2W3mO5jn5/sFtDbM2DWZ/FLT+mxPfjQm47/B9wG+q6nOA37TfEZFPA74e+HSM6f4nrJAL8JPAtwHPsf9e2tKWt3uagPVm9QqK/H3gjcB3Ae8Xka/yTv/LeW/uZpr+I+Czge9S1beJyCswD+sHamVeBHwZRop/q4j84YxrvwX4cRH5QeBNVJrWCPiTwOcAfeA3ReSdlvhbQkS+DfNj0D06VaIZ83qh1zVNs0L6HIol2WK+re/GG72hjwAXvsV99ups7OtRNa9loPw5OH4exAmftec3waeNI2RpydRtd+2SxGx9yhrhGFY+bjSiMsyQrtG0ahSQrhnTZziyAmgUVabRcWqz3hSTYWPGY/NcrLlUul0IAqSTVOatm8TbveZxPBEfsWUsNqEep3JizElzylVXZ/1v/XyTsFqPR1y/pn686Z78Y02ZqJzQ6pdzx69BCJ3JgZv1Lrl2nRaz0zHjaJyW1+497xhFDEsPDSAMidIq84/2EopOTOCOjUYEK8tm83R1yzQXxYfuXfuDUmsozlQqht+KyE3dbM0cxy1Uj6Y57dDzr1sFTIOTx+pjqy6IlnUVk8fqY9HNay0WoUM0AH84+dFZ/Helab1ostwVeljlVNecgn33G5Qf9eD/bWO9LfFA7bwENopAIGYuBKRjOKNhHLH/KSdK7Wl8LjXjNMsr61MYoCs9JM1LC5ZEkTHx594mxYbjKlIv1q/NVidJAiKENnObZhn1+LF3EvLi2pVAInIv8OeBHwb+L3v4q4AvsZ9/BngL8L32+GtVdQQ8IiIPAy8RkUeBNedDJCKvwXj0/0pDkz8MvEtEfg04Z4/dD/xp4J/Xyv5tjPZ1X0QeAF4vIg+o6iuoCbXTcDMF1fPAeVV9m/3+eqxUXytzRVUPgAMR+R3ghcDvtl2rqh/CmPmxsbz+vFfXb6vqFXvulzHC7oSgqqqvAl4FsCbHD88q8zoiXY+uXmS2AFMPSj7t/KFJ87DQOoFZMR+b6pmGxsmzNrHXjzscJSZhyzl/ERBVkKHhJq3adKlJTNxX8kTIbViUIIlQ2266nlAk5nO8Ozok2JSTWxyVb5bmRnNKECBOsLD510szKsz/DI+ImeO4jiaT/6zNUVBbxJswLWbltPpnCsYt4+ZaeJ71960uEMww3/tm/6ZzrWgzS7fx5erH0tRwontdxN5vdJBTdAKKk+vGkc8JpWFCdnwZFYh23KJthB9Vz3RdFEgcT/KB/WdT23CYa2+e4W3ucdzmOOUwbc5r02j61qjSpH4D7tV7F+pOqRNlmqxs9Y1jrVyZZMQv67o8i37mxrD/2/vzQk0QPWS+vwYUeyb+rnQ6RnBdXiLez0rus650odcx8/bA9EPXVyi6EcHBqNpM5Xk1H7vfKs9LTW8lgDpKSMN7eYc6UykyS3N6UkTe4X1/lX1vHH4MEwZq1Tt2RlUvAqjqRc//5x5MNimH8/ZYaj/Xjx/ur+rPiMibgD9jywhGEH6Zoxd4CK25H1V91DrPv15EnsERBNWbNgOp6hPAORFxYQy+DPhgrdgbgS8UkUhEloDPBR6adq174GJWju/HRAAAw1X9DBFZso5VX9zQ3gILLLDAAgsssMAdA53yD6PMe7H3rxRSReQvAJdU9Z1zNtUkHOqU4839Vd1S1ddiUqb+J1V9bYOQCvCEiHymd90+8BeAk8AL5uzzTff6/y7g56zX/seBbxaRvwugqq9U1YdE5M3AezHG5ler6vvbrrXHv0FEvtN+fgMmzyyquiUi/w74I8wD/mVV/d/X1ft5tTaO33eU8n799ZSP9XNNmNvLXgxlun6srKdlLLaFumrDvFrRputq5lzN8+lOCbXyEscTGjcdjWA8LnM7a2+DYFQQ7xfkHaNZGh1PyvJ5JyDZsaT9rDCm/MHwkCaDNCt37hIEpZaqzIzipaIsr5vl4HAzIQFlUP+jhiGom8XrmOZcNY+ncv0amE5FcKbVJtPtLApN/Xjb+Gy4nzZtaqsmtdBmre+sJACWYzmR/Wo0Ng56SYzedRIw3tHh1giNAsYbPYLMOn2lBdlqTHJ1hHgaM2fy9NvU8di8N77joYh5bzzNa3nOmk9vB8pn0qRNrc+5sxxem1CPyHC4A5WFxYevlWxLJW3nsonqfBrANMpK030FMj2SQNP7U3/vSgtIw/zakpmq8fw0Kox1dhOVao60Tk6srhAOcmRsU6MmEdlqB1QJR2a+zpZi4s0BMhhXktKE9tlqXnPTxzITlj1nxvekBUnqXOM7CQp67ab/LwC+UkT+HNAF1kTkZ4EnReSs1aaeBS7Z8uep/HoA7sWEljpvP9ePH4KI3A28HEMjWAEetxafnwJ+WFX9aEvfBEyQ3FU1A75JRP7TvDd5UwVVVX038OLa4VfWyvwI8CNzXovlNryipb2fxYSoun6U3pANk119UmuaYJoWzzaOXlOdN8KxxXE4G1JAlmjyhob5Q3lcyzVe/w5lwHJC6iwzloPjpDqz0EEfHY8JTp1AraAquTI4HXH8XZvlghOudxmc7pAuBXS3c8KhmTiLJCIIQ3Q0rvhVYWgW/CCoeFRu8fZNpS7yQBRVz+V2ZfUpQ/iE1fdp6VR9TKOGaG2sNHlet42Dtt+z6XjT79+UzWrWNbPahuZ7dceOSmmre4hPm0dqzlt0O8ZLYTCojve6sLZSZuMZb8SsfHAHioI4DBivm3FYLIeEw4JglJpMU4CIoMORdciy/MEoqoSnupOQR5HQcVqGrDqSk9gNhmoxX8SJpmfsczz9zcO8qbFNB5rL+GPRxaFt2Fw7wbQeucR9Ltuo8+7LtKlFtfH1HR7noRNA84YRL3rALBP/LF6qf872OVhagig0c7F1xJNugtx1CtKMbCmi+9jlsj+RbJCtJqRrZq6MDjKCUVqFmQLjqCqBSXnsjVu1aVn92LLmfux9+WP8KHShW4ziGgVVVX0Z8DIAa1b/h6r610TkR4C/gREo/wbGeg3Gr+fnrVLvbozT1NtVNReRPRH5PIzn/jcB/76l2Z8F/pmqfpOI/GXgCzHW7ZcB/xHLObf9O99cBajq7897n4vMVG0oQ9own8bGYZoQOwuz+LDTFuo5BLu5gpQftX/XIJyWHwtDjJckKUNBsbNXxT5sygdfh50IdcPwUcXy+S598ZmyyNqjY1YfGyFXd4yDCnbgn0oIU4j6OXnPvApBlkKeG2HT9dMu7Jqm1TMotOrnIS34NWqXbwYKX9Jq4m019M8JV9cinzSkOC0xj/bzerTxs4TUJs1tW9mGBb7UprvFu+5w1Umg1yuD85cCoe+cWG/L53+GAbq6VAqImsRcffEJxmvC6T/aAyDZTmF7B6KIaDMiXVk3TQBRP6PoxkhaaezKTaDPGXda1sATWGubxjKkG3ixVW89xDrHQO15+n/LsmEl2ML0sVa3GDU5//nXNtXV5Ph3+AYmNuKNkQDcu+YJ0VpkkwJq7ZoJrmobps3NvraxLqRGEdLtoPsHtXtp4Ln7cPNkliGdBFleQo6Z8bn5opMUMWx8qI/kiu7smiqThCBJyE71CGzA/+BgTNGJEVVkZ7JvOk4nExD4kQcacL0c21sBBfTGB/x/OfA6EflW4DFMhCRU9QMi8joMLTIDvtPLJvXtVOGpfoVmRyqAE6r6FlvfG0TkH1s/o+8XkQ/5BUXkBcB/xnBZfwX4Xi9M1ttV9SXz3MxCUJ2GpknMffcx7+I6rZ76JNmmpZ2lVaq342sjjmLmv17MMYmXXvxRSLFheOBBf2DzeDd70DZB9/YNGR8oTm6QrXcIUqWIzH1deUHC2d83C73TiMrBkGiwAgOI9lOyJRtYepwbLeiyVlmlxmnrb65pOklTCEwYljIO53I9ItstxqyN0rxjuW0j1Bab1D92lP74HtCz+lSvz2mc/N+jzWHFPz6lz21CaZspX4+tIpet1t0TbMu4xq6N2vWa57B/gOQFenwNgGyjhxRQxHDlheb9OPH+A6Ml7Qn0B2YMA0UUEB6MKbqemT6JkeUls8FKvT6JIIm3EXNUAD/maBJXc0d0+5aJknoRCNQX85qmtXET3jTe2kI8ufKlQNzgCOU7YPnJEOpzAFSa1haUmlW//bpwOo0OUz/uOwa6Pnqazlrj1Xn/O5hYp8ePGWdR32IUyGQUgZbrdTw2mvvTJ9Ce1fhHkPWE7ectceJdW2U4NMIQ2dqhe3mJomOVBaOUfK0LaY5zIpRez8y1XuQCY32Tkmow2S09lE1R4ttHYZkK5XpM/1U1Rnh8i/18FePb01TuhzGe+/Xj78BkAp2FyyLy14D/D/grmDitiPmx6uqNnwR+COPA9bcw6Va/UlU/hslGOhcWguo0TFsgZ5n2p5VtM/PP4lT5fKm2UFV1+FzDAKQIGnl3EzywpoV7HnNuk6d/g8A6EZxfbPgbd8nqSqmROnRfdapAFEGWIadOMHjwOADhqCDaHXLsAxmamIlqeDIhfGKrZq4riA4y8l6EZAXJ1b45nuZoEiJjqVJHBoKECYzHkxOiqonV57oZx+Z+tDBeroCu9pqf263CPOb+pnE3S8isc+BuxCanbj5tEqKnRZGYtqDPw1ecU/tSCkRenaWQpwrOZG43Oq3m69BLy5qNkHvPMjq7ZkKkAeH+iGPv6bPRiRkfM2GjosevVoLNaEwwsAJoL0LGGeE4K/l/5fN08X7BeP27Bby2KZ4IveZMtmFSZmO7LXChqLxUqBKGJutUQ1lg6rwtYVh5kLdp9H0Bp15O1Qio/rH6HOf+hmFzVBb73Z8HD3FPXf2eRlad4KtTwizVx5iNXzqzjAcdj5EsJ1hZNl777vqmjZbVskocUdh5Ozxzhvz0MUTVeO4DJ3/7ArrSZXxmBR5/shLIXVi0cYbY5BVkOeGlXdOOo18VBZqmEzQFza2wGnJofjuU8juKSirXnQe5IYLqLcS3AP8WE4np3cDfs8ePY2kIHla8oP7/VkTeCbxZRP46tDtr1bEQVKehbeGbxltq49vVMa9Q21bXLI3lFI1UE+dsghYwbcGu98+fhGeF1HKX+Qul42TZDCTEURWsvx7T0C2yzjwZhug9p7nwpScZGTmV0+/MkDwhGOeEu4brt/L4VSP81gShaH/M+FhCutEhsMJBfO6q2aF7E3TJUfU5YnluFpfAM+2FxuGKICr7XvTusF18kxDXxOurl5mGuoZQ1Zi6j2p2m8XhbuOt1lHXZE3jh2qDANkkdPtOiT4fssbRllzRFbs52ds31JbCaFQn3rvQCLClwHHf3Vz48pNkPTj5XrNB6u2PTJrIYUr3okm0p7t7EEVomiHLS4R7ZoznK2ukJ5aJt4dwsFfemw6GRhPlv3MiZjzXTMmIVEKae/8CQXt3yALvBJSmTde02LRQagYrfm4w6fhW1tOigWyqu219aBqTDWV9GkCb86jWNmIT/Na6VWDW+3aU81lmUpD6x0s6nNdWnpvxmOeEp43D38W/eD95DKfeM6JjBVXCALm8RXLhkqEUOC29pb/IYIwumw1edmqVaKsPlzer39xqdyWQCdO/5lThqszBib8lXScMyw3kHYcbpFG9VbCZRL+u4fhV4L/XDouIrKvqji3zWyLyV2y54/O2uRBUF1hggQUWWGCBBW4XbiDr7lZARP4Uxux/H4br+lFM1KaHa0X/NfCpeLFbVfW9IvJlTCZ/moqFoDoNTVrPtmOqhzU3bR6a1+tg41/vzNnzcFdhLu3RhHZ1KiH/iPdR14pJtSuXfasZOrNBcFmMea1uBg6M1ydnTgGw/9xjbD43ZHhaWTln6gqHBdHuiKIbkW0YzVY8TA3P1H8+WUawuU94ssdoIybeN23FAP2+0cD4ziRWA+V74x4K5l0Ys6GEYakxyFaT2xmgajbaxuy0Mj7mSS/cVq4JszS60/rq3oN5+K2Oz3cEre9kprfD4aQIBPYO0NMb5msUHc7YhdEIShgix0/Qf+YxADY/LWZwCpYvGqcoABmMjYNVL0Fshh78iBJpCnvW4eWuNbLliCDrEF2x7diMUxNRNfxx66wZYVhpUz2upETGoapY6c79jG4a6r9TjXIiYdg8ZxXV/Uwcaxu3dbO/+3sjPcZr8+CscHx+dIBSk1qfd5rQFJpqhtm/LDcYwvENZGe3at+a5iUOS29+LZTw+DGGn3KWrecZzfvgNKw9okhemHpcOxtryNaOiUrhvZc6TpGDPnLC8K2zXoys9wgvW02qLVPybfOx1/f8sNnfu0eXiU3CEF2+QZkobwZuvDPVTYOIvBw4g0mmdBfwCPAx4L+JyL9U1f/myqrqz9euXVbVA6uV/dvztrkQVOtoMvPPM0m1lWlbNOehA7S1fYhP2DDZBMFkrD//2hkC5tTIAE3XN5n6p2WgauJ3uQkNkNUV2O9XZhub1rE4fZytF66z86zq+ugA1h8WVi6YiTPZGpIvJeTLUZX9JI7MQhBHkwuXFgS5kicQuSqTpEqZ6syFadq+CaiHqXELneVDpcvh7RNU27JRTRuHE0Jhjd/aNG6awlPBtfFW2/rW5ATVVG5KGsu2/mueM5EjvvGyYiJMlRNQ61xvEzvSayNJYDQyZvpeJezJ+ipXP+ckuw9U7SW7cOzDSu9KTnzZCJ8ahehSYrJP2TBn4tKZhlbYtO9IMMop1iPjQGhD+kgUoW4c+/F/645TdW6wjyQhXU1u30Lhm5qnOL0d2jBAe1gwH7P8C+aYLyd8B+p1+ooEH15M4LnM/uVB+16F/hwq879vLqqAbxKvnSMw1BBRNVz7sR1zjn7V7SDHzXi+9BX3MzgFwdiMYbDj+FJqxrELz5dmcDCAJDF1umdq31cdDAn6th3r2EqvW4Vq02qOrUz/hx25qudkaWLuuiQmX7/N/gJtUOApZPoH/ryqvgBARF6LyQj6PSLyekxW0f9Wv0BE/gTwakzc1ftF5IXA31HV75inwYWgOgvzOmK0XQuHd+ZH4QHOo/Gq4yjOVteC+n3V4542te8vhm3pLAENTJ5n1pYpOmbCypcigkzpn+1y9fkQWpm2swWdbWX1XEq0b3h925+yyqU/M0J3Yp79OrMbl9Ty8ayzk+u79hLybkgRSxkaRROb73w0mhBA64tGyZWtPdNy4rcLQd5p15TcVDghtU2r7zB1gZ7BBWyLpVrHNIe8+rVuPByFJ1vnsradb7EeTIPvCOULtM4p0b8PIUSHw7KvurGCjLroWo88CQmGZoz271/l0ucXLJ0L6WyZy7tbBcsXRoT7I/rP3gDgsb9UkFxIeOB/7BG6MGOBfY+sI6HjERZdoxUN0qLi//W6yGCIFtlkmmEX29NxEJ0w6/PCRSA291FEt3kRnTW+oF077jSpviNQW2zb+rvSpKGv96uE18emMdiWUto17TuY2j4ccrLynGJn94epTlSNiUjseQlDM+d1Y2R9FbGRUnR9xYSNynP2nmUiU+zfB+EIli4pyZ7pa+/JIeH2gIPnHuPcX7K+B/2I5/zsiOhjF0peKlByhaXXJbd8/rwTkFwaQlEQ9IxwWewfoJkfR94Ttq3nvztWCrJRMHHP+XJ0x1q3rtfIeotRiMhxVd3ExGINAWzSpbbJ4kcxKVffZMu+R0S+aN4GF4LqPJhHKzqPmX/exfYo53zUJ8EmgbhJq+RCKU2LBADTzbz1+6wLq85sX2ip8aFQJI6MWWfNhN/JlyM0WiIcZAzuNpNU3gnoXklZujDgxPuXzGIMiEL3SsbwRMTFbzD9+Od/8nX86aXHeOm7v5Voy1s4rAnVhZTRpYQiCZFMCVJltGH6VETrLD26bYj7Lp6ly1LlOTNIknhxHT1NitN0WU1CNLyOuLXXi6NssJp+xzYNKsz2JJ5HuGircx4tVhOaMv749YUN9zgjZJtgPMzLEEneeZHo0OZMVpbJls1vH9pN6fC0GcfJtim6dP6Au/+/FaJhRmGFwd4TQ8bHO3zsazp8z1f8LwC+cfVhXvQ7326C/btQaVFk3h8RWOqhHeeUAlKoCZquRoiILu2Y0G3dDnpgo1rYKBXi3kf/GfjCbBx547r5Ed1yeLQEYD7noOvR6vtzlt8HqY3XWZtBVxdMzonO9F+LggIVHaCMUtDWV1fPIZO+GIG2iQYBZSB9174vFKvVmmocwnIXbPaz9FiPvBvSvbjP2kObAMT762gkRIOceNsoBoane3zi78T8yBf8An9l2Tj2PfiGbyPct5v/MCijogDGCtXtmKyAmOxr6ckVoiQiuLxjygwGSNihGAyrDXTNcQqY1KJOPI6AYHwb5+JZeGppVP8l8Mci8mHgUzDxVxGRU8B72i5S1XM1OXbudCoLQXVetC2C0G6aPKoW60ahLdRJS7uNps9CD3PwHCY4su6a+m6eiq/pykXRpFdtFEKSoKtdBmdMvFFRiPbGqAji1qVRYcxQecH6w4Oy/f7dPdKVkJ1nBvznL3k1AP/2sT/Dy3/l/+DsH/SRUeX9TK9LsVxNjulaQnKlT+/cFbrHVuk/YGNXLocUnZhgealaXCy/tc5JlSQ2mlkXE9BpApeWysW0d6F/1OSlNwZt9I2mMdDEG/Y/O3NjE+pxG/3rAq9Mm1DRVm+T1/+08/5xf8Pmv7d1jX8Tf1EE/F/Mmcl9/qKI0WYmSRXCrNdD15bIlxOKxNQX7hfIOCPIlCAtENtecDBi7cMZMs7Y+7QTAOTdiCdfHPHyP/vzvOnqZwLwH/7fr+RZv7ZHuLVf9SeJ0bVlZJiSH18mvGrOJR86T7K2yvAZx0jXraC8l5gxGgSVps4bw+V7H1rtVNPmMonpXji4PWO4jvp8Oitmb9PYqnv6NykSfAF+Ho6+G1uO+tM039azUHnnmkz//lxT8uKdwDoPlcF99igCda5yWbeacFeBVRawskx2eg0pFBkOy1BlQaYEuykaBQSXjJ1/aZxDmtH/1NNEtq0LXxjz3Z/zK7zysS/mX7zRZOt83u/vIrt9q5yIwWYNJE3R9RVkZ5/gotlMJdtdsrs2yFc6BFuWxuK0/4Ph4fiofizdQj1rUoFEds6PQuKLO5O5PO8UKMgd8YLNB1X9RRH5deBB4GFV3bbHLwPf2HLZOWv+VxFJgL8PPDRvmwtBdRam7ZZnaSvn4XLeSjQt7k0CBhzejUPlsOBeKtVqAvHvTdVwnDynIj2xzvCeNQ7ORuRWi5R3YbwO6TJ0zAads2/tEwxSil5MaLWRhSPxpzkahWQrps3oIKd7qU+y0+V7t0zWtlN/uM39w0tGA+VpPjQU8m5EtmL6E++mBJt7kKbI1R2W7HPJ13oQBWYidc+qHyC50QKUWary3Ghcw6AUQFQLiGN0uVPyY4Ore7dvkb8Wqsc82qEmTAgNDcfmdVyah1cIzQKGr9l2i7p/P/VFPLC/40T+Ra02VGD+Wu24rhlnj9E9axycjSliSFdMnekyjNeg9ySceYdZcIPdAdqNiQ6ySQHJ/s2OLxP1TTudCzvc/Xvr/NiHv561jxrh8xnnHzam/cC7n26HohdTbPRMDNUtq3EKA9jeoatKsWr4g5Kr6XsYgOO2OrNroSbQP8Y6IElsNlyepo2lHuQFwZXt2y+otll23DOtxzadhrZNTiCWlz6nIFhHPaxV03zfFFvVmtoPtVPbONQF2iZaQBUqLzS/b55X2kvbnpw8QXq/iQyUrsccnDHUqtGGqWO8Br3LcPoPtpGDfpnNL9wfoaEQDKoEKNqJ0LUeGgnhFaMYeOYbhV/40Es58dZL3L39kYn+uXmzcCHcgh5Bf4zu7FX32h8QZRm6tlxmRZNOAqoEcTQZnqowQrbYdzToRCb0mg2bVXLDi6J6V+44yFNKoyoin6Gq7wU2j3DZ3wVegclQdR74NeA75714IagusMACCyywwAIL3C48tTiqfywijwC/APyCqn5w1gWqegX4q9fa4EJQbUOTOd8/N+/u3d9VH1WbOssjtaktH00e0vOixeQlUWTC3oDZtR/fYPf5x0l2czqXLQ9OhCIJiS7voUtmN37+K45x8BlDJMyIEqM9yB5bhlCJdwJWz5u+hwNjEqUXl5pUjQzXTOOQ3Qd7LD9uNEGdrREySOkcjDjzcRtYer9fZdKx5iXtdSh6HSQvSDZNuejSrok0EMcQx8ie6Xs0GKNJbDSy1gQo3a4Jx5LEMPJC4BSFSZlptcYyGkO3g0YRFNbItLt79Gd/IzGvhrTJ8W8eB5a2485ppV6ubq5t07TO42ndVLZJc+rK+E4yIib0TRCgdx8DYP85GyS7GfGVQVV1NyK8uAm9Luf+oglo3n/BkN7yLmGg7J0zlBEpIDoIWH28INq214/GYMd/0QkJDywHMInYf9Y68X5O59JB+Vw653fovHe70tqDyW7VqbJD6VLHaLQKCK/sVvzyuGO0T4MhgcvsFlVccN/LWrodyPJJ7uP6GjIaHXZsC+RwprjbgaZxA4fHQdP3+vhoG1vFnHQtV+aQhl4mn3VTKl/PMbM0YXsRAKp7bFgzHIfUWatc6LPA0FPknrsYnTXjMRxkBIOUoD+qqAyDIUQRT37ZWba/yIzRuDtgPIhhMyHaN31IdmHl8Yxg58D89lYrqVFAvhSbJBR2PO4/Z4POVsrSJ/ZQeyx8/CrHP/QJiuGo0miqIlFkqCjdTpXgJQCubBmKzYpNN53EMDaWLqelVuvQRRgijtrowlOJR5NYXYHh0FAMkrhKWpBlFAceheZOgvKU0qgC7wX+OvANwJtE5AAjtL5WVR/1C4rIcUzmqgvAf8FkrvoTGLP/v1TVrXkaXAiqdcwy3/te+02Tlx92w2GGx2ejieh6hVSHRg/UBvN/fYJ3Qpo1ixZ3nSRfToie2DZZmzATbX5siQtfokS7MRqaSVITU3+0v0zeNZ/D+/eRcUj80R6htUKuPgnRELqbKb3zxmykgfUCHeUVp2+k5rMIy4+P6TxiA0U6k2ZRlKZNY8oVs2i7e0gzws2xcW5xGI6sY0o8ae7sD5D9A1On42w5xxKRUih1vNSimxDuVQL6+J4NwmFWTcS3G3Weqf9bX89Gpg3TNnGzeK71ehya3jnXhi9s+VmV6jSAMARruh+fXSM5v21+6ygit9zl818OksdE+x3ynmmn6BZE2/ejkbL+qSY71HCvR/b+dcItOHPJlOtuZgRZRveRzaqPlsMseYGEUoWuUiXZyeg8tlkJgaowGlcLMpT8Umf+BJBt8+6Fva7JfOWEUZFKMHV1DoZGqFnqIW7Ttrdf9c+N+0AoljoE/Yr/XZw5huSKHAzR0W0UVP1Nz6yN01HpWfU5bx4FxLTzjZxYF4O0EkoljifHrWvXN/U3rQmqkMQEd58hX+0RbtswZk9cQrodsuPLfPzrTTvJpQ7RAIantNTW9Z4Qxuugzzog3zdC5fK7evRGsP7xFGy4p+4TfYKLVyte9sjysFe6hP3UbO66RgBcujAgfOyS3fhVMVPVcbc9AZMwMH8HQ8SuISRJOUYnqBNBYEJTOVrVaGQpKgmFdQyUJDD8VD8O7fISkmXmPTq2Xjkh9ovGmMZ3Cp5KHFVAVfX9wD8G/rGIvAT4euB3ReScqv4Jr+zPAu8DXgT8Nfv5XwN/GvivwFfN0+BMQVVE/h7wc/NKvk8bTNt513fM8y74bRzVNgH2qAJE3bP0EEd2Sn1Nk3QYkj1wBoAnPneZkx8YE+0fTBSJNg/oXViiiEFs0OLheo4KFLESnTCTV/b4MiuPCiuPFxR2kysFJLs53Sf7yKbRPIp97kEYEO+bSS7cHZCv9QgORnQublaTj6pxdMLbcYuY+8+lDIZeLs5esHTp9cxCHYUeNw3jHJPXnl+SGIHAS80pNtWrFMVEeVHTh/zYkn0+tymFapMmNagJqL7gOm2szFrAvY2Ni6owU6hQneA6l32d9c5NXF9M9s3/7P8tCoYvuJ/NTzWLc+9KQfzHNiVplhFuW2367grhGPIE5IwZt9qPSE8oyycP2Dy3AcD6B0JWLuQmpJltJ95LTdrHnd2J91CyjCAIjBbUQoYpnQ89bqJJONQFF1OrqetgQGHjSeo4Jeh2jPYTSm0XTsOWFxOaN4piciOWxOW7UjpTxSbkkB70yzFSdGOCfoqu9Aj2erB/m7VRTXzntnBnvkBSH7dt48vfCOV6+Pg8FjRXzldMOKco//dt0qA21dWwXugDd3PxC9ZZfyRj+ZELAOT7+wRFQfT4VZY+YZyXsiXIepCvZKVT/MExhUAJzy1x7BHT/urjRiEgBXQuWW719gF60Ec6Voh0kU7GGdK3qagtvzm8sl1GlCiTAJSdnZS+dGA3PVJFnJBg0JyyVhXSbGLjVvFw3SbVi0rjbVydxrlYSgi27Hq1tmLezQVuBCYGr6q+HXi7iPzfQD3k1N2q+uds2Krzqvol9vjvisi7521wHo3qXcAfici7gJ8CflV1PglKRDYwQV6fjxm/36Kqb62V+RLgxzBJga6o6hdPu9YGin0lJnDso8BfVdVdr777gQ8CP6Sq/3aefjaibTJp8hitmxXruBYHqqMIqU6AqgmomufGVO8tTMa714sJ2QSnwRKh6JhJJBpC912PoOMxwZKX4WPvgNPv2kAjIbBm8YOzMcMTQt6F6CPGnLN6viDZTYl3xxSJqfPg7g7xXkqwfVDtvAO76x6nhFt25zxOCVVNpp7Um7iyrBS0Su/OTmLMmv0+elCZcCWJy+xS5oZsEP84nlzw4hh0bDQEy5XJK9gJJhYOzXNkPDbP2uWQLozZNz3WIxx54YRuJ+YZR1oTAo5ybdN17tomIaHJbFpvr8njX6TysAezSLlQYA5ti3+nQxEJ3S1T57E/eNyYJZd7pt/bZvp44JdXGZzuEI4Lhg+Z3360IWgAwXid4xfMb9q90ic8GKNxyPiYKRf2U2R73wT3d+ZKLZA0Qw6Gpu/ODDkcmQW7LlSFoTGplpEyAnT/wIxl50CSmDp0MIQkRpz2tJNAYJ0X3XMqCuNk4icbGI5MJiAv7JFkmUkqsLZSPsNwd4AmkQlRdCM17tcClyWunkzCF1abaCb+OJpl0ve19nVMG8dt9fntN9Q5kY1K5HCyCKdh9dtJYvLlhKXLBUt/8FFyK3gFnS6oUly+yr2/tgHA6EyPYFTQvytGbTPpkhCksPxkRu+CEeBkkEIopMeXCPbt5mxr2wh8ZVg+K1Re2jR96nRQq7DQ4ciEtkozb7NqBMhgabWkpuhg6DnvhVWklDBERIzG1MZMJS/MXO09DwlDZHnJPCu3SSvpH0E1lgs1FIJCjZBqN2kah5Xj7x0IeWqZ/n+k6aCVC3+7djgQkWPAKrAiIg+o6qMicgJI5m1w5iqqqt8vIj8AfAXwzcB/EJHXAf9FVT824/JXAG9W1a+xIQkmcphZYfQngJeq6mMicnqOa18N/ENV/W0R+Rbge5jMGfujwK/Muq9W1Be+aYHz64tpm/nd32H7u+Sjmvf99psoBj7C0Ex83Q4i3kJl09pNxE4tPI2Yqz8IoNtheMKMpY2Hx+Q7u4TraxWHbjwm6HXpnd9DBmPUTgqdyxHDM8tsfUrM2idM2c7muAyqX3qfFhAMc2OqdPfhtJ6FQmwX/FCMkJrnppwT/oLA1BXHlXk0SdCdK8Zs5IcTUq3MT64PLjuP//x7ZtIny8jWzXPLexHdvVXY25983klitIKu7f7YaBxO3MGp+ubxvm/ziJ4nJmWbIBoI0FJHXSNaM8PqcGgWMffbgBHK+v3J/roQS37bWYYe30BjKbnNenXLCKl5gY7HpfAXX9gmftwIQUurZtEcnl1h9xkJKxe9xT3Ny7/5We+3Ho5AtXq3nId3XhwWIG1cVieAlkJqtwqhpjt7aL8PEiBxw1xReHNOoZBbb2y7IMsSkOUU3YTCxnaNDgZmXii00vJFPTSJkCwGyz+XnYLinhMEB6P5tIk3E6W2zAs1VrcOuLHVJEQ29b8+Tt2mYda9BjKpcZ3oA5Pzu7U0qBdSSdZWjeUlCFAraDbGSXVzU15xiYNjGxRRwPLjI/LNLQKX9UkLdJwTrKwQXDC0qKUL5t46T6wyustQmPbuj1k9l9I5v2u4z4BGIeRKuhYTb9p5LM2qVLtRVI3nuGvGTL9f8WuTpFIYuEfb7ZS0Fd0z46kYjqoNnMt0ZW7UCK15PilIqho6gB2PmueIjRssTkgej8sx4bz+tddBdvbMnCEBetbwymWY3rn+SgrXGlZDzOL+O0AHI8+9XlX/ieWG/iLwAEah93XOKi4iLwO+FRPH9O+r6q/a4y/CmON7wC8D392klPTToopID7hfVT/c0sV/BXzIfv4W4NUiosCnAf903vucS92jqioiTwBPABlwDHi9iPy6qv6jpmtEZA2jBv6bto4xMK4V+0bgDTbvK6p6aY5rn4f5YQB+HfhVrKAqIl8NfByYtE9fK/yFs815AyZNkNN28G3OTj6mtdN23AnU9mXN7jvF+ESH7QcjwjGsPWIeXZAarmfy0YuIr52qT/C2/vzkKumSObb2zssULjyV0366haMwwq8MrWlmnNAFlo6vE/XNhNg/2yHuF2TdgN5l059oUJCvxIRLPTjwBO8ohG5CkVgnpTxHRiZjVT2GHlFoFmbLedKrWxSDgeEzlaFJtFw0xNNWmTSqSv9TTzNeMYvLymMDogtplfoPyJZCdKmDjG0YFffMVU3WFkdFsM4K6v+G/nO+lZhlzodm4bNpzDnBZlpbs3CUwOuq5PefZnTS/H7bz4wIU1h7NCUcOkcKSB4aTOanb9JgWR511glY+vi2qT7NjKXBhu+ZoHo4/rX93bqqDE8eJzrIGZ+wWXISs7mL96rfNlvrkCz3YP+gutc4MGOzE09qTjudcs7wU6sShuj2bpk2UvPcaJKSmiYoCAwVxXH+AAIhu/cUgzMdVj5q7lO2942w0AnJnWVkZQnGY4pBv1zcUUX2BpNhsILaxvVOgC9UQrPzU9v82TYvT2hpi/b79gXiNsHXWbLs2JFuh/x593NwT4/xqqVURMLxh/pkSxFBfhaAzns/Uea0n2ivKCY0r3pslXQtYuXdF8ig2uRoUX12lzseZ5aR2DGSbKwRDjL6z94g2q8y50X9DA2FzNKV4q1VOOhXaXed9S2JzSrsW6bsccmr+LESR+hgWNJVykfktPjizcNuTo4j1PoZZC94JkUUGF8Ee0yiCO1E5CtdomW7Ocwy8sGQII7KNUn6A9OPcWqcYv3fpy1xwh2A6+CojoAvVdV9EYmB3xORXwH+MvCbqvpyEfk+4PuA7xWRT8PwST8dk1XqN0TkuaqaAz8JfBvwhxhB9aVMUfqJyF8E/i1GM/pMEflM4J+p6le6Mqr6C1axKaqaicgbgc8EHlfVi/Pe5EybtIj8fRF5J/BvgN8HXqCq344hx/6VKZc+CFwGflpE/lhEXi0iy7UyzwWOichbROSdIvJNc1z7fsA9iK8F7rP9XAa+lxlSuoh8m4i8Q0TekXIHeLMusMA1YDGOF3g6YDGOF1gAo1Vt+zftMgNHII/tP8U4Kf2MPf4zwFfbz1+F8c4fqeojwMPAS0TkLLCmqm+1WtTXeNe04YeAlwDbti/vxmhw6yiAF4nIXwb+Iibl6hMz6p7APBrVk8BfVtVP+AdVtRCRvzCj7s8GvktV3yYir8BI9T9QK/Mi4Msw6ua3isgfzrj2W4AfF5EfxOSNdZrWfwr8qN1ZtHZKVV8FvApgTY43kIfm0GLWvfjbuHd1bmqbmX5ae3XNWBNfymm8rAl6fCzh6qdE9O9WVs4J8a7Z4afrCbvPiDnzaHRY01dotW3xKA+9TbsLHY2MA1GalaZ3EUH7/SoMiCPPpynBpRGr3ZjBGaMxivsF8W6GZCHxFaPwDvuJCUoeBhWPbmjI9hqZf4DJYx6Y74H/XHuJSbu3u19qJHQ8RqLYhELpVqFRjHkqALcbDwKy02tc/PwlnvVVH+P9b38QgO7VmODEGkU3Rq22JdlOTaasOn8zTZGtvSqYehKjy13izQGBiwSwvgaXLh/6ea8Xc43jNs7dPN7T/piup5H022g6P83RZRqn0P1OvR79sz12HjTjee+ZBWsfC0i2hmV60t0HEk49sQ5+oPAmbZgIwTAl2Y1Khz1i4xjnElKUpk0brqrsByBbe2y8Txjcu0reNfX3nhgy3kgID8YsDawDSWhM7rK0VDqaGCtHjMYh2k0ILO1EgwDRAt+phDQ1lJw09TIQGY2pJDUqVyDmfRFBbeD0J774JPzZTXY/0uNZFy1vVhXtJiBCvDOsnrHIhGVCRyPERUZw6HUJ+mNk96Di1t4EzBzHfggzN1YcP9mHn87Un4trNJJDZfzx50eNqKPenu9AWHC4DTBh7UJheCJg69PNGDv2ASG62ifaFrZfcAyATpKYec/3+i/z2Fdac8kKOldH6FVj9i95mWEIomYO9H0lggAdjZFPGKerVWB8agkVSwEDik5EfGFIMC4I0irzlfS6JQ+1DPcnYqgpYVCtAfsHkwkywPBRfV8CQAKxaXllgmoW9HqGAnPyOOe+0pjpl77oMpsPneTZP7dcvTOWShD2xxXVKgzLoP+l78LmtnkueUGwsQ4D+y7u7Rvrxe12CmyAKNfFURUTmuedwLOB/2hlpjNOY6mqFz1a5T0YjanDeXsstZ/rx6chU9WdafKWiHwFht75UeBxe/he4Nki8h2q+mvz3OM8HNUfnHJuWgqs8xgvr7fZ76/HCJv1MldU9QA4EJHfAV4I/G7btar6IQxfFhF5LvDnbZnPBb5GRP4NsAEUIjJU1f8w6x6nosnM3/R5Xvj81DYzq0NTmSazvztmhbXe4/ucypYZPxLSvTJmdNLw3obHQrqbRWmiBgyHTy1nzp/gw5CiE1Wm1l7XmDXrSDPT7tpK6YHPOAVVwv0Ry317LIB8pUOyNUaG5lg4shlERuMqpV63Y2gEWUZgOarjlSWCtIBcKXqdUoCVoiDcHZqYe+5+ej1jJsrzakKLTG507SUU3aS8dvs5PfRP7vDuj9zPfb9vfssgLRjcs4wUlBm0ulfHxrtftQpPlWXGVNUfGN4ZoCc3KHoxMsyqEEF1IeNWom3T5XvNtsGffKalOa3X6cq38WDrx+tCbRhCmrLy8DbJjgkntfFwSPfygKIT0b/LE5p29yn51NAaVUOjgHDseb875xXnle1HfOh0yk0IAMMRcjCkc9l4xoPxiI/3M5PZzI07VfObL/WqexyOzL9OQr5RjQMZZybebhBUDjRpariM3niRJDFCiG/ijyMjXHcSCKD/4IZ5Rn/pcR798F3c/1u5GavA2HITNRDiXcvPtW1KklRcwdzQIYgj5JipT3uJ4VsfDIzJ93bB0XacMNiGBupSiabNfl2wdBzVMKg4qE1816aYwLVyjmupwyHxk3ucOhhz4n02xuhWn3y9x/4DPQKXeXl3b5LC4vpYtmMdkuLQcPqTuKSHTD6DipYlNrOepll5LNgfkAAdVXK74eteGiL7A6Ltvaqe8RhWV8zYc/QYe5/FSo9gxzOhW0ETkYp+5XjVYTi5+fFoLCUfdWUZ8oL95x3j4FPNnNl/+ATP+h8DCALSs+umTpsBMNoeTDwniWLU4/HqIEfiiGBjrVxLAIr9AyMU36GYYfo/KSLv8L6/ym7wALBm+8+0Pj+/JCLPn9ZUwzGdcnwa3i8i3wiEIvIcTFrUP6iVeQXw5Q3xVZ+JoRd86ow2gJsYR1VVnxCRcyLyPEu0/TKMN76PN2KcsyIMz+FzMVrR1mtF5LSqXhJDnPl+TAQAVPULXaUi8kPA/nUJqU0782nnHaZ5+DtHjxZP0EN1zQsRow31YvBlvYDuZgqBsPOg+ZmPfTil97Grs9uwTlgqEPatxsh5I3vaJsCQ7lWNcOqOW8cR2RsYzZE9FvTHZnJ3MfSyvAzuXD6P2CYUKIpSwRsnEcHBCO3EaBRMese6wOV+272uKWMnw/zkqnGAyRW1EQeKMKK7lVP8r3U2tguSbRvmKhKS7ZThiYS8Uy18kuZVKCu8Zx2G6LoRCPKVDkUSEPfHFUfsdvL72gTGumf0LDQt2G31+YH+Z/WnbbMGxlHJajC7l4yH/JUX9Fh+0mqm3nHJLKDdzmQkiAaeoUZ2gXdCZRwZZxaXYrIeGD+b1AaRZYSXt6tbtAHzGQwrITcMjDe9ahUZwnpNS54TJpEJvm7hxqGLXc5oXKbSdIu4rCyX/dGNNXOsKMrnnR1bonPF1Lnzmrt58MKYYJSTL9kUw3tj0vUOWS8g3jLXyJ7VgGllUdE8N4v4+ir5MbM5EFVk7DaxdwBHtT4G65unNl+C+hztW6r8TZLPdy01pQ1CaRPq83+pJc9gPCZbXyd5wgiC+XqPzecvc+zDA+JHLpmqnXa/5Z7d5qUIAoLBCOl0DN/T9qlw418rSxhZVr0XbqOxt08wGEIcEQ2Sqo97+5MOXd58qsNROcYDgI1l65Fv7zGKTD9daDSYSAlbbrwKEzZNThwz51woqyRGVOldGnHvG41CpbM5JtodmbjdNvJLemKZdDki2ixKnwCJIpQRfhgsCUMTlWZ5yTheFUn5PCaduO4wTBcJr6jqi2dWobotIm/BcEufFJGzVpt6Frhki53H0iUt7sUE4z9vP9ePT8N3YWKpjjAB/38V+Oe1MhGTmlqHxzE0hblws2PnfBfwc9Zr/+PAN4vI3wVQ1Veq6kMi8mZMpoMCeLUNJNt4rT3+DSLicsS+AfjpG9rjJgK+JbaXn5tyM8NhIfWoXv3zLghNGgLvmGzu0tnoka4njNZDluzi3vvQE+Yl901MIqUHsm82KlaX0DhAXJilAGu6CUrSOzZenY5GxqnILfiJGKFuNJqkRzhvzb6nDdDCTFo25Ih0OmX2FrG74fDxq9Drkh6f9KbXMCA8d3ky2wtAr4t2Y4olO8HHAeEwI19NSNfNsZ0HIrY/Z8yp31I0MAIqQPfRLXP/0XGGJ817lK4nBMOcIA4r710wi9dyj9R6+RedkDwJSA6G1cTvO8vcSviaqDbM4+EMpo4mc36TKd9vv0l7OnG+3l5QOSYOR0QD8wxHJzsMToR0t5W1D5j4pwyGZSiyQ9d7jhN6fI10JTJZ06xG1df0aFptkjTPwWqqyvzoYWjGZ1FU2qH+wGiqrFd2WS7P0b396lrMRo7RmODyVvm8izPHjACbFWSrpmzk8pDXKRddY0HI121c3ie20V5CenKFred22Xq++YFPvQPGaxFLF1LCJ3bLZ6ThKfJOh3zJ3HuwsWIsGn1PhTIcwXKPYmMZja2QDQRZbsIP3W5NVH1zX48S4T7Xj81ybvXhU1FmXdMWwSIQ866UGaMCo5HPCgbP2AAgXQ6IDwriDz5Wme6TpFURolmG3GWsthqHBKPUjGMJkMS+QGMoHarG6UQd0utW3vZZZkz+aYrakGwUBYXTgDqBNsvKuZ0sKwViHY4Izj1p+nXK0BbEap/zlS7B1ra53mo4xUWyAPN+rCybxBKXNsvkG+npFZ58cZf9B3Pu+j3zvOMkQOPQZA+0zzKyFJai1yF05vw4MvqZ/YNSWJVOx8y5YYhGETLaL9uXlWXY8zTHdwp0pka1FSJyCkitkNoDvhwTUP9NwN8AXm7/vtFe8ibg50Xk32GcqZ4DvF1VcxHZE5HPA94GfBPw76d2W7WPDfo/pdhPYcKbvhY4Z4/dD/wfmExVc+GmCqqWXFvfCbyyVuZHaIjL1XItqvoKjDp5Wrs/dLSeHhFuMZwVH3WWab+OKRqmifN+mZrQ6dqIL+4QXY3pQWkKZGzD1/haJxtX1WgUbL1RxOiuZdLloNSoEgTGjK1aTj7qBPhxiiae9jAPzS4+qNKQknuREZzGKbVa2EIndsXqBdYHTBv9AdFBj9HJHuM1M/EuXRxSXN1Eer1y0ZUkNt6ySWT4q0CQq4kVuJ6QWS3p6Bi84Jnn+dCFB1n/KASpqbMbCBAQHYyR42bizjoCp7oEaYfowAoWVrtcrPXKWLNgIiswTpGTJ8wjv3eD4OH2n/SmwS2a13N90+dZqKdPbTrf9NnB23Ql57YAiHsJvXOhMZnv96s+TUt5aTG4d410NaRzNTgswNS4mrjNVl0A9bVUtt8Shuh4XG1I8ry8n3LTFASWXiCGSuB4fVlBvtIhXYnKpBbF9q7xgA4CsyEEEz4rDtE4JNy1m7skZnT3GkUSkPfg2S8wyopP7NzPyfcK6WpCuFkJusEwJUgTsmXbti4RDDJktUtw2QjHstRDV3om1qQVDDQyFIxgY5383pPw+Czlyi2EP//5v5M7Xuc/z5pXHZrSstbrauJW1+FFJ9D+gPihc8RWI94bjY2g6OZdmAy7VatDwpDR/RumWDekdzAy/Ps4qson2LGZl8HwxT4PP14ueYGGIEVQPTf7DmihZXxSLbTkLB8KneXoMhbZxhJ5LyIcZOQ7ZjwFSQISlJQrwJj4VY1VYX2VfMVs4INRTmcHlp65ye65UwB0toS8FxFc9agMaQ4C6UanXM8kM1m+JlbhJLZrj0BUrY3BxjrF2RNw8Ug+PLcM1+H1fxb4GctTDYDXqer/EpG3Aq8TkW8FHsM4nqOqH7Be+B/ERHD6TksdAPh2qvBUv0KLx79NAvVaVb0iIs/CKAtfAHwE+Fuq+j5XVlX/lYj8D4wT1+dj9sfnMfHv6xb2VixSqB4VTQvjjY6NOqvNeSbe/sA4h9T75q6b4NrW6rKLd94NyuD8xfElkievTjoyuLqLwjguuUnNBYqOvMXDSwNJYRddXyDwExDUBYjcmG2Dq3skoaA2Lmy0O0JDExZFXPzJJLEBowszUYHJuhOGdK4MiaxQefyDCe971r3ISkG6EpjJG1ha7RHuDQj6Y7pXjKA6OJWwf3dMZ6eohGSnHUsCJLWOCUlItG9Tqx43GoPRhtks3HI0aTTnCco/rb554Du/tJ2fVq/fHxeaxmmCfAHYD6nma9PcX7eZikzAfj/8TrS5TXHQNyb2oEr3KEFgnEhGo9JqIJ2kEl5LQdeO2cwbs74go5XAKkFAGd7HLbA7+4R5TrqyRrhng6xrgcQdQ0Nw/L2isPGDY8RlYOsldM/tkB1b4limfPQh4+8g6wXZkiAa0elZHnaeE/THJFdDRmfMKBycSoj3Q4JUSexGToPAvCu5lhpVGVtqw4ljjDc689vobjSaNiQT5vuaA53qYWpL06bNjaOmDdm0se5rXB18R6sGzrXmOVzdmjxfp8D49+U+iyCdTqksSJdDiEOy9XXCy1cprMWppAH4c6jbSLtxDmWmKVXPOhAGxpqlxYQTnxaKFpbb6jZOhTW7RyA7xjoWZQVFZ43o8i55VI0SsU6AznomncTwv0cjSDNCl4J6fYm1R8c88uhx5Kz5kUaPRRAK0U7PhE0D5GBIrMr49DLDsyYAULSfESwlRB4dxj1XTSJklFaWlRPHyJeTRiLmHYEjigvlZarvBT6r4fhVDGWy6ZofBn644fg7MAmWZuHbPVrlj2Pomr9kkze9EviCWr0PAaU/k6NvztFOiYWgusACCyywwAILLHA74BkznyLw5cbTqvpLAKr6FhFZ9QvaxAN1vF1EPgsQVd08aoML1OFpDFvPw2wKwFHQRPpvOj9PPU0aJ8cBdGihJ2RLAeNVYdk2F28OjOlIrbYSJp9NmlZBq+MIcZ7Kbke70itDSU3cm9MCBIc1JmWe5yxD1hMYDAjPjeimZuzLYGw2oqoVFzRJGN13jHQ1pLC807wboAFsPLRHYvO6B9kK978hYe/ewOS53rUmonFmNEyqJW+1SIQgU8ZrYs4BYZoQ76QTk4wGmJzugZTJCm4b6pqbttSoR9Gq1rVFbU5Z1/M6NGm4nGnU1+a7DEH+ePbfU2dmz5V0Wch7MdGeNW32B///9v473rYtq+tFv22kmVbe6eyTq6CqoAglVQgYCMpFQFS87wKmq0J5RZRoumLgmp+8i08tReHxUBCV6MMHegkiWgKKVFFUoAKVTg47rL3yjCO0+0frfYwxx5pzrbXPOfvstc8Zv89nfdacY448+ui99dZ+7deq8pXNd3uWVhSZ+nWJzKkGkKbmiW0mktW3yZ1EkBYwK6wEJBgn9PCIZNCx8qpg3iZw0j8uinFxnWytw2w9rriAnYC1990ken6PYDLg4Z82z/34QkCQQXyUlwUnJDDZMI2CUsECEaabEQgEmXlZw1FqSYpZQe4iKPGeZV3na93y2HcFJ8lO+c8eTc96/fcmP/q049W/Nz35zUSsJhrvnPhCKc3fF4X85/ZjtJFsYJ7K2VpIrxcTbR9STKdVzXstSupUGcT1ZUZF5uhXVigirMqQ5kXljZXqfP1+655adWVNpbtWRcIOjpBLVnpXavdYuh0T/n/A+LV5r0O+EjNbt5Kuq++2EHxwc5/uaMbr/vUK48v2DmigREeZjTM1b3XRiylCoXCnl61EFOsRvWKVcHu+EIsGAcH+sKaWEd7ddnwaXgxN6+XHvxWR7wf+FqYy8C1YvtAXYjSDOraBJxvLHgB+DfMjv/YsB2wN1dNwuxJUizhTy3BWA+HMCQE1C8EbpfVlJ11LMN/5F5Ew3YDcEfaTnYPjfCXfKRRFJceE6+hc9R1dtcE53eoT3xxaCLN+Ha46VP2+iQ+1elkWLz8VmmEc3Niz5eNxxWl0SO9b49andujdUpID22c0zkgHITKamaGMNfzoyRGd7UsMH+zR2XHh31lG0U9I17uML9kA0dnNkAImWyFl7EghmNn55T17jcJJbhysIDTtV+7iTHnZILpIuqf5u5wwCDfRLGV5lhKtze0XGb++XdTP6Szn5du7m+Tk3YDDR4TBcyHJhyzapECZcCVSVf4pivn3F5xuZIj2EvI1M+yi7SP0xrA6z/o5qlZGsCtBSZpVbdhtIxIQ3jioFDBqkz7dMKfErTetEY+V7q2GCoEqDIcEgTBwJTN7911kcv+AZHdSqgtoHJFv9pluJSSHnutXkK7HFJGY9itAViCZ8WGDmUvwOTiCTkKRhITTxnv/cqIe+l+UcOTR6AfmcJYEqeYx/Xb1ffhjuuenQXF8vQXQZiWnZpuvT7Tq55nnQEw2sLY4viisfUzQbXNC1StTlbvyy2azUidYNtar84wjsosrRNeNT1pcu1Fpkfp95Hm5T4lq+ti5+204Ku+RhCHxU9vowdG8rmtRwNYGN36baaOuPJcRH2Z0b0xI15LKsN4/QNKU8OYtVvaNo5peWiE6mFiZVzdpy1d7RkE5SEl2bNvZVocwBQ1rvNnUqgqKqn32iWRiFKDzGPoXXhRH9WWHqv5VEflqLNP/E7DyrV8L/P+BP9JY/X/HErz+oueuisjjqvqa2zlma6iehJO8qbDYk+NRN+oWqQEsyfJcmr162nkuOr5PnFp0znPbN7xvnYSsK6BUOqq+XnXNgFBHuBcnoeI9oJrnyHBkntCp8eViQNKsmskDEsfmlRKpDAOfeZoXc+eus0q+p84BbCLeHrL6tM3M+x/fs+PsHTD5lAdJr6yQ+GzXwyEEAdHNQ1YnKeo0W7ONPpPLHUQhHlb7LxIhmijR0K4xPkzJVmOiYVYO+FK4+61FaeCHk3PUA51kpN5OsgmcjWt6uzzt+nnkxfy7UN9vfVlTGgiolxNO+wGSQWdnUq0XRVWSSW1CJF7s33vM/HGGI6RQgm4l6VPyWr1mptddFanUL+oGSRhUEz11Uj7bt6rBPTJFDURKL2t/O0cK6H7keplEln7yQ2SXVon2D0xFw703we4BPZdoWfSt/adbPYokIJwWpTep6ISE44JkkhE6jWPtRiZFlYTGTa0hSAvyXnT3BvhFRmBdgaFe8rXZNhblDizb/0mqFnOcU+el5jaN97kEsAXjxrKoXBSVz05yF7HJMut364pWeW5JUM54rryiOj8ZCgfGi64Z3prnTnmgbvAGxk31ijAAItZ/j0aVAQjl5L+EBLa/8YSNj1b9ffL4DfTgiOA191NcNONZdvYqHuuueUWTXO0dS2Iyp6iiYWBjkUBRcwxE+1OC4QR1bV4OcpN+cxOK8jqjAMnOqUf13gv9o6rfjyVenbbe33cZ//9QRJ4G/jovgJHbGqqn4SRjtQwrnWLQLsNcCHwBod5/X+T18qjLZr2QY9fhOstipcf4oqAhREdOCsSH8ouiClkVpgCg48n8fgqtdETduqa1OqOYTE2HEjc4ey+Cl32KItQnjtQGds2yUj+1XO4rnNQHmZs7rKpy+MkXwBmQenhE95l9xo9sVHqU2zswGECWExyMmT5sdILpZkQRC70bKVOX9R9qgS9n56tVSWpatXknoXBh1Wgk5bUkO9ZBh4djGv6wlweLvEJnNR7P4n1qek7rYe+mMsVJ2y+reLXIOK2fW/NzHUFAsWpUkNEVQQpMZk1roc1AIFvwbpV0H9fW3CAsWU7gRdaLwjykSVzTYC0qSR5HEdBZWrXvLENr91Xi+HiEwl+W85gNfr1g/PpL0O1Q3DDPafz8PtNHt4jWVtEb22WxCYIQ2Tkgv3+L6ZajwQhEw4yiE5aTqWiYkfdCNBCCobXR6YPrSBpSdEIi/zziGApLxgqOJrdrlt0ZlLJdYW1y3UjsXDRxOclIbbbhpmFaX+63uR26TPNdaiq2+HNvXqM7hl7a5OART2OB4GhM4Z0Q9SgGWKi9rhXq+tTCyQJKGMJ0ZolN7pjFeOwqW0kZ4pdAzAiOIuvra1QW87zm8/fIV1mr3S/VAnb26Lj1Zq+9bNcznhDsHJI+bJ7W+NIF9OYtqxrlJ3sHR+T3XyTd6JRyrcnelHTNxo3Sw69ajgkzZ9AGax1732c5oQgUtm5wNCEYT+5OX3wWnCN/xlkgImvAJVX9eGP5p7sErxKq+gzwlSLye4GfA+Z1Js+A1lA9CWX4ZQnqs+CmsVrvzF4ol3WRR2nROSzymi7icZ1mPPiB3Fe22VAT6Qf0wqaF7fcOKLzWpM+0x3k8a5qpOpnOZ8OOTcZKAqnK64Vhdf71dVXn9C3L2Xve6CC90VgvRdlJYHuX7vYK6UXLDk2ud+HmDtGlFaYPmKHa3TuwjrHfs+xq39kX0NtOiYazUnA+PkyZbVr4tHADfrg/IulHTC51mK2KW89p1KoSPmtlU+se5LuOkwzQsw68Z8Wiwb65fFnItM6v9jiLceDf1zAspckAsoFr02UItEBv7TqN0G7FPfWFJ2ohWE2zapKm1Xqej6fN4gBhWBm5aWqFBWplh8vL8R7ZBULvpfzb7h7J/jrZ1oDwuuPvbe8QXl5j9sAGyeHRsVLIGoWEU8e3TnPC4Yws6BI6NYpsNUEytUpvToM2OkqZXuySdYTQlYQljmA4Q67fqnST7zbq7fdY+2rIj9W3OYlP6lHnoi7jqfrPt8Pp9jzqkyoSLivFrWplf3UTgPEVIMsIrl6B/cPSAC2mE4KOn5x4GouasVmr2lRGpLJsbpJkclRFpbeaO5kr520lS8v15vZNRROY8+76vrTTQfctghUdbVBcXEd29ihubBM6ekt2eZ1wb99Kvfp3JM8JZhnBLCodJTJOiSKTaatXF8z7CdHeIZ3njMowu7JKuh7TuTk2/WP/Ht+8Na8xe85wL4X+ReSrgH8E3BCRGPhqVX2n+/n7gTcv2k5V/72I/CeMLnBbaA3Vk3A7XsqmseilU5olV+vhxfq6y5IDFlTaWdrRLTqHJclS1TlVocnSqzmagoDkjfPyg3JtJq9TZ6DmecWx8xwnlWpAzt05+tm7P9+6HqDfdxggeTDvOT0BqkXpuSWOYDojfn6f8SfarF0vbqFPPkP8/D7pJ5q+qW6tITd2zLAdT0iesGsLhxtoFBAcTukfOOmgKECjgGh/QuDkhBiOiHdjglmBPmTcxfhgWkpzlV7mkyY6dxInGYFnwWmefG8sNCkAp70zi3Qpl+mpLlp20uTNe+ZFyjK9QQZ5R5H9I3TdVV06GFbHVq28GWFYhfDLfRaU2WG1krOSJPMT2TB0VamkTJzxWpYExoMtqSouKUzq70IdXp5qlhI+v8PstZeJLpixUjzzPNGzt5i+7gpsrqPXzdPqed3RE9cJL27YqUcBwc4hycG44vr1I5IbRzAal7zyMAjojVPGD6xUhur+gXnAsuzuteFlOIkWtahvbbavPAcWVIJa1A4X8a0XvRuLCgY0jdT6OS1qv819ughW4B6JZMAspbi8SjBLEe89nU4s6pTqMVk/dZQAt8DOr/48JXBGaa1t16IjEkiVoFVef1Et0+L4ZCtwRWSiEKZ27ODaDtmjV4guXUCfvUawvWe365HLyMqAYnunKk89GiPP3yTmUnVOB0dE+4ewtlJKqIXXDwkmUyuy4baNbw4pkjWCw+lcYRmrEndOrUG9twxV4K8Ab3FVrz4L+Fci8ldU9cfhZJaQqo5F5H/HCgqcGa2h2qJFixYtWrRocbdwb3FUQ1V9HkBV3yEivwP4DyLyII0rEZGfbGwrwO8QkQ23/e87ywFbQ7WJZph8mbeyjtPkqzyaWfn1YzW9p5632pyN++1OS9Zadu7HvLHHOV3FWo+sD/ERlZfh2nXLrsyL42L8MFfBR4LAhPjdZ2Cu2lSZFR2GZTJK/RykUNTzV6F0aEkUVQkw/jpLeoBfKYCVPrq7R7xvYf7pA2t0d1bQm7dILlrIKb20QrJ7aB7QJC5rT4c3dskvb5oAupv1y6BPMMmtMpJPTOj1kNGUaP+IFXVyWbmalyqQuTDaPYmzel6bFXtOW++05Sd5m5oe3WXeWxFLqACm65Ds2bskz9XoGE6QnDCoQoLinlutCMBcyH7OE1XjS4J5SKPIPKpz1BZBcns3yjZB7R2oJQZKEMxFHKSToDt7RBfXSa8abSHa3aPY3iG+sEa2NahKr6apeWLzHDly1JwktvM/PIJV8yZHh1OYzKzd93vldcnNXbpRYG0c49eWFbLOA3zZUljelpZ52evJcXmjT65/X+QlXchXZb69L0q48svPSvda1NeHAawOmG7Y19gpMOkHPkpRi0RJFDvPaCVTZXJTJjnlE6w8rC+u+KglvKRbELjwv+vHS5ktv4P6fQodFSCsju0jLaqIa2PF7h7h5ir51irBrV0KV2413FyluLRBMBxXkYgkMVrOte1KdjAKzXPa7RAeOTrVdEaxt08w6JfFQdjZowPILLXSsDWljfNBtF6Me8yjeigin+D5qc6z+gVY1v+nNNZ9EKuC9b24rg+rOPr/vp0DnqOe6JzgpEz+Jm43gaqZ5Vkf+E6SXmlut6hDXsRTbZLulxkfvpN0HWy61SPruY7R8aA0TWGmc3XS57hOfqCFKsRZy+YXt3wu3OlDr1FU8QR96HY6q44DlYHaNPBxHNXyPuTQ7yGTKdFzVhc+/eSr6JUL8ORzRNf2ABi/4TLFpU2C526U5f0AGI4Jd2MLW5WcppFVP4mjsuMrLqwS7B7BdEZ403hYutKDQW/+Ph/epR6omfUKt8dDPQuv73bXXZYgtWzdk7i0i/blVS4CIb1g/OR0Vek/L5AXFL7Od1gzHPO8SkBxXGfRmsRUfdLXnHQ0JegiezfED66TqSVUNYwQqVOCattLEs8fZ9C3MqbXdshed9XWuXQBffo5ght7ZJ94H+ooATx/w+qcq6KuCpKsDGygz4vyPQ5cxjhxjDojQsZTdDoluL6LuhrsMujbe6hq9+Wokdn9cqOe1HMaTpqMw9mkA2Fx4lQZ2q+1+Xr/2jxWs68KQ6NTNJ0S3gCuJ9yFIdnmgMKJTcTD2iWm89xozeYpKxIal7Q+US551TWO6VwSVO2cg5WBnd9kWrvOeV3Vap+O6lXTxNY0s0nair2HMp0h23voJ9xftmEAublL8eh9sLUBLmGQfseONRpXTpFOx5QAbu0i49oEKwgsKdbnAmQZsrMHqyvIyqAcGzTPz1e+QA2i3GtZ/3+aRohfVQ9F5EuAr2qs+5nANwN/FZOoeo+IjFX1v97OAVtDtYkXkr3/Qo+zKOv/tOOf5qX1/+v7PG3A9+s772YeB2SrBZ2dWofU7VSGm+eiet1JCQBt+vznB2SX6Vw/tkSRZfM7rUnA/nuRdH9tzkg95p0s1Lw+3U6p1yo7B6iIZUPvmbcp2Z0wu9Snc7OH3rKM6nh/g8nVAf39AcxmpWdFtYDdvcp7CzDOLRln0DddTYz/VxrSzgigl5A9cAFJC6uVDQSqsLN7/P7faZw0qC+auDQ9RE1P06IylPX1m/s+6zksOo9lwtxn5fUlCVnf8d0ibKBP03LQJC+Oc1Hrh3GDrN+/xPFx3qN7b0pe3XRauguOnbPbduEx68+i3zNZrQNnUBeKrK2hu3tEe8Z5Ti+vEm/3KHZ2iQ43SS+5hMGdpOKJ+3OdTGE2m9fFVDXjNQjASbIxdZxCn1wGFJc3kDS3pLQohFu3lt6vO46T2l4Tizj9ULVR35bTfLG3szkRXsQxre/P77OMinGiEaz+GTWN5VIFw30PBDodim5IanMHoiPjWkoSV/kCUCU51Tyl3n045+n0XtSaA8Abr5Ikc5EAzfO5vAN/nFJztV5gQAI0SwlcFCPo92FzvWrH2MRHD48ID8Ymr7Zr7bY4PCI4mJBvDQhdf02WuXc0Q3f23Dk5B41TmgGg20FE0F4HGQ7LZ6GjsRUc2Nq0yAGUCcKMK97qucI9ZKiq6nuXLE+Bf9NYVmDSVD/m/t/gBdidraHaxLJQzZ02YE/Kcj5pgF4kT1U3Uhcdo7luYMR3HdggNb4coaL0b2oZHhTXCVqVHTfgemOm4VGTJCk70lInMo6tg/GZ/v7cxxOQWlZxJ7G/0WjeIIZamNlfT2Fe2qJAUmdU5jmS5WgnKo2I8Nous437KO7bIniueo55L2Dyukt0P3ytyp52maKW7e28wbHTuJzOyvsaDKcUKx2C0biS4hrPyO5fQwVCVwwgDEN46pnjz+LlQFMhoT5YN3FSlZxFHtOzeKTOmoy4LJt7UTut/9YInwOQxGg3ZnLBGZCh0ruJUUpKOkZhxmee23P2g7sfDAOpMpChmlTWw/1+HW+EjnIklTkKjNU2n1Ue0jLJJi+9t+XlBYG1vTrlRQsbjLsdxNFQso370KsXkeduwDQlfcAG/PDR+wifumFqG/6cplN7P5KkijqIWLZ/UZQUAe0lyCRBJxPEJVgVF1ehGyN5QXg7SaV3AidJmdXRbCPeKG1OugqtJpm6oL01o2rLjNVj53mG9QIBwsURg1pyooQh9LquKpn9PLheWF+UZfN2jRbzYvt+mfecNjygWqgZuzAXBSsn5lNzQEi3g/S6c55Iv069QICEHE+oGk+chFvNqMwyuLWPDDrmQQXk2gxCYbae0HnQqlgFz21bO/YeXHDeU3FVtZwSgOun5eCoSkB0UQwZT8ivbCCZjxqkFnHY21v0VO467rHQ/1KIyK+r6qc1l9ckqr4M2L/d/baG6llxGld1mZZqM8y3yPhcZEA212kuOymcX1ccWNQhLvqeJOx++gYA+59gFVA2f32v6uTjGCRDOr1ylqrpUbV9WNunD+fneelFlU5iy3zHBebJDAJ0OkWuWIZnsdJD8hw5iufDW052qPTU4mf4bvu9Ym6/pecIYDiisz1mcv8K4YZ1XLONCClg55MTLg8vEv7Gk8fuT9n5xubB0Om0HPAFYHWAXlgvB3eOhkSH6xRJQODEpbP1ZFF+8d3BSYP9ojZRU3dY2EZPUgZYlH3dRLMNL9vWf697C+vLG5zAw9dvsP0mW7T6WMDFd+7MGcG+ytmczimNwbbkPteE5V27E88PDMNyQlYOyElStTsRZDxBs8wG3pr3qjRoa8fR0dgG87K6Vm7vWieBoRmV8c6IdKtPsPYI6WpcemJ2P3nAWvd+4nd9pDpnFz6WMKwKaYhYRbc0K71M3ihiMilDqOFwSr7SIZhkzK6sEnz4+OM7l2i2s0WUgZNoVXUs0zn13tNlaMoRNqkDflmDJjBHYYpjDj/1ItufGjKwKDmb775VFVlJknICL8wbjnOoZeX7dSSOan2bK34xHM1RA8JB3+lMVxN2iqo/rpQBjhvmOpshYWDvib8XjgKj4wnhvnlVAWSzT+E8sdtv3gDgUmZRLdt3Q6EgScrIhH+nJI4qh8rmOrq9Q3F4RLg7QnueNxFS9FbgicW36a5C7y1DVUT+H8t+Au47Ybs3Y9JUz4vIm1X11856zDtqqLrMru8FPhXrUt+qqr/cWOcLME2uGNhW1c8/aVsReRPw3cAK1uz+iKoeiMgXAd8OJMAM40P859s+6bNUC/FG4FnLkzZxkgF6lvXnPGUclwnKCwhOmd373+KIYnONnc9Y58Zvt46o91TM1V86IHj2ZsmBE7CSiut9gl3naZxMLXS/IJlLQhMVLzvEMHRe2w4ydR3e2IWXoojClafUMES7EeFkpQqjTmdlAorJrVSeXM1zZDYfORFVG+R9skgnIdgbUjw4QFdceCpTpush0QjTEFyzxCsOj8xrvKjjzws0d3Jb3Q5EAUUSEZRJAF2ip29aW/BJBA9uLn8Gdxp1g29RVak6x+4k7/3ttE2oPPonGbX1wX7RpKtulC5LnPI83MANxGtdbr1lixu/LSfZtm2vvn3PkqhcMlG5vzhGZFyFdz38u93QPS1L+4JNXKJw3lPnvf9ba3PnKoMeMp7YeTYmXmUClfuO4y+WBovvY/zxANk9pLhvhbwnxIcp4ytGRenu5ITD1JJXaudV1pj315jl1XnUixV0Y/M4eePn+i2iG3afgkFtcnk3cDsleevwz6FJa4HjxuQS7+mxBM7Tchiay+tVtPz2fiLcNPI6Sdlv7Hz2Fa5/Xk68DZd/1RwCxZPPEKyuoLnx9wO3rmYZwXgyP7H3Rp7UZAepJvvNAiv1yoISR7C2avehExNMXZh+OHIV44p5w7gh+1R6YFWr0tpxVFG/DocU95mhqr0QyZUgVZIj1/YOx5ZMq4r4aX4gZb9SJeia51cnU2u7gK4O4OYt5z3dR3b8RDCA+y5yXnEvGarAj2Ah/kUDQ3fRBiLyfwBfCfz/MHPi+0Tkx1T175zlgHfao/o24GdU9StEJKFRkcAZo/8M+BJVfUpELp9h2+8F/oKq/lcReSvwF4FvA7aB36uqz4nIpwI/CzxwJy+uRYsWLVq0aNHiReEe4qgC7wP+vqq+v/mDiPxPS7b5Q8BnqOrErfftwK8Bd9dQdSW2Pg/4agBVnWGezjr+MPDjqvqUW+fGGbZ9A/AL7vPPYQbpt6nqu2v7/QDQFZGOqt5eqt/tVI+6XWWA0zxEtYQmfCbySd7U+vdahqeX2AFsBhwtCD67Geje51xl9/UBs62C3tN27Id/9ojg+VvQ66J9500J7Zw1DMsMfel1LTTpwoslxykQSGILLfrzd1I56YVBWW0kGI7MqwQE13dtvX6P2YMbsDUg9MUCsiWJDw7eqwqOzxrbPrXjqp/ct0Z884hkr/JA7f/hQz7p0g0+8HOvY/PDIbJlHrdgNELC2J5bVvFecbP3undERlPCnYOqj3EeBJ1OS3pEEoV3sYTqAk/UohKR9TDkoiZd9yY1EwAXUQLCwJY1MpMX8gGbXlavVFEUFU3EH7eegOKk0kgSDj/VaCPbbwqZ3JfTfT7iwZ+3UHlwbdt4qytdJHXvVppZGy4cn7nOIQ1rlBl3nNKT6p99EFBsrhFMU7jlKre5pEDZPSzf+ezhy4RBgKRZmSQIlN7UY3AJLOqPNzOeIL0uxeUNO/T1XaLDlPHVLk98eYfXfdKzADz3sw/z4DMFrK9VyX2AiFj41nuhtJbQ5c9hOkNG4ypRB9BZ6kK4IVES393Sk8vC2os8pXC8jSzavslRXRQlw3mkl0nM1dvwouRA144kjo5l6QNVVTMRpN9j+OaHuPkme/aTywXd5yIe+ff7BE9ft/VWBujlLWQ8s4INde6+yHGeKFTUD3/Njhbmk+b00iZyNLZKbX78iCJrQ0VB8eBlApfNJZOpeTGh9KLWpanq44/xo7WUOBOAfh+9/yJy64Bo1/rHYpDwkbfGvP61z3P0kw8DsL7SJcg20b39qi6DSHm/ynen5OGGVdLUeGL9cZ5TTCu+tgRByck+d3gRoX8ReQj4ASzkXgDfo6pvE5EtzPP5KBZ5/ipV3XXb/GXgT2C8im9S1Z91y9+CVZbqAT8FfLPqIkOFbwEOlpzS/7xk+ROYt9XXW+8AH1+y7jHcSY/qa4GbmIv3TcC7sAuviWzweiAWkbcDq8DbVPUHTtn2/cDvA34CcyU/tODY/wvw7kVGqoh8LfC1AN3bLzlLWaqvzj1dxE9dxlmF5aHUoqhkNuxkG79X2+miKht+vxtr5BdXCUYz06LzNZ/v2yorK936Lea83n6T6aV2bgZceq91BMGHn4K1lTk+aTHoIJPM6oP7ih9JYhWhIpO7kbSmCtBUHFA1qZ20sIx5MAM3CEweyPMEs4z4VmLruGWlIeE7Y58skmUL+WcSRRDHTFy51PGliPwTu+y+kdJ2+6IHP86fv/LzfNEj30zWjwhHaXlNDHrkqz3CbfcuDod2jRqXISai0BKwsqwKO7nOHagGt+3d48/pJcCLbscwz1k9KVGl/gwXTbaaBmxeHF+2DE0jwBupqyvMHtoCjJcp17bLgRMguHUIUcTO51xh+9PdacRK/+mQrQ/mxO973Ba6THpNItRluQcjLCQ5nkAUzpvzTmJqbtD14fi6XFo3Iu9GhPuHc9dY7OyariMQjmaWXb4gGavkDdZLqfo+w9+T2Djd2YUVjh61MG/4yAo33hISjuHz3/x+/srVnwbgix/6c2RrHeI0Rw5cG1xbJbuwQnRjH3zCXxhaODiqJpw+PCthWJblLBGG4K/xDuCFtONyUryoMlpzgrao7TXD/vX1msaqlxdbwFVelHugNV4+eY5cvEB+eY1w1+6/3tpBul10c7WsnsZozMFveYSbbwpKg6X/XMCl96TwgY+jA8e/jGMkK4x+FUfgM+LzvExgrRubomYgl1zWelXEWj+l/Q7comqTs5Ri7wDpdgjGKeqy7KXbqcL6jrYQxP66q2XAnDJAeduvbDJ8eEDwwArPfW71Lv2x3/yLfNOFd/BZr/lzAGSbfeLDkb0nly1cn6/3CZ+9aX1sDSbpJnPjoXQ6NqbUyseqBMi1G5xHCC8q9J8Bf15Vf01EVoF3icjPYU6+n1fVbxeRbwW+FfhLIvJG4A9ieqf3A/9JRF6vqjnwXdi7+D8wQ/VLgJ9uHlBVf3HZyajqr85dm8g/wfzFU+AD7twU+CLgl856kXfSUI2wmq/fqKq/IiJvw27WtzXWeQvwhZgV/8si8j9O2fatwD92nIefpOGlFZFPAf5fwO9adFKq+j3A9wCsydbx0XkZV28Rp6nZYb1QzuoynMANLPXhtEDElRt1SSWT11wgmOVIGpJ/wgNMLzov4msiOvtr9G7lbP8m28/gGeHi+2ZoKPQe27GFSWzeRJkRHLmOKApM0L5WPxkR41VFofHdfFLLzAw4RCoeXGrfo+2jiuDuDFqp1enW0RjZ3rOZuMvu9J4dVCstVn/85j0S8+bq5ip5186niODgS4f8t9/yXfzRj/4BAH72N97IO288zP0/HdF9aqeSLwGKbsJsq0Pv+TppPzDvVjlg1Z657wxdbXdEKuN61gwivDQ4tR0vQzP733OcTz/gyb83PaPNZWfZTxBYuymU2UNbZCvWdoJpBz7xAcZXuux8st3/3s01+jcyrn1eztoHbb0LHzRVhu4z+5Wxl6YQhQSjajKE83BqmpUD3dz5uqITQJVwlSQ1Xd2U8NouujYoj+PbpMSxbQPVJLGUcavdj7IYQKXzKA0er8QxxDHZakwR2fLnf0fBf//d38Hv//Wv5u3vfwMf2rkCwNVfFOKdsZWHdf1Qvt4nH0REeV4qUxBFlV6rT4p0xpW6OvBAVSJWtfL83QGc2o6bfOr68np0oPl90bp2QLcsON5/+InCsoRXv87yi5nvy9KM9JELTDdjOj0zXsOtAUcP9Tl6MKB7y/YZTZTnfztsfAg2P2yGYN4J6D22Q1FXLeiGMJkRTGYwHJbtrDw/aeQEYEZQaazleTWp9pOT4dTyBqKojAz5kqrFcERw7WblZR9PKNJsznNbclUlKA3TIjUZK6SKRsjKgHQQk3eEW//rkF/+7O8B4Ivf8zX8yE98Hv/qkc/mof/s7sf20O5lEqMd2z5bTwifdfxXv8+O649dSWJwnFunODD/bIo5Sa9zhxcY+ncVonyVqEMR+RBGefxy4Avcav8SeDvwl9zyH3ZOvMdF5GPAZ4nIE8CazyESkR8Afj8LDFUPEXktRtH8LZg395eBP6uqj9VW84bru4B/V1v+9tu5zjtpqD4DPKOqv+K+/1vM2Gyus+08pUMR+QXgTcAvLttWVX8DZ4SKyOuBL/M7cyW8/h3wx3zVhBeMRZ1YfXm9w1rUeZ3kUW1iUdjohAF9bvboMnanr78P9Y7KWUHy5LZ5OTsRUc8e8+aHC4LU9tu7bss2PpbRfd+T88kjLmOfLKtCKlsbZBt9gnFK4AnyXgRfArtefx98klUcVxnQs5kZCPsHSNqvrjF2Gqp+QIoiMwhmaZVA4rNc6yR9KOun15O5xGXokyvRyHXQFwJmN3s8l0c8ecu8dBf+c4fOfszqh3asuICvbFIUBEdjurMM3T+onon3inmvsappqhY1w8KHplWPJ5idFzRDpGcV9V/mFV0W9lzWfpve2brAfRIze91VNAzIOwH9DzsB8PGE4som0Sjn4vur/YaTgpWPJmx92J5J74PPl+v7aIDOUvOvDcew7hI4Bl3LfFa1tlKvjuaNM59ZnKY2QRn0qjaS5XA0MkqKv544qgbMupGrs6pClL8nrshA3aiZq0oVzN/DYJoTjXwCY8DTWYfdwz73/ZeIzsEmAIP3PWvHOBqVg3Z4c4/wsIPuHVRetSyzidx0Whre4jzA1AyZkmYhsjz0/TJBJEBr1ZU0z+0eLUuyahq3zapR9Ta7qF2XFKagmmicFD0rs+ILpNuheNgSn0cP9ImHOav/7eOWnARkl9aIxwX96xA4uyk5yOk/F7P2dEbng0/bNY7GaOAMPW9oDkdweGSZ7Re3rP0B7OyZEZokiyNtPts/MYlArUmm6e4eMozNA1n3GmMGq06n6MhNciQwTy61KBe18L+DhGFpqNaTz6JhSmcnpHj/Gj/2xtcDcDjssvURpfdLQu+DTsZPtZzgy4F5UDtHE4qdPTuWNzjdZE8nMyR0BniWVUlhYWieXjvJ81slUCknxktwUUTqnsrvcRO8OYjIo8BnAL8CXKmVOX2+lv/zAOYx9XjGLUvd5+byk/CDwD+lCvf/QeCHgM8uL031X56yjzPhjhmqqnpNRJ4WkTeo6ocxr+kHG6v9BPCdIhJh2fqfDfzDk7YVkcuqekPMpfjXMAUAn5j1fwF/WVX/20t+QSeFL+s4yThtztgX4USPkxvU6oJHSQJJwnQzIj6yFzF5ascG69EYCQI6+6661GiE9PvQ63KxawZb/yPbNph7fUV/HBfCLTu+UBhf7ZIcRHScpmMZ5k1CGwD89vVOvX49zltGTZxZej2UcTVA1u+TH0i7nWpAn+Mphnbefhts5u6NycBpmXZ3CrbeE/JVR9/C2sds/c5+ThGLcW99pRi3TwC5tVtNcuteVBeGQwRd6RlfzJeOcZ7kOf7haZ7IO4VlPGg4PpAv4/q9mGM0qQEnresNxSji6KEueQKXfuHanPB98OQ1es/XhM47Zjxekg26z1tWtO4fVAZj7Tw0zYyikVibHz26RufWjOhoNG+I+cmWarkPiWNXwaqKoGjuvLPDWtWf2DxSVrmNan/OI2nL3fbjybHiF/UM9fJdyDIocsJJRmfftr3yP2L+6OE3sfExpXczpei4CVG3A3sHlQwV2Pu4s2fGdl0WLi/MAKobpUVh747nAaaN6kl3EceMr0UGalkxinmedbPtneY7OC0qtmyZunKhm+scvtY4neFM6TyxY9nybtIbPHeNfr9P9/CQYHPDto9jrmT30Xlyl2LP1pM4MuOxPlakmXGmOx2mD6wRTuxZxXv7oI3wt8vmP14kxXFL/XLPi06zkk+qhXG1m95Z2yZ0nFjvLBCQBTxcMXmqkooAyGRGNIq48OsR/0h+HwBX35kR70/Iu1W/XlKogqDs33U8MWO8Ua0w6HUhSCvaQlm0YoEKwiIj/pzglND/tqp+5onbi6xgGfXf4lSQlq66YJmesPzEw6rqv6p9/9ci8g2N8/o14MeBH3oxzsM7nfX/jcC/cVn7jwFfIyJfB6Cq362qHxKRn8GyyArge2uZZMe2dcv/kIh8vfv848D3uc/fAHwi8G0i4ukFv8snaJ0Zi/h4t4OT9FYX0QVeKPy59bpoJ2L9fdvoTaseY2Ryq74T9HrVsdLMjNXZjP6H3Es8GlUepNoAX1b/8Mbi3hHRcI1wXOv4vEcqdAN8yVHVyhPgl+WFeXyyrAqNdhLr4OO44stluRku9VBNEFRC5nE0b2A5D5T0++X9gB7ppYF1fkDeFbp7BdEHhOTAzj+cFsiRonHN2AXT1+x3TBs1rML25f3wnd/6KtpNjA7hPbyOO+c9vXPP6W5hgSFUhbg52YA8Cf79uJ1JV73917mu3usObP3i0yYW7ugW4KgfSWJVlry3ZJYiaUpvmlote6zdlyFNbwjWQ6e7+wDE+ysWfciyOaOUTli1aQ/vIa1VlSoHxTpH2rdJHxEAu79haPJqMr/fUvbITz59Tct6Cd5Oh2JzgEYhheN1RxPl0q/lxEOLjoRO6k0jR02pUXN0Y8XRaCp6w1xiWGmoBuYtDqQ6Ry/JdKcLnbxUKD300piASZlsNLdefbsm6pPfk66/NmEmDOzZHw5Zf6fzxh8cUAzHxwzrwnkoS6O026HznifK5UBVGaqJrEBv3iLe7BM4Q1VdQquX+gPXNps8Xq0l3PqIQ5pSTKZmpPqQejMpy98PZyhXbkoc39rWqWurii9U4ZwXurVB0etQdEJ62zOu/rLji6dKkCnh/qys+idpal7fMKjyJKazil7jJ2Oq6HRmhqnX63bnWz7VelWupi7rOcKLkacSkRgzUv+Nqv64W3xdRK46b+pVwNtBzzCf1/Mg8Jxb/uCC5YuOt+U+/hfHf/1hrPv9A5izsI5NYMOtew3zuP6Iqi7c9zLcUUNVVd+D1Xqt47sb63wH8B1n3BZVfRvGi2gu/zucUeqgRYsWLVq0aNHirqNyUN82xLws/xz4kKr+g9pPPwn8cUxb/o9j0Wu//AdF5B9gyVSvA96hqrmIHIrI52DUgT8G/JMlh30X817YPzV/Nfzt2vddVf0LwF8Qkc/FZKp+zXFpf2gRhWER2spUTSzIIl+4zqIkHpgPIy5KwFoUTjvJq7UoiaCONIVONC/k7XfrvUpJ5Q0070rN++l5cc0kKT/79jP08Zjek3uoK7cKGL0gL4yTutqvYgeuik65b3AC6d57VOOj1v+Xxy5s9htXM+e5zFu/ahjata+tUAxsNj691CfvCOlKtW48LOjemJCtxCUXqAgFjQM0caFi7wUrCpfhXecgCwz65nXy3ioRyLy8T1pdY2bPvfRK3M3Qab0tN0PxHs12d5ZSlfV9N7l+i47hvzdLoJaeGnf/uh0IQvO417ir4kPTSVJJo3nuYM0L5beRIKiy6fNaJrJTq0ie3avC/FnNw5KmVhggjktudtkOGl53n+wxd0tw59R8R10YtR6K9N7UUvQ9MT63rvRKdYJsNSFdidAAopG1tf5zY4rYssPVe8TL88+sDKr3PA2ndp+9TBPASqfGx87nr7EpoVR/f+8SxJdtXoZmpac6BYDm97kdu/Xd92URtKZXtal8AfNKH71eSW3So6E953oJ09BFXlx4vdyt9847b2UxyZBAFicujSeE13bxhS7odS00XhTGuwak10cZm4qM+JB+Yf1fzVMuQWBSgnVKVf0e1b/GkZVarfcP9bKvbpyRfg+6HXR9hXzF+uUiCdFICMc5wXBGdBhU9zNXK9Htvfn+/Jr8aH8c53ktqQD18SMIyhKrTUgg51KuVHhRHtXfBvxR4NdF5D1u2V/BDNQfFZE/ATyFKSShqh8QkR/FqJQZ8PUu4x/gT1PJU/00SxKpVPU1t3F+ZSNyagG/KCLfiGX9/wFcIuVpaA3VZTgtSWRZRvNJof0asfzE487t7xTDIc1MB2+lh7jqO3p4ZJVAfKWZWiWnqjyj56KlzNWfrp1DfSDWLIO9AzN0Pc/Jc+86CRqGCC7kledI5AY5P0BGEQRqx4lrza7RYeO5slHtXgSBJXz4JC6v7drrUriBPe/bPseXorLSie+VomGOhkIwzcuZqwTCrBsw2+jQ2+lWGdCjsYWrkrjsEOcMZN9J9mJ84lRpuLtQV11u666hyckSF7I7Lex5Vpxl29Mmff598cbieAKdDtLvGU9NqoFJZylzFcNEq9B5WlFESvpFnV/XNBz3DkoKhM5mlfEbdew9Gk3LEGmQJLZusy9QLUvrzi2v87K9MRBZyVVPH9E0rSZDPgS7OoAA8pUO0wsVnzSYKRoJ0chRHrKCMCtsohQFpTICm33iozGMFJ05I9vxDo2P6u5Hp+MSy/pzSUB0Enu/fPg3UZZWaHuZUVc4mcMieSrbYP57vX9pGlnNSdsip8EiY7WJorAwdJaXVdCCQikOD+cN/rxAxSYzcxJlPrHRLQv8+1s3cmMp+9Rie6dyRIDjswbglE7yqxcItw/sPWo4IOYnXSFBp3P83nqJuQZdR5wGa117WMLQwu+eSpLE6EqP2aU+4kpJS16ACsEkRfK8UhgoCjQOSTcGRP7aj0Y23jgtX6CUJQwG/fKdkSyzdlsvk5sk9p4dgGmLu+P45K5zilOSqZZCVX8JFvJLwXJ7Fm3zd4G/u2D5r2KVQE+F48R+CUYjyICPAv9Rj88qjxVfdobxz7i/M6E1VJuYSyxx/1XPPjAvkjtp8hVPmrkuOk49+aVs0P6/cZF0a5X8YUvsi54JbCbtO0g/4DuO6FyJQD9YdaJ5D1cUmZfHJ5Xkdh16NJzzGivA0ZAgL+Y9oPVsbr/PMKi4XI37pV4CJYkI9g5tueeFFo7fl5iRrFtrtrifoFGIBpCu2/bRqCAeFqSDgCJx1527zrJua7jrSldCelB2iJrnMJ3am+8N0CyDceOacoVQmN23VnYTyRO3zMCFSqEgvIudY7Njbg7gy9rdWbyqzbZ+kpf2JDQmbcVaD93sEz4bVBOTKLJbXCiqboLljFFtGIqSJOY5SavMX/8cy0x+lzznvVhlEsl0iuwc2OAb1IyjvDKWSnhetm/zfkAPA9MgBuPEqh6PBEhg93hlYBqWYF7UAvJeSDC1exKNbYI169QndoUV3QCCcQordvzphQ7xE40xIsvmyxhDmdTDdFaeu672SC/0kVyJH3Pi8oFAqnM6wXcFtf5YiuqZmKG/wHhd1HbPohFsOz697frJSL0oRG171cIm6QAXN2E8tuS1ruvLApss1rPTwXlZyasMfd8mvYQalDzUcgQYW4RACycHFUipMxp89Kkqsa4+7niZtDpXPAwQrb0zcQTdrk3K9w8ro7TmdZWa8SurK+bV9ceLAvJ+QjDNCYfWrxbdmKwfEQ1tPPLbaxAg4xRWEtItS1TtPO/6WakiAeoMbJ1Mqz64UJsYrPRNKg6YXRwQTjLCo6HdN+9c1eLu9sUnQeFcunqXQES+CqsI+l7gdwD/Hfgc4P8Ukf9VVd9XW/2dIvLnlu2rQVdYitZQbaL+UtdDQ3UsC3fWUZOeObYc5ju6RZ5bv3wZLaAuYaNKsHNI9hqr0JPfv0X4jAmkz9Ukz4vKq+pfdm80JnE1oIrYdt1O1cmrmrEZCKUOFtjveY7mw+MdgWoVZgwD6K64kGvN8I5Cik6Mdu088m5EFICkNWHtPEdmUSlx5cP8GgbkPTvncGzXGB9YeCtd6SDe0ZYVFlqph2VViQ9zxpeDMpQLzCfK1EPPTtOyfExFQd7rkK5GdHbcNU6nltigWg4Sda/Hy4qmp+mFzNj9PrzHonafygSVZhtuhkXL458htqVKcDBm9sA6ct8WwRNObmrmJzlCWSLJGWFA5aH3HrYkOU4vCYLS7aCYiLu45SVSJ0nWDHnnBRrWjFWvQ1pHHLnExph0w5LDkiyvJn1e8QKgYyFNHXSNegIUsXl+g2lONHHtLs+ZXeyjYc34CoLKSKAyGLzCRbN6GrMUlQxJ3DZh4HSSszKJbXplhSIWOjvT0vgpK2klcTVhvFtotN2SDlAPO9fF5r2U1VnafP09yW/jHal7Wb2B650SLjoz+8T7CFd7ZjTWjT1/bv7cfQEDEUvAswuyqJg/lluvNFan03IiKoHzvBZaoweM0dnMjFiqffokz8DTwWrRgjJhdNC3CZQIkmVWWc2fU9pQEnATMw2FoueSoYqCcDhFZlWbzwcJRRJYv17z0gpAKASzgnwQzN2j+nFEzSOqUKNViZsYREzvs8lhuhIyeGxcJlVWOwjOr2QgIOczx2sZ/hrwOao6EpGLWBLXF4vIp2M5SL+1tq6btfMG4DdjHFmA30tVYfRUtIbqMtQzo5eNsadlPJ9ldu7X9f+bvMI6FlQSUnV8yMmU6NAMpumFLt3xOrK95zq8mqczTRu8n5rx4Zd3O9VA7I1PF/KXMKzCnc4zgAZz+pFS5576ko1RBHFkFaf8vtMcAsg2u+QuNFnEQrq2QjAt6NyyDj8Yz8xD7KpgSWrnmTt92HKQBjQQ0kFENCnoPmPZ4MGtfaMnJHFZEtYKGBT0n5/CwVHlffCe41qWN0mCZBm6sVIuksMxoQjxUUi473iScQRHZiiUXqjzkjUdCBSL6AALvP31AROqNuDDk/V95g0D1WMR52+ZB7d+j46GRIc9Jpd79IeWXKo3ti0rPgxLT3hZmYiakeKyj22iUBuIvVHgM4OzHGIzBOYGXe/9rHlBRQKTX6tfdxxV/MCi2j5f71EklZE4fXiLcJwR3TqqJmz+OO4dKby3VBWZ5QS1ykdFJyaYFQweG1kpWDAOZCdGOzEaCuHQ3sVo3xlJDVpNqT7h1RKiThWidb9FwxRJC8LDcWUkpFYS1njX50AovTHxEswD2fR0n8hnre+r5Gou2P8iB8RtqLWok1VLnk7ILq8jK4NKk9ntX5L4WEnQudLXuLbX6x575wR7F7QkNtb7cL9xcKxsqwRBZRA3y2rXrlVXehRJhCYhrHbLqlqyf1hN+GqScuQF2u8azxQQr0YQBJDY9QSznMGHb5nkXCeZc5BoKATjFHGcfx1PLIqSF2X/ZAZ4jtSdCl2nkDGZkmzbOSY7AcH2HhrHNumS2jh2txVYlkFfeOj/LkEAX492CFwGUNX3ichafUVV/ZsAIvIfgTer6qH7/jeAHzvrAVtD9TT4QbvekJoyKIukT/yA2dTlO6vG5iLSfo2zOtchFwpFXnqgegcbVv1pfdW2ORrN7zOueUny3FWhqp1nXlRe2LqX1Cew9HvleiICoV+3dv65k5kaDNw55hSdGEKh6FYGQ3A4tdl4Mt+J5L2wuldFgQ76EIfINLUqQwBrHTDqE+rOs4gtkaqzlxHc2LFl+wdl0kDQs3PXC+uMrvZYeewAHY5K41op5kK/gA3UKwOyzT7RLXcvOzEynBADxYp5pgKA/cN5vtbdHOSPUVGcsTq3TtPL4HlxC0KbTSO13v4XcTjrqJdvrK9TL0kJUBQEz9ygP1w3TyIga2vmTZ/z5IRzkjpAoxqVW577Y8k8V9udk9Qmar42+THtSRHoxLXSpnEVGSjccRx1JO9FVRhPIFuJiXYd/cbXV09CJCuQ4cSSm2rQJCo9xXk3IkhzgmeuV6VNDw6tPGa/h95/kXTd3uPeYzvo4dG86Lsv51nvd1QpNgdImiMj8zpFT29bfxBH5fsqhVZRlvqk7W5gibD/MTpGY1m9SMAxbuqLQdNrvYjyBejOHlEQwEq/8vA7iTWd1SZa3WShcVwmWNUiG6WsWV1D2p9Lkwbjpej8PsPQwuFpVr0fvn8vtMo9iEPyQUyQFhRxQHHJ2kSS5SYdV5+wp8eTePElsrOCwucT5Ipeu0Exnhhv2r0LEkXI+hrTq2t0n96zUxmNnJOjen4SWLU/naVVlGptBQ6HkGUEzzj1pTjG88F1Mq3lGQQL28t5wYuRp7oL+CngZ0TkvwJfijM4nWzVstnAw8xXEZ0Bj571gK2h2qJFixYtWrRocRcg8ILlqe4GVPUvicjvBt4I/C1V/Tn30x7w5iWb/SvgHSLy77Cp/P+MlXY9E1pD9TT42eiiWX3Q8A5R8zLVvUflPhrZo6cpCSyiAnivqs9mdHwtqZdo3D9AWCO9skrWj0j2TQw/vL5vcj5u1mkLa9n+Pow5deLL9TB/mlm4KIzm5K4AJyxdcIx/Ww9FholFqIIAmXm+lqDdiGBW0NtzQu1pTrrRReOAbM3Nulc6TLfsmJ1bU+LrFlqTXMn7IZLLXPnYyYWAIA/p1rhdmueWnONDxxc3GF4NWf3AzBxg/ln6hC/HvS2fw4olm8jOnl3ig5a4VsRh6dXqzDKCToJurJWcW0nz+cJ0LydO4jZDjfdYX1bPNm54/xdQT06lv3jUkvpOPj/3IPcPrVISkD60hYZCfGuEOC956bFf4s1VX/o3cesEQU2I352Lf2d8yNIXoKi/Sz5EXJdl87xvcbxZgF4XSXOSW+PS418MOuT9mHyjT3FphclF8+7Ew5z4YEa4MyypDEUnQgo1b6q7T+PLMUEaEX+IyvOVF6aAkGUEm+tMLlg76z5l73FJBQILDzffzSRB45DguW30ygW3zwQKKFY7VVBklkC/h3Yiq752XtHsl2vtQYpTvKuy4F2AxbSUZWWy6+v4bWvVn/S5awQb62UCKIAcTaDYLxM45yJ09Qp5qq6gin+eFrrX6dSkoDw9xScV1r2sdc9sTT5LosgiYqUUVJVs6K8nGE6JHF8cEdRFwPL1PtmDG2QrIfG+vUvR0YxgPzcKkPekilL0YoLRjOEDFsGKhwW9nqMH5EWZ9KVhSLC+xuRCRPc3fDSZ6h7UILiohyv5Www6BDd30PsuIK7wRTnmuFLCvg8hCqv3/7xB9V4L/aOqP4V5VgEQkd+jqv8BmC5Z/++KyE8Dn+sWfY2qvvusx2sN1WXwRmIZqvQ8vWKBAVkb1H1/VufuzYXuG8ZquY8F4dJFcOvVJVskDM14dJnmmmXI/gGxKsUjm4zvc6H6K106OzPim0eV9mcZHqqdUxDUKknVSu3FUVUBBZyCgEAYV4laUPI8TefSdT6rA4Ij03VUx8vTbmJ0AFwyCRAUBdHhlGCcMrtv1X5zHeB0LQCsugnA8L4EhLLaFECyPyNIld61SVXxaDgqdQJ9Bm3RCdn42Az29qtwGswlOcwNBCKEe+OSm5UNYrJBRLKflhzZfKWDXNok2xqU2a63lQF/J3CSosTSyVeDk1nfT328PmlStuy42ngvmvqNPjSZZeAGs/hmwOTBdQ5ft074iA343ZsTwud3bPJRTwL071f92lz4uqzKEyWVkTFnCDi6yVzoX42vCRXlZTK19yIMSq6qDiz5JFtJiLzKxDQlPhiTXbBQaXJog2nWD4GEIg6YbdgkJ0+E7k6KhkK0b20nyKCzm5nsmTdqyuo8ZnD2bji92J09NLKqbZqntfthXNySN97tlImKRc8ZIJ0u8d4EybVcFugA7cTGI7+b3L56v9icWDV5pc28gNrEaqnE1WnHbhqodeNpkQNCBFl3RunhkdGWJhMkNYNp8vAGGqyR7K4RDN3k/Oauafz6ZClqxqdIpQkcdubetboyALmT1PMUplofXSpYOK1S8WWgwU3enV62V4GIQ2vHIgT7I1PCAOTiBvH+BOiSrbp+NAmJujGztbgs59u7NoZcKToxky27npXHD21cShJLBis50xHaiRg8O6HY2bVz8smHXh0DShUASarnEewemfGeRKhTVQj2R+YM6XYIVldqNLUc4vNrDN5jof9F+FvAfzhpBVX9NeDXXsjOW0O1iWPZywtm0sc8Qwu8pCcZnss8q81jNLevr+cnr4Ujied5NRD7wX//gM7jBYmTwPHZ8vl6j2DieKJHzpCse5HAeRSLeS+S92CVs/6gZiTUEnPCoCqD6mexRyPrLDoddOC4eiKEwyn5arf0ShZJh3g/JSogHNm2ed+E+rOuUEQBw8ud8h70buZEo4Iidry+XkQ8UpP1uX8dgCRNIcuNXO84eJPLPQYf2zXOU1SrD++TDeKoVoYzKBMJissbAGSDiGicE0wzS/Zy6xWDDhqKJY0BwcFdTkTxbWZZezvJsPRtP5DKeFvAlz61/S5Tx/DrNCd9zWX7h3RnKZ1+h3zNBp68GyGXNgj2R9VkyCOoZfh6734cV8vimgZu3fBYxMUMAyQMbJD1RQD8exFbYhNgUYIwJOtHpQ5q7/kJ0Wif8GhC0U/InZd9uhYSdgPyyzGFa2KdvYJgkjO50kVSl1xTKNEoJX3NZeLHKa+n2NlDLmyRrXfpPmEeZh2NzXjN8zntSel05lUK9g8IJlP04kaZwBjMCkhzgtG0mkTGtfvSzKB+ubFokrSsfzxlYigSzHtXPeoTszpvcxkWcbBhLuu/fOdmKcXTVjGyu7uPXt6i6FYeUb2waVrBB0fz+3UJQP5NEAnQEIKoN2ekSxxZNnytUIlQ47h6neAisraxuz+ftOV5nM7RIVFI9uAq0wsJvedDosddUupoSrHSIcgKUp8MGAbM1rtoAJ09NxFbidFAiI5SujvWb0yuDEi6DxM9YfJn4seFXpfZxQHJUzsU3nhNElNsynPL9gczUr1hPplU13h5i6IbE7ixgsnUyl9HkSUe1u9nk0t7XqC8eN703ccdnc22hupJqHtRz7JefV0vbbUo+3mZZ7VpLJwUKi118NyAO0vn9RJ9w98/RJxnKnSJVLNPvMLksg34/ScVubVvg7c3SpO4NLS8ZmMxSNAAgrRGcJ+5jjBXpCG35TM4S5rAeOKMhoLAeXN1lqH9hCISfH8UjXLivYmFqXySSxAQdEK71FDKV+LC+4ZENw8pBl3yVTtOOM7ohcLe63t0d+0ckhtdZpdXEIXUCaTvfFLE4J37lHqa/po6nUow3oeNnPg0K30mly3sNLkQER8FpKtRGQaLbw3Rnkl6qb+Xd9ujepqGb/23+udwgSdrEY5VA1pwrJOULObCr0U5WM7Ju6naADSeEN3ad+cXkr7mMrOtLbqPO2NtZ9cmF3U5Je+1jaPK+PKh4awwz2hNBq30qPs2UVey8Dqsucs+rrUbHXQouhHRJCd0Oqjh0QTTeixMqH/qqg5FsZPbga33mbcq2DmCbkJPtVS1mG0m7HzKgN6tgmjPoguzSysE6X3MuhG7r0+4+vSt8prURXt8haASNa+15jkyMN3U6YZZyfEwp+iGRIczgj2XtBWFFIMIQkGGdzEJxUdqlnl1F7WnJV7VapWah7Hunc31eB/c3OdJ74+/x7Nq4uorLPlJr47G6MefIvDC9EDx0BXyzT7RM6C7+25XRVkoYk5w3x9rdVBN0LLckpPqhlgUlVSWeiKdxJFVfqvLZRWFtWUXUkeEZG8GIkQ39ucSFoNxiiYRudeoLgTJldUP7yG7Rsmik5BfXEWmOb2bdu5HD3VJV0NWR1vkqwmBk2BLNzvsvCHh/g8Oq9vu9VybIv1O17tMihr0SS8OKOKgNGTytcvENw7NGO/3y4mXTLPzoV6xBK8Aj+qfOn2VF47WUD0JpXTPAkO0ufzYsmK5tFWzc20qAzTXPcmzWm5fzC8PF3SuqjCdkjyzB87bmG71iaKgHBwB0osD0pWIIFWmmza4j7cCmzUfuKpPgAZCOFXCVEtDE8x2jg8y4v2JebzAOrswsPvjOlhJEoqoS94Ny+Osf2RsXt44AuepjGYZRRKQHIVMVwNWnneSPDtDtN8xzp33Qo1mdJ7b5uLNTWRaeXOjXozGIbP7zXuw+nRBsXdgYTCXTQtYZzjOjTbg+bXjCcQR2Uaf2bqdZx5DsW73pO/HMx2Qd0Pig5mJsZfP5i5gUdWeRZOfRUZlk/YSUHFXm153j0VeqEXt9CTD/aTfm+eU50Q7Q9KH1kvPedyJwIVT84sWfs3WEyQtyFZjDh+ourvurmnrBlllZPsypaJaVtSJDqdmvNWrNpXyapUHtuitoUHA8GrCxq9bCFN2D20COBoTTGZ4ScHubkzWC+huZ+X7ob0OxCHBaIYc2KA9eOI5Bg9csXfzwLxacRKRrndJV0KSI6W4aYaqdDul3q3PqNbptJIC8t6yXo98tUe6EpF37F5qGFFE0AuFxPUD2XqXcJQSHE7mlRVebtT1ok/j9J+2Dw+vmlIrYavq+s+mYVuPkNXRfJfqNIC5Yze+JzFSRBYBc/1gcG0H7tuyMtQ+sjMzQ5HVFdL7rC2Ho5TRgwOmGyFBRslr7G5naAAaByQ77jl77eNcXdvDHBIuglR/y3SWIv0exboZqvkgoeiEJNePYDiqrmFv31V+ikvvad4NiA8y492u2sReRUzSajgiuGmbbmyvIs5jnK3fV1YSzHoBg+sF2Y2bBH1nKGemSmClkJ3R2u0g3a795o3+bkwRB2S9gCLysoOCpAMiEfK1LuImhzLN7m47PgX3GkcVQES+HtNQ3VPVd4jIJvCHVPWfvdTHOr9P7m7jpM6wWZ7SY048urZsEXnfe1WXoTQSlnBaF61Xx7JkLkcJSIbOgOx1ybdW546TOx5QfDBjumme1yCFaOoG77H9z/qCRpAj9tlP/HOYbCYkhzH9511oNC+QWWYGnA+NTaYERxG61SGaOM+V48RpFEDsBKSnGfGtIb04AI3pP3FQXnuRRMb1Cmv3tiiQm7tzXrHg2g50OmzcOiq31W7HBqqoCpkhYgT8fm+On6ubq8w2EtK+H7hAQyhCYXjFXqPJZsjg+dQ8M95jMb1LYVMtzLhsDvSLBtgmj9p/r78D3liV2v79Pc+LxV7X0wyJk0K1TS/sgsma3Nylv3tYeoKKtZ5VNhunzLYczaUb0NnJmWyEVftU4zvHo4K0X11T1gvIO1IZsIBcTkj2e3SvDS2CAOa5SlNLOnTGang0YXp1DVHmk4/KMqS5GX1AZydGNhK6zx5U1xUFNkErtBpQC7XksayaRAbXduhsh3QSkzRSnzAYReaWqYeEe1Zzncm06kPWV8kHMVm36i+KCDSA8aWYrG+e23BSGPUmkNL4v2soGklisLwd11Fv0zV+q69stbCq1aLt67/5CWCzSz6r0ewN0VrEQI+GBE+nsDIoqUUyy5BpxvShzZLyEB1MCScFWTciOSzKgibpaogU9gxHV22SknfMiWDt2CU0XVqh89gNyoRBgMMjNM3Q6dRyCIDJ/StM10M6H59U5aw9ZjOC3QMS9+5nqx2SJ5w16o3K0bgcawqnHyuTiYXzJ1Oid+4RbNp1JlEIWU7R6c7fzsBoZf6ZS79XaRGv2/Wkmz2yXuDGATufIoTJlS7hWkw0zssohp3s+fSoit6bhirwJ1X1n/ovqrorIn8SaA3VFi1atGjRokWLVwzuzdB/ICKiarNtEbEs0TuA1lBtYpFkz1kzRevhVnGeGi2qJIBm2cnTQkfNAgG3g0UzfJ9AUvfSHg0Jw9BEyCfmHUrCkGw1IRvExEPPb4IgNfkcHzKUXAkyUIFoVA+XwWQz4OgBIe84gf0A4qOCwdNDxPFf5WCIHI7ofyS1AgWATOyzhmHJZUUVmaTEe1MkLaziFlit9DiwGXytVCZZjubzkjqSO06hn2EncVUyMElKwXaCAHUhLPEcsG6H9NKK0RPqjttQKGLzrAIkR0qQFhw9OmDtN3xZ1XMk7bMsXLls3SZHtZStaqBeWlVkXgGivn0Ty0oU+/0sOy//u0+KctGBIAyMh5pmJC5zfhp0SFdi89iX3mAoYvM6SW7fgbJdo5Si+9M1YXhfwmCt6irjcUH/I44b6hON9g/pTGZ0nosr7mCn4/iuTr7HRRKi3dBJnR1UyhQitq8goHT9Bi7jO69ukvgSyLv70EnKML8dL5mvPLe+atvOZuVxss0+s/XISsK63RaxUIR2/cmebasCh69ZYeUJIXju+pKH9DLA9akyV02E49GBRbSRenSg1geLzybPqWWVn3AOp5UjbvbntbKumufz57mI7xoG6HRmFJGxE9PvdeFoSLzTJVu36MDkvgF5N6B/M0eDKoJVRGJJVmm1TymMz69qkQKA4dWI7sUH6OxlhI4jGj/uqADTqYX2gf6vHtIPQ1Mr6HSqscKPb+MJwcj69TAK0L0DK0CxapGNst8UqRQHhuPy3kiSlP2iHkxdYYmg8pjHMZpazoWsr7rn486h26FwCZVe/QXVsjiIhkLaFeKDjLwbsvuGDQAuvWMXrk04l7h3Pao/C/yoiHw31ot+HfAzd+JAd9RQFZEN4HuBT8Uu5K2q+suNdb4A+EdADGyr6ueftK2IvAmrJ7sCPAH8EVU9cNv8ZeBPYN3ON6nqz77oi1iY1HSC8Tinx3dKyP6kBBSoSe3UMkrPcn51nEYdAKt2E8elsTe9aMT3PJGy8I4oZD0pQ0zlaecQ5HYegafsKfS2c7J+UL6Anf2CPBFuffoqgxvWSfZ/Y2bG42SKeL5fFJGvdm07r0jgwmQymREVBbphnC3tRgST1Ab4uKY44O9L/bpzV2HH399kAFFkBnIQINed4VG4iUUtzFhcWGN0xZK+As8m8AO9QP+mHWfw7ITx5Q7pilS6fg0twJcNi467jI+6bJ1j2dYLZKv8sUpdxhP23TxOMwmrvt0xNYAFHMEmfeZwaO04DEpJtslGYIZYxNwkA3UTDHXtF4zmrRDOtIrIT6rJWdcZcVk34ODTLpIc5HQ/ZNnczGamb+mVIgBdtaxjybI5412mmUmdDapkD+OPz5xGa43v22jHmufIdGr7isLK0PXv+XRWKhGQF6UCh66bATTbMFmscKYUvvJXoRAJnb2C7g0z+vc+eY0ixsqqNpOzXm40nQeFWptstrFFNJZmO2pIVh2rQlY/Tv3YdSxrm6UWqm2jwXEpQwlDoxw0E7yiCA0DMxjB9EajiPHDFob3yN2jkJxS6cQOhiWfumSBMK0mIj6nIDnQ6rl3bZ/TNz9A9+aU6CPPVPcizyF1FaDWV6sKcbuH1XvujNFwlhr1Jq70dnU0NmqBqyY1d+vSzO6B/14UBN2uHas03EM49Pq/XuPVJX2tDphtWZsvQiHI3XhU6+q72ynRKGXnjYOK7nNr3+TbziXuPR1Vh7+EJVH9aax3/Y+YzfaS404/ubcBP6OqXyEiCdCv/+iM0X8GfImqPiUil8+w7fcCf0FV/6uIvBX4i8C3icgbgT8IfApwP/CfROT1qnrSXPnsOKsCgEe9tvpcUsoCruBJPL1FPNZlnoNj5xDM/1+m3+q9ES5TfbYeMrocEE6Yk4TJE+YG9nCi5F1xHkXjRIH9Lrm4bez/bCVguh5w+CjM1q3Z9Z6IkaNsvkyru44iCQnrngdVZAbaiUmv2KAbHc6MewpVYss4t4EgDErN1PLeFAWs2rbZxRWiHUtaSTe6JFOnfTiemGc5KsrkgNmWGT3dvdw4jYB2BVDCibD2kcPyOHmny8qzNR7u3cKyZKrm92VJIk0v0KLtPVe7OdjXDYqTcJoiwhxHVo5LYZXestrxihy6CZNNe07ji0I4s8HMJ/x5ozXIzAuVucFfA1zkQMo2LpkN+OmKlALy042A4QOw8lRI9/GqVG6ZkV3TowRqiS3u/ctykwC6vEboeKteq9J0N6fl9UkS23XVONRkOaz0LflmUkvoWu8T5EVlTIwn5mXtdclXXYJVKMRHOUUipdeY3Izz1cePSrWPIsba8d7B8Xb0ciNotMOA422TBcvqk576OotyYG9HZ3VZtKqofQb77kp3+v3OGam1+7qQgxuFZN2A0SVbLxq7dhy5NuxzfRXCqZ1X4XaRBrYsqBmseSxkXaVzIGRd2+fwqtDbDLn4XB9xpbZLNYQwREPL6gesXXm+r2+jPaG4b8uSAg9cP1gUTrO1/r5qKfVmJ2MvWNDrWT7AeFLdt34PmTnd45HLpeiazFq+0i0nWNE4BzGpQB8WCWfQffaAfK1HEQnrj3nP7eHdcxqcBS9CHUZE/gXwe4AbqvqpbtkW8CNYmdIngK9S1V3320KHnoi8Bfh+jNT8U8A3+7D+4lPWAvgu93dHcccMVRFZAz4P+GoAVZ0xX+sV4A8DP66qT7l1bpxh2zcAv+A+/xzmfv424MuBH1bVKfC4iHwM+CxgzoN7Ziwa6GHeYK2rAjSzRW9Hg28ZHaDcV42AXzSy+0/yqNa9sfVj1bFA/6+7kzG6lJQhbYAisc5Rcij8OJAIeQeyLiAQDasONQjUQlJu91nHPmuoDO93y7YGxD4k6qVVCiXaHZFtDVAXmpexeZC0l5CtJKX0VbA/qrJj6/fUGwaRO9EoKkWmi4uuiEAnhL0Dq3Ky1S8TVopLG1aRJc1IH9gsd9m/NjP5KdfZTR5cYbIZ0tnPCJ68Ziv1uqwXBcHOYUUlqHnYzh3qnqkmTk2EWtKu6oaux7KEwpOO2WzX9eICdahWxTVUgQCORqV+4+hyVA7qXrM071TecArInVMy9+14ZG3YX6YG5kEvSsk2+370MFx0Yv5h6jz7quWzD/aGFKt9MzLTrHqPe13yFdOelKG9czocVeHoZhJQ0LifYYCu9tEkqip1RRHFpVWC2cxqoIO9V5MpxZXN0ivWvTkh3B+bzvBlJ3m1ERHv5sjjz5pIOrA1zQmOxuh0VupX3jU078Eir79H3TA9ySPfKASwSMaqXL7s+yLVC6jaoz+lM3ptNU8rHVQJYDojPszLhLkiMqM0j60/FrfbILM2OVur2jhAOIF4KAS+9kgEWSIUkZTRhSIxY/WCMw4BUz0pFB2ObPK14nxEcWxa1HmBDKzt6JqT8BtPygz90vHhaQ+165UgQIuiUs7Y2rDKV9dvVmoV/Q7sFOgj91tSLMBwjF69iBQF3efNwSCzDCkK5NIK6YpdeHI0g2euE21ucPloiuxb8qzqkvH8PECpJgMvDN8PfCfwA7Vl3wr8vKp+u4h8q/v+l05x6H0X8LXA/8AM1S8BfnrZQUXkdcDfw0qplhwkVX3ti7mYRbiTPdBrgZvA97lw/bswC31YW+f1QCwibwdWgbep6g+csu37gd8H/ATwlcBDbl8PYDfY4xm3bA4i8rXYw6A77+A1HCuLivvfkKqqZ/77DOtFqK9XZk831lnmXfXL68bmWYoF1HFa2H9BicDoMCVME8SHVTDPUoCduw9/U9jycIrLXKyduqfa+VsY2eBOIWjHFk63EqK9EMkr8WsKhcMh2UPr7L3eSjxu/fohqDK92CPIlfiGa0LDUeVV86VRZzO7b750JpiROp1ZyMkNBMHE9DO1l5i0lc/AjWxZnfcUTjLCQzOIPW+299QB0bBP8vxBTWA9MA+vr+wF0F3SLl4kTm3Hxzc4buQtnIgtWK++7KzeUpFKFcAPEsu2OS2y4HHa774NhwGJK7QQTSJ73wKgkfQrubXbsj3PsHWVqt0KNqhLLezqfktXi5JisLJ9CFGt5C7A4RHFfRscfNKDrL9vpywxmW72kEKJt4dl9S27DVZYYC7Un2VIEtfCsi6c77PG/bG6HSs8kedkm9YeIm84iBDtOw9/mqNxiAwnJNfMAxaNuoS3jijGkyrLet+pKeR5Vd3nDuC22vGidnJS2zkpanUGx8JCZYAT1geq5+PX8fSNs6gCLDC6OzsTkiPnoRfrY8OAOQqW5PYXD6s2aprXrm1734oFgSgSKpoWkPUhvbJCsu9KUzt6gkiIDkfoFZuwT16zSf/xXcgLsssWgZIsJ9wZmtRW6Ul22tTNexRgxqwWZRheXP5BkecVbSY1HWuZzKp9umifTNNKVSMMYTwhzgtCJ60V3NyjmFnFQQ4OoFtxwGURv/6c4MWE/lX1F0Tk0cbiLwe+wH3+l8DbsVD9QoeeiDwBrHlqpoj8APD7OcFQBb4P+OvAPwR+B/A1cGeE/+/kk4uANwPfpaqfAQwxq765zluALwO+GAvhv/6Ubd8KfL2IvAszbr2nddENOvb0VfV7VPUzVfUzYzrHt/CGjwS1z3VPTzHvTa0vXwYJan8uVOk9BI3wdu1El+8vCKq/Zev6/S36a67nr9v9nq7Fc0YmWMcYzFy4tPxTwinV34wyzOp5gUVSeWM1Mm9VMBOCmc3si05Msdq1BCqXUMVshhTKbE2YrQl5rxJrj45SNAjMy+AkTCgKVO3PDwomOxXZnx/4OwnRzpBoZ2gyWb4yTBSY92k8sU43Cqy0qxtopADJc/KBabZqbALqybVD9LnrSJJYNZVZWt5Hnc3MgM1PmSi8QJzajv0zrTY4PhAuC2EuW7ZIruckz2qzvQW1tu/XPcnrVT/+ovOqv5/1bcOQvGN/3gvlB/myHafWVn34P0jNAxVObLk3TovEBv8iMa+V96YGOYQTKfdJEqPrq3MTPnUeqqP7A7QbWanHxLh74eHM2p0rm1kaB1FUldIMQwv9ez6vowCIBMjeIcHRxDz2cWwTswIIAqJnbxE9a5xr9Uamp8+Mp3YencSMBFXC7UMrluArW+W5HVfVDI5FFbteIpypHVcrL/aqLjJc/eeztrFaApT/uy3451N/Vsvarar1C/4vEPNaB433KwzJBgm5a4NBRpkzEKTm9Y/GzlFQcxqEU+tnw6m1+zyuvLB5x9qw36fkbr1QjIucJLC6YklUYBOf1Q7Zaoe9T4wpugn5xqC8tvBgMk+z8tcnMj9WBuLato2D4qWnRmOTvBr0y2cl0xk6nqA3b1XvQreDTDOrADdLYZaaJ7bXBVWC3SOC3SN0Z8/OPTMuLHleRtNuq3zuywnFSRou+YOLIvKrtb+vPcNer6jq8wDuv6dVPgA8XVvPO/QecJ+by09CT1V/HhBVfVJV/wbwO89wbreNO+lRfQZ4RlV/xX3/txw3VJ/BEqiGwFBEfgF4E/CLy7ZV1d8AfheAM2q/rLavh2r7fhB47iW9ohYtWrRo0aJFi5cIgpZVGJdgW1U/8yU73HHoCctPwkRsRvdREfkG4Fkqg/glxR0zVFX1mog8LSJvUNUPA18IfLCx2k8A3ykiEaa/9dnAPzxpWxG5rKo33A36a5gCAMBPAj8oIv8A4168DnjHC7+AOzj7WpRM1Qy5njUcepas/tPOJQxBBHXcttGV2GXzK3lNSN+H9n1Sijquk1/XQ53cjYY1zpRW3isNbd3xhYD+swEahOX2kh5BEBDvTkgOXFnUkYnod2YZMvEchMY9qIU5AfMK+VCS54sCHFqoNXDJADKcEkZRycMqBh3zJCVhKRYtaY52YoI0p+i7CigiRE/dmD+PPIcoRI+GZahWXsyzeTFo8hqhJjbeaFtnDU3C8XbpJatKGswZ99UUUPcozriPZqJV7dyK1T7D+2pdW6MbFq2WaVi159I7Wpj3H3C8amvH4hOQpxCOLet4dMkW9p41j6Z0OyYdBRAGhIcTVp/pWhlV1+biWYaMZ8bFK6pnIhKh05lJUgESx1Y1qF4StlBIAuPDZnmVyLZ/SLAyMEkszykNAyuBOpohvmhA5EKqoZD3zWsWPv68eanC0P4DdLtWU13kfFSmamKOlsXxvrS53qL+dMm+veftRK9qkzqwiLtaTwKsY9G5eNksjyiCtRWG9yc1LqrRkXLXDj0FRXKqfALP0HF0gCKutWWBvAdFZjQBsLacd2B8MSa55gqs5AqFq5wVBCTP7AIwuHyFYDS1vta3Mdf+NMuqtigmS1XUrlv8yTZE9+0YMleimDBAVlfc2OTuSRw7nndeVYgbTc2rKhVXW4vCVCHz3JQUvFRWTY3hXOKlHyeui8hVVX1eRK4CfrBa5tB7xn1uLj8J34IluX8T8Lex8P8fe/Gnfhx3ugf6RuDfuKz9x4CvEZGvA1DV71bVD4nIzwDvw4ao71XV9y/b1i3/Q650F8CPYzwJVPUDIvKjmEGbAV//gjL+l4UYy8+1QfmkZVC9VAt1KD0ZbsmxfNhoUafbxCJjtZ7xuiyz22/r1itWXTUfpyeZx1KeYjhTtMymdVfgwqpei7KUQ0GR3CVSuXWzLnT2raMd9W3F0ZWQjV5EOM6qOuwARUEwnNK/5iqdzDKrOHQ4oVjrIaOa4enCPHN6pWo1rcvONI5r/CfXGXopIFUIpTq+WLUryQvCfevkik7M5H7H+xvaOSXP7VuyQbcKV/oa6xLHVQZv55Rw5p1E0whsyOecOblgGW0ggGOSVZ42Q3FsIF54vLMO5E0sM2QloOjHzFb9PqrJUsmh9kaqcExqDWesSk1qTaaQ9WyQB4gPTP5nfH/O4SP2nDc/FBMejtFuXNnEhSIHQ5L9Fau45sPL4xnaS6zSlacKRJFd73hSJZr4a+z3ERlXJxqa1JqOxrVM8dySrJJOxYH3esXTaUlzyTcGNnnKLeQPULh2LBKUHG5//sGgb7SC84hmHkEzzO+XL9pu2W/HVj3OUz227Ky87ToaGsKlcVxWJSsougmzVSkN0qxnxwmcEkXlMKBUtQhdu5UcpFCkkJKP6vvjIq50r4NYGF+B0eWAdX9ffLlgP6a4vrX//MSM0bAab3TQtaQmT7PCKC86nVrbrFdKq3Odvb7qdOr6khR1+wwGfeiFc+sRheZwiGPUt0fXzcjePvnOnh0jicucAZ1Oa5O+6O4nBS6D8mKTqRbhJ4E/Dny7+/8TteXHHHqqmovIoYh8DvArmMH5T045xqOq+k7gCGefichXuu1fUtzRJ6eq7wGaLuvvbqzzHcB3nHFbVPVtmHTVouP9XeDvvrCzXYCFEj8LDNJ6UlV9ViwLBuGTsCiRBRYvO20GtshIrXfQvgPodCjWB8bB7FekfW+Elp2cSGl01ktR2n+dT6YSf85C7vqUuoKAx+T+nMNHEjZ+I6tCH/4cxxP6T+zZpQ4qvlSwP6qu3WlmklEO2Ir7vLVhfECAZNUypGdZNfPOc5hOkfU1JM3L+urpo5eId0aQaynVo52QaJSTd0M09jIGuRNjz6sOtteDIKzqq0NlLN8NBHJ8UA4a7eEMg/WJ3k0R5iZcftImAfh5Yt3D1DzeMvH007yq9d/cZKBY6yHTlGwQz7U3lVrCFFhSh+OgSv3wReWJKjX3scvzxgCYMZDHQKjMNu3ZHz3aY+1DqdVV98ZelsF4Qu/jt8zT7vRNZe/Q2nuWVUmEXhkgDMt7IHEEg4Hpovrn5jnZE5PzKZx8T7AysCSpwzHFBcvItnY9gjgq9Vold0mEcVBKDEkQGOfPc2L9Lfbt+LwpV3iDdFGylMjtJZu+EDSLBUDFSV1wTAnDKhluzklQ8WJVCyt564w5jUKy9c7cZB9cf6wciypJMbeaFWPJoYh0Lsk161nuwJzGqghHDykHn7QJwNoHdkrRfs1zxKnBxE/crBQAnJSVTF3CUxiWY4pAmfFfRpYcl1R63VKFBbee5jk6m9n1g/WZh0OyRy6XEoJMakZqVE3kJM8qPiqUyWwShmY8J+5d6iQmcXVecZZ+eAlE5IewxKmLIvIMluD07ZgY/58AnsISz09z6P1pKnmqn+bkRCqAvwz82BmWvWic0ynGOcKijrAZElpGE2h6WuvbNcP8y4j3i84BOFEbtb5NE55g7jrE6aNbHN2fWDap00HVqDZg10NKWvuM6+zUjFhRrXlaTVNVVQmnzguQQ9oXk7IaeHF4YboRMttM6N4YV9fojTwfhhx0LHFkPLHBvV6FaqY22/bh0YmR+7UTl51hsdJlcrmLBsLAd6Y7B2UNdNk5KD2t8e4Y2T1E11aQ0bQ8PkDn2tDE2wGGw+P3OQopNgfVuUFVH/7lRp7PGT1nxlkNxOZ+F4VJy/3oYiqCR9MjtdRbusA73EkYv3YLgINHYoJUS69SuRlVEgq4KIC6SU3zlNz3MmnFvQeSV5O2IoLZBkg/o3AD5PhCzGA1qaqp+fMVgekM7Q7K9qRHw3ISLPWwujjd1Ho9+DCwEL8zILPNPhoFxKqmelHzgMqNHVt3yyg8cmvf3vM8hyAp9+nl18oohPPm6mxWnc/qwM49yyvNzLuNZnTppMTQ+vezwrWpegi+9JzWJlS6rIxVwwCtZKfyRt/tkj1r60m/z/iNVxneb885nKol9VF5TsOUskgF1NquVutp49UpYiGYabl+EUM0rKJmszXIBgVESuY1ovuJGaBQFSjAPPO6OkCGI9RVsVqkTWpi/0FZXQqoKlx1OyZp5cYtCSyRtUw+Bbi+bbs+nMCByUvR61phmCAohyEZWTvWybQyiAN3E6LIIhGxex89VeY8QvVFhf5V9Q8tZbK0FAAAKBJJREFU+ekLl6y/0KGnqr+KFVg6ESLypcDvBh4QkX9c+2mNY9oqLw1aQ7UJP0gsMlDrWGScLhys6/y9msRVGTpl3qu0LIPVf/e/n9Sw62GwRYZHHJNdMnmR4dWE2ZpVXEr7VbjU604e4+/53+fOC1e1yX6Ixko8spXDmTPYCmWyGZB3QRxHNXmsUwpSB/tO2Hk2qwxRLwq9P3LZoencckSszJ8ElXxJp2MetjRHHZ90utUhHQRIDrkzOqN0YJ1flsNwWGZoy40dZ7zulR1bOJkSJomJT/fNo1BqBjYGw6KXcPRQt7qXApu/vuAZ3WlIsEAeZoEBuMjLuYhysmi9hdv6kH8t9N/04vp9LvOmLlq3CZcBn15d5/AhG9zTFUBdtZpauy0nW/VQa3C8GRNCIWaUeiMhHlo1n2giJVdwui5kPSimIb2n7NjdXXePZqmVw6yff54jh6OqCERu2f3mSXJtOsusrK/PjAZ7D7IMel2yDWt3eT9CRYiTGLKk8kLNZuZlLbQqguHLVB4NESeDJd0ODMc2mfPvkZ981TiBRT9h/OAKk42QIFNWf+jZ48/gPMC3IV/Gt952F7Wfep94Cq2qFOevK1XUUHrxCrUqVFTe0bnzC5z7vjyFmnwVQCDk920xuRgzW/PGq1RRKrda7h2Cbnk5NCml1FqljyowU6KRlhXVwklBNI4oIqntSwhSYfUjAfGR45tGQdXX1s8zBLlxyzLoy7KqlSZq2Z6cfrf4jH1wzpE+6pRTcCVxxXnx615nnU7tnXn6WklFkSxDxxMky6rjjSfmKQ0CM1ABLRQK52HtxBy8+b7yMjq7GeGz5zO/+g6E/u8kngN+FZMJfVdt+SHwZ+/EAVtDtYmTJHJKLDESl9VCn9v/Ej7rsWMs297P2hvHaYa7fGfsQoWAhU42Vpjet8rRAzbA5h0xr2hAaTiHUyUeKtO1gLkS281bo5UREM6U2PGewpmigZWvTB1XMBwbVyrvKVFiHVJ8YMZwMCuqQdyH7qIax3TqSp/6ULa/T75jdGUiAZuxd0w7M1sxQzXvBibdMivK+tCaRJBEaChO895VZUlT83CE4byI92hk96/nevhdt45qxSnsdsh7IWnfiWpjkjDnAouM1Nv1OC3j/y3imS7jBjaXN4sB+Ofsk6rAceKcEeImJMXGKpP7Bxw+FJO6aKRK5T0NXXOKxsp0Xebbbs3zJAVzEshBDsmRVtGFAMYXA2arkBy444SQd5Wgk9O76TydXZC0MF3UumfNS6il2ZzweymlVq84VdTeWbA2rYVJuLl2K2lBmClFJyZIs2pi3e/ZJaZpZaBqUWoNqzdGjzKk07EyxM9dr46NM7w8zzAObfKZw2QzYPX403z50TQ4RSqt3pPWX1q8pdYe59re8vdiroJVzdCUwgxU1aJ6JmUVpqLyIDoJMOkksGZ3dfLIJkcPxja59b6MAhCTUovHdpzJpjPGBOoJguomV56uBc5ZcKSEaVUq9+i1CXkMUa1oXtaHIlaSQ8pKZcE4RX1FKJ2/d6V3tT7+1CZk+FNzkn3+fSUIrD8PQyvY4sckz4WNZT7xNMvMw+rvsZNp08m0KooQR9bf+4pYuDashb1DWU53xwzuw4c6zFYTNjiHUO6YjOGdgKq+F3iviPygqqYAIrIJPOSrX73UuE2xuBYtWrRo0aJFixYvDbSKBiz6O7/4ORFZc+Va34sVaPoHd+JArUf1rDgLKX+Og9qQ7akvL9f1M285uWEuC4nW4bmnAHFMcWmdYHcIWUZx2Th8kwdXGF0MyfpVTWjbH9RLTEohdPYy8wx6uSeXgCKNmXw4Uxcq1ZLXl3UD8o4w3ai4fuEUoiMl7yo6duXuQgiHRguYCz86b6qXggpKaZ3Ifq95psRJa3mOqk8a0SQic5mjRWi0hO72rKw2VfRiVASNxKSDCrfPI6tnrXle1aX2mM2qWf+gb6FWX64VoNdFcmX98SlZ9xzXlW7itLZd99A3qTB1TxQ492QxH9pfVnbSo87pCx0tJs8orlplsuDWgfF/L6wyesDcp8MrEekqc4kh3tOkARSOKrz6bEHWC608ao3LR21dz2m1ohW20nTdnn3ehek6xtt26yUHzhOrFR0gnGGeoppnRCQwT1CSWDa/98aFvt3WuJA+Q9q3Zyj7kLoihhRq3D0Rk+bxhwvFJKhU0cOj6t66/dUF3MlzJM0qXrdv7zUKTTBOGTw1pIhD1oriVEHFO46mV/QEOsixbZpJhXVa1Gle11rCUx1zIf7chbAJS1kkwOgV0xn6CQ9aGwZLQnr4KqP7V8qoVjao+taSYyouytWBjY8bR3g26JYRGg2YS17V0NpgGdWaFBSxMBkEJR91csFFsG5A/4ZtfPhoQDCTUiUAsJyD3Hv8w0oxJYosYrCsjLeXjfJJeY2on3rvap5X1aWiEIKOi5g4b21RWPShHoGYpWWSVMn9JUcmU/Pcem9unkMRlM8gefwmABeeCNDV3jJ28d3H3ZIxfHFYV9UDEfnfgO9T1b8uIu+7EwdqDdWTcFb5Hm+QnqVa1bJ1Yf7ld9m55WeAMDTZj16PuapUvnN2tZKnj25x61M6rD2xQvfGlO3PsFG7iExmRwNKbT2g1NuLXV+6+mRKcmtCdGGFmV9PrGMM0mqA8JnURWzGqe84844Leet8CFYKowRw6IX9oLtXWJa9D3f60O6gw2zL+HedWYYcHFaGqh8IIgupIlKTLAnQJCJd66Cx3c9oWhCNcoLhjMIpGwRHEzSKSLd6FL2YcOQysiVAKdyA7g0EM17pdEolANZXjdhfMwo0FIooIBpldMYVp/yuDPKLaChNzvJJWf+LMqrr5SH99otQz/iHKmxfP1aWWRau52GCq66k0ImZveYSz/02a8+X3jcgPsy4+aauGZyYAek1TsvD5lWyyIUP2vF7z444uro6nxiIGZ2Sz6sBFDFkfZlLSsl7lCHY0OUUJUOnDXQQkzmDeHA9JzyaWPZ2Xc6p2yG7sEJ0Qy2JChey9Bx1H3YvTyyo5KDiiKKboFFAMHN87WmGHAzR1T4ynFbvS7dr+51Oq+298VVPBMos9I9qGXq2qmymZ1mG/qMAmWWEEysdfNcG+Kb0GSxvs2Gw/Pf6Mt8W64ZtWHs3fBMvqfA1Pm9QleKcS7pKTUfUZ7cDFpZ+8DLPfd46Fz5kE6z4MOXmb+qjkdFFwHFPnSPAT4byLiR7sPmxjPim9THxAx1SMX6pOIUKsD45yGx7z42froclHcC/MxQQjox3HY28CoFx97Oe0L/u2tjhyDio/n1csUaeXV4j2u6h125U408YlBq8UuejgvXp3jhNEptMzTLj/vvSwT5PIAqrrPw4NmO1rrlaOIpV4ML/YAZ012mAe0PPP79mWxCQ/doE7jxBdc4ov4cQOY3WrwL+6h090J3c+asGt1McoL7uIu+Uf8GSxAaOWVrNtmYpOpkiqysUWzbIBIcTl/0bMnr9RQD2PiEmXYGj+yOGVyNGFZ+crKf20maOj+SSmfIObH7YjtN7eh/EskV1rcaLKr1QtixzxgJQZlHbMSAeQTLVcjZfRL6UZEq8bQNpb1sZPDNBDsdVx+c4euP7B2RdW5bsOB3UpmHky03OUsSR/zWIyVYTilgQZ1SHaUE4zNBOWA74Mp5RbHU4eihBg4Std7tOeu+gvN+VpEyBxDHZgxeZXuyU15vs9IieyI38D0iuFJGQDSLSgXXQnb307vBrFnGlFyVNeamy0wb3Zby95nY+qYUQ4tpgkWVzAvU6nSHdDvmlNYIDm83IaAxZztGnX+HwoaicTO0/GhFk8+0471d6PMHEGXuFkPcKLrxfWPnonvsxIDlSxt26V9cM1CI0jl6ppaqVp8oP7pJB53Ceazy8EpCv5kR7IZ1du/7ec2M4HJonx7fTbofJwxvMVkNWhl2Cw9pO6hxyqHRUoVKrWO2jcUgwy8rfZOYMfFVLAnTRkqPXrDJbW+fiL99Ett27QF5NLnxWdBiSP3CJbLU6l2g4I3zyuj0f95yLXmLi8t2Q5MaIu4qmw2CRZ99/b2TXHy8oUeO6n5ZO4J9JFCGhtypz2zZNq0zzrU3SBzZIrh1UxR6Aw7c8wPBKSN6D/de6iXAWM3zA+o+86zyDkUIhREOhqJ3q5sdy+h+6QbFpKg7RuCBPXMShgND1b0UopAPmNIFtx5AOKk5qcuD6bIGDR12OQk/p3BJ6two6191znkwhjhxnWZg+bG0sG4SER9P5+w6lkVp6mLWWyOm0pQkD0xLOcusLnPFLnqPDEVy9zJGTxwJY/XWqjH8ALUzMPy9MBhAoHrzCbKtHkQR0n3L3/bnrlmcQRRQbg1L72+TgChNqOo843yH+ZfhbwM8Cv6Sq7xSR1wIfvRMHag3VZVimN3nSrH5ROKS+bl3aqlgwg6p7q6KQYq1HcH23qq7hkeXMLrgs4AdXGHxkB4bjcpYcTWKC3KRH0rVahxiAhko4DsqZOwFkfaX3vLD6uPP4TFKIIwbPjpmuW4cyW7MZfBFX4c56hR+vNQkWSu3sFQQpjC/ZPUgHwuihHAmsDjVAfzsn2p/MG++5eQKjcU6yZ+GhYDSrVUJpJI1lmSkFOG9ysWL/w2lRGtQEuPB+YZ0lQBIzvdhluiYkh1rKCpUSKXXZlbyAbsjwoR6TDXtG0VQJJxGRSHVOaYYoTC5EjC7bekcPhFx6Oy8/moP7XBUd9/92Q6BNdYpFnlnvqaqFW4uVHsHuAToclQLcAJJmzNYT8vts4Bl8zNpekCrhFDqOlj/dgHRdyTsKYTW4B+OAYCqIG93zfkE4Clj7yGF1bnnO6hNjpmt9ZmvuuAqpowzMhVCVMsvaL+vuQne34OiBoKTGHL62gF5GeCOkf8O8PuHRpLqfHnlBkBZ0dtUq+jQTIP298/ctcxV/vGcpwIxUKCkrFLaNTDPo95hdtgnr6Ip50BiOqzYMlhEtQaVqkcQMH+4zuhISTuxerj+uhGFockKuX8r6EdONiMMHA6JPTLj43uOn/rLjrIooJ6FRxezYvpfRrLx+6M4eOhqbB69O87i6zvjRTXqTaSnnNXhqyGRzlcFzMHzA9jNbrSZZvkJfOAoIJ5ZsOlu3ZdFI6Nyakm+tlm2gs5sxutIh61k0IPO0LCAobFmdOoCaI8KH+bs7GfuvSQhyOHzYVstXc3Q3soiTl+PznsxCoZuQd6zddnZmyHBifW29H47M04mPtuVOTq1eiCbLK1pPnaaWZki/x+zKCocPWZ+bHCiro/F8VEgCyAtUZ2WRlb1PWycdCNFYQe3l7u3sWfvPc7JBzMFrbTyYbArJAWydh3bchHJPJVPV8POqWmqmqupjIvIX7sSBWkO1iWZpx5P4e2f9rRzQT8j4B2ustfKW2hjYJElgNqPY2aX7G7be0VseJN/oE44nNqMHNoCjhzpMtqw6lPeeEljFqGhMyVGN92HlSWH9iRmhF1d2PKTo4IjotY/aooeFzq4LT9UpdDXZKr/PaGQDazAuSjfr6Cokl8bMbvXo7Pljp5VWaf2+pymdx2/Nl9sLXBgpphpMatVKsks2YOedkHCcIVlBvmKWRSEBUhQEhxO0ZzP89OKAvBfQ21G622lZWpUgmDNyAMffE7rbKYNnned1OEPy3OSxPNdvOqP77AHxYQ9xLjnvUT43aPL8mm14Gd2lOGEgX8YXdCnI2q2q7fjqXQB6eETv/c+y97mPAJBeGJA8cZP+Y7uEs3VGV2zd8SWhiE3AXMuYvBCOAjRWIvfoVp4OWHsyI/RyZgBpSnw4ovPoQxw9bNvGh/YqSmEeU629nr6SVeCbZaomnp7C8AFbdt8bbvL8Yxfp7FSVykw+beY8dUF57OSxG670Y1FRVuoUDH+/p5bhrKt9tOsqnE1myDSzNhu4rP/CKWQEIbo2sDLGQP+6y3B2vEI7eWfIzGbVM+r3SA5zutszwlHNyPai6c7I6twYEqQ9kKSq8nW3sIDCUKdNnIimUojHMqO26WzwSgw1+oum2dx7UhwcEf/G00x+2yeQX9ogfNrUFIJrO6wPYiYXEw682khsjgKN/AwfoqGLbs3ggmP4dfdy4u0hjMaoq7rUebbDYP0T2f70kGhYeVCDlFLxoq6tWiTOm+rbd2FSa7tvEPQRez9ku0NyYJQEH47XWWo0kkLRg0P673rcHaimjdrklUNVdCXPYXXFJl1ezSXLzcANA1Om8MujCFYHSK5sfDR116NVMYw6z71QNM1K+be1j4/QUIhujaqI2mRaesKj/SmrT7pzy5M5LeXzBb1XOar/XkS+VFUPAETkjcCPcgYt1tvFuX10dw31zrBQ6xAXeZnmDNFGElX5uWEINBOpmrP4emc8ndmxe10L7YOFT5LEZpQu3BwfZQwf6LF2PSx1P2cbMcMrQhFjlUm8Q7cQNFIkg8QN7sk+XP7lW8j1W8fvRZoSD+2c44Ow4vn5/VW2CBpUOn/hFCZbQji1kBSYBEr44RUufVzZeu+eXe7R1JUyjapqI2kKiA2YdUM9oCLxx5WEjiQJiJD1HZHfJfZImhPM3OCeOU/qdFrq7U0vrDG8EhKPlGjswk9YuE9nMzNOg1oHXBR0HrtRE2M3T+rccJemyO4h0XjG6sR1nFFw9xNRYLk8z1lQHyzqHsBFhm79WDXvqQ76cHBUljFU53XRyYTujhlM062E5EYP8oLxxZiDRxzFZFD35LpDFNb2utekrFt++b/vEdzctQlGrba9Hg3p7uaEUzt2MAP1GsFBjafqogJ5t0qwsohAQN7BPLrAzfde5sJHhIvv3ifYcwf37TiowuzUDL+FxlIYVMarD7mvdC0pyyOzUHNZOCJz1xZButXnyAnESwGDp1JL+PMGg2/HDT3L7keul9xuf27qDVVPMdjeIzkaEw5XKe52YmAZGVngBT1rG/bwffmibZe15aIouemysQZHQwt1OxKrEFIMRwyeHjLb6hI+Xw2rs42YvU8Iq7B84UP9ILkdL5yYQRnM4MK7dmyft/aNUuSrlQE6nRIPc6JhSJhWHNeyjHUDWdf2Pb4QuONE5mXNoHjaNr74Qbjw7l3k5m5FYYpdNTJVJKy88ajOU1vAuL1lAqBro3HkSgTXTirPq8TTrFYAYToje/gy+5/QpbNn7b5zc1SWB9bcRQcK89pKzVMSPXnDDNrau+UNaR1PCLb36DhHSDQazJcHPk9Q7lWO6v8TM1a/DHgD8APAH7kTB2oN1RYtWrRo0aJFi7uFe5Cjqqr/l4jEwH8EVoHfr6otR/VlQZOLukjIvB7Kh4antLGfRbyqZvh/Ee9VlfBgQr4xINw/qH6PwjlOYd4NKWLjamrP8UlXAmab5sXUCEIXWspWTEpq7Umld8NmycneFJ6+ZlRT791JYpslhwHJoc2Sk8OQIgYJj3P6fJa090KJ2kx+uhaUvNUr71Dio4zOzYlxTsFCpVBLwKH0INnF+bTWwDi9Ba7es+00HyRWjyArCCeOyxcFyCxHsoxgWj0PGU3tWTpP29H9IYePwOZvQHzjkMKfi+M/Sa12NZg3Q2ZpJXjd6bgKKkU165dKtDqoeR3uUhHVst42UHnumqhzSmG+LZbXcAYazCK4cHUwmpUe87rovc+mDqa2bPJgzOpojA76ZD1hcsl5GWOFuCDcD8nW3fazgMEzsPGxGYGr6iJPPOvE1DtV5nvgpGoKpXfDFmVdR61uVPMBR23JqTy3KeSJkMdw6ddsYf9aSrI9tCziOa6e8yw1ec4+oWmuApSJ62vXeUTdcwrGaZUAkrsQqKrxxsE8t24/Rw92OHitrbv2mBLuDdHxpFYwIJoP0wJkuSlVFIq4MspMppaoKVkZrRCn1BDezAm5i23Yt7v6fV6UJNWUTztpf81t6t+b8KVu/f2vJbyWWe6RHTfvRIwvRnT98x8MmK2GTC84XirWX8b7AemqUnRtWfJ0wNpTGeGkgCetclIxnVaZ9P4co4hwnNG7FVsRC4cyqiVV36yu6IUU1e9FLKQrwtX/PiO55UL/4xTZPzTqhx+/4ng+KlEeSKz/q3n8TYItsX7T0W0kL2Cazd9fL/if5xZp8eNqFHLwCX2GV61oAsDqtR3yybSMvtgFFabCIEGZ9V9Wz0rialleoL5P2z8wNQsgHI2NInb8Cd99OHm4ewUi8k9gLlC4BjwGfKOIoKrf9FIfszVUl6FusJ4mU1V2kqfwTBYlWIEZuM3kqlKfkjJRiELnw4pAsjtjeLnH4Wc+yMqHdwFYfWrCdL1HuiJMLlb6pp1toX8dNt+1bZ0ToJOJhUviuLrOODIjYzol69tx8o6FjJSaoTp3vha6AqtsNd0Q9j8pp/e8z37PCGYFwWRWcm9FAqt8FVW0hTnZLX+vwsBCYEEAnYB8YBy+yaUOvbwgGE7Lyj3huLo/4gxiSV2n2euSXVgpT/nSuwtWPz6E7d2atEpFyajXYVctqjCqO0/p962TvFnRJhQsQWDBLXrZUdfqXYS6HM8iI7ROSamvX+7/bFcpaU622SfqdavBxetThnFZeheB0afdT++JPVafnDG6YpOGvCPMNkw2Krlhz6R/De77xR3kYFjy3Yo0NSpI06hWtUx+rxrlJ1beIK3Z46IQHUF8aOc0XRd2PiOnczNk5ZlK3UEmqZXqrScuNcOahdeiDFylnNowGYVov8P0irXH7jP7MJ0ZncUn/OWFGQCel+r3GYbo1hrTdWH943asrXfvVu1wTqpHqux1qPiVQUWhQQRZXUF39yqNysCOKa4c5l2Dp181l3k0ZafOvM8TqDD1xEIPR2MpLq4jOx3rj+qIIoJJSpB1mb3RMpWSJ26y/tEjst4qk027iNmm9aXJvtC7bse78ku3LNQ/nlC45yxxZM8tjkoDsiwx6g1S/9pUSlOlZFUeGZ2gc1AwXbXttz89ID5wvGrfxw1HNr7EUUVT8W1FCzt27V5JGFblowGSAAY90surxDcq5ZZitUswrqqkWVnrzChrWt1/vXKB2Zqw9aGc1Q9s2z3eqfXHNWeQr+pVnp/rjyWOK63XIKC4tWPvSP29cWWLzy3urWSqX218f9edPuA5fnLnFAs5p4v4qn5qe4bO05fjC4P5TjnNkGlOcWkDwPhwvjNxiK7tMViLGV2J6Fx2MiaHUy58UJhuxhzMwjLZ5MIHRkQ3DtDrN01gHGwm7ROI/IAUhGY4JzHjC87Q3FfyRAhi5jiqPhElnFLyWafrAVnf1ttyepbJjRHpVs/4d0e18nxgL2k9q7/IIc3nB8gwNKOwlzC5ZAZMEbvzFiE6clnNWWEeKVUzUAGNI4hDZJqW/L+sA0UkhDf3TK/P3w8nR0MglVdullYeVM9zKgrr4ItqNizdTqW56I2SunrAy4myLGkw//2YVA/zxsBpXqmzJqXUj5XlBFMrPBHc2rdl02l53OhZM7B6F6+y/0hEdLRCNEq59B47qelGyMGjVgb3yjvNQxLtT+HxZ6DXnddV9NfVyKYfX4oI/Os6tkSTsoCFhzNgB88XJa+viIFQWXtcSz3LbLNvBmqWV4aq97TFcfXsfdZzafC7mxxF0OsyuX+VyZabcN6MCbKuJSH6BC2nUSnjWeUR9wN8UmkRg3FK1Xtqa1y80iOX+0hAMp+JDS5JMZpLditLvJ7HkGTN+++1NivDZkn7rbeHsxipMK/C4tpYsD+CC1twcFgm9fh9Btv7BI+ssP0mx/+US0hWMLie0d21fe2+ISAcw6X3TEm2XfLSR580XudsVnLo62OK1hwg48vW90UjagVaKuPVJ7RKBqvPZgwvR0xMtZDZZs7F9wrRjQPyrUF1bUfDee9pYhMrUbX7m9fGOXEe5q5zngz6jB/ZYLYWsbbreP5xbPkHeT6feTsxLzG9bmnoy2hKMDNvb6mt6u99PblYolItwBucnudOlleqDElC8fw1gn6fOeT5+cgVWATVeyqZSlX/JYCIDICJqolmi0gIdO7EMe+ooSoiG8D3YllgCrxVVX+5sc4XAP8Iy+feVtXPP2lbEflNwHcDXSwi9WdU9R2OK/G9wJvddf2Aqv692z3n7NnnbneTlw3LmnLy2BMkjfUCoOf+6rjd0MfG9z99m1uwsC54AS9ZCLH7vuqzwpwYue+MTguk3OfmhC9pKMjXxz4HyJ548m6fwkKc1B13n3war02uWIeA+7/SWLfcz9HZRLzX/vVN1s54jgCDBcuyJZ9fKOIPV9dYUF3TWfd96dde2vM5j8huLUjyvJu4cXP5bzu79J565lifWx+56+bTXB8173+Y99TXt//xX6G/8JfFWGQ1vOTt+KPWjl9o8HrrY4+98HPxfW6jnRTnqC8+C+6l0H8NPw/8T4DvhHsYX/W3vtQHutMe1bcBP6OqXyEiCfPvqTdG/xnwJar6lIhcPsO2/yfwN1X1p0Xkd7vvXwB8JdBR1U8TkT7wQRH5IVV94g5eX4sWLVq0aNGixQuD6r0W+vfoqmrpKVDVI2d7veS4Y+QjEVkDPg/45wCqOlPVvcZqfxj4cVV9yq1z4wzbKpTOkXXgudrygYhEmGU/Aw5e8gtr0aJFixYtWrR4CaCYR3XZ32kQkS8RkQ+LyMdE5Fvv/BmXGIrIm2vn8RZgfML6Lxh30qP6WuAm8H0i8iaMcPvNqlojovB6IBaRt2MR47ep6g+csu23AD8rIn8fM7S9m/nfAl8OPI95X/+squ40T0pEvhb4WoDubQVRWrQ4P2jbcYtXAtp23OJVD9XTE7GXwPFC/ynwRcAzwDtF5CdV9YMv4Rkuw7cAPyYi3ll4FfgDd+JAdzKdM8L4ot+lqp8BDIGmtR8BbwG+DPhi4NtE5PWnbPunMSP0IeDP4ryuwGdhNJn7gdcAf97Vnp2Dqn6Pqn6mqn5mfGd4vy1a3HG07bjFKwFtO27R4kV5VD8L+JiqPqaqM+CHMYfdHYeqvhP4JMwm+zPAJ6vqHVEAEL1DWZ0ich/wP1T1Uff9c4FvVdUvq63zrRjP4W+47/8c+BngF5dtKyL7wIaqqogIsK+qayLyT902/8pt8y8wjuuPnnCON4FFWScXge0XdQPuTbTX/fLhEVW99FLsqG3Hc3g1XjPc420Ylrbj9nm+unDPt+PbhYj8DHbdy9AFJrXv36Oq3+O2/Qosx+d/c9//KPDZqvoNd+p86xCRTwXe6M4RABcVf0lxx0L/qnpNRJ4WkTeo6oeBLwSa7uifAL7T8UoT4LOBf3jKts8Bnw+8HfidgK+E8BTwO0XkX2Oh/8/B1AROOseFjVNEflVVP/O2LvgVgPa670207bjCq/Ga4ZVx3Yva8Svhul4I2ut+9UBVv+RFbL5IzPplUeISkb+OJbK/Efgp4EuBX8JKqb6kuNNZ/98I/BuXtf8Y8DUi8nUAqvrdqvohN5t4H6bO8r2q+v5l27rlfxJ4mzNuJzh+E8bT+D7g/djD+z5VrQkZtWjRokWLFi1avGLwDPBQ7fuDVAnmdxpfAbwJeLeqfo2IXMEkQl9y3FFDVVXfAzRnR9/dWOc7gO8447ao6i9hvNbm8iNMoqpFixYtWrRo0eKVjncCrxOR1wDPAn8QU1N6OTBW1UJEMqfUdANLhH/J0VamWozvudsncJfQXvcrC6/U6zoJr8Zrhlfudb9Sr+s0tNfd4lSoaiYi3wD8LFZT51+o6gdepsP/qtPC//9iykxHwDvuxIHuWDJVixYtWrRo0aJFi1c2RORRYO1O0S3vpDxVixYtWrRo0aJFi1cYROTn/WdVfUJV31df9lKiDf23aNGiRYsWLVq0OBUi0sWUlS6KyCaV8sAapmP/kuMV5VEVka6IvENE3isiHxCRv+mWv0lEfllEfl1E/r0j/vpt/rIrPfZhEfni2vK3uPU/JiL/2Gm2IiIdEfkRt/xXnMvbb/PHReSj7u+P34PX/Ha37D3u7/J5vOYXct0ickFE/ouIHInIdzb2dW6e9auxDd+B627bcduO74nnecp1t+34nD/vVyn+FMZJ/ST3/13Ar+LkRu/IEVX1FfOHWfYr7nMM/Aqmp/pO4PPd8rcCf9t9fiPwXqCDVbP6OBC6394B/Ba3z58GvtQt/zPAd7vPfxD4Efd5C5PR2gI23efNe+ya3w585oJjnKtrfoHXPQB+O/B1wHc29nVunvWrsQ237bhtx207btvxeWzH7d+Jz/z/wHipAN8G/DvgzXfiWK8oj6oajtzX2P0p8AbgF9zynwP+F/f5y4EfVtWpqj4OfAz4LBG5ij2AX1Z7Cj8A/P7aNv/Sff63wBe6Gd8XAz+nqjuquuuO82KEfM+El+qaTznMubpmuP3rVtWhmrRZvcIH5+1ZvxrbMLTt2H1t23Hbjtt2fA8971c5vkJVD0TktwNfBHw/8F134kCvKEMVQERCEXkPpun1c6r6K1gRgN/nVvlKKoHcB4Cna5s/45Y94D43l89to6oZsA9cOGFfdxwv0TV7fJ8LM32bD7lwDq8Zbvu6l+HcPetXYxuGth3TtuO2Hbft+J573q9i5O7/l2Ge7p/AKoy+5HjFGaqqmqvqb8IqNHyWWC3atwJfLyLvAlaBmVt9Wfmxk8qSvZBt7iheomsG+COq+mnA57q/P3rKNnftmuG2r3sZzt2zfjW2YWjbMW07vt1zfCU8z7Ydz+Oee96vYjwrIv8f4KuAnxKRDnfIpnzFGaoeqrqHcXy+RFV/Q1V/l6q+BfghjAcEy8uPPeM+N5fPbSNWxnUd2DlhXy8bXuQ1o6rPuv+HwA9ShaDO7TXDma97Gc7ts341tmFo2zFtO66fy7m9rtPQtuNXVjtucQxfhRUa+BL3zLeAv3hHjqTngJT7Uv0Bl4AN97kH/CLwe4DLblmAcV7e6r5/CvNE9seoiOzvxMjgntD9u93yr2ee0P2j7vMW8DhG5t50n7fulWvGpMouunVijAP0defxml/Idde2+2qOk/fPzbN+Nbbhth237bhtx207Po/tuP07H393/QRe0ouBTwfeDbwP48b8H275NwMfcX/fDlaRy/32V7FZ3odx2YVu+We6fXwck1zwVby6wI9hpPd3AK+tbfNWt/xjwNfcS9eMZWG+y+3nA8DbqAaKc3XNL+K6n8Bm4EfYLPyN5+1ZvxrbcNuO23bctuO2HZ/Hdtz+nY+/toRqixYtWrRo0aJFi3OJVyxHtUWLFi1atGjRosW9jdZQbdGiRYsWLVq0aHEu0RqqLVq0aNGiRYsWLc4lWkO1RYsWLVq0aNGixblEa6i2aNGiRYsWLVq0OJdoDdUWLVq0aNGiRYsW5xKtodqiRYsWLVq0aNHiXKI1VFvcFkTkN4vI+0SkKyIDEfmAq+ncosU9g7Ydt7jX0bbhFq8WtIL/LW4bIvJ3sCohPeAZVf17d/mUWrS4bbTtuMW9jrYNt3g1oDVUW9w2RCTB6jFPgN+qqvldPqUWLW4bbTtuca+jbcMtXg1oQ/8tXgi2gBVgFZvNt2hxL6Jtxy3udbRtuMUrHq1HtcVtQ0R+Evhh4DXAVVX9hrt8Si1a3DbadtziXkfbhlu8GhDd7RNocW9BRP4YkKnqD4pICPx3Efmdqvqf7/a5tWhxVrTtuMW9jrYNt3i1oPWotmjRokWLFi1atDiXaDmqLVq0aNGiRYsWLc4lWkO1RYsWLVq0aNGixblEa6i2aNGiRYsWLVq0OJdoDdUWLVq0aNGiRYsW5xKtodqiRYsWLVq0aNHiXKI1VFu0aNGiRYsWLVqcS7SGaosWLVq0aNGiRYtzif8bQnNRWjh7eboAAAAASUVORK5CYII=\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "s2_stack[0].plot(col=\"band\")" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "id": "cc2326b7-d1cc-4474-82b6-95f7da05f897", + "metadata": {}, + "outputs": [], + "source": [ + "l8_original = stack(\n", + " items=ItemCollection([best_l8_match]), assets=LANDSAT_8_RGB_BANDS, resolution=10\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "id": "aa276eef-73ea-4834-a6a1-7cbd205f3d46", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.DataArray 'stackstac-5d0f877107914bcb285ac37e66d7bcc9' (time: 1, band: 3, y: 24754, x: 24514)>\n",
+       "dask.array<fetch_raster_window, shape=(1, 3, 24754, 24514), dtype=float64, chunksize=(1, 1, 1024, 1024), chunktype=numpy.ndarray>\n",
+       "Coordinates:\n",
+       "  * time                         (time) datetime64[ns] 2018-05-10T09:22:33.46...\n",
+       "    id                           (time) <U31 'LC08_L2SP_187018_20180510_02_T1'\n",
+       "  * band                         (band) <U5 'SR_B4' 'SR_B3' 'SR_B2'\n",
+       "  * x                            (x) float64 3.561e+05 3.561e+05 ... 6.012e+05\n",
+       "  * y                            (y) float64 6.785e+06 6.785e+06 ... 6.538e+06\n",
+       "    landsat:processing_level     <U4 'L2SP'\n",
+       "    landsat:wrs_type             <U1 '2'\n",
+       "    landsat:cloud_cover_land     float64 0.01\n",
+       "    instruments                  object {'oli', 'tirs'}\n",
+       "    landsat:collection_number    <U2 '02'\n",
+       "    landsat:wrs_path             <U3 '187'\n",
+       "    view:sun_elevation           float64 46.7\n",
+       "    eo:cloud_cover               float64 0.01\n",
+       "    platform                     <U9 'landsat-8'\n",
+       "    landsat:collection_category  <U2 'T1'\n",
+       "    landsat:wrs_row              <U3 '018'\n",
+       "    view:off_nadir               int64 0\n",
+       "    landsat:scene_id             <U21 'LC81870182018130LGN00'\n",
+       "    description                  (band) <U56 'Collection 2 Level-2 Red Band (...\n",
+       "    proj:epsg                    int64 32635\n",
+       "    view:sun_azimuth             float64 163.4\n",
+       "    proj:bbox                    object {6537585.0, 6785115.0, 356085.0, 6012...\n",
+       "    proj:shape                   object {8251, 8171}\n",
+       "    title                        (band) <U15 'Red Band (B4)' ... 'Blue Band (...\n",
+       "    proj:transform               object {0.0, -30.0, 356085.0, 6785115.0, 30.0}\n",
+       "    gsd                          float64 30.0\n",
+       "    common_name                  (band) <U5 'red' 'green' 'blue'\n",
+       "    center_wavelength            (band) float64 0.65 0.56 0.48\n",
+       "    full_width_half_max          (band) float64 0.04 0.06 0.06\n",
+       "    epsg                         int64 32635\n",
+       "Attributes:\n",
+       "    spec:        RasterSpec(epsg=32635, bounds=(356080, 6537580, 601220, 6785...\n",
+       "    crs:         epsg:32635\n",
+       "    transform:   | 10.00, 0.00, 356080.00|\\n| 0.00,-10.00, 6785120.00|\\n| 0.0...\n",
+       "    resolution:  10
" + ], + "text/plain": [ + "\n", + "dask.array\n", + "Coordinates:\n", + " * time (time) datetime64[ns] 2018-05-10T09:22:33.46...\n", + " id (time) \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.DataArray 'stackstac-dc63732d805d775831b0a32ce9a525a3' (time: 1, band: 3, y: 128, x: 128)>\n",
+       "dask.array<fetch_raster_window, shape=(1, 3, 128, 128), dtype=float64, chunksize=(1, 1, 128, 128), chunktype=numpy.ndarray>\n",
+       "Coordinates:\n",
+       "  * time                         (time) datetime64[ns] 2018-05-10T09:22:33.46...\n",
+       "    id                           (time) <U31 'LC08_L2SP_187018_20180510_02_T1'\n",
+       "  * band                         (band) <U5 'SR_B4' 'SR_B3' 'SR_B2'\n",
+       "  * x                            (x) float64 3.9e+05 3.9e+05 ... 3.912e+05\n",
+       "  * y                            (y) float64 6.67e+06 6.67e+06 ... 6.669e+06\n",
+       "    landsat:processing_level     <U4 'L2SP'\n",
+       "    landsat:wrs_type             <U1 '2'\n",
+       "    landsat:cloud_cover_land     float64 0.01\n",
+       "    instruments                  object {'oli', 'tirs'}\n",
+       "    landsat:collection_number    <U2 '02'\n",
+       "    landsat:wrs_path             <U3 '187'\n",
+       "    view:sun_elevation           float64 46.7\n",
+       "    eo:cloud_cover               float64 0.01\n",
+       "    platform                     <U9 'landsat-8'\n",
+       "    landsat:collection_category  <U2 'T1'\n",
+       "    landsat:wrs_row              <U3 '018'\n",
+       "    view:off_nadir               int64 0\n",
+       "    landsat:scene_id             <U21 'LC81870182018130LGN00'\n",
+       "    description                  (band) <U56 'Collection 2 Level-2 Red Band (...\n",
+       "    proj:epsg                    int64 32635\n",
+       "    view:sun_azimuth             float64 163.4\n",
+       "    proj:bbox                    object {6537585.0, 6785115.0, 356085.0, 6012...\n",
+       "    proj:shape                   object {8251, 8171}\n",
+       "    title                        (band) <U15 'Red Band (B4)' ... 'Blue Band (...\n",
+       "    proj:transform               object {0.0, -30.0, 356085.0, 6785115.0, 30.0}\n",
+       "    gsd                          float64 30.0\n",
+       "    common_name                  (band) <U5 'red' 'green' 'blue'\n",
+       "    center_wavelength            (band) float64 0.65 0.56 0.48\n",
+       "    full_width_half_max          (band) float64 0.04 0.06 0.06\n",
+       "    epsg                         int64 32635\n",
+       "Attributes:\n",
+       "    spec:        RasterSpec(epsg=32635, bounds=(389960, 6668780, 391240, 6670...\n",
+       "    crs:         epsg:32635\n",
+       "    transform:   | 10.00, 0.00, 389960.00|\\n| 0.00,-10.00, 6670060.00|\\n| 0.0...\n",
+       "    resolution:  10
" + ], + "text/plain": [ + "\n", + "dask.array\n", + "Coordinates:\n", + " * time (time) datetime64[ns] 2018-05-10T09:22:33.46...\n", + " id (time) " + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "l8_cropped[0].plot(col=\"band\")" + ] + }, + { + "cell_type": "markdown", + "id": "bc46c85b-daa9-44df-9be7-62dfa1234b25", + "metadata": {}, + "source": [ + "Now we have a cropped Landsat 8 chip that spatially and temporally matches our Sentinel-2 source imagery and label sample from the BigEarthNet dataset." + ] + }, + { + "cell_type": "markdown", + "id": "3a70b063-d273-4aee-864b-07e318388890", + "metadata": {}, + "source": [ + "### Launch a Dask gateway cluster for parallel processing" + ] + }, + { + "cell_type": "markdown", + "id": "cb650d80-bf1a-4aad-8f8b-08a612e28aae", + "metadata": {}, + "source": [ + "We will use Dask to optimize our data processing of hundreds of Landsat-8 scenes by parallelizing the workflow with a delayed computation graph. The Dask Client schedules, runs the delayed computations, and gathers the results, while the Dask Gateway provides a secure and centralized way of managing the multiple client clusters. This is especially useful for running Dask on Planetary Computer." + ] + }, + { + "cell_type": "code", + "execution_count": 70, + "id": "29531759-6d19-4010-8401-eb947a32c515", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "
\n", + "
\n", + "

Client

\n", + "

Client-270dde92-d212-11ec-8442-52879e68a5a2

\n", + " \n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "
Connection method: Cluster objectCluster type: distributed.LocalCluster
\n", + " Dashboard: http://127.0.0.1:8787/status\n", + "
\n", + "\n", + " \n", + "
\n", + "

Cluster Info

\n", + "
\n", + "
\n", + "
\n", + "
\n", + "

LocalCluster

\n", + "

9bbc5757

\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + " \n", + "
\n", + " Dashboard: http://127.0.0.1:8787/status\n", + " \n", + " Workers: 4\n", + "
\n", + " Total threads: 8\n", + " \n", + " Total memory: 16.00 GiB\n", + "
Status: runningUsing processes: True
\n", + "\n", + "
\n", + " \n", + "

Scheduler Info

\n", + "
\n", + "\n", + "
\n", + "
\n", + "
\n", + "
\n", + "

Scheduler

\n", + "

Scheduler-01ba10f6-8fc1-44d9-896e-3e746fe1048b

\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " Comm: tcp://127.0.0.1:49767\n", + " \n", + " Workers: 4\n", + "
\n", + " Dashboard: http://127.0.0.1:8787/status\n", + " \n", + " Total threads: 8\n", + "
\n", + " Started: Just now\n", + " \n", + " Total memory: 16.00 GiB\n", + "
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "

Workers

\n", + "
\n", + "\n", + " \n", + "
\n", + "
\n", + "
\n", + "
\n", + " \n", + "

Worker: 0

\n", + "
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + "
\n", + " Comm: tcp://127.0.0.1:49781\n", + " \n", + " Total threads: 2\n", + "
\n", + " Dashboard: http://127.0.0.1:49785/status\n", + " \n", + " Memory: 4.00 GiB\n", + "
\n", + " Nanny: tcp://127.0.0.1:49770\n", + "
\n", + " Local directory: /Users/kendallsmith/radiant/repos/PlanetaryComputerExamples/tutorials/dask-worker-space/worker-0h0k44fc\n", + "
\n", + "
\n", + "
\n", + "
\n", + " \n", + "
\n", + "
\n", + "
\n", + "
\n", + " \n", + "

Worker: 1

\n", + "
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + "
\n", + " Comm: tcp://127.0.0.1:49778\n", + " \n", + " Total threads: 2\n", + "
\n", + " Dashboard: http://127.0.0.1:49784/status\n", + " \n", + " Memory: 4.00 GiB\n", + "
\n", + " Nanny: tcp://127.0.0.1:49772\n", + "
\n", + " Local directory: /Users/kendallsmith/radiant/repos/PlanetaryComputerExamples/tutorials/dask-worker-space/worker-8evp6yze\n", + "
\n", + "
\n", + "
\n", + "
\n", + " \n", + "
\n", + "
\n", + "
\n", + "
\n", + " \n", + "

Worker: 2

\n", + "
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + "
\n", + " Comm: tcp://127.0.0.1:49780\n", + " \n", + " Total threads: 2\n", + "
\n", + " Dashboard: http://127.0.0.1:49783/status\n", + " \n", + " Memory: 4.00 GiB\n", + "
\n", + " Nanny: tcp://127.0.0.1:49771\n", + "
\n", + " Local directory: /Users/kendallsmith/radiant/repos/PlanetaryComputerExamples/tutorials/dask-worker-space/worker-4xh8i4d4\n", + "
\n", + "
\n", + "
\n", + "
\n", + " \n", + "
\n", + "
\n", + "
\n", + "
\n", + " \n", + "

Worker: 3

\n", + "
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + "
\n", + " Comm: tcp://127.0.0.1:49779\n", + " \n", + " Total threads: 2\n", + "
\n", + " Dashboard: http://127.0.0.1:49782/status\n", + " \n", + " Memory: 4.00 GiB\n", + "
\n", + " Nanny: tcp://127.0.0.1:49773\n", + "
\n", + " Local directory: /Users/kendallsmith/radiant/repos/PlanetaryComputerExamples/tutorials/dask-worker-space/worker-9dvpa_0q\n", + "
\n", + "
\n", + "
\n", + "
\n", + " \n", + "\n", + "
\n", + "
\n", + "\n", + "
\n", + "
\n", + "
\n", + "
\n", + " \n", + "\n", + "
\n", + "
" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 70, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "client = distributed.Client() # you can configure Dask client parameters here\n", + "client" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "id": "55d9dc11-d3b8-4edc-a5fd-acb2faba1c18", + "metadata": {}, + "outputs": [], + "source": [ + "# client.close()" + ] + }, + { + "cell_type": "markdown", + "id": "f3b09697-b6ab-4026-bfcb-2f5214b03f5c", + "metadata": {}, + "source": [ + "### Scale the workflow using Dask Delayed" + ] + }, + { + "cell_type": "markdown", + "id": "5368c39f-94a1-41ba-acc0-fd18c8dc1c18", + "metadata": {}, + "source": [ + "These are two helper functions that we will use to encapsulate the process of creating the cropped Landsat 8 chips and write them to disk in parallel using the Dask Delayed decorator." + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "id": "c924acb1-092e-4f86-b73f-5b56ccdebe27", + "metadata": {}, + "outputs": [], + "source": [ + "def create_landsat_8_dataarray(item_path: str) -> DataArray:\n", + " \"\"\"Creates a Landsat 8 chip from BigEarthNet label chip.\n", + "\n", + " Args:\n", + " item_path: string path to the label item on disk\n", + "\n", + " Returns:\n", + " Landsat 8 DataArray that has been cropped to label bbox\n", + " \"\"\"\n", + " # read label Item object\n", + " label_item = Item.from_file(\n", + " os.path.join(TMP_DIR, BIGEARTHNET_LABEL_COLLECTION, item_path)\n", + " )\n", + "\n", + " # fetch the Landsat 8 scene that best matches the label\n", + " s2_source, l8_match = get_landsat_8_match(label_item)\n", + "\n", + " if l8_match:\n", + " # crop L8 match to S2 dims and read image data\n", + " l8_stack = stack(\n", + " items=ItemCollection([l8_match]),\n", + " assets=LANDSAT_8_RGB_BANDS,\n", + " bounds_latlon=s2_source.bbox,\n", + " resolution=10,\n", + " )\n", + "\n", + " return l8_stack\n", + " return None" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "id": "02b974fe-0c6f-40a3-ad63-2f4753e0236b", + "metadata": {}, + "outputs": [], + "source": [ + "def write_tifs_bands(l8_array: DataArray, l8_item_id: str) -> None:\n", + " \"\"\"Writes to a GeoTiff for each band in Landsat 8 DataArray\n", + "\n", + " Args:\n", + " l8_array: the DataArray object created from the BigEarthNet label item\n", + " \"\"\"\n", + " # write cropped L8 DataArray to a tiff file for each band\n", + " for _band in LANDSAT_8_RGB_BANDS:\n", + " l8_band_img = l8_array.sel(band=_band)\n", + " l8_band_filename = os.path.join(\n", + " TMP_DIR, OUTPUT_DIR, l8_item_id, f\"{l8_item_id}_{_band}.tiff\"\n", + " )\n", + " Path(os.path.split(l8_band_filename)[0]).mkdir(parents=True, exist_ok=True)\n", + " l8_band_img[0].rio.to_raster(l8_band_filename)" + ] + }, + { + "cell_type": "markdown", + "id": "d5a97950-5b08-4e79-ab15-3736697d0584", + "metadata": {}, + "source": [ + "This sets the stage for the Dask Task Scheduler by mapping all label Items to the `create_landsat_8_dataarray` function. Nothing in the task graph will actually be executed until the `.compute()` command is ran." + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "id": "79668303-468f-4f28-9bf0-6121557acc3d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 1.1 s, sys: 481 ms, total: 1.58 s\n", + "Wall time: 7.89 s\n" + ] + } + ], + "source": [ + "%%time\n", + "results = []\n", + "for item_path in label_item_sample[0:5]:\n", + " results.append(create_landsat_8_dataarray(item_path))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8608333f-8e49-4595-863f-1217d5d141c9", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 67, + "id": "088ce116-526a-4657-9c44-f51cffb9326e", + "metadata": {}, + "outputs": [], + "source": [ + "task_pool = []\n", + "\n", + "for item_path in label_item_sample:\n", + " delayed_task = delayed(create_landsat_8_dataarray)(item_path)\n", + " task_pool.append(delayed_task)" + ] + }, + { + "cell_type": "markdown", + "id": "92137ec9-748b-4126-9984-11f4f8d6ec26", + "metadata": {}, + "source": [ + "Now we will persist the objects into memory and run the computations to create our DataArrays." + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "id": "aa01785b-b490-456b-a6c7-3d439275773f", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 48.2 s, sys: 1.72 s, total: 50 s\n", + "Wall time: 49.9 s\n" + ] + } + ], + "source": [ + "%%time\n", + "task_pool_local = compute(*task_pool, sync=True)" + ] + }, + { + "cell_type": "markdown", + "id": "6f95d76c-dc3e-4591-a596-a95e27a3dbde", + "metadata": {}, + "source": [ + "Lastly, we want to write a GeoTIFF to disk for each band of each Landsat 8 DataArray we created." + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "id": "e1436d4d-10ac-4b39-88fb-5150fe9df12b", + "metadata": {}, + "outputs": [ + { + "ename": "CancelledError", + "evalue": "create_landsat_8_dataarray-99097cdb-3ce8-4543-a1de-47ff6bf8cdc5", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mCancelledError\u001b[0m Traceback (most recent call last)", + "File \u001b[0;32m:2\u001b[0m, in \u001b[0;36m\u001b[0;34m\u001b[0m\n", + "File \u001b[0;32m~/opt/anaconda3/envs/mlhub/lib/python3.9/site-packages/dask/base.py:288\u001b[0m, in \u001b[0;36mDaskMethodsMixin.compute\u001b[0;34m(self, **kwargs)\u001b[0m\n\u001b[1;32m 264\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mcompute\u001b[39m(\u001b[38;5;28mself\u001b[39m, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[1;32m 265\u001b[0m \u001b[38;5;124;03m\"\"\"Compute this dask collection\u001b[39;00m\n\u001b[1;32m 266\u001b[0m \n\u001b[1;32m 267\u001b[0m \u001b[38;5;124;03m This turns a lazy Dask collection into its in-memory equivalent.\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 286\u001b[0m \u001b[38;5;124;03m dask.base.compute\u001b[39;00m\n\u001b[1;32m 287\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m--> 288\u001b[0m (result,) \u001b[38;5;241m=\u001b[39m \u001b[43mcompute\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtraverse\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 289\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m result\n", + "File \u001b[0;32m~/opt/anaconda3/envs/mlhub/lib/python3.9/site-packages/dask/base.py:571\u001b[0m, in \u001b[0;36mcompute\u001b[0;34m(traverse, optimize_graph, scheduler, get, *args, **kwargs)\u001b[0m\n\u001b[1;32m 568\u001b[0m keys\u001b[38;5;241m.\u001b[39mappend(x\u001b[38;5;241m.\u001b[39m__dask_keys__())\n\u001b[1;32m 569\u001b[0m postcomputes\u001b[38;5;241m.\u001b[39mappend(x\u001b[38;5;241m.\u001b[39m__dask_postcompute__())\n\u001b[0;32m--> 571\u001b[0m results \u001b[38;5;241m=\u001b[39m \u001b[43mschedule\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdsk\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mkeys\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 572\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m repack([f(r, \u001b[38;5;241m*\u001b[39ma) \u001b[38;5;28;01mfor\u001b[39;00m r, (f, a) \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mzip\u001b[39m(results, postcomputes)])\n", + "File \u001b[0;32m~/opt/anaconda3/envs/mlhub/lib/python3.9/site-packages/distributed/client.py:2671\u001b[0m, in \u001b[0;36mClient.get\u001b[0;34m(self, dsk, keys, workers, allow_other_workers, resources, sync, asynchronous, direct, retries, priority, fifo_timeout, actors, **kwargs)\u001b[0m\n\u001b[1;32m 2615\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mget\u001b[39m(\n\u001b[1;32m 2616\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 2617\u001b[0m dsk,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 2629\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs,\n\u001b[1;32m 2630\u001b[0m ):\n\u001b[1;32m 2631\u001b[0m \u001b[38;5;124;03m\"\"\"Compute dask graph\u001b[39;00m\n\u001b[1;32m 2632\u001b[0m \n\u001b[1;32m 2633\u001b[0m \u001b[38;5;124;03m Parameters\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 2669\u001b[0m \u001b[38;5;124;03m Client.compute : Compute asynchronous collections\u001b[39;00m\n\u001b[1;32m 2670\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m-> 2671\u001b[0m futures \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_graph_to_futures\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 2672\u001b[0m \u001b[43m \u001b[49m\u001b[43mdsk\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 2673\u001b[0m \u001b[43m \u001b[49m\u001b[43mkeys\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mset\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mflatten\u001b[49m\u001b[43m(\u001b[49m\u001b[43m[\u001b[49m\u001b[43mkeys\u001b[49m\u001b[43m]\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 2674\u001b[0m \u001b[43m \u001b[49m\u001b[43mworkers\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mworkers\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 2675\u001b[0m \u001b[43m \u001b[49m\u001b[43mallow_other_workers\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mallow_other_workers\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 2676\u001b[0m \u001b[43m \u001b[49m\u001b[43mresources\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mresources\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 2677\u001b[0m \u001b[43m \u001b[49m\u001b[43mfifo_timeout\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfifo_timeout\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 2678\u001b[0m \u001b[43m \u001b[49m\u001b[43mretries\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mretries\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 2679\u001b[0m \u001b[43m \u001b[49m\u001b[43muser_priority\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mpriority\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 2680\u001b[0m \u001b[43m \u001b[49m\u001b[43mactors\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mactors\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 2681\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 2682\u001b[0m packed \u001b[38;5;241m=\u001b[39m pack_data(keys, futures)\n\u001b[1;32m 2683\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m sync:\n", + "File \u001b[0;32m~/opt/anaconda3/envs/mlhub/lib/python3.9/site-packages/distributed/client.py:2596\u001b[0m, in \u001b[0;36mClient._graph_to_futures\u001b[0;34m(self, dsk, keys, workers, allow_other_workers, priority, user_priority, resources, retries, fifo_timeout, actors)\u001b[0m\n\u001b[1;32m 2594\u001b[0m \u001b[38;5;66;03m# Pack the high level graph before sending it to the scheduler\u001b[39;00m\n\u001b[1;32m 2595\u001b[0m keyset \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mset\u001b[39m(keys)\n\u001b[0;32m-> 2596\u001b[0m dsk \u001b[38;5;241m=\u001b[39m \u001b[43mdsk\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m__dask_distributed_pack__\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mkeyset\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mannotations\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 2598\u001b[0m \u001b[38;5;66;03m# Create futures before sending graph (helps avoid contention)\u001b[39;00m\n\u001b[1;32m 2599\u001b[0m futures \u001b[38;5;241m=\u001b[39m {key: Future(key, \u001b[38;5;28mself\u001b[39m, inform\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m) \u001b[38;5;28;01mfor\u001b[39;00m key \u001b[38;5;129;01min\u001b[39;00m keyset}\n", + "File \u001b[0;32m~/opt/anaconda3/envs/mlhub/lib/python3.9/site-packages/dask/highlevelgraph.py:1076\u001b[0m, in \u001b[0;36mHighLevelGraph.__dask_distributed_pack__\u001b[0;34m(self, client, client_keys, annotations)\u001b[0m\n\u001b[1;32m 1070\u001b[0m layers \u001b[38;5;241m=\u001b[39m []\n\u001b[1;32m 1071\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m layer \u001b[38;5;129;01min\u001b[39;00m (\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mlayers[name] \u001b[38;5;28;01mfor\u001b[39;00m name \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_toposort_layers()):\n\u001b[1;32m 1072\u001b[0m layers\u001b[38;5;241m.\u001b[39mappend(\n\u001b[1;32m 1073\u001b[0m {\n\u001b[1;32m 1074\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m__module__\u001b[39m\u001b[38;5;124m\"\u001b[39m: layer\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__module__\u001b[39m,\n\u001b[1;32m 1075\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m__name__\u001b[39m\u001b[38;5;124m\"\u001b[39m: \u001b[38;5;28mtype\u001b[39m(layer)\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__name__\u001b[39m,\n\u001b[0;32m-> 1076\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mstate\u001b[39m\u001b[38;5;124m\"\u001b[39m: \u001b[43mlayer\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m__dask_distributed_pack__\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1077\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_all_external_keys\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1078\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mkey_dependencies\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1079\u001b[0m \u001b[43m \u001b[49m\u001b[43mclient\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1080\u001b[0m \u001b[43m \u001b[49m\u001b[43mclient_keys\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1081\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m,\n\u001b[1;32m 1082\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mannotations\u001b[39m\u001b[38;5;124m\"\u001b[39m: layer\u001b[38;5;241m.\u001b[39m__dask_distributed_annotations_pack__(\n\u001b[1;32m 1083\u001b[0m annotations\n\u001b[1;32m 1084\u001b[0m ),\n\u001b[1;32m 1085\u001b[0m }\n\u001b[1;32m 1086\u001b[0m )\n\u001b[1;32m 1087\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m {\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mlayers\u001b[39m\u001b[38;5;124m\"\u001b[39m: layers}\n", + "File \u001b[0;32m~/opt/anaconda3/envs/mlhub/lib/python3.9/site-packages/dask/highlevelgraph.py:401\u001b[0m, in \u001b[0;36mLayer.__dask_distributed_pack__\u001b[0;34m(self, all_hlg_keys, known_key_dependencies, client, client_keys)\u001b[0m\n\u001b[1;32m 397\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\n\u001b[1;32m 398\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mInputs contain futures that were created by another client.\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 399\u001b[0m )\n\u001b[1;32m 400\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m stringify(future\u001b[38;5;241m.\u001b[39mkey) \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m client\u001b[38;5;241m.\u001b[39mfutures:\n\u001b[0;32m--> 401\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m CancelledError(stringify(future\u001b[38;5;241m.\u001b[39mkey))\n\u001b[1;32m 403\u001b[0m \u001b[38;5;66;03m# Calculate dependencies without re-calculating already known dependencies\u001b[39;00m\n\u001b[1;32m 404\u001b[0m \u001b[38;5;66;03m# - Start with known dependencies\u001b[39;00m\n\u001b[1;32m 405\u001b[0m dependencies \u001b[38;5;241m=\u001b[39m known_key_dependencies\u001b[38;5;241m.\u001b[39mcopy()\n", + "\u001b[0;31mCancelledError\u001b[0m: create_landsat_8_dataarray-99097cdb-3ce8-4543-a1de-47ff6bf8cdc5" + ] + } + ], + "source": [ + "%%time\n", + "for l8_array in task_pool_local:\n", + " if isinstance(l8_array, DataArray):\n", + " write_tifs_bands(l8_array, l8_array.id.values[0])" + ] + }, + { + "cell_type": "markdown", + "id": "2bde6ce7-9d7a-4114-88ba-56e4a4bea247", + "metadata": {}, + "source": [ + "This confirms that folders with images were written to disk. If there is a discrepancy between the sample size and the output, it's likely that there wasn't always a matching Landsat 8 scene given the geometry and datetime parameters for a particular Sentinel-2 source Item." + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "id": "3c3dd9a8-2a97-4677-a94a-85377572baa2", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['com.apple.ScreenSaver.Engine.legacyScreenSaver',\n", + " 'com.apple.PressAndHold',\n", + " 'com.apple.avconferenced',\n", + " 'com.google.drivefs.finderhelper.findersync',\n", + " 'com.apple.appleaccountd',\n", + " 'com.apple.replayd',\n", + " 'com.apple.ScreenTimeAgent',\n", + " 'com.displaylink.DisplayLinkLoginHelper',\n", + " 'com.apple.photos.ImageConversionService',\n", + " 'com.apple.FaceTime.FTConversationService',\n", + " 'qipc_systemsem_BoseWebUpdater4a43d835f8e2d8ba59d120a7df8bcbb19328cd88',\n", + " 'com.apple.transparencyd',\n", + " 'com.apple.AppSSOAgent',\n", + " 'com.apple.quicklook.QuickLookUIService',\n", + " 'com.apple.siriactionsd',\n", + " 'com.apple.progressd',\n", + " 'com.apple.photolibraryd',\n", + " 'com.apple.trustd',\n", + " 'com.apple.siri.media-indexer',\n", + " 'com.apple.triald',\n", + " '.com.google.Chrome.P6bcfT',\n", + " 'dropbox-electron.Fw4ulbps3nRW',\n", + " 'com.apple.ap.promotedcontentd',\n", + " 'com.apple.MobileSMS.spotlight',\n", + " 'com.apple.AMPDeviceDiscoveryAgent',\n", + " 'BoseUpdater.log',\n", + " 'com.apple.CalendarNotification.CalNCService',\n", + " 'com.apple.akd',\n", + " 'com.apple.ScreenSaver.Engine',\n", + " 'contentlinkingd',\n", + " 'com.apple.proactiveeventtrackerd',\n", + " 'com.apple.Safari.CacheDeleteExtension',\n", + " 'com.apple.SafariLaunchAgent',\n", + " 'com.getdropbox.dropbox.garcon',\n", + " 'com.apple.ScopedBookmarkAgent',\n", + " 'com.apple.TelephonyUtilities',\n", + " 'com.apple.amp.mediasharingd',\n", + " '.LINKS',\n", + " 'AudioComponentRegistrar',\n", + " 'com.apple.inputmethod.EmojiFunctionRowItem',\n", + " 'bigearthnet_v1_labels',\n", + " 'com.apple.mapspushd',\n", + " 'com.apple.QuickLookThumbnailing.extension.ThumbnailExtension-macOS',\n", + " 'com.apple.photoanalysisd',\n", + " 'internal',\n", + " 'com.apple.appstoreagent',\n", + " 'com.apple.notificationcenterui',\n", + " 'com.apple.BiomeAgent',\n", + " 'TemporaryItems',\n", + " 'com.apple.parsec-fbf',\n", + " 'com.apple.useractivityd',\n", + " 'com.google.drivefs.finderhelper',\n", + " 'com.apple.tipsd',\n", + " 'com.apple.fileproviderd',\n", + " 'com.displaylink.DisplayLinkUserAgent',\n", + " 'com.apple.dmd',\n", + " 'com.apple.nsurlsessiond',\n", + " 'recommendations',\n", + " 'com.apple.Music.MusicCacheExtension',\n", + " 'com.apple.ScreenSaver.Computer-Name',\n", + " 'com.apple.MailCacheDelete',\n", + " 'com.apple.remindd',\n", + " 'StatusKitAgent',\n", + " 'C071006B-016E-4501-A734-551A420E24DA',\n", + " 'com.apple.parsecd',\n", + " 'icdd',\n", + " 'com.apple.identityservicesd',\n", + " 'com.apple.sharingd',\n", + " 'com.apple.geod',\n", + " 'com.apple.TV.TVCacheExtension',\n", + " 'com.apple.CalendarAgent',\n", + " 'com.apple.bird',\n", + " 'com.apple.cloudd',\n", + " 'com.apple.ScreenSaver.Engine.legacyScreenSaver.x86-64',\n", + " 'com.apple.cloudkit.upload-request.cache',\n", + " 'com.apple.wifivelocity',\n", + " 'com.apple.routined',\n", + " '.AddressBookLocks',\n", + " 'metrickitd',\n", + " '.CalendarLocks',\n", + " 'com.apple.ScreenSaver.iLife-Slideshow-Extension',\n", + " 'com.tinyspeck.slackmacgap',\n", + " 'homed',\n", + " 'com.apple.sociallayerd',\n", + " 'com.apple.corespeechd',\n", + " 'com.apple.UsageTrackingAgent',\n", + " 'com.apple.quicklook.ThumbnailsAgent',\n", + " 'com.apple.siri-distributed-evaluation',\n", + " 'com.apple.pluginkit',\n", + " 'diagnosticextensionsd',\n", + " 'journeys',\n", + " 'com.apple.donotdisturbd',\n", + " 'com.apple.quicklook.satellite.general',\n", + " 'com.apple.tccd',\n", + " 'itunescloudd',\n", + " 'com.apple.CloudDocsDaemon.container-metadata-extractor',\n", + " 'com.apple.imagent',\n", + " 'qipc_sharedmemory_BoseWebUpdater4a43d835f8e2d8ba59d120a7df8bcbb19328cd88',\n", + " 'com.apple.AirPlayUIAgent',\n", + " '4FD3E732-58B2-4F9E-823B-DA776BAC658B',\n", + " 'com.apple.imdpersistence.IMDPersistenceAgent',\n", + " 'proactived',\n", + " 'com.apple.ap.adprivacyd',\n", + " 'analytics',\n", + " '.keystoneAgentLock',\n", + " 'com.apple.mediaanalysisd',\n", + " 'com.apple.OSDUIHelper',\n", + " 'bigearthnet_v1_labels.tar.gz']" + ] + }, + "execution_count": 59, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "os.listdir(TMP_DIR)" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "id": "ec64a009-9a87-4fb2-bf5b-fbc41a3f8021", + "metadata": {}, + "outputs": [ + { + "ename": "FileNotFoundError", + "evalue": "[Errno 2] No such file or directory: '/var/folders/87/c2vwc00s3rq1xw26bz5j25rh0000gn/T/landsat_8_source'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mFileNotFoundError\u001b[0m Traceback (most recent call last)", + "Input \u001b[0;32mIn [62]\u001b[0m, in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m landsat_chip_dir \u001b[38;5;241m=\u001b[39m os\u001b[38;5;241m.\u001b[39mpath\u001b[38;5;241m.\u001b[39mjoin(TMP_DIR, OUTPUT_DIR)\n\u001b[0;32m----> 2\u001b[0m \u001b[38;5;28mlen\u001b[39m(\u001b[43mos\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mlistdir\u001b[49m\u001b[43m(\u001b[49m\u001b[43mlandsat_chip_dir\u001b[49m\u001b[43m)\u001b[49m)\n", + "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: '/var/folders/87/c2vwc00s3rq1xw26bz5j25rh0000gn/T/landsat_8_source'" + ] + } + ], + "source": [ + "landsat_chip_dir = os.path.join(TMP_DIR, OUTPUT_DIR)\n", + "len(os.listdir(landsat_chip_dir))" + ] + }, + { + "cell_type": "markdown", + "id": "e0884796-bfab-4905-aa75-2f8dd43a5a13", + "metadata": {}, + "source": [ + "Open one of the new Landsat 8 chips to inspect what it looks like." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "beb3d5a8-2677-43dc-867a-153eb1e087f9", + "metadata": {}, + "outputs": [], + "source": [ + "landsat_images = glob(f\"{landsat_chip_dir}/**/*.tiff\", recursive=True)\n", + "first_l8_img = rioxarray.open_rasterio(landsat_images[0])\n", + "first_l8_img.plot()" + ] + }, + { + "cell_type": "markdown", + "id": "37581811-0f21-4838-9541-db84688032f6", + "metadata": {}, + "source": [ + "Shutdown the Dask client to cleanup cluster resources." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1d643476-917b-484b-a041-8f3c94d12c06", + "metadata": {}, + "outputs": [], + "source": [ + "client.shutdown()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e80c402a-81e6-46fb-bbb5-2c5fc79c8884", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}