Skip to content

Instantly share code, notes, and snippets.

@vincentsarago
Created January 25, 2023 15:52
Show Gist options
  • Save vincentsarago/45c3d13f33c1dfcb14fa48ddd750e446 to your computer and use it in GitHub Desktop.
Save vincentsarago/45c3d13f33c1dfcb14fa48ddd750e446 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"id": "6e885692",
"metadata": {},
"source": [
"# TiTiler Demo"
]
},
{
"cell_type": "code",
"execution_count": 84,
"id": "0d8bb890",
"metadata": {},
"outputs": [],
"source": [
"import httpx\n",
"import json\n",
"from folium import Map, TileLayer\n",
"\n",
"from matplotlib.pyplot import subplots"
]
},
{
"cell_type": "code",
"execution_count": 85,
"id": "a29360b6",
"metadata": {},
"outputs": [],
"source": [
"endpoint = \"https://titiler.xyz\""
]
},
{
"cell_type": "markdown",
"id": "e7c14f33",
"metadata": {},
"source": [
"## Data"
]
},
{
"cell_type": "code",
"execution_count": 35,
"id": "f882e9da",
"metadata": {},
"outputs": [],
"source": [
"dem_path = \"https://data.geo.admin.ch/ch.swisstopo.swissalti3d/swissalti3d_2019_2573-1085/swissalti3d_2019_2573-1085_0.5_2056_5728.tif\"\n",
"\n",
"rgba_path = \"https://noaa-eri-pds.s3.amazonaws.com/2022_Pre_Event/EC2201a_OB_N_RGB/EC2201a_OB_N_C0700000w415145n.tif\"\n",
"\n",
"rgbnir_path = \"https://njogis-imagery.s3.us-west-2.amazonaws.com/2020/cog/K7A3.tif\" \n",
"\n",
"stac_path = \"https://maxar-ard-samples.s3.amazonaws.com/v2/addis-ababa/37/033311333031/2014-01-29/105041001000BD00.json\""
]
},
{
"cell_type": "markdown",
"id": "1b70cca2",
"metadata": {},
"source": [
"### 1 band - DEM"
]
},
{
"cell_type": "code",
"execution_count": 86,
"id": "5a18a577",
"metadata": {
"scrolled": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{\n",
" \"bounds\": [\n",
" 7.090624928537461,\n",
" 45.91605844102821,\n",
" 7.1035698381384185,\n",
" 45.92509300025415\n",
" ],\n",
" \"minzoom\": 15,\n",
" \"maxzoom\": 18,\n",
" \"band_metadata\": [\n",
" [\n",
" \"b1\",\n",
" {\n",
" \"STATISTICS_COVARIANCES\": \"10685.98787505646\",\n",
" \"STATISTICS_EXCLUDEDVALUES\": \"-9999\",\n",
" \"STATISTICS_MAXIMUM\": \"2015.0944824219\",\n",
" \"STATISTICS_MEAN\": \"1754.471184271\",\n",
" \"STATISTICS_MINIMUM\": \"1615.8128662109\",\n",
" \"STATISTICS_SKIPFACTORX\": \"1\",\n",
" \"STATISTICS_SKIPFACTORY\": \"1\",\n",
" \"STATISTICS_STDDEV\": \"103.37305197708\"\n",
" }\n",
" ]\n",
" ],\n",
" \"band_descriptions\": [\n",
" [\n",
" \"b1\",\n",
" \"\"\n",
" ]\n",
" ],\n",
" \"dtype\": \"float32\",\n",
" \"nodata_type\": \"Nodata\",\n",
" \"colorinterp\": [\n",
" \"gray\"\n",
" ],\n",
" \"count\": 1,\n",
" \"overviews\": [\n",
" 2,\n",
" 4,\n",
" 8\n",
" ],\n",
" \"width\": 2000,\n",
" \"nodata_value\": -9999.0,\n",
" \"driver\": \"GTiff\",\n",
" \"height\": 2000\n",
"}\n"
]
}
],
"source": [
"r = httpx.get(\n",
" f\"{endpoint}/cog/info\",\n",
" params = {\n",
" \"url\": dem_path\n",
" }\n",
").json()\n",
"\n",
"print(json.dumps(r, indent=4))"
]
},
{
"cell_type": "code",
"execution_count": 87,
"id": "10b9880b",
"metadata": {
"scrolled": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'tilejson': '2.2.0', 'version': '1.0.0', 'scheme': 'xyz', 'tiles': ['https://titiler.xyz/cog/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?url=https%3A%2F%2Fdata.geo.admin.ch%2Fch.swisstopo.swissalti3d%2Fswissalti3d_2019_2573-1085%2Fswissalti3d_2019_2573-1085_0.5_2056_5728.tif'], 'minzoom': 15, 'maxzoom': 18, 'bounds': [7.090624928537461, 45.91605844102821, 7.1035698381384185, 45.92509300025415], 'center': [7.09709738333794, 45.92057572064118, 15]}\n"
]
},
{
"data": {
"text/html": [
"<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><span style=\"color:#565656\">Make this Notebook Trusted to load map: File -> Trust Notebook</span><iframe srcdoc=\"&lt;!DOCTYPE html&gt;\n",
"&lt;head&gt; \n",
" &lt;meta http-equiv=&quot;content-type&quot; content=&quot;text/html; charset=UTF-8&quot; /&gt;\n",
" \n",
" &lt;script&gt;\n",
" L_NO_TOUCH = false;\n",
" L_DISABLE_3D = false;\n",
" &lt;/script&gt;\n",
" \n",
" &lt;style&gt;html, body {width: 100%;height: 100%;margin: 0;padding: 0;}&lt;/style&gt;\n",
" &lt;style&gt;#map {position:absolute;top:0;bottom:0;right:0;left:0;}&lt;/style&gt;\n",
" &lt;script src=&quot;https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.js&quot;&gt;&lt;/script&gt;\n",
" &lt;script src=&quot;https://code.jquery.com/jquery-1.12.4.min.js&quot;&gt;&lt;/script&gt;\n",
" &lt;script src=&quot;https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js&quot;&gt;&lt;/script&gt;\n",
" &lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.js&quot;&gt;&lt;/script&gt;\n",
" &lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.css&quot;/&gt;\n",
" &lt;link rel=&quot;stylesheet&quot; href=&quot;https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css&quot;/&gt;\n",
" &lt;link rel=&quot;stylesheet&quot; href=&quot;https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css&quot;/&gt;\n",
" &lt;link rel=&quot;stylesheet&quot; href=&quot;https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css&quot;/&gt;\n",
" &lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.css&quot;/&gt;\n",
" &lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdn.jsdelivr.net/gh/python-visualization/folium/folium/templates/leaflet.awesome.rotate.min.css&quot;/&gt;\n",
" \n",
" &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width,\n",
" initial-scale=1.0, maximum-scale=1.0, user-scalable=no&quot; /&gt;\n",
" &lt;style&gt;\n",
" #map_91b32c14d9432bab7dce1821e755b0c7 {\n",
" position: relative;\n",
" width: 100.0%;\n",
" height: 100.0%;\n",
" left: 0.0%;\n",
" top: 0.0%;\n",
" }\n",
" &lt;/style&gt;\n",
" \n",
"&lt;/head&gt;\n",
"&lt;body&gt; \n",
" \n",
" &lt;div class=&quot;folium-map&quot; id=&quot;map_91b32c14d9432bab7dce1821e755b0c7&quot; &gt;&lt;/div&gt;\n",
" \n",
"&lt;/body&gt;\n",
"&lt;script&gt; \n",
" \n",
" var map_91b32c14d9432bab7dce1821e755b0c7 = L.map(\n",
" &quot;map_91b32c14d9432bab7dce1821e755b0c7&quot;,\n",
" {\n",
" center: [45.92057572064118, 7.09709738333794],\n",
" crs: L.CRS.EPSG3857,\n",
" zoom: 15,\n",
" zoomControl: true,\n",
" preferCanvas: false,\n",
" }\n",
" );\n",
"\n",
" \n",
"\n",
" \n",
" \n",
" var tile_layer_28ab990eb32ae444223d34fe250d947e = L.tileLayer(\n",
" &quot;https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png&quot;,\n",
" {&quot;attribution&quot;: &quot;Data by \\u0026copy; \\u003ca href=\\&quot;http://openstreetmap.org\\&quot;\\u003eOpenStreetMap\\u003c/a\\u003e, under \\u003ca href=\\&quot;http://www.openstreetmap.org/copyright\\&quot;\\u003eODbL\\u003c/a\\u003e.&quot;, &quot;detectRetina&quot;: false, &quot;maxNativeZoom&quot;: 18, &quot;maxZoom&quot;: 18, &quot;minZoom&quot;: 0, &quot;noWrap&quot;: false, &quot;opacity&quot;: 1, &quot;subdomains&quot;: &quot;abc&quot;, &quot;tms&quot;: false}\n",
" ).addTo(map_91b32c14d9432bab7dce1821e755b0c7);\n",
" \n",
" \n",
" var tile_layer_a2446a04a5d0c1059da0efc4b2ae5a28 = L.tileLayer(\n",
" &quot;https://titiler.xyz/cog/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?url=https%3A%2F%2Fdata.geo.admin.ch%2Fch.swisstopo.swissalti3d%2Fswissalti3d_2019_2573-1085%2Fswissalti3d_2019_2573-1085_0.5_2056_5728.tif&quot;,\n",
" {&quot;attribution&quot;: &quot;swisstopo&quot;, &quot;detectRetina&quot;: false, &quot;maxNativeZoom&quot;: 18, &quot;maxZoom&quot;: 18, &quot;minZoom&quot;: 0, &quot;noWrap&quot;: false, &quot;opacity&quot;: 1, &quot;subdomains&quot;: &quot;abc&quot;, &quot;tms&quot;: false}\n",
" ).addTo(map_91b32c14d9432bab7dce1821e755b0c7);\n",
" \n",
"&lt;/script&gt;\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x169ab1130>"
]
},
"execution_count": 87,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"r = httpx.get(\n",
" f\"{endpoint}/cog/tilejson.json\",\n",
" params = {\n",
" \"url\": dem_path,\n",
"\n",
" }\n",
").json()\n",
"print(r)\n",
"\n",
"\n",
"m = Map(\n",
" location=(r[\"center\"][1], r[\"center\"][0]),\n",
" zoom_start=r[\"minzoom\"]\n",
")\n",
"\n",
"aod_layer = TileLayer(\n",
" tiles=r[\"tiles\"][0],\n",
" opacity=1,\n",
" attr=\"swisstopo\"\n",
")\n",
"aod_layer.add_to(m)\n",
"m"
]
},
{
"cell_type": "code",
"execution_count": 90,
"id": "2edb577f",
"metadata": {
"scrolled": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'tilejson': '2.2.0', 'version': '1.0.0', 'scheme': 'xyz', 'tiles': ['https://titiler.xyz/cog/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?url=https%3A%2F%2Fdata.geo.admin.ch%2Fch.swisstopo.swissalti3d%2Fswissalti3d_2019_2573-1085%2Fswissalti3d_2019_2573-1085_0.5_2056_5728.tif&rescale=1600%2C2000&colormap_name=terrain'], 'minzoom': 15, 'maxzoom': 18, 'bounds': [7.090624928537461, 45.91605844102821, 7.1035698381384185, 45.92509300025415], 'center': [7.09709738333794, 45.92057572064118, 15]}\n"
]
},
{
"data": {
"text/html": [
"<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><span style=\"color:#565656\">Make this Notebook Trusted to load map: File -> Trust Notebook</span><iframe srcdoc=\"&lt;!DOCTYPE html&gt;\n",
"&lt;head&gt; \n",
" &lt;meta http-equiv=&quot;content-type&quot; content=&quot;text/html; charset=UTF-8&quot; /&gt;\n",
" \n",
" &lt;script&gt;\n",
" L_NO_TOUCH = false;\n",
" L_DISABLE_3D = false;\n",
" &lt;/script&gt;\n",
" \n",
" &lt;style&gt;html, body {width: 100%;height: 100%;margin: 0;padding: 0;}&lt;/style&gt;\n",
" &lt;style&gt;#map {position:absolute;top:0;bottom:0;right:0;left:0;}&lt;/style&gt;\n",
" &lt;script src=&quot;https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.js&quot;&gt;&lt;/script&gt;\n",
" &lt;script src=&quot;https://code.jquery.com/jquery-1.12.4.min.js&quot;&gt;&lt;/script&gt;\n",
" &lt;script src=&quot;https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js&quot;&gt;&lt;/script&gt;\n",
" &lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.js&quot;&gt;&lt;/script&gt;\n",
" &lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.css&quot;/&gt;\n",
" &lt;link rel=&quot;stylesheet&quot; href=&quot;https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css&quot;/&gt;\n",
" &lt;link rel=&quot;stylesheet&quot; href=&quot;https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css&quot;/&gt;\n",
" &lt;link rel=&quot;stylesheet&quot; href=&quot;https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css&quot;/&gt;\n",
" &lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.css&quot;/&gt;\n",
" &lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdn.jsdelivr.net/gh/python-visualization/folium/folium/templates/leaflet.awesome.rotate.min.css&quot;/&gt;\n",
" \n",
" &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width,\n",
" initial-scale=1.0, maximum-scale=1.0, user-scalable=no&quot; /&gt;\n",
" &lt;style&gt;\n",
" #map_8b1161a7efb7def7e617c7d5acace1fb {\n",
" position: relative;\n",
" width: 100.0%;\n",
" height: 100.0%;\n",
" left: 0.0%;\n",
" top: 0.0%;\n",
" }\n",
" &lt;/style&gt;\n",
" \n",
"&lt;/head&gt;\n",
"&lt;body&gt; \n",
" \n",
" &lt;div class=&quot;folium-map&quot; id=&quot;map_8b1161a7efb7def7e617c7d5acace1fb&quot; &gt;&lt;/div&gt;\n",
" \n",
"&lt;/body&gt;\n",
"&lt;script&gt; \n",
" \n",
" var map_8b1161a7efb7def7e617c7d5acace1fb = L.map(\n",
" &quot;map_8b1161a7efb7def7e617c7d5acace1fb&quot;,\n",
" {\n",
" center: [45.92057572064118, 7.09709738333794],\n",
" crs: L.CRS.EPSG3857,\n",
" zoom: 15,\n",
" zoomControl: true,\n",
" preferCanvas: false,\n",
" }\n",
" );\n",
"\n",
" \n",
"\n",
" \n",
" \n",
" var tile_layer_18e99e8cb6f7e588f27af6e1255145cd = L.tileLayer(\n",
" &quot;https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png&quot;,\n",
" {&quot;attribution&quot;: &quot;Data by \\u0026copy; \\u003ca href=\\&quot;http://openstreetmap.org\\&quot;\\u003eOpenStreetMap\\u003c/a\\u003e, under \\u003ca href=\\&quot;http://www.openstreetmap.org/copyright\\&quot;\\u003eODbL\\u003c/a\\u003e.&quot;, &quot;detectRetina&quot;: false, &quot;maxNativeZoom&quot;: 18, &quot;maxZoom&quot;: 18, &quot;minZoom&quot;: 0, &quot;noWrap&quot;: false, &quot;opacity&quot;: 1, &quot;subdomains&quot;: &quot;abc&quot;, &quot;tms&quot;: false}\n",
" ).addTo(map_8b1161a7efb7def7e617c7d5acace1fb);\n",
" \n",
" \n",
" var tile_layer_b32967dd064edf0d1e02d851c358b5bb = L.tileLayer(\n",
" &quot;https://titiler.xyz/cog/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?url=https%3A%2F%2Fdata.geo.admin.ch%2Fch.swisstopo.swissalti3d%2Fswissalti3d_2019_2573-1085%2Fswissalti3d_2019_2573-1085_0.5_2056_5728.tif\\u0026rescale=1600%2C2000\\u0026colormap_name=terrain&quot;,\n",
" {&quot;attribution&quot;: &quot;swisstopo&quot;, &quot;detectRetina&quot;: false, &quot;maxNativeZoom&quot;: 18, &quot;maxZoom&quot;: 18, &quot;minZoom&quot;: 0, &quot;noWrap&quot;: false, &quot;opacity&quot;: 1, &quot;subdomains&quot;: &quot;abc&quot;, &quot;tms&quot;: false}\n",
" ).addTo(map_8b1161a7efb7def7e617c7d5acace1fb);\n",
" \n",
"&lt;/script&gt;\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x146e2acd0>"
]
},
"execution_count": 90,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"r = httpx.get(\n",
" f\"{endpoint}/cog/tilejson.json\",\n",
" params = {\n",
" \"url\": dem_path,\n",
" \"rescale\": \"1600,2000\",\n",
" \"colormap_name\": \"terrain\"\n",
"\n",
" }\n",
").json()\n",
"print(r)\n",
"\n",
"\n",
"m = Map(\n",
" location=(r[\"center\"][1], r[\"center\"][0]),\n",
" zoom_start=r[\"minzoom\"]\n",
")\n",
"\n",
"aod_layer = TileLayer(\n",
" tiles=r[\"tiles\"][0],\n",
" opacity=1,\n",
" attr=\"swisstopo\"\n",
")\n",
"aod_layer.add_to(m)\n",
"m"
]
},
{
"cell_type": "code",
"execution_count": 47,
"id": "4ef27d49",
"metadata": {
"scrolled": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'tilejson': '2.2.0', 'version': '1.0.0', 'scheme': 'xyz', 'tiles': ['https://titiler.xyz/cog/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?url=https%3A%2F%2Fdata.geo.admin.ch%2Fch.swisstopo.swissalti3d%2Fswissalti3d_2019_2573-1085%2Fswissalti3d_2019_2573-1085_0.5_2056_5728.tif&algorithm=hillshade&buffer=3'], 'minzoom': 15, 'maxzoom': 18, 'bounds': [7.090624928537461, 45.91605844102821, 7.1035698381384185, 45.92509300025415], 'center': [7.09709738333794, 45.92057572064118, 15]}\n"
]
},
{
"data": {
"text/html": [
"<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><span style=\"color:#565656\">Make this Notebook Trusted to load map: File -> Trust Notebook</span><iframe srcdoc=\"&lt;!DOCTYPE html&gt;\n",
"&lt;head&gt; \n",
" &lt;meta http-equiv=&quot;content-type&quot; content=&quot;text/html; charset=UTF-8&quot; /&gt;\n",
" \n",
" &lt;script&gt;\n",
" L_NO_TOUCH = false;\n",
" L_DISABLE_3D = false;\n",
" &lt;/script&gt;\n",
" \n",
" &lt;style&gt;html, body {width: 100%;height: 100%;margin: 0;padding: 0;}&lt;/style&gt;\n",
" &lt;style&gt;#map {position:absolute;top:0;bottom:0;right:0;left:0;}&lt;/style&gt;\n",
" &lt;script src=&quot;https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.js&quot;&gt;&lt;/script&gt;\n",
" &lt;script src=&quot;https://code.jquery.com/jquery-1.12.4.min.js&quot;&gt;&lt;/script&gt;\n",
" &lt;script src=&quot;https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js&quot;&gt;&lt;/script&gt;\n",
" &lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.js&quot;&gt;&lt;/script&gt;\n",
" &lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.css&quot;/&gt;\n",
" &lt;link rel=&quot;stylesheet&quot; href=&quot;https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css&quot;/&gt;\n",
" &lt;link rel=&quot;stylesheet&quot; href=&quot;https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css&quot;/&gt;\n",
" &lt;link rel=&quot;stylesheet&quot; href=&quot;https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css&quot;/&gt;\n",
" &lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.css&quot;/&gt;\n",
" &lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdn.jsdelivr.net/gh/python-visualization/folium/folium/templates/leaflet.awesome.rotate.min.css&quot;/&gt;\n",
" \n",
" &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width,\n",
" initial-scale=1.0, maximum-scale=1.0, user-scalable=no&quot; /&gt;\n",
" &lt;style&gt;\n",
" #map_8bce5b56e7f5d81f20dd395a46b17f42 {\n",
" position: relative;\n",
" width: 100.0%;\n",
" height: 100.0%;\n",
" left: 0.0%;\n",
" top: 0.0%;\n",
" }\n",
" &lt;/style&gt;\n",
" \n",
"&lt;/head&gt;\n",
"&lt;body&gt; \n",
" \n",
" &lt;div class=&quot;folium-map&quot; id=&quot;map_8bce5b56e7f5d81f20dd395a46b17f42&quot; &gt;&lt;/div&gt;\n",
" \n",
"&lt;/body&gt;\n",
"&lt;script&gt; \n",
" \n",
" var map_8bce5b56e7f5d81f20dd395a46b17f42 = L.map(\n",
" &quot;map_8bce5b56e7f5d81f20dd395a46b17f42&quot;,\n",
" {\n",
" center: [45.92057572064118, 7.09709738333794],\n",
" crs: L.CRS.EPSG3857,\n",
" zoom: 15,\n",
" zoomControl: true,\n",
" preferCanvas: false,\n",
" }\n",
" );\n",
"\n",
" \n",
"\n",
" \n",
" \n",
" var tile_layer_c895cdc65aae9d26607905c72fd61ffb = L.tileLayer(\n",
" &quot;https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png&quot;,\n",
" {&quot;attribution&quot;: &quot;Data by \\u0026copy; \\u003ca href=\\&quot;http://openstreetmap.org\\&quot;\\u003eOpenStreetMap\\u003c/a\\u003e, under \\u003ca href=\\&quot;http://www.openstreetmap.org/copyright\\&quot;\\u003eODbL\\u003c/a\\u003e.&quot;, &quot;detectRetina&quot;: false, &quot;maxNativeZoom&quot;: 18, &quot;maxZoom&quot;: 18, &quot;minZoom&quot;: 0, &quot;noWrap&quot;: false, &quot;opacity&quot;: 1, &quot;subdomains&quot;: &quot;abc&quot;, &quot;tms&quot;: false}\n",
" ).addTo(map_8bce5b56e7f5d81f20dd395a46b17f42);\n",
" \n",
" \n",
" var tile_layer_13070a90554204e2209adb690be1fc4c = L.tileLayer(\n",
" &quot;https://titiler.xyz/cog/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?url=https%3A%2F%2Fdata.geo.admin.ch%2Fch.swisstopo.swissalti3d%2Fswissalti3d_2019_2573-1085%2Fswissalti3d_2019_2573-1085_0.5_2056_5728.tif\\u0026algorithm=hillshade\\u0026buffer=3&quot;,\n",
" {&quot;attribution&quot;: &quot;swisstopo&quot;, &quot;detectRetina&quot;: false, &quot;maxNativeZoom&quot;: 18, &quot;maxZoom&quot;: 18, &quot;minZoom&quot;: 0, &quot;noWrap&quot;: false, &quot;opacity&quot;: 1, &quot;subdomains&quot;: &quot;abc&quot;, &quot;tms&quot;: false}\n",
" ).addTo(map_8bce5b56e7f5d81f20dd395a46b17f42);\n",
" \n",
"&lt;/script&gt;\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x1699dfd00>"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"r = httpx.get(\n",
" f\"{endpoint}/cog/tilejson.json\",\n",
" params = {\n",
" \"url\": dem_path,\n",
" \"algorithm\": \"hillshade\",\n",
" \"buffer\": 3\n",
"\n",
" }\n",
").json()\n",
"print(r)\n",
"\n",
"\n",
"m = Map(\n",
" location=(r[\"center\"][1], r[\"center\"][0]),\n",
" zoom_start=r[\"minzoom\"]\n",
")\n",
"\n",
"aod_layer = TileLayer(\n",
" tiles=r[\"tiles\"][0],\n",
" opacity=1,\n",
" attr=\"swisstopo\"\n",
")\n",
"aod_layer.add_to(m)\n",
"m"
]
},
{
"cell_type": "markdown",
"id": "f78dff85",
"metadata": {},
"source": [
"### 3 bands - RGB + alpha"
]
},
{
"cell_type": "code",
"execution_count": 91,
"id": "adea3fd4",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{\n",
" \"bounds\": [\n",
" -70.0001,\n",
" 41.8499,\n",
" -69.9874,\n",
" 41.8626\n",
" ],\n",
" \"minzoom\": 15,\n",
" \"maxzoom\": 19,\n",
" \"band_metadata\": [\n",
" [\n",
" \"b1\",\n",
" {}\n",
" ],\n",
" [\n",
" \"b2\",\n",
" {}\n",
" ],\n",
" [\n",
" \"b3\",\n",
" {}\n",
" ],\n",
" [\n",
" \"b4\",\n",
" {}\n",
" ]\n",
" ],\n",
" \"band_descriptions\": [\n",
" [\n",
" \"b1\",\n",
" \"\"\n",
" ],\n",
" [\n",
" \"b2\",\n",
" \"\"\n",
" ],\n",
" [\n",
" \"b3\",\n",
" \"\"\n",
" ],\n",
" [\n",
" \"b4\",\n",
" \"\"\n",
" ]\n",
" ],\n",
" \"dtype\": \"uint8\",\n",
" \"nodata_type\": \"Alpha\",\n",
" \"colorinterp\": [\n",
" \"red\",\n",
" \"green\",\n",
" \"blue\",\n",
" \"alpha\"\n",
" ],\n",
" \"height\": 4707,\n",
" \"width\": 4707,\n",
" \"count\": 4,\n",
" \"driver\": \"GTiff\",\n",
" \"overviews\": [\n",
" 2,\n",
" 4,\n",
" 8,\n",
" 16\n",
" ]\n",
"}\n"
]
}
],
"source": [
"r = httpx.get(\n",
" f\"{endpoint}/cog/info\",\n",
" params = {\n",
" \"url\": rgba_path\n",
" }\n",
").json()\n",
"\n",
"print(json.dumps(r, indent=4))"
]
},
{
"cell_type": "code",
"execution_count": 92,
"id": "581f7ca9",
"metadata": {
"scrolled": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'tilejson': '2.2.0', 'version': '1.0.0', 'scheme': 'xyz', 'tiles': ['https://titiler.xyz/cog/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?url=https%3A%2F%2Fnoaa-eri-pds.s3.amazonaws.com%2F2022_Pre_Event%2FEC2201a_OB_N_RGB%2FEC2201a_OB_N_C0700000w415145n.tif'], 'minzoom': 15, 'maxzoom': 19, 'bounds': [-70.0001, 41.8499, -69.9874, 41.8626], 'center': [-69.99375, 41.85625, 15]}\n"
]
},
{
"data": {
"text/html": [
"<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><span style=\"color:#565656\">Make this Notebook Trusted to load map: File -> Trust Notebook</span><iframe srcdoc=\"&lt;!DOCTYPE html&gt;\n",
"&lt;head&gt; \n",
" &lt;meta http-equiv=&quot;content-type&quot; content=&quot;text/html; charset=UTF-8&quot; /&gt;\n",
" \n",
" &lt;script&gt;\n",
" L_NO_TOUCH = false;\n",
" L_DISABLE_3D = false;\n",
" &lt;/script&gt;\n",
" \n",
" &lt;style&gt;html, body {width: 100%;height: 100%;margin: 0;padding: 0;}&lt;/style&gt;\n",
" &lt;style&gt;#map {position:absolute;top:0;bottom:0;right:0;left:0;}&lt;/style&gt;\n",
" &lt;script src=&quot;https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.js&quot;&gt;&lt;/script&gt;\n",
" &lt;script src=&quot;https://code.jquery.com/jquery-1.12.4.min.js&quot;&gt;&lt;/script&gt;\n",
" &lt;script src=&quot;https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js&quot;&gt;&lt;/script&gt;\n",
" &lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.js&quot;&gt;&lt;/script&gt;\n",
" &lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.css&quot;/&gt;\n",
" &lt;link rel=&quot;stylesheet&quot; href=&quot;https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css&quot;/&gt;\n",
" &lt;link rel=&quot;stylesheet&quot; href=&quot;https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css&quot;/&gt;\n",
" &lt;link rel=&quot;stylesheet&quot; href=&quot;https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css&quot;/&gt;\n",
" &lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.css&quot;/&gt;\n",
" &lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdn.jsdelivr.net/gh/python-visualization/folium/folium/templates/leaflet.awesome.rotate.min.css&quot;/&gt;\n",
" \n",
" &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width,\n",
" initial-scale=1.0, maximum-scale=1.0, user-scalable=no&quot; /&gt;\n",
" &lt;style&gt;\n",
" #map_3465a2d235de13ca0269af6e9468c4ea {\n",
" position: relative;\n",
" width: 100.0%;\n",
" height: 100.0%;\n",
" left: 0.0%;\n",
" top: 0.0%;\n",
" }\n",
" &lt;/style&gt;\n",
" \n",
"&lt;/head&gt;\n",
"&lt;body&gt; \n",
" \n",
" &lt;div class=&quot;folium-map&quot; id=&quot;map_3465a2d235de13ca0269af6e9468c4ea&quot; &gt;&lt;/div&gt;\n",
" \n",
"&lt;/body&gt;\n",
"&lt;script&gt; \n",
" \n",
" var map_3465a2d235de13ca0269af6e9468c4ea = L.map(\n",
" &quot;map_3465a2d235de13ca0269af6e9468c4ea&quot;,\n",
" {\n",
" center: [41.85625, -69.99375],\n",
" crs: L.CRS.EPSG3857,\n",
" zoom: 15,\n",
" zoomControl: true,\n",
" preferCanvas: false,\n",
" }\n",
" );\n",
"\n",
" \n",
"\n",
" \n",
" \n",
" var tile_layer_1d437a2ae20a39ee593a91068cadb085 = L.tileLayer(\n",
" &quot;https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png&quot;,\n",
" {&quot;attribution&quot;: &quot;Data by \\u0026copy; \\u003ca href=\\&quot;http://openstreetmap.org\\&quot;\\u003eOpenStreetMap\\u003c/a\\u003e, under \\u003ca href=\\&quot;http://www.openstreetmap.org/copyright\\&quot;\\u003eODbL\\u003c/a\\u003e.&quot;, &quot;detectRetina&quot;: false, &quot;maxNativeZoom&quot;: 18, &quot;maxZoom&quot;: 18, &quot;minZoom&quot;: 0, &quot;noWrap&quot;: false, &quot;opacity&quot;: 1, &quot;subdomains&quot;: &quot;abc&quot;, &quot;tms&quot;: false}\n",
" ).addTo(map_3465a2d235de13ca0269af6e9468c4ea);\n",
" \n",
" \n",
" var tile_layer_cabe151285704c1c85f8f1ef10de3bce = L.tileLayer(\n",
" &quot;https://titiler.xyz/cog/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?url=https%3A%2F%2Fnoaa-eri-pds.s3.amazonaws.com%2F2022_Pre_Event%2FEC2201a_OB_N_RGB%2FEC2201a_OB_N_C0700000w415145n.tif&quot;,\n",
" {&quot;attribution&quot;: &quot;noaa-eri&quot;, &quot;detectRetina&quot;: false, &quot;maxNativeZoom&quot;: 18, &quot;maxZoom&quot;: 18, &quot;minZoom&quot;: 0, &quot;noWrap&quot;: false, &quot;opacity&quot;: 1, &quot;subdomains&quot;: &quot;abc&quot;, &quot;tms&quot;: false}\n",
" ).addTo(map_3465a2d235de13ca0269af6e9468c4ea);\n",
" \n",
"&lt;/script&gt;\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x169ae3430>"
]
},
"execution_count": 92,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"r = httpx.get(\n",
" f\"{endpoint}/cog/tilejson.json\",\n",
" params = {\n",
" \"url\": rgba_path,\n",
" }\n",
").json()\n",
"print(r)\n",
"\n",
"m = Map(\n",
" location=(r[\"center\"][1], r[\"center\"][0]),\n",
" zoom_start=r[\"minzoom\"]\n",
")\n",
"\n",
"aod_layer = TileLayer(\n",
" tiles=r[\"tiles\"][0],\n",
" opacity=1,\n",
" attr=\"noaa-eri\"\n",
")\n",
"aod_layer.add_to(m)\n",
"m"
]
},
{
"cell_type": "code",
"execution_count": 93,
"id": "8da499f0",
"metadata": {
"scrolled": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'b1': {'min': 3.0, 'max': 255.0, 'mean': 44.28088569641113, 'count': 1048576.0, 'sum': 46431874.0, 'std': 21.478155410455006, 'median': 41.0, 'majority': 35.0, 'minority': 219.0, 'unique': 233.0, 'histogram': [[218960.0, 576316.0, 183104.0, 47153.0, 15985.0, 4491.0, 1574.0, 861.0, 124.0, 8.0], [3.0, 28.2, 53.4, 78.6, 103.8, 129.0, 154.2, 179.4, 204.6, 229.79999999999998, 255.0]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 1048576.0, 'percentile_2': 14.0, 'percentile_98': 106.0}, 'b2': {'min': 5.0, 'max': 255.0, 'mean': 41.057403564453125, 'count': 1048576.0, 'sum': 43051808.0, 'std': 19.3989667942912, 'median': 38.0, 'majority': 35.0, 'minority': 215.0, 'unique': 230.0, 'histogram': [[274549.0, 608506.0, 116047.0, 35931.0, 8780.0, 2625.0, 1426.0, 598.0, 107.0, 7.0], [5.0, 30.0, 55.0, 80.0, 105.0, 130.0, 155.0, 180.0, 205.0, 230.0, 255.0]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 1048576.0, 'percentile_2': 14.0, 'percentile_98': 96.0}, 'b3': {'min': 10.0, 'max': 255.0, 'mean': 42.29008197784424, 'count': 1048576.0, 'sum': 44344365.0, 'std': 17.5350391527862, 'median': 39.0, 'majority': 37.0, 'minority': 222.0, 'unique': 223.0, 'histogram': [[361241.0, 562177.0, 91637.0, 22847.0, 6694.0, 2130.0, 1435.0, 310.0, 99.0, 6.0], [10.0, 34.5, 59.0, 83.5, 108.0, 132.5, 157.0, 181.5, 206.0, 230.5, 255.0]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 1048576.0, 'percentile_2': 20.0, 'percentile_98': 92.0}}\n"
]
},
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x1466908b0>]"
]
},
"execution_count": 93,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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Cn3rW98y/b1vf/vbKisr05NPPqnHH388evzYsWP6/ve/L0m69dZbTWumTZumGTNm6NixY/rBD34QPd7W1qbrr79ewWBQN910kzye2AWqoKBAN954oyTphhtuiO5llaQVK1Zo165dmjVrlqZOnWr6rES+U7YwjtcpcDlVVNDzCItyQxBb18KYHQA9MwexiWdi6RwKoCeRSKTfmVjjPOp6HpQBGcGS7sT79+/X4sWLdeaZZ+rCCy9URUWFqqur9frrr8vv92vChAn67//+b9OauXPn6uabb9bKlSt1wQUX6Atf+IICgYCeffZZRSIRrV69WhUVFaY1lZWVWrVqla655hotXLhQs2fPVlVVlTZu3Ki6ujotXbpUs2fP7nR+q1ev1vTp07Vy5Uo9//zzOu+88/Taa6/pvffe08UXX6wf/vCHndbcfvvt2rhxo7Zs2aKxY8dq5syZqq6u1tatWzVw4ECtWrWq05pEvlO2MN5gVhR55HA4eni3ubnTKfbEAuhFMpnYUjKxAProRGNALcFY0mVkFXtigWxkSSb2M5/5jP73//7fGjp0qF577TX94Q9/0J49e3TBBRdo+fLleu211zRo0KBO6+677z6tXr1a5557rp599lm98sormjt3rjZt2qQrrriiy8+6+uqrtWnTJn3pS1/Szp079cwzz2jMmDFas2aNli9f3uWasWPHaufOnVq0aJGOHz+uJ554Qk6nU3fccYeee+45eb2db5h8Pp9eeOEF3XHHHSoqKtK6detUXV2tRYsWaceOHTr77LO7/KxEvlM2MM6I7ampUwdzJpYgFkDPTiaRiS2msROAPjKO16ko8pjG53TH1AGdffdARrAkE3vuuefqP/7jPxJau2jRIi1atKhfa2bMmKE//elP/VozYsQIrV69ul9rCgsLtWzZsk4zcHuTyHfKdHV9nBEbe08s0KWxE4De1LInFkAK9LeUWIpv7MQ1BsgEKelOjOxnzMT21tRJMjd2opwYQG+S2RNbyp5YAH106GT/xutIncuJI5GI5ecFoH8IYtEn5kxs70GsaU8smVgAvahpJhMLwH6JZGKN++7bwhH5g2HLzwtA/xDEok9q+jnDsZwgFkAftYXCpjFelX14UGZkLPVrChDEAuhef8frSOY9sRL7YoFMQBCLPqGxEwC7xF8jKkv6GcSSiQXQR4lkYn0ep1zO2FQG9sUC6UcQiz7pdzlxEZlYAH1jrPQocDtV3Msc6njsiQXQF/5gSJ/U+6Ov+xrEOhwOxuwAGYYgFn1S25xEOXFzkCYIALplaupUVNDrHOp4Jd7Y9YabSwDdOVwba+rkdjo0pNzX57WldCgGMgpBLPrEuF+tL5nYckOgGwiFaYIAoFvmzsT9KyWWzHtiW4IhtYW43gDozDgjdtiAQrldfb8NNj4sa/BTYQakG0EsehUOR5LKxEpSXUugm3cCyHdJB7Fe88jzptZQ0ucEIPccOtn//bAd2LYAZBaCWPSqwd+msKEauC83mV63S4We2L429sUC6I7VQSydQwF05VBN/2fEdjCO2aGcGEg/glj0ypiFdTqkMl/vmVgprkNxMzeVALqWbBDrcjpUZGgG1UiWBEAXEulM3IHGTkBmIYhFr4xBbHmhR05n35qu0KEYQF8kG8RKjNkB0LtEZsR2KDE1duKeBkg3glj0yphFHdCHpk4dygoJYgH0zrTn3oIglv1qAOJFIpEkM7GGLuhcY4C0I4hFr2pNM2L7VkosdR6zAwBdOdkYu8ZUJRrEUuoHoAcnGgNqCcaavvV7TywjdoCMQhCLXhlL/fqTia0gEwugDxK9xhiZyonJkgCIY8zCVhR5Ok1R6I2xsVM95cRA2hHEolemcuJ+ZElMjZ0YsQOgC5FIRDWGao+qEvbEArCecUZsf0uJJcqJgUxDEIte9XdGbAdzYycu+AA6awqEFGgLR18nnIn1kYkF0L1DJxMfryPF7bvnQRmQdgSx6JUxE1vRjxtM84gdMrEAOqttMl8b+vOgzKiUcmIAPUimqZPEiB0g0xDEolfmTGw/gljDe+vZEwugCyebzCO83K7E/rNEYycAPUlmvI7EiB0g0xDEolfmpiuJdSeuI4gF0AVjJjbRzsSSVOJlvxqA7iWbiS0z7IltCoQUCkcsOS8AiSGIRa8SbexEd2IAvTFmYiuTCWJ9zIkF0DV/MKRP6v3R18mWE0s8LAPSjSAWvUq4nNgQxNa3BBXmqSWAOMZMbH8eksUz7Yml1A+AweHaWFMnt9OhIeW+fv+NYq85iKWkGEgvglj0qCUQUqupc2hi5cThCNkRAJ2dtKycmMZOALpm3A87bEBhQnvvPS6nCj2u6GuuM0B6EcSiR7VxXYX70524LG6QOM2dAMSzKhNLYycA3ak+mdyM2A7m5k5cZ4B0IohFj4xNnYoLXCpw9/0fGZfTYdpDYtxbCwCSPZlYqj4AGB2qSW5GbAfG7ACZgyAWPUq0qVOHiiKaOwHoXqJ77uPFlxNHIuzBB9Au2c7EHYx77+vZEwukFUEsepTsDaZ5zE6gh3cCyEfGao/KEmvKiSMRqTkQSuq8AOSOZGfEdij1McoLyBQEsehRnSGIrehHU6fomsLYTSmZWADxTja2Rn+utCgTK3GDCaBdJBKxLhPLnlggYxDEoke1xnLiZDOx7IkFYBAMhVVvuBFMZk6s1+2Ux+WIvuYGE4AknWgMqCUYq8xIZk+sae895cRAWhHEokfGUr/+jNfpUBY3KxYAOsR3P08miHU4HKYbzCYysQBk3g9bXugxPVzvL1M5MQ/KgLQiiEWPzOXENHYCYJ3aptg1wet2qqjA1cO7e2cas0MQC0Dm/bCjqhLPwkqM2AEyCUEsemQsJ04kS0I5MYDunGwy7IctLpDD4ejh3b0r8cauN9xgApCk6pOxIDaZUmJJKvMxygvIFASx6FHyjZ3IxALomjETm0wpcYdSL5lYAGZWNXWS2BMLZBKCWPTI0sZOBLEADGriMrHJMpUTc4MJQNaN15EYsQNkEoJY9CjpObFFNHYC0LUaizOxJWRiAcSxMhPLiB0gcxDEolvBUNh0kU6knNi8JzbQwzsB5Bs7M7HsVwPgD4b0Sb0/+jrpcmKCWCBjEMSiW/GNmBK5yTR2NG4KhBQMhZM+LwC5ocbYOC6BSo94pj2x3GACee9wbUv0Z5fToSHlvqT+XpmPawyQKQhi0S1j5rTAldj4i/h5bJQUA+hgysSWUE4MwFrG/bDDKgrldiV322vsgB4IheUPhpL6ewASRxCLbhmbOlUUeRIaf1Fc4JLLGVtHcycAHUx7Yi3IxBaTiQVgUH2yKfpzsjNiJfOeWImHZUA6EcSiW8k2dZIkh8PBmB0AXWJPLAA7HaqJlRMnOyNWkooKXDI8l2dfLJBGBLHoVm1TcjNiOxhLik81E8QCkCKRiGoM1xjL58RycwnkPSs7E0vtD+ZLuM4AGYEgFt0ylhMnc4NpHLNDJhaA1F6GFwxFoq8tnxNLJhbIe1bOiO1gnBXbwDxqIG0IYtEtY2OniiT2qzFmB0A8YxbW4UjuGtPBmCFpIogF8lokErE8EyuZ98XWk4kF0oYgFt0y74lNvJzYvCeWCz4AcxBbUegxNYBLVCl7YgGcdqIxoBZD92Ar9sRK5usMFR9A+hDEolvGcuJEGztJcZnYFjKxAMxB7AALSomluPEXbWG1tjH+AshXxixseaGn08i/RBkrPignBtKHIBbdsqWxE3tiAcgcxFZZFcTGjb9oaiWIBfKVHfthJfOeWBo7AelDEItuGcuJk2vsFFtbTxALQHGZWAv2w0pSkccl4zhrbjCB/FV90hDEWjAjtgPbFoDMQBCLbtUZyomta+xEEAtAqjE8JKsqsSaIdTodKikw3mByvQHylR1NnaS4edQ8KAPShiAWXYpEIqprMe6JtaqxEzeVAKSaRmtnxHYwjdnhBhPIW3aVE5cxYgfICASx6FK9v02hcGyGY1KNnYqMjZ244AOI735uYRDrpXMoABszsV4ysUAmIIhFl2rjZjiWJdHVLz4TG4lEeng3gHxwssn6cmIpLhNLEAvkJX8wpE/q/dHX1jZ24hoDZAKCWHTJmCUpT3KGo3FPbKAtLH8wnNS5Ach+tTY0dpLIkgCQDte2RH92OR0aUu6z7G8zYgfIDASx6JKxAVNlkjeY8Vlc9sUCMGVii72W/V3KiQEY98MOqyiU22Xd7S4jdoDMQBCLLhkzscnMiJUkn8clnyf2j1pdS6CHdwPIdYG2sClLOqA4uWuMkSmI5QYTyEt27YeV4kbscI0B0oYgFl2qbTZ2Jk6+1M9YUnyKMTtAXqtrNj/IsjQTy341IO/ZNSNWitsTG2hTOEyfDyAdCGLRpTpTJjb5ILaiMPY3KCcG8puxlNjncaqwwGXZ3y5lTyyQ9+zNxMYeykciUlOA6wyQDgSx6FKNqelK8qV+xkwsY3aA/FZr035YyZyJbSITC+Qlu2bESuYtCxIPy4B0IYhFl4yNnQYUW1BObAiE6wligbxmzMRauR9Wkkq8hqYrBLFA3olEIrZmYgvcTnndsdtnrjNAehDEokvGxk5W74mtY08skNeM15dKGzOxDdxcAnnnRGNALcFQ9PUIi4NYKb65E/c0QDoQxKJL5sZOyWdKKoyNncjEAnntZKMhiLXg+mJUaupOzLUGyDfGLGx5ocf0EN0qxn2xlBMD6UEQiy5Z3diJPbEAOqQqE0uZH5B/7NwP24ExO0D6EcSiSzUW71kzzpolEwvkN+Oe2ErL98QyJxbIZ3buh+1gus7wsAxIC4JYdNISCKm1LRx9XWlBJrbMNCc20MM7AeS62iYbM7GGm8umQEghZjgCecXOGbEd2BMLpB9BLDqpjQsyrS4nJhML5LcaUxCb/PXFyHhzKTHDEcg3qSgnNnZBp5wYSA+CWHRiDGKLC1wqcCf/j4kxECaIBfKbnUFscdwMR0qKgfySinJi9sQC6UcQi06MI3CsyMJKnTOxYUr8gLwUiUTiGjtZG8R6XMxwBPKVPxjSJ/X+6GuCWCB3EcSiE6ubOknmETvhiNRIiR+Qlxpa2xQMxR5iWR3EStxgAvnqcG1L9GeX06Eh5T5bPqfU1AWd6jIgHQhi0YlxvM4AizKxZXFz2k41c9EH8lGNYUas0yFbZjjSORTIT8b9sMMqCuV22XOby5xYIP0IYtFJrSHAtCqIdTkdpieX7IsF8pNxvE5FUYFcTofln2GaFcsNJpA3UrEfVuJBGZAJCGLRSa0pE2tdlsSYcakjEwvkpVobmzp1MI3Z4QYTyBvGIHaEjUEsWxaA9COIRSd2NHaSGLMDIK4zsYXXFyPT+AuCWCBvGGfEjrJpRqzEnFggExDEohNTYycLM7EVhr9V1xLo4Z0AclWNjZ2JO5RSTgzkpVTMiJXYEwtkAoJYdGJq7GThTSaZWADm7uf2lxPTORTID5FIJC17Ylvbwgq0hW37LABdI4hFJ3Y0dpKk8sLY3yKIBfKTMYitsiuI9dF0Bcg3JxoDagmGoq9TtSdW4joDpANBLDqptWHEjhSXiaWxE5CXUp2JpdQPyA/GLGx5oceW8V0digvcchgaq7MvFkg9gliYtIXCppu+Cpv2xJKJBfJTKjKxpWRigbyTqv2wkuR0OlRSwMMyIJ0IYmFSFxdc2rUnlhE7QH5K+Z5Ybi6BvJCq/bAdGLMDpBdBLEyMMxw9LoeKC1yW/e0KGjsBea82FXtivWRigXxjHK9j537YDiWM2QHSiiAWJvFNnRzGTR9JojsxkN9a20Kmua12jdhhTyyQf4zlxHbOiO1gHLPDwzIg9QhiYWJXUydJKiOIBfJa/DYC24JY9sQCeSfV5cQ8LAPSy5Yg9uTJkxo0aJAcDofGjBnT43vXrFmjadOmqaSkRJWVlZo3b562bNnS45rNmzdr3rx5qqysVElJiaZNm6aHH364xzWHDx/W4sWLNXToUPl8Po0bN0533nmn/H5/t2taWlr04x//WOPGjZPP59PQoUO1ZMkSHTlyxPLvlCmMM2KtbOoU//caW9sUDDFXDcgnJxtj15eiApd8Huu2KxjFlxNHIhFbPgdAZvAHQ/qkPnY/l+o9sTwsA1LPliD21ltv1YkTJ3p93y233KLFixdrz549mjt3rqZNm6Znn31Wl1xyidatW9flmscee0yzZs3Shg0bNGnSJF166aU6cOCArr32Wt12221drnn33Xc1ZcoUrVmzRlVVVVqwYIFCoZCWLVumuXPnqrW1tdMav9+vOXPm6K677lJjY6MWLFigESNGaPXq1ZoyZYree+89y75TJrFrRqykTu3u68nGAnnF1NTJ4uuLkTETGwpH5A/ywAzIZYdrW6I/u5wODSn32f6ZxnLievbEAilneRD73HPP6de//rW+853v9Pi+jRs3auXKlaqqqtKbb76pdevWacOGDdq0aZNcLpcWL16suro605qamhotWbJEoVBIa9eu1Ysvvqi1a9fqnXfe0ZgxY7R8+XK9+OKLnT5r0aJFOnHihG666Sbt3r1bjzzyiPbt26crr7xSmzdv1j333NNpzd13361XX31V06dP1/79+/XII49o69atWr58uY4fP64lS5ZY8p0yTa2pc6i1mdgSr1suZ2yPLSXFQH6pMVR6VJXYF8SWes3XLrIkQG4z7ocdVlEot8v+3XKmTCzlxEDKWfpveUtLi/7xH/9R5513XrdZ0Q4rVqyQJN1+++0aO3Zs9Pj06dN13XXXqa6uTg899JBpza9+9SvV19drwYIFuuqqq6LHBw8erJ/97GeSpOXLl5vWbNu2TZs3b9agQYOi75Ekt9utX/ziF/J4PLr//vvV1ha7AAUCAT3wwAOSpAcffFAlJSXR3y1dulSTJk3SSy+9pNdffz3p75Rp7NwT63A4zGN2CGKBvFLTGKt6sTMT6/M4TQ/MCGKB3Jbq/bCSVMqeWCCtLA1i//mf/1nvvfee/vM//1MeT/dZvJaWFj3//POSpIULF3b6fcex9evXm44//fTT3a6ZP3++fD6fNm7caNrn2rHmsssuk9frNa0ZPHiwZs6cqdraWv31r3+NHt+8ebNOnTql0aNHa8qUKX06v0S/U6axs5xYYswOkM9qDNcXu8brSO0PzJgVC+QPYxCbivE6EiN2gHSzLIjdtWuXli9frsWLF2vmzJk9vnffvn1qbW3VwIEDNXz48E6/v/DCC6N/0+jNN980/d6ooKBAEydOlN/v1/79+/u0prvPSmRNot8p09jZ2EmK61DczEUfyCc1TYZMrI1BrBTXObSVaw2Qy4wzYlOWiWXEDpBW7t7f0rtwOKxvf/vbqqioMJXsdufQoUOS1GWwJ0nFxcWqqKhQbW2tGhoaVFpaqvr6ep06darHdcOHD9f27dtVXV2tSZMm9emzOo5XV1f3+fwSWdPVd+rJhAkTujx+8OBBjR49use1ybA9E1tEJhbINKm63tQ2xf6dt2u8Tgf2qwGZx65rTapnxEqM2AHSzZJM7L//+7/rtdde07333quqqqpe39/Y2ChJKirq/kJTXFwsSWpoaDCt6Wld/Jq+fFaq1nS3LtPY2dhJMncojp8ZCSC3nTRkYu0OYuPH7ADITZFIJC17Yst8BLFAOiWdiT106JBuv/12zZo1S4sWLbLglCBJe/fu7fJ4d08xrRCJREzNlipsyMSWsycWyDiput6kMhNbwgxHIOPYca050RhQSzAUfZ2qPbHGcmL2xAKpl3Qm9oYbblAgENB//ud/9nlNR7ff5ubmbt/T1NQkSdGyW2OH4O7Wxa/py2elak136zJJvb9NoXAk+rqSxk4ALHTSUOmRykwsWRIgdxmzsOWFnk4z6e0S/6AsEon08G4AVks6E/vUU0+poqJC1113nel4R4fgI0eOaPbs2ZKk3//+9zrzzDM1cuRISdLhw4e7/JtNTU2qq6vTgAEDogFfWVmZysvLderUKR0+fFjnnXdep3Udf2/UqFHRYyNHjtTOnTu7/azu1vR0foms6eo7ZRpjUyeHw9yEySqmxk4tgR7eCSCXRCIR0wivlO6JJRML5KwP01BKLJmvMeGI1BwIqdhrSasZAH1gyb9tdXV1eumll7r8nd/vj/6uI7AdP368vF6vjh8/riNHjmjYsGGmNTt27JCkaHOmDpMnT9amTZu0Y8eOTkFsMBjUnj175PP5NG7cONOaJ598Mvo343X1WZMnTzb9ri9rEv1OmcTY1Km80GOas2gVY4kymVggf9S3mCs97ByxI0nFBTR2AvJBOvbDSuZqD6m94oMgFkidpMuJI5FIl//3/vvvS5JGjx4dPXbWWWdJkgoLCzVnzhxJ0qOPPtrpb65du1ZS+2xXo/nz55t+b/TUU0/J7/dr7ty58vl8ndasX79era2tpjVHjx7Vyy+/rAEDBmjGjBnR4zNmzFB5ebkOHjyoN954o0/nl+h3yiTGLIkdnYklGjsB+arGcH1xOR0q89lb8seeWCA/pGNGrCT5PC4VuGK30Y2M8gJSyrI5sf21dOlSSdLdd9+tAwcORI+/8sor+uUvf6mKigp961vfMq359re/rbKyMj355JN6/PHHo8ePHTum73//+5KkW2+91bRm2rRpmjFjho4dO6Yf/OAH0eNtbW26/vrrFQwGddNNN8njid1QFRQU6MYbb5TUvue3Yy+rJK1YsUK7du3SrFmzNHXq1KS/UyYxdia2Y0Zs/N8lEwvkD9OM2CKPnDZUehixJxbID4fSMCO2g7GkuJ7rDJBSaat7mDt3rm6++WatXLlSF1xwgb7whS8oEAjo2WefVSQS0erVq1VRUWFaU1lZqVWrVumaa67RwoULNXv2bFVVVWnjxo2qq6vT0qVLo/tvjVavXq3p06dr5cqVev7553Xeeefptdde03vvvaeLL75YP/zhDzutuf3227Vx40Zt2bJFY8eO1cyZM1VdXa2tW7dq4MCBWrVqlSXfKZMYy4ntaOokxWViCWKBvHGy0f5KDyPznliuNUCuOpSGGbEdSnzuaMM6ti0AqZW2TKwk3XfffVq9erXOPfdcPfvss3rllVc0d+5cbdq0SVdccUWXa66++mpt2rRJX/rSl7Rz504988wzGjNmjNasWaPly5d3uWbs2LHauXOnFi1apOPHj+uJJ56Q0+nUHXfcoeeee05er7fTGp/PpxdeeEF33HGHioqKtG7dOlVXV2vRokXasWOHzj77bMu+U6YwNnayY7yOZA5iA21h+Q1t8QHkrlQ2dZKkEm/sWtPUynUGyEX+YEif1Pujr9OZiaXiA0gt2zKxZ511Vp/ajS9atKjf82VnzJihP/3pT/1aM2LECK1evbpfawoLC7Vs2TItW7asX+sS+U6ZwLwn1p5y4vjW93XNQZ1Z7rLlswBkjlSO15HYEwvkg8O1LdGfXU6HhpT7eni39YzbFqj4AFIrrZlYZBZjOfEAm24yfR6XvO7YP3bsiwXyQ22qg1j2xAI5zzheZ1hFodyu1N7Wlhoa1HGdAVKLIBZRqWjsFP+3CWKB/JDqTCx7YoHcl67xOh1KvTR2AtKFIBZRqWjsJMWP2Qn08E4AuSKdmVh/MKxgKGz7ZwJIrXSN1+lgelhGEAukFEEsolLR2EmSKgpjf5tMLJAfatK4J1aSmtgXC+SctGdiTeXE3M8AqUQQiyhTY6di+8qJywopJwbyTU2KuxMXF5iDWParAbknnTNiJRrIAelEEAtJUksgJH8wVm5n5xxH9sQC+acmxXNiXU6Higtinc+5wQRySyQSSeuMWIkRO0A6EcRCkjkLK9nb2Mm8J5YgFsh1/mBITYHYrNaqEvuDWIksCZDLTjQG1GKYNZ+OPbGmLuhcY4CUIoiFJHMQW1zgktdt3+zWcsqJgbwS/5AsFZlYSSr20nQFyFXGLGx5oafTHPpUKGNPLJA2BLGQZM6I2tnUqf3vGzKxBLFAzjM2dSoucMnnse8hmVEpWRIgZ32Y5qZOkrnag3JiILUIYiEpdU2dJDKxQL4xdSZOUSmxFFdOzA0mkFPS3ZlYYsQOkE4EsZBknhFrd6mfMYitJ4gFcp4piE1RKbFk3q/W2Mq1Bsgl6Z4RK5lH7LQEQ8yjBlKIIBaSpNqm1MyIleIbOwV6eCeAXJDqGbEdSryxaw1ZEiC3pHu8jmR+UCYxjxpIJYJYSIorJ7axM7FkDpJPtQQVDkds/TwA6WUMYgekMIg1lfq1hnp4J4BskwnlxPFBLPtigdQhiIUkc2OnVJYThyNSY4CLPpDLjEFsVUozsZQTA7nIHwzpk3p/9HU6ZsRKnedR19OhGEgZglhISm0mtsxnfnJ5ilmxQE5LVyaWObFAbjpc2xL92eV0aEi5L23nYtwXy7YFIHUIYiEprrGTzTeZbpfTNPqCDsVAbsuETCxlfkDuMI7XGVZRKLcrfbezjNkB0oMgFpLMDZbsbuwkSWWM2QHyhikTm8LuxKVkYoGclAn7YTtwnQHSgyAWkuJvMu0tJ5akiiKCWCBfGLcrVKVyTqyXGY5ALsqE8TodjOXEDeyJBVKGIBZqC4VNJTCpyJSYx+xw0QdyVTgcSekcaiNzYyeCWCBXZFQm1rhtgesMkDIEsVBdXCY0FY1XyMQC+aHeH1TIMEarqtibss82NXYiEwvkjEyYEduhlD2xQFoQxMK0H9bjMreLt4spE9sS6OGdALLZScNWBZfTYbrhs1up19A1NNDGTGogB0QikYzKxJobyPFQHkgVgliYSv0qigrkcDhs/8zywli2t55MLJCzauOaOjmd9l9fOhR7Yw/kIhGpORhK2WcDsMeJxoBaDP8uj0zTjNgOjNgB0oMgFilv6iSxJxbIF8ZMbGVxaq4vHUrisr7cYALZz5iFLS/0mO4n0oERO0B6EMTCVE6cqqYr5YzYAfJCrSmITV1TJ0nyul0qMMyPbGzlWgNkuw8zqJRYitsTS2MnIGUIYpGWzqHGxk5kYoHcZczEprKpUweyJEBuyaT9sJJUxjUGSAuCWJhmOA5IUbkfmVggP5i2K6S4nFgyN11pamVPLJDtMmlGrCSVGBvIUe0BpAxBLFTXZG7slArGIJbGTkDuMpcTpyETa5oVy7UGyHaZlollxA6QHgSxUE1zehs7NbS2qS0UTsnnAkgtU2OnFF1fjCgnBnJLJs2IlTpfYyIRRnkBqZC6gX3IWMbGTqnKxFbE3czW+9tS3vQFgP2M2xUqS1KfiS01ZWIJYoFst/67n9OHtc06dLJZE4aWpft0TJnYUDgifzCswgJXDysAWIEgFqbGTpUpCmJLvG65nA6Fwu1PLOuaAwSxQA462WjMxKb+33FjloQRO0D2G1jq1cBSry4cOSDdpyJJKvWaH8o3+IMEsUAKUE4M84idFDVecTgcNHcC8oApE5uGB1UlZGIB2MjnccrtdERfM2YHSA2C2DwXiURMmdhUlRNL5n2xdQSxQM7xB0NqDsQ6AqcliGWGIwAbORwOmjsBaUAQm+fq/W3Rkl4pdXNiJamMDsVATjOO15HSM2LHtCeWm0sANmDbApB6BLF5zlhK7HCYs6N2qzBmYpsJYoFcYwxiS7xued2p3ydGOTEAuxn3xTb4uZ8BUoEgNs8ZS4nLCz1yGfZ12I09sUBuq2lK735YSSomEwvAZozyAlKPIDbP1ZpmxKb2JtM4ZocgFsg9xiB2QJqC2FL2xAKwWRnXGSDlCGLznHlGbGr3q5VTTgzkNGMQW5WmILbEUObX2Mp1BoD1jNsWKCcGUoMgNs/VNsUutqnOxFJODOS2TCgnpuEKALuV+gwPy7jOAClBEJvnajMkE3uqJdDDOwFko5OZEMQaMiRNraEe3gkAiWHEDpB6BLF5zhjEVpKJBWCh2gwIYo03l4FQWK1tBLIArGWq+GBPLJASBLF5ztidONWNVyoMQTN7YoHcYyonTvFDsg7GTKxEqR8A6xnLievZEwukBEFsnsuUxk5kYoHcU9Oc/kxsUYFLDsPkMLIkAKxW6qWcGEg1gtg8l87GTsagubUtLH+QMj8gl2TCiB2HwxHXOZQbTADWKqWcGEg5gtg8lymNnSSysUAuCYUjpkqPdI3YkcxZEm4wAVjNWE7MiB0gNQhi81xtGsv9fB6XvO7YP4IEsUDuONUSVDgSe52uTKzEmB0A9jJWe3CNAVKDIDaP+YMh+YPh6OtUlxNL5mwszZ2A3GEsJXY7HSrzuXt4t71KyMQCsJGxnLgpEFLI+AQPgC0IYvOYMQsrpb6cOP4zycQCuSN+P6zD2F0pxUqMpX4EsQAsVhr3kI6HZYD9CGLzmLGpU1GBS163K+XnYM7EBnp4J4BsYgxi07kfVpJKvLFrG6V+AKwWP8qLfbGA/Qhi85gxE5uOUmKJMTtArjJlYtN0felgLifmOgPAWm6XU4We2MMyuqAD9iOIzWPp7EzcobwwdnNLEAvkDlPTuJJ0B7Gx6xuZWAB2YMwOkFoEsXms1tBIKdWdiTuQiQVy08lGQxCb7kys4eaSPbEA7GAMYiknBuxHEJvH6pqMmdj03GTS2AnITTVNrdGf0/WQrINxTmwTQSwAG5gayFHxAdiOIDaPGTOxA9JWTsyIHSAX1Rj+fa5KdzkxZX4AbFZmysRynQHsRhCbx+qaycQCsIcxE5tRjZ24uQRgA+ZRA6lFEJvHakzdidOTiS1jTyyQk4wjvNI+Yoc9sQBsxp5YILUIYvNYJjR2qiCIBXLSSWMmNoP2xJKJBWAHYxd0yokB+xHE5rFMKCeO704ciUTSch4ArNMSCMkfDEdfZ1ImljI/AHYwjdghiAVsRxCbx2qb0l9ObAxiQ+EIN5hADjBmYaX0PSTrYNyr1hwIKRTmYRkAaxmD2HqCWMB2BLF5qi0UNl1k09V4xRjESnQoBnKBcT9sqc+tAnd6/1NT6jVfZ3hYBsBqpkxsK/cygN0IYvNUXdz+04o0ZWLdLqcpS8K+WCD7ncygGbGSVOx1mV4TxAKwWilzYoGUIojNU8b9sB6XwxRIppoxG1tPEAtkvVrD9SUTgli3yymfJ/afO/arAbAaI3aA1CKIzVPGzsQVRQVyOBxpOxdjEBufIQaQfU42GoLYNO+H7WDsHEqpHwCrmUfsEMQCdiOIzVOZ0NSpg7GUmXJiIPtlWiZW4gYTgL3i58QybQGwF0FsnqqLy8SmkykTS2MnIOvVNGVeEEupHwA7GffEBkMRtbaFe3g3gGQRxOapmubMycTGz4oFkN1M5cSZGMSSiQVgMWMmVqLiA7AbQWyeqjUFsWnOxJrKiQM9vBNANjBdXzIliPWRiQVgn0KPSy5nrL8I1xnAXgSxearOMMcx3TeZZGKB3HLSUE5clSFBbCnlxABs5HCYJz00+LmfAexEEJunajOonLiiMHaTy55YIPvVZuKeWB/lxADsxbYFIHUIYvNUpjZ2IhMLZLdQOGIalZUxQSyZWAA2M+6LrSeIBWxFEJunajJoTywjdoDcUdcckHGyRMYEscbxFwSxAGwQP2YHgH0IYvNUXQaVE5sysZQTA1nNOF7H4zLvEUunUsr8ANjMOGaHig/AXgSxeSgSiZjKiTOpsVNDa5vaQsxWA7JV/IxYh8PRw7tTh+7EAOxmzsRynQHsRBCbhxpa29QWjtX7pbucuDwuE8w+EiB7GYPYdF9bjEq8hgwJ1xgANmDvPZA6BLF5yDhex+EwZ0LToaTALcNoNfbFAlnMuN++qiSTglhuLgHYy1hOzJ5YwF4EsXnIOF6nzOcxDedOB6fTYQqkjft1AWSXmsZMzcTScAWAvSgnBlKHIDYP1WRQU6cOjNkBcoMpE5shnYmlzntiI8YWygBgAYJYIHUIYvOQqTNxhtxklhsyNgSxQPYy7YnNkOuLZM7EhiNSSzCUxrMBkIuo+ABShyA2D9Ua9sRmSrkfmVggNxiD2EzKxBozJBLNnQBYjxE7QOpYFsSuWLFCV111lcaOHavy8nJ5vV6NGjVKf//3f6/du3d3u27NmjWaNm2aSkpKVFlZqXnz5mnLli09ftbmzZs1b948VVZWqqSkRNOmTdPDDz/c45rDhw9r8eLFGjp0qHw+n8aNG6c777xTfr+/2zUtLS368Y9/rHHjxsnn82no0KFasmSJjhw50uNnJfKdUsmYia3IkHLiCmbFAjkhUzOxXrdTbsP+f24wAViNcmIgdSwLYv/lX/5Ff/rTn1RZWanPf/7zmj9/vnw+n37zm99o6tSpeuqppzqtueWWW7R48WLt2bNHc+fO1bRp0/Tss8/qkksu0bp167r8nMcee0yzZs3Shg0bNGnSJF166aU6cOCArr32Wt12221drnn33Xc1ZcoUrVmzRlVVVVqwYIFCoZCWLVumuXPnqrW1tdMav9+vOXPm6K677lJjY6MWLFigESNGaPXq1ZoyZYree++9Lj8rke+UarXNmZ2JrSMTC2St+DmxmcLhcDArFoCtTF3QCWIBW1kWxD755JOqra3V1q1b9fjjj+vxxx/Xvn379OCDDyoYDOrb3/622tpi/0Jv3LhRK1euVFVVld58802tW7dOGzZs0KZNm+RyubR48WLV1dWZPqOmpkZLlixRKBTS2rVr9eKLL2rt2rV65513NGbMGC1fvlwvvvhip3NbtGiRTpw4oZtuukm7d+/WI488on379unKK6/U5s2bdc8993Rac/fdd+vVV1/V9OnTtX//fj3yyCPaunWrli9fruPHj2vJkiWd1iTyndIhExs7GTPClBMD2SkSicSVE3vTeDadcYMJwE5lxnLiQJvCYRrIAXaxLIidMWOGfD5fp+PXX3+9Ro8eraNHj+qtt96KHl+xYoUk6fbbb9fYsWOjx6dPn67rrrtOdXV1euihh0x/61e/+pXq6+u1YMECXXXVVdHjgwcP1s9+9jNJ0vLly01rtm3bps2bN2vQoEHR90iS2+3WL37xC3k8Ht1///2mADsQCOiBBx6QJD344IMqKSmJ/m7p0qWaNGmSXnrpJb3++uumz0rkO6VDRjZ2Mo3YIYgFslFzIKTWtnD09YDizHhI1sHUdIVMLACLGas9IhGpKcB1BrBLSho7eTztNzIFBe0BU0tLi55//nlJ0sKFCzu9v+PY+vXrTceffvrpbtd0lC9v3LjRtM+1Y81ll10mr9ecFRg8eLBmzpyp2tpa/fWvf40e37x5s06dOqXRo0drypQpfTq/RL9TOmRiY6cyQxBbTyYWyErGLKyUOdeXDsb9amRiAVjN+KBMYl8sYCfbg9jf/OY32rdvn8aOHRvNTu7bt0+tra0aOHCghg8f3mnNhRdeKEnatWuX6fibb75p+r1RQUGBJk6cKL/fr/379/dpTXeflciaRL9TOmR6Y6e6lkAP7wSQqYxBbJnPLY8rsxrgm8qJycQCsFiB2ymvO3bdI4gF7OPu/S39c++992rv3r1qamrS22+/rb1792ro0KH63e9+J5fLJUk6dOiQJHUZ7ElScXGxKioqVFtbq4aGBpWWlqq+vl6nTp3qcd3w4cO1fft2VVdXa9KkSX36rI7j1dXV0WN2rOnqO/VkwoQJXR4/ePCgRo8e3ePa3mR6Yyf2xAKpZdX1xrjfvqoks/bDSlIJ4y+AtLLz3iZTlPo8am1sbxja2Mr9DGAXy4PYP//5z3ruueeir0eNGqWHH35YU6dOjR5rbGyUJBUVFXX7d4qLi1VXVxcN+DrW9LSuuLhYktTQ0NDnz0rVmq6+Uzr4gyG1BEPR15kSxFYYzoMgFshONY2Z1zTOyLQnlgwJABuU+dw6cTqIrec6A9jG8iB248aNkqS6ujrt3r1by5Yt06xZs3T33Xfrn/7pn6z+uJy1d+/eLo939xSzr2qbzaW6mVJObMzE+oNh+YMh+TyuNJ4RkD+sut4Yry+VGdaZWIrbE0uGBEg5u+5tMkkJe++BlLBtw1JFRYVmzpypZ555RlOnTtUdd9yh1157TZKi3X6bm5u7Xd/U1CRJ0YylsUNwd+vi1/Tls1K1prt1qWZs6lRU4MqYQDE+mKa5E5B9TppmxGbGAzKj4gJuLgHYy/iwjIoPwD62d93weDz66le/qkgkEu3MO3LkSEnS4cOHu1zT1NSkuro6DRgwIBrwlZWVqby8vMd1HcdHjRoVPdbbZ6VqTVffKR1M43UypJRYknwelwoMzRDqCGKBrFPblNmZWFOGhD2xAGxgbiDHvQxgl5S0jjzjjDMkScePH5ckjR8/Xl6vV8ePH9eRI0c6vX/Hjh2SFG3O1GHy5Mmm3xsFg0Ht2bNHPp9P48aN69Oa7j4rkTWJfqdUMzZ1ypRS4g40dwKyW6ZnYkvZEwvAZqWGBnJcZwD7pCSIfemllyQp2nmusLBQc+bMkSQ9+uijnd6/du1aSe2zXY3mz59v+r3RU089Jb/fr7lz58rn83Vas379erW2tprWHD16VC+//LIGDBigGTNmRI/PmDFD5eXlOnjwoN54440+nV+i3ynVajI0EyvFjdlpJogFsg2ZWAD5jgZyQGpYEsRu3rxZGzZsUDgcNh0PBoP693//d/3mN79RYWGhvvrVr0Z/t3TpUknS3XffrQMHDkSPv/LKK/rlL3+piooKfetb3zL9vW9/+9sqKyvTk08+qccffzx6/NixY/r+978vSbr11ltNa6ZNm6YZM2bo2LFj+sEPfhA93tbWpuuvv17BYFA33XSTPJ5YAFVQUKAbb7xRknTDDTdE97JK0ooVK7Rr1y7NmjXL1HE50e+UanVNmTcjtgOZWCC71WR4JtZ4c9lEEAvABmXsiQVSwpLuxAcOHNDixYt1xhlnaOrUqaqqqtKJEye0e/duffzxx/L5fFqzZo1GjBgRXTN37lzdfPPNWrlypS644AJ94QtfUCAQ0LPPPqtIJKLVq1eroqLC9DmVlZVatWqVrrnmGi1cuFCzZ89WVVWVNm7cqLq6Oi1dulSzZ8/udH6rV6/W9OnTtXLlSj3//PM677zz9Nprr+m9997TxRdfrB/+8Ied1tx+++3auHGjtmzZorFjx2rmzJmqrq7W1q1bNXDgQK1atarTmkS+U6oZy4krizMsE1tkzMQGengngEx0kkwsgDxnLifmgTxgF0sysbNmzdKPfvQjjR8/Xrt27dKjjz6qzZs3q7KyUt/97ne1e/duXXPNNZ3W3XfffVq9erXOPfdcPfvss3rllVc0d+5cbdq0SVdccUWXn3X11Vdr06ZN+tKXvqSdO3fqmWee0ZgxY7RmzRotX768yzVjx47Vzp07tWjRIh0/flxPPPGEnE6n7rjjDj333HPyejvfbPl8Pr3wwgu64447VFRUpHXr1qm6ulqLFi3Sjh07dPbZZ3f5WYl8p1QyBocVGVZOXGbIxNKdGMgubaGwqYKiMsOuLxJ7YgHYj4dlQGpYkon91Kc+pZ/+9KcJrV20aJEWLVrUrzUzZszQn/70p36tGTFihFavXt2vNYWFhVq2bJmWLVvWr3WJfKdUqTXtic2scr+KwthNL+XEQHapjdvHXlmSeUGs8eaytS2sQFvY1BUdAJLFiB0gNfivd54x3mhmWmMn455YRuwA2cX4gKzA7VRxQWbMoDYy7omV2BcLwHrmETtcYwC7EMTmmdrmzG3sZDwfMrFAdjnZaNgPW1Qgh8ORxrPpWnGBOYjlBhOA1dgTC6QGQWyeMY/AyOBMLCN2gKxifECWadeWDk6ng/EXAGxl7E5czzUGsA1BbB5pC4VNF9RMLiemsROQXU5m8AMyI0r9ANjJuPc+0BZWa1sojWcD5C6C2DwSX6KbaeXE5UXsiQWyVSZXeRiZO4dynQFgLWM5sSQ1ko0FbEEQm0eMTZ3ccWV1mcCYiT3VElQkEknj2QDoj5osCWKLKScGYKMij0vGlgBUfAD2IIjNI7VxM2IzrfFKhSGIDYUjXPiBLJItQWwp5cQAbMTeeyA1CGLziLHcL9NmxEpSWaH5nOhQDGQPYxA7IIODWNOeWG4uAdiglCAWsB1BbB4xdvzNxJtMj8tpusEkiAWyhzGIrcrA60sH855Ybi4BWI8xO4D9CGLziLGcOBMzsVLcvljG7ABZw5SJzbDO50aU+QGwW6mP6wxgN4LYPGJs7JSpN5llcc2dAGS+SCRizsSWZOb1RTLfXDaRiQVgAyo+APsRxOYR457YigwNYo3NnRizA2SHpkBIgVA4+jpTH5JJzIkFYD/KiQH7EcTmkawrJyaIBbJCTWPA9DpTry8SGRIA9jNtW+A6A9iCIDaPZHpjJ0mqMNz81rEnFsgKNYYHZOWFHrldmfufFvbEArBbGXtiAdtl7p0GLGfOxGZmEEsmFsg+NU2t0Z8zuTOxZN4TSyYWgB0Y5QXYjyA2j5gbO2VmuV95kTGIDfTwTgCZoqYpdm2pzPAgtsQbu8ZwcwnADubuxDyQB+zg7v0tyAWRSER1zZnf2IlMLJB9vjxpiD591gDVNAXkcjrSfTo9orETALuZGztxnQHsQBCbJxpa29QWjkRfZ2omtqIwFlwTxALZwedxaVRVsUZVFaf7VHoVX04cDkfkzPDAG0B2oYEcYD/KifNEnaHcz+EwZzwzifG8aOwEwGrFXvOz26YAN5gArFVKYyfAdgSxecLY1KnMl7ndQyknBmCnYq/L9JosCQCrlXqZEwvYLTMjGVguG2bESuYROw3+NoUMJdAAkCyv26UCd+w/fTR3AmC1+G0LkQj3MoDVCGLzhLE0N1ObOklSWVyZcz3ZWAAWKzXOiiUTC8Bixj2x4YjUHAil8WyA3EQQmydqmrIjE1vqdcvYY6WOIBaAxUxNV8jEArCYMRMrsS8WsANBbJ4wjtcZkMFzHJ1Ohykby75YAFYzjtlpIhMLwGLx2xbYFwtYjyA2T9QayokHZHA5sSRVmDoUB3p4JwD0XwnlxABsxrYFwF4EsXkiWxo7SXQoBmCvUsqJAdiMMTuAvQhi80S2NHaSpHLD+dHYCYDVjJlYRuwAsAN77wF7EcTmCXNjpwwPYk3lxASxAKxV4iOIBWAvZsUC9iKIzRN1WVVOHLvBpJwYgNVKvOZ51ABgNR6WAfYiiM0TpsZOGdydWJIqCmPnx4gdAFYr5eYSgM2M15l6HpYBliOIzQP+YEgtwdig7WwqJyYTC8Bqpj2xlPkBsEGZj3JiwE4EsXkgfl9pRaaXExvO7xR7YgFYjMZOAOxmfljGdQawGkFsHjA2dSr0uOTzuNJ4Nr0jEwvATsVeRl8AsBcjdgB7EcTmgWxq6iRJFQSxAGzEnlgAdqOxE2Avgtg8kE1NnSRzOXFdS6CHdwJA/1FODMBupeyJBWxFEJsHapuzZ0asZC4n9gfD8huaUgFAskwZEn+bIpFIGs8GQC4qZdsCYCuC2DxgLCfO9KZOknnEjiTVU1IMwELGm8u2cEStbeE0ng2AXGTaE0vFB2A5gtg8YConzoJMrM/jVIEr9o8m+2IBWMmYiZUoKQZgPcqJAXsRxOaB2qbsauzkcDji9sVy8QdgnUKPS05H7DXjLwBYzfiwzB8MKxii4gOwEkFsHjDtic2Cxk5S3JgdZsUCsJDD4aC5EwBblcZXfPCwDLAUQWweyLZyYsk8ZodMLACrmUv9uLkEYK3iArYtAHYiiM0D2dbYSYrLxBLEArAYmVgAdnI5zRUf9eyLBSxFEJsHsjETa9wTSxALwGqmMTutXGMAWK+EMTuAbQhic1xbKGwKArMmiDXtiQ308E4A6D9TJpabSwA2KPVxnQHsQhCb4+KzmAOKKScGgBJmOAKwmXlWLPcygJUIYnOcsZTYHbc/I5PR2AmAnUoKyJAAsFeJoYEc1xnAWgSxOc7c1KlADoejh3dnDvbEArCTeU8sN5cArGfMxNYTxAKWIojNceamTtlRSixJFYWxvbvMiQVgNfbEArBbKV3QAdsQxOa42qZYJjZbmjpJUhl7YgHYqJQ9sQBsZrrOMGIHsBRBbI6rzcIZsZL5XOtagopEImk8GwC5xpiJbSKIBWCDUsOeWEbsANYiiM1xxnLiyuLsycQauxOHwhE1BUJpPBsAuYY9sQDsxrYFwD4EsTkuvrFTtjAGsRIlxQCsxc0lALuZy4m5zgBWIojNccZy4mxq7ORxOVVc4Iq+NgbjAJAs9sQCsBvXGcA+BLE5rrbJ2J04ezKxkjkbSyYWgJVKvMxvBGAv855Y7mMAKxHE5rhsbewkSeVFjNkBYA/jntiWYEhtoXAazwZALiphxA5gG4LYHJetjZ0kqbwwdvEnEwvASsabS0lqaqV5HABrxe+JZdICYB2C2BwWiUSytrGTJFUUxs63jiAWgIXig9iGVq4xAKxlLCcOhSNqCfKwDLAKQWwOa2xtU1s49tQvmxo7SeyJBWAfl9OhIkPzOEr9AFjNmImV2H8PWIkgNofVxe0jjR9bk+mMe3jjvwsAJKuYMTsAbOR1O+VxOaKv67nOAJYhiM1hNU2xUuIyn1tuV3b9f3eZIeiuJxMLwGKlXsZfALCPw+GguRNgk+yKatAvxs7E2dbUSaKcGIC9jB2KycQCsANjdgB7EMTmMGMJbrY1dZLiyolbAj28EwD6jwwJALuVsG0BsAVBbA4zZmKzramTRCYWgL24uQRgt/gxOwCsQRCbw4wzYgdkYybWOGKHxk4ALGYqJyYTC8AGxnLiesqJAcsQxOaw2qbsnRErmTOxDf42hcIMCQdgnVLKiQHYrJSHZYAtCGJzWNaXE8edMx2KAViJxk4A7EY5MWAPgtgcZizBHZCF3YlLvW45YuPV2BcLwFIl3tiDMjIkAOzA3nvAHgSxOcycic2+INbpdNDcCYBtjJlY5sQCsINpxE4r9zGAVQhic5gpE5uF5cSSeV9sHUEsAAuZ9sTScAWADUooJwZs4e79LchW91x1vk40tqqmKaAxg0rSfToJIRMLwC7MiQVgtzKCWMAWBLE57JJxA9N9CkkzBbGG8mgASBaNnQDYzdzYiYfxgFUoJ0ZGIxMLwC7GTCx7YgHYgQZygD0IYpHRKgx7eY17fAEgWfHlxJEIs6gBWIsRO4A9CGKR0cjEArCLsZw4EpGaA6E0ng2AXGR8WNYcCCkU5mEZYAWCWGS0isLYaCC6EwOwkvHmUqLUD4D1ynzm6RDsvwesQRCLjEYmFoBdvG6nPC5H9DWlfgCsVux1mV4zKxawBkEsMlqZIYitJ4gFYCGHw2HKxjaRiQVgMbfLqaKCWCDLwzLAGgSxyGg0dgJgJ9OYHYJYADaguRNgPYJYZDTKiQHYyTj+gptLAHYwd0LnXgawgiVBbHNzs9atW6dvfetbGj9+vHw+n4qLizV58mQtW7ZMjY2N3a5ds2aNpk2bppKSElVWVmrevHnasmVLj5+3efNmzZs3T5WVlSopKdG0adP08MMP97jm8OHDWrx4sYYOHSqfz6dx48bpzjvvlN/v73ZNS0uLfvzjH2vcuHHy+XwaOnSolixZoiNHjvT4WYl8J3TNmIltCYbU2kb3UADWKfWSiQVgr1IfD8sAq1kSxP7P//yPrrzySq1atUoul0uXX365Zs6cqffff1933nmnPv3pT+vYsWOd1t1yyy1avHix9uzZo7lz52ratGl69tlndckll2jdunVdftZjjz2mWbNmacOGDZo0aZIuvfRSHThwQNdee61uu+22Lte8++67mjJlitasWaOqqiotWLBAoVBIy5Yt09y5c9Xa2tppjd/v15w5c3TXXXepsbFRCxYs0IgRI7R69WpNmTJF7733Xpeflch3QveMmViJbCwAa5nKif1cXwBYj3JiwHqWBLEej0f/8A//oLfeektvvfWW/vCHP2jDhg3at2+fpkyZonfeeUe33HKLac3GjRu1cuVKVVVV6c0339S6deu0YcMGbdq0SS6XS4sXL1ZdXZ1pTU1NjZYsWaJQKKS1a9fqxRdf1Nq1a/XOO+9ozJgxWr58uV588cVO57do0SKdOHFCN910k3bv3q1HHnlE+/bt05VXXqnNmzfrnnvu6bTm7rvv1quvvqrp06dr//79euSRR7R161YtX75cx48f15IlSzqtSeQ7oWeFHpcKXLF/TE+xLxaAhUrIxAKwGUEsYD1Lgthrr71Wv/zlL3Xuueeajg8ZMkQPPvigJOnxxx9XIBCI/m7FihWSpNtvv11jx46NHp8+fbquu+461dXV6aGHHjL9vV/96leqr6/XggULdNVVV0WPDx48WD/72c8kScuXLzet2bZtmzZv3qxBgwZF3yNJbrdbv/jFL+TxeHT//ferrS12UQkEAnrggQckSQ8++KBKSkqiv1u6dKkmTZqkl156Sa+//rrpsxL5TuiZw+EwdSgmEwvASsZMbANBLAAbsCcWsJ7tjZ0mT54sSWptbdXJkyclte81ff755yVJCxcu7LSm49j69etNx59++ulu18yfP18+n08bN2407XPtWHPZZZfJ6/Wa1gwePFgzZ85UbW2t/vrXv0aPb968WadOndLo0aM1ZcqUPp1fot8JvaNDMQC7mPbEkiEBYAP2xALWsz2I7dg76vF4VFlZKUnat2+fWltbNXDgQA0fPrzTmgsvvFCStGvXLtPxN9980/R7o4KCAk2cOFF+v1/79+/v05ruPiuRNYl+J/SODsUA7EI5MQC7UU4MWM/d+1uSs3LlSknSpZdeGs2EHjp0SJK6DPYkqbi4WBUVFaqtrVVDQ4NKS0tVX1+vU6dO9bhu+PDh2r59u6qrqzVp0qQ+fVbH8erq6ugxO9Z09Z16MmHChC6PHzx4UKNHj+5xba4hiAXslc/Xm2IysUDK5Ou1xviwjCAWsIatmdhnnnlGDz30kDwej+66667o8Y6RO0VFRd2uLS4uliQ1NDSY1vS0Ln5NXz4rVWu6W4feVRiC2DqCWAAWYk8sALuVmcqJuY8BrGBbJvadd97R3/3d3ykSiejee++N7o1F3+zdu7fL4909xcxlxsZO9QSxgOXy+XrDnlggdfL1WmMa5cXDMsAStmRijxw5oksvvVS1tbVaunSpbr75ZtPvO7r9Njc3d/s3mpqaJCladmvsENzduvg1ffmsVK3pbh16Z27sFOjhnQDQP9xcArAbe2IB61kexNbU1OiLX/yiqqurtXjxYv385z/v9J6RI0dKkg4fPtzl32hqalJdXZ0GDBgQDfjKyspUXl7e47qO46NGjerzZ6VqTVffCX3DnlgAdjHuVWsiiAVgAxrIAdazNIhtbGzU3/7t3+qtt97SVVddpf/+7/+Ww+Ho9L7x48fL6/Xq+PHjOnLkSKff79ixQ5KizZk6dJQkd/zeKBgMas+ePfL5fBo3blyf1nT3WYmsSfQ7oXemTCxBLAALlbInFoDNSuP2xEYikTSeDZAbLAtiW1tbtWDBAm3btk1f+tKX9Lvf/U4ul6vL9xYWFmrOnDmSpEcffbTT79euXSupfbar0fz5802/N3rqqafk9/s1d+5c+Xy+TmvWr1+v1tZW05qjR4/q5Zdf1oABAzRjxozo8RkzZqi8vFwHDx7UG2+80afzS/Q7oXdkYgHYpcQbu74E2sJqbQul8WwA5KIyw8OyYCii1rZwGs8GyA2WBLGhUEhf//rX9fzzz2vmzJl6/PHHVVBQ0OOapUuXSpLuvvtuHThwIHr8lVde0S9/+UtVVFToW9/6lmnNt7/9bZWVlenJJ5/U448/Hj1+7Ngxff/735ck3XrrraY106ZN04wZM3Ts2DH94Ac/iB5va2vT9ddfr2AwqJtuukkeT+xGpqCgQDfeeKMk6YYbbojuZZWkFStWaNeuXZo1a5amTp2a9HdC78oLY/8snWomiAVgHeOeWElqaiWIBWCt+OsM+2KB5FnSnfiBBx7QE088IUk644wzdP3113f5vp///Oc644wzJElz587VzTffrJUrV+qCCy7QF77wBQUCAT377LOKRCJavXq1KioqTOsrKyu1atUqXXPNNVq4cKFmz56tqqoqbdy4UXV1dVq6dKlmz57d6XNXr16t6dOna+XKlXr++ed13nnn6bXXXtN7772niy++WD/84Q87rbn99tu1ceNGbdmyRWPHjtXMmTNVXV2trVu3auDAgVq1alWnNYl8J/QuPhMbiUS6LFMHgP4q8rjkcEgd1X2N/jZVFvf8EBYA+qPQ45LL6VAo3H6hafAHNbDUm+azArKbJUFsbW1t9OeOYLYrP/nJT6JBrCTdd999uuCCC/TAAw/o2WefVUFBgebOnas77rhDF198cZd/4+qrr9amTZt0991369VXX1UgENB5552nG2+8Uddee22Xa8aOHaudO3fqxz/+sTZs2KAnnnhCI0eO1B133KEf/ehH8no7X0h8Pp9eeOEF3XPPPfqf//kfrVu3TpWVlVq0aJHuuusuDR8+vMvPSuQ7oWfGILYtHFFzIKRir23ToQDkEafToZICd3Q/bEMr1R4ArOVwOFTidUe3RNHcCUieI8Lu8qzSMUutu1lruSjQFta42/8Ufb35/5ujYRWFaTwjILXS9e99vlxvpt/znD4+5ZckPfIPn9Vnzq5K8xkB6cG1xj6f+9fndbi2RZL0/779Gc0Yc0YvK4Dcluy/97bMiQWsVOB2qqgg1iSMfbEArMT4CwB2M3co5joDJIsgFlmhotA4ZieQxjMBkGuMTVcIYgHYodTwsKzBz8N4IFkEscgKZYYgtp4xOwAsVGK6uSSIBWA900xqrjNA0ghikRUqigyZWMqJAViIcmIAdqPiA7AWQSyyQvyYHQCwiimIJUMCwAbmTCz3MUCyCGKRFcpNe2K5+AOwDhkSAHYr8cbuY7jOAMkjiEVWGFzmi/5cfbIpjWcCINeUUk4MwGbGTGw9FR9A0ghikRXOG1IW/Xn3kVNpPBMAucaUieXmEoANyrjOAJYiiEVWmDisPPrzhzUtzIoFYBnK/ADYrYQ9sYClCGKRFYYPKDTti937EdlYANYw3VwSxAKwQanhYRkjdoDkEcQiKzgcDp1vyMZSUgzAKqY9sWRIANiABnKAtQhikTUmDIvti93zUX0azwRALuHmEoDdzCN2uM4AySKIRdYwZmL3kIkFYBHmxAKwW2nc3vtwOJLGswGyH0EsssbEobEg9v0TTTRGAGAJYxDbFAgpxM0lAIsZM7GS1BjggRmQDIJYZI1RVUWm/wjspaQYgAXiby6buLkEYLGS+CCWqg8gKQSxyBoOh0MThhr2xVJSDMACxV5uLgHYy+NyyueJ3XazLxZIDkEssoqxpJggFoAVPC6nvO7Yfw5p7gTADqU+45gdtkQBySCIRVY5f7ghiKWcGIBF6BwKwG7GcV7MpAaSQxCLrDLBkIk9eLxRzexdA2ABU4dibi4B2ICHZYB1CGKRVc4+o1jFBS5JUiQivUU2FoAFTLNiubkEYAOuM4B1CGKRVZxOh86juRMAi5nG7JCJBWAD46xY9sQCySGIRdaZOCxWUrz7CJlYAMkrMd5cEsQCsIGxnJhtC0ByCGKRdYwdivd+RCYWQPJKKfMDYLMS9sQCliGIRdYxdig+cKxR/mAojWcDIBeYGztR5gfAesYRO/WUEwNJIYhF1jn7jOLowPBQOKK3P6akGEBySijzA2Az44gdKj6A5BDEIuu4XU6dO8TQ3IkOxQCSZMzEUuYHwA6M2AGsQxCLrHS+obnTnsPsiwWQHBquALAbFR+AdQhikZWMzZ320NwJQJJKKPMDYDPjnlhG7ADJIYhFVjKO2dl/tEGtbTR3ApC4Yi8ZEgD2ouIDsA5BLLLS2MElKnC3/+MbDEW0/5PGNJ8RgGxWyp5YADYzXmfquc4ASSGIRVbyuJw698zS6OvdRygpBpA49qoBsJuxnDjQFqaKDEgCQSyy1oRh7IsFYI2SuHLiSCSSxrMBkIuMD8sk9t8DySCIRdYyNXciEwsgCcaby1A4In8wnMazAZCLigtccjhir9m6ACSOIBZZyzhm552PGxQMcdMJIDGlXo/pNSXFAKzmcDg6VX0ASAxBLLLWuDNL5HG1P9IMhMI6cJTmTgAS4/M45XLGUiTcXAKwQ5lhX2w9Y3aAhBHEImt53S6NGxxr7kRJMYBEdcqQUOYHwAamMTtcZ4CEEcQiq5n2xdLcCUASjEFsQysZEgDWK2GcF2AJglhktYnDY0EsY3YAJIMMCQC7Ga8zDZQTAwkjiEVWmzi0LPrz2x/Xq43mTgASRMMVAHYrMeyJ5ToDJI4gFlnt3CFl0WYs/mBYB483pfmMAGQr45gdbi4B2MGcieU6AySKIBZZzedxaeygkuhrmjsBSBR71QDYrdS0957rDJAoglhkvQlD2RcLIHmlZGIB2IxMLGANglhkvfOHxfbF7qVDMYAEFRfQ2AmAvUqNe2Jp7AQkjCAWWW/isFgmdu9H9QqHI2k8GwDZij2xAOzGtgXAGgSxyHrnDS2To723k5oDIb13guZOAPqPm0sAdqOcGLAGQSyyXlGBW6MHxpo7UVIMIBHmPbGU+QGwHhUfgDUIYpETzjeUFO8+TBALoP9KvLG9ak2toTSeCYBcVWbYE1vPnlggYQSxyAkThsaaO+0hEwsgAWRIANjNuG2hsbVNkQh9PIBEEMQiJxgzsXuP0NwJQP+xJxaA3YzbFiIRqSlA1QeQCIJY5ITzDJnYhtY2HappTuPZAMhG7IkFYDdjxYfEOC8gUQSxyAmlPo8+dUZx9PXuI5QUA+gfYybWHwwrGAqn8WwA5CKv26UCd+z2u4F9sUBCCGKRM4zzYtkXC6C/4jMkTeyLBWCDMsO1pp5MLJAQgljkjImGkuK9R+rTeCYAslFxgTmIZV8sADvEN3cC0H8EscgZpjE7R07R8Q9Av7icDhUXuKKvubkEYIdSw5gdyomBxBDEImdMGBoLYk+1BHW4tiWNZwMgGzFmB4DdTE3kqPgAEkIQi5xRXuTRyMqi6Os9NHcC0E/FXm4uAdiLcV5A8ghikVMmDovti6W5E4D+KjXeXJKJBWADyomB5BHEIqcYS4p309wJQD+VUOYHwGbGcmIelgGJIYhFTjE2d9pLcycA/WTuGkqGBID1TEEsD8uAhBDEIqcYZ8WebAro41P+NJ4NgGxT4o2V+TW2htJ4JgByVQl774GkEcQip1QWF2hYRWH0Nc2dAPQHXUMB2M20J5aKDyAhBLHIOROGGps7sS8WQN9RTgzAbjwsA5JHEIucY9wXSyYWQH8wJxaA3UrYEwskjSAWOWciQSyABDG/EYDdygxBbD3XGSAhBLHIOcYg9lhDq47V09wJQN+UkokFYDNzAzm2LQCJIIhFzhlY6tXgMm/09Z6PyMYC6Bu6hgKwm/FhmT8YVjAUTuPZANmJIBY5aeLQWDZ292GaOwHoG3NjJ4JYANYz7omVeGAGJIIgFjnJtC+WTCyAPiqhaygAm5UUuOVwxF6z/x7oP4JY5CRjELuX5k4A+siUiQ20KRyOpPFsAOQip9OhkgJDEzn2xQL9RhCLnGQcs/PRKb9ONram8WwAZAtjEBuJSE0BMiQArMeYHSA5BLHISYPLvDqjpCD6es9H7IsF0LuyQo88rlid354jXDsAWK+UIBZICkEscpLD4WBeLIB+87icunj0GdHXz+z+OI1nAyBXmZvIUU4M9BdBLHKWsUMxQSyAvpo/aUj05z/t+UQh9sUCsFipLzYrlkws0H8EschZxkzsboJYAH30xfMGy+1sLyk+0diqbe/XpPmMAOQa9sQCySGIRc6aOKws+vPh2hbVNQfSeDYAskVFUYE+NzZWUvz07o/SeDYAclEZQSyQFIJY5KxhFYWqKIqV69CgBUBfzT8/VlK8gZJiABYzlhOzJxboP4JY5CyHw2EatbPnI0qKAfTNF887M9ql+ERjQFvfP5nmMwKQS4yNncjEAv1HEIucNoHmTgASUF7k0efGGEqKd9GlGIB1GLEDJIcgFjntfMbsAEjQPENJ8Z/3fqK2UDiNZwMgl5hG7BDEAv1mSRD7+uuv6//+3/+rq666SsOHD5fD4ZDD4eh13Zo1azRt2jSVlJSosrJS8+bN05YtW3pcs3nzZs2bN0+VlZUqKSnRtGnT9PDDD/e45vDhw1q8eLGGDh0qn8+ncePG6c4775Tf7+92TUtLi3784x9r3Lhx8vl8Gjp0qJYsWaIjR45Y/p1gH2Nzpw9ONqvez74TAH0TX1JMl2IAVjHuieXeBOg/S4LYu+66Sz/84Q/1xBNP9Brkdbjlllu0ePFi7dmzR3PnztW0adP07LPP6pJLLtG6deu6XPPYY49p1qxZ2rBhgyZNmqRLL71UBw4c0LXXXqvbbrutyzXvvvuupkyZojVr1qiqqkoLFixQKBTSsmXLNHfuXLW2tnZa4/f7NWfOHN11111qbGzUggULNGLECK1evVpTpkzRe++9Z9l3gr1GVhaZSnb20twJQB+VF3k0c+zA6OundlNSDMAaxnuTxlYysUB/WRLETp8+XXfccYf++Mc/6uOPP5bX6+3x/Rs3btTKlStVVVWlN998U+vWrdOGDRu0adMmuVwuLV68WHV1daY1NTU1WrJkiUKhkNauXasXX3xRa9eu1TvvvKMxY8Zo+fLlevHFFzt91qJFi3TixAnddNNN2r17tx555BHt27dPV155pTZv3qx77rmn05q7775br776qqZPn679+/frkUce0datW7V8+XIdP35cS5YsseQ7wX4Oh0MTDfti99LcCUA/mEqK91BSDMAa7IkFkmNJEPuDH/xAy5Yt02WXXaYzzzyz1/evWLFCknT77bdr7Nix0ePTp0/Xddddp7q6Oj300EOmNb/61a9UX1+vBQsW6KqrrooeHzx4sH72s59JkpYvX25as23bNm3evFmDBg2KvkeS3G63fvGLX8jj8ej+++9XW1vs4hEIBPTAAw9Ikh588EGVlJREf7d06VJNmjRJL730kl5//fWkvxNSw1hSvJt9sQD64QvnDY6WFJ9sCmgrJcUALGAesdOmSIQxXkB/pLyxU0tLi55//nlJ0sKFCzv9vuPY+vXrTceffvrpbtfMnz9fPp9PGzduNO1z7Vhz2WWXdcoODx48WDNnzlRtba3++te/Ro9v3rxZp06d0ujRozVlypQ+nV+i3wmpMZHmTgASVF5oLil+mpJiABYwNnYKhSNqCYbSeDZA9kl5ELtv3z61trZq4MCBGj58eKffX3jhhZKkXbt2mY6/+eabpt8bFRQUaOLEifL7/dq/f3+f1nT3WYmsSfQ7ITWMQex7J5rYewKgX+YbSoo3UFIMwALGcmKJkmKgv9y9v8Vahw4dkqQugz1JKi4uVkVFhWpra9XQ0KDS0lLV19fr1KlTPa4bPny4tm/frurqak2aNKlPn9VxvLq6us/nl8iarr5TbyZMmNDl8YMHD2r06NG9rkfMp6qKVVzgUlMgpEhEevvjen36rMp0nxaQMbje9Gzu6ZLiYCiimqaAXn2vRp8be0bvCwGYcK2J8bqd0euK1B7EDi7rZRGAqJRnYhsbGyVJRUVF3b6nuLhYktTQ0GBa09O6+DV9+axUreluHVLD6XRowlBKigEkprzQo0soKQZgIYfDYdoX28CYHaBfUp6JRd/s3bu3y+PdPcVEzyYOK9e2D9obstDcCTDjetO7+ZOG6Ll3jkmS/rz3E921YILcrpQ/BwayGtcasxKvWzVNAUmM2QH6K+X/Be7o9tvc3Nzte5qamiQpWnZr7BDc3br4NX35rFSt6W4dUsfYoZhZsQD6a+55g1VwOmjtKCkGgGQwZgdIXMqD2JEjR0qSDh8+3OXvm5qaVFdXpwEDBkQDvrKyMpWXl/e4ruP4qFGj+vxZqVrT1XdCap1vaO504FiDWgJ0AQTQd2U+jy4ZF9sH+/Tuj9J4NgBygTGIbSSIBfol5UHs+PHj5fV6dfz4cR05cqTT73fs2CFJ0eZMHSZPnmz6vVEwGNSePXvk8/k0bty4Pq3p7rMSWZPod0LqnD2wRD5P+z/u4Yj09idkYwH0z7y4LsVBuhQDSEKJN7Yntp49sUC/pDyILSws1Jw5cyRJjz76aKffr127VlL7bFej+fPnm35v9NRTT8nv92vu3Lny+Xyd1qxfv16tra2mNUePHtXLL7+sAQMGaMaMGdHjM2bMUHl5uQ4ePKg33nijT+eX6HdC6ricDp03JFZSTHMnAP1lLCmubQ7q1fdOpvmMAGSzMsqJgYSlpSvF0qVLJUl33323Dhw4ED3+yiuv6Je//KUqKir0rW99y7Tm29/+tsrKyvTkk0/q8ccfjx4/duyYvv/970uSbr31VtOaadOmacaMGTp27Jh+8IMfRI+3tbXp+uuvVzAY1E033SSPJ/YkrKCgQDfeeKMk6YYbbojuZZWkFStWaNeuXZo1a5amTp2a9HdCahlLigliAfRXe0mxoUvxLroUA0hcibGcmMZOQL9YEsQ+/fTT+uxnPxv9v0CgvdOa8djTTz8dff/cuXN188036+TJk7rgggt0xRVXaN68ebrkkkvU1tam1atXq6KiwvQZlZWVWrVqlZxOpxYuXKg5c+boK1/5isaPH693331XS5cu1ezZszud2+rVq1VVVaWVK1dq0qRJ+trXvqbx48fr8ccf18UXX6wf/vCHndbcfvvt+sxnPqMtW7Zo7Nix+upXv6rPfvazuvXWWzVw4ECtWrWq05pEvhNSa4IhiN1NcycACZg/6czoz3/eS0kxgMSVF8aSKNUnm3p4J4B4lgSxx48f19atW6P/F4m0D242Hjt+/LhpzX333afVq1fr3HPP1bPPPqtXXnlFc+fO1aZNm3TFFVd0+TlXX321Nm3apC996UvauXOnnnnmGY0ZM0Zr1qzR8uXLu1wzduxY7dy5U4sWLdLx48f1xBNPyOl06o477tBzzz0nr9fbaY3P59MLL7ygO+64Q0VFRVq3bp2qq6u1aNEi7dixQ2effXaXn5XId0LqmJo7HW2QP0hzJwD9M/fcwSpwx0qKXzlISTGAxEwdNSD684v7jut4Q2sP7wZg5Ih0RJzICh2z1LqbtYbuBUNhTbjzzwq0tWdO/njjDE0aXpHekwL6IF3/3nO96dq3f71dG98+Kkn66kUj9K8LadqH3MC1JrVC4Yg+96/P6+NTfknSD//2HP3jrNFpPisgNZL9955J7cgbHpdT5xqaO+1mXyyABHx5UqxL8Z/foqQYQGJcToe+MnV49PUjr30ocktA3xDEIq9MHGrsUMy+WAD99/lzB0VLiuuag9pCSTGABH3lohFyONp/fu9Ek7ZX16b3hIAsQRCLvEKHYgDJKvV5NMvQpfgZuhQDSNCIyiJ9bswZ0de/3/ZhGs8GyB4EscgrEw1B7L5PGqL7YwGgP4wlxRvoUgwgCddcNCL689O7P1K9P5jGswGyA0Es8srYwSXyuNrrdgKhsPYfbUjzGQHIRp83dCk+1RLU5ndPpPmMAGSrL04YrIqi9nE7/mBY69/8KM1nBGQ+gljkFa/bpfFnlkZf7/2IkmIA/VfidWu2saR4NyXFABLjdbt01RRzgycAPSOIRd6ZODRWUkyHYgCJmm/sUrz3KCXFABL21U/HSop3HT6ltz6i+STQE4JY5J2JpuZO/EcCQGIoKQZglfFnluqCERXR13/YTjYW6AlBLPKOMYh9++N6tZE9AZCAEq9bfzM+VlL8NF2KASTha4Zs7OM7DssfDKXxbIDMRhCLvHPOmaVyOdubO7W2hfXu8cY0nxGAbDXvfGNJ8Sd0PAeQsC9PHqqiApckqd7fpj/v/STNZwRkLoJY5B2fx6Wxg0qirykpBpCoz587WN7TJcX1/jZtPkhJMYDElHjdpvFdzIwFukcQi7x0vmlfLM2dACSmvaR4UPQ1JcUAkvHVT4+M/vzKeydVfbIpjWcDZC6CWOSliQSxACwyz5A5+QslxQCScOHIClO1GA2egK4RxCIvTRxWFv1570f1CoUjaTwbANns8+cMMpcU06UYQIIcDodp3M6j2w/TgBLoAkEs8tK5Q8p0ureTWoIhvX+C5k4AElMcV1L8FCXFAJJw5ZRh8rjab1KONbTqpf3H03xGQOYhiEVeKipwa/TAWLnObkqKASRhvrGk+C1KigEkrqrEqy+ed2b09e9fo6QYiEcQi7xlbu5Eh2IAiZtzziD5PO3/SW3wt+mv75I5AZC4awwlxc+/c0zH6v1pPBsg8xDEIm9NoLkTAItQUgzASp8bc4aGVRRKkkLhiB7bcSTNZwRkFoJY5C1jJnbvR/UK09wJQBKMJcXPvnVUrW2hNJ4NgGzmcjr0lYuGR18/8tohRSLcpwAdCGKRt84bGutQ3Njapuqa5jSeDYBs16mk+ABdigEk7isXjZDjdBPKD042a+v7Nek9ISCDEMQib5V43Tr7jOLoa5o7AUhGUYFbc86JlRQ/vZuSYgCJG1ZRqJljB0Zf/4EGT0AUQSzy2kRjSTFBLIAkzTvfUFK8l5JiAMn5mqHB09O7P9aplmAazwbIHASxyGsTh8VKisnEAkiWqaS4tU0v76ekGEDi5p47WJXFBZKk1raw/vgGDZ4AiSAWeW5iXIdimiYASEZRgVufP2dw9PUzlBQDSEKB26mrpgyLvmZmLNCOIBZ5bcLQWBBb72/T4dqWNJ4NgFxgKimmSzGAJH3VUFK896N6xgICIohFnisv9GhUVVH0NSXFAJL1N+cMVKHHJYmSYgDJGzu4VBeOrIi+foRsLEAQC0wcai4pBoBk0KUYgNW+9umR0Z/XvXFE/iAVHshvBLHIe8Z9sWRiAVhh/iRzSTE3nACSMX/SEBUXnK7w8LfpT3t4OIb8RhCLvGfsULz3o3qaOwFI2t+MHxQtKW5sbdPLBygpBpC4Yq9bl18wNPr699soKUZ+I4hF3jOWE9c0BfTRKX8azwZALigscGnOuYaS4l0fpfFsAOSCay6KNXja+n6N3j/RlMazAdKLIBZ5b0BxgYZVFEZfsy8WgBW+bOhSvPHtY5QUA0jKBSMqNH5wafT1H7aTjUX+IogFZC4pJogFYIXZcSXFm/YfT/MZAchmDofDNG5n7euHFQyF03hGQPoQxAKSzh9Gh2IA1ioscOnz59KlGIB1rpwyTAWu9tv34w2teuGdY2k+IyA9CGIBSROMQexH9Wk8EwC55MuGLsUb6VIMIEkDigv0xQmDo68pKUa+IogFZG7udLyhVUfrae4EIHmzxw9S0emxGE2BkF6ipBhAkowzY59/55g+oSEl8hBBLCBpYKlXZ5b5oq8pKQZgBZ/Hpc+fG8uaPENJMYAkXTy6SsMHtDekDEekx3YcTvMZAalHEAucNtFQUrybIBaAReaff2b0Z0qKASTL6XSYxu088tqHCoeZcY/8QhALnGbuUMy+WADWiC8pfnEfJcUAkrNw6nA5He0/H6pp1qvvn0zvCQEpRhALnGbcF0s5MQCr+DwuzaWkGICFhlYU6pJxA6OvH3mNBk/ILwSxwGnnD48FsZ/U+/XOJ2RjAVhj3vmGLsVvU1IMIHlfM8yM/dOeT3SqOZjGswFSiyAWOG1QqVcjKgujr7/z8HadaGxN4xkByBWzxw9U8emS4mZKigFYYM45g3VGSYEkKdAW1ro3jqT5jIDUIYgFTnM4HLp9/nlynN5j8mFNi77z8HYyJgCSFt+l+GlKigEkqcDt1FUXDo++/t22Q4pEaPCE/EAQCxh8acKZ+uHfnhN9vfNQnW79w5t0/QOQtPmTYiXFz1FSDMACxi7F73zSwHQF5A2CWCDOd2aerW98JjZI/OndH+vev+xL4xkByAWzxsWXFB9L8xkByHZjBpXo02cNiL6mwRPyBUEsEMfhcGjZ5RNMXf9+8eJB/X7boTSeFYBs5/O4NPe8WEnxU7soKQaQvK9+Ovbg/Y9vfKTmQFsazwZIDYJYoAtul1MPfmOKzjmzNHrsn9bt0csHaMYCIHHzDV2Kn3/nmFoClBQDSM68889UidctSWpobdMzuz9J8xkB9iOIBbpR6vPooUWf1sBSryQpFI7o+t/u0P6jDWk+MwDZ6pJxA6M3m5QUA7BCUYFbl18wNPr6D5QUIw8QxAI9GFZRqFXXflqFnvZ9bA2tbVq8+jUda/Cn+cwAZCOfx6W55w6Kvn6KLsUALGCcGbvtgxodPN6YxrMB7EcQC/Ti/OHluv/rU6Kjd47Uteg7v95OGSCAhMyfFMuYPP82JcUAknf+sHLTFiiysch1BLFAH3zhvMG6Y/550ddvHj6lWx7ZyegdAP02c+wZ0ZLilmBIL1BSDCBJDofDlI19bMdhBUPhNJ4RYC+CWKCPFs84S9dOHxV9/ee9R/V/N7yTxjMCkI18Hpe+YOhS/PO/7NPxhtY0nhGAXHDFlGEqcLff2p9oDOi5t3lAhtxFEAv0kcPh0B1fPk9zzontZ/uvTe/pt69Wp/GsAGSjr0wdHv35veNN+sZ/v6oTjQSyABJXUVSgSyecGX39yGuMBkTuIogF+sHtcurfvz5F5w0pix6784976TAKoF8uHnOGvjd3XPT1gWON+uZ/b1VNUyCNZwUg2xlLil/af1wfn2pJ49kA9iGIBfqp2OvWqkWf1pllPknto3du/J+devvj+jSfGYBscvPcsbppzpjo631HG/SN/35VtQSyABL02bOrNLKySJIUjkhrtx9O8xkB9iCIBRJwZrlPDy26SEUF7aN3GlvbtGTNazpaz+gdAH33vS+M0w1/Mzr6+p1PGvTNX21VXTOBLID+czoduuai2HaFR7Z/SBNK5CSCWCBBE4aW64FvTJHz9Oidj0/59a1fv6bmQFt6TwxA1nA4HLrti+P1j7POjh576+N6/d1DW3WqOZjGMwOQrRZOHRG9Nzlc26ItB0+m94QAGxDEAkmYc85g/eTyCdHXe47U66bfvaEQTz0B9JHD4dD/d+k5+s7MT0WP7TlSr79ftVWnWghkAfTPmeU+/c34WBPKR7YzMxa5hyAWSNLfTz9LS2bEbj43vn1UP3367TSeEYBs43A49KN552rxjLOix948fErXrtqmBj+BLID+ucbQ4OnPez5hrz1yDkEsYIF/mn+u5p4bm/u4avP7+vWWD9J3QgCyjsPh0I+/fJ4WXXxW9NgbH9Zp0erX1NjKNgUAfTfnnEE6o8QrSQqEwnpi55E0nxFgLYJYwAIup0P3f/0CTRwWG73zz+v36rm3j6bxrABkG4fDoTsvO09/99mR0WOvV9dq8eptaiKQBdBHHpdTCw3zqB957UNFImx1Qu4giAUsUlTg1kPXflpDy9tH74Qj0nd/t1N7jpxK85kByCYOh0PLLp+or0+LBbKvfVCrxWtoHAeg74xdivcdbdCbh7kfQe4giAUsNLjMp4cWfVolXrckqTkQ0rd+/RrDxgH0i9Pp0E+vmKivXhTb17bt/Rp9a812tQRCaTwzANni7IElmvapyujrR147lMazAaxFEAtY7NwhZXrwmxfKdbq//dH6Vi1Zs509bQD6xel06J6rzjeVBL7y3kl95+Ht8gcJZAH07muGBk9PvvGRXtx3LI1nA1iHIBawwaxxA7VsQWz0ztsf1+u7/7NDbaFwGs8KQLZxOh3616sn6aopw6LH/vruCQJZAH3ytxOHqNQXqw5btPo1Xfeb13WkjgoxZDeCWMAm3/zMKP3DJWdHX7+w77j+ef1bNFYA0C8up0P3fmWyFlwwNHrs5QMndN1vX1drG4EsgO4VFrj0k8sm6HRxmCRpw95PNHf5S/qPF99VoI2H68hOBLGAjf6/S8/RpRPOjL7+zavVWrX5g/SdEICs5HI6tPwrk3XZ5Fgg++K+4/rfv91BIAugR1dPHa6nvjtTU0cNiB5rCYb0sw37dOnKTfrrgRNpPDsgMQSxgI2cTof+7asXaPKIiuixu59+S3/Z+0n6TgpAVnK7nPq3ayZr/vlDoseef+eYbvh/O8mmAOjReUPL9Og/TtfPvzJZVcUF0ePvHW/S3z20VTf8zw6aUCKrEMQCNisscOlXf3+RhlUUSpIiEenm37+hXYfr0ntiALKO2+XUfV+7wFThsfHto/ru73YoyJ57AD1wOh1aOHW4nr91tv5++ihTifHTuz7W55e/pP/adJBrCbICQSyQAgNLvVqz+NPR5gotwZC+9evt2vdJQ5rPDEC28bicuv/rU/SF8wZHj/1571Hd/Pud3HwC6FV5kUfLFkzUH2/8nC4wVIo1B0L6l2fe0byVL2vLQUqMkdkIYoEUGTu4VL/45lS5Tz/6PN7Qqi/dt0n/66Gtev6dowqHafgEoG8K3E49+I0L9flzBkWPPbP7E93yyBt0QQfQJxOHlevx/32x/vXq8zWgyBM9fuBYo77x31t10+926li9P41nCHSPIBZIoc+NPUM/vXKi6djLB05oyZrtmrP8Ra366/uq9wfTdHYAskmB26n/+LsL9TfjB0aPPb3rYy39w5sK8VAMQB84nQ599dMj9cJts/WNz4yUw1Bi/Mc3P9Kc5S/pVy+/x8MxZByCWCDFvvrpkfqPb16oc84sNR3/4GSzlj31lqb/y3P68ZN79O6xxjSdIYBs4XW79Iu/m6pLxsUC2T+++ZFue5RAFkDfVRQV6F+uPF/rrp+hScPLo8cbW9t099Nv68v//ldte78mjWcImBHEAmkw7/wh+tPNM/W773xWl04409RcoSkQ0sOvVGvuipf096u26YV3jlFqDKBbPo9L//W/pmrm2DOix57YeUTfX7uLaweAfpk8okJPXD9DP71yosoLYyXG73zSoGt++YqW/uENHW9oTeMZAu0IYoE0cTgcmj66Sv/5v6Zq0/f/Rv8462zTfzAkadP+41q85jXNWf6iVm9+Xw2UGgPoQnsge5EuHl0VPfbYjsP6/x4nkAXQPy6nQ9/8zCi9cNtsffWiEabfPb7jiOb8/EWt2fw+JcZIK4JYIAMMH1CkH/7tuXr1h5/XPVedr/GDO5ca//P6t/TZf3lOdz65RwePU2oMwKywwKVfXXuRPnt2ZfTYH7Yf1j+t200gC6DfKosL9K8LJ+nx6y/WhKFl0eMNrW36yfq3dPkDm/V6NSXGSA+CWCCDFBa49PVpI7Xhlpn6n+98Rl88b3CnUuNfv1Ktzy9/Sdeu2qYX9lFqDCCmqMCth679tKadFQtkf7ftQ930+53a+NZR1TYF0nh2ALLRhSMH6I83fk7LFkyIjgqUpLc+rtfVv3hF/+fRN3WykRJjpJYjEolwB5xFJkyYIEnau3dvms8EqfJhTbN++2q1frftkOr9bZ1+/6kzivX300dp4dThKvV5uvgLyHbp+vee6032amxt06JV27S9urbT70YPLNZFoyo1ddQATT1rgM4+o1gOY0tS5C2uNejNicZW/d8/vaO1rx82HS/zufV/Lj1H35g2Ui4n1xP0Ltl/7wliswwX+vzVHGjTup0fac2W97X/aOdy4uICl75y0Qj9/fRROntgSRrOEHbhxhKJaPAHde2qbdpxqK7H91UWF+jCkQN00VkDNHXUAJ0/rFw+jys1J4mMwrUGfbX9gxrdvm6P3vmkwXR84rAy/e3EIRo7qETjzyzViAFFchLUogsEsRmopaVF99xzj37/+9/r0KFDqqys1KWXXqq77rpLw4YNS+pvc6FHJBLRKwdPavWWD7Tx7aPq6t/g2eMHatHFZ+mSsQP5j0cO4MYSifIHQ/rD9g+1+d0Ter26Vicaey8nLnA5NXFYmS4663S2dtQAnVHiTcHZIt241qA/2kJh/ebVaq34y341tHauFJOkQo9LYwaVaNzgUo0bXKJxZ5Zq/OBSDSn3UQGS5whiM4zf79ff/M3f6NVXX9WQIUM0c+ZMffDBB9q2bZsGDhyoV199VWeffXbCf58LPYw+rGnWw698oN+/9qEauik1vmzSEA0fUKQzy30aUu7TmeU+yo6zDDeWsEIkEtGhmmZt/6BW26tr9Xp1TZdVHV05q6pIU0dV6qKzBuiiUQM0emAJD8hyENcaJOJYvV/3/OkdPbHzSJ/XlHrdGju4I7gt1fgzSzV2cIkGlngJbvMEQWyGuf322/XTn/5U06dP11/+8heVlLSXda5YsUK33nqrZs2apRdffDHhv8+FHl1pDrTpiZ1HtGbzBzpwrPeb0hKvW4PLvBpSXmgKboeU+3RmWaGGlPtUUeThPyQZghtL2OVUc1A7PqzV6x/Uant1jd74sE7+YO9jM8oLPbpwZEU0Wzt5eIUKCyhBznZca5CMnYdq9Ze3jurA0QbtP9qoQzXN/f4bA4o80cB23JmlGne6LLmiqMCGM0Y6EcRmkEAgoEGDBunUqVPasWOHpkyZYvr95MmTtWvXLm3fvl1Tp05N6DO40KMnkUhEWw6e1OrNH+i5d7ouNe4rr9upM8t9OrOsI8gtjAt2fTqjxEs2JgW4sUSqBENhvfVRvbZX12pHdXtge7S+966jbqdD5w4p04DiAhUXuFRY4FJxgVtFBS4Vnf7fwgKXir0uFXrcKva6TL+Lvsfj4pqSRlxrYKWm1ja9e6xR+482aP/RBu072qgDRxv08Sl/v//WoFJvLLgdXKIhFYUqcDlV4HaowOWSx+04/doZ+1+3Ux6XU26ng4fyGSjZf+/dvb8FfbV582adOnVKo0eP7hTAStLChQu1a9curV+/PuEgFuiJw+HQjDFnaMaYM3ToZLMe23FY751o0ienWvTxKb+O1vsVDPUtsm1tC6v6ZLOqT3b/JNXtdGhwmU+DyrwqKnBF/8PhOf2/XsN/TDyG/6gUuE7/zng87vedfo475nYxIQywmsfl1OQRFZo8okLf+tynFIlEdLi2Ra+fDmi3f1CrfUcbOj0gawtHtPvIKUvOodBzOtgtcKnI41ZRp4C3/Vrj9bjkPX2d8bpd8noMP7udp1+7TL9vX2c8zrUEsEux1x29nhidagnq3WMN2vdJLMDdf7Shxz37xxpadayhVX9990S/z8PhaN/rHx/cdtxPeNxOeaP3Ko7T73HJ43Ko0OM6/RAu9qCtsMAVvRb5POaHcB2/87l5IGc3glgLvfnmm5KkCy+8sMvfdxzftWtXys4J+WtkVZG+94VxpmPhcEQnmwL65JRfH59q0dF6vz4+5T/92q9P6tuP96WcUGq/cT1S16IjdS12fIUeOR06HSi7OgXGPQXFxsA6ujbuPS6HQw5H+3/4HGr/WWp/SOA0HHNIp39nfO2QQ5LT2f4+xR03/k2nw6Hpo6tS/v92QF85HA6NqCzSiMoiXTGlvTFhgz+onYfqovtqdx6qU3MgZNlntgRDagla9/d643I6OgXDBa72m1yPyyGX0yF39GenPE6H3C6H3E5n7H9PH/O4nKff75DH2f6zx9W+3u10nH5f7G+1Z4jaz6Ora0RP15jYut6vNQ4p+v+PQLqVF3o0dVSlpo6qNB0/2diq/UfNge2+Txq6HC/YH5FI+4P51rawlMJxth1BbSwQjv1cVOA+HQC75PM45XQ4ovcYzo57DYcj+rPTGbtv6HhPx/tdzl7WRu9p2q8NUs/Xmfaf4q4lcdcZxf/e8LfkkD7zqSrbRy0RxFro0KFDkqThw4d3+fuO49XV1b3+rY4Ue7yDBw9q9OjRCZ4h8p3T6dDAUq8Glnp1/vDyLt8TiUR0qiUYDWqjAe7pbO4np/+vu06EqRKOSP5guM8BdybyuBw68NN56T4Nrjfol1KfR5eMG6hLxg2U1N6h9J1P2m82mwNtag6E1BQIqSXQdvp/Q2pqbVNLMNT+u9M/N7W2v6c5GEpq60OyQuGImgOh04F4MH0nYrObPj9WS+MebKYa1xr0pKrEq+klXtPD3UgkomMNrdr3SYMhuG3UqZagAm1hBUJhBdrCCp7+37Zw5uySTPUDuUzyzl2XyuW0t08CQayFGhvbG+oUFXX9pLO4uFiS1NDQ0OXvgUzgcDhUUVSgiqICnTukrNv3Nba2RQPaYw1+tba1/wek4z8qrYb/qBiPB7o4Znxfa4b/R8lKsWeiQPZyu5yaOKxcE4d1/WCsN5FIRP5gOBoAtwfBbV0Gv82BkPzBUPR609rW/nNr0PBzx/Fg7OeOa4s/GFKOXk56xdUG2cjhaN+2NLjMF31w1pNwOBK91wjG3U90XDeCocjp+4+QAm2Rbt/bfm0JRa9LLcH261L7z6f/N/pzW1Y/VLdaKrYgE8RmqO42OXf3FBNItRKvW2MGlWjMoBLbPysUjpj+A9Q5EA51CqJNAXUwFlgb18S/v+P34UhEkYgUUfsNdvv/tr9WJKJwRIro9HsM71P0faffc3qtuvxbEXkyZC8e1xukk8PhaC+zK3ApFcX1bcYb1Lhg1xgQB0MRtYXDp68/EbWF2h+odfxvMBRRKByOvq8tFIn+PhiOKBSKKBg9Hvt9MNT+NzuOx19fjNeInq4xHdlr47Wlu2tNJNJewpluXGtgN6fTIZ+zfa9qqoXDkWj2tSPYbQ60mV63mALg9gdzrW1h031DOCyFI4bXp3/uuDcJhSM9/j4cif99+5ro87serjPtv+58rTFdZ6QerzVSah7SE8RaqGOcTnNz141wmpqaJEmlpaUpOycgF7icDrnS9B8lALnFfboxXLE33WcCIJc4nQ4Ve90q9hJepUJmpAFyxMiRIyVJhw8f7vL3HcdHjRqVsnMCAAAAgFxCEGuhyZMnS5J27NjR5e87jk+aNCll5wQAAAAAuYQg1kIzZsxQeXm5Dh48qDfeeKPT79euXStJuuyyy1J8ZgAAAACQGwhiLVRQUKAbb7xRknTDDTdE98BK0ooVK7Rr1y7NmjVLU6dOTdcpAgAAAEBWY+exxW6//XZt3LhRW7Zs0dixYzVz5kxVV1dr69atGjhwoFatWpXuUwQAAACArEUm1mI+n08vvPCC7vj/27u30KbPP47jn6ymSZMeYqWgIhtY0Y0NxQNVJ04cYlsPBHUTBGEewEsLeilVqDeKitu1DIu72MXqASneCBNEeyFbUVFxhUw6Vw+Iq9qTocL3f/GnwZI01bTJ7/ek7xfkos+Thzy/fB8+8O0vJM3NikQiunTpkrq7u7Vr1y51dnZq7ty5Xm8RAAAAAJzFndg8KCsrU0tLi1paWrzeCgAAAAAUFe7EAgAAAACcQRMLAAAAAHAGTSwAAAAAwBk0sQAAAAAAZ9DEAgAAAACcQRMLAAAAAHAGTSwAAAAAwBk0sQAAAAAAZ9DEAgAAAACcQRMLAAAAAHAGTSwAAAAAwBk0sQAAAAAAZ9DEAgAAAACcQRMLAAAAAHAGTSwAAAAAwBk0sQAAAAAAZ9DEAgAAAACcQRMLAAAAAHBGwMzM603gw1VUVGh4eFi1tbVebwVAgSQSCQWDQfX19RX0dckbYGohawAUykTzhjuxjolGowoGg1mfk0gklEgkCrQjfAhq4k+u1CUYDCoajRb8dcfKG1fet6mI2viTK3XxMmuGh4edeI+mMlfO8VTmUo0mmjfciS1CX375pSTp/v37Hu8EI6iJP1GX3PC++Re18SfqMj7eI/+jRv43lWrEnVgAAAAAgDNoYgEAAAAAzqCJBQAAAAA4gyYWAAAAAOAMmlgAAAAAgDP4dmIAAAAAgDO4EwsAAAAAcAZNLAAAAADAGTSxAAAAAABn0MQCAAAAAJxBEwsAAAAAcAZNLAAAAADAGTSxAAAAAABn0MQCAAAAAJxBE1skhoaGdPjwYc2fP1/hcFizZ8/Wnj171NPT4/XWisKff/6pY8eOaevWrZozZ44CgYACgcC461pbW1VXV6fy8nJVV1drw4YN6ujoyLrm5s2b2rBhg6qrq1VeXq66ujqdO3dusi6laAwODurSpUvau3evFixYoHA4rGg0qkWLFqmlpUX9/f1jrqUuuSFn8ouc8SeyJr/IlcIgX/yNnMmBwXlDQ0O2YsUKk2SzZs2y7du3W11dnUmympoaSyQSXm/RefF43CSlPbJpamoySVZWVmbxeNzq6+tt2rRpVlJSYhcvXsy4pq2tzUpKSiwQCNiaNWts27ZtFovFTJIdPHgwD1fmrjNnzqTq8MUXX9j3339v9fX1VlFRYZLs888/t+fPn6etoy65IWfyj5zxJ7Imf8iVwiFf/I2c+Xg0sUXg0KFDJslWrlxpfX19qfFTp06ZJFuzZo13mysSx44ds+bmZrt8+bI9ffrUQqFQ1vC/evWqSbIZM2ZYV1dXaryjo8NKS0stFotZb2/vqDUvX760yspKk2Tnz59PjT979szmzZtnkuzatWuTfWnOam1ttX379tmDBw9GjT958sQWL15skmzHjh2j5qhL7siZ/CNn/ImsyR9ypXDIF38jZz4eTazjksmkVVVVmSTr7OxMm1+4cKFJsj/++MOD3RWv8cK/sbHRJNnp06fT5vbv32+S7OTJk6PGjx8/bpIsHo+nrblw4YJJsk2bNk1061NCR0eHSbJQKGTJZDI1Tl1yQ854g5zxP7Imd+SKt8gXd5AzmdHEOu733383SVZbW5txvqWlxSTZkSNHCruxIpct/AcHB1Pzjx8/Tpu/fv16xv8wf/PNNybJfvnll7Q1yWTSwuGwhcNhGxoampRrKGYDAwOpj+U8efLEzKjLRJAz3iBn/I+syR254i3yxR3kTGZ8sZPj7ty5I0lasmRJxvmR8bt37xZsT1PdX3/9pWQyqZqaGs2ZMydtfqyaZKtlaWmpvvrqK719+1ZdXV152HVx+fvvvyVJwWBQ1dXVkqjLRJAz/sN59geyJnfkin9xhv2FnMmMJtZx//zzjyRlPMDvj3d3dxdsT1PdeDWJRqOKxWLq7e1VX1+fJOnNmzd6/fp11nXU8sP99NNPkqSGhgaFQiFJ1GUiyBn/4Tz7A1mTO3LFvzjD/kLOZEYT67iRr9yORCIZ56PRqCSlDjDyb7yaSOl1ef+r06nlxFy5ckU///yzgsGgjh49mhqnLrkjZ/yH8+w9smZiyBX/4gz7BzkzNppYAEXj4cOH2rlzp8xMJ06c0KJFi7zeEoAiRNYAyDdyJjuaWMeVl5dL+v+PJGcyMDAgSaqoqCjYnqa68WoipddlZE22ddQyu56eHjU0NKi3t1cHDhxQU1PTqHnqkjtyxn84z94hayYHueJfnGHvkTPjo4l13KeffipJ+vfffzPOj4x/9tlnBdvTVDdeTQYGBvTq1StNnz49FRKVlZWqqqrKuo5aju2///7T+vXr1d3drd27d+vkyZNpz6EuuSNn/Ifz7A2yZvKQK/7FGfYWOfNhaGIdN/LRgs7OzozzI+MLFy4s2J6mugULFigUCunFixfq6elJmx+rJtlqOTw8rHv37ikcDmv+/Pl52LW7+vv71djYqAcPHmjr1q06c+aMAoFA2vOoS+7IGf/hPBceWTO5yBX/4gx7h5z5cDSxjlu1apWqqqqUSCR0+/bttPm2tjZJ0ubNmwu8s6mrrKxM3377rSTpt99+S5sfqyYbN24cNf++9vZ2vX37VuvWrVM4HJ7sLTsrmUwqHo/r1q1bqq+v16+//qqSkpKMz6UuuSNn/IfzXFhkzeQjV/yLM+wNcuYjefw7tZgEhw4dMkn29ddfW39/f2r81KlTGX/oGBOX7UfCzcyuXr1qkmzGjBnW1dWVGu/o6LBQKGSxWMx6e3tHrXn58qVVVlaaJDt//nxq/Pnz5zZv3jyTZNeuXZvsS3HWu3fvbMuWLSbJVq9ebQMDA+OuoS65I2cKj5zxB7Imf8gV75Av/kLOfDya2CIwNDRky5cvN0k2a9Ys2759e+rvmpoaSyQSXm/Ree3t7bZ8+fLUIxAImKRRY+3t7aPWNDU1mSSLRCIWj8etsbHRpk2bZiUlJXbx4sWMr9PW1maffPKJBQIBW7t2rX333XcWi8VMkh04cKAAV+qOH3/80SSZJNuyZYv98MMPGR8vXrwYtY665IacyT9yxp/ImvwhVwqHfPE3cubj0cQWicHBQWtubrba2lorLS21mTNn2q5du+zx48deb60onD17NhUuYz3Onj2bcd3SpUstEolYLBazhoYGu3nzZtbXunHjhjU0NFgsFrNIJGLLli2z1tbWPF2Zu44cOTJuTSTZo0eP0tZSl9yQM/lFzvgTWZNf5EphkC/+Rs58vICZWeYPGgMAAAAA4C98sRMAAAAAwBk0sQAAAAAAZ9DEAgAAAACcQRMLAAAAAHAGTSwAAAAAwBk0sQAAAAAAZ9DEAgAAAACcQRMLAAAAAHAGTSwAAAAAwBk0sQAAAAAAZ9DEAgAAAACcQRMLAAAAAHAGTSwAAAAAwBk0sQAAAAAAZ9DEAgAAAACcQRMLAAAAAHAGTSwAAAAAwBn/A5KbwgYB7+ckAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 960x720 with 3 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"meta = httpx.get(\n",
" f\"{endpoint}/cog/statistics\",\n",
" params = {\n",
" \"url\": rgba_path\n",
" }\n",
").json()\n",
"print(meta)\n",
" \n",
"fig, axs = subplots(1, 3, sharey=True, tight_layout=True, dpi=150)\n",
"\n",
"# Red (index 1)\n",
"axs[0].plot(meta[\"b1\"][\"histogram\"][1][0:-1], meta[\"b1\"][\"histogram\"][0])\n",
"\n",
"# Green (index 2)\n",
"axs[1].plot(meta[\"b2\"][\"histogram\"][1][0:-1], meta[\"b2\"][\"histogram\"][0])\n",
"\n",
"# Blue (index 3)\n",
"axs[2].plot(meta[\"b3\"][\"histogram\"][1][0:-1], meta[\"b3\"][\"histogram\"][0])"
]
},
{
"cell_type": "markdown",
"id": "9436ae69",
"metadata": {},
"source": [
"### 4 bands - RGB + Nir"
]
},
{
"cell_type": "code",
"execution_count": 94,
"id": "07dbe1a1",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{\n",
" \"bounds\": [\n",
" -74.11091849437823,\n",
" 40.69954173337543,\n",
" -74.09280142563541,\n",
" 40.713328767614236\n",
" ],\n",
" \"minzoom\": 14,\n",
" \"maxzoom\": 19,\n",
" \"band_metadata\": [\n",
" [\n",
" \"b1\",\n",
" {}\n",
" ],\n",
" [\n",
" \"b2\",\n",
" {}\n",
" ],\n",
" [\n",
" \"b3\",\n",
" {}\n",
" ],\n",
" [\n",
" \"b4\",\n",
" {}\n",
" ]\n",
" ],\n",
" \"band_descriptions\": [\n",
" [\n",
" \"b1\",\n",
" \"\"\n",
" ],\n",
" [\n",
" \"b2\",\n",
" \"\"\n",
" ],\n",
" [\n",
" \"b3\",\n",
" \"\"\n",
" ],\n",
" [\n",
" \"b4\",\n",
" \"\"\n",
" ]\n",
" ],\n",
" \"dtype\": \"uint16\",\n",
" \"nodata_type\": \"None\",\n",
" \"colorinterp\": [\n",
" \"red\",\n",
" \"green\",\n",
" \"blue\",\n",
" \"undefined\"\n",
" ],\n",
" \"height\": 5000,\n",
" \"count\": 4,\n",
" \"overviews\": [\n",
" 2,\n",
" 4,\n",
" 8,\n",
" 16\n",
" ],\n",
" \"width\": 5000,\n",
" \"driver\": \"GTiff\"\n",
"}\n"
]
}
],
"source": [
"r = httpx.get(\n",
" f\"{endpoint}/cog/info\",\n",
" params = {\n",
" \"url\": rgbnir_path\n",
" }\n",
").json()\n",
"\n",
"print(json.dumps(r, indent=4))"
]
},
{
"cell_type": "code",
"execution_count": 95,
"id": "7da9fa69",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'b1': {'min': 545.0, 'max': 65535.0, 'mean': 20660.144067764282, 'count': 1048576.0, 'sum': 21663731226.0, 'std': 11006.10071993407, 'median': 16881.0, 'majority': 65535.0, 'minority': 545.0, 'unique': 57690.0, 'histogram': [[32667.0, 323087.0, 249671.0, 187506.0, 124373.0, 55474.0, 37423.0, 20222.0, 7008.0, 11145.0], [545.0, 7044.0, 13543.0, 20042.0, 26541.0, 33040.0, 39539.0, 46038.0, 52537.0, 59036.0, 65535.0]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 1048576.0, 'percentile_2': 5986.0, 'percentile_98': 51173.0}, 'b2': {'min': 4901.0, 'max': 65535.0, 'mean': 24491.405985832214, 'count': 1048576.0, 'sum': 25681100523.0, 'std': 9912.035488072834, 'median': 20985.0, 'majority': 65535.0, 'minority': 4901.0, 'unique': 54315.0, 'histogram': [[21829.0, 116681.0, 453373.0, 198199.0, 127940.0, 55158.0, 32940.0, 21485.0, 9027.0, 11944.0], [4901.0, 10964.4, 17027.8, 23091.199999999997, 29154.6, 35218.0, 41281.399999999994, 47344.799999999996, 53408.2, 59471.6, 65535.0]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 1048576.0, 'percentile_2': 10898.0, 'percentile_98': 53408.0}, 'b3': {'min': 5849.0, 'max': 65535.0, 'mean': 22554.940170288086, 'count': 1048576.0, 'sum': 23650568944.0, 'std': 8360.999768153828, 'median': 19166.0, 'majority': 17057.0, 'minority': 5849.0, 'unique': 48887.0, 'histogram': [[7191.0, 391386.0, 303408.0, 192775.0, 74951.0, 33479.0, 21255.0, 10851.0, 11357.0, 1923.0], [5849.0, 11817.6, 17786.2, 23754.800000000003, 29723.4, 35692.0, 41660.600000000006, 47629.200000000004, 53597.8, 59566.4, 65535.0]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 1048576.0, 'percentile_2': 13040.0, 'percentile_98': 48795.0}, 'b4': {'min': 1395.0, 'max': 65535.0, 'mean': 23921.398420333862, 'count': 1048576.0, 'sum': 25083404270.0, 'std': 14798.210219010021, 'median': 24345.0, 'majority': 65535.0, 'minority': 1395.0, 'unique': 58047.0, 'histogram': [[214135.0, 166318.0, 83049.0, 129069.0, 161506.0, 117910.0, 93204.0, 61756.0, 9580.0, 12049.0], [1395.0, 7809.0, 14223.0, 20637.0, 27051.0, 33465.0, 39879.0, 46293.0, 52707.0, 59121.0, 65535.0]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 1048576.0, 'percentile_2': 5160.0, 'percentile_98': 52920.5}}\n"
]
},
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x169294d30>]"
]
},
"execution_count": 95,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 960x720 with 4 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"meta = httpx.get(\n",
" f\"{endpoint}/cog/statistics\",\n",
" params = {\n",
" \"url\": rgbnir_path\n",
" }\n",
").json()\n",
"print(meta)\n",
" \n",
"fig, axs = subplots(1, 4, sharey=True, tight_layout=True, dpi=150)\n",
"\n",
"# Red (index 1)\n",
"axs[0].plot(meta[\"b1\"][\"histogram\"][1][0:-1], meta[\"b1\"][\"histogram\"][0])\n",
"\n",
"# Green (index 2)\n",
"axs[1].plot(meta[\"b2\"][\"histogram\"][1][0:-1], meta[\"b2\"][\"histogram\"][0])\n",
"\n",
"# Blue (index 3)\n",
"axs[2].plot(meta[\"b3\"][\"histogram\"][1][0:-1], meta[\"b3\"][\"histogram\"][0])\n",
"\n",
"# Nir (index 3)\n",
"axs[3].plot(meta[\"b4\"][\"histogram\"][1][0:-1], meta[\"b4\"][\"histogram\"][0])"
]
},
{
"cell_type": "code",
"execution_count": 96,
"id": "33321825",
"metadata": {
"scrolled": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'tilejson': '2.2.0', 'version': '1.0.0', 'scheme': 'xyz', 'tiles': ['https://titiler.xyz/cog/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?url=https%3A%2F%2Fnjogis-imagery.s3.us-west-2.amazonaws.com%2F2020%2Fcog%2FK7A3.tif&bidx=1&bidx=2&bidx=3'], 'minzoom': 14, 'maxzoom': 19, 'bounds': [-74.11091849437823, 40.69954173337543, -74.09280142563541, 40.713328767614236], 'center': [-74.10185996000682, 40.706435250494835, 14]}\n"
]
},
{
"data": {
"text/html": [
"<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><span style=\"color:#565656\">Make this Notebook Trusted to load map: File -> Trust Notebook</span><iframe srcdoc=\"&lt;!DOCTYPE html&gt;\n",
"&lt;head&gt; \n",
" &lt;meta http-equiv=&quot;content-type&quot; content=&quot;text/html; charset=UTF-8&quot; /&gt;\n",
" \n",
" &lt;script&gt;\n",
" L_NO_TOUCH = false;\n",
" L_DISABLE_3D = false;\n",
" &lt;/script&gt;\n",
" \n",
" &lt;style&gt;html, body {width: 100%;height: 100%;margin: 0;padding: 0;}&lt;/style&gt;\n",
" &lt;style&gt;#map {position:absolute;top:0;bottom:0;right:0;left:0;}&lt;/style&gt;\n",
" &lt;script src=&quot;https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.js&quot;&gt;&lt;/script&gt;\n",
" &lt;script src=&quot;https://code.jquery.com/jquery-1.12.4.min.js&quot;&gt;&lt;/script&gt;\n",
" &lt;script src=&quot;https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js&quot;&gt;&lt;/script&gt;\n",
" &lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.js&quot;&gt;&lt;/script&gt;\n",
" &lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.css&quot;/&gt;\n",
" &lt;link rel=&quot;stylesheet&quot; href=&quot;https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css&quot;/&gt;\n",
" &lt;link rel=&quot;stylesheet&quot; href=&quot;https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css&quot;/&gt;\n",
" &lt;link rel=&quot;stylesheet&quot; href=&quot;https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css&quot;/&gt;\n",
" &lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.css&quot;/&gt;\n",
" &lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdn.jsdelivr.net/gh/python-visualization/folium/folium/templates/leaflet.awesome.rotate.min.css&quot;/&gt;\n",
" \n",
" &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width,\n",
" initial-scale=1.0, maximum-scale=1.0, user-scalable=no&quot; /&gt;\n",
" &lt;style&gt;\n",
" #map_541b8cc292bc0ac74159909b7a8752db {\n",
" position: relative;\n",
" width: 100.0%;\n",
" height: 100.0%;\n",
" left: 0.0%;\n",
" top: 0.0%;\n",
" }\n",
" &lt;/style&gt;\n",
" \n",
"&lt;/head&gt;\n",
"&lt;body&gt; \n",
" \n",
" &lt;div class=&quot;folium-map&quot; id=&quot;map_541b8cc292bc0ac74159909b7a8752db&quot; &gt;&lt;/div&gt;\n",
" \n",
"&lt;/body&gt;\n",
"&lt;script&gt; \n",
" \n",
" var map_541b8cc292bc0ac74159909b7a8752db = L.map(\n",
" &quot;map_541b8cc292bc0ac74159909b7a8752db&quot;,\n",
" {\n",
" center: [40.706435250494835, -74.10185996000682],\n",
" crs: L.CRS.EPSG3857,\n",
" zoom: 14,\n",
" zoomControl: true,\n",
" preferCanvas: false,\n",
" }\n",
" );\n",
"\n",
" \n",
"\n",
" \n",
" \n",
" var tile_layer_d1e73e6b999176d3ae300a45d0ef5dc9 = L.tileLayer(\n",
" &quot;https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png&quot;,\n",
" {&quot;attribution&quot;: &quot;Data by \\u0026copy; \\u003ca href=\\&quot;http://openstreetmap.org\\&quot;\\u003eOpenStreetMap\\u003c/a\\u003e, under \\u003ca href=\\&quot;http://www.openstreetmap.org/copyright\\&quot;\\u003eODbL\\u003c/a\\u003e.&quot;, &quot;detectRetina&quot;: false, &quot;maxNativeZoom&quot;: 18, &quot;maxZoom&quot;: 18, &quot;minZoom&quot;: 0, &quot;noWrap&quot;: false, &quot;opacity&quot;: 1, &quot;subdomains&quot;: &quot;abc&quot;, &quot;tms&quot;: false}\n",
" ).addTo(map_541b8cc292bc0ac74159909b7a8752db);\n",
" \n",
" \n",
" var tile_layer_39b96d5dee408058d9eb17f1fcbeee9c = L.tileLayer(\n",
" &quot;https://titiler.xyz/cog/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?url=https%3A%2F%2Fnjogis-imagery.s3.us-west-2.amazonaws.com%2F2020%2Fcog%2FK7A3.tif\\u0026bidx=1\\u0026bidx=2\\u0026bidx=3&quot;,\n",
" {&quot;attribution&quot;: &quot;njogis&quot;, &quot;detectRetina&quot;: false, &quot;maxNativeZoom&quot;: 18, &quot;maxZoom&quot;: 18, &quot;minZoom&quot;: 0, &quot;noWrap&quot;: false, &quot;opacity&quot;: 1, &quot;subdomains&quot;: &quot;abc&quot;, &quot;tms&quot;: false}\n",
" ).addTo(map_541b8cc292bc0ac74159909b7a8752db);\n",
" \n",
"&lt;/script&gt;\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x169518a60>"
]
},
"execution_count": 96,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"r = httpx.get(\n",
" f\"{endpoint}/cog/tilejson.json\",\n",
" params = (\n",
" (\"url\", rgbnir_path),\n",
" (\"bidx\", 1),\n",
" (\"bidx\", 2),\n",
" (\"bidx\", 3),\n",
" )\n",
").json()\n",
"print(r)\n",
"m = Map(\n",
" location=(r[\"center\"][1], r[\"center\"][0]),\n",
" zoom_start=r[\"minzoom\"]\n",
")\n",
"\n",
"aod_layer = TileLayer(\n",
" tiles=r[\"tiles\"][0],\n",
" opacity=1,\n",
" attr=\"njogis\"\n",
")\n",
"aod_layer.add_to(m)\n",
"m"
]
},
{
"cell_type": "code",
"execution_count": 97,
"id": "04472ac2",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'tilejson': '2.2.0', 'version': '1.0.0', 'scheme': 'xyz', 'tiles': ['https://titiler.xyz/cog/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?url=https%3A%2F%2Fnjogis-imagery.s3.us-west-2.amazonaws.com%2F2020%2Fcog%2FK7A3.tif&bidx=4&bidx=1&bidx=2'], 'minzoom': 14, 'maxzoom': 19, 'bounds': [-74.11091849437823, 40.69954173337543, -74.09280142563541, 40.713328767614236], 'center': [-74.10185996000682, 40.706435250494835, 14]}\n"
]
},
{
"data": {
"text/html": [
"<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><span style=\"color:#565656\">Make this Notebook Trusted to load map: File -> Trust Notebook</span><iframe srcdoc=\"&lt;!DOCTYPE html&gt;\n",
"&lt;head&gt; \n",
" &lt;meta http-equiv=&quot;content-type&quot; content=&quot;text/html; charset=UTF-8&quot; /&gt;\n",
" \n",
" &lt;script&gt;\n",
" L_NO_TOUCH = false;\n",
" L_DISABLE_3D = false;\n",
" &lt;/script&gt;\n",
" \n",
" &lt;style&gt;html, body {width: 100%;height: 100%;margin: 0;padding: 0;}&lt;/style&gt;\n",
" &lt;style&gt;#map {position:absolute;top:0;bottom:0;right:0;left:0;}&lt;/style&gt;\n",
" &lt;script src=&quot;https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.js&quot;&gt;&lt;/script&gt;\n",
" &lt;script src=&quot;https://code.jquery.com/jquery-1.12.4.min.js&quot;&gt;&lt;/script&gt;\n",
" &lt;script src=&quot;https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js&quot;&gt;&lt;/script&gt;\n",
" &lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.js&quot;&gt;&lt;/script&gt;\n",
" &lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.css&quot;/&gt;\n",
" &lt;link rel=&quot;stylesheet&quot; href=&quot;https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css&quot;/&gt;\n",
" &lt;link rel=&quot;stylesheet&quot; href=&quot;https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css&quot;/&gt;\n",
" &lt;link rel=&quot;stylesheet&quot; href=&quot;https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css&quot;/&gt;\n",
" &lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.css&quot;/&gt;\n",
" &lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdn.jsdelivr.net/gh/python-visualization/folium/folium/templates/leaflet.awesome.rotate.min.css&quot;/&gt;\n",
" \n",
" &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width,\n",
" initial-scale=1.0, maximum-scale=1.0, user-scalable=no&quot; /&gt;\n",
" &lt;style&gt;\n",
" #map_ba42cbd9e7d383efc6e6c8d4bf6d4da0 {\n",
" position: relative;\n",
" width: 100.0%;\n",
" height: 100.0%;\n",
" left: 0.0%;\n",
" top: 0.0%;\n",
" }\n",
" &lt;/style&gt;\n",
" \n",
"&lt;/head&gt;\n",
"&lt;body&gt; \n",
" \n",
" &lt;div class=&quot;folium-map&quot; id=&quot;map_ba42cbd9e7d383efc6e6c8d4bf6d4da0&quot; &gt;&lt;/div&gt;\n",
" \n",
"&lt;/body&gt;\n",
"&lt;script&gt; \n",
" \n",
" var map_ba42cbd9e7d383efc6e6c8d4bf6d4da0 = L.map(\n",
" &quot;map_ba42cbd9e7d383efc6e6c8d4bf6d4da0&quot;,\n",
" {\n",
" center: [40.706435250494835, -74.10185996000682],\n",
" crs: L.CRS.EPSG3857,\n",
" zoom: 14,\n",
" zoomControl: true,\n",
" preferCanvas: false,\n",
" }\n",
" );\n",
"\n",
" \n",
"\n",
" \n",
" \n",
" var tile_layer_ca3fc4fc9bea70d96958f1342ffd727c = L.tileLayer(\n",
" &quot;https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png&quot;,\n",
" {&quot;attribution&quot;: &quot;Data by \\u0026copy; \\u003ca href=\\&quot;http://openstreetmap.org\\&quot;\\u003eOpenStreetMap\\u003c/a\\u003e, under \\u003ca href=\\&quot;http://www.openstreetmap.org/copyright\\&quot;\\u003eODbL\\u003c/a\\u003e.&quot;, &quot;detectRetina&quot;: false, &quot;maxNativeZoom&quot;: 18, &quot;maxZoom&quot;: 18, &quot;minZoom&quot;: 0, &quot;noWrap&quot;: false, &quot;opacity&quot;: 1, &quot;subdomains&quot;: &quot;abc&quot;, &quot;tms&quot;: false}\n",
" ).addTo(map_ba42cbd9e7d383efc6e6c8d4bf6d4da0);\n",
" \n",
" \n",
" var tile_layer_c4893e03ce52e9420c306b582b89a803 = L.tileLayer(\n",
" &quot;https://titiler.xyz/cog/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?url=https%3A%2F%2Fnjogis-imagery.s3.us-west-2.amazonaws.com%2F2020%2Fcog%2FK7A3.tif\\u0026bidx=4\\u0026bidx=1\\u0026bidx=2&quot;,\n",
" {&quot;attribution&quot;: &quot;njogis&quot;, &quot;detectRetina&quot;: false, &quot;maxNativeZoom&quot;: 18, &quot;maxZoom&quot;: 18, &quot;minZoom&quot;: 0, &quot;noWrap&quot;: false, &quot;opacity&quot;: 1, &quot;subdomains&quot;: &quot;abc&quot;, &quot;tms&quot;: false}\n",
" ).addTo(map_ba42cbd9e7d383efc6e6c8d4bf6d4da0);\n",
" \n",
"&lt;/script&gt;\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x169adf400>"
]
},
"execution_count": 97,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"r = httpx.get(\n",
" f\"{endpoint}/cog/tilejson.json\",\n",
" params = (\n",
" (\"url\", rgbnir_path),\n",
" (\"bidx\", 4),\n",
" (\"bidx\", 1),\n",
" (\"bidx\", 2),\n",
" )\n",
").json()\n",
"print(r)\n",
"\n",
"m = Map(\n",
" location=(r[\"center\"][1], r[\"center\"][0]),\n",
" zoom_start=r[\"minzoom\"]\n",
")\n",
"\n",
"aod_layer = TileLayer(\n",
" tiles=r[\"tiles\"][0],\n",
" opacity=1,\n",
" attr=\"njogis\"\n",
")\n",
"aod_layer.add_to(m)\n",
"m"
]
},
{
"cell_type": "code",
"execution_count": 98,
"id": "114b38f0",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'tilejson': '2.2.0', 'version': '1.0.0', 'scheme': 'xyz', 'tiles': ['https://titiler.xyz/cog/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?url=https%3A%2F%2Fnjogis-imagery.s3.us-west-2.amazonaws.com%2F2020%2Fcog%2FK7A3.tif&expression=%28b4-b1%29%2F%28b4%2Bb1%29&rescale=-1%2C1&colormap_name=viridis'], 'minzoom': 14, 'maxzoom': 19, 'bounds': [-74.11091849437823, 40.69954173337543, -74.09280142563541, 40.713328767614236], 'center': [-74.10185996000682, 40.706435250494835, 14]}\n"
]
},
{
"data": {
"text/html": [
"<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><span style=\"color:#565656\">Make this Notebook Trusted to load map: File -> Trust Notebook</span><iframe srcdoc=\"&lt;!DOCTYPE html&gt;\n",
"&lt;head&gt; \n",
" &lt;meta http-equiv=&quot;content-type&quot; content=&quot;text/html; charset=UTF-8&quot; /&gt;\n",
" \n",
" &lt;script&gt;\n",
" L_NO_TOUCH = false;\n",
" L_DISABLE_3D = false;\n",
" &lt;/script&gt;\n",
" \n",
" &lt;style&gt;html, body {width: 100%;height: 100%;margin: 0;padding: 0;}&lt;/style&gt;\n",
" &lt;style&gt;#map {position:absolute;top:0;bottom:0;right:0;left:0;}&lt;/style&gt;\n",
" &lt;script src=&quot;https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.js&quot;&gt;&lt;/script&gt;\n",
" &lt;script src=&quot;https://code.jquery.com/jquery-1.12.4.min.js&quot;&gt;&lt;/script&gt;\n",
" &lt;script src=&quot;https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js&quot;&gt;&lt;/script&gt;\n",
" &lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.js&quot;&gt;&lt;/script&gt;\n",
" &lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.css&quot;/&gt;\n",
" &lt;link rel=&quot;stylesheet&quot; href=&quot;https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css&quot;/&gt;\n",
" &lt;link rel=&quot;stylesheet&quot; href=&quot;https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css&quot;/&gt;\n",
" &lt;link rel=&quot;stylesheet&quot; href=&quot;https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css&quot;/&gt;\n",
" &lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.css&quot;/&gt;\n",
" &lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdn.jsdelivr.net/gh/python-visualization/folium/folium/templates/leaflet.awesome.rotate.min.css&quot;/&gt;\n",
" \n",
" &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width,\n",
" initial-scale=1.0, maximum-scale=1.0, user-scalable=no&quot; /&gt;\n",
" &lt;style&gt;\n",
" #map_aed3c1b3a11ea42f72b34b2afdd29fbf {\n",
" position: relative;\n",
" width: 100.0%;\n",
" height: 100.0%;\n",
" left: 0.0%;\n",
" top: 0.0%;\n",
" }\n",
" &lt;/style&gt;\n",
" \n",
"&lt;/head&gt;\n",
"&lt;body&gt; \n",
" \n",
" &lt;div class=&quot;folium-map&quot; id=&quot;map_aed3c1b3a11ea42f72b34b2afdd29fbf&quot; &gt;&lt;/div&gt;\n",
" \n",
"&lt;/body&gt;\n",
"&lt;script&gt; \n",
" \n",
" var map_aed3c1b3a11ea42f72b34b2afdd29fbf = L.map(\n",
" &quot;map_aed3c1b3a11ea42f72b34b2afdd29fbf&quot;,\n",
" {\n",
" center: [40.706435250494835, -74.10185996000682],\n",
" crs: L.CRS.EPSG3857,\n",
" zoom: 14,\n",
" zoomControl: true,\n",
" preferCanvas: false,\n",
" }\n",
" );\n",
"\n",
" \n",
"\n",
" \n",
" \n",
" var tile_layer_c1a7fe41fa6d3382133f3ced8b5abc0a = L.tileLayer(\n",
" &quot;https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png&quot;,\n",
" {&quot;attribution&quot;: &quot;Data by \\u0026copy; \\u003ca href=\\&quot;http://openstreetmap.org\\&quot;\\u003eOpenStreetMap\\u003c/a\\u003e, under \\u003ca href=\\&quot;http://www.openstreetmap.org/copyright\\&quot;\\u003eODbL\\u003c/a\\u003e.&quot;, &quot;detectRetina&quot;: false, &quot;maxNativeZoom&quot;: 18, &quot;maxZoom&quot;: 18, &quot;minZoom&quot;: 0, &quot;noWrap&quot;: false, &quot;opacity&quot;: 1, &quot;subdomains&quot;: &quot;abc&quot;, &quot;tms&quot;: false}\n",
" ).addTo(map_aed3c1b3a11ea42f72b34b2afdd29fbf);\n",
" \n",
" \n",
" var tile_layer_d3471f1120a177222eadaa03dce57061 = L.tileLayer(\n",
" &quot;https://titiler.xyz/cog/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?url=https%3A%2F%2Fnjogis-imagery.s3.us-west-2.amazonaws.com%2F2020%2Fcog%2FK7A3.tif\\u0026expression=%28b4-b1%29%2F%28b4%2Bb1%29\\u0026rescale=-1%2C1\\u0026colormap_name=viridis&quot;,\n",
" {&quot;attribution&quot;: &quot;njogis&quot;, &quot;detectRetina&quot;: false, &quot;maxNativeZoom&quot;: 18, &quot;maxZoom&quot;: 18, &quot;minZoom&quot;: 0, &quot;noWrap&quot;: false, &quot;opacity&quot;: 1, &quot;subdomains&quot;: &quot;abc&quot;, &quot;tms&quot;: false}\n",
" ).addTo(map_aed3c1b3a11ea42f72b34b2afdd29fbf);\n",
" \n",
"&lt;/script&gt;\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x146430160>"
]
},
"execution_count": 98,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"r = httpx.get(\n",
" f\"{endpoint}/cog/tilejson.json\",\n",
" params = (\n",
" (\"url\", rgbnir_path),\n",
" (\"expression\", \"(b4-b1)/(b4+b1)\"), # NDVI\n",
" (\"rescale\", \"-1,1\"), # Ratio values should be between -1 and +1\n",
" (\"colormap_name\", \"viridis\"),\n",
" )\n",
").json()\n",
"print(r)\n",
"\n",
"m = Map(\n",
" location=(r[\"center\"][1], r[\"center\"][0]),\n",
" zoom_start=r[\"minzoom\"]\n",
")\n",
"\n",
"aod_layer = TileLayer(\n",
" tiles=r[\"tiles\"][0],\n",
" opacity=1,\n",
" attr=\"njogis\"\n",
")\n",
"aod_layer.add_to(m)\n",
"m"
]
},
{
"cell_type": "markdown",
"id": "b4dc80da",
"metadata": {},
"source": [
"## STAC support"
]
},
{
"cell_type": "code",
"execution_count": 99,
"id": "29ff35f4",
"metadata": {
"scrolled": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[\n",
" \"visual\",\n",
" \"pan\",\n",
" \"ms\"\n",
"]\n"
]
}
],
"source": [
"r = httpx.get(\n",
" f\"{endpoint}/stac/assets\",\n",
" params = {\n",
" \"url\": stac_path\n",
" }\n",
").json()\n",
"\n",
"print(json.dumps(r, indent=4))"
]
},
{
"cell_type": "code",
"execution_count": 100,
"id": "21f7a9d4",
"metadata": {
"scrolled": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{\n",
" \"visual\": {\n",
" \"bounds\": [\n",
" 38.77115511410053,\n",
" 8.909402280786303,\n",
" 38.81950605991044,\n",
" 8.957480838823233\n",
" ],\n",
" \"minzoom\": 12,\n",
" \"maxzoom\": 19,\n",
" \"band_metadata\": [\n",
" [\n",
" \"b1\",\n",
" {}\n",
" ],\n",
" [\n",
" \"b2\",\n",
" {}\n",
" ],\n",
" [\n",
" \"b3\",\n",
" {}\n",
" ]\n",
" ],\n",
" \"band_descriptions\": [\n",
" [\n",
" \"b1\",\n",
" \"\"\n",
" ],\n",
" [\n",
" \"b2\",\n",
" \"\"\n",
" ],\n",
" [\n",
" \"b3\",\n",
" \"\"\n",
" ]\n",
" ],\n",
" \"dtype\": \"uint8\",\n",
" \"nodata_type\": \"Mask\",\n",
" \"colorinterp\": [\n",
" \"red\",\n",
" \"green\",\n",
" \"blue\"\n",
" ],\n",
" \"driver\": \"GTiff\",\n",
" \"height\": 17408,\n",
" \"width\": 17408,\n",
" \"overviews\": [\n",
" 2,\n",
" 4,\n",
" 8,\n",
" 16,\n",
" 32,\n",
" 64\n",
" ],\n",
" \"count\": 3\n",
" },\n",
" \"pan\": {\n",
" \"bounds\": [\n",
" 38.77115511410053,\n",
" 8.909402280786303,\n",
" 38.81950605991044,\n",
" 8.957480838823233\n",
" ],\n",
" \"minzoom\": 12,\n",
" \"maxzoom\": 18,\n",
" \"band_metadata\": [\n",
" [\n",
" \"b1\",\n",
" {}\n",
" ]\n",
" ],\n",
" \"band_descriptions\": [\n",
" [\n",
" \"b1\",\n",
" \"\"\n",
" ]\n",
" ],\n",
" \"dtype\": \"uint16\",\n",
" \"nodata_type\": \"Nodata\",\n",
" \"colorinterp\": [\n",
" \"gray\"\n",
" ],\n",
" \"nodata_value\": 0.0,\n",
" \"driver\": \"GTiff\",\n",
" \"height\": 12452,\n",
" \"width\": 12452,\n",
" \"overviews\": [\n",
" 2,\n",
" 4,\n",
" 8,\n",
" 16,\n",
" 32\n",
" ],\n",
" \"count\": 1\n",
" },\n",
" \"ms\": {\n",
" \"bounds\": [\n",
" 38.77115511410053,\n",
" 8.909402280786303,\n",
" 38.81950605991044,\n",
" 8.957480838823233\n",
" ],\n",
" \"minzoom\": 12,\n",
" \"maxzoom\": 16,\n",
" \"band_metadata\": [\n",
" [\n",
" \"b1\",\n",
" {}\n",
" ],\n",
" [\n",
" \"b2\",\n",
" {}\n",
" ],\n",
" [\n",
" \"b3\",\n",
" {}\n",
" ],\n",
" [\n",
" \"b4\",\n",
" {}\n",
" ]\n",
" ],\n",
" \"band_descriptions\": [\n",
" [\n",
" \"b1\",\n",
" \"\"\n",
" ],\n",
" [\n",
" \"b2\",\n",
" \"\"\n",
" ],\n",
" [\n",
" \"b3\",\n",
" \"\"\n",
" ],\n",
" [\n",
" \"b4\",\n",
" \"\"\n",
" ]\n",
" ],\n",
" \"dtype\": \"uint16\",\n",
" \"nodata_type\": \"Nodata\",\n",
" \"colorinterp\": [\n",
" \"gray\",\n",
" \"undefined\",\n",
" \"undefined\",\n",
" \"undefined\"\n",
" ],\n",
" \"nodata_value\": 0.0,\n",
" \"driver\": \"GTiff\",\n",
" \"height\": 3113,\n",
" \"width\": 3113,\n",
" \"overviews\": [\n",
" 2,\n",
" 4,\n",
" 8\n",
" ],\n",
" \"count\": 4\n",
" }\n",
"}\n"
]
}
],
"source": [
"info = httpx.get(\n",
" f\"{endpoint}/stac/info\",\n",
" params = {\n",
" \"url\": stac_path\n",
" }\n",
").json()\n",
"\n",
"print(json.dumps(info, indent=4))"
]
},
{
"cell_type": "code",
"execution_count": 79,
"id": "6aaddf3c",
"metadata": {
"scrolled": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'tilejson': '2.2.0', 'version': '1.0.0', 'scheme': 'xyz', 'tiles': ['https://titiler.xyz/stac/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?url=https%3A%2F%2Fmaxar-ard-samples.s3.amazonaws.com%2Fv2%2Faddis-ababa%2F37%2F033311333031%2F2014-01-29%2F105041001000BD00.json&assets=visual'], 'minzoom': 12, 'maxzoom': 19, 'bounds': [38.771185084350314, 8.909402280786303, 38.81948241866229, 8.957480838823232], 'center': [38.795333751506305, 8.933441559804766, 12]}\n"
]
},
{
"data": {
"text/html": [
"<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><span style=\"color:#565656\">Make this Notebook Trusted to load map: File -> Trust Notebook</span><iframe srcdoc=\"&lt;!DOCTYPE html&gt;\n",
"&lt;head&gt; \n",
" &lt;meta http-equiv=&quot;content-type&quot; content=&quot;text/html; charset=UTF-8&quot; /&gt;\n",
" \n",
" &lt;script&gt;\n",
" L_NO_TOUCH = false;\n",
" L_DISABLE_3D = false;\n",
" &lt;/script&gt;\n",
" \n",
" &lt;style&gt;html, body {width: 100%;height: 100%;margin: 0;padding: 0;}&lt;/style&gt;\n",
" &lt;style&gt;#map {position:absolute;top:0;bottom:0;right:0;left:0;}&lt;/style&gt;\n",
" &lt;script src=&quot;https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.js&quot;&gt;&lt;/script&gt;\n",
" &lt;script src=&quot;https://code.jquery.com/jquery-1.12.4.min.js&quot;&gt;&lt;/script&gt;\n",
" &lt;script src=&quot;https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js&quot;&gt;&lt;/script&gt;\n",
" &lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.js&quot;&gt;&lt;/script&gt;\n",
" &lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.css&quot;/&gt;\n",
" &lt;link rel=&quot;stylesheet&quot; href=&quot;https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css&quot;/&gt;\n",
" &lt;link rel=&quot;stylesheet&quot; href=&quot;https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css&quot;/&gt;\n",
" &lt;link rel=&quot;stylesheet&quot; href=&quot;https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css&quot;/&gt;\n",
" &lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.css&quot;/&gt;\n",
" &lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdn.jsdelivr.net/gh/python-visualization/folium/folium/templates/leaflet.awesome.rotate.min.css&quot;/&gt;\n",
" \n",
" &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width,\n",
" initial-scale=1.0, maximum-scale=1.0, user-scalable=no&quot; /&gt;\n",
" &lt;style&gt;\n",
" #map_ac5de5a908525aecf1724040d68b3f41 {\n",
" position: relative;\n",
" width: 100.0%;\n",
" height: 100.0%;\n",
" left: 0.0%;\n",
" top: 0.0%;\n",
" }\n",
" &lt;/style&gt;\n",
" \n",
"&lt;/head&gt;\n",
"&lt;body&gt; \n",
" \n",
" &lt;div class=&quot;folium-map&quot; id=&quot;map_ac5de5a908525aecf1724040d68b3f41&quot; &gt;&lt;/div&gt;\n",
" \n",
"&lt;/body&gt;\n",
"&lt;script&gt; \n",
" \n",
" var map_ac5de5a908525aecf1724040d68b3f41 = L.map(\n",
" &quot;map_ac5de5a908525aecf1724040d68b3f41&quot;,\n",
" {\n",
" center: [8.933441559804768, 38.79533058700548],\n",
" crs: L.CRS.EPSG3857,\n",
" zoom: 12,\n",
" zoomControl: true,\n",
" preferCanvas: false,\n",
" }\n",
" );\n",
"\n",
" \n",
"\n",
" \n",
" \n",
" var tile_layer_86ba96ab3f086bda04eb196e2724c9b8 = L.tileLayer(\n",
" &quot;https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png&quot;,\n",
" {&quot;attribution&quot;: &quot;Data by \\u0026copy; \\u003ca href=\\&quot;http://openstreetmap.org\\&quot;\\u003eOpenStreetMap\\u003c/a\\u003e, under \\u003ca href=\\&quot;http://www.openstreetmap.org/copyright\\&quot;\\u003eODbL\\u003c/a\\u003e.&quot;, &quot;detectRetina&quot;: false, &quot;maxNativeZoom&quot;: 18, &quot;maxZoom&quot;: 18, &quot;minZoom&quot;: 0, &quot;noWrap&quot;: false, &quot;opacity&quot;: 1, &quot;subdomains&quot;: &quot;abc&quot;, &quot;tms&quot;: false}\n",
" ).addTo(map_ac5de5a908525aecf1724040d68b3f41);\n",
" \n",
" \n",
" var tile_layer_afc103dafbbc7b5021f0c23baead44b7 = L.tileLayer(\n",
" &quot;https://titiler.xyz/stac/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?url=https%3A%2F%2Fmaxar-ard-samples.s3.amazonaws.com%2Fv2%2Faddis-ababa%2F37%2F033311333031%2F2014-01-29%2F105041001000BD00.json\\u0026assets=visual&quot;,\n",
" {&quot;attribution&quot;: &quot;Maxar&quot;, &quot;detectRetina&quot;: false, &quot;maxNativeZoom&quot;: 18, &quot;maxZoom&quot;: 18, &quot;minZoom&quot;: 0, &quot;noWrap&quot;: false, &quot;opacity&quot;: 1, &quot;subdomains&quot;: &quot;abc&quot;, &quot;tms&quot;: false}\n",
" ).addTo(map_ac5de5a908525aecf1724040d68b3f41);\n",
" \n",
"&lt;/script&gt;\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x169adf7c0>"
]
},
"execution_count": 79,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"visual_info = info[\"visual\"]\n",
"bounds = visual_info[\"bounds\"]\n",
"\n",
"r = httpx.get(\n",
" f\"{endpoint}/stac/tilejson.json\",\n",
" params = (\n",
" (\"url\", stac_path),\n",
" (\"assets\", \"visual\"),\n",
" (\"minzoom\", visual_info[\"minzoom\"]),\n",
" (\"maxzoom\", visual_info[\"maxzoom\"]),\n",
" )\n",
").json()\n",
"print(r)\n",
"\n",
"m = Map(\n",
" location=((bounds[1] + bounds[3]) / 2,(bounds[0] + bounds[2]) / 2),\n",
" zoom_start=r[\"minzoom\"]\n",
")\n",
"\n",
"aod_layer = TileLayer(\n",
" tiles=r[\"tiles\"][0],\n",
" opacity=1,\n",
" attr=\"Maxar\"\n",
")\n",
"aod_layer.add_to(m)\n",
"m"
]
},
{
"cell_type": "markdown",
"id": "467e43a2",
"metadata": {},
"source": [
"## Multiple Projection"
]
},
{
"cell_type": "code",
"execution_count": 103,
"id": "c63ec4af",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Supported TMS:\n",
"- CanadianNAD83_LCC\n",
"- EuropeanETRS89_LAEAQuad\n",
"- LINZAntarticaMapTilegrid\n",
"- NZTM2000\n",
"- NZTM2000Quad\n",
"- UPSAntarcticWGS84Quad\n",
"- UPSArcticWGS84Quad\n",
"- UTM31WGS84Quad\n",
"- WGS1984Quad\n",
"- WebMercatorQuad\n",
"- WorldCRS84Quad\n",
"- WorldMercatorWGS84Quad\n"
]
}
],
"source": [
"import json\n",
"\n",
"import httpx\n",
"\n",
"from ipyleaflet import (\n",
" Map,\n",
" basemaps,\n",
" basemap_to_tiles,\n",
" TileLayer,\n",
" WMSLayer,\n",
" GeoJSON,\n",
" projections\n",
")\n",
"\n",
"\n",
"r = httpx.get(f\"{endpoint}/tileMatrixSets\").json()\n",
"\n",
"print(\"Supported TMS:\")\n",
"for tms in r[\"tileMatrixSets\"]:\n",
" print(\"-\", tms[\"id\"])"
]
},
{
"cell_type": "code",
"execution_count": 104,
"id": "aca3c4ab",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "3ea018db2a864f73900f892deb5b6914",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Map(center=[0, 0], controls=(ZoomControl(options=['position', 'zoom_in_text', 'zoom_in_title', 'zoom_out_text'…"
]
},
"execution_count": 104,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"url = \"https://s3.amazonaws.com/opendata.remotepixel.ca/cogs/natural_earth/world.tif\" # Natural Earth WORLD tif\n",
"\n",
"\n",
"r = httpx.get(\n",
" f\"{endpoint}/cog/WorldCRS84Quad/tilejson.json\", params = {\"url\": url}\n",
").json()\n",
"\n",
"m = Map(center=(0, 0), zoom=1, basemap={}, crs=projections.EPSG4326)\n",
"\n",
"layer = TileLayer(url=r[\"tiles\"][0], opacity=1)\n",
"m.add_layer(layer)\n",
"m"
]
},
{
"cell_type": "code",
"execution_count": 105,
"id": "65ed3481",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "0d691411a4ef476b830f7dae19c88972",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Map(center=[50, 65], controls=(ZoomControl(options=['position', 'zoom_in_text', 'zoom_in_title', 'zoom_out_tex…"
]
},
"execution_count": 105,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"url = \"https://s3.amazonaws.com/opendata.remotepixel.ca/cogs/natural_earth/world.tif\" # Natural Earth WORLD tif\n",
"\n",
"r = httpx.get(\n",
" f\"{endpoint}/cog/EuropeanETRS89_LAEAQuad/tilejson.json\", params = {\"url\": url}\n",
").json()\n",
"\n",
"my_projection = {\n",
" 'name': 'EPSG:3035',\n",
" 'custom': True, #This is important, it tells ipyleaflet that this projection is not on the predefined ones.\n",
" 'proj4def': '+proj=laea +lat_0=52 +lon_0=10 +x_0=4321000 +y_0=3210000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs',\n",
" 'origin': [6500000.0, 5500000.0],\n",
" 'resolutions': [\n",
" 8192.0,\n",
" 4096.0,\n",
" 2048.0,\n",
" 1024.0,\n",
" 512.0,\n",
" 256.0\n",
" ]\n",
"}\n",
"\n",
"m = Map(center=(50, 65), zoom=0, basemap={}, crs=my_projection)\n",
"\n",
"layer = TileLayer(url=r[\"tiles\"][0], opacity=1)\n",
"m.add_layer(layer)\n",
"m"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "3cb74e1c",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "3b6135c9",
"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.13"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment