From 17d6b2901eb6c487af0438d47f3e220ac8a70e00 Mon Sep 17 00:00:00 2001 From: Aimee Barciauskas Date: Mon, 8 Dec 2025 18:07:26 -0800 Subject: [PATCH 1/8] Remove from nav --- mkdocs.yml | 9 --------- 1 file changed, 9 deletions(-) diff --git a/mkdocs.yml b/mkdocs.yml index 21fc6fe..db6b223 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -31,15 +31,6 @@ nav: - Overview: "visualization/overview.md" - Titiler: - Ecosystem overview: "visualization/titiler/overview.md" - - Titiler-CMR: - - Performance benchmarking: - - "visualization/titiler/titiler-cmr/benchmark-tiles.ipynb" - - Timeseries statistics: "visualization/titiler/titiler-cmr/benchmark-stats.ipynb" - - Compatibility testing: - - "visualization/titiler/titiler-cmr/compatibility.ipynb" - - "visualization/titiler/titiler-cmr/find-netcdf4-datasets.ipynb" - - "visualization/titiler/titiler-cmr/test-netcdf4-datasets.ipynb" - - "visualization/titiler/titiler-cmr/summarize-netcdf4-results.ipynb" - API Reference: - Benchmarking: From 11b8771655ed35922f54c4702323f0fc92858c34 Mon Sep 17 00:00:00 2001 From: Aimee Barciauskas Date: Mon, 8 Dec 2025 18:20:24 -0800 Subject: [PATCH 2/8] Moved docs from datacube benchmark --- .../titiler/titiler-cmr/benchmark-stats.ipynb | 905 ------- .../titiler/titiler-cmr/benchmark-tiles.ipynb | 2111 ----------------- .../titiler/titiler-cmr/compatibility.ipynb | 484 ---- .../titiler-cmr/find-netcdf4-datasets.ipynb | 432 ---- .../output/cmr_collections_netcdf4.csv | 1944 --------------- ..._collections_netcdf4_updated_saved_all.csv | 1991 ---------------- ...ity_report_netcdf4_2025-10-06_10-04-53.csv | 1916 --------------- .../summarize-netcdf4-results.ipynb | 587 ----- .../titiler-cmr/test-netcdf4-datasets.ipynb | 206 -- mkdocs.yml | 1 - packages/datacube-benchmark/README.md | 1 - packages/datacube-benchmark/pyproject.toml | 51 - .../src/datacube_benchmark/__init__.py | 32 - .../src/datacube_benchmark/chunks.py | 115 - .../src/datacube_benchmark/config.py | 16 - .../src/datacube_benchmark/create.py | 354 --- .../src/datacube_benchmark/defaults.py | 99 - .../src/datacube_benchmark/open.py | 97 - .../src/datacube_benchmark/query.py | 190 -- .../datacube_benchmark/titiler/__init__.py | 31 - .../titiler/cmr/__init__.py | 0 .../titiler/cmr/benchmark.py | 1026 -------- .../src/datacube_benchmark/titiler/config.py | 120 - .../src/datacube_benchmark/titiler/utils.py | 365 --- .../src/datacube_benchmark/types.py | 5 - .../src/datacube_benchmark/utils.py | 59 - pyproject.toml | 4 - uv.lock | 613 ----- 28 files changed, 13755 deletions(-) delete mode 100644 docs/visualization/titiler/titiler-cmr/benchmark-stats.ipynb delete mode 100644 docs/visualization/titiler/titiler-cmr/benchmark-tiles.ipynb delete mode 100644 docs/visualization/titiler/titiler-cmr/compatibility.ipynb delete mode 100644 docs/visualization/titiler/titiler-cmr/find-netcdf4-datasets.ipynb delete mode 100644 docs/visualization/titiler/titiler-cmr/output/cmr_collections_netcdf4.csv delete mode 100644 docs/visualization/titiler/titiler-cmr/output/cmr_collections_netcdf4_updated_saved_all.csv delete mode 100644 docs/visualization/titiler/titiler-cmr/output/compatibility_report_netcdf4_2025-10-06_10-04-53.csv delete mode 100644 docs/visualization/titiler/titiler-cmr/summarize-netcdf4-results.ipynb delete mode 100644 docs/visualization/titiler/titiler-cmr/test-netcdf4-datasets.ipynb delete mode 100644 packages/datacube-benchmark/README.md delete mode 100644 packages/datacube-benchmark/pyproject.toml delete mode 100644 packages/datacube-benchmark/src/datacube_benchmark/__init__.py delete mode 100644 packages/datacube-benchmark/src/datacube_benchmark/chunks.py delete mode 100644 packages/datacube-benchmark/src/datacube_benchmark/config.py delete mode 100644 packages/datacube-benchmark/src/datacube_benchmark/create.py delete mode 100644 packages/datacube-benchmark/src/datacube_benchmark/defaults.py delete mode 100644 packages/datacube-benchmark/src/datacube_benchmark/open.py delete mode 100644 packages/datacube-benchmark/src/datacube_benchmark/query.py delete mode 100644 packages/datacube-benchmark/src/datacube_benchmark/titiler/__init__.py delete mode 100644 packages/datacube-benchmark/src/datacube_benchmark/titiler/cmr/__init__.py delete mode 100644 packages/datacube-benchmark/src/datacube_benchmark/titiler/cmr/benchmark.py delete mode 100644 packages/datacube-benchmark/src/datacube_benchmark/titiler/config.py delete mode 100644 packages/datacube-benchmark/src/datacube_benchmark/titiler/utils.py delete mode 100644 packages/datacube-benchmark/src/datacube_benchmark/types.py delete mode 100644 packages/datacube-benchmark/src/datacube_benchmark/utils.py diff --git a/docs/visualization/titiler/titiler-cmr/benchmark-stats.ipynb b/docs/visualization/titiler/titiler-cmr/benchmark-stats.ipynb deleted file mode 100644 index f39f8df..0000000 --- a/docs/visualization/titiler/titiler-cmr/benchmark-stats.ipynb +++ /dev/null @@ -1,905 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "b44dbc99", - "metadata": {}, - "source": [ - "# Benchmarking statistics\n", - "\n", - "This notebook shows how to benchmark the `/timeseries/statistics` endpoint of a TiTiler-CMR deployment and understand how performance varies under different parameters. \n", - "\n", - "In Titiler-CMR, the `/timeseries/statistics` endpoint computes statistics for all points/intervals along a timeseries and over a specified geometry. The performance of this endpoint can vary based on several factors that we will explore in this notebook.\n", - "\n", - "-----------------------------------\n", - "\n", - "**In this notebook, you'll learn**:\n", - "\n", - "- How to benchmark the `/timeseries/statistics` endpoint across different parameters\n", - "- What factors impact the performance of the `/timeseries/statistics` endpoint in TiTiler-CMR\n", - "- Tips on how to use the endpoint effectively to avoid any timeouts or performance issues" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "18a0edb6-7220-4910-854d-3b07d4e4f417", - "metadata": {}, - "outputs": [], - "source": [ - "import pandas as pd\n", - "import json\n", - "\n", - "from datacube_benchmark.titiler import (\n", - " DatasetParams,\n", - " benchmark_statistics,\n", - " create_bbox_feature,\n", - ")\n", - "\n", - "endpoint = \"https://staging.openveda.cloud/api/titiler-cmr\"" - ] - }, - { - "cell_type": "markdown", - "id": "3bb768a9", - "metadata": {}, - "source": [ - "### Introduction\n", - "\n", - "The `/timeseries/statistics` endpoint will produce summary statistics for an AOI for all points along a timeseries. This typically involves reading multiple granules, performing reprojection/resampling/mosaicking, and then computing statistics over the specified area of interest .\n", - "\n", - "This endpoint returns a GeoJSON FeatureCollection with statistics for each time point in the timeseries.\n", - "\n", - "\n", - "The performance of this endpoint can vary based on several factors, including:\n", - "- The size and complexity of the geometry (e.g., a small polygon vs a large bounding box)\n", - "- The number of granules that need to be read and processed to cover the geometry\n", - "- The length of the time series (i.e., how many time points i.e. granules)\n" - ] - }, - { - "cell_type": "markdown", - "id": "034cd95c", - "metadata": {}, - "source": [ - "We want to define the parameters for the CMR dataset we want to benchmark. The `DatasetParams` class encapsulates all the necessary information to interact with a specific dataset via TiTiler-CMR.\n" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "4e7a8f91-ce75-4afc-85de-b1a6b4b0f48d", - "metadata": {}, - "outputs": [], - "source": [ - "concept_id = \"C2036881735-POCLOUD\"\n", - "backend = \"xarray\"\n", - "datetime_range = \"2022-03-01T00:00:01Z/2022-03-01T23:59:59Z\"\n", - "variable = \"analysed_sst\"\n", - "step = \"P1D\"\n", - "temporal_mode = \"point\"\n", - "\n", - "\n", - "ds_xarray = DatasetParams(\n", - " concept_id=concept_id,\n", - " backend=backend,\n", - " datetime_range=datetime_range,\n", - " variable=variable,\n", - " step=step,\n", - " temporal_mode=temporal_mode,\n", - ")\n", - "\n", - "concept_id = \"C2021957657-LPCLOUD\"\n", - "backend = \"rasterio\"\n", - "datetime_range = \"2022-03-01T00:00:01Z/2022-03-01T23:59:59Z\"\n", - "bands_regex = (\"B[0-9][0-9]\",)\n", - "bands = ([\"B04\", \"B03\", \"B02\"],)\n", - "step = \"P1D\"\n", - "temporal_mode = \"point\"\n", - "\n", - "\n", - "ds_rasterio = DatasetParams(\n", - " concept_id=concept_id,\n", - " backend=backend,\n", - " datetime_range=datetime_range,\n", - " bands_regex=bands_regex,\n", - " bands=bands,\n", - " step=step,\n", - " temporal_mode=temporal_mode,\n", - ")" - ] - }, - { - "cell_type": "markdown", - "id": "bd0861dc", - "metadata": {}, - "source": [ - "### GeoJson Feature\n", - "\n", - "The `/timeseries/statistics` endpoint requires a GeoJSON `Feature` or `FeatureCollection` to define the area over which statistics will be computed.\n", - "\n", - "The `create_bbox_feature` function can be used to create a bounding box feature.\n" - ] - }, - { - "cell_type": "markdown", - "id": "6e94b767", - "metadata": {}, - "source": [ - "`benchmark_statistics` is a wrapper function that runs the benchmark for the `/timeseries/statistics` endpoint and returns a DataFrame with the results including the statistics computed and the time taken for each request.\n", - "\n", - "Here is an example of how to use it:" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "627eca1c", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "=== TiTiler-CMR Statistics Benchmark ===\n", - "Client: 2 physical / 4 logical cores | RAM: 30.89 GiB\n", - "Dataset: C2036881735-POCLOUD (xarray)\n", - "Statistics result:\n", - " Success: True\n", - " Elapsed: 1.48s\n", - " Timesteps: 1\n" - ] - } - ], - "source": [ - "gulf_geometry = create_bbox_feature(-98.676, 18.857, -81.623, 31.097)\n", - "stats_result = await benchmark_statistics(\n", - " endpoint=endpoint,\n", - " dataset=ds_xarray,\n", - " geometry=gulf_geometry,\n", - " timeout_s=300.0,\n", - ")\n", - "print(\"Statistics result:\")\n", - "print(f\" Success: {stats_result['success']}\")\n", - "print(f\" Elapsed: {stats_result['elapsed_s']:.2f}s\")\n", - "print(f\" Timesteps: {stats_result['n_timesteps']}\")" - ] - }, - { - "cell_type": "markdown", - "id": "4dadd078", - "metadata": {}, - "source": [ - "You can also access the statistics output from the endpoint easily: `stats_result['statistics']`" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "816e47f2", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " Statistics:\n", - "{\n", - " \"2022-03-01T00:00:01+00:00\": {\n", - " \"2022-03-01T12:00:00.000000000\": {\n", - " \"min\": 287.33000000000004,\n", - " \"max\": 300.34000000000003,\n", - " \"mean\": 296.75886859973724,\n", - " \"count\": 2337.9599609375,\n", - " \"sum\": 693810.3528392983,\n", - " \"std\": 2.388646918820211,\n", - " \"median\": 297.05,\n", - " \"majority\": 297.31000000000006,\n", - " \"minority\": 287.33000000000004,\n", - " \"unique\": 758.0,\n", - " \"histogram\": [\n", - " [\n", - " 10,\n", - " 23,\n", - " 42,\n", - " 66,\n", - " 118,\n", - " 201,\n", - " 425,\n", - " 635,\n", - " 397,\n", - " 446\n", - " ],\n", - " [\n", - " 287.33000000000004,\n", - " 288.63100000000003,\n", - " 289.932,\n", - " 291.23300000000006,\n", - " 292.53400000000005,\n", - " 293.83500000000004,\n", - " 295.136,\n", - " 296.437,\n", - " 297.73800000000006,\n", - " 299.03900000000004,\n", - " 300.34000000000003\n", - " ]\n", - " ],\n", - " \"valid_percent\": 68.49,\n", - " \"masked_pixels\": 1087.0,\n", - " \"valid_pixels\": 2363.0,\n", - " \"percentile_2\": 290.28000000000003,\n", - " \"percentile_98\": 300.19000000000005\n", - " }\n", - " }\n", - "}\n" - ] - } - ], - "source": [ - "print(\" Statistics:\")\n", - "print(json.dumps(stats_result[\"statistics\"], indent=2))" - ] - }, - { - "cell_type": "markdown", - "id": "65b82762", - "metadata": {}, - "source": [ - "The statistics results typically include several useful metrics for all points/intervals along a timeseries:\n", - "- min, max, mean, count, sum\n", - "- valid pixels, masked pixels, valid percentage\n", - "- percentiles (e.g., 98th percentile), data distribution histogram, unique values, median, std" - ] - }, - { - "cell_type": "markdown", - "id": "2b91cd56-7c4a-4db0-b7d4-22ead571ec23", - "metadata": {}, - "source": [ - "RasterIO backend also supports similar statistics backend." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "36c3f623-9606-4a94-939e-b1d6c25958bf", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "=== TiTiler-CMR Statistics Benchmark ===\n", - "Client: 2 physical / 4 logical cores | RAM: 30.89 GiB\n", - "Dataset: C2036881735-POCLOUD (xarray)\n", - "~~~~~~~~~~~~~~~~ ERROR JSON REQUEST ~~~~~~~~~~~~~~~~\n", - "URL: https://staging.openveda.cloud/api/titiler-cmr/timeseries/statistics?concept_id=C2036881735-POCLOUD&backend=xarray&datetime=2022-03-01T00%3A00%3A01Z%2F2022-03-01T23%3A59%3A59Z&variable=analysed_sst&step=P1D&temporal_mode=point\n", - "Error: 500 Internal Server Error\n", - "Body: {\"detail\":\"9 validation errors:\\n {'type': 'literal_error', 'loc': ('response', \\\"FeatureCollection[Feature[Annotated[Union[Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon, GeometryCollection], FieldInfo(annotation=NoneType, required=True, discriminator='type')], TimeseriesStatisticsInGeoJSON]]\\\", 'type'), 'msg': \\\"Input should be 'FeatureCollection'\\\", 'input': 'Feature', 'ctx': {'expected': \\\"'FeatureCollection'\\\"}}\\n {'type': 'missing', 'loc': ('response', \\\"FeatureCollection[Feature[Annotated[Union[Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon, GeometryCollection], FieldInfo(annotation=NoneType, required=True, discriminator='type')], TimeseriesStatisticsInGeoJSON]]\\\", 'features'), 'msg': 'Field required', 'input': Feature(bbox=None, type='Feature', geometry=Polygon(bbox=None, type='Polygon', coordinates=[[Position2D(longitude=-91.816, latitude=47.491), Position2D(longitude=-91.359, latitude=47.491), Position2D(longitude=-91.359, latitude=47.716), Position2D(longitude=-91.816, latitude=47.716), Position2D(longitude=-91.816, latitude=47.491)]]), properties={'statistics': {'2022-03-01T00:00:01+00:00': {'2022-03-01T12:00:00.000000000': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': 0.0, 'std': None, 'median': None, 'majority': None, 'minority': None, 'unique': 0.0, 'histogram': [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0.0, 0.1, 0.2, 0.30000000000000004, 0.4, 0.5, 0.6000000000000001, 0.7000000000000001, 0.8, 0.9, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 6.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}, id=None)}\\n {'type': 'float_type', 'loc': ('response', \\\"Feature[Annotated[Union[Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon, GeometryCollection], FieldInfo(annotation=NoneType, required=True, discriminator='type')], TimeseriesStatisticsInGeoJSON]\\\", 'properties', 'statistics', '2022-03-01T00:00:01+00:00', '2022-03-01T12:00:00.000000000', 'min'), 'msg': 'Input should be a valid number', 'input': None}\\n {'type': 'float_type', 'loc': ('response', \\\"Feature[Annotated[Union[Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon, GeometryCollection], FieldInfo(annotation=NoneType, required=True, discriminator='type')], TimeseriesStatisticsInGeoJSON]\\\", 'properties', 'statistics', '2022-03-01T00:00:01+00:00', '2022-03-01T12:00:00.000000000', 'max'), 'msg': 'Input should be a valid number', 'input': None}\\n {'type': 'float_type', 'loc': ('response', \\\"Feature[Annotated[Union[Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon, GeometryCollection], FieldInfo(annotation=NoneType, required=True, discriminator='type')], TimeseriesStatisticsInGeoJSON]\\\", 'properties', 'statistics', '2022-03-01T00:00:01+00:00', '2022-03-01T12:00:00.000000000', 'mean'), 'msg': 'Input should be a valid number', 'input': None}\\n {'type': 'float_type', 'loc': ('response', \\\"Feature[Annotated[Union[Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon, GeometryCollection], FieldInfo(annotation=NoneType, required=True, discriminator='type')], TimeseriesStatisticsInGeoJSON]\\\", 'properties', 'statistics', '2022-03-01T00:00:01+00:00', '2022-03-01T12:00:00.000000000', 'std'), 'msg': 'Input should be a valid number', 'input': None}\\n {'type': 'float_type', 'loc': ('response', \\\"Feature[Annotated[Union[Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon, GeometryCollection], FieldInfo(annotation=NoneType, required=True, discriminator='type')], TimeseriesStatisticsInGeoJSON]\\\", 'properties', 'statistics', '2022-03-01T00:00:01+00:00', '2022-03-01T12:00:00.000000000', 'median'), 'msg': 'Input should be a valid number', 'input': None}\\n {'type': 'float_type', 'loc': ('response', \\\"Feature[Annotated[Union[Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon, GeometryCollection], FieldInfo(annotation=NoneType, required=True, discriminator='type')], TimeseriesStatisticsInGeoJSON]\\\", 'properties', 'statistics', '2022-03-01T00:00:01+00:00', '2022-03-01T12:00:00.000000000', 'majority'), 'msg': 'Input should be a valid number', 'input': None}\\n {'type': 'float_type', 'loc': ('response', \\\"Feature[Annotated[Union[Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon, GeometryCollection], FieldInfo(annotation=NoneType, required=True, discriminator='type')], TimeseriesStatisticsInGeoJSON]\\\", 'properties', 'statistics', '2022-03-01T00:00:01+00:00', '2022-03-01T12:00:00.000000000', 'minority'), 'msg': 'Input should be a valid number', 'input': None}\\n\"}\n", - "Statistics result:\n", - " Success: False\n", - " Elapsed: 0.00s\n", - " Timesteps: 0\n" - ] - } - ], - "source": [ - "gulf_geometry = create_bbox_feature(-91.816, 47.491, -91.359, 47.716)\n", - "stats_result = await benchmark_statistics(\n", - " endpoint=endpoint,\n", - " dataset=ds_xarray,\n", - " geometry=gulf_geometry,\n", - " timeout_s=300.0,\n", - ")\n", - "print(\"Statistics result:\")\n", - "print(f\" Success: {stats_result['success']}\")\n", - "print(f\" Elapsed: {stats_result['elapsed_s']:.2f}s\")\n", - "print(f\" Timesteps: {stats_result['n_timesteps']}\")" - ] - }, - { - "cell_type": "markdown", - "id": "7629d9b2", - "metadata": {}, - "source": [ - "Now, we want to test how the size of the geometry affects performance. We’ll use square bounding boxes centered on a chosen point and increase the edge length (degrees) to see how it impacts the response time. \n" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "93b4b413", - "metadata": {}, - "outputs": [], - "source": [ - "def bbox_square_feature(center_lon: float, center_lat: float, edge_deg: float):\n", - " \"\"\"\n", - " Build a square bbox Feature of size edge_deg × edge_deg centered at (lon, lat).\n", - " \"\"\"\n", - " half = edge_deg / 2.0\n", - " min_lon, min_lat = center_lon - half, center_lat - half\n", - " max_lon, max_lat = center_lon + half, center_lat + half\n", - " return create_bbox_feature(min_lon, min_lat, max_lon, max_lat)\n", - "\n", - "\n", - "center_lon, center_lat = -91.58, 47.60\n", - "edge_sizes_deg = [\n", - " 20,\n", - " 10,\n", - " 5,\n", - " 1,\n", - " 0.5,\n", - " 0.1,\n", - "] # caution: large areas may time out for high-res products" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "0342aa32", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "=== TiTiler-CMR Statistics Benchmark ===\n", - "Client: 2 physical / 4 logical cores | RAM: 30.89 GiB\n", - "Dataset: C2036881735-POCLOUD (xarray)\n", - "~~~~~~~~~~~~~~~~ ERROR JSON REQUEST ~~~~~~~~~~~~~~~~\n", - "URL: https://staging.openveda.cloud/api/titiler-cmr/timeseries/statistics?concept_id=C2036881735-POCLOUD&backend=xarray&datetime=2022-03-01T00%3A00%3A01Z%2F2022-03-01T23%3A59%3A59Z&variable=analysed_sst&step=P1D&temporal_mode=point\n", - "Error: 500 Internal Server Error\n", - "Body: {\"detail\":\"9 validation errors:\\n {'type': 'literal_error', 'loc': ('response', \\\"FeatureCollection[Feature[Annotated[Union[Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon, GeometryCollection], FieldInfo(annotation=NoneType, required=True, discriminator='type')], TimeseriesStatisticsInGeoJSON]]\\\", 'type'), 'msg': \\\"Input should be 'FeatureCollection'\\\", 'input': 'Feature', 'ctx': {'expected': \\\"'FeatureCollection'\\\"}}\\n {'type': 'missing', 'loc': ('response', \\\"FeatureCollection[Feature[Annotated[Union[Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon, GeometryCollection], FieldInfo(annotation=NoneType, required=True, discriminator='type')], TimeseriesStatisticsInGeoJSON]]\\\", 'features'), 'msg': 'Field required', 'input': Feature(bbox=None, type='Feature', geometry=Polygon(bbox=None, type='Polygon', coordinates=[[Position2D(longitude=-91.63, latitude=47.550000000000004), Position2D(longitude=-91.53, latitude=47.550000000000004), Position2D(longitude=-91.53, latitude=47.65), Position2D(longitude=-91.63, latitude=47.65), Position2D(longitude=-91.63, latitude=47.550000000000004)]]), properties={'statistics': {'2022-03-01T00:00:01+00:00': {'2022-03-01T12:00:00.000000000': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': 0.0, 'std': None, 'median': None, 'majority': None, 'minority': None, 'unique': 0.0, 'histogram': [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0.0, 0.1, 0.2, 0.30000000000000004, 0.4, 0.5, 0.6000000000000001, 0.7000000000000001, 0.8, 0.9, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 9.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}, id=None)}\\n {'type': 'float_type', 'loc': ('response', \\\"Feature[Annotated[Union[Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon, GeometryCollection], FieldInfo(annotation=NoneType, required=True, discriminator='type')], TimeseriesStatisticsInGeoJSON]\\\", 'properties', 'statistics', '2022-03-01T00:00:01+00:00', '2022-03-01T12:00:00.000000000', 'min'), 'msg': 'Input should be a valid number', 'input': None}\\n {'type': 'float_type', 'loc': ('response', \\\"Feature[Annotated[Union[Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon, GeometryCollection], FieldInfo(annotation=NoneType, required=True, discriminator='type')], TimeseriesStatisticsInGeoJSON]\\\", 'properties', 'statistics', '2022-03-01T00:00:01+00:00', '2022-03-01T12:00:00.000000000', 'max'), 'msg': 'Input should be a valid number', 'input': None}\\n {'type': 'float_type', 'loc': ('response', \\\"Feature[Annotated[Union[Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon, GeometryCollection], FieldInfo(annotation=NoneType, required=True, discriminator='type')], TimeseriesStatisticsInGeoJSON]\\\", 'properties', 'statistics', '2022-03-01T00:00:01+00:00', '2022-03-01T12:00:00.000000000', 'mean'), 'msg': 'Input should be a valid number', 'input': None}\\n {'type': 'float_type', 'loc': ('response', \\\"Feature[Annotated[Union[Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon, GeometryCollection], FieldInfo(annotation=NoneType, required=True, discriminator='type')], TimeseriesStatisticsInGeoJSON]\\\", 'properties', 'statistics', '2022-03-01T00:00:01+00:00', '2022-03-01T12:00:00.000000000', 'std'), 'msg': 'Input should be a valid number', 'input': None}\\n {'type': 'float_type', 'loc': ('response', \\\"Feature[Annotated[Union[Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon, GeometryCollection], FieldInfo(annotation=NoneType, required=True, discriminator='type')], TimeseriesStatisticsInGeoJSON]\\\", 'properties', 'statistics', '2022-03-01T00:00:01+00:00', '2022-03-01T12:00:00.000000000', 'median'), 'msg': 'Input should be a valid number', 'input': None}\\n {'type': 'float_type', 'loc': ('response', \\\"Feature[Annotated[Union[Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon, GeometryCollection], FieldInfo(annotation=NoneType, required=True, discriminator='type')], TimeseriesStatisticsInGeoJSON]\\\", 'properties', 'statistics', '2022-03-01T00:00:01+00:00', '2022-03-01T12:00:00.000000000', 'majority'), 'msg': 'Input should be a valid number', 'input': None}\\n {'type': 'float_type', 'loc': ('response', \\\"Feature[Annotated[Union[Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon, GeometryCollection], FieldInfo(annotation=NoneType, required=True, discriminator='type')], TimeseriesStatisticsInGeoJSON]\\\", 'properties', 'statistics', '2022-03-01T00:00:01+00:00', '2022-03-01T12:00:00.000000000', 'minority'), 'msg': 'Input should be a valid number', 'input': None}\\n\"}\n", - "Statistics result:\n", - " Success: False\n", - " Elapsed: 0.00s\n", - " Timesteps: 0\n", - " Statistics: {}\n" - ] - } - ], - "source": [ - "geom = bbox_square_feature(center_lon, center_lat, 0.1)\n", - "stats_result = await benchmark_statistics(\n", - " endpoint=endpoint,\n", - " dataset=ds_xarray,\n", - " geometry=geom,\n", - " timeout_s=300.0,\n", - ")\n", - "print(\"Statistics result:\")\n", - "print(f\" Success: {stats_result['success']}\")\n", - "print(f\" Elapsed: {stats_result['elapsed_s']:.2f}s\")\n", - "print(f\" Timesteps: {stats_result['n_timesteps']}\")\n", - "print(f\" Statistics: {stats_result['statistics']}\")" - ] - }, - { - "cell_type": "markdown", - "id": "d712d82c", - "metadata": {}, - "source": [ - "Now, let's run the benchmark for each geometry size and collect the results.\n" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "2d02f67a", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "=== TiTiler-CMR Statistics Benchmark ===\n", - "Client: 2 physical / 4 logical cores | RAM: 30.89 GiB\n", - "Dataset: C2036881735-POCLOUD (xarray)\n", - "=== TiTiler-CMR Statistics Benchmark ===\n", - "Client: 2 physical / 4 logical cores | RAM: 30.89 GiB\n", - "Dataset: C2036881735-POCLOUD (xarray)\n", - "=== TiTiler-CMR Statistics Benchmark ===\n", - "Client: 2 physical / 4 logical cores | RAM: 30.89 GiB\n", - "Dataset: C2036881735-POCLOUD (xarray)\n", - "=== TiTiler-CMR Statistics Benchmark ===\n", - "Client: 2 physical / 4 logical cores | RAM: 30.89 GiB\n", - "Dataset: C2036881735-POCLOUD (xarray)\n", - "=== TiTiler-CMR Statistics Benchmark ===\n", - "Client: 2 physical / 4 logical cores | RAM: 30.89 GiB\n", - "Dataset: C2036881735-POCLOUD (xarray)\n", - "~~~~~~~~~~~~~~~~ ERROR JSON REQUEST ~~~~~~~~~~~~~~~~\n", - "URL: https://staging.openveda.cloud/api/titiler-cmr/timeseries/statistics?concept_id=C2036881735-POCLOUD&backend=xarray&datetime=2022-03-01T00%3A00%3A01Z%2F2022-03-01T23%3A59%3A59Z&variable=analysed_sst&step=P1D&temporal_mode=point\n", - "Error: 500 Internal Server Error\n", - "Body: {\"detail\":\"9 validation errors:\\n {'type': 'literal_error', 'loc': ('response', \\\"FeatureCollection[Feature[Annotated[Union[Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon, GeometryCollection], FieldInfo(annotation=NoneType, required=True, discriminator='type')], TimeseriesStatisticsInGeoJSON]]\\\", 'type'), 'msg': \\\"Input should be 'FeatureCollection'\\\", 'input': 'Feature', 'ctx': {'expected': \\\"'FeatureCollection'\\\"}}\\n {'type': 'missing', 'loc': ('response', \\\"FeatureCollection[Feature[Annotated[Union[Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon, GeometryCollection], FieldInfo(annotation=NoneType, required=True, discriminator='type')], TimeseriesStatisticsInGeoJSON]]\\\", 'features'), 'msg': 'Field required', 'input': Feature(bbox=None, type='Feature', geometry=Polygon(bbox=None, type='Polygon', coordinates=[[Position2D(longitude=-91.83, latitude=47.35), Position2D(longitude=-91.33, latitude=47.35), Position2D(longitude=-91.33, latitude=47.85), Position2D(longitude=-91.83, latitude=47.85), Position2D(longitude=-91.83, latitude=47.35)]]), properties={'statistics': {'2022-03-01T00:00:01+00:00': {'2022-03-01T12:00:00.000000000': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': 0.0, 'std': None, 'median': None, 'majority': None, 'minority': None, 'unique': 0.0, 'histogram': [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0.0, 0.1, 0.2, 0.30000000000000004, 0.4, 0.5, 0.6000000000000001, 0.7000000000000001, 0.8, 0.9, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 9.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}, id=None)}\\n {'type': 'float_type', 'loc': ('response', \\\"Feature[Annotated[Union[Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon, GeometryCollection], FieldInfo(annotation=NoneType, required=True, discriminator='type')], TimeseriesStatisticsInGeoJSON]\\\", 'properties', 'statistics', '2022-03-01T00:00:01+00:00', '2022-03-01T12:00:00.000000000', 'min'), 'msg': 'Input should be a valid number', 'input': None}\\n {'type': 'float_type', 'loc': ('response', \\\"Feature[Annotated[Union[Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon, GeometryCollection], FieldInfo(annotation=NoneType, required=True, discriminator='type')], TimeseriesStatisticsInGeoJSON]\\\", 'properties', 'statistics', '2022-03-01T00:00:01+00:00', '2022-03-01T12:00:00.000000000', 'max'), 'msg': 'Input should be a valid number', 'input': None}\\n {'type': 'float_type', 'loc': ('response', \\\"Feature[Annotated[Union[Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon, GeometryCollection], FieldInfo(annotation=NoneType, required=True, discriminator='type')], TimeseriesStatisticsInGeoJSON]\\\", 'properties', 'statistics', '2022-03-01T00:00:01+00:00', '2022-03-01T12:00:00.000000000', 'mean'), 'msg': 'Input should be a valid number', 'input': None}\\n {'type': 'float_type', 'loc': ('response', \\\"Feature[Annotated[Union[Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon, GeometryCollection], FieldInfo(annotation=NoneType, required=True, discriminator='type')], TimeseriesStatisticsInGeoJSON]\\\", 'properties', 'statistics', '2022-03-01T00:00:01+00:00', '2022-03-01T12:00:00.000000000', 'std'), 'msg': 'Input should be a valid number', 'input': None}\\n {'type': 'float_type', 'loc': ('response', \\\"Feature[Annotated[Union[Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon, GeometryCollection], FieldInfo(annotation=NoneType, required=True, discriminator='type')], TimeseriesStatisticsInGeoJSON]\\\", 'properties', 'statistics', '2022-03-01T00:00:01+00:00', '2022-03-01T12:00:00.000000000', 'median'), 'msg': 'Input should be a valid number', 'input': None}\\n {'type': 'float_type', 'loc': ('response', \\\"Feature[Annotated[Union[Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon, GeometryCollection], FieldInfo(annotation=NoneType, required=True, discriminator='type')], TimeseriesStatisticsInGeoJSON]\\\", 'properties', 'statistics', '2022-03-01T00:00:01+00:00', '2022-03-01T12:00:00.000000000', 'majority'), 'msg': 'Input should be a valid number', 'input': None}\\n {'type': 'float_type', 'loc': ('response', \\\"Feature[Annotated[Union[Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon, GeometryCollection], FieldInfo(annotation=NoneType, required=True, discriminator='type')], TimeseriesStatisticsInGeoJSON]\\\", 'properties', 'statistics', '2022-03-01T00:00:01+00:00', '2022-03-01T12:00:00.000000000', 'minority'), 'msg': 'Input should be a valid number', 'input': None}\\n\"}\n", - "=== TiTiler-CMR Statistics Benchmark ===\n", - "Client: 2 physical / 4 logical cores | RAM: 30.89 GiB\n", - "Dataset: C2036881735-POCLOUD (xarray)\n", - "~~~~~~~~~~~~~~~~ ERROR JSON REQUEST ~~~~~~~~~~~~~~~~\n", - "URL: https://staging.openveda.cloud/api/titiler-cmr/timeseries/statistics?concept_id=C2036881735-POCLOUD&backend=xarray&datetime=2022-03-01T00%3A00%3A01Z%2F2022-03-01T23%3A59%3A59Z&variable=analysed_sst&step=P1D&temporal_mode=point\n", - "Error: 500 Internal Server Error\n", - "Body: {\"detail\":\"9 validation errors:\\n {'type': 'literal_error', 'loc': ('response', \\\"FeatureCollection[Feature[Annotated[Union[Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon, GeometryCollection], FieldInfo(annotation=NoneType, required=True, discriminator='type')], TimeseriesStatisticsInGeoJSON]]\\\", 'type'), 'msg': \\\"Input should be 'FeatureCollection'\\\", 'input': 'Feature', 'ctx': {'expected': \\\"'FeatureCollection'\\\"}}\\n {'type': 'missing', 'loc': ('response', \\\"FeatureCollection[Feature[Annotated[Union[Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon, GeometryCollection], FieldInfo(annotation=NoneType, required=True, discriminator='type')], TimeseriesStatisticsInGeoJSON]]\\\", 'features'), 'msg': 'Field required', 'input': Feature(bbox=None, type='Feature', geometry=Polygon(bbox=None, type='Polygon', coordinates=[[Position2D(longitude=-91.63, latitude=47.550000000000004), Position2D(longitude=-91.53, latitude=47.550000000000004), Position2D(longitude=-91.53, latitude=47.65), Position2D(longitude=-91.63, latitude=47.65), Position2D(longitude=-91.63, latitude=47.550000000000004)]]), properties={'statistics': {'2022-03-01T00:00:01+00:00': {'2022-03-01T12:00:00.000000000': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': 0.0, 'std': None, 'median': None, 'majority': None, 'minority': None, 'unique': 0.0, 'histogram': [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0.0, 0.1, 0.2, 0.30000000000000004, 0.4, 0.5, 0.6000000000000001, 0.7000000000000001, 0.8, 0.9, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 9.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}, id=None)}\\n {'type': 'float_type', 'loc': ('response', \\\"Feature[Annotated[Union[Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon, GeometryCollection], FieldInfo(annotation=NoneType, required=True, discriminator='type')], TimeseriesStatisticsInGeoJSON]\\\", 'properties', 'statistics', '2022-03-01T00:00:01+00:00', '2022-03-01T12:00:00.000000000', 'min'), 'msg': 'Input should be a valid number', 'input': None}\\n {'type': 'float_type', 'loc': ('response', \\\"Feature[Annotated[Union[Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon, GeometryCollection], FieldInfo(annotation=NoneType, required=True, discriminator='type')], TimeseriesStatisticsInGeoJSON]\\\", 'properties', 'statistics', '2022-03-01T00:00:01+00:00', '2022-03-01T12:00:00.000000000', 'max'), 'msg': 'Input should be a valid number', 'input': None}\\n {'type': 'float_type', 'loc': ('response', \\\"Feature[Annotated[Union[Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon, GeometryCollection], FieldInfo(annotation=NoneType, required=True, discriminator='type')], TimeseriesStatisticsInGeoJSON]\\\", 'properties', 'statistics', '2022-03-01T00:00:01+00:00', '2022-03-01T12:00:00.000000000', 'mean'), 'msg': 'Input should be a valid number', 'input': None}\\n {'type': 'float_type', 'loc': ('response', \\\"Feature[Annotated[Union[Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon, GeometryCollection], FieldInfo(annotation=NoneType, required=True, discriminator='type')], TimeseriesStatisticsInGeoJSON]\\\", 'properties', 'statistics', '2022-03-01T00:00:01+00:00', '2022-03-01T12:00:00.000000000', 'std'), 'msg': 'Input should be a valid number', 'input': None}\\n {'type': 'float_type', 'loc': ('response', \\\"Feature[Annotated[Union[Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon, GeometryCollection], FieldInfo(annotation=NoneType, required=True, discriminator='type')], TimeseriesStatisticsInGeoJSON]\\\", 'properties', 'statistics', '2022-03-01T00:00:01+00:00', '2022-03-01T12:00:00.000000000', 'median'), 'msg': 'Input should be a valid number', 'input': None}\\n {'type': 'float_type', 'loc': ('response', \\\"Feature[Annotated[Union[Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon, GeometryCollection], FieldInfo(annotation=NoneType, required=True, discriminator='type')], TimeseriesStatisticsInGeoJSON]\\\", 'properties', 'statistics', '2022-03-01T00:00:01+00:00', '2022-03-01T12:00:00.000000000', 'majority'), 'msg': 'Input should be a valid number', 'input': None}\\n {'type': 'float_type', 'loc': ('response', \\\"Feature[Annotated[Union[Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon, GeometryCollection], FieldInfo(annotation=NoneType, required=True, discriminator='type')], TimeseriesStatisticsInGeoJSON]\\\", 'properties', 'statistics', '2022-03-01T00:00:01+00:00', '2022-03-01T12:00:00.000000000', 'minority'), 'msg': 'Input should be a valid number', 'input': None}\\n\"}\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
backendconcept_idedge_degsuccessstatus_codeelapsed_sn_timesteps
0xarrayC2036881735-POCLOUD20.0True200.01.9602671
1xarrayC2036881735-POCLOUD10.0True200.01.7772721
2xarrayC2036881735-POCLOUD5.0True200.02.0190301
3xarrayC2036881735-POCLOUD1.0True200.01.6720291
4xarrayC2036881735-POCLOUD0.5FalseNaN0.0000000
5xarrayC2036881735-POCLOUD0.1FalseNaN0.0000000
\n", - "
" - ], - "text/plain": [ - " backend concept_id edge_deg success status_code elapsed_s \\\n", - "0 xarray C2036881735-POCLOUD 20.0 True 200.0 1.960267 \n", - "1 xarray C2036881735-POCLOUD 10.0 True 200.0 1.777272 \n", - "2 xarray C2036881735-POCLOUD 5.0 True 200.0 2.019030 \n", - "3 xarray C2036881735-POCLOUD 1.0 True 200.0 1.672029 \n", - "4 xarray C2036881735-POCLOUD 0.5 False NaN 0.000000 \n", - "5 xarray C2036881735-POCLOUD 0.1 False NaN 0.000000 \n", - "\n", - " n_timesteps \n", - "0 1 \n", - "1 1 \n", - "2 1 \n", - "3 1 \n", - "4 0 \n", - "5 0 " - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "async def run_stats_benchmark_for_sizes(\n", - " ds: DatasetParams,\n", - " edge_sizes: [],\n", - " *,\n", - " endpoint: str,\n", - " center_lon: float,\n", - " center_lat: float,\n", - " timeout_s: float = 180.0,\n", - ") -> pd.DataFrame:\n", - " rows = []\n", - " for edge in edge_sizes:\n", - " geom = bbox_square_feature(center_lon, center_lat, edge)\n", - " out = await benchmark_statistics(\n", - " endpoint=endpoint,\n", - " dataset=ds,\n", - " geometry=geom,\n", - " timeout_s=timeout_s,\n", - " )\n", - " rows.append(\n", - " {\n", - " \"backend\": ds.backend,\n", - " \"concept_id\": ds.concept_id,\n", - " \"edge_deg\": edge,\n", - " \"success\": out.get(\"success\", False),\n", - " \"status_code\": out.get(\"status_code\", None),\n", - " \"elapsed_s\": out.get(\"elapsed_s\", None),\n", - " \"n_timesteps\": out.get(\"n_timesteps\", 0),\n", - " }\n", - " )\n", - " return pd.DataFrame(rows)\n", - "\n", - "\n", - "df_xr = await run_stats_benchmark_for_sizes(\n", - " ds_xarray,\n", - " edge_sizes_deg,\n", - " endpoint=endpoint,\n", - " center_lon=center_lon,\n", - " center_lat=center_lat,\n", - " timeout_s=180.0,\n", - ")\n", - "df_xr" - ] - }, - { - "cell_type": "markdown", - "id": "679309c6", - "metadata": {}, - "source": [ - "> **Tip**: If you see timeouts or failures at larger sizes, try smaller AOIs first and/or choose a coarser step." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "17f4cc56", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxYAAAHqCAYAAACZcdjsAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAgfRJREFUeJzt3XdcU+fiBvAnrIQZZIMCouAeKK0U90DRWqtdjmtd1WodvfVHbau3dd0Oq723tcNVraPV1mqvtbVWrXui1lW3AuJmCEoYSoDk/f0BOSUGkEhCIDzfz4dPyXvenLznENPz5LxDJoQQICIiIiIiqgQbSzeAiIiIiIhqPgYLIiIiIiKqNAYLIiIiIiKqNAYLIiIiIiKqNAYLIiIiIiKqNAYLIiIiIiKqNAYLIiIiIiKqNAYLIiIiIiKqNAYLIiIiIiKqNAYLIqo0mUyGWbNmWboZlVa/fn2MHDnysZ8/a9YsyGQy0zWIqAwjR45E/fr1q/x1tVotWrRogQ8//LDKX7sqFRQUIDAwEAsXLrR0U4hqFAYLIirVypUrIZPJyvw5fPiwpZtoEffv38esWbOwZ88eSzeFqshHH32EjRs3WroZ1cIPP/yAGzduYNKkSZZuilnZ29sjNjYWH374IfLy8izdHKIaw87SDSCi6u3f//43QkJCDMpDQ0Mt0BrLu3//PmbPng0A6Nq1q9629957D1OnTrVAq8icPvroI7z44osYMGCApZsiWbp0KbRabZW/7ieffILBgwdDqVRW+WtXtVGjRmHq1Kn4/vvv8corr1i6OUQ1AoMFEZWrT58+eOKJJyzdjBrBzs4Odnb8WK3NcnNz4ezsbPbXsbe3N/trPOzkyZP466+/8N///rfKX7us8yqEQF5eHhwdHU3+mu7u7ujVqxdWrlzJYEFUQewKRUQmd+3aNUyYMAGNGzeGo6MjPD098dJLL+Hq1at69XTdrfbt24dx48bB09MTbm5uGD58OO7du6dX99ixY4iJiYGXlxccHR0REhJi8D97rVaL+fPno3nz5lAoFPD19cW4ceMM9iWEwAcffIB69erByckJ3bp1w7lz5x55XFevXoW3tzcAYPbs2VK3MN34ktLGWMhkMkyaNAnr169Hs2bN4OjoiKioKJw5cwYAsGTJEoSGhkKhUKBr164G5wgAjhw5gt69e0OpVMLJyQldunTBwYMHy21ramoq7OzspLsrJV26dAkymQxfffUVgKL+5LNnz0ZYWBgUCgU8PT3RsWNHbN++/ZHn5PTp0+jSpQscHR1Rr149fPDBB1ixYgVkMpnBsWzZsgWdOnWCs7MzXF1d0bdv31LP+65du6R67u7u6N+/Py5cuKBXR3euL1++jJdffhlKpRLe3t6YPn06hBC4ceMG+vfvDzc3N/j5+ZV6MaxWqzFz5kyEhoZCLpcjMDAQb7/9NtRqtVRHJpMhNzcXq1atkv7eunE4ujacP38e//jHP1CnTh107NhROv6TJ08avOZHH30EW1tb3Lp1q8xzmp2djcmTJ6N+/fqQy+Xw8fFBz549ceLECanOw2MsunbtWma3xZUrV0r1MjMzMXnyZAQGBkIulyM0NBRz586t0N2PjRs3wsHBAZ07d5bKHjx4gCZNmqBJkyZ48OCBVH737l34+/ujffv20Gg0AIreKyNHjkSDBg2gUCjg5+eHV155BRkZGXqvU9Z5BYrGQT3zzDPYtm0bnnjiCTg6OmLJkiUAgBUrVqB79+7w8fGBXC5Hs2bNsGjRIr19jxgxAl5eXigoKDA4vl69eqFx48Z6ZT179sSBAwdw9+7dR54fIuIdCyJ6BJVKhfT0dL0ymUwGT0/PMp/z559/4tChQxg8eDDq1auHq1evYtGiRejatSvOnz8PJycnvfqTJk2Cu7s7Zs2ahUuXLmHRokW4du0a9uzZA5lMhrS0NPTq1Qve3t6YOnUq3N3dcfXqVWzYsEFvP+PGjcPKlSsxatQo/POf/0RSUhK++uornDx5EgcPHpS+5Z0xYwY++OADPP3003j66adx4sQJ9OrVC/n5+eWeC29vbyxatAjjx4/Hc889h+effx4A0KpVq3Kft3//fvz666+YOHEiAGDOnDl45pln8Pbbb2PhwoWYMGEC7t27h3nz5uGVV17Brl27pOfu2rULffr0QUREBGbOnAkbGxvpAmr//v1o165dqa/p6+uLLl26YN26dZg5c6beth9//BG2trZ46aWXABRdyM2ZMwdjxoxBu3btkJWVhWPHjuHEiRPo2bNnmcd169YtdOvWDTKZDNOmTYOzszOWLVsGuVxuUPe7777DiBEjEBMTg7lz5+L+/ftYtGgROnbsiJMnT0oXyTt27ECfPn3QoEEDzJo1Cw8ePMCXX36JDh064MSJEwYDlgcNGoSmTZvi448/xubNm/HBBx/Aw8MDS5YsQffu3TF37lysWbMGU6ZMwZNPPildFGu1Wjz77LM4cOAAxo4di6ZNm+LMmTP47LPPcPnyZWlMxXfffSedl7FjxwIAGjZsqNeGl156CWFhYfjoo48ghMCLL76IiRMnYs2aNWjTpo1e3TVr1qBr166oW7dumef1tddew08//YRJkyahWbNmyMjIwIEDB3DhwgW0bdu21Oe8++67GDNmjF7Z6tWrsW3bNvj4+AAo6sbXpUsX3Lp1C+PGjUNQUBAOHTqEadOmITk5GfPnzy+zTQBw6NAhtGjRQu9uiaOjI1atWoUOHTrg3XffxaeffgoAmDhxIlQqFVauXAlbW1sAwPbt23HlyhWMGjUKfn5+OHfuHL7++mucO3cOhw8fNgjlD59XnUuXLmHIkCEYN24cXn31VSkMLFq0CM2bN8ezzz4LOzs7bNq0CRMmTIBWq5X+7Q0bNgzffvsttm3bhmeeeUbaZ0pKCnbt2mXwbyUiIgJCCBw6dEivPhGVQRARlWLFihUCQKk/crlcry4AMXPmTOnx/fv3DfYXFxcnAIhvv/3W4DUiIiJEfn6+VD5v3jwBQPzyyy9CCCF+/vlnAUD8+eefZbZ3//79AoBYs2aNXvnWrVv1ytPS0oSDg4Po27ev0Gq1Ur1//etfAoAYMWJEueflzp07BserM3PmTPHwx6rufCUlJUllS5YsEQCEn5+fyMrKksqnTZsmAEh1tVqtCAsLEzExMXptvX//vggJCRE9e/Yst6261zlz5oxeebNmzUT37t2lx61btxZ9+/Ytd1+lef3114VMJhMnT56UyjIyMoSHh4fecWRnZwt3d3fx6quv6j0/JSVFKJVKvfLw8HDh4+MjMjIypLK//vpL2NjYiOHDh0tlunM9duxYqaywsFDUq1dPyGQy8fHHH0vl9+7dE46Ojnp/2++++07Y2NiI/fv367Vp8eLFAoA4ePCgVObs7Fzq+0LXhiFDhhhsGzJkiAgICBAajUYqO3HihAAgVqxYYVC/JKVSKSZOnFhunREjRojg4OAytx88eFDY29uLV155RSp7//33hbOzs7h8+bJe3alTpwpbW1tx/fr1cl+zXr164oUXXih127Rp04SNjY3Yt2+fWL9+vQAg5s+fr1entM+FH374QQAQ+/btk8rKO6/BwcECgNi6davBttL2HxMTIxo0aCA91mg0ol69emLQoEF69T799FMhk8nElStX9Mpv374tAIi5c+eWetxEpI9doYioXAsWLMD27dv1frZs2VLuc0r2dy4oKEBGRgZCQ0Ph7u6u151DZ+zYsXrfgo4fPx52dnb4/fffART1dQaA3377rdQuDACwfv16KJVK9OzZE+np6dJPREQEXFxcsHv3bgBF34jn5+fj9ddf1/uGdPLkyRU6H4+jR48eet+0R0ZGAgBeeOEFuLq6GpRfuXIFAHDq1CnEx8fjH//4BzIyMqRjys3NRY8ePbBv375yu7A8//zzsLOzw48//iiVnT17FufPn8egQYOkMnd3d5w7dw7x8fFGHdfWrVsRFRWF8PBwqczDwwNDhw7Vq7d9+3ZkZmZiyJAhen8bW1tbREZGSn+b5ORknDp1CiNHjoSHh4f0/FatWqFnz57S+6Gkkt/S29ra4oknnoAQAqNHj9Y7vsaNG0vnFSh6vzRt2hRNmjTRa1P37t0BQGpTRbz22msGZcOHD8ft27f19rNmzRo4OjrihRdeKHd/7u7uOHLkCG7fvl3hNpSUkpKCF198EeHh4XrTpa5fvx6dOnVCnTp19I45OjoaGo0G+/btK3e/GRkZqFOnTqnbZs2ahebNm2PEiBGYMGECunTpgn/+8596dUp+LuTl5SE9PR1PPfUUAJT6uVDaeQWAkJAQxMTEGJSX3L/uTmuXLl1w5coVqFQqAICNjQ2GDh2KX3/9FdnZ2VL9NWvWoH379gYTVeiO9+G7tkRUOnaFIqJytWvXzujB2w8ePMCcOXOwYsUK3Lp1S68bg+5/8CWFhYXpPXZxcYG/v7/UR79Lly544YUXMHv2bHz22Wfo2rUrBgwYgH/84x9St5v4+HioVCqp28fD0tLSABSN/yjtNb29vcu8aKqsoKAgvce6GXUCAwNLLdeNCdFd6I8YMaLMfatUqjLb7eXlhR49emDdunV4//33ARR1g7Kzs5O6cQFFM3/1798fjRo1QosWLdC7d28MGzbskV28rl27hqioKIPyh2cM0x2H7qL9YW5ubtL+ABj0cweApk2bYtu2bQaDeEs7twqFAl5eXgblJfvyx8fH48KFC9KYmYfp3i8VUdqsaT179oS/vz/WrFmDHj16QKvV4ocffkD//v31wmRp5s2bhxEjRiAwMBARERF4+umnMXz4cDRo0OCRbSksLMTAgQOh0WiwYcMGvW5p8fHxOH36dKWOueS/5ZIcHBywfPlyPPnkk1AoFNI4k5Lu3r2L2bNnY+3atQavVdrnQmnntbzygwcPYubMmYiLi8P9+/cN9q/79zV8+HDMnTsXP//8M4YPH45Lly7h+PHjWLx4cZnHy/VpiCqGwYKITO7111/HihUrMHnyZERFRUGpVEImk2Hw4MGPNUWmTCbDTz/9hMOHD2PTpk3Ytm0bXnnlFfz3v//F4cOH4eLiAq1WCx8fH6xZs6bUfZR1MVUVdH3MK1quu5jRnatPPvlE765ASS4uLuW+9uDBgzFq1CicOnUK4eHhWLduHXr06KF34d25c2ckJibil19+wR9//IFly5bhs88+w+LFiw367T8O3XF899138PPzM9hemZm0SjuHjzqvuja1bNlSGhPwsIdDX3lKm5HI1tYW//jHP7B06VIsXLgQBw8exO3bt/Hyyy8/cn8DBw5Ep06d8PPPP+OPP/7AJ598grlz52LDhg3o06dPuc996623EBcXhx07dqBevXp627RaLXr27Im333671Oc2atSo3H17enoaTIRQ0rZt2wAU3Y2Ij483CAADBw7EoUOH8NZbbyE8PFz6d9u7d+9SPxfKmumptPLExET06NEDTZo0waefforAwEA4ODjg999/x2effaa3/2bNmiEiIgKrV6/G8OHDsXr1ajg4OGDgwIEG+9Ud78NBlYhKx2BBRCb3008/YcSIEXoz8eTl5SEzM7PU+vHx8ejWrZv0OCcnB8nJyXj66af16j311FN46qmn8OGHH+L777/H0KFDsXbtWowZMwYNGzbEjh070KFDh3KnngwODpZes+Q3wHfu3Cn3okmnKr+51A0SdnNzQ3R09GPtY8CAARg3bpzUHery5cuYNm2aQT0PDw+MGjUKo0aNQk5ODjp37oxZs2aVGyyCg4ORkJBgUP5wme44fHx8yj0O3d/m0qVLBtsuXrwILy8vk03l2rBhQ/z111/o0aPHI/+mj/s3Hz58OP773/9i06ZN2LJlC7y9vUvtwlMaf39/TJgwARMmTEBaWhratm2LDz/8sNxgsXbtWsyfPx/z589Hly5dDLY3bNgQOTk5j/1eatKkCZKSkkrddvr0afz73/+WQuyYMWNw5swZvbtwO3fuxOzZszFjxgzpecZ2vyvLpk2boFar8euvv+rdxSqrS9vw4cMRGxuL5ORkfP/99+jbt2+pd/50x9u0aVOTtJPI2nGMBRGZnK2trUGXiS+//FKadvJhX3/9td7YiUWLFqGwsFC6iLp3757B/nTf4OumBtV1/9B1+SmpsLBQCjXR0dGwt7fHl19+qbfPR82Io6Ob0aqskGRKERERaNiwIf7zn/8gJyfHYPudO3ceuQ93d3fExMRg3bp1WLt2LRwcHAwWent4uk8XFxeEhobqTbtampiYGMTFxeHUqVNS2d27dw3uGsXExMDNzQ0fffRRqWNkdMfh7++P8PBwrFq1Su/8nj17Fn/88YdB0KyMgQMH4tatW1i6dKnBtgcPHiA3N1d67Ozs/Fh/71atWqFVq1ZYtmwZ/ve//2Hw4MGPvDuj0WgMugX5+PggICCg3L/H2bNnMWbMGLz88st44403Sq0zcOBAxMXFSXcWSsrMzERhYWG5bYuKisLZs2cN2lFQUICRI0ciICAAn3/+OVauXInU1FT83//9n1RHdxfp4X/HFf139yil7V+lUmHFihWl1h8yZAhkMhneeOMNXLlypcw7ScePH4dMJiu1yx8RGeIdCyIq15YtW3Dx4kWD8vbt25fZ5/uZZ57Bd999B6VSiWbNmkldM8qaojY/Px89evTAwIEDcenSJSxcuBAdO3bEs88+CwBYtWoVFi5ciOeeew4NGzZEdnY2li5dCjc3N+lis0uXLhg3bhzmzJmDU6dOoVevXrC3t0d8fDzWr1+Pzz//HC+++CK8vb0xZcoUacrXp59+GidPnsSWLVsq1N3B0dERzZo1w48//ohGjRrBw8MDLVq0QIsWLSp6SivMxsYGy5YtQ58+fdC8eXOMGjUKdevWxa1bt7B79264ublh06ZNj9zPoEGD8PLLL2PhwoWIiYmRBsPrNGvWDF27dkVERAQ8PDxw7NgxabrT8rz99ttYvXo1evbsiddff12abjYoKAh3796Vvul3c3PDokWLMGzYMLRt2xaDBw+Gt7c3rl+/js2bN6NDhw7SmhqffPIJ+vTpg6ioKIwePVqablapVErrhZjCsGHDsG7dOrz22mvYvXs3OnToAI1Gg4sXL2LdunXSOglAUcDbsWMHPv30UwQEBCAkJEQaaP8ow4cPx5QpUwCgQt2gsrOzUa9ePbz44oto3bo1XFxcsGPHDvz555/lLkw3atQoAEXd2lavXq23Tfdv9a233sKvv/6KZ555BiNHjkRERARyc3Nx5swZ/PTTT7h69Wq5/wb69++P999/H3v37kWvXr2k8g8++ACnTp3Czp074erqilatWmHGjBl477338OKLL+Lpp5+Gm5sbOnfujHnz5qGgoAB169bFH3/8UeYdEGP16tULDg4O6NevH8aNG4ecnBwsXboUPj4+SE5ONqjv7e2N3r17Y/369XB3d0ffvn1L3e/27dvRoUOHcqfXJqISLDQbFRFVc+VNN4uHpszEQ9Ov3rt3T4waNUp4eXkJFxcXERMTIy5evCiCg4P1pu3UvcbevXvF2LFjRZ06dYSLi4sYOnSo3nSjJ06cEEOGDBFBQUFCLpcLHx8f8cwzz4hjx44ZtPvrr78WERERwtHRUbi6uoqWLVuKt99+W9y+fVuqo9FoxOzZs4W/v79wdHQUXbt2FWfPnjVoX1kOHTokIiIihIODg96xlzXd7MNThyYlJQkA4pNPPtEr3717twAg1q9fr1d+8uRJ8fzzzwtPT08hl8tFcHCwGDhwoNi5c+cj2yqEEFlZWcLR0VEAEKtXrzbY/sEHH4h27doJd3d34ejoKJo0aSI+/PBDvSmAy3Ly5EnRqVMnIZfLRb169cScOXPEF198IQCIlJQUg+OLiYkRSqVSKBQK0bBhQzFy5EiDv+OOHTtEhw4dhKOjo3BzcxP9+vUT58+f16ujO9d37tzRKx8xYoRwdnY2aGeXLl1E8+bN9cry8/PF3LlzRfPmzYVcLhd16tQRERERYvbs2UKlUkn1Ll68KDp37iydQ917pKw2lJScnCxsbW1Fo0aNyj6JJajVavHWW2+J1q1bC1dXV+Hs7Cxat24tFi5caHCcJaeb1U3D+qh/q9nZ2WLatGkiNDRUODg4CC8vL9G+fXvxn//8p0J/71atWonRo0dLj48fPy7s7OzE66+/rlevsLBQPPnkkyIgIEDcu3dPCCHEzZs3xXPPPSfc3d2FUqkUL730kjSda8nPj/LOa3BwcJlTI//666+iVatWQqFQiPr164u5c+eK5cuX6019XNK6desMpiwuKTMzUzg4OIhly5Y94qwQkY5MiDKmeCAiMjPdYnZ//vmn0TNPUfU1efJkLFmyBDk5OWUOpK4t0tPT4e/vjxkzZmD69OmWbk6lfffdd5g4cSKuX79ucOerpvnll18wYMAA7Nu3D506dTLYPn/+fMybNw+JiYnljtsior9xjAURET22Bw8e6D3OyMjAd999h44dO9b6UAEUhWeNRoNhw4ZZuikmMXToUAQFBWHBggWWbkqlLV26FA0aNEDHjh0NthUUFODTTz/Fe++9x1BBZASOsSAioscWFRWFrl27omnTpkhNTcU333yDrKwsq/h2vjJ27dqF8+fP48MPP8SAAQP0FkisyWxsbHD27FlLN6NS1q5di9OnT2Pz5s34/PPPS531y97eHtevX7dA64hqNgYLIiJ6bE8//TR++uknfP3115DJZGjbti2++eYbdO7c2dJNs6h///vfOHToEDp06IAvv/zS0s2hEoYMGQIXFxeMHj0aEyZMsHRziKwKx1gQEREREVGlcYwFERERERFVGoMFERERERFVGsdYlEKr1eL27dtwdXUtdVAXEREREVFtIIRAdnY2AgICYGNT/j0JBotS3L59G4GBgZZuBhERERFRtXDjxg3Uq1ev3DoMFqVwdXUFUHQC3dzcLNwaIiIiIiLLyMrKQmBgoHR9XB4Gi1Louj+5ubkxWBARERFRrVeR4QEcvE1ERERERJXGYEFERERERJXGYEFERERERJXGYEFERERERJXGYEFERERERJXGYEFERERERJXGYEFERERERJXGYEFERERERJXGYEFERERERJXGYEFERERERJXGYEFERERERJVmZ+kGEFH1oNEKHE26i7TsPPi4KtAuxAO2NjJLN4uIiIhqCAYLIsLWs8mYvek8klV5Upm/UoGZ/Zqhdwt/C7aMiIiIagp2hSKq5baeTcb41Sf0QgUApKjyMH71CWw9m2yhlhEREVFNwmBBVItptAKzN52HKGWbrmz2pvPQaEurQURERPQ3iwaLOXPm4Mknn4Srqyt8fHwwYMAAXLp06ZHPW79+PZo0aQKFQoGWLVvi999/19suhMCMGTPg7+8PR0dHREdHIz4+3lyHQVRjHU26a3CnoiQBIFmVh8NXMqquUURERFQjWTRY7N27FxMnTsThw4exfft2FBQUoFevXsjNzS3zOYcOHcKQIUMwevRonDx5EgMGDMCAAQNw9uxZqc68efPwxRdfYPHixThy5AicnZ0RExODvLyyL6CIaqMzt1QVqvfqt8cw8fsTWHv0Om7eu2/mVhEREVFNJBNCVJs+Dnfu3IGPjw/27t2Lzp07l1pn0KBByM3N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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "\n", - "\n", - "def plot_elapsed_vs_size(\n", - " df: pd.DataFrame, *, title: str = \"Elapsed time vs geometry size (xarray)\"\n", - "):\n", - " sdf = df.copy()\n", - " sdf = sdf[pd.notnull(sdf[\"elapsed_s\"])].sort_values(\"edge_deg\")\n", - "\n", - " fig, ax = plt.subplots(figsize=(8, 5))\n", - " ax.plot(sdf[\"edge_deg\"], sdf[\"elapsed_s\"], marker=\"o\")\n", - " ax.set_xlabel(\"Square edge size (degrees)\")\n", - " ax.set_ylabel(\"Elapsed time (s)\")\n", - " ax.set_title(title)\n", - " ax.grid(True, axis=\"y\", alpha=0.2)\n", - " plt.tight_layout()\n", - " return fig, ax\n", - "\n", - "\n", - "_ = plot_elapsed_vs_size(df_xr)\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "1188a747-b1c3-49d8-8988-1000ce004372", - "metadata": {}, - "source": [ - "Since our data is relatively low resolution, we can easily load the bigger files into memory without any timeouts. Let's try our RasterIO data with 5 degree bounding box." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "5dba464c-80cc-40cc-8e6e-373b9110861e", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "=== TiTiler-CMR Statistics Benchmark ===\n", - "Client: 2 physical / 4 logical cores | RAM: 30.89 GiB\n", - "Dataset: C2021957657-LPCLOUD (rasterio)\n", - "~~~~~~~~~~~~~~~~ ERROR JSON REQUEST ~~~~~~~~~~~~~~~~\n", - "URL: https://staging.openveda.cloud/api/titiler-cmr/timeseries/statistics?concept_id=C2021957657-LPCLOUD&backend=rasterio&datetime=2022-03-01T00%3A00%3A01Z%2F2022-03-01T23%3A59%3A59Z&bands=%5B%27B04%27%2C+%27B03%27%2C+%27B02%27%5D&bands_regex=B%5B0-9%5D%5B0-9%5D&step=P1D&temporal_mode=point\n", - "Error: 400 Bad Request\n", - "Body: {\"detail\":\"The AOI for this request is too large for the /statistics endpoint for this dataset. Try again with either a smaller AOI\"}\n", - "Statistics result:\n", - " Success: False\n", - " Elapsed: 0.00s\n", - " Timesteps: 0\n", - " Statistics: {}\n" - ] - } - ], - "source": [ - "geom = bbox_square_feature(center_lon, center_lat, 5)\n", - "stats_result = await benchmark_statistics(\n", - " endpoint=endpoint,\n", - " dataset=ds_rasterio,\n", - " geometry=geom,\n", - " timeout_s=300.0,\n", - ")\n", - "print(\"Statistics result:\")\n", - "print(f\" Success: {stats_result['success']}\")\n", - "print(f\" Elapsed: {stats_result['elapsed_s']:.2f}s\")\n", - "print(f\" Timesteps: {stats_result['n_timesteps']}\")\n", - "print(f\" Statistics: {stats_result['statistics']}\")" - ] - }, - { - "cell_type": "markdown", - "id": "3771fcf4", - "metadata": {}, - "source": [ - "### Time Range \n", - "\n", - "For statistics benchmarking, the number of timesteps matters too. Longer time series (more timesteps) will generally take longer to process. This sweep varies the time window length (number of timesteps) while keeping the geometry size constant to see how that affects performance.\n", - "\n", - "The time series API supports the following parameters: \n", - "- **datetime (str)**: Either a date-time, an interval, or a comma-separated list of date-times or intervals. Date and time expressions adhere to rfc3339 ('2020-06-01T09:00:00Z') format.\n", - "- **step (str)**: width of individual time steps expressed as a IS8601 duration\n", - "- **temporal_mode (str)**: if \"point\", queries will be made for the individual timestamps along the timeseries. If \"interval\", queries will be made for the periods between each timestamp along the timeseries." - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "c18aea10", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "=== TiTiler-CMR Statistics Benchmark ===\n", - "Client: 2 physical / 4 logical cores | RAM: 30.89 GiB\n", - "Dataset: C2723754864-GES_DISC (xarray)\n", - "Statistics result:\n", - " Success: True\n", - " Elapsed: 1.84s\n", - " Timesteps: 2\n", - " Statistics: {'2022-03-01T00:00:01+00:00': {'2022-03-01T00:00:00.000000000': {'min': 0.0, 'max': 42.82999801635742, 'mean': 0.3393020033836365, 'count': 20898.5, 'sum': 7090.90283203125, 'std': 1.9955874881629714, 'median': 0.0, 'majority': 0.0, 'minority': 0.044999994337558746, 'unique': 1347.0, 'histogram': [[20614, 232, 65, 46, 20, 19, 14, 16, 4, 3], [0.0, 4.2829999923706055, 8.565999984741211, 12.848999977111816, 17.131999969482422, 21.415000915527344, 25.697999954223633, 29.980998992919922, 34.263999938964844, 38.547000885009766, 42.82999801635742]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 21033.0, 'percentile_2': 0.0, 'percentile_98': 4.244999885559082}}, '2022-03-02T00:00:01+00:00': {'2022-03-02T00:00:00.000000000': {'min': 0.0, 'max': 18.755001068115234, 'mean': 0.04489568620920181, 'count': 20898.5, 'sum': 938.2525024414062, 'std': 0.42384278584099, 'median': 0.0, 'majority': 0.0, 'minority': 0.08000000566244125, 'unique': 486.0, 'histogram': [[20900, 77, 27, 13, 10, 2, 1, 1, 1, 1], [0.0, 1.8755000829696655, 3.751000165939331, 5.626500129699707, 7.502000331878662, 9.377500534057617, 11.253000259399414, 13.128500938415527, 15.004000663757324, 16.879501342773438, 18.755001068115234]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 21033.0, 'percentile_2': 0.0, 'percentile_98': 0.42500001192092896}}}\n" - ] - } - ], - "source": [ - "##daily 1 days\n", - "ds_xarray = DatasetParams(\n", - " concept_id=\"C2723754864-GES_DISC\",\n", - " backend=\"xarray\",\n", - " datetime_range=\"2022-03-01T00:00:01Z/2022-03-02T23:59:59Z\",\n", - " variable=\"precipitation\",\n", - " step=\"P1D\",\n", - " temporal_mode=\"point\",\n", - ")\n", - "\n", - "gulf_geometry = create_bbox_feature(-98.676, 18.857, -81.623, 31.097)\n", - "stats_result = await benchmark_statistics(\n", - " endpoint=endpoint,\n", - " dataset=ds_xarray,\n", - " geometry=gulf_geometry,\n", - " timeout_s=300.0,\n", - ")\n", - "print(\"Statistics result:\")\n", - "print(f\" Success: {stats_result['success']}\")\n", - "print(f\" Elapsed: {stats_result['elapsed_s']:.2f}s\")\n", - "print(f\" Timesteps: {stats_result['n_timesteps']}\")\n", - "print(f\" Statistics: {stats_result['statistics']}\")" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "8a81954f", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "=== TiTiler-CMR Statistics Benchmark ===\n", - "Client: 2 physical / 4 logical cores | RAM: 30.89 GiB\n", - "Dataset: C2723754864-GES_DISC (xarray)\n", - "Statistics result:\n", - " Success: True\n", - " Elapsed: 2.28s\n", - " Timesteps: 8\n", - " Statistics: {'2022-03-01T00:00:01+00:00': {'2022-03-01T00:00:00.000000000': {'min': 0.0, 'max': 42.82999801635742, 'mean': 0.3393020033836365, 'count': 20898.5, 'sum': 7090.90283203125, 'std': 1.9955874881629714, 'median': 0.0, 'majority': 0.0, 'minority': 0.044999994337558746, 'unique': 1347.0, 'histogram': [[20614, 232, 65, 46, 20, 19, 14, 16, 4, 3], [0.0, 4.2829999923706055, 8.565999984741211, 12.848999977111816, 17.131999969482422, 21.415000915527344, 25.697999954223633, 29.980998992919922, 34.263999938964844, 38.547000885009766, 42.82999801635742]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 21033.0, 'percentile_2': 0.0, 'percentile_98': 4.244999885559082}}, '2022-03-08T00:00:01+00:00': {'2022-03-08T00:00:00.000000000': {'min': 0.0, 'max': 42.36000061035156, 'mean': 0.9508299827575684, 'count': 20898.5, 'sum': 19870.919921875, 'std': 3.2417449281425865, 'median': 0.0, 'majority': 0.0, 'minority': 0.03999999538064003, 'unique': 2620.0, 'histogram': [[19621, 719, 300, 172, 89, 58, 36, 24, 10, 4], [0.0, 4.236000061035156, 8.472000122070312, 12.708000183105469, 16.944000244140625, 21.18000030517578, 25.416000366210938, 29.652000427246094, 33.88800048828125, 38.124000549316406, 42.36000061035156]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 21033.0, 'percentile_2': 0.0, 'percentile_98': 12.290000915527344}}, '2022-03-15T00:00:01+00:00': {'2022-03-15T00:00:00.000000000': {'min': 0.0, 'max': 174.25502014160156, 'mean': 10.431671142578125, 'count': 20898.5, 'sum': 218006.28125, 'std': 22.99134730243641, 'median': 0.0, 'majority': 0.0, 'minority': 0.05000000447034836, 'unique': 6826.0, 'histogram': [[17249, 1821, 640, 378, 346, 306, 171, 94, 24, 4], [0.0, 17.42550277709961, 34.85100555419922, 52.27650833129883, 69.70201110839844, 87.12751770019531, 104.55301666259766, 121.978515625, 139.40402221679688, 156.82952880859375, 174.25502014160156]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 21033.0, 'percentile_2': 0.0, 'percentile_98': 96.41999816894531}}, '2022-03-22T00:00:01+00:00': {'2022-03-22T00:00:00.000000000': {'min': 0.0, 'max': 113.67498779296875, 'mean': 3.880465507507324, 'count': 20898.5, 'sum': 81095.90625, 'std': 12.315773775585773, 'median': 0.0, 'majority': 0.0, 'minority': 0.07999999076128006, 'unique': 3630.0, 'histogram': [[19041, 713, 387, 299, 231, 178, 119, 44, 16, 5], [0.0, 11.367498397827148, 22.734996795654297, 34.10249328613281, 45.469993591308594, 56.837493896484375, 68.20498657226562, 79.5724868774414, 90.93998718261719, 102.30748748779297, 113.67498779296875]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 21033.0, 'percentile_2': 0.0, 'percentile_98': 53.35499954223633}}, '2022-03-29T00:00:01+00:00': {'2022-03-29T00:00:00.000000000': {'min': 0.0, 'max': 17.045001983642578, 'mean': 0.1486642062664032, 'count': 20898.5, 'sum': 3106.85888671875, 'std': 0.7623889029192605, 'median': 0.0, 'majority': 0.0, 'minority': 0.04500000178813934, 'unique': 999.0, 'histogram': [[20389, 377, 145, 70, 29, 10, 5, 2, 3, 3], [0.0, 1.7045001983642578, 3.4090003967285156, 5.113500595092773, 6.818000793457031, 8.522500991821289, 10.227001190185547, 11.931501388549805, 13.636001586914062, 15.34050178527832, 17.045001983642578]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 21033.0, 'percentile_2': 0.0, 'percentile_98': 2.5299999713897705}}, '2022-04-05T00:00:01+00:00': {'2022-04-05T00:00:00.000000000': {'min': 0.0, 'max': 40.5050048828125, 'mean': 0.5256912112236023, 'count': 20898.5, 'sum': 10986.1572265625, 'std': 2.586293636818602, 'median': 0.0, 'majority': 0.0, 'minority': 0.03999999538064003, 'unique': 1562.0, 'histogram': [[20283, 294, 182, 121, 61, 37, 26, 11, 11, 7], [0.0, 4.050500392913818, 8.101000785827637, 12.151500701904297, 16.202001571655273, 20.25250244140625, 24.303001403808594, 28.35350227355957, 32.40400314331055, 36.45450210571289, 40.5050048828125]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 21033.0, 'percentile_2': 0.0, 'percentile_98': 8.694999694824219}}, '2022-04-12T00:00:01+00:00': {'2022-04-12T00:00:00.000000000': {'min': 0.0, 'max': 64.42500305175781, 'mean': 1.5356361865997314, 'count': 20898.5, 'sum': 32092.4921875, 'std': 5.440761947003824, 'median': 0.0, 'majority': 0.0, 'minority': 0.09499998390674591, 'unique': 2873.0, 'histogram': [[19750, 534, 300, 192, 69, 64, 41, 56, 21, 6], [0.0, 6.442500114440918, 12.885000228881836, 19.327499389648438, 25.770000457763672, 32.212501525878906, 38.654998779296875, 45.09749984741211, 51.540000915527344, 57.98250198364258, 64.42500305175781]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 21033.0, 'percentile_2': 0.0, 'percentile_98': 20.049999237060547}}, '2022-04-19T00:00:01+00:00': {'2022-04-19T00:00:00.000000000': {'min': 0.0, 'max': 11.125, 'mean': 0.10002636164426804, 'count': 20898.5, 'sum': 2090.40087890625, 'std': 0.5136673785690946, 'median': 0.0, 'majority': 0.0, 'minority': 0.06000000238418579, 'unique': 807.0, 'histogram': [[20543, 252, 89, 74, 37, 15, 8, 10, 3, 2], [0.0, 1.1124999523162842, 2.2249999046325684, 3.3374998569488525, 4.449999809265137, 5.5625, 6.674999713897705, 7.78749942779541, 8.899999618530273, 10.012499809265137, 11.125]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 21033.0, 'percentile_2': 0.0, 'percentile_98': 1.274999976158142}}}\n" - ] - } - ], - "source": [ - "##weekly 50 days\n", - "ds_xarray = DatasetParams(\n", - " concept_id=\"C2723754864-GES_DISC\",\n", - " backend=\"xarray\",\n", - " datetime_range=\"2022-03-01T00:00:01Z/2022-04-20T23:59:59Z\",\n", - " variable=\"precipitation\",\n", - " step=\"P1W\",\n", - " temporal_mode=\"point\",\n", - ")\n", - "\n", - "gulf_geometry = create_bbox_feature(-98.676, 18.857, -81.623, 31.097)\n", - "stats_result = await benchmark_statistics(\n", - " endpoint=endpoint,\n", - " dataset=ds_xarray,\n", - " geometry=gulf_geometry,\n", - " timeout_s=300.0,\n", - ")\n", - "print(\"Statistics result:\")\n", - "print(f\" Success: {stats_result['success']}\")\n", - "print(f\" Elapsed: {stats_result['elapsed_s']:.2f}s\")\n", - "print(f\" Timesteps: {stats_result['n_timesteps']}\")\n", - "print(f\" Statistics: {stats_result['statistics']}\")" - ] - }, - { - "cell_type": "markdown", - "id": "8f7c7482-9225-456f-8c14-e95cc70e9868", - "metadata": {}, - "source": [ - "Here is an example plot that can be created easily using the `/timeseries/statistics` endpoint: " - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "5bf66e17-ad4c-4483-b5e9-359906fe1805", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAABKUAAAJOCAYAAABm7rQwAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAzslJREFUeJzs3Xd8W/XVP/CPliV5SB6yvO3YjmM7jjMIKwQIhCQEKJBCKZsMWqANqzx0PfwoBCijbFrmU0gaCmXPUkIYCSMESEmcxCvx3nsv2Rr398c3kq3YSSyvK1mf9+ulV+yrdeRcjXt0zvkqJEmSQERERERERERENIWUcgdARERERERERET+h0kpIiIiIiIiIiKackxKERERERERERHRlGNSioiIiIiIiIiIphyTUkRERERERERENOWYlCIiIiIiIiIioinHpBQREREREREREU05JqWIiIiIiIiIiGjKMSlFRERERERERERTjkkpIiIiOqo1a9ZgxowZY7ru3XffDYVCMbEBHcUZZ5yBM844Y8ruz9uM5/9qJP7+95xICoUCd999t9xhEBEReRUmpYiIiLzMpk2boFAoXCedTodZs2bhxhtvRENDg9zhjdv999+P9957b8zXz8/Px913343y8vIJi2kilJeXY+3atUhNTYVOp0N0dDROP/103HXXXW6Xe+aZZ7Bp06Yx309tbS3uvvtu5OTkjC/gQ7zt79nT04N7770Xc+fORWBgIIxGI0477TRs3rwZkiTJHZ7L4c/TI50mMklIREQ03Sgkb3p3JyIiImzatAlr167FPffcg+TkZFgsFnzzzTd4+eWXkZSUhNzcXAQGBk5ZPFarFQ6HA1qt1uPr2mw22Gw26HQ617bg4GD87Gc/G3Ni5q233sIll1yCbdu2DaviGRgYAAAEBASM6bbHqri4GCeccAL0ej3WrVuHGTNmoK6uDrt378bHH38Mi8XiuuycOXNgMpmwffv2Md3Xf//7X5xwwgnYuHEj1qxZ43beWP6vvOnv2dDQgLPOOgsFBQW47LLLsGTJElgsFrz99tv46quvcOmll+KVV16BSqWakniOprS0FN9++63btl/84hc48cQTcd1117m2BQcHY9WqVbBYLFCr1VCr1VMdKhERkdfiuyIREZGXOuecc3D88ccDEAe7EREReOyxx/D+++/j8ssvH/E6PT09CAoK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hz8Mm3cztOXuSFatWuUWy4knnoiTTjoJ//nPf8b0ePV6vetnq9WKlpYWzJw5E6Ghodi9e/eYbvM///kPoqOj3WZwaTQa3Hzzzeju7saXX37pdvlLL70UYWFhrt+dlUilpaVHvZ+srCzk5OTgqquuQnl5OZ588kmsWrUKUVFR+L//+79RxarVaqFUio9mdrsdLS0tCA4ORnp6+pgff2hoKHp6evDpp5+O6fqHe/vtt2EymXDTTTcNO8+5z4z1Pru6ugAAISEhR7yM87zOzk4AoqXVZDLh9ddfd12mra0Nn376KS699FLXtjfffBOZmZnIyMhwe044q9qczwmnJUuWYPbs2R7FP1a/+MUvXD+rVCocf/zxkCQJ1157rWt7aGgo0tPT3fZDTx8TERGRN2L7HhERkZd6+umnMWvWLKjVakRFRSE9Pd2VtHBSq9WIj49321ZUVISOjg63WUZDOQdvO9sB58yZM6b40tLShm2bNWsW3njjjTHdXl9fHx544AFs3LgRNTU1kIYsENzR0TGm26yoqEBaWtqwv5uzPa2iosJte2JiotvvzgTVSLO4Djdr1iy8/PLLsNvtyM/Px7///W/85S9/wXXXXYfk5GQsW7bsqNd3OBx48skn8cwzz6CsrAx2u9113tCWTU/8+te/xhtvvIFzzjkHcXFxWLFiBX7+859j5cqVY7q9kpISpKenH3V4/Vjv05lw6urqQmho6IiXOTxxpVarcfHFF+PVV19Ff38/tFot3nnnHVitVrekVFFREQoKChAZGTni7R4+jD45OfmosU6kw/c5o9EInU4Hk8k0bHtLS4vrd08fExERkTdiUoqIiMhLnXjiia7V945kaHWNk8PhgNlsxiuvvDLidY50ECu3m266CRs3bsStt96KRYsWwWg0QqFQ4LLLLoPD4ZiSGFQq1YjbhybIRnMb2dnZyM7OxqJFi3DmmWfilVdeOWZS6v7778edd96JdevW4d5770V4eDiUSiVuvfXWMT9+s9mMnJwcfPLJJ/j444/x8ccfY+PGjbjmmmuGDXufKGO9z8zMTLz33nvYt2+fa27S4fbt2wcAblVMl112GZ5//nl8/PHHWLVqFd544w1kZGRg3rx5rss4HA5kZ2fjscceG/F2ExIS3H4fWrU32Uba50azH3r6mIiIiLwRk1JERETTTGpqKj777DMsXrz4qAfXzgHjubm5mDlzpsf3U1RUNGzbwYMHjzkU+kitgW+99RZWr17ttsqYxWJBe3v7qK4/kqSkJOzbtw8Oh8MteVdYWOg6fzI5k4p1dXWubUd7/GeeeSZefPFFt+3t7e1uVTOePH4ACAgIwPnnn4/zzz8fDocDv/71r/H888/jzjvvxMyZMz26vdTUVHz//fewWq1HHfx+rPscyU9+8hM88MAD2Lx584hJKbvdjldffRVhYWFYvHixa/vpp5+OmJgYvP766zj11FPxxRdfuIbID4177969OOusszz++3mr6fiYiIjI/3CmFBER0TTz85//HHa7Hffee++w82w2myvJs2LFCoSEhOCBBx6AxWJxu9xoKoPee+891NTUuH7/4Ycf8P333+Occ8456vWCgoKGJZoAUR1y+P3+9a9/dWtjc14fwIi3cbhzzz0X9fX1bjOHbDYb/vrXvyI4OBhLliw55m2Mxtdffw2r1Tpsu3O+Vnp6umubJ4//zTffdPsbO68PjO7xD233AgClUom5c+cCAPr7+z2+vYsvvhjNzc3429/+Nuw8Z+yjuc+RnHLKKVi2bBk2btyIf//738POv+OOO3Dw4EH87ne/c0u2KpVK/OxnP8OHH36Il19+GTabza11DxDPiZqamhHne/X19aGnp+coj9o7TcfHRERE/oeVUkRERNPMkiVLcP311+OBBx5ATk4OVqxYAY1Gg6KiIrz55pt48skn8bOf/QwGgwGPP/44fvGLX+CEE07AFVdcgbCwMOzduxe9vb3HbO+aOXMmTj31VPzqV79Cf38/nnjiCUREROB3v/vdUa+3cOFCfPbZZ3jssccQGxuL5ORknHTSSfjJT36Cl19+GUajEbNnz8bOnTvx2WefDZunNH/+fKhUKjz00EPo6OiAVqvF0qVLR5yhdd111+H555/HmjVr8OOPP2LGjBl46623sGPHDjzxxBNHHartiYceegg//vgjLrroIlcCZvfu3di8eTPCw8Nx6623uj3+Z599Fvfddx9mzpwJs9mMpUuX4ic/+QnuuecerF27Fqeccgr279+PV155BSkpKW73lZqaitDQUDz33HMICQlBUFAQTjrppBHnIP3iF79Aa2srli5divj4eFRUVOCvf/0r5s+f75qr5cnf85prrsHmzZtx22234YcffsBpp52Gnp4efPbZZ/j1r3+NCy+8cFT3eSSbN2/GWWedhQsvvBBXXHEFTjvtNPT39+Odd97B9u3bcemll+K3v/3tsOtdeuml+Otf/4q77roL2dnZw+7n6quvxhtvvIEbbrgB27Ztw+LFi2G321FYWIg33ngDn3zyyTFbZb3NdHxMRETkh+Rb+I+IiIhGsnHjRgmAtGvXrqNebvXq1VJQUNARz3/hhRekhQsXSnq9XgoJCZGys7Ol3/3ud1Jtba3b5T744APplFNOkfR6vWQwGKQTTzxR+te//uV2P0lJSa7fy8rKJADSww8/LD366KNSQkKCpNVqpdNOO03au3ev2207l70fqrCwUDr99NMlvV4vAXAtc9/W1iatXbtWMplMUnBwsHT22WdLhYWFUlJSkusyTv/3f/8npaSkSCqVSgIgbdu2TZIkSVqyZIm0ZMkSt8s2NDS4bjcgIEDKzs6WNm7c6HaZoY/pcACku+66a+Q/8iE7duyQ1q9fL82ZM0cyGo2SRqOREhMTpTVr1kglJSVul62vr5fOO+88KSQkRALgitdisUj/8z//I8XExEh6vV5avHixtHPnzhEf0/vvvy/Nnj1bUqvVEgDX4zn8/+qtt96SVqxYIZnNZikgIEBKTEyUrr/+eqmurm7Mf8/e3l7pjjvukJKTkyWNRiNFR0dLP/vZz1yPc7T3eSRdXV3S3XffLWVlZbn23cWLF0ubNm2SHA7HiNdxOBxSQkKCBEC67777RrzMwMCA9NBDD0lZWVmSVquVwsLCpIULF0obNmyQOjo6XJcDIK1fv35UsR4uKCho2L469HaH7kfO50ZTU5Pb5Y70vF6yZImUlZU1psdERETkrRSS5MHkTiIiIvJ75eXlSE5OxsMPP4zbb79d7nCIiIiIyEdxphQREREREREREU05JqWIiIiIiIiIiGjKMSlFRERERERERERTjjOliIiIiIiIiIhoyrFSioiIiIiIiIiIphyTUkRERERERERENOXUcgfgbRwOB2praxESEgKFQiF3OEREREREREREPkWSJHR1dSE2NhZK5ZHroZiUOkxtbS0SEhLkDoOIiIiIiIiIyKdVVVUhPj7+iOczKXWYkJAQAOIPZzAYZI5m7BwOB5qamhAZGXnUrCTRSLj/0HhxH6Lx4P5D5Dk+b2i8uA/ReHD/ocN1dnYiISHBlWM5EialDuNs2TMYDD6flLJYLDAYDHxRII9x/6Hx4j5E48H9h8hzfN7QeHEfovHg/kNHcqyxSNxbiIiIiIiIiIhoyjEpRUREREREREREU45JKSIiIiIiIiIimnKcKUVERERERER+y+FwYGBgQO4wfJrD4YDVaoXFYuFMKT+h0WigUqnGfTtMShEREREREZFfGhgYQFlZGRwOh9yh+DRJkuBwONDV1XXMwdY0fYSGhiI6Onpc/+dMShEREREREZHfkSQJdXV1UKlUSEhIYIXPOEiSBJvNBrVazaSUH5AkCb29vWhsbAQAxMTEjPm2mJQiIiIiIiIiv2Oz2dDb24vY2FgEBgbKHY5PY1LK/+j1egBAY2MjzGbzmFv5mAomIiIiIiIiv2O32wEAAQEBMkdC5JucyVyr1Trm22BSioiIiIiIiPwWK3uIxmYinjtMShERERERERER0ZRjUoqIiIiIiIiIiKYck1JEREREREREY2R3SNhZ0oL3c2qws6QFdoc06fe5Zs0aKBQK3HDDDcPOW79+PRQKBdasWTPpcRCNF1ffIyIiIiIiIhqDLbl12PBhPuo6LK5tMUYd7jp/NlbOiZnU+05ISMBrr72Gxx9/3LUSmsViwauvvorExMRJvW+iicJKKSIiIiIiIiIPbcmtw6/+udstIQUA9R0W/Oqfu7Elt25S7/+4445DQkIC3nnnHde2d955B4mJiViwYIFrm8PhwAMPPIDk5GTo9XrMmzcPb731lut8u92Oa6+91nV+eno6nnzySbf7WrNmDVatWoVHHnkEMTExiIiIwPr168e16hoRwKQUERERERERkUfsDgkbPszHSI16zm0bPsyf9Fa+devWYePGja7fX3rpJaxdu9btMg888AA2b96M5557Dnl5efjNb36Dq666Cl9++SUAkbSKj4/Hm2++ifz8fPzpT3/C//7v/+KNN95wu51t27ahpKQE27Ztwz/+8Q9s2rQJmzZtmtTHR9Mf2/eIiIiIiIiIAJz/12/Q1NV/zMv12+xo6z1ylZAEoK7DguPv+xRateqYtxcZosWHN53qSagAgKuuugp//OMfUVFRAQDYsWMHXnvtNWzfvl3E2d+P+++/H5999hkWLVoEAEhJScE333yD559/HkuWLIFGo8GGDRtct5mcnIydO3fijTfewM9//nPX9rCwMPztb3+DSqVCRkYGzjvvPHz++ef45S9/6XHcRE5MShEREREREREBaOrq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XLjQ7ffR3LanJEmCQqEAAOzduxfbtm1zSxBmZGQAAEpKSgAAV155Jd5++2309/cDAF555RVcdtllUCpHTs+M9m96NJ2dnaitrcXixYvdti9evBgFBQVu24b+38TExACA6/9mMnD1PSIiGpXqarHqXkLC1NyfUikSU9XV4ud588TsBSIiIiJ/Fh4e7qpMAgC9Xg+z2YyZM2dO6P2EhITg/PPPx/nnn4/77rsPZ599Nu677z4sX778iNdZs2YNWlpa8OSTTyIpKQlarRaLFi0aNmRco9G4/a5QKIbNWTqahx9+GE8++SSeeOIJZGdnIygoCLfeeuuw+wkKChr1bY5FS0sLmpqaXDO2uru7cf755+Ohhx4adllnguf888+HJEn46KOPcMIJJ+Drr7/G448/fsT7WL169aj+phNl6P+NM9nmyf+Np5iUIiKiY+ruBkpLAaNRJIimikoFxMWJwepqNZCdPXnLJRMRERHRyBQKBTIyMvDtt98CAAIOfSA7fObUjh078Mwzz+Dcc88FIOZDNXu4rHJmZuawwefffffdsPu58MILcdVVVwEQSZODBw9i9uzZ475tTzz55JNQKpVYtWoVAOC4447D22+/jRkzZkB9hNYCnU6Hiy66CK+88gqKi4uRnp6O44477oj3MZq/qUajOeL8LwAwGAyIjY3Fjh07sGTJErfbPvHEE0f7cCcF2/eIiOiYKipEYio0dOrvW60WiamKCiAvD7Bapz4GIiIiIm/R3d2N+vp61+m1117DypUr3bYNTVBUVlYiJycHlZWVsNvtrha/7iMM7szJycGFF16It956C/n5+SguLsaLL76Il156CRdeeCEAwGw2Q6/XuwZ5d3R0ABAznF5++WUUFBTg+++/x5VXXgm9Xu/R47vhhhtQVFSE3/72tzhw4ABeffVVbNq0ye0yaWlp+PTTT/Htt9+ioKAA119/PRoaGibkto+kq6sL9fX1qKqqwldffYXrrrsO9913H/785z+7qtTWr1+P1tZWXH755di1axdKSkrwySefYO3atW7/J1deeSU++ugjvPTSS0cccD70sR7rbzpjxgx8/vnnqK+vR9sRlrD+7W9/i4ceegivv/46Dhw4gD/84Q/IycnBLbfcMqrHP1mYlCIioqNqawMqK4GICPliUKvF8POyMqCgADjKF0FERERE49bfD1gsk386NFbII4888ghiYmKOeqqqqnJd/k9/+hMWLFiAu+66C93d3ViwYIFrdbiRxMfHY8aMGdiwYQNOOukkHHfccXjyySexYcMG3HHHHQAAtVqNp556Cs8//zxiY2NdlUJ///vf0dbWhuOOOw5XX301br75ZpjNZo8eX2JiIt5++2289957mDdvHp577jncf//9bpf5f//v/+G4447D2WefjTPOOAPR0dGuGMZ720fypz/9CTExMZg5cyauvvpqdHR04PPPP8fvf/9712Wc1Uh2ux0rVqxAdnY2br31VoSGhrrNjFq6dCnCw8Nx4MABXHHFFUe93xdffPGYf9NHH30Un376KRISErBgwYIRb+fmm2/Gbbfdhv/5n/9BdnY2tmzZgg8++ABpaWmjevyTRSFJkiRrBF6ms7MTRqMRHR0dMBgMcoczZg6HA42NjTCbzUccmEZ0JNx/yEmSgJwckZSKj/fkeg5YLI3Q6cxQKCZuH7JYgMZGYNYsIDNzalsJaerwNYjIc3ze0Hj54z5ksVhQVlaG5ORk6A4NrhwYAH74YWpX/w0OBk480bdHFEiSBJvNBrVa7ZpDRNPfSM8hp9HmVjhTioiIjqipCaiqAkwmuSMRdDogMhI4eFBUT82aJVbqIyIiIpoIAQEiQWSzTd19qtW+nZAiGg+fSYE/++yzmDt3LgwGAwwGAxYtWoSPP/7Ydb7FYsH69esRERGB4OBgXHzxxaPqKSUiopHZ7WK4uVLpXave6fWilbCwECgpEdVcRERERBMlIAAIDJy6ExNS5M98JikVHx+PBx98ED/++CP++9//YunSpbjwwguRl5cHAPjNb36DDz/8EG+++Sa+/PJL1NbW4qKLLpI5aiIi31VXB9TXi8okbxMUJIau5+eLAehEREREROR7fKZ97/zzz3f7/c9//jOeffZZfPfdd4iPj8eLL76IV199FUuXLgUAbNy4EZmZmfjuu+9w8sknyxEyEZHPGhgQVUh6vSgp90bBwaKaKzcXUKmAhAS5IyIiIiIiIk946aHG0dntdrz55pvo6enBokWL8OOPP8JqtWLZsmWuy2RkZCAxMRE7d+48alKqv78f/UOWPOjs7AQgBv05HI7JexCTzOFwQJIkn34MJB/uP1RVBbS0iOHmY2mPkySxD0nS5O5DBoNITO3bJ9oMY2Im9e5oivA1iMhzfN7QePnjPuR8zM4TjY/zb8i/pf9wPndGyp+M9rXEp5JS+/fvx6JFi2CxWBAcHIx3330Xs2fPRk5ODgICAhAaGup2+aioKNTX1x/1Nh944AFs2LBh2PampiZYLJaJDH9KORwOdHR0QJIkv1k9gyYO9x//1t8PFBWJFrmBgbHdhiQ5YLV2AJAmdPW9kej1gNUK7N0LdHWJtj7ybXwNIvIcnzc0Xv64D1mtVjgcDlitVqi9tTTcR0iSBLvdDgBcfc+POJ9Dra2tw55DXV1do7oNn3rmpaenIycnBx0dHXjrrbewevVqfPnll+O6zT/+8Y+47bbbXL93dnYiISEBkZGRR1220Ns5HA4oFApERkb6zZsKTRzuP/7twAGgr09USY31M4WokFJAp4uc9KQUIAaxNzYClZViCHpExKTfJU0ivgYReY7PGxovf9yH7HY7enp60N7eDrVazWTKOFmtVrlDoCkiSRKsVisaGxuhVqsRHR097HVDN8qVknwqKRUQEICZM2cCABYuXIhdu3bhySefxKWXXoqBgQG0t7e7VUs1NDQgOjr6qLep1Wqh1WqHbVcqlT7/YqxQKKbF4yB5cP/xTx0dYnB4eLhohxsPhUIBhUI5JUkpAIiKEoPZ9+0DjjsOCAubkrulScLXICLP8XlD4+Vv+5BSqUR8fDyqq6tRwZVTxsXZwqVUKpnc8yOBgYGIiYkZsdJwtK8jPpWUOpzD4UB/fz8WLlwIjUaDzz//HBdffDEA4MCBA6isrMSiRYtkjpKIyDdIElBWBlgs3rni3mhERwO1tSIxtWCBmDlFREREdCTBwcFIS0tjlc84ORwOtLS0ICIiwm+Smv5OpVJNSIWhzySl/vjHP+Kcc85BYmIiurq68Oqrr2L79u345JNPYDQace211+K2225DeHg4DAYDbrrpJixatIgr7xERjVJzM1Bd7bsJKaeYGKCmRiSm5s8Xq/QRERERHYlKpYJKpZI7DJ/mcDig0Wig0+mYlCKP+ExSqrGxEddccw3q6upgNBoxd+5cfPLJJ1i+fDkA4PHHH4dSqcTFF1+M/v5+nH322XjmmWdkjpqIyDfY7UBpqaiWGmX7t9dSKIDYWJGY2r8fmDcPCAyUOyoiIiIiIjqczySlXnzxxaOer9Pp8PTTT+Ppp5+eooiIiKaPhgYxjykqSu5IJoZSOZiYUipFYsrXk21ERERERNMN6+qIiPyc1QqUlAABAYBGI3c0E0elGkxM5eUBAwNyR0REREREREMxKUVE5OdqaoCmJiAiQu5IJp5aDcTFiRUF8/JEAo6IiIiIiLwDk1JERH6sr09USRkMorJoOlKrxfDzsjKgoEDMzyIiIiIiIvkxKUVE5McqK4GODiA0VO5IJldAgJiXVVICFBYCDofcEREREREREZNSRER+qrMTKC8HwsPFinXTnU4HREYCBw8CRUVipUEiIiIiIpIPk1JERH5IkkRCqq8PCAmRO5qpo9eL2VmFhaJqiokpIiIiIiL5qOUOgIiIpl5rK1BVBZhMckcy9YKCRDIqP1/Mm5oxQ+6IiIiIiIj8E5NSRER+xuEASkvFwG+9Xu5o5BEcLB5/bq4Y8J6QIHdERERERET+h0kpIiI/09AA1NYCZrPckcjLaBQJuv37RWIqNlbuiIiIiIiI/AtnShER+RGrVcxS0mjEinT+LixMJKT27xfJOiIiIiIimjpMShER+ZG6OqCxUQz7JsFkEhVT+/YBzc1yR0NERERE5D+YlCIi8hMWi6iSCg4WA75pkNkMDAwAe/cCbW1yR0NERERE5B+YlCIi8hNVVSLhEh4udyTeKToa6O0VFVOdnXJHQ0REREQ0/TEpRUTkB7q6gLIyMUNJoZA7Gu8VEwO0t4uKqe5uuaMhIiIiIpremJQiIvID5eVATw9gMMgdiXdTKMQqfC0tYvh5b6/cERERERERTV9MShERTXOtrUBlpRjoTcemVIrEVH29SExZLHJHREREREQ0PTEpRUQ0jTkcom3PZgMCA+WOxneoVCIxVVMD5OWJIehERERERDSxmJQiIprGGhtFYiUyUu5IfI9aDcTFARUVIjFltcodERERERHR9MKkFBHRNGWziSoplQrQauWOxjep1WL4eVkZUFAA2O1yR0RERERENH0wKUVENE3V1QENDZwlNV4BAUB0NFBSAhQWipZIIiIiIiIaPyaliIimof5+kUTR60W1D42PVguYzUBRkThJktwRERERERH5PialiIimoepqsepeeLjckUwfOp34exYWioQfE1NEREREROPD78+JiKaZ7m6gtBQwGgElv3qYUEFBIhmVny8q0GbMkDsiIiIiIiLfxcMVIqJppqJCJKZCQ+WOZHoKDhan3FygqkruaIiIiIiIfBcrpYiIppG2NqCyEoiIkDuS6c1oFAPP9+8X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RETj53Gl1KWXXore3l6kpqYiMDAQmsOOCFtbWycsOCKikdTWAk1NQHy83JEQkb8IDhate/n5opUvPR3g+i5ERERE4+NxUuqJJ56YhDCIiEanrw8oLgZCQnhASERTKyhItO4VForEVGYmoPb4kxQREREROXn8UWr16tWTEQcR0ahUVgIdHWIlLCKiqabXA1FRIjlutwOzZwMBAXJHRUREROSbxvT9nt1ux3vvvYeCggIAQFZWFi644AKoWLZARJOosxMoLxcrYnEFLCKSi04nFlkoLRXzpbKyxIw7IiIiIvKMx0mp4uJinHvuuaipqUF6ejoA4IEHHkBCQgI++ugjpKamTniQRESSJBJSfX2AySR3NETk7wICgNhY8bpktwPZ2SJZRURERESj5/HqezfffDNSU1NRVVWF3bt3Y/fu3aisrERycjJuvvnmyYiRiAitrUBVFRNSROQ9NBogLk68NuXkAL29ckdERERE5Fs8rpT68ssv8d133yE8PNy1LSIiAg8++CAWL148ocEREQGiPaa0VFQj6PVyR0NENEitFomp2lpR0ZmdLVbqIyIiIqJj87hSSqvVoqura9j27u5uBHDSJxFNgoYGccAXGSl3JEREwzkTUw0NomKqs1PuiIiIiIh8g8dJqZ/85Ce47rrr8P3330OSJEiShO+++w433HADLrjggsmIkYj8mNUqqqQ0Gq5wRUTeS6USiamWFmDPHqC9Xe6IiIiIiLyfx0mpp556CqmpqVi0aBF0Oh10Oh0WL16MmTNn4sknn5yMGInIj9XVAY2NQESE3JEQER2dUikSUx0dIjHV2ip3RERERETezeOZUqGhoXj//fdRVFSEwsJCAEBmZiZmzpw54cERkX+zWICSEiAoSLTHkG+wSxLyG1vQ2NUKc4gKs80mqBQKucMimhIKhViVr75eJKbmzmXrMREREdGRjPkwLy0tDWlpaRMZCxGRm+pqUWmQlCR3JDRa31XX4aWcfLT0WQ5tKUOEXod182fj5PgYWWMjmioKBRATM5iYmjcPiIqSOyoiIiIi7zOqpNRtt92Ge++9F0FBQbjtttuOetnHHntsQgIjIv/W1SVmSYWFiQM88n7fVdfh4Z27h21v6bPg4Z278dtFxzExRX4lOhpoahqsmIqNlTsiIiIiIu8yqqTUnj17YLVaXT8TEU228nKgpwdITJQ7EhoN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CARUX1+v/Px8SdLf/vY3lZaWqqSkxOXVw22rV6/Wgw8+qC996UuaOnVq54lJZmamPvWpT8nj8XSGCvHPO3bsUE1NDVtJIEl69913deWVV2r79u2SpIsvvlgXXnihcnNzu5202ratlpYWSdJ3vvMd3XHHHVq6dCmBFMYkzv3gBOd+cIrzv7GNUArdbN68WSeddJIWLlyoBQsW6D//+Y+eeeYZzZ07V88++6yOOeYYRaNRZWRkdD7BfOxjH9PWrVv18ssva8aMGW7/CnBRX/Uzb948PffcczrmmGNUUlKitWvX6oorrtCkSZPU0dGh3/zmN3rxxRdVXFzs9q8AF61du1Yf//jHFQqFFA6Hddlll+mggw7qPNnw+/3d7t/a2qpbbrlFL730kl566SVOSqD33ntPxx9/vM4991x95Stf0TPPPKP7779fc+fO1ZFHHikpsS3AsixNmjRJN9xwg37wgx9o2bJlqqurc/k3AJKPcz84wbkfnOL8D7KBLl544QV79uzZ9p49ezpvW7Nmjb1w4UI7GAzab7zxhm3bth2NRm3btu277rrLtiyr83aMbf3VT1ZWlv3qq6/atm3br7/+un3yySfb8+fPtxcuXGi/8847bi0ZKaK5udk+77zz7IULF9o33nijXVtba1922WX2mjVrer3/E088YS9cuNCurKzk8Qe2bdt2fX29feKJJ9qXXnppt9vr6ursL3/5y/vd/09/+pNtWZZdUlJiv/baa8laJpByOPeDE5z7wQnO/2Dbtk2nFLrZt2+f3nrrrW5XIzrooIN05513qqOjQ2effbZefPFFVVVVybZtHX/88frggw80depUF1eNVHGg+jn33HP1/PPPq66uTr///e+VnZ2tcDisQCDg4qqRCgKBgObPn69gMKjzzz9fRUVFeuihhyRJV155pQ466KBu9589e7ZWrlypm266SQcffLAbS0aK2bJli/Ly8rRgwQJJ5pL2fr9fn/zkJ7Vnz5797j9t2jSNGzdOzz77rGbOnJns5QIpg3M/OMG5H5zg/A+SxEQwdDNv3jzNnj1b99xzj5qamjpvHzdunK655hoVFhbq5ZdfliRZlqXa2lpOStBpIPXzyiuvSJKysrIk7d+Si7HJ5/Np0aJF+vznPy9Juuyyy3TBBRfoX//6l+6++259+OGHkkzQsHPnTlVVVenaa6/lhASdDjvs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ZWdnq6qqSpdeeqmam5slSS+99JIuvPBCNTQ0dHZdffe735UkhcNhfe1rX9P48eOVnZ2to48+Wi+99JI7vygAAEAvCKUAAABSyAknnKCamhr98Y9/lCR5PB7de++9evfdd/Xoo49q8eLF+sY3viFJmjdvnu6++27l5eVp27Zt2rZtm772ta9Jki677DItXbpUv/71r7V8+XKdffbZOvnkk7V69WrXfjcAAICuLNu2bbcXAQAAMNZccMEF2rdvn5588sn9vnfuuedq+fLlWrly5X7f+/3vf68vf/nL2r17tyQzU+rKK6/Uvn37Ou+zceNGTZkyRRs3btS4ceM6b//Upz6lo446Srfeeuuw/z4AAACD5XN7AQAAAOjOtm1ZliVJ+vvf/67bbrtN77//vhobGxWJRBQKhdTa2qpgMNjrz69YsULRaFSHHHJIt9vD4bCKi4tHfP0AAAADQSgFAACQYt577z1NnjxZ69ev12mnnaZLLrlEt9xyi4qKirRkyRJ96UtfUnt7e5+hVHNzs7xer15//XV5vd5u38vJyUnGrwAAAHBAhFIAAAApZPHixVqxYoWuuuoqvf7664rFYrrrrrvk8ZhRoL/97W+73d/v9ysajXa7rba2VtFoVDt37tSxxx6btLUDAAAMBqEUAACAS8LhsLZv365oNKodO3boueee02233abTTjtNixYt0jvvvKOOjg7dd999Ov300/Wvf/1L999/f7e/Y9KkSWpubtYLL7ygmpoaBYNBHXLIIfr85z+vRYsW6a677lJtba127dqlF154QUcccYROPfVUl35jAACABK6+BwAA4JLnnntOlZWVmjRpkk4++WS9+OKLuvfee/XUU0/J6/WqpqZGP/zhD3X77bfr8MMP1+OPP67bbrut298xb948ffnLX9aCBQtUWlqqO+64Q5L08MMPa9GiRbrmmmt06KGH6swzz9Srr76qiRMnuvGrAgAA7Ier7wEAAAAAACDp6JQCAAAAAABA0hFKAQAAAAAAIOkIpQAAAAAAAJB0hFIAAAAAAABIOkIpAAAAAAAAJB2hFAAAAAAAAJKOUAoAAAAAAABJRygFAAAAAACApCOUAgAAAAAAQNIRSgEAAAAAACDpCKUAAAAAAACQdIRSAAAAAAAASLr/D/NhD7D4KbcEAAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Date range: 2022-03-01 00:00:01+00:00 to 2022-04-19 00:00:01+00:00\n", - "Mean precipitation range: 0.10 to 10.43\n", - "Average standard deviation: 6.23\n" - ] - } - ], - "source": [ - "import numpy as np\n", - "from datetime import datetime\n", - "\n", - "data = stats_result[\"statistics\"]\n", - "\n", - "dates = []\n", - "means = []\n", - "stds = []\n", - "\n", - "for date_str, values in data.items():\n", - " dates.append(datetime.fromisoformat(date_str))\n", - " inner_data = list(values.values())[0]\n", - "\n", - " means.append(inner_data[\"mean\"])\n", - " stds.append(inner_data[\"std\"])\n", - "\n", - "plt.figure(figsize=(12, 6))\n", - "plt.plot(dates, means, linestyle=\"-\", marker=\"o\", linewidth=2, label=\"Mean\")\n", - "plt.fill_between(\n", - " dates,\n", - " np.array(means) - np.array(stds),\n", - " np.array(means) + np.array(stds),\n", - " alpha=0.2,\n", - " color=\"b\",\n", - " label=\"±1 Standard Deviation\",\n", - ")\n", - "\n", - "plt.xlabel(\"Date\")\n", - "plt.ylabel(\"Precipitation (mm)\") # Updated based on your data\n", - "plt.title(\"Precipitation Statistics Over Time\")\n", - "plt.legend()\n", - "plt.xticks(rotation=45)\n", - "plt.grid(True, alpha=0.3)\n", - "plt.tight_layout()\n", - "plt.show()\n", - "\n", - "# Print some summary statistics\n", - "print(f\"Date range: {min(dates)} to {max(dates)}\")\n", - "print(f\"Mean precipitation range: {min(means):.2f} to {max(means):.2f}\")\n", - "print(f\"Average standard deviation: {np.mean(stds):.2f}\")" - ] - }, - { - "cell_type": "markdown", - "id": "4763b1d6-6051-4c59-8225-911f538b98b8", - "metadata": {}, - "source": [ - "## Conclusion\n", - "\n", - "In this notebook, we explored how to benchmark the `/timeseries/statistics` endpoint of a TiTiler-CMR deployment. We examined how different parameters, such as geometry size and time range, impact the performance of this endpoint.\n", - "\n", - "In general, for high-resolution datasets with many granules, it's advisable to use smaller AOIs and shorter time ranges to ensure timely responses and avoid timeouts.\n", - "\n", - "\n", - "### Further Reading\n", - "- [TiTiler-CMR GitHub Repository](https://github.com/developmentseed/titiler-cmr)\n", - "- [Titiler-CMR API Documentation](https://staging.openveda.cloud/api/titiler-cmr/api.html#/)\n", - "- [Earthdata Cloud CMR Datasets](https://cmr.earthdata.nasa.gov/search/site/docs/search/api.html#datasets)\n" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "titiler-updates", - "language": "python", - "name": "titiler-updates" - }, - "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.13.5" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/docs/visualization/titiler/titiler-cmr/benchmark-tiles.ipynb b/docs/visualization/titiler/titiler-cmr/benchmark-tiles.ipynb deleted file mode 100644 index 058ed5c..0000000 --- a/docs/visualization/titiler/titiler-cmr/benchmark-tiles.ipynb +++ /dev/null @@ -1,2111 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "b44dbc99", - "metadata": {}, - "source": [ - "# Benchmarking tile generation\n", - "\n", - "This notebook walks you through a workflow to **benchmark performance** of a [TiTiler-CMR](https://github.com/developmentseed/titiler-cmr) deployment for a given Earthdata CMR dataset.\n", - "\n", - "\n", - "> **What is TiTiler-CMR?**\n", - ">\n", - "> [TiTiler](https://github.com/developmentseed/titiler) is a lightweight dynamic tiling server for raster/COG data.\n", - "> \n", - "> **TiTiler-CMR** is a variant/deployment that integrates with NASA's **Common Metadata Repository (CMR)** so you can render tiles **directly from CMR-managed datasets** (e.g., HDF5/NetCDF4/GRIB hosted on Earthdata Cloud).\n", - "> It can resolve a **CMR concept ID** to a renderable item, and expose tile and statistics endpoints without you needing to manually construct source URLs.\n", - "\n", - "-----------------------------------\n", - "\n", - "**In this notebook, you'll learn**:\n", - "\n", - "- How to benchmark tile rendering performance across zoom levels\n", - "- What factors impact tile generation performance in TiTiler-CMR for different backends (e.g., NetCDF4 vs rasterio/GDAL)" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "18a0edb6-7220-4910-854d-3b07d4e4f417", - "metadata": {}, - "outputs": [], - "source": [ - "import asyncio\n", - "import pandas as pd\n", - "\n", - "from datacube_benchmark.titiler import (\n", - " DatasetParams,\n", - " benchmark_viewport,\n", - " tiling_benchmark_summary,\n", - ")\n", - "from datacube_benchmark.titiler.cmr.benchmark import check_titiler_cmr_compatibility" - ] - }, - { - "cell_type": "markdown", - "id": "fc9e4eac-dd79-4032-be7f-dad189261555", - "metadata": {}, - "source": [ - "## TiTiler-CMR Setup\n", - "\n", - "`titiler-cmr` is a NASA-focused application that accepts Concept IDs and uses the Common Metadata Repository (CMR) to discover and serve associated granules as tiles. You can deploy your own instance of `titiler_cmr` using the [official guide](https://github.com/developmentseed/titiler-cmr), or use a public instance that is already deployed.\n", - "\n", - "For this walkthrough, we will use the public instance hosted by [Open VEDA](https://staging.openveda.cloud/api/titiler-cmr/).\n", - "\n", - "To get started with a dataset, you need to:\n", - "- Choose a Titiler-CMR endpoint\n", - "- Pick a CMR dataset (by concept ID)\n", - "- Identify the assets/variables/bands you want to visualize\n", - "- Define a temporal interval (`start/end` ISO range) and, if needed, a time step (e.g., daily).\n", - "- Select a backend that matches your dataset’s structure\n", - "\n", - "Titiler-CMR supports two different backends:\n", - " - **xarray** → for gridded/cloud-native datasets (e.g., NetCDF4/HDF5/GRIB), typically exposed as variables.\n", - " - **rasterio** → for COG/raster imagery-style datasets exposed as bands (optionally via a regex).\n", - "\n", - "\n", - "> **Tip: Explore data granules with `earthaccess`**\n", - "> \n", - "> You can use [`earthaccess`](https://github.com/nsidc/earthaccess) to search and inspect the individual granules used in your query. This helps you validate which files were accessed, their sizes, and the temporal range." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "55ad2e88", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Found 2 granules between 2022-03-01T00:00:01Z and 2022-03-02T23:59:59Z\n" - ] - } - ], - "source": [ - "import earthaccess\n", - "\n", - "concept_id = \"C2723754864-GES_DISC\"\n", - "time_range = (\"2022-03-01T00:00:01Z\", \"2022-03-02T23:59:59Z\")\n", - "\n", - "# Authenticate if needed\n", - "earthaccess.login() # or use \"interactive\" if needed\n", - "\n", - "results = earthaccess.search_data(concept_id=concept_id, temporal=time_range)\n", - "\n", - "print(f\"Found {len(results)} granules between {time_range[0]} and {time_range[1]}\")" - ] - }, - { - "cell_type": "markdown", - "id": "987aca5f-5d86-4e4d-a39e-70845d936ded", - "metadata": {}, - "source": [ - "## Tile Generation Benchmarking\n", - "In this part, we are going to measure the tile generation performance across different zoom levels using `titiler_cmr_benchmark.benchmark_viewport` function. \n", - "This function simulates the load of a typical viewport render in a slippy map, where multiple adjacent tiles must be fetched in parallel to draw a single view.\n" - ] - }, - { - "cell_type": "markdown", - "id": "034cd95c", - "metadata": {}, - "source": [ - "First, we have to define the parameters for the CMR dataset we want to benchmark. The `DatasetParams` class encapsulates all the necessary information to interact with a specific dataset via TiTiler-CMR.\n" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "4e7a8f91-ce75-4afc-85de-b1a6b4b0f48d", - "metadata": {}, - "outputs": [], - "source": [ - "endpoint = \"https://staging.openveda.cloud/api/titiler-cmr\"\n", - "\n", - "concept_id = \"C2723754864-GES_DISC\"\n", - "datetime_range = \"2022-04-01T00:00:01Z/2022-04-02T23:59:59Z\"\n", - "variable = \"precipitation\"\n", - "\n", - "ds_xarray = DatasetParams(\n", - " concept_id=\"C2723754864-GES_DISC\",\n", - " backend=\"xarray\",\n", - " datetime_range=\"2022-03-01T00:00:01Z/2022-03-01T23:59:59Z\",\n", - " variable=\"precipitation\",\n", - " step=\"P1D\",\n", - " temporal_mode=\"point\",\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "9823ed5f-5828-47eb-834f-81d52890c2ec", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "=== TiTiler-CMR Compatibility Check ===\n", - "Client: 8 physical / 8 logical cores | RAM: 16.00 GiB\n", - "Dataset: C2723754864-GES_DISC (xarray)\n", - "Found 1 timesteps/granules from TileJSON\n", - "Using random bounds for compatibility check: [-55.363307852513095, 37.583182317779745, 25.135139337479337, 77.83240591277595]\n", - "Statistics returned 1 timesteps\n", - "Compatibility: compatible\n", - "Timesteps: 1\n", - "Bounds: [-180.0, -90.0, 180.0, 90.0]\n", - "Statistics preview:\n", - " timestamp min max mean count \\\n", - "0 2022-03-01T00:00:00.000000000 0.0 84.825005 3.631561 324133.25 \n", - "\n", - " sum std median majority minority unique valid_percent \\\n", - "0 1177109.75 7.336288 0.35 0.0 0.065 24709.0 100.0 \n", - "\n", - " masked_pixels valid_pixels percentile_2 percentile_98 \n", - "0 0.0 325624.0 0.0 28.200001 \n" - ] - } - ], - "source": [ - "compat = await check_titiler_cmr_compatibility(\n", - " endpoint=endpoint,\n", - " dataset=ds_xarray,\n", - " timeout_s=250.0,\n", - ")\n", - "\n", - "print(f\"Compatibility: {compat['compatibility']}\")\n", - "print(f\"Timesteps: {compat['n_timesteps']}\")\n", - "print(f\"Bounds: {compat['tilejson_bounds']}\")\n", - "if not compat[\"statistics\"].empty:\n", - " print(f\"Statistics preview:\\n{compat['statistics']}\")" - ] - }, - { - "cell_type": "markdown", - "id": "bd0861dc", - "metadata": {}, - "source": [ - "### Zoom Levels\n", - "Zoom levels determine the detail and extent of the area being rendered. At lower zoom levels, a single tile covers a large spatial area and may intersect many granules. This usually translates to more I/O, more resampling/mosaic work, higher latency, and higher chance of timeouts errors.\n", - "\n", - "As you increase zoom, each tile covers a smaller area, reducing the number of intersecting granules and the amount of work per request. \n", - "\n", - "We'll define a range of zoom levels to test to see how performance varies." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "bde8b55b", - "metadata": {}, - "outputs": [], - "source": [ - "min_zoom = 3\n", - "max_zoom = 20\n", - "\n", - "# Define the viewport parameters\n", - "viewport_width = 4\n", - "viewport_height = 4\n", - "lng = 25.0\n", - "lat = 29.0" - ] - }, - { - "cell_type": "markdown", - "id": "6e94b767", - "metadata": {}, - "source": [ - "Now, let's run the benchmark across the specified zoom levels and visualize the results.\n", - "\n", - "Under the hood, `benchmark_viewport` computes the center tile for each zoom level, selects its neighboring tiles to approximate a viewport, and requests them concurrently from the TiTiler-CMR endpoint. This function returns a pandas.DataFrame containing the response times for each tile request.\n" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "627eca1c", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "=== TiTiler-CMR Tile Benchmark ===\n", - "Client: 8 physical / 8 logical cores | RAM: 16.00 GiB\n", - "Dataset: C2723754864-GES_DISC (xarray)\n", - "Query params: 8 parameters\n", - " concept_id: C2723754864-GES_DISC\n", - " backend: xarray\n", - " datetime: 2022-03-01T00:00:01Z/2022-03-01T23:59:59Z\n", - " variable: precipitation\n", - " step: P1D\n", - " temporal_mode: point\n", - " tile_format: png\n", - " tile_scale: 1\n", - "Total execution time: 23.760s\n" - ] - } - ], - "source": [ - "df_viewport = await benchmark_viewport(\n", - " endpoint=endpoint,\n", - " dataset=ds_xarray,\n", - " lng=lng,\n", - " lat=lat,\n", - " viewport_width=viewport_width,\n", - " viewport_height=viewport_height,\n", - " min_zoom=min_zoom,\n", - " max_zoom=max_zoom,\n", - " timeout_s=60.0,\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "15ba4c0b-6241-4fe0-8e82-d9271b4c668c", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
zoomxystatus_codeokno_datais_errorresponse_time_seccontent_typeresponse_size_bytesurlerror_texttotal_run_elapsed_s
0321200TrueFalseFalse0.937998image/png694https://staging.openveda.cloud/api/titiler-cmr...None23.760225
1331200TrueFalseFalse1.573622image/png694https://staging.openveda.cloud/api/titiler-cmr...None23.760225
2341200TrueFalseFalse0.986524image/png694https://staging.openveda.cloud/api/titiler-cmr...None23.760225
3351200TrueFalseFalse0.961534image/png694https://staging.openveda.cloud/api/titiler-cmr...None23.760225
4361200TrueFalseFalse1.155569image/png694https://staging.openveda.cloud/api/titiler-cmr...None23.760225
\n", - "
" - ], - "text/plain": [ - " zoom x y status_code ok no_data is_error response_time_sec \\\n", - "0 3 2 1 200 True False False 0.937998 \n", - "1 3 3 1 200 True False False 1.573622 \n", - "2 3 4 1 200 True False False 0.986524 \n", - "3 3 5 1 200 True False False 0.961534 \n", - "4 3 6 1 200 True False False 1.155569 \n", - "\n", - " content_type response_size_bytes \\\n", - "0 image/png 694 \n", - "1 image/png 694 \n", - "2 image/png 694 \n", - "3 image/png 694 \n", - "4 image/png 694 \n", - "\n", - " url error_text \\\n", - "0 https://staging.openveda.cloud/api/titiler-cmr... None \n", - "1 https://staging.openveda.cloud/api/titiler-cmr... None \n", - "2 https://staging.openveda.cloud/api/titiler-cmr... None \n", - "3 https://staging.openveda.cloud/api/titiler-cmr... None \n", - "4 https://staging.openveda.cloud/api/titiler-cmr... None \n", - "\n", - " total_run_elapsed_s \n", - "0 23.760225 \n", - "1 23.760225 \n", - "2 23.760225 \n", - "3 23.760225 \n", - "4 23.760225 " - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df_viewport.head()" - ] - }, - { - "cell_type": "markdown", - "id": "ed63003f", - "metadata": {}, - "source": [ - "The output includes the following columns:\n", - " \n", - "- `zoom, x, y` — XYZ tile indices\n", - "- `status_code` — HTTP code (200 = success, 204 = no-data, 4xx/5xx = errors)\n", - "- `response_time_sec` — wall time in seconds\n", - "- `response_size_bytes` — payload size\n", - "- `ok`, `is_error, has_data` — convenience flags\n", - "\n", - "Now, let's use a convenience function to summarize the benchmark results. " - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "7b361ecc", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
zoomn_tilesok_pctno_data_pcterror_pctmedian_latency_sp95_latency_s
0325.0100.00.00.01.3383067.174594
1425.0100.00.00.01.2621987.091972
2525.0100.00.00.01.1612127.161183
3625.0100.00.00.01.3006027.068649
4725.0100.00.00.01.4291767.127629
5825.0100.00.00.01.2235327.166088
6925.0100.00.00.01.2726027.019425
71025.0100.00.00.01.0908936.192206
81125.0100.00.00.01.0997922.061258
91225.0100.00.00.01.1171831.945991
101325.0100.00.00.01.0949471.608045
111425.0100.00.00.01.2205991.601522
121525.0100.00.00.01.1685491.988644
131625.0100.00.00.01.0408131.293670
141725.0100.00.00.01.0208881.174938
151825.0100.00.00.01.1112901.955387
161925.0100.00.00.01.0154131.711985
172025.0100.00.00.01.1491871.616943
\n", - "
" - ], - "text/plain": [ - " zoom n_tiles ok_pct no_data_pct error_pct median_latency_s \\\n", - "0 3 25.0 100.0 0.0 0.0 1.338306 \n", - "1 4 25.0 100.0 0.0 0.0 1.262198 \n", - "2 5 25.0 100.0 0.0 0.0 1.161212 \n", - "3 6 25.0 100.0 0.0 0.0 1.300602 \n", - "4 7 25.0 100.0 0.0 0.0 1.429176 \n", - "5 8 25.0 100.0 0.0 0.0 1.223532 \n", - "6 9 25.0 100.0 0.0 0.0 1.272602 \n", - "7 10 25.0 100.0 0.0 0.0 1.090893 \n", - "8 11 25.0 100.0 0.0 0.0 1.099792 \n", - "9 12 25.0 100.0 0.0 0.0 1.117183 \n", - "10 13 25.0 100.0 0.0 0.0 1.094947 \n", - "11 14 25.0 100.0 0.0 0.0 1.220599 \n", - "12 15 25.0 100.0 0.0 0.0 1.168549 \n", - "13 16 25.0 100.0 0.0 0.0 1.040813 \n", - "14 17 25.0 100.0 0.0 0.0 1.020888 \n", - "15 18 25.0 100.0 0.0 0.0 1.111290 \n", - "16 19 25.0 100.0 0.0 0.0 1.015413 \n", - "17 20 25.0 100.0 0.0 0.0 1.149187 \n", - "\n", - " p95_latency_s \n", - "0 7.174594 \n", - "1 7.091972 \n", - "2 7.161183 \n", - "3 7.068649 \n", - "4 7.127629 \n", - "5 7.166088 \n", - "6 7.019425 \n", - "7 6.192206 \n", - "8 2.061258 \n", - "9 1.945991 \n", - "10 1.608045 \n", - "11 1.601522 \n", - "12 1.988644 \n", - "13 1.293670 \n", - "14 1.174938 \n", - "15 1.955387 \n", - "16 1.711985 \n", - "17 1.616943 " - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df_summary = tiling_benchmark_summary(df_viewport)\n", - "df_summary" - ] - }, - { - "cell_type": "markdown", - "id": "b40acc0c", - "metadata": {}, - "source": [ - "We'll now plot the results." - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "a69a9d32", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA30AAAHqCAYAAACwdidrAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAA8/9JREFUeJzs3XecFPX9P/DXzPa+t9c7R5OqIqICNuyoUVIwdlBjLGAjJhobGGtM/KohRhNN4GdPYo09YkE0ikoTRDoc1/vu3vbdmc/vj/OW27u94w7udo/j9Xw8eOh+PrOz752d3Zv3fJokhBAgIiIiIiKiIUlOdwBEREREREQ0cJj0ERERERERDWFM+oiIiIiIiIYwJn1ERERERERDGJM+IiIiIiKiIYxJHxERERER0RDGpI+IiIiIiGgIY9JHREREREQ0hDHpIyIiIiIiGsKY9B0Arr76atxyyy3d1t94442YO3du6gIiIiIiIqIDBpO+NDnxxBPx6KOP9mrbJ598Er///e/79fU/++wzzJw5ExkZGXA6nTjssMPw0EMPIRKJYMuWLfjxj3+MvLw8OJ1OTJ8+HZ9//nn8uc8//zysVmvCP0mS8H//938AgC+//BKnn346srKy4HK5cPrpp2Pjxo3x569evRqTJ0+Gy+WC0+nEtGnT8Omnn8brr7766oR9m81mSJKE1atXAwA++eQTSJKUsM38+fOTvs/bbrsNkiTh9ddfj5fFYjHceOONKCgogMPhwLHHHotVq1YlPG/jxo04/fTTYbPZ4HK5cMUVV3TZtxACxx57LCRJgtvt7tUxP/PMM+FyuWC32zF69Ghcd9112LVrV3wbSZJgNpsT3tuPf/zjeP2zzz6LiRMnwm63IzMzE8ceeyy+/vrrvb72sGHDYDKZYLPZ4HQ6ccQRR+Duu++Gz+eLb/PJJ5/A6XTGH9fU1ODCCy9EXl4ebDYbhg8fjptuuilhvxs2bMDPfvYzZGdnw263Y+zYsbjjjjvg8Xj2GhMRERERpQaTvoPQW2+9hZkzZ+L000/H1q1b4Xa78c9//hMbN25ETU0N3G43Zs6cifXr16OpqQlz587FmWeeicbGRgDARRddBJ/PF/+3fPlyyLKM2bNnAwBaWlpw2WWXYdu2baitrcVRRx2FM844A4qiAABKS0vx6quvoqmpCS0tLbj55ptx1llnIRgMAmhLcjvu/5577sHo0aNxxBFHxN+Dw+FI2ObPf/5zl/e5bt06vPnmm8jPz08o//Of/4w333wTX3zxBZqbm3HGGWfgnHPOgRACAFBdXY2TTjoJ5513Hurr61FTU4N58+Z12f9f/vIXGAyGXh3zN998EzNnzsRpp52GTZs2wev1Yvny5Rg+fDg+/vjjhG3/97//Jby31157DQCwYsUKXH/99XjiiSfg8Xiwe/du3Hbbbb2O4cUXX0Rrayuamprwt7/9DZ9++imOPfbY+HHv7JJLLoHRaMSmTZvg8XjwwQcf4PDDD4/Xr169GlOnTsWYMWOwbt06eL1evPfeewiFQvj22297FRMRERERpYAYAjwej5g3b54oKSkRNptNHHnkkWL37t1CCCFqa2vF7NmzRVZWliguLha33XabiEajQgghPv74Y+FwOMRTTz0lioqKhMvlEr/+9a8T9v3f//5XHHXUUcLhcIi8vDxx//33x+s++OADMWXKFOFwOMS4cePEG2+8Ea+bM2eOuOyyy8S5554rLBaLmDhxolixYoUQQogFCxYIWZaFXq8XFotFnHHGGT2+vzlz5ogbbrgh/nj58uViwoQJwmKxiB//+Mfi8ssvF3PmzOnVsVJVVZSVlYl77rmnV9u3y8jIEB9++GHSumuuuabH9+DxeAQAsX379i51iqKI119/XQAQO3bsSPr8sWPHigcffDD+uP1z60ksFhNHHnmk+OSTT0Rpaal47bXX4nXXXXeduPLKK+OPKysrBQDR0NAghBDi5ptvFhdccEGP+9+9e7cYPny4+OabbwQA0dLS0u22qqqKYcOGJZw73QEg1qxZk7TuD3/4gzjppJP2uo9kOh8DIYRoaWkRubm54vHHHxdCdD2uFotFfPrpp93u88QTTxRXXHHFPsVDRERERKkzJFr65s6di23btuGLL76A2+3G3/72N5hMJgDAhRdeCJ1Oh507d2LFihV4/fXX8dBDD8Wf29raio0bN2Lr1q347LPP8Pjjj+OTTz4BAKxZswbnnnsufvOb36ChoQGbNm3CjBkzAADffvstZs+ejQcffBDNzc3461//iksuuQSbN2+O7/uFF17AFVdcAbfbjWuvvRbnnHMO3G43Hn74YRx33HH4/e9/D5/Ph3fffbfX77WlpQXnnHMO5s+fD7fbjcsuuwzPPfdcwjZnn302HnzwwaTP37p1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1rkzzzyz22P+2GOP4b777sOf/vQn1NfXAwAaGhriiWFvvP7663j22WfR0NAAANi5cyeef/55TJs2rdf7AABVVbF69WrMnj0beXl53a7x+Otf/xpr165FJBJBJBLB008/Db/fj8mTJwMAHn74Yfzzn//EwoULUVtbC6At2b/llluwYsWKPsVERERERAMo3f1L+4Pb7RZXXXWVKCgoEDabTRx11FGioqJCCNE2/uunP/2pyMzMFEVFReKWW26Jjz9LNgvkueeeKxYuXBh//M4774jJkycLm80m8vPzE2aR/PDDD8W0adNERkaGyMzMFCeffHJ85sXOs3dOmDBBLF++PP7cL7/8UowZM0Y4HA5x1lln9fj+Os/e+fHHH4vx48cLi8UiZs2a1WX2zjPOOEPcd999Pe5zxYoV4vTTT4+PG5s4caJ46KGHRDgcFkuXLhUAhNlsFhaLJf7vueeeiz8/FouJ/Px88Y9//KPLvhctWiQAJDy340yQS5YsEaNHjxYWi0VkZmaKE088UXz00UcJ+/juu++EJElJZ/x8+OGHRVFRkTCbzSIvL09ccMEFScd0tus8ns3tdovLL79c5OXlCZvNJiZOnCheeumlhOcsXbpUDBs2TFitVjF16lTx1VdfJd13b8b0tVu+fHn8mNtsNnHIIYeIa6+9NmHWUgDCZDIlHLcpU6bEn3/qqaeKrKwsYbFYRElJiZg/f75obW3d62uXlpYKo9EorFarsNvt4vDDDxcLFy5MeG7n78N1110nDjnkEGG1WkVGRoaYNm2aeO+99xL2++2334qf/OQnwuVyxd/T7bffLjwez15jIiIiIqLUkIT4YXEy6ldz586F0+ns9QLsREREREREA+GA795JRERERERE3WPSNwjs3r07PuNj53/PP/98usOjA8D999/f7TlERERERAc3du8kIiIiIiIawtjSR0RERERENIQx6Uti1qxZ3S5G3lczZ87EX/7yl37ZVzKffPIJnE7ngO3/QLcvSxocjNauXdvt0hz7S5IkrF27dkD2/eijj/ZqncF90d7t2uPx9Po5999/Py644IJe73Pu3Lm48cYb9zdUIiIioh4x6Rtg7777Lq699tpebbt06VIcfvjh/fr6yfa5aNEizJo1q19fp7OqqipkZWVBUZR42ejRo7FmzZoen9ffCcJFF10UX3SdDg7Jzr19UVJSAp/PB4fDkVB+6qmn4rXXXkv63brtttvw4osvxh93Pp+72ycRERHRQGLSRwPizTffxMyZM+MLq2/atAmhUAiTJk1Kc2Q01HU+9/qT1+vFV199hdNOO63f991X0Wh0SL8eERER9Z8hkfT5fD7Mnz8fJSUlyMnJwaWXXhrvPrVr1y5IkoRnn30WI0eOhNPpxNy5cxMuYF555RWMHDkSDocDV155JWKxWLyuvfvk4sWLkZ+fj7y8PCxcuBAd57957rnnMHbsWDidThx77LFYvXp1vO7EE0+Mr9XXvq+nn34axcXFyMzMxG9+8xsAwJo1a3D11Vdj/fr18VkXd+/e3etj0Nt9PvPMM7j//vvx1ltvJczuOHfuXFx++eWYNWsWrFYrDj30UHz22Wfx/T///PMYNWoUbDYbCgsLcc899/QYz5tvvolzzjkn4fGPfvQjAMDq1atxzDHHwG63IysrK15+1FFHAQCmTZsGq9WK+++/HwBw8cUXo6CgAHa7HZMnT8bHH3+c8FqLFy+Ov/c77rgDhx9+OJYuXQqga0vnsGHD8NBDD+GYY46BzWbDCSecgIqKinj9d999F6+bMWMGfvOb3/TYfXDbtm04/fTT4XK5MGLEiIR1Gdtf+7bbbkNmZiZKSkq6dPV96aWXcOihh8LpdGLKlCkJrZInnngifvvb3+L000+HzWbDEUccgfXr1wMAHnnkEZx00kkJ+/rnP/+JMWPG9Grfbrcb5513HpxOJ8aMGYNPP/00YV/PPfccJkyYAJvNhpKSEtx5553oac6n2tpaXHzxxcjPz4fT6cTxxx+PYDDYZTshBB5++GGMGDECLpcLZ5xxBnbs2BGv79wy1rn7ZufPp7q6ustrdDz39vY+JEnCY489hkMOOQROpxM///nPu/x2uN3u+Pbvv/8+jj32WGzZsiXp97VjK3qy8znZPjvavn07fvSjHyE7OxulpaW49957oaoqgD3n08KFC5GXl4fzzz8/6T5efPFFHHbYYbDb7SgtLY1/FxYtWoSzzz4bV111FRwOB8rKyvDJJ5/g9ddfx8iRI5GRkYHbb789vp/evh4REREdANK3Lnz/mT17trjgggtES0uL8Pl84vzzzxcXX3yxEEKInTt3CgDiggsuEF6vV1RVVYmioiKxZMkSIYQQmzdvFnq9XvznP/8R0WhUPPHEE0Kj0YiFCxcKIYT4+OOPhSzLYu7cucLv94vvv/9eFBUViaVLlwohhFi+fLmwWq1i+fLlIhKJiEceeURkZ2cLt9sthBDihBNOEI888kjCvm666SYRDAbFxo0bhdlsFh9//LEQQoglS5aIww47LOG9lZeXC4fDIcrLy5O+933Z58KFC8W5556bUDZnzhxhMBgSjkNGRkb8mGq1WrF8+XIhhBAtLS3iq6++ij934sSJ4vnnn48/9vl8wm63C6/XGy879thjxXvvvSeEEGLq1Kni3nvvFYqiiFAoFN+vEEIAEGvWrEmI7R//+Idwu90iEomIhx56SLhcrvi+ly1bJpxOp1i5cqUIh8PizjvvFFqtNv75dn7/paWlYuLEiWLHjh0iGAyKmTNnijlz5gghhIhEImL48OFi0aJFIhwOiy+//FJkZmaKE044Iemxj0aj4pBDDhG//vWvRTAYFOvWrRP5+fnxY7FkyRKh0WjEbbfdJsLhsPjf//4nbDZb/P2+/fbborCwUKxatUooiiJeeeUV4XK5RGNjoxCi7dwpLCwUa9euFdFoVFx55ZXxWGpra4VOpxO7d++Ox3PWWWeJe++9t1f7vuSSS8Spp54qWlpaRFVVlZg8ebLo+HPwzjvviM2bNwtVVcWaNWtETk6OeO6555IeB0VRxJFHHinmzJkjmpubRTQaFStWrBChUKjLZ/r//t//EwUFBeLbb78VwWBQLFiwQIwbN05Eo9Gkn/8jjzwSf8/RaFQMHz484XhmZGQkfD6dz729vQ8AYvLkyaKqqkq0tLSIU089VcydO1cIsee3o6WlJb79xRdfLJ588sn457u371bn99N5n3PmzBE33HCDEEIIv98vSktLxSOPPCLC4bAoLy8X48ePF08//XT89TQajfjd734nwuGw8Pv9XT6L//znP8LlcokPP/xQKIoi6urqxOrVq+Ox6XQ68corr4hYLCbuvPNOUVhYKObOnSt8Pp/47rvvhMFgEKtWrer16xEREdGB4YBP+urr64Usy6K5uTletmXLFqHT6UQsFotfZH3//ffx+l/84hdi/vz5Qgghfve734mZM2cm7HPMmDEJSR8AUVdXF69/8MEHxcknnxzf19VXX53w/NGjR8cv/DsnfZIkJVw8nXLKKeKPf/yjECL5ReTe7Ms+u0v6kh2HZ599Vvh8PmEymcSTTz4pPB7PXmN67bXXxKmnnhp/3NjYKJxOZzwJOP7448WVV14pKioqujw3WdLXmdPpFJ999pkQQojLL79czJs3L14XiUSEw+HoMel74okn4o+fe+45MWHCBCGEEJ9++qlwOBzxBEQIIa699tpuk77PPvtM2O12EQ6H42X33Xdf/L0vWbJE2O12EYlE4vVXX321uOKKK4QQQpx55pni0UcfTdjntGnTxDPPPCOEaDt3brnlloTXs1qt8cczZ84UDzzwgBBCiLq6OqHX6+M3B3radywWE3q9XqxcuTJe99JLL4me7gHdcMMN4he/+EXSui+//FJYLBYRCASS1nf8TE855RTx4IMPxutCoZCw2Wzi888/77KtEIlJ36effpr0eHb8fDqfe3t7HwDEP//5z4T3otfrhaIoXRK0WCwmsrKyRGVlpRCi/5O+f/3rX+Lwww9P2N/f/vY3cdJJJ8Vfz+VyCUVRun1/Z5xxhrj77ruT1i1cuFAcc8wx8cffffedACA2bdoUL5syZYp46qmnev16REREdGA44Lt37tq1C6qqoqysDE6nM96VTZZl1NbWxrfLy8uL/7/FYkFraysAoLq6GqWlpQn77PzYaDQiJycnob6qqgoAUFlZiWHDhiVsX1ZWhsrKyqTx2u12mM3mpLHsq/7aZ7LjUFVVBYvFgjfffBNvvPEGiouLceyxx3bpYtlR566d77zzDk4++WQYDAYAwD/+8Q+EQiFMnjwZY8aMwZ///Odu96WqKm6//XaMGjUKdrsdTqcTHo8HjY2NANo+v+Li4vj2Op0O+fn5Pb7Pns6F/Px8aLXaeH1JSUm3+6msrERBQQH0en28bPjw4QmffUFBAXQ6Xfxxx3Nn165duO222+LnrdPpxNq1a+P1yWL1+Xzxx5deeimeffZZAG1d+qZNmxaPt6d9NzY2IhKJJHzenT/7999/H9OmTUNWVhYcDgeefPLJ+DHvrLy8HIWFhTCZTN0eq47HrOP3xWAwoKCgoNvvS0fV1dVJj2dHnc+93ryPzschEomgoaGhy+v/73//Q2lpKQoLC/ca677YtWsXNmzYkPCZ/epXv0r4HSssLIQst/1s33///fGupTNnzgTQ9lmMGjWq29fIzc2N/3/7b0bnso7nWMfXIyIiogPXAf/XvLi4GLIso7q6Gm63O/4vFAr16uKsoKAA5eXlCWWdx9KFQiHU19cn1Lfvu6ioCLt27UrYfteuXSgqKurzexmIi6tk++zudZIdh/b3efLJJ+Odd95BY2MjZs+ejVmzZsXHGnWkqirefvvthAvv//znPwmPR4wYgWeeeQa1tbV4+umncfPNN2PVqlUA0GXZgBdeeAEvvPAC3n77bXg8Hrjdbjgcjvi4rIKCgoQxebFYDDU1NT0ek+4UFBSgtrY2YUxnT+Mqi4qKUF1dnTA+tPNn37m+4zEtLi7Gww8/nHDe+v1+3Hrrrb2K99xzz0VlZSVWrVqFZ599Fpdcckm8rqd9Z2VlQafTJXzeHd9nJBLBT37yE1x11VWoqqqCx+PB1Vdf3e2YvvZENhQK7TXmzt+XSCSC6urq+DGzWCwIBALx+o6fZUFBQdLj2a7zudfb99H5OOj1emRnZ3eJvfN53Jvva1+WwSguLsbkyZMTPjOv14vvvvsu6Wvedttt8Pl88Pl8ePfddwG0fRbbtm3r9WvuDRM+IiKioeGA/4uel5eHWbNmYf78+fE7+LW1tXjttdd69fzzzjsPH374Id5++23EYjE89dRT2LJlS8I2sizjt7/9LYLBIDZv3ozHH38cF110EYC2SUaef/55fP7554jFYli8eDGamppw5pln9vm95ObmoqamJukEGPsq2T5zc3NRXl6ekNwAwEcffZRwHGpqanDWWWehrq4Or732GlpbW6HVamG32xNawzr66quvkJubG29xikQiWLZsWcLxeOaZZ1BXVwdJkuB0OiHLcnymxdzcXGzfvj2+rdfrhV6vR1ZWFiKRCH73u98ltGJecMEFeOGFF/DNN98gGo3i3nvvhd/v36djdcwxx8DpdOKBBx5ANBrF119/jX/961/dbn/UUUchNzcXd911F8LhMDZs2IDFixdjzpw58W38fj/uueceRCIRrFy5Es8//3z83Jk3bx7+8Ic/YNWqVRBCIBAIYNmyZb1q9QIAk8mEn/3sZ7j99tuxceNGzJ49O17X0741Gg3OO+883HXXXXC73aiursYf/vCH+HPD4TBCoRAyMzNhMBiwcuVKvPDCC93GMWXKFBxyyCG49tpr4Xa7EYvF8NlnnyEcDnfZ9uKLL8af//xnbNy4EeFwGHfccQcKCwvjk54cccQRePbZZxGLxbB27dp4SybQ9vm4XK6E4/nPf/4zXt/53Ovt+/jDH/4Qv2l011134fzzz0+a7HScjAjo3fe18/nck7PPPht1dXX4y1/+glAoBEVRsHnzZnzyySe9ej4AXHXVVXjsscewfPlyqKqK+vr6vS6TQkREREPfAZ/0AW2zzLV367Tb7TjuuOPiLUd7c8ghh+DZZ5/F9ddfj8zMTKxcuRJnnHFGwjY2mw2HH344hg8fjuOPPx6XXnpp/ML+hBNOwOLFi3HFFVcgMzMTL730Et599919WjD9pJNOwjHHHIPCwkI4nU7s3r07vphzX2by3Ns+Z8+eDbvdjuzs7IQ4L7zwQjz11FNwOp3405/+hDfeeAMZGRlQVRWPPfYYiouL4XA48Pjjj+Pll1+OXxiPHz8ezz//PICu3euWL1+OCRMmICsrK162bNkyHHbYYbBarTj33HPxhz/8IT7D5j333IPrr78eGRkZePDBBzFnzhyMHz8epaWlGD58OEwmU0JL2imnnIKFCxdi1qxZyMvLQywWw+jRo+NdSftCp9PhjTfewFtvvYWMjAz85je/wcUXX5ywr5kzZ8ZnFdXpdHjrrbewatUq5OXl4ZxzzsGCBQtw4YUXxrefMGECYrEY8vPz8bOf/Qz33XcfZsyYAQD40Y9+hAcffBBXXnklMjIyUFZWhsceeyxpC2p3Lr30Urz//vuYNWsWbDZbvHxv+168eDGsVitKS0tx0kknJbQS2mw2PP744/jlL38Ju92O++67Dz//+c8TXrfjcZBlGW+++SYCgQAOOeQQZGVl4Y477kj6Pi699FJcd911OPvss5GXl4d169bhzTffjN9EWLx4Mb744gs4nU7ccsstCQm0TqfDf/7zH7z//vtwuVy49dZbcfnll8frO597vXkfQFsiOmPGDJSWlsJms+Gxxx7rss3WrVsRCAQSlhxJ9t3qrPP53BOr1Yply5bhww8/xLBhw5CZmYkLL7wwoXvn3syaNQv/93//h3nz5sHhcGDKlCnxGV+JiIjo4CWJ7vpsEYC2ZRZmzZrV7RTrQ8XcuXPhdDoTlhzYFxMnTsQ//vEPTJkyBQBw3XXXoaSkBL/+9a/7Icq9i0QiyMzMxHvvvYfp06fv9/6uuuoqqKqKp556qs/PXbp0KR599NF+XWyeutf53OsNSZKwZs2aLousd/bwww9jx44dePzxx/czSiIiIqLUGxItfTQ4RCIR/PznP8eRRx4ZL5s4ceKAr+/16quvIhgMwu/345ZbbkFmZmafLvw7WrFiBSoqKqCqKj788EM8//zzCd0maXBKdu71p+LiYlx99dUDsm8iIiKigZZ8YBbRPtDr9bjjjjsSyn75y18O+Os+++yzuPzyyyGEwOGHH47//Oc/CTNq9sWOHTtw/vnno6WlBUVFRXjwwQdx2mmn9XPE1N+SnXv96bzzzhuwfRMRERENNHbvJCIiIiIiGsLYvZOIiIiIiGgIY9JHREREREQ0hDHpIyIiIiIiGsKY9BEREREREQ1hTPqIiIiIiIiGMCZ9REREREREQxiTPiIiIiIioiGMSR8REREREdEQxqSPiIiIiIhoCGPSR0RERERENIQx6SMiIiIiIhrCmPQRERERERENYdp0B7A/VFVFdXU1bDYbJElKdzhERERERIOCEAKtra0oKCiALLOd52B3QCd91dXVKC4uTncYRERERESDUkVFBYqKitIdBqXZAZ302Ww2AG0ns91uT3M0RERERESDg9frRXFxcfx6mQ5uB3TS196l0263M+kjIiIiIuqEQ6AI4EQuREREREREQxqTPiIiIiIioiGMSR8REREREdEQxqSPiIiIiIhoCGPSR0RERERENIQx6SMiIiIiIhrCmPQRERERERENYUz6iIiIiIiIhjAmfUREREREREMYkz4iIiIiIqIhjEkfEVE/ctcHsGt9I7Z+U4ed6xrQVOWDqop0h0VERDSoKKrAF9ub8MbaKnyxvQnKAP+tfOCBBzBlyhTYbDbk5ORg1qxZ2Lx5c8I2oVAI8+bNQ2ZmJqxWK37605+irq4uYZvdu3fjrLPOgtlsRk5ODn79618jFovt9fXfeustnHDCCbDZbDCbzZgyZQqWLl2asM2uXbsgSRLWrl0bL2ttbcWMGTMwbtw4VFZW7vP7Z9JHRNRP6nZ5UV/uRSQUgxAC0YiCpmofqre0QDDxIyIiAgC8t6EGx/7+I1zw1Je44aW1uOCpL3Hs7z/CextqBuw1ly9fjnnz5uHLL7/EBx98gGg0itNOOw1+vz++zU033YQ333wT//73v7F8+XJUV1fjJz/5SbxeURScddZZiEQi+N///of/9//+H5YuXYq77rqrx9devHgxzj33XEyfPh0rV67Et99+i/PPPx9XX301br755m6f19DQgBkzZsDv92PFihUoKira5/cvCSEO2CsRr9cLh8MBj8cDu92e7nCI6CAWDkRR/l1Tt/V5wx2wZ5pSGBER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tBaYzcNSG1AnY/PtmFjogFnfNsmvJEkocJpw3KgsmPSatMZGRERERL3HJRuI0shmGwuNxoRAYAdiMR8kSQOjqQhWyyGQZUO6w8PwbCvKsiwIx1RoZQlaDe8TERERER1omPQRpZnZPAxm8zCoagySpIE0yCZJkSQJRh1b9oiIiIgOVEz6iAYJWebXkYiIiIj6H/tqERERERERDWFM+oiIiIiIiIYwJn1ERERERERDGJM+IiIiIiKiIYxJHxERERER0RDGpI+IiIiIiGgIY9JHREREREQ0hDHpIyIiIiIiGsKY9BEREREREQ1hTPqIiIiIiIiGMCZ9REREREREQxiTPiIiIiIioiGMSR8REREREdEQxqSPiIiIiIhoCGPSR0RERERENIQx6SMiIiIiIhrCmPQRERERERENYUz6iIiIiIiIhjAmfUREREREREMYkz4iIiIiIqIhjEkfERERERHREMakj4iIiIiIaAhj0kdERERERDSEMekjIiIiIiIawpj0ERERERERDWFM+oiIiIiIiIawtCd9VVVVuPjii5GZmQmTyYSJEyfim2++SXdYREREREREQ4I2nS/e0tKC6dOnY8aMGXj33XeRnZ2NrVu3IiMjI51hERERERERDRlpTfp+//vfo7i4GEuWLImXlZWVpTEiIiIiIiKioSWtSd9//vMfnH766Zg9ezaWL1+OwsJCXHvttbjyyiuTbh8OhxEOh+OPvV4vAEAIASFESmImIiIiIhrseG1MHaU16duxYweeeOIJLFiwALfddhu+/vprXH/99dDr9ZgzZ06X7R944AHcfffdXco9Hg9PbCIiIiKiH7Q3jhABgCTSmC3p9XoceeSR+N///hcvu/766/H111/jiy++6LJ9spa+4uJiuN1u2O32lMRMRERERDTYeb1eOJ1OeDweXidTelv68vPzMW7cuISysWPH4pVXXkm6vcFggMFg6FIuSRIkSRqQGImIiIiIDjS8NqaO0rpkw/Tp07F58+aEsi1btqC0tDRNEREREREREQ0taU36brrpJnz55Ze4//77sW3bNrzwwgv429/+hnnz5qUzLCIiIiIioiEjrUnflClT8Nprr+HFF1/EhAkTcM899+DRRx/FRRddlM6wiIiIiIiIhoy0TuSyv7xeLxwOBweoEhERERF1wOtk6iitLX1EREREREQ0sJj0ERERERERDWFM+oiIiIiIiIYwJn1ERERERERDGJM+IiIiIiKiIYxJHxERERER0RDGpI+IiIiIiGgIY9JHREREREQ0hDHpIyIiIiIiGsKY9BEREREREQ1hTPqIiIiIiIiGMCZ9REREREREQxiTPiIiIiIioiGMSR8REREREdEQxqSPiIiIiIhoCGPSR0RERERENIQx6SMiIiIiIhrCmPQRERERERENYUz6iIiIiIiIhjAmfUREREREREMYkz4iIiIiIqIhjEkfERERERHREKbt6xN27tyJFStWoLy8HIFAANnZ2Zg0aRKmTp0Ko9E4EDESERERERHRPup10vf888/jsccewzfffIPc3FwUFBTAZDKhubkZ27dvh9FoxEUXXYRbbrkFpaWlAxkzERERERER9VKvkr5JkyZBr9dj7ty5eOWVV1BcXJxQHw6H8cUXX+Cll17CkUceib/85S+YPXv2gARMREREREREvScJIcTeNnr//fdx+umn92qHTU1N2LVrFyZPnrzfwe2N1+uFw+GAx+OB3W4f8NcjIiIiIjoQ8DqZOupVS19vEz4AyMzMRGZm5j4HRERERERERP2nz7N3rl69GuvXr48/fuONNzBr1izcdtttiEQi/RocERERERER7Z8+J31XXXUVtmzZAgDYsWMHzj//fJjNZvz73//Gb37zm34PkIiIiIiIiPZdn5O+LVu24PDDDwcA/Pvf/8bxxx+PF154AUuXLsUrr7zS3/ERERERERHRfuhz0ieEgKqqAIBly5bhzDPPBAAUFxejsbGxf6MjIiIiIiKi/dLnpO/II4/Evffei2effRbLly/HWWedBaBt0fbc3Nx+D5CIiIiIiIj2XZ+TvkcffRSrV6/G/Pnzcfvtt2PkyJEAgJdffhnTpk3r9wCJiIiIiIho3/Vqnb7eCIVC0Gg00Ol0/bG7XuH6I0REREREXfE6mTrq1Tp9QghIktTjNkajsV8CIiIiIiIiov7Tq+6d48ePx0svvbTXdfi2bt2Ka665Bg8++GC/BEdERERERET7p1ctfYsXL8Ytt9yCa6+9FqeeeiqOPPJIFBQUwGg0oqWlBRs3bsRnn32G7777DvPnz8c111wz0HETERERERFRL/RpTN9nn32Gf/7zn1ixYgXKy8sRDAaRlZWFSZMm4fTTT8dFF12EjIyMgYw3AfsqExERERF1xetk6qjfJnJJB57MRERERERd8TqZOurzkg1ERERERER04GDSR0RERERENIQx6SMiIiIiIhrCmPQRERERERENYWlN+hYtWgRJkhL+jRkzJp0hERERERERDSm9Wqevs+3bt2PJkiXYvn07HnvsMeTk5ODdd99FSUkJxo8f36d9jR8/HsuWLdsTkHafQiIiIiIiIqIk+tzSt3z5ckycOBErV67Eq6++Cp/PBwBYt24dFi5c2OcAtFot8vLy4v+ysrL6vA8iIiIiIiJKrs/NarfeeivuvfdeLFiwADabLV5+0kkn4c9//nOfA9i6dSsKCgpgNBoxdepUPPDAAygpKUm6bTgcRjgcjj/2er0AACEEDuDlBomIiIiI+hWvjamjPid969evxwsvvNClPCcnB42NjX3a19FHH42lS5fikEMOQU1NDe6++24cd9xx2LBhQ0JC2e6BBx7A3Xff3aXc4/HwxCYiIiIi+kF74wgRsA9Jn9PpRE1NDcrKyhLK16xZg8LCwj7ta+bMmfH/P/TQQ3H00UejtLQU//rXv3DFFVd02f63v/0tFixYEH/s9XpRXFwMh8MBu93ex3dCRERERDQ0SZKU7hBoEOlz0nf++efjlltuwb///W9IkgRVVfH555/j5ptvxqWXXrpfwTidTowePRrbtm1LWm8wGGAwGLqUt8/8SURERERETPooUZ8ncrn//vsxZswYFBcXw+fzYdy4cTj++OMxbdo03HHHHfsVjM/nw/bt25Gfn79f+yEiIiIiIqI2ktjHwXC7d+/Ghg0b4PP5MGnSJIwaNarP+7j55pvxox/9CKWlpaiursbChQuxdu1abNy4EdnZ2Xt9vtfrhcPhgMfjYfdOIiIiIqIf8DqZOtrnRfFKSkq6nWWztyorK3HBBRegqakJ2dnZOPbYY/Hll1/2KuEjIiIiIiKivetz0ieEwMsvv4yPP/4Y9fX1UFU1of7VV1/t9b5eeumlvr48ERERERER9UGfk74bb7wRf/3rXzFjxgzk5uZykCgREREREdEg1uek79lnn8Wrr76KM888cyDiISIiIiIion7U59k7HQ4Hhg8fPhCxEBERERERUT/rc9K3aNEi3H333QgGgwMRDxEREREREfWjPnfvPO+88/Diiy8iJycHw4YNg06nS6hfvXp1vwVHRERERERE+6fPSd+cOXOwatUqXHzxxZzIhYiIiIiIaJDrc9L39ttv4/3338exxx47EPEQERERERFRP+rzmL7i4mLY7faBiIWIiIiIiIj6WZ+Tvocffhi/+c1vsGvXrgEIh4iIiIiIiPpTn7t3XnzxxQgEAhgxYgTMZnOXiVyam5v7LTgiIiIiIiLaP31O+h599NEBCIOIiIiIiIgGwj7N3klEREREREQHhl4lfV6vNz55i9fr7XFbTvJCREREREQ0ePQq6cvIyEBNTQ1ycnLgdDqTrs0nhIAkSVAUpd+DJCIiIiIion3Tq6Tvo48+gsvlAgB8/PHHAxoQERERERER9Z9eJX0nnHBC/P/LyspQXFzcpbVPCIGKior+jY6IiIiIiIj2S5/X6SsrK0NDQ0OX8ubmZpSVlfVLUERERERERNQ/+pz0tY/d68zn88FoNPZLUERERERERNQ/er1kw4IFCwAAkiThzjvvhNlsjtcpioKVK1fi8MMP7/cAiYiIiIiIaN/1Oulbs2YNgLaWvvXr10Ov18fr9Ho9DjvsMNx88839HyERERERERHts14nfe2zdl522WV47LHHuB4fERERERHRAaDXSV+7JUuWDEQcRERERERENAD6PJELERERERERHTiY9BEREREREQ1hTPqIiIiIiIiGMCZ9REREREREQ9g+JX3PPvsspk+fjoKCApSXlwMAHn30Ubzxxhv9GhwRERERERHtnz4nfU888QQWLFiAM888E263G4qiAACcTiceffTR/o6PiIiIiIiI9kOfk77Fixfjqaeewu233w6NRhMvP/LII7F+/fp+DY6IiIiIiIj2T5+Tvp07d2LSpEldyg0GA/x+f78ERURERERERP2jz0lfWVkZ1q5d26X8vffew9ixY/sjJiIiIiIiIuon2r4+YcGCBZg3bx5CoRCEEPjqq6/w4osv4oEHHsDTTz89EDESERERERHRPupz0veLX/wCJpMJd9xxBwKBAC688EIUFBTgsccew/nnnz8QMRIREREREdE+koQQYl+fHAgE4PP5kJOT058x9ZrX64XD4YDH44Hdbk9LDEREREREgw2vk6mjPo/pCwaDCAQCAACz2YxgMIhHH30U//3vf/s9OCIiIiIiIto/fU76zj33XDzzzDMAALfbjaOOOgoPP/wwzj33XDzxxBP9HiARERERERHtuz4nfatXr8Zxxx0HAHj55ZeRl5eH8vJyPPPMM/jTn/7U7wESERERERHRvutz0hcIBGCz2QAA//3vf/GTn/wEsizjmGOOQXl5eb8HSERERERERPuuz0nfyJEj8frrr6OiogLvv/8+TjvtNABAfX09B4kSERERERENMn1O+u666y7cfPPNGDZsGI4++mhMnToVQFur36RJk/o9QCIiIiIiItp3+7RkQ21tLWpqanDYYYdBltvyxq+++gp2ux1jxozp9yC7w6loiYiIiIi64nUyddTnxdkBIC8vD3l5eQllRx11VL8ERERERERERP2nz0mf3+/Hgw8+iA8//BD19fVQVTWhfseOHf0WHBEREREREe2fPid9v/jFL7B8+XJccsklyM/PhyRJ/RLIgw8+iN/+9re44YYb8Oijj/bLPomIiIiIiA52fU763n33Xbz99tuYPn16vwXx9ddf469//SsOPfTQftsnERERERER7cPsnRkZGXC5XP0WgM/nw0UXXYSnnnoKGRkZ/bZfIiIiIiIi2oek75577sFdd92FQCDQLwHMmzcPZ511Fk455ZR+2R8RERERERHt0efunQ8//DC2b9+O3NxcDBs2DDqdLqF+9erVvd7XSy+9hNWrV+Prr7/u1fbhcBjhcDj+2Ov1AgCEENiHlSeIiIiIiIYkXhtTR31O+mbNmtUvL1xRUYEbbrgBH3zwAYxGY6+e88ADD+Duu+/uUu7xeHhiExERERH9oL1xhAjYx8XZ+8Prr7+OH//4x9BoNPEyRVEgSRJkWUY4HE6oA5K39BUXF8PtdnPRSSIiIiKiH3i9XjidTi7OTgD2cXF2AFi1ahW+//57AMD48eMxadKkPj3/5JNPxvr16xPKLrvsMowZMwa33HJLl4QPAAwGAwwGQ5dySZL6bekIIiIiIqIDHa+NqaM+J3319fU4//zz8cknn8DpdAIA3G43ZsyYgZdeegnZ2dm92o/NZsOECRMSyiwWCzIzM7uUExERERER0b7p8+yd1113HVpbW/Hdd9+hubkZzc3N2LBhA7xeL66//vqBiJGIiIiIiIj2UZ/H9DkcDixbtgxTpkxJKP/qq69w2mmnwe1292d8PfJ6vXA4HOyrTERERETUAa+TqaM+t/SpqtplmQYA0Ol0UFW1X4IiIiIiIiKi/tHnpO+kk07CDTfcgOrq6nhZVVUVbrrpJpx88sn9GhwRERERERHtnz4nfX/+85/h9XoxbNgwjBgxAiNGjEBZWRm8Xi8WL148EDESERERERHRPurz7J3FxcVYvXo1li1bhk2bNgEAxo4di1NOOaXfgyMiIiIiIqL9k7bF2fsDB6gSEREREXXF62TqqM/dOwHgww8/xNlnnx3v3nn22Wdj2bJl/R0bERERERER7ac+J31/+ctfcMYZZ8Bms+GGG27ADTfcALvdjjPPPBOPP/74QMRIRERERERE+6jP3TuLiopw6623Yv78+Qnljz/+OO6//35UVVX1a4A9YbM1EREREVFXvE6mjvrc0ud2u3HGGWd0KT/ttNPg8Xj6JSgiIiIiIiLqH31O+s455xy89tprXcrfeOMNnH322f0SFBEREREREfWPPi/ZMG7cONx333345JNPMHXqVADAl19+ic8//xy/+tWv8Kc//Sm+7fXXX99/kRLtJyEEVG8EakSBbNBCtukgSVK6wyIiIiIiGlB9HtNXVlbWux1LEnbs2LFPQfUW+ypTbyn+KCK7vBBRJV4m6TUwDLNDNuvSGBkRERFR/+N1MnXU55a+nTt3DkQcRANGxFSEd3gARU0sjygI7/DAONYFSbNPq5cQEREREQ16+32lqygK1q5di5aWlv6Ih6jfxZqCXRK+diKmItYSTnFERERERESp0+ek78Ybb8Tf//53AG0J3/HHH48jjjgCxcXF+OSTT/o7PqL9pgZjPdcHoimKhIiIiIgo9fqc9L388ss47LDDAABvvvkmdu3ahU2bNuGmm27C7bff3u8BEu2vvXXdZNdOIiIiIhrK+ny129jYiLy8PADAO++8g9mzZ2P06NG4/PLLsX79+n4PkGh/aTIMPdZr91JPRERERHQg63PSl5ubi40bN0JRFLz33ns49dRTAQCBQAAajabfAyTaXxqrHtpMU9I6bbaZs3cSERER0ZDW59k7L7vsMpx33nnIz8+HJEk45ZRTAAArV67EmDFj+j1Aov6gL7ZBtugQawpCRFRIBg20WUZoncZ0h0ZERERENKD6nPQtWrQIEyZMQEVFBWbPng2Doa1rnEajwa233trvARL1F63LCK2LSR4RERERHVz6vDh7R6FQCEZj+i6iuegkEREREVFXvE6mjvo8pk9RFNxzzz0oLCyE1WrFjh07AAB33nlnfCkHIiIiIiIiGhz6nPTdd999WLp0KR566CHo9fp4+YQJE/D000/3a3BERERERES0f/qc9D3z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3HjjjYyOjpLJZLjqqqu466671sWW73znO7z85S9naGgIIQT/8R//seS8Uorf+73fY3BwkEwmwzXXXMNjjz12Rtj27//+77zkJS+hu7sbIQQ7d+5cE7uezLYoivit3/otLrroInK5HENDQ/ziL/4i4+PjZ4R9kI57O3bsIJfL0dnZyTXXXMMdd9xxRth2OL/8y7+MEIK/+Iu/OCNse+tb33rUmPfSl770jLAN4OGHH+YVr3gFpVKJXC7HM5/5TPbt27futi03Vwgh+OM//uNVt+1E7KvX67z97W9neHiYTCbD+eefz8c//vEzwrbJyUne+ta3MjQ0RDab5aUvfemajcE333wzz3zmMykUCvT19fGqV72KRx55ZMk1vu9zww030N3dTT6f52d/9meZnJxcE/s0Tw+003cEw8PDfPCDH+See+7h7rvv5kUvehGvfOUrefDBB9fbtCXcdddd/M3f/A0XX3zxepuyhAsuuICJiYn2n//+7/9eb5MAmJ+f57nPfS62bfP1r3+dhx56iD/90z+ls7NzvU3jrrvuWvKe3XrrrQC89rWvXWfL4EMf+hAf+9jH+Ou//msefvhhPvShD/HhD3+Yj3zkI+ttGgC/9Eu/xK233so//MM/cP/99/OSl7yEa665hgMHDqy5LY1Gg0suuYSPfvSjy57/8Ic/zF/91V/x8Y9/nDvuuINcLse1116L7/vrbluj0eB5z3seH/rQh1bdluVe+1i2NZtN7r33Xt7znvdw77338u///u888sgjvOIVrzgj7AM499xz+eu//mvuv/9+/vu//5tNmzbxkpe8hOnp6XW3bZEvfvGL/PCHP2RoaGjVbVrkRGx76UtfumTs+6d/+qczwrYnnniC5z3veezYsYPbbruNH//4x7znPe/B87x1t+3w92tiYoK/+7u/QwjBz/7sz666bSdi37ve9S6+8Y1v8I//+I88/PDD3Hjjjbz97W/ny1/+8rrappTiVa96Fbt27eJLX/oSP/rRjxgdHeWaa66h0Wisum233347N9xwAz/84Q+59dZbiaKIl7zkJUte+53vfCdf+cpX+MIXvsDtt9/O+Pg4r3nNa1bdNs3TCKV5Ujo7O9X//b//d73NaFOr1dQ555yjbr31VnX11Verd7zjHettklJKqfe+973qkksuWW8zluW3fuu31POe97z1NuOEeMc73qG2bt2qpJTrbYp62ctept72trctOfaa17xGvfGNb1wniw7RbDaVaZrqq1/96pLjl112mfrd3/3ddbIqBVBf/OIX2z9LKdXAwID64z/+4/axcrmsXNdV//RP/7Suth3O7t27FaB+9KMfralNixzPtkXuvPNOBai9e/eujVGHcSL2VSoVBahvfetba2PUAseybWxsTG3YsEE98MADanR0VP35n//5mtp1LNve8pa3qFe+8pVrbsuRLGfb61//evWmN71pfQw6jBP5vr3yla9UL3rRi9bGoCNYzr4LLrhA/cEf/MGSY+sxJh9p2yOPPKIA9cADD7SPJUmient71d/+7d+uqW1KKTU1NaUAdfvttyul0vnAtm31hS98oX3Nww8/rAD1gx/8YM3t05yd6EjfcUiShM9//vM0Gg2uvPLK9TanzQ033MDLXvYyrrnmmvU25Sgee+wxhoaG2LJlC2984xvXJB3mRPjyl7/MFVdcwWtf+1r6+vq49NJL+du//dv1NusowjDkH//xH3nb296GEGK9zeGqq67iP//zP3n00UcBuO+++/jv//5vrrvuunW2DOI4JkmSo3bfM5nMGRNhXmT37t0cPHhwyTNbKpV49rOfzQ9+8IN1tOypR6VSQQhBR0fHeptyFGEY8olPfIJSqcQll1yy3uYgpeTNb34zN910ExdccMF6m3MUt912G319fWzfvp1f+ZVfYXZ2dr1NQkrJ1772Nc4991yuvfZa+vr6ePazn33c1Nn1YnJykq997Wtcf/31621Km6uuuoovf/nLHDhwAKUU3/72t3n00Ud5yUtesq52BUEAsGS+MAwD13XXZb6oVCoAdHV1AXDPPfcQRdGSOWLHjh2MjIzoOUKzYminbxnuv/9+8vk8ruvyy7/8y3zxi1/k/PPPX2+zAPj85z/Pvffey80337zephzFs5/9bD796U/zjW98g4997GPs3r2bn/qpn6JWq623aezatYuPfexjnHPOOdxyyy38yq/8Cr/+67/O3//936+3aUv4j//4D8rlMm9961vX2xQAfvu3f5uf//mfZ8eOHdi2zaWXXsqNN97IG9/4xvU2jUKhwJVXXsn73/9+xsfHSZKEf/zHf+QHP/gBExMT623eEg4ePAhAf3//kuP9/f3tc5onx/d9fuu3fos3vOENFIvF9TanzVe/+lXy+Tye5/Hnf/7n3HrrrfT09Ky3WXzoQx/Csix+/dd/fb1NOYqXvvSlfOYzn+E///M/+dCHPsTtt9/OddddR5Ik62rX1NQU9XqdD37wg7z0pS/lm9/8Jq9+9at5zWtew+23376uth3J3//931MoFM6oFMCPfOQjnH/++QwPD+M4Di996Uv56Ec/yvOf//x1tWvRgfqd3/kd5ufnCcOQD33oQ4yNja35fCGl5MYbb+S5z30uF154IZDOEY7jHLWZpecIzUpirbcBZyLbt29n586dVCoV/vVf/5W3vOUt3H777evu+O3fv593vOMd3HrrrWtSW3CyHB79ufjii3n2s5/N6Ogo//Iv/7LuO5FSSq644gr+6I/+CIBLL72UBx54gI9//OO85S1vWVfbDueTn/wk11133ZrW3hyPf/mXf+Gzn/0sn/vc57jgggvYuXMnN954I0NDQ2fE+/YP//APvO1tb2PDhg2Ypslll13GG97wBu655571Nk2zwkRRxOte9zqUUnzsYx9bb3OW8MIXvpCdO3cyMzPD3/7t3/K6172OO+64g76+vnWz6Z577uEv//Ivuffee8+IrIEj+fmf//n23y+66CIuvvhitm7dym233caLX/zidbNLSgnAK1/5St75zncC8IxnPIPvf//7fPzjH+fqq69eN9uO5O/+7u944xvfeEatBz7ykY/wwx/+kC9/+cuMjo7yne98hxtuuIGhoaF1zU6ybZt///d/5/rrr6erqwvTNLnmmmu47rrr1lyY7IYbbuCBBx444zJSNGc/OtK3DI7jsG3bNi6//HJuvvlmLrnkEv7yL/9yvc3innvuYWpqissuuwzLsrAsi9tvv52/+qu/wrKsdd8hPZKOjg7OPfdcHn/88fU2hcHBwaOc9vPOO++MST8F2Lt3L9/61rf4pV/6pfU2pc1NN93UjvZddNFFvPnNb+ad73znGRNp3rp1K7fffjv1ep39+/dz5513EkURW7ZsWW/TljAwMABwlBLb5ORk+5zm2Cw6fHv37uXWW289o6J8ALlcjm3btvGc5zyHT37yk1iWxSc/+cl1tem73/0uU1NTjIyMtOeLvXv38v/9f/8fmzZtWlfblmPLli309PSs+3zR09ODZVln/Hzx3e9+l0ceeeSMmi9arRbvfve7+bM/+zNe/vKXc/HFF/P2t7+d17/+9fzJn/zJepvH5Zdfzs6dOymXy0xMTPCNb3yD2dnZNZ0v3v72t/PVr36Vb3/72wwPD7ePDwwMEIYh5XJ5yfV6jtCsJNrpOwGklO188PXkxS9+Mffffz87d+5s/7niiit44xvfyM6dOzFNc71NXEK9XueJJ55gcHBwvU3huc997lHyyI8++iijo6PrZNHRfOpTn6Kvr4+Xvexl621Km2aziWEsHSZM02zvhp8p5HI5BgcHmZ+f55ZbbuGVr3zlepu0hM2bNzMwMMB//ud/to9Vq1XuuOOOM6pe+Exk0eF77LHH+Na3vkV3d/d6m/SknAlzxpvf/GZ+/OMfL5kvhoaGuOmmm7jlllvW1bblGBsbY3Z2dt3nC8dxeOYzn3nGzxef/OQnufzyy8+I2tFFoigiiqIzfs4olUr09vby2GOPcffdd6/JfKGU4u1vfztf/OIX+a//+i82b9685Pzll1+ObdtL5ohHHnmEffv26TlCs2Lo9M4j+J3f+R2uu+46RkZGqNVqfO5zn+O22247IybJQqHQzv9eJJfL0d3dfdTx9eA3fuM3ePnLX87o6Cjj4+O8973vxTRN3vCGN6y3abzzne/kqquu4o/+6I943etex5133sknPvEJPvGJT6y3aUC6SPzUpz7FW97yFizrzHksX/7yl/OBD3yAkZERLrjgAn70ox/xZ3/2Z7ztbW9bb9MAuOWWW1BKsX37dh5//HFuuukmduzYwf/8n/9zzW2p1+tLohS7d+9m586ddHV1MTIywo033sgf/uEfcs4557B582be8573MDQ0xKte9ap1t21ubo59+/a1+98tLngHBgZWfZf5eLYNDg7ycz/3c9x777189atfJUmSdn1LV1cXjuOsqm1PZl93dzcf+MAHeMUrXsHg4CAzMzN89KMf5cCBA2vScuXJPtcjHWTbthkYGGD79u3raltXVxfve9/7+Nmf/VkGBgZ44okn+M3f/E22bdvGtddeu662jYyMcNNNN/H617+e5z//+bzwhS/kG9/4Bl/5yle47bbb1t02SDeMvvCFL/Cnf/qnq27Pydp39dVXc9NNN5HJZBgdHeX222/nM5/5DH/2Z3+27rZ94QtfoLe3l5GREe6//37e8Y538KpXvWpNRGZuuOEGPve5z/GlL32JQqHQHsdKpRKZTIZSqcT111/Pu971Lrq6uigWi/zar/0aV155Jc95znNW3T7N04R11Q49A3nb296mRkdHleM4qre3V734xS9W3/zmN9fbrGNyJrVseP3rX68GBweV4zhqw4YN6vWvf716/PHH19usNl/5ylfUhRdeqFzXVTt27FCf+MQn1tukNrfccosC1COPPLLepiyhWq2qd7zjHWpkZER5nqe2bNmifvd3f1cFQbDepimllPrnf/5ntWXLFuU4jhoYGFA33HCDKpfL62LLt7/9bQUc9ectb3mLUipt2/Ce97xH9ff3K9d11Ytf/OI1+7yfzLZPfepTy55/73vfu662LbaQWO7Pt7/97VW37cnsa7Va6tWvfrUaGhpSjuOowcFB9YpXvELdeeed627bcqxly4bj2dZsNtVLXvIS1dvbq2zbVqOjo+p//a//pQ4ePLjuti3yyU9+Um3btk15nqcuueQS9R//8R9njG1/8zd/ozKZzLqMdU9m38TEhHrrW9+qhoaGlOd5avv27epP//RP16QF0ZPZ9pd/+ZdqeHhY2batRkZG1P/5P/9nzeayY41jn/rUp9rXtFot9au/+quqs7NTZbNZ9epXv1pNTEysiX2apwdCqTWuYNVoNBqNRqPRaDQazZqha/o0Go1Go9FoNBqN5ixGO30ajUaj0Wg0Go1GcxajnT6NRqPRaDQajUajOYvRTp9Go9FoNBqNRqPRnMVop0+j0Wg0Go1Go9FozmK006fRaDQajUaj0Wg0ZzHa6dNoNBqNRqPRaDSasxjt9Gk0Go1Go9FoNBrNWYx2+jQajUaz6nz605+mo6NjTV/ztttuQwhBuVxe09fVaDQajeZMQzt9Go1G8xRj0Zk51p8XvvCF622iRqPRaDSaMwhrvQ3QaDQazclx1VVXMTExcdTxL3/5y/zyL/8yv/qrv7oOVmk0Go1GozlT0ZE+jUajeYrhOA4DAwNL/szPz/Mbv/EbvPvd7+a1r31t+9rbb7+dZz3rWbiuy+DgIL/9279NHMft80EQ8Ou//uv09fXheR7Pe97zuOuuu9rnF6OKt9xyC5deeimZTIYXvehFTE1N8fWvf53zzjuPYrHIL/zCL9BsNk/q3/GlL32Jyy67DM/z2LJlC+973/vatv3CL/wCr3/965dcH0URPT09fOYznwFASsnNN9/M5s2byWQyXHLJJfzrv/7rSb+fGo1Go9Gc7WinT6PRaJ7ilMtlXvnKV/KCF7yA97///e3jBw4c4Gd+5md45jOfyX333cfHPvYxPvnJT/KHf/iH7Wt+8zd/k3/7t3/j7//+77n33nvZtm0b1157LXNzc0te4/d///f567/+a77//e+zf/9+Xve61/EXf/EXfO5zn+NrX/sa3/zmN/nIRz5ywjZ/97vf5Rd/8Rd5xzvewUMPPcTf/M3f8OlPf5oPfOADALzxjW/kK1/5CvV6vf07t9xyC81mk1e/+tUA3HzzzXzmM5/h4x//OA8++CDvfOc7edOb3sTtt99+Su+jRqPRaDRnLUqj0Wg0T1mSJFHXXXedOu+881S1Wl1y7t3vfrfavn27klK2j330ox9V+XxeJUmi6vW6sm1bffazn22fD8NQDQ0NqQ9/+MNKKaW+/e1vK0B961vfal9z8803K0A98cQT7WP/+3//b3Xttdce085PfepTqlQqtX9+8YtfrP7oj/5oyTX/8A//oAYHB5VSSkVRpHp6etRnPvOZ9vk3vOEN6vWvf71SSinf91U2m1Xf//73l9zj+uuvV294wxuW2D4/P39MuzQajUajeTqga/o0Go3mKcy73/1ufvCDH3DnnXdSKBSWnHv44Ye58sorEUK0jz33uc+lXq8zNjZGuVwmiiKe+9znts/bts2znvUsHn744SX3uvjii9t/7+/vJ5vNsmXLliXH7rzzzhO2+7777uN73/teO7IHkCQJvu/TbDbJZrO87nWv47Of/SxvfvObaTQafOlLX+Lzn/88AI8//jjNZpOf/umfXnLfMAy59NJLT9gOjUaj0WieDminT6PRaJ6ifP7zn+dP/uRP+NrXvsY555yzqq9l23b770KIJT8vHpNSnvD96vU673vf+3jNa15z1DnP84A0xfPqq69mamqKW2+9lUwmw0tf+tL27wN87WtfY8OGDUt+33XdE7ZDo9FoNJqnA9rp02g0mqcgO3fu5Prrr+eDH/wg11577bLXnHfeefzbv/0bSql2tO973/sehUKB4eFhuru7cRyH733ve4yOjgKpWMpdd93FjTfeuKr2X3bZZTzyyCNs27btmNdcddVVbNy4kX/+53/m61//Oq997Wvbzub555+P67rs27ePq6++elVt1Wg0Go3mqY52+jQajeYpxszMDK961at4wQtewJve9CYOHjy45LxpmvT29vKrv/qr/MVf/AW/9mu/xtvf/nYeeeQR3vve9/Kud70LwzDI5XL8yq/8CjfddBNdXV2MjIzw4Q9/mGazyfXXX7+q/4bf+73f43/8j//ByMgIP/dzP4dhGNx333088MADS4RmfuEXfoGPf/zjPProo3z7299uHy8UCvzGb/wG73znO5FS8rznPY9KpcL3vvc9isUib3nLW1bVfo1Go9Fonkpop0+j0WieYnzta19j79697N27l8HBwaPOj46OsmfPHjZs2MD/+3//j5tuuolLLrmErq4urr/+ev7P//k/7Ws/+MEPIqXkzW9+M7VajSuuuIJbbrmFzs7OVf03XHvttXz1q1/lD/7gD/jQhz6Ebdvs2LGDX/qlX1py3Rvf+EY+8IEPMDo6uqT2EOD9738/vb293HzzzezatYuOjg4uu+wy3v3ud6+q7RqNRqPRPNUQSim13kZoNBqNRqPRaDQajWZ10H36NBqNRqPRaDQajeYsRjt9Go1Go9FoNBqNRnMWo50+jUaj0Wg0Go1GozmL0U6fRqPRaDQajUaj0ZzFaKdPo9FoNBqNRqPRaM5itNOn0Wg0Go1Go9FoNGcx2unTaDQajUaj0Wg0mrMY7fRpNBqNRqPRaDQazVmMdvo0Go1Go9FoNBqN5ixGO30ajUaj0Wg0Go1GcxajnT6NRqPRaDQajUajOYvRTp9Go9FoNBqNRqPRnMX8/wESrl5oOqBnQQAAAABJRU5ErkJggg==", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "import numpy as np\n", - "from matplotlib.lines import Line2D\n", - "\n", - "\n", - "def summarize_and_plot_tiles_from_df(\n", - " df: pd.DataFrame,\n", - " *,\n", - " jitter=0.08,\n", - " alpha=0.35,\n", - " figsize=(9, 5),\n", - " title_lines=None,\n", - "):\n", - " summary = tiling_benchmark_summary(df)\n", - "\n", - " fig, ax = plt.subplots(figsize=figsize)\n", - " fig.subplots_adjust(right=0.72, top=0.80)\n", - "\n", - " zoom_levels = sorted(\n", - " int(z) for z in pd.to_numeric(df[\"zoom\"], errors=\"coerce\").dropna().unique()\n", - " )\n", - " ax.set_xticks(zoom_levels)\n", - " if zoom_levels:\n", - " ax.set_xlim(min(zoom_levels) - 0.6, max(zoom_levels) + 0.6)\n", - "\n", - " for z in zoom_levels:\n", - " sub = df[df[\"zoom\"] == z]\n", - " if sub.empty:\n", - " continue\n", - "\n", - " x = np.random.normal(loc=z, scale=jitter, size=len(sub))\n", - " ok_mask = sub[\"ok\"].astype(bool).values\n", - " err_mask = sub[\"is_error\"].astype(bool).values\n", - "\n", - " ax.scatter(\n", - " x[ok_mask],\n", - " sub.loc[ok_mask, \"response_time_sec\"],\n", - " alpha=alpha,\n", - " edgecolor=\"none\",\n", - " label=None,\n", - " )\n", - " ax.scatter(\n", - " x[err_mask],\n", - " sub.loc[err_mask, \"response_time_sec\"],\n", - " marker=\"x\",\n", - " alpha=min(0.85, alpha + 0.25),\n", - " label=None,\n", - " )\n", - "\n", - " med = pd.to_numeric(sub[\"response_time_sec\"], errors=\"coerce\").median()\n", - " if np.isfinite(med):\n", - " ax.hlines(med, z - 0.45, z + 0.45, linestyles=\"--\")\n", - "\n", - " ax.set_xlabel(\"Zoom level\")\n", - " ax.set_ylabel(\"Tile response time (s)\")\n", - "\n", - " ok_proxy = Line2D([], [], linestyle=\"none\", marker=\"o\", label=\"200 OK\")\n", - " err_proxy = Line2D(\n", - " [], [], linestyle=\"none\", marker=\"x\", label=\"error (≥400 or failure)\"\n", - " )\n", - " ax.legend(\n", - " [ok_proxy, err_proxy],\n", - " [\"200 OK\", \"error\"],\n", - " frameon=False,\n", - " loc=\"upper left\",\n", - " bbox_to_anchor=(1.02, 1.00),\n", - " )\n", - "\n", - " if title_lines:\n", - " ax.set_title(\"\\n\".join(title_lines), fontsize=9, loc=\"left\", pad=12)\n", - "\n", - " ax.grid(True, axis=\"y\", alpha=0.2)\n", - " plt.tight_layout()\n", - "\n", - " return summary, (fig, ax)\n", - "\n", - "\n", - "summary, (fig, ax) = summarize_and_plot_tiles_from_df(\n", - " df_viewport,\n", - " title_lines=[\n", - " \"concept_id: C2723754864-GES_DISC\",\n", - " \"endpoint: https://staging.openveda.cloud/api/titiler-cmr\",\n", - " ],\n", - ")\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "c6ad1cdd", - "metadata": {}, - "source": [ - "### Rasterio Backend (COG/Band-based datasets)\n", - "In this example, we will benchmark a CMR dataset that is structured as Cloud Optimized GeoTIFFs (COGs) with individual bands. We will use the `rasterio` backend for this dataset.\n", - "\n", - "In general, the lower the zoom level, the more files need to be opened to render a tile, which can lead to increased latency. Additionally, datasets with larger file sizes or more complex structures may also experience higher latency.\n", - "\n", - "In Rasterio, each `/tile` request:\n", - "- finds all granules intersecting the tile footprint and the selected datetime interval\n", - "- reads & mosaics them (across space/time), resamples, stacks bands, then encodes the image \n", - "\n", - "In contrast to the xarray backend, the rasterio backend’s tile latency depends strongly on the width of the datetime interval." - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "81ea0403", - "metadata": {}, - "outputs": [], - "source": [ - "ds_hls_day = DatasetParams(\n", - " concept_id=\"C2021957295-LPCLOUD\",\n", - " backend=\"rasterio\",\n", - " datetime_range=\"2023-10-01T00:00:01Z/2023-10-07T00:00:01Z\",\n", - " bands=[\"B04\", \"B03\", \"B02\"],\n", - " bands_regex=\"B[0-9][0-9]\",\n", - " step=\"P1D\",\n", - " temporal_mode=\"point\",\n", - ")\n", - "ds_hls_week = DatasetParams(\n", - " concept_id=\"C2021957657-LPCLOUD\",\n", - " backend=\"rasterio\",\n", - " datetime_range=\"2023-10-01T00:00:01Z/2023-10-20T00:00:01Z\",\n", - " bands=[\"B04\", \"B03\", \"B02\"],\n", - " bands_regex=\"B[0-9][0-9]\",\n", - " step=\"P1W\",\n", - " temporal_mode=\"point\",\n", - ")\n", - "\n", - "min_zoom = 3\n", - "max_zoom = 20\n", - "viewport_width = 3\n", - "viewport_height = 3\n", - "timeout_s = 60.0" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "19806ae2", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "=== TiTiler-CMR Tile Benchmark ===\n", - "Client: 8 physical / 8 logical cores | RAM: 16.00 GiB\n", - "Dataset: C2021957295-LPCLOUD (rasterio)\n", - "Query params: 11 parameters\n", - " concept_id: C2021957295-LPCLOUD\n", - " backend: rasterio\n", - " datetime: 2023-10-01T00:00:01Z/2023-10-07T00:00:01Z\n", - " bands: B04\n", - " bands: B03\n", - " bands: B02\n", - " bands_regex: B[0-9][0-9]\n", - " step: P1D\n", - " temporal_mode: point\n", - " tile_format: png\n", - " tile_scale: 1\n", - "Total execution time: 37.370s\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
zoomn_tilesok_pctno_data_pcterror_pctmedian_latency_sp95_latency_s
039.0100.00.00.023.43963827.776124
149.0100.00.00.019.45382223.137774
259.0100.00.00.019.17104221.092155
369.0100.00.00.013.85299019.013567
479.0100.00.00.06.4700768.014772
589.0100.00.00.02.9959434.376422
699.0100.00.00.01.6410832.751500
7109.0100.00.00.02.0903522.847120
8119.0100.00.00.02.5462533.079243
9129.0100.00.00.01.0315312.355738
10139.0100.00.00.00.8745111.225137
11149.0100.00.00.00.7189601.642866
12159.0100.00.00.01.0478841.573466
13169.0100.00.00.00.7040831.186024
14179.0100.00.00.00.7570161.555300
15189.0100.00.00.00.7080181.367176
16199.0100.00.00.00.7030931.847186
17209.0100.00.00.00.7084791.070557
\n", - "
" - ], - "text/plain": [ - " zoom n_tiles ok_pct no_data_pct error_pct median_latency_s \\\n", - "0 3 9.0 100.0 0.0 0.0 23.439638 \n", - "1 4 9.0 100.0 0.0 0.0 19.453822 \n", - "2 5 9.0 100.0 0.0 0.0 19.171042 \n", - "3 6 9.0 100.0 0.0 0.0 13.852990 \n", - "4 7 9.0 100.0 0.0 0.0 6.470076 \n", - "5 8 9.0 100.0 0.0 0.0 2.995943 \n", - "6 9 9.0 100.0 0.0 0.0 1.641083 \n", - "7 10 9.0 100.0 0.0 0.0 2.090352 \n", - "8 11 9.0 100.0 0.0 0.0 2.546253 \n", - "9 12 9.0 100.0 0.0 0.0 1.031531 \n", - "10 13 9.0 100.0 0.0 0.0 0.874511 \n", - "11 14 9.0 100.0 0.0 0.0 0.718960 \n", - "12 15 9.0 100.0 0.0 0.0 1.047884 \n", - "13 16 9.0 100.0 0.0 0.0 0.704083 \n", - "14 17 9.0 100.0 0.0 0.0 0.757016 \n", - "15 18 9.0 100.0 0.0 0.0 0.708018 \n", - "16 19 9.0 100.0 0.0 0.0 0.703093 \n", - "17 20 9.0 100.0 0.0 0.0 0.708479 \n", - "\n", - " p95_latency_s \n", - "0 27.776124 \n", - "1 23.137774 \n", - "2 21.092155 \n", - "3 19.013567 \n", - "4 8.014772 \n", - "5 4.376422 \n", - "6 2.751500 \n", - "7 2.847120 \n", - "8 3.079243 \n", - "9 2.355738 \n", - "10 1.225137 \n", - "11 1.642866 \n", - "12 1.573466 \n", - "13 1.186024 \n", - "14 1.555300 \n", - "15 1.367176 \n", - "16 1.847186 \n", - "17 1.070557 " - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df_viewport_day = await benchmark_viewport(\n", - " endpoint=endpoint,\n", - " dataset=ds_hls_day,\n", - " lng=lng,\n", - " lat=lat,\n", - " viewport_width=viewport_width,\n", - " viewport_height=viewport_height,\n", - " min_zoom=min_zoom,\n", - " max_zoom=max_zoom,\n", - " timeout_s=timeout_s,\n", - ")\n", - "\n", - "df_viewport_day_summary = tiling_benchmark_summary(df_viewport_day)\n", - "df_viewport_day_summary" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "e034280d", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "=== TiTiler-CMR Tile Benchmark ===\n", - "Client: 2 physical / 4 logical cores | RAM: 30.89 GiB\n", - "Dataset: C2021957657-LPCLOUD (rasterio)\n", - "Query params: 11 parameters\n", - " concept_id: C2021957657-LPCLOUD\n", - " backend: rasterio\n", - " datetime: 2023-10-01T00:00:01Z/2023-10-20T00:00:01Z\n", - " bands: B04\n", - " bands: B03\n", - " bands: B02\n", - " bands_regex: B[0-9][0-9]\n", - " step: P1W\n", - " temporal_mode: point\n", - " tile_format: png\n", - " tile_scale: 1\n", - "Total execution time: 37.966s\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
zoomn_tilesok_pctno_data_pcterror_pctmedian_latency_sp95_latency_s
039.0100.00.00.022.92683024.378291
149.0100.00.00.017.92135718.726973
259.0100.00.00.016.92912217.784730
369.0100.00.00.017.53762019.149198
479.0100.00.00.09.61684212.005472
589.0100.00.00.04.7617385.956546
699.0100.00.00.02.0604293.757879
7109.0100.00.00.01.5003062.483718
8119.0100.00.00.01.1941132.596202
9129.0100.00.00.01.1213691.218752
10139.0100.00.00.00.7293430.934768
11149.0100.00.00.00.6960730.834257
12159.0100.00.00.00.6577861.053041
13169.0100.00.00.00.6694890.975639
14179.0100.00.00.00.7726211.158088
15189.0100.00.00.00.7016580.809705
16199.0100.00.00.00.6713820.877972
17209.0100.00.00.00.7232030.804541
\n", - "
" - ], - "text/plain": [ - " zoom n_tiles ok_pct no_data_pct error_pct median_latency_s \\\n", - "0 3 9.0 100.0 0.0 0.0 22.926830 \n", - "1 4 9.0 100.0 0.0 0.0 17.921357 \n", - "2 5 9.0 100.0 0.0 0.0 16.929122 \n", - "3 6 9.0 100.0 0.0 0.0 17.537620 \n", - "4 7 9.0 100.0 0.0 0.0 9.616842 \n", - "5 8 9.0 100.0 0.0 0.0 4.761738 \n", - "6 9 9.0 100.0 0.0 0.0 2.060429 \n", - "7 10 9.0 100.0 0.0 0.0 1.500306 \n", - "8 11 9.0 100.0 0.0 0.0 1.194113 \n", - "9 12 9.0 100.0 0.0 0.0 1.121369 \n", - "10 13 9.0 100.0 0.0 0.0 0.729343 \n", - "11 14 9.0 100.0 0.0 0.0 0.696073 \n", - "12 15 9.0 100.0 0.0 0.0 0.657786 \n", - "13 16 9.0 100.0 0.0 0.0 0.669489 \n", - "14 17 9.0 100.0 0.0 0.0 0.772621 \n", - "15 18 9.0 100.0 0.0 0.0 0.701658 \n", - "16 19 9.0 100.0 0.0 0.0 0.671382 \n", - "17 20 9.0 100.0 0.0 0.0 0.723203 \n", - "\n", - " p95_latency_s \n", - "0 24.378291 \n", - "1 18.726973 \n", - "2 17.784730 \n", - "3 19.149198 \n", - "4 12.005472 \n", - "5 5.956546 \n", - "6 3.757879 \n", - "7 2.483718 \n", - "8 2.596202 \n", - "9 1.218752 \n", - "10 0.934768 \n", - "11 0.834257 \n", - "12 1.053041 \n", - "13 0.975639 \n", - "14 1.158088 \n", - "15 0.809705 \n", - "16 0.877972 \n", - "17 0.804541 " - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df_viewport_week = await benchmark_viewport(\n", - " endpoint=endpoint,\n", - " dataset=ds_hls_week,\n", - " lng=lng,\n", - " lat=lat,\n", - " viewport_width=viewport_width,\n", - " viewport_height=viewport_height,\n", - " min_zoom=min_zoom,\n", - " max_zoom=max_zoom,\n", - " timeout_s=timeout_s,\n", - ")\n", - "\n", - "df_viewport_week_summary = tiling_benchmark_summary(df_viewport_week)\n", - "df_viewport_week_summary" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "3b5338d5", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA30AAAHqCAYAAACwdidrAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAtHdJREFUeJzs3Xd4VFX6B/DvnZ7p6T0h9CoigjQVBEUUBVEUFQTFXQu4Yll1URQrrLsq6lpW/QkWUHcVRLGtKCAq6kpZVKSTAAkJpMxMprfz+yPmmkkmIQmTQvL9PE+e9Z5z77nvnblh75tz7jmSEEKAiIiIiIiIOiRFWwdARERERERELYdJHxERERERUQfGpI+IiIiIiKgDY9JHRERERETUgTHpIyIiIiIi6sCY9BEREREREXVgTPqIiIiIiIg6MCZ9REREREREHRiTPiIiIiIiog6MSV8HceONN+Luu++ut37evHmYNWtW6wVERERERETtApO+dmz06NFYsmRJo/Z98cUX8de//jWm5//6668xYcIExMfHw2q1YuDAgXj88cfh9/uxe/duXHLJJUhLS4PVasXIkSPxzTffRBz/66+/YuTIkdDr9ejZsyc++OADue7w4cMYMWIEEhMTYbFYcOqpp2LVqlURx9tsNlx//fVISkqC2WzG6aefDrfbLdc/+uijyM3NhdlsxqBBg/Cf//wn4viG6n/++WeMHz8eSUlJkCQJNpst4tgJEybAaDTKPzqdDgqFAqWlpQCApUuXolevXrBYLEhKSsKUKVNw8OBB+fiFCxdCpVJFtPHOO+/U+1nn5+dDkiR534yMDNx0003weDzyPps3b8aECRNgsVhgNBpx5plnYu3atU363gBAkiRs27Ytahx79+7F1KlTkZCQAIPBgMGDB9eJu777sma7Na/fYrGgS5cumDFjBv73v//V+xkQERERUctg0kdRrVmzBhMmTMD48eOxZ88e2Gw2vPPOO9ixYweOHDkCm82GCRMm4KeffkJZWRlmzZqFCy64QE6KAoEALrroIowdOxbl5eV48skncdVVV2Hv3r0AgPj4eCxbtgzHjh2D3W7H888/j+nTp+PAgQMAgHA4jIkTJ0KtVmP37t2w2Wx4+eWXoVarAQDvv/8+/v73v2PNmjWw2+24/fbbcckll6C8vLxR9Wq1GpdffjmWLVsW9fo/+eQTOJ1O+ecPf/gDxo0bh6SkJADAOeecg2+++QZ2ux2HDx9Gt27dcN1110W0MXHixIg2rrjiiuN+7ocPH4bT6cS3336L9evX45FHHgEA/Pjjjzj77LNx5plnIj8/H8XFxZg5cyYmT54ckUwf73trSEFBAYYNG4b09HT8+uuvKCsrw7333oubbroJzz333HFjr636+u12OzZt2oSePXti2LBhWL9+fZPbIiIiIqITIDoJu90u5syZI3JycoTJZBKnn366OHjwoBBCiOLiYjF16lSRlJQksrOzxfz580UgEBBCCLFu3TphsVjEyy+/LLKyskRCQoL485//HNH2f/7zHzF06FBhsVhEWlqaeOyxx+S6zz//XAwZMkRYLBbRt29fsXr1arlu5syZ4tprrxWTJk0SBoNBDBgwQGzcuFEIIcTtt98uFAqF0Gg0wmAwiPPPP7/B65s5c6a49dZb5e0NGzaI/v37C4PBIC655BJx3XXXiZkzZzbqswqHwyIvL088/PDDjdq/Wnx8vPjiiy+EEEKsXbtWWK1W4ff75foLLrhA3H///VHPt2nTJqHVasWXX34phBBizZo1Ijs7W/4eanviiSfEueeeG1GmVqvFf//730bVVztw4IAAICoqKuq9Lo/HI+Lj48Xbb78dtd7tdou77rpL5OTkyGUPPPCAmDRpUr1t1hYtjjvuuENMnDhRCCHE2WefLWbPnl3nuIceekjk5eWJcDjc6O8NgNi6dWud8pkzZ4qxY8fWKX/99deFyWQSDodDjuWpp55qsN36rv+GG24QQ4YMaTA+IiIiIoqtTtPTN2vWLOzduxebNm2CzWbDSy+9hLi4OADAVVddBbVajQMHDmDjxo14//338fjjj8vHVlZWYseOHdizZw++/vprPPfcc3JvxdatWzFp0iTcddddOHbsGHbu3IkxY8YAALZv346pU6di8eLFKC8vxz//+U/MmDEDu3btkttesWIFZs+eDZvNhptvvhkXX3wxbDYbnnjiCZx55pn461//CqfTiU8++aTR11pRUYGLL74Yc+fOhc1mw7XXXos333wzYp+JEydi8eLFUY/fs2cPDhw4gCuvvLLR5/zpp59QWVmJvn37ytfer18/uWcOAE499VRs37494rhTTjkFWq0Ww4cPx8iRI3HmmWcCADZs2IDu3btjxowZSExMRL9+/fDaa6/Jx11xxRUo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ssTdd98tzzp5vKRPCCE+/vhjMXjwYGEymUR6erpYvHixXPfFF1+IESNGiPj4eJGYmCjGjh0rz3BYe/bO/v37iw0bNsjHfvfdd6J3797CYrGICy+8sMHrqz1757p160S/fv2EwWAQkydPrjN75/nnny8effTRBtvcuHGjGD9+vLBYLMJisYgBAwaIxx9/XPh8PrFs2TIBQOj1emEwGOSfN998Uz7+l19+ESNGjBA6nU50795dvP/++3LdRx99JAYMGCCMRqOwWq1i6NCh4t133404//fffy9OP/10odfrRc+ePcXrr78u1/n9fnH77beLrKwsYTQaRY8ePcQzzzzT6PrqJKv2z4EDByJiNBgM8qyVNf3pT38SGRkZQq/Xi/T0dDFt2jSxb98+uf7KK68UiYmJQq/Xi7y8PHHPPfcIt9td72fdmFlEf/jhB3HeeecJk8kkDAaDGDlypPjss8/q7NfQ9yaEiHrd1ffGrl27xJQpU4TVahV6vV4MGjRILF++vM453nrrLTFw4EBhNptFVlaWuP7660VZWZlc/8ADDwilUikMBoMwmUwiJydHXH311VFnDSUiIiKiliUJIUQbdDASqmYUtVqtjV6AnYiIiIiIqKk6xTt9REREREREnRWTvpPEwYMHI2Z8rPlTPeMlERERERFRbRzeSURERERE1IGxp4+IiIiIiKgDY9L3mxtvvBF33313W4fRIS1fvhwjRoyQt7t06YL333+/7QJqwLx58zBr1qxG7XsyXRcRERERdV6dIum74IILMHfu3DrlDocDer0eX375JV588UX89a9/bYPommbhwoWYPHlyk47ZsmULBg8ejISEBFitVowYMQJfffVVo471+XwYPXo0UlJSYDab0bt3b7z00kv17r9+/XpYrdaIsquvvhrffvttk2I+GXTU6yIiIiKijqVTJH2zZ8/GihUr4PP5IsrfeustpKenY8yYMW0UWdMEAoFmHZebm4uVK1eirKwMFRUVuPPOO3HhhRfC4/Ec91iVSoVnn30WRUVFcDgcWLlyJRYsWICNGzc2KxYiIiIiImpdnSLpu/jii6FSqeoMvVu6dCmuu+46SJKEWbNmYd68eXLdvn37cNFFFyE5ORm5ubl45JFHEA6HAQB9+vTBp59+CgD46aefIEkSXnzxRQCA3W6HWq1GaWkp8vPzIUkSXn75ZXTp0gWJiYm4+eab4ff75fP85z//waBBg2CxWHDaaadh7dq1ct2sWbMwe/ZsXH755TCbzVi8eDEee+wxrFmzRp65szESExORm5sLSZIghIBSqYTT6URxcTEAYOrUqZg+fbq8/9/+9jf069cPHo8HSqUSAwYMgEqlAgBIkgRJkrB379465ykrK8OECRNgt9vl+DZu3Ihly5bh1FNPrTe+tWvXYujQobBarejXrx8++OADue7zzz/HKaecApPJhNTUVNx0002NuubG+uqrrzBgwAAYjUZMmTIFlZWVEfXTp09HRkYGzGYzBg8ejHXr1sl19V1XIBBAamoq1q9fH1Hep08fvPPOOzGNn4iIiIjoeDpF0qdWqzFjxgy8+uqrctmOHTvw448/Rn1/y+12Y+zYsRg7diwKCwuxceNGvP3221i6dCkAYMyYMfLD/5dffolu3brJ2+vXr0ffvn2RlJQkt7dq1Sps27YNP/30E7799lssWrQIALB3715MmjQJCxYsQFlZGebPn4+LL74YBw4ckI996623MHv2bNhsNtxxxx2YP38+Jk6cCKfTCafTCQD4+uuv6wypjMZqtUKj0WDy5Mm45pprkJeXBwB4+eWXsXHjRrz++uv48ccf8cgjj+Dtt99GXFycfOzEiROh0+nQt29fpKam4pJLLqnTfmJiIj755BNYLBY5vjPPPLPBmLZv346pU6di8eLFKC8vxz//+U/MmDEDu3btAgDMnDkTf/7zn1FZWYn9+/djxowZx73OxqqoqMDFF1+MuXPnwmaz4dprr8Wbb74Zsc/YsWPx66+/oqysDNOmTcNll11WJzGsrfp+W7ZsmVy2adMmlJSUNHloLhERERHRieoUSR9QNcRz7dq1OHToEADg1Vdfxfjx45GZmVln348++gjx8fGYN28eNBoNcnJycOutt2LFihUA6iZ9CxYswIYNG+Ttc845J6K9hQsXwmq1IiMjA3/5y1/wxhtvAADeeecdjB49GlOmTIFKpcJll12GUaNG4a233pKPPe+88zB+/HgoFAro9fqo1zZq1CjYbLbjfgY2mw2VlZV44403IpIxq9WK5cuX49Zbb8Xll1+Oxx57DAMGDIg4ds2aNXC5XFi/fj0uvfTSiITwRPzzn//ErFmzcM4550ChUGDUqFGYOHEi/vWvfwGoSqD27t2LY8eOwWAwREyccqLWrFmDjIwM3HDDDVCpVLjooovqfHfXXnstLBYL1Go1/vznPyMcDmP79u3HbXv27Nl477335MR82bJluOqqq6DVamMWPxERERFRY3SapK9v374YOnQoXnvtNQSDQbz55puYPXt21H3z8/Px888/w2q1yj933HGHPBxy9OjR2Lp1KyoqKvDtt99iypQpSEtLwy+//BI16cvNzY3478LCQgDA4cOH0aVLl4h9u3btisOHD8vbOTk5sbh8WVxcHKZPn46nnnoKX3/9tVw+cuRIdO3aFQ6HA9dff33UY5VKJc4++2yUlJTgb3/7W0ziyc/Px4svvhjxWa9evRpFRUUAqnpJf/75Z/Tq1QuDBg2Sk8HabrzxRnlI6Y033lhnMfuDBw/WOaaoqCjiuwEiv6twOIx7770XPXr0gNlshtVqhd1uR2lp6XGvq0+fPujfvz/effddeL1evPPOO7juuuua8tEQEREREcWEqq0DaE2zZ8/G4sWL0b9/f4TDYVx00UVR98vOzsbgwYPx3XffRa1PTk5G7969sWTJEnTv3h0mkwnnnHMO3nnnHezcuRNnnXVWxP4FBQVITU0FABw8eFDuXczKyopIvICqJKjm8QpFZF5ee7u5AoEA9uzZg1GjRgEAnnjiCfh8PvTp0wfz58/HE088cdxjo2lqfNnZ2bj11luxePHiqPWnnXYa3nvvPYTDYbz//vu4/PLLcfbZZ8ufZ7UXX3xRfq+yWnUvW30yMjJQUFAQUXbw4EGkpKQAAFasWIEVK1bgs88+Q48ePSBJEuLj4yGEaNS1zZ49G8uWLYNWq0Vubi5OO+20Rh1HRERERBRLnaanDwCuuOIKFBcX47bbbsM111wDtVoddb+JEyeipKQEzz//PLxeL0KhEHbt2hUxMceYMWOwZMkSeebPc845B08//bQ8KUtNDz30EGw2G4qKirBo0SJcffXVcjzr16/H6tWrEQwGsXLlSnz11VeYNm1avdeQmpqKgoICBIPBRl/3mjVrsH37dgSDQbjdbjz22GM4fPiwnFxu3rwZDz/8MN566y2sWLECy5Ytw2effQYA2LZtGz7//HN4PB4Eg0F89NFHWL58OcaPH19vfJWVlTh69GijYrvhhhuwdOlSrFu3DqFQCD6fD5s2bcKvv/4Kv9+PN954AxUVFVAoFPJ7i9WTypyoCy+8EIWFhXj55Zfla/vyyy/leofDAY1Gg6SkJPj9fjz00EPHfZ+vpiuuuAKbN2/G4sWL2ctHRERERG2mUyV9JpMJl19+OfLz8+sd2gkARqMRa9euxRdffCHPunnVVVfJwzuBqqTP4XDIQznPPvtsuN3uOkM7AWDSpEk49dRT0b9/f5xxxhmYP38+AKB79+5YuXIlHnjgASQkJOChhx7CqlWr0LVr13pjmzp1KsxmM5KTk+UkaOPGjQ3O5FlaWoqpU6fCarUiJycHn3/+OT766CN069YNTqcTV155JR599FEMGDAA2dnZePnllzFz5kwcPXoUwWAQ8+fPR2pqKhITEzF//nw8+eSTuOqqq6Keq1evXpg9ezb69u0Lq9VapyeztkGDBuGtt97Cfffdh+TkZGRmZmLBggXy8horVqyQe1NvueUWrFixAomJiQ222VgJCQlYvXo1nn76aVitVrzyyityQg5UTSLTr18/5ObmomvXroiLi0NWVlaj2zeZTJg6dSp27twZ0S4RERERUWuSRGPHqlGT5efnIy8vDxUVFY2aXZM6noceegjbt2/Hu+++29ahEBEREVEn1ane6SNqTceOHcPLL78csXQDEREREVFr61TDO4lay6OPPoouXbrgwgsvxNixY9s6HCIiIiLqxDi8k4iIiIiIqANjTx8REREREVEHxqSvmSZPnoyFCxfGpK0JEybg+eefj0lb0axfv54TyTRg+fLlGDFiRFuH0e5t27YNkiS1SNuSJGHbtm0t0vaSJUswevToFmn74MGDMBqNsNvtjT7msccew5VXXtnoNmfNmoV58+adaKhERETUiTHpawc++eQT3HzzzY3ad9myZTj11FNjev5obS5cuBCTJ0+O6XlqKywsRFJSEkKhkFzWs2dPbN26tcHjYp0gXH311fj2229j1h61f9HuvebIycmB0+msszbnueeei1WrVkX93Zo/fz7eeustebv2/Vxfm0RERETNxaSP2syHH36ICRMmQKlUAgB27twJr9eLQYMGtXFk1NHVvvdiyeFw4IcffsB5550X87abKhAIdOjzERERUeN0mqTP6XRi7ty5yMnJQUpKCq655hp5+FR+fj4kScIbb7yB7t27w2q1YtasWREPMO+99x66d+8Oi8WCP/zhDwgGg3Jd9fDJZ599Funp6UhLS8MDDzyAmnPkvPnmm+jTpw+sVitGjRqFLVu2yHWjR4/GkiVLItp65ZVXkJ2djcTERNx1110AgK1bt+LGG2/ETz/9BKPRCKPRiIMHDzb6M2hsm6+//joee+wxrFmzRi4DqoaZXXfddZg8eTKMRiNOOeWUiMXXly9fjh49esBkMiEzMxMPP/xwg/F8+OGHuPjiiyO2L7roIgDAli1bMGzYMJjNZiQlJcnlQ4cOBQCMGDECRqMRjz32GABg+vTpyMjIgNlsxuDBg7Fu3bqIcz377LPytd9333049dRT5aUUavfGdOnSBY8//jiGDRsGk8mEs88+G4cOHZLrf/nlF7luzJgxuOuuuxocPrh3716MHz8eCQkJ6Natm/xd1zz3/PnzkZiYiJycnDpDfd9++22ccsopsFqtGDJkSESv5OjRo/GXv/wF48ePh8lkwmmnnYaffvoJAPDUU0/hnHPOiWjrnXfeQe/evRvVts1mw+WXXw6r1YrevXvjq6++imjrzTffRP/+/WEymZCTk4MFCxagoXmhiouLMX36dKSnp8NqteKss86Cx+Ops58QAk888QS6deuGhIQEnH/++di/f79cX7tnrPbwzdrfT1FRUZ1z1Lz3jncdkiTh6aefRq9evWC1WnHFFVfU+bfDZrPJ+3/22WcYNWoUdu/eHfX3tWYverT7OVqbNe3btw8XXXQRkpOTkZubi0ceeQThcBjA7/fTAw88gLS0NEybNi1qG2+99RYGDhwIs9mM3Nxc+Xdh4cKFmDhxIm644QZYLBbk5eVh/fr1eP/999G9e3fEx8fj3nvvldtp7PmIiIiojYlOYurUqeLKK68UFRUVwul0imnTponp06cLIYQ4cOCAACCuvPJK4XA4RGFhocjKyhJLly4VQgixa9cuodFoxAcffCACgYB44YUXhFKpFA888IAQQoh169YJhUIhZs2aJVwul/j1119FVlaWWLZsmRBCiA0bNgij0Sg2bNgg/H6/eOqpp0RycrKw2WxCCCHOPvts8dRTT0W0ddtttwmPxyN27Ngh9Hq9WLdunRBCiKVLl4qBAwdGXFtBQYGwWCyioKAg6rU3p80HHnhATJo0KaJs5syZQqvVRnwO8fHx8meqUqnEhg0bhBBCVFRUiB9++EE+dsCAAWL58uXyttPpFGazWTgcDrls1KhR4tNPPxVCCDF8+HDxyCOPiFAoJLxer9yuEEIAEFu3bo2I7dVXXxU2m034/X7x+OOPi4SEBLnttWvXCqvVKr7//nvh8/nEggULhEqlkr/f2tefm5srBgwYIPbv3y88Ho+YMGGCmDlzphBCCL/fL7p27SoWLlwofD6f+O6770RiYqI4++yzo372gUBA9OrVS/z5z38WHo9H/O9//xPp6enyZ7F06VKhVCrF/Pnzhc/nE99++60wmUzy9X700UciMzNTbN68WYRCIfHee++JhIQEUVpaKoSouncyMzPFtm3bRCAQEH/4wx/kWIqLi4VarRYHDx6U47nwwgvFI4880qi2Z8yYIc4991xRUVEhCgsLxeDBg0XNfzI+/vhjsWvXLhEOh8XWrVtFSkqKePPNN6N+DqFQSJx++uli5syZory8XAQCAbFx40bh9XrrfKevvfaayMjIENu3bxcej0fcfvvtom/fviIQCET9/p966in5mgOBgOjatWvE5xkfHx/x/dS+9453HQDE4MGDRWFhoaioqBDnnnuumDVrlhDi9387Kioq5P2nT58uXnzxRfn7Pd7vVu3rqd3mzJkzxa233iqEEMLlconc3Fzx1FNPCZ/PJwoKCkS/fv3EK6+8Ip9PqVSKhx56SPh8PuFyuep8Fx988IFISEgQX3zxhQiFQqKkpERs2bJFjk2tVov33ntPBINBsWDBApGZmSlmzZolnE6n+OWXX4RWqxWbN29u9PmIiIio7XWKpO/o0aNCoVCI8vJyuWz37t1CrVaLYDAoP2T9+uuvcv31118v5s6dK4QQ4qGHHhITJkyIaLN3794RSR8AUVJSItcvXrxYjB07Vm7rxhtvjDi+Z8+e8oN/7aRPkqSIh6dx48aJv//970KI6A+Rx9OcNutL+qJ9Dm+88YZwOp0iLi5OvPjii8Jutx83plWrVolzzz1X3i4tLRVWq1VOAs466yzxhz/8QRw6dKjOsdGSvtqsVqv4+uuvhRBCXHfddWLOnDlynd/vFxaLpcGk74UXXpC333zzTdG/f38hhBBfffWVsFgscgIihBA333xzvUnf119/Lcxms/D5fHLZo48+Kl/70qVLhdlsFn6/X66/8cYbxezZs4UQQlxwwQViyZIlEW2OGDFCvP7660KIqnvn7rvvjjif0WiUtydMmCAWLVokhBCipKREaDQa+Y8DDbUdDAaFRqMR33//vVz39ttvi4b+TnTrrbeK66+/Pmrdd999JwwGg3C73VHra36n48aNE4sX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8MNr4QmEou472ByHV/rlQFJIUCXqcObL36LCGz3pOyXLgg/mjpK3xz25AYU2D/IXX9jMqyAiIiIiiq0mJ32333475syZA6/XCyEEfvjhB7z11ltYtGgRXnnllSa1NXr06AYnV/nss/of4olaiqRSQJUUB0WcCpKCQyOIiIiI6OQmiWZMabl8+XIsXLgQ+/btAwBkZGTgwQcfxOzZs2Me4IlyOBywWCyw2+2cyKWDa+7wzmC5D/7Dv89wpYAEner3JSwDSTqoU/SNapfDO4mIiKg94DMw1dSspK+a2+2G0+lESkpKLGOKKd7wdDwiLODdWQ7hrzvcU1IpoOudAKlGEkhERETU3vEZmGpq8pOsx+OB2121ppler4fH48GSJUvwn//8J+bBEbUGSSFB280KhV4dWa5VQtvVwoSPiIiIiE5qTR6DNmnSJEyZMgU33ngjbDYbhg4dCo1Gg9LSUjz55JO46aabWiJOohal0Cqh6xmPkCsA4QtB0iigNGraOiwiIiIiohPW5C6MLVu24MwzzwQAvPvuu0hLS0NBQQFef/11PPPMMzEPkCgWwv4Q/Edc8O6pgHefDcEyD0S47shmpUENVYKOCR8RERERdRhN7ulzu90wmUwAgP/85z+YMmUKFAoFhg0bhoKCgpgHSHSiwu4AvPvswG/r8AGAv9IPRbkX2m5WztBJRERERB1ak3v6unfvjvfffx+HDh3CZ599hvPOOw8AcPToUb4kSu2S72BlRMJXLewKIHjU3QYRERERERG1niYnfffffz/uvPNOdOnSBWeccQaGDx8OoKrXb9CgQTEPkOhEhFwBiHoWVgeAYJm3FaMhIiIiImp9TR7eedlll2HUqFE4cuQIBg4cKJePHTsWl1xySUyDIzpRIlC3hy+iPthwPRERERHRya5ZK0inpaUhLS0tomzo0KExCYgolhQ65QnVExERERGd7Jqc9LlcLixevBhffPEFjh49inA4sqdk//79MQuO6EQpdCooTBqEK/1R61VJca0cERERERFR62py0nf99ddjw4YNmDFjBtLT0yFJnPmQ2jdtjhm+/TaEPZHv9qmS9VAlMukjIiIioo6tyUnfJ598go8++ggjR45siXiIYk5SK6DrlYCQw4+Q0w9JKUFp1UKhbdboZiIiIiKik0qTn3rj4+ORkJDQErEQtSilWQOlmYuuExEREVHn0uQlGx5++GHcf//9cLu5vhkREREREVF71+SevieeeAL79u1DamoqunTpArVaHVG/ZcuWmAVHREREREREJ6bJSd/kyZNbIAwiIiIiIiJqCZIQQrR1EC3J4XDAYrHAbrfDbDa3dThERERERC2Oz8BUU7OnL9y8eTN+/fVXAEC/fv0waNCgmAVFREREREREsdHkpO/o0aOYNm0a1q9fD6vVCgCw2WwYM2YM3n77bSQnJ8c6RiIiIiIiImqmJs/eecstt6CyshK//PILysvLUV5ejp9//hkOhwN/+tOfWiJGIiIiIiIiaqYmv9NnsViwdu1aDBkyJKL8hx9+wHnnnQebzRbL+E4YxzMTERERUWfDZ2Cqqck9feFwuM4yDQCgVqsRDodjEhQRERERERHFRpOTvnPOOQe33norioqK5LLCwkLcdtttGDt2bEyDIyIiIiIiohPT5KTvH//4BxwOB7p06YJu3bqhW7duyMvLg8PhwLPPPtsSMRIREREREVEzNXn2zuzsbGzZsgVr167Fzp07AQB9+vTBuHHjYh4cERERERERnRguzk5ERERE1MHwGZhqavLwTgD44osvMHHiRHl458SJE7F27dpYx0ZEREREREQnqMlJ3/PPP4/zzz8fJpMJt956K2699VaYzWZccMEFeO6551oiRiIiIiIiImqmJg/vzMrKwj333IO5c+dGlD/33HN47LHHUFhYGNMATxS7tomIiIios+EzMNXU5J4+m82G888/v075eeedB7vdHpOgiIiIiIiIKDaanPRdfPHFWLVqVZ3y1atXY+LEiTEJioiIiIiIiGKjyUs29O3bF48++ijWr1+P4cOHAwC+++47fPPNN7jjjjvwzDPPyPv+6U9/il2kRERERERE1GRNfqcvLy+vcQ1LEvbv39+soGKJ45mJiIiIqLPhMzDV1OSevgMHDrREHERERERERNQCmrVOX02hUAjbtm1DRUVFLOIhIiIiIiKiGGpy0jdv3jz83//9H4CqhO+ss87CaaedhuzsbKxfvz7W8REREREREdEJaHLS9+6772LgwIEAgA8//BD5+fnYuXMnbrvtNtx7770xD5CIiIiIiIiar8lJX2lpKdLS0gAAH3/8MaZOnYqePXviuuuuw08//RTzAImIiIiIiKj5mpz0paamYseOHQiFQvj0009x7rnnAgDcbjeUSmXMAyQiIiIiIqLma/Lsnddeey0uv/xypKenQ5IkjBs3DgDw/fffo3fv3jEPkIiIiIiIiJqvyUnfwoUL0b9/fxw6dAhTp06FVqsFACiVStxzzz0xD5CIiIiIiIiar8mLs9fk9Xqh0+liGU/McWFKIiIiIups+AxMNTX5nb5QKISHH34YmZmZMBqN2L9/PwBgwYIF8lIORERERERE1D40Oel79NFHsWzZMjz++OPQaDRyef/+/fHKK6/ENDgiIiIiIiI6MU1O+l5//XW89NJLuPrqqyNm6xw4cCB27twZ0+CIiIiIiIjoxDQ56SssLET37t3rlIfDYQQCgZgERURERERERLHR5KSvb9++2LhxY53yd999F4MGDYpJUERERERERBQbTV6y4f7778fMmTNRWFiIcDiMlStXYteuXXj99dexZs2aloiRiIiIiIiImqnJPX2TJk3Chx9+iLVr18JgMOD+++/Hr7/+ig8//BDnnntuS8RIREREREREzdSknr5gMIjHHnsM1113HT7//POWiomIiIiIiIhipEk9fSqVCo8//jiCwWBLxUNEREREREQx1OThnWPHjsWGDRticvKvvvoKF110ETIyMiBJEt5///2IeiEE7r//fqSnpyMuLg7jxo3Dnj17YnJuIiIiIiKizqDJE7lMmDAB99xzD3766ScMHjwYBoMhov7iiy9udFsulwsDBw7EddddhylTptSpf/zxx/HMM8/gtddeQ15eHhYsWIDx48djx44d0Ol0TQ2diIiIiIio05GEEKIpBygU9XcOSpKEUCjUvEAkCatWrcLkyZMBVPXyZWRk4I477sCdd94JALDb7UhNTcWyZcswbdq0RrXrcDhgsVhgt9thNpubFRsRERER0cmEz8BUU5OHd4bD4Xp/mpvwRXPgwAEUFxdj3LhxcpnFYsEZZ5yBTZs2xew8REREREREHVmTh3e2luLiYgBAampqRHlqaqpcF43P54PP55O3HQ4HgKqewyZ2ahIRERERnZT43Es1tdukr7kWLVqEBx98sE653W7nzU9EREREnUJ1xwcR0I6TvrS0NABASUkJ0tPT5fKSkhKceuqp9R73l7/8Bbfffru87XA4kJ2dDYvFwvHMRERERNQpSJLU1iFQO9Juk768vDykpaXhiy++kJM8h8OB77//HjfddFO9x2m1Wmi12jrlkiTx5iciIiKiToHP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He0GfEufruvU1NT06mPk5+f3uzeR3STbweuvuUCyHar+mq2/5gLJdij6ay6QbIeqv2brr7lAsh2q3somLXxiNyn7hRBCCCGEEGIAk6JPCCGEEEIIIQYwKfoOg8fj4YYbbsDj8eQ6yl4k28Hrr7lAsh2q/pqtv+YCyXYo+msukGyHqr9m66+5QLIdqv6cTQwsA34iFyGEEEIIIYQ4mklLnxBCCCGEEEIMYFL0CSGEEEIIIcQAJkWfEEIIIYQQQgxgUvQdgrvvvpvx48dn11SZMmUKTz/9dK5j7eWWW25B0zTmz5+f6yj84Ac/QNO0Ll+jR4/Odays7du3c+mll1JSUoLP52PcuHG88cYbuY7FkCFD9vq9aZrGvHnzcprLtm2uv/56hg4dis/nY/jw4dx00030lyHCkUiE+fPnU1dXh8/n4+STT2blypV9nuNf//oXZ599NlVVVWiaxt///vcu+5VSfP/736eyshKfz8fpp5/O+vXr+0W2Rx55hDPOOIOSkhI0TWPVqlU5z2VZFtdccw3jxo3D7/dTVVXFl770JXbs2JHzbND5Pjd69Gj8fj9FRUWcfvrpvP766/0i256++tWvomkat99+e7/Idvnll+/1Hjdz5syc5wJYu3Yt55xzDgUFBfj9fk488US2bNmS82zdXRc0TeMnP/lJzrNFo1GuvPJKampq8Pl8jBkzhiVLlvR6rp5ka2pq4vLLL6eqqoq8vDxmzpzZJ++5ixYt4sQTTyQYDFJeXs55551HfX19l2OSySTz5s2jpKSEQCDA5z//eZqamno9mzh6SNF3CGpqarjlllt48803eeONNzj11FM599xzee+993IdLWvlypX86le/Yvz48bmOkjV27FgaGhqyX//+979zHQmA9vZ2pk6dimmaPP3007z//vvcdtttFBUV5ToaK1eu7PI7W7ZsGQAXXnhhTnMtXryYu+++mzvvvJO1a9eyePFibr31Vu64446c5trtK1/5CsuWLeOBBx7g3Xff5YwzzuD0009n+/btfZojFosxYcIE7rrrrm7333rrrfzyl79kyZIlvP766/j9fmbMmEEymcx5tlgsxrRp01i8eHGvZ+lprng8zltvvcX111/PW2+9xSOPPEJ9fT3nnHNOzrMBHHPMMdx55528++67/Pvf/2bIkCGcccYZ7Ny5M+fZdnv00Ud57bXXqKqq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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "summary, (fig, ax) = summarize_and_plot_tiles_from_df(\n", - " df_viewport_day,\n", - " title_lines=[\n", - " \"concept_id: C2036881735-POCLOUD\",\n", - " \"Viewport: 3x3 tiles -- daily\",\n", - " \"endpoint: https://staging.openveda.cloud/api/titiler-cmr\",\n", - " ],\n", - ")\n", - "\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "71b008e2", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA30AAAHqCAYAAACwdidrAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAslhJREFUeJzs3Xl0FFX6N/Bv9d5Jesm+J4RdFgERlEVlURFFQRRFBEFxxgUcFR11UAQVhXFGRf0pjPoOiII6oyCKO6ugqCOLsgiyhSUhCVm6O53eu+77R6RIkw4kobPy/ZyTc6x7q2491V3BenJv3SsJIQSIiIiIiIioVVI1dQBERERERETUcJj0ERERERERtWJM+oiIiIiIiFoxJn1EREREREStGJM+IiIiIiKiVoxJHxERERERUSvGpI+IiIiIiKgVY9JHRERERETUijHpIyIiIiIiasWY9LUSd999Nx599NEa6x944AFMmjSp8QIiIiIiIqJmgUlfMzZo0CDMmzevVvsuWLAAf//73yN6/o0bN2L48OGIjY2F1WpFjx498Pzzz8Pn8+H333/H9ddfj5SUFFitVgwYMADfffddyPG//fYbBgwYgKioKHTs2BGffPKJUnf06FH0798f8fHxsFgs6NmzJ5YvXx5yvM1mw5133omEhASYzWZceOGFcLlcSv2zzz6L7OxsmM1m9OrVC19//XXI8aer37FjB4YNG4aEhARIkgSbzRZy7PDhwxETE6P8GAwGqFQqFBcXAwAWLlyITp06wWKxICEhAaNHj8bhw4eV42fNmgWNRhPSxgcffFDjZ52bmwtJkpR909LScM8998Dtdiv7bN68GcOHD4fFYkFMTAwuueQSrFq1qk7fGwBIkoRt27aFjWPfvn0YM2YM4uLiEB0djd69e1eLu6b7smq7Va/fYrGgTZs2mDBhAn755ZcaPwMiIiIiahhM+iislStXYvjw4Rg2bBj27t0Lm82GDz74ALt27cKxY8dgs9kwfPhwbN++HSUlJZg0aRKuvvpqJSny+/249tprMXToUJSWluLFF1/EuHHjsG/fPgBAbGwsFi1ahOPHj8Nut+P111/H+PHjcfDgQQCALMsYMWIEtFotfv/9d9hsNrz55pvQarUAgI8//hj//Oc/sXLlStjtdkybNg3XX389SktLa1Wv1Wpx0003YdGiRWGv/4svvoDT6VR+/vSnP+Hyyy9HQkICAGDIkCH47rvvYLfbcfToUbRr1w533HFHSBsjRowIaePmm28+4+d+9OhROJ1OfP/991i3bh1mz54NAPj5559x2WWX4ZJLLkFubi4KCgowceJEjBo1KiSZPtP3djqHDh3CxRdfjNTUVPz2228oKSnB448/jnvuuQevvfbaGWM/1Ynrt9vt2LRpEzp27IiLL74Y69atq3NbRERERHQWxDnCbreLKVOmiKysLGEymcSFF14oDh8+LIQQoqCgQIwZM0YkJCSIzMxMMX36dOH3+4UQQqxdu1ZYLBbx5ptvioyMDBEXFyf++te/hrT99ddfi759+wqLxSJSUlLEc889p9R98803ok+fPsJisYguXbqIFStWKHUTJ04Ut99+uxg5cqSIjo4W3bt3Fxs2bBBCCDFt2jShUqmETqcT0dHR4qqrrjrt9U2cOFHcf//9yvb69etFt27dRHR0tLj++uvFHXfcISZOnFirz0qWZZGTkyOeeeaZWu1/QmxsrFi9erUQQohVq1YJq9UqfD6fUn/11VeLJ598Muz5Nm3aJPR6vVizZo0QQoiVK1eKzMxM5Xs41QsvvCCuuOKKkDKtViv+97//1ar+hIMHDwoAoqysrMbrcrvdIjY2Vrz//vth610ul3jkkUdEVlaWUjZz5kwxcuTIGts8Vbg4HnroITFixAghhBCXXXaZmDx5crXjnn76aZGTkyNkWa719wZAbN26tVr5xIkTxdChQ6uVL168WJhMJuFwOJRYXnrppdO2W9P133XXXaJPnz6njY+IiIiIIuuc6embNGkS9u3bh02bNsFms+GNN96A0WgEAIwbNw5arRYHDx7Ehg0b8PHHH+P5559Xji0vL8euXbuwd+9ebNy4Ea+99prSW7F161aMHDkSjzzyCI4fP47du3dj8ODBAIBff/0VY8aMwdy5c1FaWop//etfmDBhAvbs2aO0vXTpUkyePBk2mw333nsvrrvuOthsNrzwwgu45JJL8Pe//x1OpxNffPFFra+1rKwM1113HaZOnQqbzYbbb78d7777bsg+I0aMwNy5c8Mev3fvXhw8eBC33HJLrc+5fft2lJeXo0uXLsq1d+3aVemZA4CePXvi119/DTnu/PPPh16vR79+/TBgwABccsklAID169ejffv2mDBhAuLj49G1a1e8/fbbynE333wz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8fEiIyNDPProo8qsk2dK+oQQ4vPPPxe9e/cWJpNJpKamirlz5yp1q1evFv379xexsbEiPj5eDB06VJnh8NTZO7t16ybWr1+vHPvDDz+Izp07C4vFIq655prTXt+ps3euXbtWdO3aVURHR4tRo0ZVm73zqquuEs8+++xp29ywYYMYNmyYsFgswmKxiO7du4vnn39eeL1esWjRIgFAREVFiejoaOXn3XffVY7fuXOn6N+/vzAYDKJ9+/bi448/Vuo+++wz0b17dxETEyOsVqvo27ev+PDDD0PO/+OPP4oLL7xQREVFiY4dO4rFixcrdT6fT0ybNk1kZGSImJgY0aFDB/HKK6/Uuv5EknXqz8GDB0NijI6OVmatrOovf/mLSEtLE1FRUSI1NVWMHTtW7N+/X6m/5ZZbRHx8vIiKihI5OTniscceEy6Xq8bPujaziP7000/iyiuvFCaTSURHR4sBAwaIr776qtp+p/vehBBhr/vEvbFnzx4xevRoYbVaRVRUlOjVq5dYsmRJtXO89957okePHsJsNouMjAxx5513ipKSEqV+5syZQq1Wi+joaGEymURWVpa49dZbw84aSkREREQNSxJCiCboYCRUzihqtVprvQA7ERERERFRXZ0T7/QRERERERGdq5j0tRCHDx8OmfGx6s+JGS+JiIiIiIhOxeGdRERERERErRh7+oiIiIiIiFoxJn1/uPvuu/Hoo482dRit0pIlS9C/f39lu02bNvj444+bLqBGtmjRIvTs2TNsXW5uLiRJgs1ma9SYiIiIiOjccU4kfVdffTWmTp1ardzhcCAqKgpr1qzBggUL8Pe//70JoqubWbNmYdSoUXU6ZsuWLejduzfi4uJgtVrRv39/fPvtt7U61uv1YtCgQUhKSoLZbEbnzp3xxhtv1Lj/unXrYLVaQ8puvfVWfP/993WKmYiIiIiIIuOcSPomT56MpUuXwuv1hpS/9957SE1NxeDBg5sosrrx+/31Oi47OxvLli1DSUkJysrK8PDDD+Oaa66B2+0+47EajQavvvoq8vPz4XA4sGzZMsyYMQMbNmyoVyxERERERNS4zomk77rrroNGo6k2pHDhwoW44447IEkSJk2ahAceeECp279/P6699lokJiYiOzsbs2fPhizLAIDzzjsPX375JQBg+/btkCQJCxYsAADY7XZotVoUFxcrQ/fe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Dh1CIBCo9XWvXLkSv/76KwKBAFwuF5577jkcPXpUSU43b96MZ555Bu+99x6WLl2KRYsW4auvvgIAbNu2Dd988w3cbjcCgQA+++wzLFmyBMOGDasxvvLychQVFdUqtrvuugsLFy7E2rVrEQwG4fV6sWnTJvz222/w+Xx45513UFZWBpVKpby3eGJSmUgYPHgwFi5ciI4dOyImJgaXXXYZVq9ejd9//135fFJSUjBq1ChMnToVxcXFAICCggIsX74cQO3uFwAYPnw4lixZghtvvBGrV6+uMaYTf5z44IMPcMcdd0TsWomIiIjo3HROJX0mkwk33XQTcnNzaxzaCQAxMTFYtWoVVq9ercy6OW7cuJDheoMHD4bD4VCGAF522WVwuVzVhnYCwMiRI9GzZ09069YNF110kdKT1r59eyxbtgwzZ85EXFwcnn76aSxfvhxt27atMbYxY8bAbDYjMTFRSYI2bNhw2pk8i4uLMWbMGFitVmRlZeGbb77BZ599hnbt2sHpdOKWW27Bs88+i+7duyMzMxNvvvkmJk6ciKKiIgQCAUyfPh3JycmIj4/H9OnT8eKLL2LcuHFhz9WpUydMnjwZXbp0gdVqDRlCGk6vXr3w3nvv4YknnkBiYiLS09MxY8YMZXmNpUuXKr2p9913H5YuXYr4+PjTtlkXgwYNQnl5ufK9WSwWdOzYEb1794bZbFb2W7RokTKs02w245JLLsHmzZsB1O5+OWHYsGF4//33cfPNN+Prr7+uMSa1Wo22bduiR48eEbtWIiIiIjo3SUII0dRBtFa5ubnIyclBWVlZrWbXJDphyJAhGD16tDJDKBERERFRfUVunBwRRcSmTZvw888/K8NHiYiIiIjOBpM+ombkqquuwg8//ICXX3652ruhRERERET1weGdRERERERErdg5NZELERERERHRuYZJXz2NGjUKs2bNikhbw4cPx+uvvx6RtsJZt24dJ5I5jSVLlqB///5NHUazt23bNkiS1CBtS5KEbdu2NUjb8+bNw6BBgxqk7cOHDyMmJgZ2u73Wxzz33HO45ZZbat3mpEmT8MADD5xtqERERHQOY9LXDHzxxRe49957a7XvokWL0LNnz4ieP1ybs2bNwqhRoyJ6nlPl5eUhISEBwWBQKevYsSO2bt162uMinSDceuut+P777yPWHjV/4e69+sjKyoLT6az2/uUVV1yB5cuXh/3dmj59Ot577z1l+9T7uaY2iYiIiOqLSR81mU8//RTDhw+HWq0GAOzevRsejwe9evVq4siotTv13oskh8OBn376CVdeeWXE264rv9/fqs9HREREtXPOJH1OpxNTp05FVlYWkpKScNtttynDp3JzcyFJEt555x20b98eVqsVkyZNCnmA+eijj9C+fXtYLBb86U9/QiAQUOpODJ989dVXkZqaipSUFMycORNV58h59913cd5558FqtWLgwIHYsmWLUjdo0CDMmzcvpK233noLmZmZiI+PxyOPPAIA2Lp1K+6++25s374dMTExiImJweHDh2v9GdS2zcWLF+O5557DypUrlTKgcpjZHXfcgVGjRiEmJgbnn39+yOLrS5YsQYcOHWAymZCeno5nnnnmtPF8+umnuO6660K2r732WgDAli1bcPHFF8NsNiMhIUEp79u3LwCgf//+iImJwXPPPQcAGD9+PNLS0mA2m9G7d2+sXbs25Fyvvvqqcu1PPPEEevbsiUWLFgGo3tPZpk0bPP/887j44othMplw2WWX4ciRI0r9zp07lbrBgwfjkUceOe3wwX379mHYsGGIi4tDu3btlO+66rmnT5+O+Ph4ZGVlVRvq+/777+P8889XFoev2is5aNAg/O1vf8OwYcNgMplwwQUXYPv27QCAl156SVl0/oQPPvgAnTt3rlXbNpsNN910E6xWKzp37oxvv/02pK13330X3bp1g8lkQlZWFmbMmIHTzQtVUFCA8ePHIzU1FVarFZdeeincbne1/YQQeOGFF9CuXTvExcXhqquuwoEDB5T6U3vGTh2+eer3k5+fX+0cVe+9M12HJEl4+eWX0alTJ1itVtx8883V/u2w2WzK/l999RUGDhyI33//Pezva9Ve9HD3c7g2q9q/fz+uvfZaJCYmIjs7G7Nnz4YsywBO3k8zZ85ESkoKxo4dG7aN9957Dz169IDZbEZ2drbyuzBr1iyMGDECd911FywWC3JycrBu3Tp8/PHHaN++PWJjY/H4448r7dT2fERERNTExDlizJgx4pZbbhFlZWXC6XSKsWPHivHjxwshhDh48KAAIG655RbhcDhEXl6eyMjIEAsXLhRCCLFnzx6h0+nEJ598Ivx+v5g/f75Qq9Vi5syZQggh1q5dK1QqlZg0aZKoqKgQv/32m8jIyBCLFi0S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Kfvzn//c4Od95513cMcdd0AIgZ49e+KTTz4JmVGzLg4cOICxY8eirKwMGRkZmDt3Lq688soIR0yRFu7ei6SbbrqpwdomIiIiOhsc3klERERERNSKcXgnERERERFRK8akj4iIiIiIqBVj0kdERERERNSKMekjIiIiIiJqxZj0ERERERERtWJM+oiIiIiIiFoxJn1EREREREStGJM+IiIiIiKiVoxJHxERERERUSvGpI+IiIiIiKgVY9JHRERERETUijHpIyIiIiIiasU0TR1AQ5NlGfn5+TCZTJAkqanDISIiIiJqcEIIlJeXIy0tDSoV+3nOda0+6cvPz0dmZmZTh0FERERE1OiOHDmCjIyMpg6DmlirT/pMJhOAyhvebDY3cTRERERERA3P4XAgMzNTeRamc1urT/pODOk0m81M+oiIiIjonMLXmwjgRC5EREREREStGpM+IiIiIiKiVoxJHxERERERUSvGpI+IiIiIiKgVY9JHRERERETUijHpIyIiIiIiasWaNOmbM2cO+vTpA5PJhKSkJIwaNQp79uwJ2WfQoEGQJCnk5+67726iiImIiIiIiFqWJk361q9fjylTpuCHH37AN998A7/fjyuvvBIVFRUh+/3pT3/CsWPHlJ/nn3++iSImIiIiIiJqWZp0cfYvv/wyZHvRokVISkrC5s2bcemllyrlUVFRSElJaezwiIiIiIiIWrwmTfpOZbfbAQBxcXEh5UuWLMG7776LlJQUXHvttZgxYwaioqLCtuH1euH1epVth8MBABBCQAgRsViDskBemRvHnR5IkoRUiwEpZgMkSYrYOYiIiIiI6iOSz73U8jWbpE+WZTzwwAMYMGAAunXrppSPGzcO2dnZSEtLw6+//opHH30Ue/bswbJly8K2M2fOHDz11FPVyu12e8Rufq8/iF+O2uD2BZWyowWANUqHbukWqFVM/IiIiIio6Zzo+GiOgrLATwdLUVTuQZLJgL45cQ36/DxnzhwsW7YMu3fvhtFoRP/+/fH3v/8dnTp1UvbxeDx46KGH8P7778Pr9WLYsGF4/fXXkZycrOxz+PBh3HPPPVi7di1iYmIwceJEzJkzBxrN6VOqlStX4h//+Ae2bNmCYDCIrl27YsqUKZg0aZKyT25uLnJycrB161b07NkTAFBeXo7rrrsOhYWF+Prrr5GRkVHvz6DZJH1TpkzB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Tk4O9u/fj+nTp2P48OHYtGkT1OrwMyrOmTMHTz31VLVyu93Om5+IiIiIzgknOj6IgHrM3hkbGwuXy4VAIICoqChotaGLapeWltYvEEnC8uXLMWrUqBr3OXDgANq1a4dVq1Zh6NChYfcJ19OXmZkJm83GmYuIiIiI6JzgcDhgtVo5eycBqEdP37x58xogjNpp27YtEhISsG/fvhqTPr1eH3aylxOzfxIRERERtXZ87qWq6jV7Z1M5evQoSkpKkJqa2mQxEBERERERtSS1SvocDofSLXym8cF16T52Op3Yt2+fsn3w4EFs27YNcXFxiIuLw1NPPYUbbrgBKSkp2L9/Px555BG0b98ew4YNq/U5iIiIiIiIzmW1eqdPrVbj2LFjSEpKgkqlCttdLISAJEkIBoO1Pvm6deswePDgauUTJ07E/PnzMWrUKGzduhU2mw1paWm48sor8cwzzyA5ObnW53A4HLBYLBzPTERERETnDD4DU1W16ulbs2YN4uLiAABr166N2MkHDRp02hk1v/rqq4idi4iIiIiI6FxUq6TvsssuU/47JycHmZmZ1Xr7hBA4cuRIZKMjIiIiIiKis6Kq6wE5OTk4fvx4tfLS0lLk5OREJCgiIiIiIiKKjDonfSfe3TuV0+mEwWCISFBEREREREQUGbVesmHatGkAKtf8mDFjBqKiopS6YDCIH3/8ET179ox4gERERERERFR/tU76tm7dCqCyp2/79u3Q6XRKnU6nQ48ePfDwww9HPkIiIiIiIiKqt1onfSdm7bz99tvx8ssvc+pXIiIiIiKiFqDWSd8JCxcubIg4iIiIiIiIqAHUeSIXIiIiIiIiajmY9BEREREREbViTPqIiIiIiIhaMSZ9RERERERErVi9kr533nkHAwYMQFpaGg4dOgQAmDdvHlasWBHR4IiIiIiIiOjs1Dnpmz9/PqZNm4arr74aNpsNwWAQAGC1WjFv3rxIx0dERERERERnoc5J36uvvoo333wTjz/+ONRqtVJ+4YUXYvv27RENjoiIiIiIiM5OnZO+gwcPolevXtXK9Xo9KioqIhIUERERERERRUadk76cnBxs27atWvmXX36J8847LxIxERERERERUYRo6nrAtGnTMGXKFHg8Hggh8NNPP+G9997DnDlz8NZbbzVEjERERERERFRPdU767rzzThiNRjzxxBNwuVwY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6eKg1cY2caRERERE1Jw1/ZMtEdVIklQwGjNgNGaElGs0OU0UERERERG1NI230jQRERERERE1OiZ9RERERERErRiTPiIiIiIiolaMSR8REREREVErVq+kb//+/XjiiSdwyy23oKioCADwxRdfYOfOnRENjoiIiIiIiM5OnZO+9evXo3v37vjxxx+xbNkyOJ1OAMAvv/yCmTNnRjxAIiIiIiIiqr86J32PPfYYZs+ejW+++QY63cnFoIcMGYIffvghosERERERERHR2alz0rd9+3Zcf/311cqTkpJQXFwckaCIiIiIiIgoMuqc9FmtVhw7dqxa+datW5Genh6RoIiIiIiIiCgy6pz0jR07Fo8++igKCgogSRJkWcZ3332Hhx9+GLfddltDxEhERERERET1VOek77nnnkPnzp2RmZkJp9OJLl264NJLL0X//v3xxBNPNESMREREREREVE+SEELU58DDhw9jx44dcDqd6NWrFzp06BDp2CLC4XDAYrHAbrfDbDY3dThERERERA2Oz8BUlaa+B2ZlZSErKyuSsRAREREREVGE1SrpmzZtWq0bfPHFF+sdDBEREREREUVWrZK+rVu31qoxSZLOKhgiIiIiIiKKrFolfWvXrm3oOIiIiIiIiKgB1Hn2TiIiIiIiImo5atXTN3r0aCxatAhmsxmjR48+7b7Lli2LSGBERERERER09mqV9FksFuV9PYvF0qABERERERERUeTUep2+p59+Gg8//DCioqIaOqaI4holRERERHSu4TMwVVXrd/qeeuopOJ3OhoyFiIiIiIiIIqzWSV8tOwSJiIiIiIioGanT7J1ch4+IiIiIiKhlqdVELid07NjxjIlfaWnpWQVEREREREREkVOnpO+pp57i7J1EREREREQtSJ2SvrFjxyIpKamhYiEiIiIiIqIIq/U7fXyfj4iIiIiIqOXh7J1EREREREStWK2Hd8qy3JBxEBERERERUQOo05INRERERERE1LIw6SMiIiIiImrFmPQRERERERG1Ykz6iIiIiIiIWjEmfURERERERK0Ykz4iipgKbwAV3kBTh0FEREREVdR6yQYioprk29zYU1AOh8cPADAbtOicakKqxdjEkRERERERe/qI6Kzk29z4X26pkvABgMPjx08HS3HM7m7CyIiIiIgIYNJHRGdpT0F5jXW7j9VcR0RERESNg0kf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hBBCCCGEGMSk6BNCCCGEEEKIQUyKPiGEEEIIIYQYxKToE0IIIYQQQohBTIo+IYQQQgghhBjEpOgTQgghhBBCiEFMij4hhBBCCCGEGMSk6BNCCCGEEEKIQUyKPiGEEDnxwAMPUFBQ0K/HfOWVV9A0jba2tn49rhBCCJFLUvQJIcQgsLuY2dvXySefnOuIQgghhMgRZ64DCCGE+PyOPfZY6uvrO21/+umn+e53v8v3v//9HKQSQgghxEAgLX1CCDEIuN1uysvLO3y1trbyox/9iGuvvZbzzz8/u+/SpUs56qij8Hg8VFRU8NOf/hTTNLO3p1IpfvjDH1JWVobX6+X4449n+fLl2dt3tyouWrSIyZMn4/P5OOWUU2hsbOT555/nkEMOIT8/n29961vE4/ED+j2eeuoppkyZgtfrZeTIkdxwww3ZbN/61reYMWNGh/0Nw6CkpIQHH3wQANu2mT9/PiNGjMDn8zFp0iT+8Y9/HPDzKYQQQgwmUvQJIcQg1NbWxllnncVJJ53EjTfemN1eW1vL1772NY488kjef/997r77bu69915+/etfZ/f58Y9/zD//+U/+8pe/sHLlSkaPHs20adNoaWnpcIxf/vKX3Hnnnbz55pts27aNCy64gNtvv51HH32U5557jhdffJE77rij25lfe+01vv3tb3PllVfy8ccf86c//YkHHniAm266CYCZM2fyzDPPEI1Gs/dZtGgR8Xicc845B4D58+fz4IMPsnDhQj766COuuuoqLrroIpYuXdqj51EIIYQYFJQQQohBxbIsdfrpp6tDDjlERSKRDrdde+21asyYMcq27ey2u+66S+Xl5SnLslQ0GlUul0s98sgj2dvT6bSqrKxUt9xyi1JKqSVLlihAvfTSS9l95s+frwC1YcOG7Lb//M//VNOmTdtrzvvvv1+FQqHsz6eeeqr6zW9+02Gfhx56SFVUVCillDIMQ5WUlKgHH3wwe/uFF16oZsyYoZRSKplMKr/fr958880OjzF79mx14YUXdsje2tq611xCCCHEYCNj+oQQYpC59tpreeutt1i2bBnBYLDDbWvWrOGYY45B07TstuOOO45oNMr27dtpa2vDMAyOO+647O0ul4ujjjqKNWvWdHisiRMnZr8fMmQIfr+fkSNHdti2bNmybud+//33eeONN7ItewCWZZFMJonH4/j9fi644AIeeeQRLr74YmKxGE899RSPPfYYAOvXrycej/PVr361w+Om02kmT57c7RxCCCHEYCNFnxBCDCKPPfYYv/vd73juuec46KCD+vRYLpcr+72maR1+3r3Ntu1uP140GuWGG27g3HPP7XSb1+sFMl08TzzxRBobG1m8eDE+n4/p06dn7w/w3HPPMXTo0A7393g83c4hhBBCDDZS9AkhxCCxatUqZs+ezc0338y0adO63OeQQw7hn//8J0qpbGvfG2+8QTAYpKqqiuLiYtxuN2+88QY1NTVAZrKU5cuXM3fu3D7NP2XKFNauXcvo0aP3us+xxx7LsGHD+Nvf/sbzzz/P+eefny02x40bh8fjYevWrZx44ol9mlUIIYT4IpGiTwghBoHm5mbOPvtsTjrpJC666CIaGho63O5wOCgtLeX73/8+t99+Oz/4wQ+44oorWLt2Lddffz1XX301uq4TCAT43ve+x7x58ygqKqK6uppbbrmFeDzO7Nmz+/R3+MUvfsF//Md/UF1dzTe+8Q10Xef999/nww8/7DDRzLe+9S0WLlzIp59+ypIlS7Lbg8EgP/rRj7jqqquwbZvjjz+ecDjMG2+8QX5+PrNmzerT/EIIIcRAJUWfEEIMAs899xxbtmxhy5YtVFRUdLq9pqaGzZs3M3ToUP73f/+XefPmMWnSJIqKipg9ezY///nPs/vefPPN2LbNxRdfTHt7O0cccQSLFi2isLCwT3+HadOm8eyzz/KrX/2KBQsW4HK5GDt2LJdffnmH/WbOnMlNN91ETU1Nh7GHADfeeCOlpaXMnz+fjRs3UlBQwJQpU7j22mv7NLsQQggxkGlKKZXrEEIIIYQQQggh+oas0yeEEEIIIYQQg5gUfUIIIYQQQggxiEnRJ4QQQgghhBCDmBR9QgghhBBCCDGISdEnhBBCCCGEEIOYFH1CCCGEEEIIMYhJ0SeEEEIIIYQQg5gUfUIIIYQQQggxiEnRJ4QQQgghhBCDmBR9QgghhBBCCDGISdEnhBBCCCGEEIOYFH1CCCGEEEIIMYj9fyFmySBmEWkHAAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "summary, (fig, ax) = summarize_and_plot_tiles_from_df(\n", - " df_viewport_week,\n", - " title_lines=[\n", - " \"concept_id: C2036881735-POCLOUD\",\n", - " \"Viewport: 3x3 tiles -- weekly\",\n", - " \"endpoint: https://staging.openveda.cloud/api/titiler-cmr\",\n", - " ],\n", - ")\n", - "\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "63dc2a66-c5df-4017-84d8-fb26e78e6a72", - "metadata": {}, - "source": [ - "## Benchmarking using custom bounds\n", - "\n", - "In this part, we are going to measure response latency across the tiles at different zoom levels using `benchmark_viewport` function. \n", - "This function simulates the load of a typical viewport render in a slippy map, where multiple adjacent tiles must be fetched in parallel to draw a single view.\n", - "\n", - "Under the hood, `benchmark_viewport` computes the center tile for each zoom level, selects its neighboring tiles to approximate a viewport, and requests them concurrently from the TiTiler-CMR endpoint. This function returns a pandas DataFrame containing the response times for each tile request." - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "1b29b1e5-21f0-4732-9be7-3dd653e67478", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "=== TiTiler-CMR Tile Benchmark ===\n", - "Client: 2 physical / 4 logical cores | RAM: 30.89 GiB\n", - "Dataset: C2723754864-GES_DISC (xarray)\n", - "Query params: 8 parameters\n", - " concept_id: C2723754864-GES_DISC\n", - " backend: xarray\n", - " datetime: 2022-03-01T00:00:01Z/2022-03-01T23:59:59Z\n", - " variable: precipitation\n", - " step: P1D\n", - " temporal_mode: point\n", - " tile_format: png\n", - " tile_scale: 1\n", - "Total execution time: 1.291s\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
zoomxystatus_codeokno_datais_errorresponse_time_seccontent_typeresponse_size_bytesurlerror_texttotal_run_elapsed_s
072952200TrueFalseFalse0.968540image/png694https://staging.openveda.cloud/api/titiler-cmr...None1.290854
173052200TrueFalseFalse1.289355image/png694https://staging.openveda.cloud/api/titiler-cmr...None1.290854
273152200TrueFalseFalse1.278380image/png694https://staging.openveda.cloud/api/titiler-cmr...None1.290854
372953200TrueFalseFalse1.096978image/png694https://staging.openveda.cloud/api/titiler-cmr...None1.290854
473053200TrueFalseFalse0.897303image/png694https://staging.openveda.cloud/api/titiler-cmr...None1.290854
\n", - "
" - ], - "text/plain": [ - " zoom x y status_code ok no_data is_error response_time_sec \\\n", - "0 7 29 52 200 True False False 0.968540 \n", - "1 7 30 52 200 True False False 1.289355 \n", - "2 7 31 52 200 True False False 1.278380 \n", - "3 7 29 53 200 True False False 1.096978 \n", - "4 7 30 53 200 True False False 0.897303 \n", - "\n", - " content_type response_size_bytes \\\n", - "0 image/png 694 \n", - "1 image/png 694 \n", - "2 image/png 694 \n", - "3 image/png 694 \n", - "4 image/png 694 \n", - "\n", - " url error_text \\\n", - "0 https://staging.openveda.cloud/api/titiler-cmr... None \n", - "1 https://staging.openveda.cloud/api/titiler-cmr... None \n", - "2 https://staging.openveda.cloud/api/titiler-cmr... None \n", - "3 https://staging.openveda.cloud/api/titiler-cmr... None \n", - "4 https://staging.openveda.cloud/api/titiler-cmr... None \n", - "\n", - " total_run_elapsed_s \n", - "0 1.290854 \n", - "1 1.290854 \n", - "2 1.290854 \n", - "3 1.290854 \n", - "4 1.290854 " - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df_viewport = await benchmark_viewport(\n", - " endpoint=endpoint,\n", - " dataset=ds_xarray,\n", - " lng=-95.0,\n", - " lat=29.0,\n", - " viewport_width=3,\n", - " viewport_height=3,\n", - " min_zoom=7,\n", - " max_zoom=8,\n", - " timeout_s=60.0,\n", - ")\n", - "\n", - "df_viewport.head()" - ] - }, - { - "cell_type": "markdown", - "id": "f00faea6", - "metadata": {}, - "source": [ - "#### Band Combinations\n", - "\n", - "In Rasterio backend, you can specify multiple bands to be rendered in a single tile request. This is useful for visualizing different aspects of the data, such as true color composites or vegetation indices.\n", - "\n", - "More bands typically mean larger payloads and potentially higher latency, especially if the bands are stored in separate files. " - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "15892fb3", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "=== TiTiler-CMR Tile Benchmark ===\n", - "Client: 2 physical / 4 logical cores | RAM: 30.89 GiB\n", - "Dataset: C2723754864-GES_DISC (rasterio)\n", - "Query params: 7 parameters\n", - " concept_id: C2723754864-GES_DISC\n", - " backend: rasterio\n", - " datetime: 2023-01-01T00:00:00Z/2023-01-07T23:59:59Z\n", - " bands: B04\n", - " bands_regex: B[0-9][0-9]\n", - " tile_format: png\n", - " tile_scale: 1\n", - "=== TiTiler-CMR Tile Benchmark ===\n", - "Client: 2 physical / 4 logical cores | RAM: 30.89 GiB\n", - "Dataset: C2723754864-GES_DISC (rasterio)\n", - "Query params: 8 parameters\n", - " concept_id: C2723754864-GES_DISC\n", - " backend: rasterio\n", - " datetime: 2023-01-01T00:00:00Z/2023-01-07T23:59:59Z\n", - " bands: B04\n", - " bands: B03\n", - " bands_regex: B[0-9][0-9]\n", - " tile_format: png\n", - " tile_scale: 1\n", - "=== TiTiler-CMR Tile Benchmark ===\n", - "Client: 2 physical / 4 logical cores | RAM: 30.89 GiB\n", - "Dataset: C2723754864-GES_DISC (rasterio)\n", - "Query params: 9 parameters\n", - " concept_id: C2723754864-GES_DISC\n", - " backend: rasterio\n", - " datetime: 2023-01-01T00:00:00Z/2023-01-07T23:59:59Z\n", - " bands: B04\n", - " bands: B03\n", - " bands: B02\n", - " bands_regex: B[0-9][0-9]\n", - " tile_format: png\n", - " tile_scale: 1\n", - "Total execution time: 11.284s\n", - "Total execution time: 11.279s\n", - "Total execution time: 11.539s\n" - ] - } - ], - "source": [ - "# Configure zooms and interval\n", - "min_zoom = 5\n", - "max_zoom = 15\n", - "zoom_levels = list(range(min_zoom, max_zoom + 1))\n", - "\n", - "start = \"2023-01-01T00:00:00Z\"\n", - "end = \"2023-01-07T23:59:59Z\"\n", - "\n", - "# Band sets to compare\n", - "asset_sets = {\n", - " \"1 band\": [\"B04\"],\n", - " \"2 bands\": [\"B04\", \"B03\"],\n", - " \"3 bands\": [\"B04\", \"B03\", \"B02\"],\n", - "}\n", - "\n", - "tasks = []\n", - "labels = []\n", - "\n", - "for label, assets in asset_sets.items():\n", - " ds = DatasetParams(\n", - " concept_id=concept_id,\n", - " backend=\"rasterio\",\n", - " datetime_range=f\"{start}/{end}\",\n", - " bands=assets,\n", - " bands_regex=\"B[0-9][0-9]\",\n", - " )\n", - "\n", - " tasks.append(\n", - " benchmark_viewport(\n", - " endpoint=endpoint,\n", - " dataset=ds,\n", - " lng=lng,\n", - " lat=lat,\n", - " min_zoom=min_zoom,\n", - " max_zoom=max_zoom,\n", - " viewport_width=7,\n", - " viewport_height=7,\n", - " timeout_s=timeout_s,\n", - " )\n", - " )\n", - " labels.append(label)\n", - "\n", - "dfs = await asyncio.gather(*tasks)" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "492c0c0e-564b-4bea-8848-88264539d1d8", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
1 band2 bands3 bands
zoom
50.4106600.4266140.461730
60.4154970.3972730.393417
70.4336710.4212290.440330
80.4312950.4796850.436232
90.4740890.4600100.411149
100.4284830.4183770.415656
110.4376700.4139920.417438
120.4159650.4097470.438415
130.4297430.4400410.403096
140.4393260.4466050.435765
150.4363660.4488230.397425
\n", - "
" - ], - "text/plain": [ - " 1 band 2 bands 3 bands\n", - "zoom \n", - "5 0.410660 0.426614 0.461730\n", - "6 0.415497 0.397273 0.393417\n", - "7 0.433671 0.421229 0.440330\n", - "8 0.431295 0.479685 0.436232\n", - "9 0.474089 0.460010 0.411149\n", - "10 0.428483 0.418377 0.415656\n", - "11 0.437670 0.413992 0.417438\n", - "12 0.415965 0.409747 0.438415\n", - "13 0.429743 0.440041 0.403096\n", - "14 0.439326 0.446605 0.435765\n", - "15 0.436366 0.448823 0.397425" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "median_by_zoom = []\n", - "for df in dfs:\n", - " # New schema: 'zoom' and 'response_time_sec'\n", - " s = df.groupby(\"zoom\")[\"response_time_sec\"].median().reindex(zoom_levels)\n", - " median_by_zoom.append(s)\n", - "\n", - "panel_df = pd.concat(median_by_zoom, axis=1)\n", - "panel_df.columns = labels\n", - "panel_df" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "01357d6d-5831-4928-a096-703bcec6f37c", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAk4AAAHqCAYAAADyPMGQAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAA69JJREFUeJzsnXd4VGXah++ZSe+9kUYLIQRCR7ogCqKoKGLFBnY+d2FFcXV1UXcV10VZdWVFsa6igrrYUEGQIj20QAgtnfTey8x8f5xMS51JpibvfV1cvHPmnDNPJpMzz3nK75Gp1Wo1AoFAIBAIBIIukdvaAIFAIBAIBAJHQThOAoFAIBAIBEYiHCeBQCAQCAQCIxGOk0AgEAgEAoGRCMdJIBAIBAKBwEiE4yQQCAQCgUBgJMJxEggEAoFAIDAS4TgJBAKBQCAQGImTrQ2wR1QqFZcuXcLb2xuZTGZrcwQCgUAgEFgQtVpNVVUVERERyOWdx5SE49QOly5dIioqytZmCAQCgUAgsCLZ2dlERkZ2uo9wnNrB29sbkN5AHx8fs55bpVJRVlaGv79/l16tveGotgu7rY+j2i7stj6Oaruw2/pY0vbKykqioqK03/+dIRyndtCk53x8fCziODU3N+Pj4+OQH1pHtF3YbX0c1XZht/VxVNuF3dbHGrYbU57jWO+aQCAQCAQCgQ0RjpNAIBAIBAKBkQjHSSAQCAQCgcBIhOMkEAgEAoFAYCTCcRIIBAKBQCAwEuE4CQQCgUAgEBiJcJwEAoFAIBAIjEQ4TgKBQCAQCARGIhwngUAgEAgEAiMRjpNAIBAIBAKBkdjccXrrrbeIjY3Fzc2NCRMmcPDgQaOO27hxIzKZjBtuuMFge3V1NUuXLiUyMhJ3d3cSEhJYt26dBSwXCAQCgaDv8de//pWRI0fa5LX37t2LQqGgvLzcJq8PNnacPv/8c5YvX85zzz1HcnIySUlJzJ49m8LCwk6Py8jI4PHHH2fq1Kltnlu+fDlbt27lk08+ITU1lT/+8Y8sXbqULVu2WOrHEAjMj0oJGXtwObsFMvZIjwUCQa9HqVKz70IJ/zuWy74LJShVaou+3q5du5g3bx4RERHIZDK++eYbi75eb8CmjtOaNWu4//77uffee7WRIQ8PDzZs2NDhMUqlkjvuuINVq1YxYMCANs///vvv3H333Vx++eXExsbywAMPkJSUZHQkSyCwOae3wOuJyD+ah8/Py5B/NA9eT5S2CwSCXsvWlDymrP6V29bv5w8bj3Hb+v1MWf0rW1PyLPaaNTU1JCUl8dZbb1nsNXobNnOcGhsbOXLkCLNmzdIZI5cza9Ys9u3b1+Fxzz//PCEhISxevLjd5ydNmsSWLVvIzc1FrVazY8cOzp49y1VXXWX2n0EgMDunt8AXd0HlJcPtlXnSduE8CQS9kq0peTz8STJ5FfUG2/Mr6nn4k2SLOU9XX301L774IvPnzzf52P/85z9ERUXh4eHBwoULqaio0D536NAhrrzySoKCgvD19WX69OkkJycbHC+TyXj33XeZP38+Hh4eDB48uE126IcffiAuLg53d3euuOIKsrKyuveDmhEnW71wcXExSqWS0NBQg+2hoaGcOXOm3WP27NnDe++9x7Fjxzo87xtvvMEDDzxAZGQkTk5OyOVy1q9fz7Rp0zo8pqGhgYaGBu3jyspKAFQqFSqVyoSfqmtUKhVqtdrs57UGjmq7w9itUiLb+iSgRtbmSbW0detK1HFXg1xhfftMwGHe81YIu62Po9puTruVKjV/3XKa9pJyakAGrPr2NFfEh6CQt706mEJXdhvzvadWqzl//jxffPEF//vf/6isrOT+++/n4Ycf5pNPPgGgoqKCRYsWsXbtWtRqNWvWrGHu3LmkpaXh7e2tPdeqVat4+eWXWb16NW+++SZ33HEH6enpBAQEkJ2dzY033sgjjzzC/fffz6FDh3j88ceNttMUTDmXzRwnU6mqqmLRokWsX7+eoKCgDvd744032L9/P1u2bCEmJoZdu3bx6KOPEhERYRDd0uell15i1apVbbaXlZXR3Nxstp8BpF9OVVUVarUaudzmtfkm4ai2O4rdzjn78W0dadJDhhoqc6lM+YmmyMusaJnpOMp73hpht/VxVNuNsXvRxymU1DR2ea7GZhXl9R3XMaqBvIp6xr34Cy5OXb9HgZ4ufLwosVt2V1dXU1pa2un56+rqqK+v5/XXXyc8PByAF198kdtvv52nn36a0NBQRo4caVBA/tJLL/HFF1/w/fffG2SAFi5cyOzZswH405/+xBtvvMH27du54ooreO2114iNjeXPf/4zAHPmzGHv3r288847lJWVmdVxqqqqMnpfmzlOQUFBKBQKCgoKDLYXFBQQFhbWZv8LFy6QkZHBvHnztNs0b5qTkxNpaWlERETw5z//ma+//pprrrkGgBEjRnDs2DFeffXVDh2np556iuXLl2sfV1ZWEhUVhb+/Pz4+Pj3+WfVRqVTIZDL8/f0d6iIBjmu7w9h9qdao3bzltRAQYGFjeobDvOetEHZbH0e13Ri7y+qaKaxuMttrSs5V140icrmcgA6uEV3Z7eXl1eGxGtzd3YmOjmbYsGHabVdddRUqlYrCwkKGDh1KQUEBf/nLX/jtt98oLCxEqVRSW1tLWVmZwfnHjx+vfRwQEICPjw91dXUEBASQkZHBxIkTtc+rVComT57MO++8g7+/P35+fl2+F8bi5GS8O2Qzx8nFxYUxY8awfft2raSASqVi+/btLF26tM3+8fHxnDx50mDbM888Q1VVFWvXriUqKor6+nqamprafBgUCkWnnqmrqyuurq5ttsvlcov8IctkMoud29I4qu0OYbd3uFG7yb3DwZ5/jhYc4j1vB2G39XFU27uyO9jbDdpJvLemoVlJWW3XDpa/hzOuTl2n6YO9XTt9Lzuz25jfg0wm0+6rf5z+8ffeey8lJSWsXbuWmJgYXF1dmThxYpvvaFdXQ1v1zy2TybS2tve8OT8vppzLpqm65cuXc/fddzN27FjGjx/P66+/Tk1NDffeey8Ad911F/369eOll17Czc2NxETD0KPG29Rsd3FxYfr06axYsQJ3d3diYmL47bff+Oijj1izZo1VfzaBwGRiJoFPhFQI3m61g0x6PmaStS0TCATd4Nv/m2LUfkqVmimrfyW/or6jv3zCfN3Y8+TMHtc4mYusrCwuXbpEREQEAPv370culzNkyBBA0lv697//zdy5cwHIzs6muLjYpNcYOnRom2Lxw4cPm8H6nmFT9/6WW27h1Vdf5dlnn2XkyJEcO3aMrVu3agvGs7KyyMszrZNg48aNjBs3jjvuuIOEhARefvll/va3v/HQQw9Z4kcQCMyHXAFzVneygxrmvGz3heECgcA0FHIZz81LANrGpzSPn5uXYBGnqbq6mmPHjmmbrtLT0zl27FiX3Wtubm7cfffdHD9+nN27d/PYY4+xcOFCbanN4MGD+fjjj0lNTeXAgQPccccduLu7m2TbQw89xLlz51ixYgVpaWl8+umnbNy4sVs/pzmxeXH40qVL203NAezcubPTYz/44IM228LCwnj//ffNYJlAYAMSroOFH8Gme0HVqjHByR1ijbuDFQgEjsWcxHDevnM0q749bSBJEObrxnPzEpiTaFwq31QOHz7MjBkztI819b533313u9+xGgYNGsSNN97I3LlzKS0t5dprr+Xf//639vn33nuPBx54gNGjRxMVFcXf//53bUecsURHR7N582aWLVvGG2+8wfjx43n66af5wx/+YNoPaWZkarXasrKkDkhlZSW+vr5UVFRYpDi8tLSUgIAAh8vnO6rtDmd3Ux38LRxQo/SORB42DNm5n6TnJv8BrnzepuYZg8O95y0Iu62Po9puKbuVKjUH00sprKonxNuN8f0DzBppctT3Gyxruynf+471rgkEfYGiNDQ1Tk39xqOe+yooWpoXDrzTUgMlEAh6Iwq5jIkDA7l+ZD8mDgy0m5omgQ7hOAkE9kbBKe1SGTgEfCNh3BJpQ3Md7H7VRoYJBAKBQDhOAoG9UXhau2wOlDpUmLocXLyk9ZEPoDTd+nYJBAKBQDhOAoHdoRdx0jpOnkFw2SPSWtUMv3XWfScQCAQCSyEcJ4HA3miJOKndA1B7BOu2T1oKbn7S+vhGKEy1vm0CgUDQxxGOk0BgT9SUQHXLGKKQBJDpFYa6+cKUZS0P1PDri1Y3TyAQCPo6wnESCOyJQl2ajtBhbZ8f/wB4tcxyPPMd5B6xjl0CgUAgAITjJBDYFwW6wnB1SELb5108YPoK3ePtL1jBKIFAIBBoEI6TQGBPFKTo1u05TgCj7gK/GGl9cQek77K8XQKBQNDCPffcww033GCT1/7ss88ICAiwyWtrEI6TQGBP6EkREBLf/j5OLjDjz7rH218AMQBAIBB0g5deeolx48bh7e1NSEgIN9xwA2lpabY2y64RjpNAYC+oVFB4Rlr7x+p0m9pj+M0Q3OJY5RyEsz9Z3DyBQGAFVEpI3w0nN0n/q5QWfbnffvuNRx99lP379/PLL7/Q1NTEVVddRU1NjUVf15ERjpNAYC+UZ0BTy8UqpJ3CcH3kCpj5jO7xry9IjpdAIHBcTm+B1xPhw2th82Lp/9cTpe0WYuvWrdxzzz0MGzaMpKQkPvjgA7KysjhypOvGk1WrVhEcHIyPjw8PPfQQjY2NBuedMmUKfn5+BAYGcu2113LhwgXt8xkZGchkMr766itmzJiBh4cHSUlJ7Nu3z+A1PvjgA6Kjo/Hw8ODGG2+krKzM4Pnjx48zY8YMvL298fHxYcyYMRw+fLiH70rnCMdJILAX9ArD2+2oa038tRAxuuXYFDj1lWXsEggEluf0FvjiLqi8ZLi9Mk/abkHnSZ+KigqALuuItm/fTmpqKjt37uSzzz7jq6++YtWqVdrna2pqWL58OYcPH2b79u3I5XLmz5+PqtUN3tNPP83jjz/OsWPHiIuL47bbbqO5uRmAAwcOsHjxYpYuXcqxY8eYMWMGa9asMTj+jjvuIDIykkOHDnHkyBFWrlyJs7OzOd6KDnGy6NkFAoHx6Nc3hXZQGK6PTAZXPAsf3yA93vE3SLgeFJa9aAgEAjOjUsLWJ9EM9zZEDchg60qIv0aKNlvKDJWKP/7xj0yePJnExMRO93VxcWHDhg14eHgwbNgwnn/+eVasWMELL7yAXC7npptuMth/w4YNBAcHc/r0aYNzP/7441xzzTWAFMEaNmwY58+fJz4+nrVr1zJnzhyeeOIJAAYNGsTOnTvZsWOH9visrCxWrFhBfLxUujB48GCzvBedIRwngcBeMOioMyLiBDDgcoidChm7ofQiHPsvjLnHEtYJBAJT+c90qC7ser/mBqgr6WQHNVTmwj8Gg5Nr1+fzCoEHfzPaTA2PPvooKSkp7Nmzp8t9k5KS8PDw0D6eOHEi1dXVZGdnExMTw7lz53j22Wc5cOAAxcXF2khTVlaWgeM0YsQI7To8PByAwsJC4uPjSU1NZf78+QavO3bsWAPHafny5SxZsoSPP/6YWbNmcfPNNzNw4ECTf3ZTEKk6gcBe0KTqFK4QMMC4YzRRJw07V0NTvfltMwGlSs3+iyVsTS1m/8USlCrR8Sfoo1QXQtWlrv916jTpUVdi3PmMcdZasXTpUr777jt27NhBZGSkyce3Zt68eZSWlrJ+/XoOHDjAgQMHAAzqoACDtJqsZVJC63ReZ/z1r3/l1KlTXHPNNfz6668kJCTw9ddf99j+zhARJ4HAHmiqg9KWwsngIaBwMr7YO2o8xF0NZ3+ULpqH34OJj1rO1k7YmpLHqm9Pk1ehcd4uEO7rxnPzEpiTGG4TmwQCm+EVYtx+XUacWnAPND7iZCRqtZr/+7//4+uvv2bnzp3079/fqOOOHz9OXV0d7u7uAOzfvx8vLy+ioqIoKSkhLS2N9evXM3XqVACjolitGTp0qNbh0tBe0XpcXBxxcXEsW7aM2267jffff79NpMqcCMdJILAHitJA3eIoGVMY3pqZz0iOE8Duf8Lou8DV23z2GcHWlDwe/iS5TZVGfkU9D3+SzNt3jhbOk6BvYWy6TKWUuucq82i/zkkGPhHwx5Nmr3F69NFH+fTTT/nf//6Ht7c3+fn5APj6+mqdovZobGxk8eLFPPPMM2RkZPDcc8+xdOlS5HI5/v7+BAYG8s477xAeHk5WVhYrV6402bbHHnuMyZMn8+qrr3L99dezdetWfv31V+3zdXV1rFixggULFtC/f39ycnI4dOhQm/oqcyNSdQKBPWAgfGlEYXhrwhIhcYG0ri2B/W+bxy4jUarUrPr2dIelrQCrvj0t0nYCQXvIFTBndcsDWasnWx7PedkiheFvv/02FRUVXH755YSHh2v/ff75550ed8UVVzB48GCmTZvGLbfcwnXXXcdf//pXAORyORs3buTIkSMkJiaybNky/vGPf5hs22WXXcb69etZu3YtSUlJ/Pzzzyxfvlz7vEKhoKSkhLvuuou4uDgWLlzI1VdfbdDdZwlkarWQHG5NZWUlvr6+VFRU4OPjY9Zzq1QqSktLCQgIQC53LL/VUW13CLt/ehr2vSmt7/wKBl1hut0lF+DNcaBWgqsP/OE4eFhnNMG+CyXctn5/l/t9dv9lTBwYaAWLuodDfFbawVHtBse13SJ2n94iddfpSxL49JOcpoTrzPISjvp+g2VtN+V7X6TqBAJ7oNBEDaf2CBwIoxfBkQ+goRL2vAZXWWcIcGGVcQXpxu4nEPRJEq6TJAcyf4fqAvAKhZhJFpUgEJiOY7mbAkFvpeCU9L97gHSx7C7TnpC68gAOvtNSM2F5QrzdzLqfQNBnkSug/1QYvkD6XzhNdodwnAQCW1NTIt1dghRtkrWucTAB334w/n5p3VwPu0yvK+gO4/sHEO7bsVMkA8J93Rjf37ZTzQUCgaCnCMdJILA1had06+4UhrdmyjLdgODkD6E0vefn7AKFXMZz89q3XeMGPjcvAYW8B06hQCAQ2AHCcRIIbE2BiaNWusIzSKfjpGqGnS/3/JxGcMXQUFyc2l5SAr1chBSBQCDoNQjHSSCwNfoRp9DO50MZzcRHwd1fWp/4HApTzXPeTjh1qZLGZkmLSqF3ZVk6c5BwmgQCQa9BOE4Cga3RjzgFx5vnnG6+UsoOADX8+qJ5ztsJB9N1ysc3jdaNbDiaVW7x1xYIBAJrIRwngcCWqFS6aJB/LLh6me/c4x8A75ZIz5nvIKftqAJzcjC9TLu+67IYXFvSdkcyyzo6RCAQCBwO4TgJBLakPAOaaqR1SDf1mzrC2R2mrdA9/vV5855fD5VKzaGMUgD8PZyJD/NmWJgnADlldRRWCv0mgUDQOxCOk0BgS8xdGN6aUYukSBbAxZ1w0cjZWSZytrCKiromAMbFBiCXyxgRoYueJWeJqJNA0Fu45557uOGGG2zy2p999hkBAbaVNRGOk0BgS3o6o64rnFzg8j/rHv/6AlhgytKh9FLtWqPVNKKfbsiwSNcJBPbJ22+/zYgRI/Dx8cHHx4eJEyfy448/2tosu0Y4TgKBLSnQ76gzc6pOw/AFEDxUWuccgrNbzf4SB9pznMJ1ESfhOAkExqFUKTmUf4gfLv7AofxDKFVKi75eZGQkL7/8MkeOHOHw4cPMnDmT66+/nlOnTnV9cB9FOE4CgS3RRJwUrhAw0DKvIVfAzGd0j7e/IBWlmwm1Ws3BFsfJ00VBQrg0INPPw5n+QVKdU0puJfVNlv0CEAgcnW2Z25i9eTb3/XQfT+5+kvt+uo/Zm2ezLXObxV5z3rx5zJ07l8GDBxMXF8ff/vY3vLy82L+/66Hdq1atIjg4GB8fHx566CEaGxu1z23dupUpU6bg5+dHYGAg1157LRcuXNA+n5GRgUwm46uvvmLGjBl4eHiQlJTEvn37DF7jgw8+IDo6Gg8PD2688UbKygxvwo4fP86MGTPw9vbGx8eHMWPGcPjw4R6+K50jHCeBwFY01UPJeWkdPAQUFpy5HX8NRIyW1oWnIGWz2U6dVVpLYVUDAKNj/HHSE3EaHe0HQKNSxalLFWZ7TYGgt7EtcxvLdy6noLbAYHthbSHLdy63qPOkQalUsnHjRmpqapg4cWKn+27fvp3U1FR27tzJZ599xldffcWqVau0z9fU1LB8+XIOHz7M9u3bkcvlzJ8/H1Wrm7ann36axx9/nGPHjhEXF8dtt91Gc3MzAAcOHGDx4sUsXbqUY8eOMWPGDNasWWNw/B133EFkZCSHDh3iyJEjrFy5EmdnZzO9I+1jwSu1QCDolKIzoG65iFgqTadBJoMrnoWPb5Ae7/gbDLsBFD2/wOin6Sa0mkU3Jsafzcm5gJSuGxMjZtUJBK1RqpS8fPBl1LStP1SjRoaM1QdXMyNqBgoLDP09efIkEydOpL6+Hi8vL77++msSEjqvuXRxcWHDhg14eHgwbNgwnn/+eVasWMELL7yAXC7npptuMth/w4YNBAcHc/r0aRITdUK/jz/+ONdccw0gRbCGDRvG+fPniY+PZ+3atcyZM4cnnngCgEGDBrFz50527NihPT4rK4sVK1YQHy9p4A0ePNgs70lnCMdJILAVli4Mb83AGdB/GqTvgrJ0OPoJjL23x6c9aFDfFGjw3KgoP+1a1DkJ+hq3fHcLxXXFXe7XqGykvKG8w+fVqMmvzefyLy7HReHS5fmC3IP4/NrPjbZzyJAhHDt2jIqKCjZt2sTdd9/Nb7/91qnzlJSUhIeHh/bxxIkTqa6uJjs7m5iYGM6dO8ezzz7LgQMHKC4u1kaasrKyDBynESNGaNfh4ZLuXGFhIfHx8aSmpjJ//nyD1x07dqyB47R8+XKWLFnCxx9/zKxZs7j55psZONBCZQ8tCMdJILAVBoXhVnCcAGY+C+/Nkta/vQJJt0p6Tz1A4zi5KOSMiPQ1eG5wiBferk5UNTRzJLMctVqNTCYG/Qr6BsV1xRTWFprtfJ05Vz3BxcWFQYMGATBmzBgOHTrE2rVr+c9//tPtc86bN4+YmBjWr19PREQEKpWKxMREgzoowCCtprk2tE7ndcZf//pXbr/9dr7//nt+/PFHnnvuOTZu3NjG4TInwnESCGyFQcTJwqk6DVHjYMhcSPsBqi7Bofdg0tJuny6/op6s0loARkb54eZsmEaQy2WMivFn19kiiqsbyCmrIyrAo71TCQS9jiD3IKP26yripMHP1c/oiFNPUKlUNDQ0dLrP8ePHqaurw91duvHav38/Xl5eREVFUVJSQlpaGuvXr2fq1KkA7Nmzx2Q7hg4dyoEDBwy2HTnSdgJCXFwccXFxLFu2jNtuu433339fOE4CQa9EI37pHgDeYdZ73RlPQ9qPgBp2/xNG3wVuPt061cGMtjIErRkTLTlOIKXrhOMk6CsYmy5TqpTM3jybwtrCduucZMgI9Qhl601bzV7j9NRTT3H11VcTHR1NVVUVn376KTt37uSnn37q9LjGxkYWL17MM888Q0ZGBs899xxLly5FLpfj7+9PYGAg77zzDuHh4WRlZbFy5UqTbXvssceYPHkyr776Ktdffz1bt27l119/1T5fV1fHihUrWLBgAf379ycnJ4dDhw61qa8yN6KrTiCwBTUlUJ0vrUOHScXb1iIsUdJ2Aqgrhf1vd/tU+oN9x3XkOMX4a9eizkkgaItCrmDleMmxkGF4LdA8fnL8kxYpDC8sLOSuu+5iyJAhXHHFFRw6dIiffvqJK6+8stPjrrjiCgYPHsy0adO45ZZbuO666/jrX/8KgFwuZ+PGjRw5coTExESWLVvGP/7xD5Ntu+yyy1i/fj1r164lKSmJn3/+meXLl2ufVygUlJSUcNdddxEXF8fChQu5+uqrDbr7LIFMrbaAjLCDU1lZia+vLxUVFfj4dO9OvCNUKhWlpaUEBAQglzuW3+qottul3em74MN50nr8gzD3lTa7WNTukgvw5jhQK8HFG/54AjxM73ib/dou0gqqkMvgxF9n4+Xq1Mb2mkYlSat+RqWGhHAffvjDVPP+LGbELj8rRuCodoPj2m4Ju7dlbuPlgy8bSBKEeYTx5PgnmRUzyyyv4ajvN1jWdlO+90WqTiCwBZaeUdcVgQNh9CI48gE0VsGeNXDViyadoqymkbSCKgAS+/lqnabWeLs5MyTMh9S8Ss7kV1Ld0NzhvgJBX2ZWzCxmRM0guTCZotoigj2CGR0y2iKRJkH3cSx3UyDoLRTqddRZqzC8NdOflBTLAQ6uh8pLJh1+SK++aVxs59GqMTF+AKjUcDy73KTXEQj6Egq5gnFh45g7YC7jwsYJp8kOEY6TQGAL9CNOIfG2scEnAsbfL62b62GXaTUIh4woDNcwOlrUOQkEgt6BcJwEAmujUkFhqrT2iwFXb9vZMmU5uLQM403+CEovGn2ovvBl1xEn4TgJBILegXCcBAJrU54JTTXSOjSx830tjWcgTGzRcVI1w86XjTqspqGZlEuVAMSFehHg2bm2THSAB0Fe0j5Hs8pQqURPikAgcEyE4yQQWJtCGxeGt2bio+DeEhE68YVhGrEDkrPKULY4P11Fm0BSBNak6yrrm7lQVN19ewUCgcCGCMdJILA2+qNWrDGjrivcfKSUHQBqaQBwFxjOpzNOxkCk6wQCQW9AOE4CgbUxmFFno4661oy/H7ylAZuc+Q5yDne6+wHhOAkEgj6KcJwEAmujSdUpXCHAslO8jcbZHaY/oXu8/fkOd21oVnKsRVIgKsCdcF/jhgQn9vPFWSGpIB/JEo6TQCBwTITjJBBYk6Z6SbUbIDgOFHYkBDlqEfjHSuv03+DiznZ3O5FTQWOzNL18fGyg0ad3c1aQ2M8XgItFNZTWNHZxhEAgENgfwnESCKxJcZo05gRsJ3zZEQpnaQCwhu0vQDsTmfTrmyYYmabToK/ndFREnQQCgQMiHCeBwJoYjFqxM8cJIPEmXcF67mFI+7HNLgb6TSY6Tvp1TsnCcRIIBA6IcJwEAmtSkKJb24MUQWvkCpj5jO7xry9Igp0tNCtV2sLuYG9XYgM9TDq9KBAXCASOjnCcBAJroq/hZG+pOg1D5kK/MdK68DSkbNY+lZpXRXVDMyB108lkMpNOHerjRj8/qZj8eHYFTUpVF0cIBAKBfSEcJ4HAmmhSde7+4B1mW1s6QiaDK57VPd7xN1A2AXBQfz6dEcKX7aGJOtU1KTmTV9V9OwUCgcAGCMdJILAWtaVQnS+tQ4ZJDoq9MuBy6D9dWpelw9GPATiYXqLdxVj9ptYYputKO9lTIBAI7A/hOAkE1sJA+NIO65taox91+u0V1I21HMqQ6pJ83JwYEtq94cQGjlNWeU8sFAgEAqsjHCeBwFoU2nlHXWsix8KQa6R1VR4lO/+t1V4aFxuAXN69iFl8mDfuzgoAkkWBuEAgcDCE4yQQWAuDGXUO4DgBzHwakBwkr0Nv4EUt0P00HYCTQk5SlCSEmVteR35FfY/NFAgEAmshHCeBwFoYOE7xtrPDFEKHwfCbAXBrKmexQtJ16onjBELPSSAQOC7CcRIIrIFKBYWp0tovBly7Vx9kEy5fiVoujYZZ4vQD4c412tEp3UXoOQkEAkdFOE4CgTUoz4SmGmntCPVN+gQOpCbhNgC8ZXU847sVZ0XPLh2jooTjJBAIHBPhOAkE1sBA+NIBOupa8VvYvdSrnQGYXfMtVOT26Hz+ni4MDPYE4NSlCuqblD22USAQCKyBcJwEAmtgMKPO8Ryn3QXOfKi8CgAndSPs+kePz6lJ1zUp1ZzMrejx+QQCgcAaCMdJILAGhfoaTom2s6ObHEwvZV3zPKrV0rgUjn4MJRd6dE5R5yQQCBwR4TgJBNZA01GncIWAgba1xUQKq+q5WFxDGT5853WTtFHVDDtf7tF5heMkEAgcEeE4CQSWpqleF50JjgOFk23tMZHDGTqn5lL8veDeIkVw8ktDiQUTGRDkhY+b9F4kZ5ahVqt7ZKdAIBBYA+E4CQSWpjgN1C3Fz44ifKnHwXTdPLlRg6Nh6vKWR2r49W/dPq9cLmN0S9SppKaRrNLanpgpEAgEVkE4TgKBpXHwwvADLY6TTAZjYv1h3BLwDpeeTPsecg53+9xjokW6TiAQOBbCcbIiSpWSQ/mH2J67nUP5h1CqRAt2n6DQAUettFBR18SZ/EoAhob54OPmDM7uMP0J3U7bV3X7/KLOSSAQOBqOVWzhwGzL3MbLB1+moLZAuy3UI5SV41cyK2aWDS0TWJwCBxvuq8eRzFI0pUcGY1ZGLYK9/4KydEjfBRd3woDLTT5/UpQfchmo1MJxEggEjoGIOFmBbZnbWL5zuYHTBFBYW8jyncvZlrnNRpYJrIJG/NLdH7zDbGuLiRzQq2+aoO84KZxhxtO6x9ufh24Ud3u6OjE03AeAtIIqquqbum2rQCAQWAPhOFkYpUrJywdfRk3bLxXNttUHV4u0XW+lthSq8qR1yDCpUMiB0C8MHxvbarBv4k261GPuEUj7oVuvoUnXqdVwLLu8W+cQCAQCayEcJwuTXJjcJtKkjxo1+bX5JBcmW9EqgdXQb9d3sMLwukYlJ3MkRe8BwZ4Ee7sa7iCXw8xndI9/fRG6cQMwWhSICwQCB0I4ThamqLbIrPsJHAwHnlF3NKuMZpUUFTVI0+kz5GroN1ZaF56GlM0mv45+gXhyVrnJxwsEAoE1EY6ThQn2CDbrfgIHwyDi5FiF4fr1TeNap+k0yGRwxbO6xzv+BkrT6pQi/d210ayjmWWoVEIIUyAQ2C/CcbIwo0NGE+oRioz2a1tkyAjzCGN0yGgrWyawCgYRp6G2s6MbHMrQOU7jO4o4AQyYDv2nS+uyDEj+yKTXkclkWj2nqoZmzhVWm2qqQCAQWA2bO05vvfUWsbGxuLm5MWHCBA4ePGjUcRs3bkQmk3HDDTe0eS41NZXrrrsOX19fPD09GTduHFlZWWa23DgUcgUrx68E6NB5enL8kyjkCmuaJbAGKhUUpkprvxhw9batPSbQ2KwiOUuqN+rn506kv0fnB1zxnG69czWc347L2S2Qsceouieh5yQQCBwFmzpOn3/+OcuXL+e5554jOTmZpKQkZs+eTWFhYafHZWRk8PjjjzN16tQ2z124cIEpU6YQHx/Pzp07OXHiBH/5y19wc3Oz1I/RJbNiZrHm8jWEeIQYbPd39WfN5WuEjlNvpTwTGluiJw6WpjuZW0F9kwqAcbH+XewNRI6B+GuldU0B8k8X4PPzMuQfzYPXE+H0lk4PHy0cJ4FA4CDY1HFas2YN999/P/feey8JCQmsW7cODw8PNmzY0OExSqWSO+64g1WrVjFgwIA2zz/99NPMnTuXV155hVGjRjFw4ECuu+46QkJC2jmb9ZgVM4ufbvqJu4ferd32wIgHhNPUm3HgwnDDNF2gcQfFTG5/e2UefHFXp85TYj8fXBTS5UgT6RIIBAJ7xGaOU2NjI0eOHGHWLJ3jIJfLmTVrFvv27evwuOeff56QkBAWL17c5jmVSsX3339PXFwcs2fPJiQkhAkTJvDNN99Y4kcwGYVcweVRl2sfZ1XZJn0osBIOPKNOX7+p0/omDSol7Hujgydbir23ruwwbefqpGB4pC8A6cU1lFQ3mGKuQCAQWA2bjVwpLi5GqVQSGhpqsD00NJQzZ860e8yePXt47733OHbsWLvPFxYWUl1dzcsvv8yLL77I6tWr2bp1KzfeeCM7duxg+vTp7R7X0NBAQ4PuQl1ZKc3mUqlUqFSqbvx0HRPtHa1dZ1RkmP38lkSlUqFWqx3KZrCd3bKCU9qqNlXwUKnmyQRsZbdSpdZGnAI9Xegf6N61DRl7kVde6mQHNVTmosrYC7FT2t1jVJSfNk13JLOUWUND293PkojPuPVxVNuF3dbHkrabck6HmVVXVVXFokWLWL9+PUFBQe3uo/nBr7/+epYtWwbAyJEj+f3331m3bl2HjtNLL73EqlVtB5WWlZXR3Nxspp9AQq1U46HwoFZZy8Xyi5SWlnZ9kJ2gUqmoqqpCrVYjl9u8r8BobGW3X95JnAC13IVS/MHE37Wt7D5bWENVvfS5HxHhSVlZ16kzl/zz+Bhx7ur88zT6tB99iwvQXY5+T8tjdKizUfaaE/EZtz6Oaruw2/pY0vaqqiqj97WZ4xQUFIRCoaCgwFBVu6CggLCwtvO8Lly4QEZGBvPmzdNu0zhKTk5OpKWlERUVhZOTEwkJhhfmoUOHsmfPng5teeqpp1i+fLn2cWVlJVFRUfj7++PjY8zXgfGoVCqivaI5U3GGwrpCPHw8cHOyXeG6KahUKmQyGf7+/g71B2cTu5sbkJWnS+uQIQQEmx49sdX7nXamUrueEhdGQIARqbqwQUad2ytsEHRwvmkJHrDlHACnC+uNe10zIz7j1sdRbRd2Wx9L2u7kZLw7ZDPHycXFhTFjxrB9+3atpIBKpWL79u0sXbq0zf7x8fGcPHnSYNszzzxDVVUVa9euJSoqChcXF8aNG0daWprBfmfPniUmJqZDW1xdXXF1dW2zXS6XW+SDFeUVxZmKM6hRk1OTQ5x/nNlfw1LIZDKLvS+WxOp2l5wDtVTPIwsZhqybr2uL9/uQXlfbhAGBxr127GTwiZAKwduZywgy8IlAHjtZGtXSDmF+HkQFuJNdWsfxnAqUanBWWP9zJj7j1sdRbRd2Wx9L2W7K+Wyaqlu+fDl33303Y8eOZfz48bz++uvU1NRw7733AnDXXXfRr18/XnrpJdzc3EhMTDQ43s/PD8Bg+4oVK7jllluYNm0aM2bMYOvWrXz77bfs3LnTWj9Wl0R5RmnXGRUZDuU4CYzEQWfUqdVqDqZLjpO3qxNDw42MuMoVMGe11D2HDEPnqaXSa87L0n6dMCban+zSOhqaVZy+VElSlJ+pP4JAIBBYFJu6m7fccguvvvoqzz77LCNHjuTYsWNs3bpVWzCelZVFXl6eSeecP38+69at45VXXmH48OG8++67bN68mSlT2i9ItQVRXnqOU2WG7QwRWI5CPccpxHE0nNKLayhu6WgbE+uPQt6+aGu7JFwHCz8Cn3DD7Z5B0vaE67o8hRDCFAgE9o7Ni8OXLl3abmoO6DJK9MEHH7S7/b777uO+++7roWWWQz/ilFmZaUNLBBbDQaUITJYhaE3CdRB/DapfnkOukScY/4BRThO0EsLMKuM++ptug0AgEFgQx0tw9gL6efbTrjMqMmxniMByaMQv3fzAO7zTXe2Jg/rClx0N9u0KuQLG3KN7nNWxLltrhoR64+kipfOSRcRJIBDYIcJxsgFuCjfCPaUv0/TKdNRqMQ2+V1FbClUtKebQYSAzId1lYzQRJ1cnuVaQslv490fp2dJJmHUAlE1GHeakkGvrmvIq6rlUXtd9GwQCgcACCMfJRsR4S11+VY1VlDWIO+tehf6oFQeaUXepvI6cMslRGRXth6tTDwZPy2Q09ZsgrZtq4NIxow/Vr3MS41cEAoG9IRwnGxHjq5NHEOm6XoZ+R50Dzag7ZI40nR5NEeN1DzJ2G32cGPgrEAjsGeE42YhYn1jtWhSI9zIMpAgcJ+J0wKAw3MjBvp3Q1O8y3YPMvUYfNzpKL+IkHCeBQGBnCMfJRsT46CJO6ZXpNrREYHb0U3UhQ21nh4lo6puc5DJGx/j1+Hwqv1jUXpo6p/2gNG58ka+HM4NDvAA4damSusb2BwMLBAKBLRCOk43QjziJVF0vQqWCwlRp7RcNrt62tcdISqobOF9YDcCwfr54uJhBqUQmg5hJ0rqxGvKOG32ops6pWaXmRE55z20RCAQCMyEcJxsR7hmOi9wFEKm6XkVFluQkgEMJXx7K0Buz0h39pg5Qx+gJz2Z2PC+yNa31nAQCgcBeEI6TjZDL5ET7RAOQVZVFs8q4NIbAzilwzI46A+FLMxSGa4mZrFtnGO84GXTWiTongUBgRwjHyYb095VUkZtVzVyqvmRjawRmodAxZ9Tpd9SNjfXvZE8TCYoDz2BpnbUfVMbVKw0I8sTPwxmA5KxyoXUmEAjsBuE42RCDOicxs653UOB4M+qq6ps4dakCgPgwb/w8XMx3cplMF3VqqIT8E0YeJmN0tOTAldY0klFSaz6bBAKBoAcIx8mG6HfWiQLxXoImVadwgcCBtrXFSI5klqFqCeh0az5dV8Tq1Tl1M10n9JwEAoG9IBwnGxLrG6tdi4hTL6C5AUrOS+ugIaBwtq09RqKfphtnzvomDQaOkwl6TtHCcRIIBPaHcJxsiBDB7GUUpYG6pYbHgeqbDArDLRFxCo4HjxZBzazfja5zSoryRSGX5vyJAnGBQGAvCMfJhvi6+uLvKt1Vi1RdL8BA+NIxHKf6JiXHs6X6pthAD0J93Mz/Ivp6TvUVUJBi1GEeLk4khPsAcLawioo64wYFCwQCgSURjpON0aTrCusKqW0SBbAOjcGolUTb2WECx7PLaVSqAAul6TTETtWtTUjXaeqc1Go4ll1uZqMEAoHAdITjZGMMCsRFnZNjox9xcpBUncXTdBq6qeckBv4KBAJ7QzhONkaMXulFaCJObn7gHW5TU4zloF5h+AQzDPbtkJAEcG9xgrJ+l0bTGMHoaD/t+qhQEBcIBHaAcJxsjH5nnSgQd2BqS6EqT1qHDpPqeuycZqVKG8UJ9XElKsDdci8ml+uiTnVlhtG5Tujn506ojysAR7PKUaqEEKZAILAtwnGyMfoRp/TKdNsZIugZDlgYfupSJbWNUofb+P6ByCzt7HUjXSeTybR1TtUNzZwtqLKEZQKBQGA0wnGyMVHeUchl0q9BpOocmAJR39Qlsd0c+Cv0nAQCgR0hHCcb46JwoZ9XP0BK1YmZXA5KoeN11OnXN5l1sG9HhA4DN19pnbHX6DonMfBXIBDYE8JxsgM0nXW1zbUU1RXZ2BpBt9CPOIUMtZ0dRqJSqbWK4X4ezgwO8bL8i8oVenVOpVB0xqjDhkX44uIkXaqOiAJxgUBgY4TjZAeIzjoHR6XS1Tj5RYOrt23tMYJzhdWU10qCkuNiA5DLrVTMrl/nlGmcnpOLk5ykSClSlVlSS1FVgyUsEwgEAqMQjpMdYOA4CS0nx6MiCxqrpXXIMNvaYiQH00u0a6uk6TTE6heI7zb6MH09p2QRdRIIBDZEOE52gBj26+A4YmF4hs75sEphuIawEeAqjVEhY68kCW4E+gXiwnESCAS2RDhOdoAY9uvg6BeGO4AUgVqt1kacPFwUDIvwsd6LyxUQPVFa1xZLg5GNwMBxEgXiAoHAhgjHyQ4I8QjB3UkSHxQ1Tg6IQcTJ/lN1WaW1FFRKdUJjYvxxUlj5MtANWYJgb1diAj0AOJ5TQWOzcR15AoFAYG6E42QHyGQybdQptzqXJqWYAu9QaArDFS4QOMi2thiBgX6TNeubNBjUOZkw8Lcl6tTYrOLUpQpzWyUQCARGIRwnO0HjOCnVSrKrs21rjMB4mhug+Jy0DhoCCmfb2mMEVhe+bE1YEri0dB5m7DG+zkkM/BUIBHaAcJzshBjfGO1apOsciKI0UEtjSxynMFxynFwUcpKi/KxvgMIJoi+T1jWFUHLeqMPGiM46gUBgBwjHyU4QkgQOioPNqCuorCezpBaApChf3JwVtjGkG7IEcaHeeLk6AVLESajsCwQCWyAcJztBX5JAdNY5EAX6o1bsvzDc5mk6DbFTdWsj65wUchmjov0AKKhs4FJFvQUMEwgEgs4RjpOdEOMtUnUOiYNFnAwdp0DbGRKeBM6e0jrTeD2nUWLgr0AgsDHCcbITvFy8CHYPBkSqzqHQSBG4+YFPhE1NMQbNfDq5DEa3RG9sgsIZoidI66o8KL1o1GFi4K9AILA1wnGyIzTDfkvrS6loEO3Wdk9tKVRdktahw0BmpXlv3aS8tpEz+VWANDjX283GHYD6ek4Zxuk5jYzy077NIuIkEAhsgXCc7AhR5+RgOFia7pCtxqx0RIzpjpOvuzNxIZKUwem8Smobmy1hmUAgEHSIcJzsCDF6xcFwsBl1mjQdwDhbCF+2JmIUOEtq4KbUOWn0nJQqNcezRWRWIBBYF5Mcp9TUVJ577jlmzpzJwIEDCQ8PZ8SIEdx99918+umnNDQ0WMrOPoG+45RekW47QwTGYTCjzv476g6k6ztO/p3saSWcXCBqvLSuzIWyDKMOE3pOAoHAlhjlOCUnJzNr1ixGjRrFnj17mDBhAn/84x954YUXuPPOO1Gr1Tz99NNERESwevVq4UB1E/1UnSgQdwD0I04hQ21nhxHUNDSTkitFZwaHeBHo5Wpji1roRrpujFAQFwj6HiolZOzB5ewW6VqhUtrMFCdjdrrppptYsWIFmzZtws/Pr8P99u3bx9q1a/nnP//Jn//8Z3PZ2Gfo59UPJ5kTzepmkaqzd9RqKEyV1r7R4OZjW3u64GhWOUqVlAobZw/1TRoMBv7uhdGLuj4k0IMATxdKaxpJzpKEMGV2XpgvEAh6wOktsPVJ5JWX0F5pfSJgzmpIuM7q5hjlOJ09exZn5647cCZOnMjEiRNpahJDaruDk9yJSO9IMiozyKrMQqVWIZeJMjS7pDwLGqUONccQvizRrifYk+PUbzQ4uUFzvdERJ5lMxuhoP7alFlJe28TF4hoGBntZ2FCBQGATTm+BL+4CWtVAVuZJ2xd+ZHXnyahv5a6cpvLycpP2F3SMJl1Xr6wnvybftsYIOqbQsQrDDeub7MhxcnKFyHHSuiIbyoyLtIqBvwJBH0ClhK1P0sZpAt22rSutnrYzOZyxevVqPv/8c+3jhQsXEhgYSL9+/Th+/LhZjeuLiJl1DkJBim5t51IEDc1KjmWXAxDp706En7ttDWqN/viVTOPGr4yJFkKYAkGvpjIPdr8KlZc62UktNZZk/m41s6AbjtO6deuIiooC4JdffuGXX37hxx9/5Oqrr2bFihVmN7CvYeA4idEr9ouBFIF9p+pO5lTQ0KwC7ES/qTUGA3+NS9eNiPTDSS7VNYmIk0Dg4DTWSDMr966FzxfBmgRYEw87/m7c8dUFlrWvFUbVOOmTn5+vdZy+++47Fi5cyFVXXUVsbCwTJkwwu4F9DSGC6SBoUnVyZwgcZFtbukA/TWdX9U0a+o0FhSsoG4x2nNxdFAyL8OF4TgXnCqupqG3C10OUCAgEdo9KBcVpkHMYcg9DzhHpeqruQbrNK9R89hmByY6Tv78/2dnZREVFsXXrVl588UUA1Go1SqXt2gN7C5qxKyBSdXZLcwMUn5PWwUOkuWt2jN0JX7bG2U2qc8rcA+WZUJ4NflFdHjY6xp/jOZLEQnJ2GTOGhFjaUoFAYCrVhXpO0iHIPaprrOkIFy9JILffaEj+GOrKaL/OSSZ118VMsoTlHWKy43TjjTdy++23M3jwYEpKSrj66qsBOHr0KIMG2fedtyMQ6BaIt7M3VU1VIlVnrxSf1d0d2XmaTqlSc7hl1EqQlyv9gzxtbFEHxE6WHCeQ6pz8bu3ykDEx/ry/NwOAo5nCcRIIbE5THeQdN4wmVWR1foxMLtWJ9hsDkWOlCHTwEJArpOf7jW3pqpNh6Dy1SJDMeVm3r5Uw2XF67bXXiI2NJTs7m1deeQUvL6kNOC8vj0ceecTsBvY1ZDIZsb6xnCw+SV5NHvXN9bg5udnaLIE+BY4zoy41r5LqBmme24T+AfardxQ7BX5bLa0z9kBS147TaL0C8SNCQVwgsC4qFZScb3GQWhylglOg6mJ+pHcERI6RHKLIsRA+Elw7kRNJuE6SHNj6pGGhuE+E5DTZq46TPs7Ozjz++ONtti9btswsBgmkdN3J4pOoUZNVlUWcf5ytTRLoo99RZ+cRp4P2NmalIyLHgcIFlI1G1zlF+LkT7utGXkU9x7LKaVaqcFII3TOBoENUSsjYi0v+eQgbJEV6jY3W1BRD7hHJSco5BJeSob6LWZHOHi0pN71okm8/0+1OuA7ir0GVsZfq/PN4hQ1CbortZsYox2n//v1cdtllRp2wtraW9PR0hg2z7y8Ue6Z1Z51wnOyMQseJOOk7TuP7B9rQki5wdpcuqlm/Q1k6VOQadYEdHePP9yfyqGlUklZQxbAIXysYKxA4IKaobzc3QN4Jw2hSl7MkZRAcbxhNCh4KCpPjM+0jV0DsFBp9EiAgAOS2u0ky6idatGgRAwYMYMmSJcydOxdPz7Z1EqdPn+aTTz7h/fffZ/Xq1cJx6gGis87O0aTq3HylC4+dolartYXhPm5ODAnztrFFXRA7WXKcQKpzGrGwy0PGREuOE0h6TsJxEgjaoSv17atfka5nGkcp/ySoupgA4hnSEkUaI0WMI0bZ/egpc2GU43T69GnefvttnnnmGW6//Xbi4uKIiIjAzc2NsrIyzpw5Q3V1NfPnz+fnn39m+PDhlra7VyNEMO2YujKoasmzhwwDe60ZAi4U1VBS0wjA2NgAFHL7tRWAmMnAP6R1xh7jHKdWCuKLJsZaxjaBwFExRn37xy40GJ3cpFokraM0Fnyj7Pr6Z0mMcpycnZ157LHHeOyxxzh8+DB79uwhMzOTuro6kpKSWLZsGTNmzCAgwA5bnR2QaJ9o7Vp01tkZBY4zasUwTecAf5tR4yVdLFWT0QriCRE+uDnLqW9SiQJxgaA9Mn/vQn27HYLiWtJtLWm30GF2L7tiTUxOPo4dO5axY8dawhZBC+5O7oR5hpFfk096ZbqY/m5PFDqOYrj+YF+HcJxcPCXdluwDUrdOVT54h3V6iLNCzohIPw6ml5JdWkdhVT0h3qILVSDQYqyqdsINMOZuiBgN7n6WtMjhES0odoomXVfVWEVZg7iTthsKTunWIfbtOB1q0W9yc5aT6Ci1P7FTdGsju+v003XJmeVmNkggcGDUaig6Y9y+45bAwJnCaTIC4TjZKfp1TqJA3I4wcJyG2s6OLsgpqyW3vA6Q9I5cnBzkTz1Gb26dkek6fT2nZJGuEwgkyrPh04Ww6x9d7CgDn35WV992ZBzkatr30O+sE3VOdoJaDYWp0to32q47SByuvklD1ASQtWizGBlxGh3tp12Lgb+CPo9KCfvfhrcmwLmfWz3ZuuTDdurbjoxwnOwU/YhTemW67QwR6CjP0s1YsvPCcP35dOPtcT5dR7h6SXVOII22qS7s8pBAvVEyJ3MqaGgWMzMFfZT8FHjvSti6EppqpG1eYXDLJ7DwY/AJN9zfJ0JS5baB+rYj0yNlqvr6etzcRCGmJTDQcqoQqTq7wIGELw+0RJyc5DJGRduxYnh7xEyWlIlBijol3tjlIaOj/UkvrqFRqSIlt9Kg7kkg6PU01cFvr8Dv/zIceTL2Ppj1V0mjCexKfduRMTnipFKpeOGFF+jXrx9eXl5cvHgRgL/85S+89957ZjewrxLmEYaL3AUQWk52g359kx131BVVNXCxSLrbHBHpi7uLg10YY6fq1kbWORkWiIt0naAPkb4L3p4Ee9bonKagOLh3K1z7ms5pAp36dtx1UiOGcJq6hcmO04svvsgHH3zAK6+8gouLi3Z7YmIi7777rlmN68so5AqtnlNWVRbNXQ1OFFgeB5Ei0E/TjXOk+iYN0fp1TqY7TqLOSdAnqC2F/z0KH86DUimAgdwZpq+Eh/ZAzETb2teLMdlx+uijj3jnnXe44447UCh03mpSUhJnzhjZ9igwiv6+/QFoVjWTV51nY2sE2oiT3BkCB9nWlk7QLwyf4IiOk6s3hCdJ66JUabhoFwwO8cLbVao8OJJVhlrdnkqyQNALUKshZTO8NR6OfqLbHjVBcphmPAVOrrazrw9gsuOUm5vLoEFtvzRUKhVNTV3MthGYRIxPjHYtCsRtTHMDFJ+T1sFD7FpFV+M4yWQwJsYBHScw1HMyIl0nl8sY1RJ1KqpqIKeszlKWCQS2ozwbPr0FNt0HNUXSNhdvuOafUmouJN629vURTHacEhIS2L17d5vtmzZtYtSoUWYxSiBhMLNOSBLYluKzoG7p1rLjwvCKuiZS8ysBGBrmg6+7/Tp4ndINIUx9WQKh5yToVaiUsH8d/PsyOPeTbnv8tbD0oCReKRdN8tbC5K66Z599lrvvvpvc3FxUKhVfffUVaWlpfPTRR3z33XeWsLHPoh9xEiKYNsZBZtQlZ5ahyVI5lH5Ta6IvA5kc1Kpu1zldP7KfpawTCKxHwSnY8hjkHtZt8wqDuf8QMgI2wmQX9frrr+fbb79l27ZteHp68uyzz5Kamsq3337LlVdeaQkb+yyaGicQnXU2p9AxRq0ccFThy9a4+ULYCGldeEoqhO2CkVF+2mHtokBc4PA01cP25+E/0wydpjH3wqMHhNNkQ7ql4zR16lR++eUXc9siaIWvqy/+rv6UNZQJx8nWFDhGR53+YN9xjiR82R6xUyDvmLTO3AtD53W6u7ebM0NCvTmTX0VqXiU1Dc14uvZIqk4gsA3pu+HbP0DpBd22oDiYt1aMRrEDepQUra6uprKy0uCfwLxo0nWFtYXUNtXa2Jo+jEaKwM1XUtu1Q+oalZzMrQBgQJAnwd4O3lljUOdkWrpOpYbj2eUWMEogsCB1ZfC/pfDhtTqnSe4M059skRgQTpM9YLLjlJ6ezjXXXIOnpye+vr74+/vj7++Pn58f/v5CrdfcGMysE1En21BXBpW50jpkGNp8kJ1xNLuMJqVU4OTQaToN0RPRztIyskBc6DkJHBK1GlK+gjfHw9GPddujJsBDu2HGn4XEgB1hchz7zjvvRK1Ws2HDBkJDQ5HZ6ZdIb0G/sy6zMpOEQPstTO61OEhhuMMO9u0Idz8IGw75J6AgRXJg3Tu/OTNQEBeddQJHoCIHvv8TnN2q2+biDbOeg7GLRbecHWKy43T8+HGOHDnCkCFDLGGPoBVCksAOcJAZdQaK4Y5e36QhdorkOKGGzH0QP7fT3aMDPAjycqG4upHkrHJUKjVyubi5E9ghKiUcelcqAG+s1m0fco3UMecrukLtFZNd2XHjxpGdnW0JWwTtoJ+qEyKYNsIBZtQ1Nqu0qakIXzci/d1tbJGZiJmsWxuRrpPJdEONK+qauFhc3cURAoENKDgF710FPz6hc5q8QmHhR3Drf4XTZOeYHHF69913eeihh8jNzSUxMRFnZ0OBvREjRpjNOAFEeUchl8lRqVVCy8lWGESchtrOjk5IuVRBfZMKkNJ0vSaFHjMJqc5JDZnG1zn9croAkOqcBoV4W84+gcAUmuph1z9g7+u6gbwAY+6BWauk9LTA7jHZcSoqKuLChQvce++92m0ymQy1Wo1MJkOpVJrVwL6Oi8KFCM8IcqpzyKjI0L7PAiuhVutqnHyjDSeN2xGH0h18sG9HeARIUb6CFMg7AXXlXX65tC4Qv2VctGVtFAiMIWOPJDFQcl63LXCwJDEQO7nj4wR2h8mO03333ceoUaP47LPPRHG4lYj1jSWnOofa5lqK6ooI8QixtUl9h/IsaKyS1g5SGO6Qg307I2ay5Dihhqz9MGROp7sP7+eLs0JGk1ItOusEtqeuDH55FpI/0m2TO8OUZTD1T+DsZjvbBN3CZMcpMzOTLVu2tDvoV2AZYn1i2ZMrpSkyKzOF42RNHKAwXKVSawvDAzxdGBjsZWOLzEzsFDj4H2mduadLx8nNWcGwCF+OZZdzoaiGsppG/D1drGCoQKCHWg2nv4EfnoCaQt32yPFw3b/sNu0v6BqTi8NnzpzJ8ePHLWGLoAP0O+vSK0SBuCkoVUoO5R9ie+52DuUfQqkyMZXsAIXhaQVVVNZL9RLjYv17XxTYxAJxMEzXHc0WUSeBlanIgc9uhS/v0TlNLt4w91W47yfhNDk4Jkec5s2bx7Jlyzh58iTDhw9vUxx+3XVifo650e+sEwXixrMtcxsvH3yZgtoC7bZQj1BWjl/JrJhZxp3EASJOhvpNgTa0xEJ4BkrvfeFpyDsO9ZXg5tPpIWNi/Hlvj3STkZxZzsz4UGtYKujrCImBPoHJEaeHHnqInJwcnn/+eW6++WZuuOEG7b/58+d3y4i33nqL2NhY3NzcmDBhAgcPHjTquI0bNyKTybjhhhs6tVcmk/H66693yzZ7QDN2BYR6uLFsy9zG8p3LDZwmkEbXLN+5nG2Z24w7kaYwXO4MQYPNbKV56NX1TRo0USe1Sqpz6gKhIC6wKColZOzB5ewWKQqqUkrXig2zhcRAH8DkiJNKpTKrAZ9//jnLly9n3bp1TJgwgddff53Zs2eTlpZGSEjHtTwZGRk8/vjjTJ06tcN9vv76a/bv309EhH3OFjOWUI9Q3J3cqWuuEyKYRqBUKXn54MuoUbd5To0aGTJWH1zNjKgZKOSKjk/U3Agl56R18BBQOHe8r41Qq9UcbKlv8nJ1Ymh455EYhyV2MhxaL60z90DcVZ3uHurjRj8/d3LL6ziWXU6zUoWTQigwC8zA6S2w9UnklZfQ/rW5eEFTreTYaxASA70Wm19J1qxZw/3338+9995LQkIC69atw8PDgw0bNnR4jFKp5I477mDVqlUMGDCg3X1yc3P5v//7P/773/+2SSc6GjKZTFvnlFudS5OyybYG2TnJhcltIk36qFGTX5tPcmFy5ycqPqvTWrHTNF1GSS1FVQ2AFGVR9FaV7BjTB/6Obok61TUpOZNfZQmrBH2N01vgi7ug8pLh9sZqndMUOAju+UGSGRBOU6/EqIjTv/71Lx544AHc3Nz417/+1em+jz32mNEv3tjYyJEjR3jqqae02+RyObNmzWLfvn0dHvf8888TEhLC4sWL2b17d5vnVSoVixYtYsWKFQwbZp8FvaYS4xNDamkqSrWS7OpsBvi27zAKoKi2yKj98mvyO9/BoDDcPh2ng+kl2nWvmE/XEV7BEDQEitPg0lFoqALXzoUtx0T78e1x6QvuSGYZif3sU4NL4CColLD1SWgnkq3F1Rse2AWunlYzyxSUKjUHLpZwMa+EAeFqJgwI6r03WxbEKMfptdde44477sDNzY3XXnutw/1kMplJjlNxcTFKpZLQUMPCzdDQUM6cOdPuMXv27OG9997j2LFjHZ539erVODk5GW1LQ0MDDQ0N2seVlZWA5ICZOzWpUqlQq9Umn1e/zim9PJ1Y71iz2mUM3bXd2gS6GVcg/fLBl7lYfpH5g+YT6R3Z5nlZQQqaS4oqeChY+ec25v3Wr28aG+NnN78bS3xWZLGTkRWngVqJKnM/DLqi0/1HRftp14czSll0WddCmI7yGW+No9oNDmR7xl7krSNNrWmoQpV7RJLQsDO2puTz/Hep5FfWt2y5QJiPG89eO5Q5iWE2tc1YLPlZMeWcRjlO6enp7Nq1i0mTJpGebrt2+KqqKhYtWsT69esJCgpqd58jR46wdu1akpOTjW7Lfumll1i1alWb7WVlZTQ3N7dzRPdRqVRUVVWhVquRmzD1OlCucwZS81NJ8kwyq13G0F3brU2scyzBbsEU1XceeapsrOTdlHd5N+VdxgaN5droa5kUOglnuZTa9ck9jkb9p9wlAlVpaccnswDGvN/7LxQD4KKQEeWhotTKNnaEJT4rLoFJ2pqS+jPbqA0Y1en+oS4q3Jzk1DerOJxRYtR74yif8dY4qt3gOLa75J/HmArC6vzzNPrYV4T617OlPLHlXJvt+ZX1PPLpUV65bjAz4+w/Ym3Jz0pVlfHpfKOLw2fMmEFeXl6nBdumEhQUhEKhoKDAsB6loKCAsLC2HvCFCxfIyMhg3rx52m0aL9HJyYm0tDR2795NYWEh0dG6u0ulUsmf/vQnXn/9dTIyMtqc96mnnmL58uXax5WVlURFReHv74+Pj3mLbVUqFTKZDH9/f5N+8YnqRDgmrQubCwkIsP6HvLu224KVE1byp9/+1Ga7DBlq1AwPGs7pktMo1ZKu0+HiwxwuPkyAWwDXDbyOmwbdRGCZdKFRu/rgFz0MrKyP1NX7nVdRR26FFCkdFe1PWEj7NxO2wCKflWGz4Sdp6V54BDcj/gZGRvmxP72UvMpGmpw8CPXpXKXZkT7j+jiq3eBAtocZJ/rsFTYIbHB97gilSs2anR1rL8qA137LZv74gXaftrPkZ8XJyfheOaP3VKs7yet2ExcXF8aMGcP27du1kgIqlYrt27ezdOnSNvvHx8dz8uRJg23PPPMMVVVVrF27lqioKBYtWsSsWYYaPbNnz2bRokUG8/X0cXV1xdXVtc12uVxukT9kmUxm8rn7+/bXrjMrM212gemO7bbgqtirWJC3gE1nNxlsD/UI5cnxTzIrZhZFtUX878L/2HR2E7nVuQCU1pfywakP+ODUB0zwaGaB0oOZgcNwUXTSfWdBOnu/D2eWa9fj+wfY3e/E7J8Vn3BptlfJOWSXjiJrrgOXzmtJxsT6s78lnXksu4Krh3t0+TKO8hlvjSParVQpOVJ4hIyiDGKbYhkbNrbzTldbEjsZfCLaFoZrkYFPBPLYyWBHv4MD6SV66bm2qIG8inp+PJXPdUn2L5lgqc+5KeczSY7AEorEy5cv5+6772bs2LGMHz+e119/nZqaGq2Tc9ddd9GvXz9eeukl3NzcSExMNDjez88PQLs9MDCQwEDDGhdnZ2fCwsIYMmSI2e23Fl4uXgS5B1FcVyy0nIxEv/vwnsH3MCV2isGFOdgjmCXDl3Bf4n0cyDvAprOb+DXrV5rVUnr2gLsbB9zd8JcVcv3hf3LT4JsMxEhtjaHwpf3c4VqU2MmSRISqGbIPwMCZne7eWs/p6uHhlrZQYCRmEai1JnIFzFkNXyxq58mW78Y5L0v72RGFVR07Tfo89tkx3th+nhnxIVweF8zY2ABcnOzHAbQnTHKc7rnnnnYjM/p89dVXJhlwyy23UFRUxLPPPkt+fj4jR45k69at2oLxrKwsh7qDsiSxPrEU1xVTWl9KZWMlPi69VLPHTJwoPgGAk9yJ2wbeRlhwWLufJblMzsSIiUyMmEhxXTFbLmxh84kNZDVVAFCmbtJGocaGjmVB3AJmxczCVdH534Kl0ThOCrmM0dH+XezdS4idCkc+kNYZe7t0nEZF6TlOWUII017QCNS21lrTCNSuuXyNfTpPAy4HuZNOpkSDT4TkNCXY3+SMEG/jhwifK6zmXGE17+y6iKeLgsmDgiRHakgw4b7uFrTSsTDJcfL29sbd3fxv3tKlS9tNzQHs3Lmz02M/+OCDLs/fXl2TIxLrG8vhgsMAZFZkMjx4uI0tsl8qGiq0c/3i/eNxURg35DXIPYj7Eu/jnovHOXz6MzZ5e7HN25emlijU4YLDHC44jO9BX+YNmMeCuAUM9BtosZ+jI0prGjlXKKkTJ0b44OlqspatY2Li3Dp/TxcGBHtysaiGlNwK6puUuDnbV0Sgpzhai7nZBGptQdqPWqdJPWQuVTFX4hU2qCU9Z2e2tnC2oLLLfbxdnRgU4smxnAo0VTk1jUp+Pl3Az6eliGB8mDfThwQzY0gIY2L8ce7DgrImXW3/9a9/mbU4XGAa+sN+MyozhOPUCSeLdbVwI4JHmHy8vCiV8fUNjK9voPSOX/k29zc2nd2kTZNWNFTwSeonfJL6CaNDRrMgbgFXxlyJm5Pxd3c94VBGH0zTgVTnFDAASi9C7hForAWXzuuWxkT7c7GohialmpTcCsbG9p73a2tKHqu+PU1eha7FPNzXjefmJTAn0T7TkqYI1I4LG2dFy4zglC6jor7sURq946VCcDvMiqjVat789Tz//OVsh/to3Ot/3DyCOYnhlNU0sutcETvTivjtbBGlNY3afc/kV3Emv4r//HYRb1cnpgwO4vIhwVw+JKTLpovehtGOU6+buO6A6DtOmmiKoH1OFJ3QrkcEmeg4qdVQmCqtfaMI8Ivlbr9Y7kq4iyMFR9h0bhO/ZPxCo0q6qCQXJpNcmMxLB1/SRqEG+1t2rl2vH+zbGbFTJMdJ1QQ5h2DA9E53HxPjz5dHcgCpzqm3OE5bU/J4+JPkNnGb/Ip6Hv4kmbfvHG2XzpOxArXG7mc16srg/HZp7R0B0ZdBWblNTeoIlUrN335I1Q66Bpg9LJTjORXkV+hqnsJaOdn+ni5cP7If14/sh1Kl5mRuBTvTCtmRVsSJnHJtNKqqoZkfU/L5MUUSER4a7sOMIcHMiA9hVJRfrx9vZNOuOoFp6BcmZ1Zm2s4QB8DAcQoeAY2d7NyaimxoaAlv641akclkjA0by9iwsTw1/im+vfAtm85u4kLFBQCqGqv49MynfHrmU5KCk1gQt4DZsbNxdzJ/els/4jQ2po/UN2mImQLJH0nrjD1GOU4aesvAX6VKzapvT7erYa1GiiSs+vY0VyaE2V3aLtgj2Kz7WY0z30vOOsCwG0Bmn85Bs1LFyq9OsqnlZgHgqavjeXD6wJa0bnFLWjew07SuQi5jZJQfI6P8+OOsOEqqG9h1rogdZ4rYda6I8lpd801qXiWpeZX8e+cFfNycmDo4mMuHBDN9SLBJNVaOgtGO044dO2yiHSTQEeEVgZPMiWZ1s+is6wSVWqV1nALdAonwjKCs0YQvzILTunVo+yN7fF19uTPhTu4YegfHio6x6ewmfsr4iQalpKt0vOg4x4uOs/rgaq4ZcA03x93MkADzdHVWNzSTkisVrg8J9cbf07j6rV5DrF6dU2bXc+sGBnvh4+ZEZX0zyVnlqNVqh4+gH0wv1UvPtUXTYn4wvZSJA+0rIjk6ZDTB7sEU1bUfUZIhI9QjlNEho61sWRek6DU+DbvRdnZ0Qn2Tkj9sPMpPp6RUqFwGf58/nFvHS7qGCrmMywYEEucnIyAgALkJTnWglyvzR0Uyf1QkSpWaY9nl/NYSjTrZcj0CqKxv5vuTeXx/Mg+AxH4+zBgiFZiPjOod8zSNdpymT+/8rk5geZzlzkR6R5JRmUFWZRYqtQq5nd712JKMigyqmiQV2BHBI0z/kizUn1HX+axDmUzGqJBRjAoZxRPjnuD7i9+z6dwmzrWIZ1Y3VfN52ud8nvY5w4OGc9Pgm7i6/9V4OHetJ9QRRzLLULWEGvpUfZMG30jwj4WyDClV11QHzh1H9eRyGaNj/NmZVkRxdQPZpXVEB3b//bcHjG0xN3Y/a6KQKxgWOIydOTs73OfJ8U/aV2F4TQlc3CmtfaMhcizYWRamuqGZBz46zO8XpPmVzgoZa28dxVwLSHAo5DLGxPgzJsaf5VcNoaiqgd/OFrEzrZBdZ4uorNd1HabkVpKSW8kbv57Hz8OZqYODmTEkmGlxwQR52bYzubv0kVac3kOsTywZlRnUK+spqCkg3Mv+ahhszfEinUpuUnA3RtPoD/cNMX50gq+rL7cPvZ3b4m/jZPFJNp3dxNaMrdQ11wFSwfrJ4pO8cugVrhlwDQviFpAQaPpohkN69U3j+qLjBFK6riwDlI2Qcxj6T+109zHRkuMEcCSr1OEdJ2PTH/aYJimtL+VA/oF2n/N09uTFyS/anxRB6v+gZcoAifOlKQJ25DiV1TRyz/sHOZ4jRX7cnRW8c9cYpg62Troz2NuVBWMiWTAmkmalimPZ5exIK2RnWhGnLum6+sprm/j2+CW+PX4JmQyG9/Pl8pZoVFKkX6fRKHvqHhWOk4MR6xsLLanr9Mp04Ti1g0a/CbrXUadN1cmdIcj0Im+ZTMaI4BGMCB7BinEr+OHiD2w6t4kzpdLg6trmWr48+yVfnv2SoQFDWRC3gLn95+Ll4qU9h1Kl5HD+YUlRudFQUdmgMLyXFDqbTOwUOPaJtM7c26XjNLpVndP8UW2HOjsSCnnn390ypMJfe4xIfnTqI+3NxK1DbmVM6BhW7FoBQIx3jP05TWDXabr8inoWvXdAK0/i6+7MhnvGGdT2WRMnhZyxsQGMjQ1gxex4Civr2dkSjdp9rpiqlmiUWg0ncio4kVPBv7afw9/DmelxUpfetLhgAvRKEOyte1Q4Tg6GgSRBRQaTIibZzhg7RRNxksvkDAvsPNXWhuZGSZkaICgOFM49ssXbxZtb4m9h4ZCFnC45zZdnv+SH9B+0Xxyppam8sP8FXj38KnP7z2VB3ALyqvNYfWh1u4rKUyJmcCy7HICYQA/CfO0vomAVYk3Tc0qK8kMuA5UajuiNqnFEfjqVz2OfHe004KEGnpuXYHf1JOX15Xx25jNAKj1YPHwxIe4h/MfnP5yvPM/p0tMU1xUT5G4/cxepKtDV0gUMgHDrD1jviIziGu549wC55dL1JNjblY8Xjyc+zH7EkUN83Fg4NoqFY6NoUqpIzixj59kidpwp5Ey+brBuWW0T3xy7xDfHpGhUUqQfM4aE4OokZ/XWM3bVPdotx+nChQu8//77XLhwgbVr1xISEsKPP/5IdHQ0w4aZ+EUlMIkYnxjtWnTWtaWmqYbzZecBiPOPw8PZQzsI2iiKz+pUgUPNN+FcJpMxLGgYw4KGsWLcCn5M/5FNZzdxqkRKC9Y117H53GY2n9vc7vEaReWHE56nUSk5c3022gTgFy39K89qqXOqB+eOnUgvVyfiw3w4nVdJWn4lVfVNeLv1zCm2BR/vz+S5/6Voa9yGhntTWtNIQWWDwX4BHi5cMTTUBhZ2zsepH1PbXAvA/EHzCfMMQ6VSMSF4Aucrpb/b3Tm7mT94vi3NNOT0/0Ddcg0ZdqPVh313xOlLldy14SDF1dLvPjrAg08WT+g0Dd1ZJNsaOCvkTBgQyIQBgTw5J568ijp+S5N0o/acL6a6QReNOpZdrr1JbA9bdo+aXFn822+/MXz4cA4cOMBXX31FdbUUHjx+/DjPPfec2Q0UGKIvSSA669qSUpyiVSTuVn1ToV5HnQn1Tabg6ezJgrgFbLx2I59f+zkL4xbi6dz5sFrNz/Rh2uuAdBHvs/VNGmKmSP8310timF2gSV2o1HA8u6KLve0LtVrNP346w1++0TlN80f143+PTuH3lVfw6ZLxvHjNQJIifQEorW1ky7GOhtHahsrGSj5N/RQAJ5kTi4cv1j53Wchl2vXu3N1Wt61T9EQvSbSPNN3hjFJueWef1mkaEurNpocmduo0bcvcxuzNs1nyyxJePPYiS35ZwuzNs9mWuc1aZrch3NedW8dHs27RGJL/ciWf3X8ZD04bwJBQb6OO1+8etSYmO04rV67kxRdf5JdffsHFRZeDnDlzJvv37zercYK2BLoF4u0sfahExKktbfSbTEW/MDw0seP9zERCYAJ/mfgXfr35V+4ddm+n+6pRU6MsQeEhidpN6OuOk4myBI6q59SkVPH4lyd4a8cF7baHLx/ImoVJuDjJtS3mc4YG8ee58dp93v7tAiqV/RQw/zf1v1Q3STfa1w+6ngivCO1zQ/2H4usiOX2/X/qdJlVTu+ewOhW5kLVPWgcNsdjNlCnsTCvkzvcOaGuFRkX78fmDlxHSiXq3ZjZga8V2TSTbls6TBhcnORMHBvLU3KH8tGwae1fOZOFY42oRrd09arLjdPLkSebPbxtGDQkJobi42CxGCTpGJpNp03WXqi9R32x/7ca2RL+jzmTFcGjlOFnvIunh7EF8QHzXOwIypypCfVyJDnDszrAeEztFtzaizknfcUp2kIG/1Q3NLP7wMJuTpY4QmQxWXTeMJ+fEtyuzMS42gHGx0s95vrBaO2fM1lQ3VvPx6Y8BUMgUBtEmzbbJEZIjXNNUw9GCo1a3sV1Of6NbJ9o+Tfft8Uvc/9Fh6pukqPPUwUH8d8kE/Dw61nLrajYgwOqDq1GqlJYxupv083M3uonD2t2jJjtOfn5+5OXltdl+9OhR+vXrZxajBJ2jSdepUZNVlWVbY+wItVqtjTj5uvoa1IMZjSZV5+oLPtb9PBurlKxu9mZcbIDDizj2GL8Y8Gm5sGYflAr7OyHS351gb0k3JjmrzK6iMe1RVNXAbe/sZ9dZSUbBxUnOv28fzd2TYjs97pEZg7Trf+88bxdTHz478xlVjVIh8LUDriXKO6rNPlMjdZ2Ru3J2Wc22TrGjbrr/HsjksY1HaVJKv8+5w8N49+6xeLh0XqpsymxAe2N8/wDCfd3o6EonA8Jt0D1qsuN066238uSTT5Kfn49MJkOlUrF3714ef/xx7rrrLkvYKGiFfmedSNfpyKnKoaxBiiSMCOqG8GVdGVTmSuvQBKvfXY4OGU2oRyiyDi8ToGryRVnbX6TpQPr9aNJ1zXVwqfMLv0wmY0y0FI2pqm/mfFG1pS3sNunFNdz49l6tIrOPmxP/XTKBq40QM7w8LpiEcKmr6kROBXvPl1jU1q6oaarhw9MfAlKn6/0j7m93v8kRk7WCvrty7cBxKsuA3MPSOnQ4BMfZzJR/7zzP01+naDspbxkbxRu3jcbVqevCboedDYgktPncPCny3/qqqHlsi+5Rkx2nv//978THxxMVFUV1dTUJCQlMmzaNSZMm8cwzz1jCRkErYnx1kZSMigzbGWJnHCs6pl13q75JM9gXbFLLoJArWDl+JUCHzlNDwTxA3vcG+3aEiem60TF+2rW91jkdzSrjprd/J7tUajGP8HVj88OTGGdkF6VMJuORGQO1j9/acd4idhrL52mfU9EgOYBX97+6w0iwr6uvtqEjvSKd7Kpsq9nYLqe+1q0TbdPlp1areemHVF7Zmqbd9uC0Abx803CjnQWHnQ3YwpzEcN6+c3Qb6ZUwXzebDbI22XFycXFh/fr1XLx4ke+++45PPvmEM2fO8PHHH6NQ2JFEfi+mv09/7Vp01ukwb2G4bYpAZ8XMYs3lawjxCGn7ZEM4zVWJ+Lo7MzjEq+3zfZEY0/Sc7L1AfHtqAbet309pjZR2jA/z5qtHJjPYyC4jDVcnhtM/SOrU3HexxGY1XXXNdXx4Soo2yZDxwPAHOt1/aj9dum53jo2762ycplOq1KzcfJL/7Lqo3fbknHiemjvUpGh6V5FsGTLCPMLsbzagHnMSw9nz5Ext9+inS8az58mZNnGaoBuOk4aoqCjmzp3LTTfdRE1NDWVl9ncR6q3o1wcIx0mHRjFchozhQcNNP4G+FIEVOuo6YlbMLH666SfevfJdnh75NEFuLWKArnnInIsZF2vacM5eTcAA8G7pzso+AMrOu7GGRfjiopAue8l25jhtPJhlUPg7cUAgXzw0sVsipwq5jIemD9A+/rdeR541+TLtS0rrpVbx2bGzGeA3oNP9p0VO065tmq4ruQD5LTdiEaMgoH/n+5uZhmYl//dZMp8flqJuspZhvQ9fPrCLI9uiiWS3Vxyuwe5mA7aDfvfoZQMCbSruarLj9Mc//pH33nsPAKVSyfTp0xk9ejRRUVHs3LnT3PYJ2sHD2YMwzzBAStXZQ/GnralrruNs6VkABvoNxNtFukNXqtTsv1jC1tRi9l8sQdlZQXCBvobTUEua2yUKuYJxYeOY1W8WixIWabe7+O8X9U366Nc5NdXCpc67sdycFST2k+p/LhbXaCM7tkStVvP6trOs/OqkVqNpXlIEH9w3Dp8eiHTOHxVJeIvTtS21gDQ9lWZrUN9cz/un3tc+fmBE59EmkERrQz0k4c5DeYe0CvtWx4bRppqGZpZ8eJgfTuYD0rDef906itsnRHf7nLNiZnHdgOvafe7P4/9sn2Nu7BiTHadNmzaRlCTlob/99lsuXrzImTNnWLZsGU8//bTZDRS0j6ZAvLKxUlsQ3Zc5XXKaZrWka6JJ021NyWPK6l+5/d2DPPP9BW5/9yBTVv/K1pS2XaGo1bqIk28UuPlay/QuuX7g9ciRvkCd/Y6QFN25WGafowfpOltHnZqVKp766iSvbzun3bZkSn/W3jLSqMLfznBxknP/VF2E5+2d1q112nxuM8V1kkTNlTFXMti/67mPMplM213XqGrkYN5Bi9rYIfqil8OsV99UXtvIne8dYPc56X1zc5az/q6xzEuK6OLIrtHvwB4RoCtlkMu7nXjqs5j8jhUXFxMWJkU7fvjhBxYuXEhcXBz33XcfJ0+eNLuBgvYRo1cMMahvChrB1pQ8Hv4kWW8opIRmvlEb56kiGxpapnjbgcidPn6ufshqpZsVmaKO7MbfbWyRnRGrN+DXRCFMW+o51TY288DHR9h4SFcE/cw1Q3nm2gSzpWJvHR+Fv4fkdG85fomsklqznLcrGpQNbDi5QfvYmGiTBv06J5vIEhSe0d1ERY4Hv7bSCRZ52cp6bvnPfo5mlQPg7ebEJ4sncPmQduodTaS4rlircTfAdwAPD31Y+9z+PCFcbSomO06hoaGcPn0apVLJ1q1bufLKKwGora0VxeFWpL+vXoG46KwzcJwSg0aw6tvT7Wb0NdtWfXvaMG2nn6azUWF4R2SX1VFZOE77ePO5L21ojR0SOBC8WuayZe0HZXOnu4+Otn2BeEl1A7etP8CvZwoBcFHI+ddto1gytfMaIFPxcHHivsnStUKlhv/ssk6t0zfnvqGwTvrZLo+63GhxV4DLwi/DWS45e7tyd1m/FMEGI1aySmpZsG4faQVSOjXIy5XPH5jIWDPNo/w161dtjdMVUVcw2HcwPi5SyvpA3gG7E7+0d0x2nO69914WLlxIYmIiMpmMWbOk3OiBAweIjzf+j0PQM/S1nPp6gbhardbeTXk5e1Fc6tcm0mSwP+3MNyrU66gLsa9B1YcySlHVRaOslzpIThaf5HTJ6S6O6kPIZDpZgsZqyDve6e4hPm5E+rsDcDynnCalCUOgzUBmSQ03vf07x1sGmHq7OvHBfeO4zgzpmPa4a2Isni7STe2Xh3MorLTstIEmZRPvpbynffzQiIdMOt7D2YNxYdKNQn5NPufLrZhiVKv16ptkkHCDxV/yTH4lC9b9TlapFA2M9Hdn00MTSYjwMdtr/Jr1q3Y9M3omCpmC8WHjAancQ1xPTMNkx+mvf/0r7777Lg888AB79+7F1VVS4lUoFKxcudLsBgraRz9V19cjTvk1+RTVSeJtiUGJFFcbV/D7x8+PsnLzCb48nE11li5iZW8Rp4PpZYCMpjLdINQv0r6wnUH2iEGdU9dt7Jp0XX2TitS8SktZ1YYTOeXc9PbvZLSkzEJ9XPny4YlMGhhksdf09XDmzonS9aJRqeLdPekWey2ALRe2kFcjpcKn9pvKsCDTb0QMuuusma7LPwklLfVmMZPBx7Lt7slZZdzyn/0UVknDegeHeLHpoUnEBpmvjrGqsYoD+QcACPMMY2iA1PhyWbjuerIvb5/ZXq8v0K2qsAULFrBs2TIiI3VzZO6++26uv/56sxkm6Jxwz3Bc5NJ8or4ecTperDefLniE0XOLCiob2HgomxWbTpCTdgSAZpx4N1XBkcwyGprtI3x9MEOKjMmqR+PpJF1Qf0j/gcpG633h2z36Qph2OvB3Z1oht76zX+vYDw7x4qtHJhMfZr7IQkcsntIfFyfpcv/f/ZmU11qmm7BJ1cT6k+u1jx9MerBb57FZnZNBms6yReG7zxVxx/oDVNRJEhpJUX588WD35Cc6fZ2c3TSrpPT1zKiZWg2oieETtfvsuyQcJ1PofMhNB2zfvp3t27dTWFiISmUY5t6wYUMHRwnMiUKuINonmvPl58mqykKpUtq9Doel0K9vSgpOYnxEAGE+ruRXNnR4jLNChlKlRqUGZ5oZKLsEwDlVOC9uvQBcwMVJTlKkL2NiAhgb48+YGH/8PTsepmkJiqsbyWyJTozoF8LIgdfyedrn1DXX8e2Fb7lj6B1WtcduCYoDz2CoKdLVOSk6vry1rnO6d7JldXo2Hclh5eYTNLfU1Y2PDWD9XWPx9ei+3IAphHi7sXBsJJ/sz6KmUcmHv2fyh1ldd7mZyvcXvye3WhpbNCliklYJ3FSifaKJ9YklozKD40XHqWiowNfVwp2u+mk6mRyGWi4Q8MPJPP6gN3du8qBA/rNoLF6u3fpK7pTtWdu16yuir9CuI70jifSKJKc6h2NFx6htqsXDuY8PDjcSkyNOq1at4qqrrmL79u0UFxdTVlZm8E9gPTR1Ts2qZi5VX7KtMTakdUedQi7rcOijrOXfG7eNImXVbD67/zKen+SMs0yKLqWpdR00jc0qDmWUse63Cyz56DCjXviFK/65kyc3neCLw9lcLKq2eOHq0Ryd9s74/gHcMuQW7eMv0r4QGl4aZDJduq6hUide2AHxYd54tNT9WFKSQK1W89aO8zz+5XGt03R1YhgfLR5vNadJw4PTBmpFA9//PZ2ahs6L6E2lWdXM+hN60aYR3Ys2adDIEijVSutERC4lQ3lLh3L/aeBlmREknx/KYumnyVqnafawUDbcM84iTlODsoE9uZJEh5+rH6NDDdXBJ0ZIUadmVTNHCo6Y/fV7Kyb/ptatW8cHH3zAokWLut5ZYFFifWO16/TKdKJ8rNM2a080Khu1hY0xPjH4uflRWFnPttTCdvcP83XjuXkJWqn+iQMDmVhTDS3zYSdPmsbfAhI5klHG4cwybcGmhgtFNVwoqtEq+gZ6ujA6xp+xMf6MjfUnsZ9vj/V39Elu5TgN9g9hdMhokguTuVhxkcMFh7WFtH2e2Clw+htpnbkX+nU8QsJJIWdklB+/XyjhUkU9eRV1hPu6m9UcpUrNc1tS+GS/Tj/n7okxPDtvmE1Uj6MCPLguKYKvj+ZSXtvEZwezzNrFtzVjq1YraHzY+DZf0qYytd9UPj79MSCl6+b0n9NjGzvFCqKX//ntAi/9eEb7eMGYSF6+cThOCstoKe2/tJ/aZukaNj1yOk5yJ4Ms0WXhl/HlWalLd1/ePq2zKugckx2nxsZGJk2aZAlbBCYitJzgTOkZmlRSjcCIIEnU7dWf06htlCJIt0+I4trh4VzMK2FAeCATBgS1/dLSm1EXPHA0d8TFcMcE6b0trKznSKbkRB3OLONUboU2cgBQUtPIL6cL+OV0ASCJDo7o58uYWH/GxgQwJsafgB6k947lSo6TXKary7llyC0kF0qe3udpnwvHSUPrgb+T/q/T3cfE+PP7hRIAkjPLuWaE+Ryn+iYlj312lJ9bPhcAK6+O58FpA0yaM2ZuHr58IF8flVJp63dfZNHEGLM4+kqVkndOvKN9/FCSaZ107TE2dCweTh7UNteyJ3ePZcsRVCo49Y20ljvB0HlmPb1areaVn9J4e6dODmLJlP78ee5Qi45P+jVb102nn6bTMCF8AjJkqFGLOicTMNlxWrJkCZ9++il/+ctfLGGPwAQMJAn6aGdd6/qmlNwKvjySA0gCcn+6cgj+Hs7E+ckICOhgxpv+jLpW4pchPm5cPTycq4dLEaq6RiXHc8olZyqjlCOZZVTW61Iejc0qrZP1H6ThnAOCPaWIVEwAY2L9GRDk2eWXp1KlZvvpAs4VSXeLQ8O98W4ZvzErZhYBhwIorS9le+Z2iuuKCXK3XFeWwxAcDx6BUFsCmftApYROvmhHtyoQv2aEeTqoymoaWfLRYW3RuZNcxj9uHsH8UZFdHGl54kK9uSohlJ9PF1BQ2cDXybncOr77ozw0/JL5C+kVUrfe6JDRjA0d2+NzOiucmRgxke1Z2ylrKONUyanuDe82hpxDUCldNxgwAzzMN9ZIqVLzl/+l8OkBXeTx8avieHTGIIs60UqVkp3ZOwFwd3LXpuX08XX1ZVjgMFJKUjhffp6i2iKCPSyTouxNmOw41dfX884777Bt2zZGjBiBs7Nhnn7NmjVmM07QOQYimH20s07fcRoeNJxVm0+jKft5bOZgAr1c2zQwtEEjfunqC76df7m5uyi4bEAglw0IBEClUnO+qJrDGWUczpQcqcxW6swXi2q4WFTDF4elC3OApwujo6XU3tgYf4ZHGqb3tqbkserb0wZaVOnFtWxNyWNOYjguChfmD5rPeynv0axuZvPZzd3uXupVaOqcUrdAQwUUpEB4x8XJo6P0HCczKYhnl9Zy9/sHuVhUA4Cni4J1i8YwdbD9fBk9MmOQNhK27rcL3Dw2qkepQ5VaxX9O/Ef7+KGkh8zmEEyLnKYtbt6Vs8tyjpOFRC8bm1Us/+IY352Q5BlkMnj++kQWXRbTxZE952jhUe2A5ckRk3Fzar9bb2LERFJKUgBJRXzeQPNG23ojJjtOJ06cYOTIkQCkpKQYPGfLEHRfxNfVFz9XP8obyvus46QRvnRTuJGe58uBdOmuNybQg7smGXFxqivX3WmGJkhXNhOQy2XEhXoTF+qtHcJZWFVPcmZZizNVxqlLFdpCUIDSmka2pRawLbUlvaeQMzzSl7Ex/shksO63i21ep7ZRycOfJPP2naOZkxjOzUNuZkPKBtSo2XRuE0uGL+mzXZUGxE6RHCeQ0nWdOE6+Hs4MCvHifGE1p3IrqG9S4qLo/jXs1KUK7nn/EEUtmjzB3q68f884EvvZz9xDgJFRfkweFMje8yVklNTyw8m8Hs1C2561XStSmRScZKAP1FOm9NOlX3fl7GLpqKVmO7cWlRJOfS2tFS4Qf41ZTlvXqOShT47w21lJY85JLuOfC5O4fmQ/s5y/K/S76WZGz+xwv4kRE7USEvsu7ROOkxGY7Djt2LHDEnYIukmsTyzHio5RWFvY59pJi2qLuFQjdRMmBA7jla1ntc89dfVQ42o3OknTdZcQbzfmJIZrC9Drm5Qczy7ncGYZR1r+abRbQBIl1GzvilXfnubKhDD6efVjauRUduXsIr8mn105u5gRPcMs9js0BnVOe2Hio53uPiban/OF1TSr1JzIqWBsjF+3Xnbv+WIe/PgI1S2dagOCPfnw3vFEBdjn3+Mjlw9i73mpvuutHee5dkR4t2581Wo1/zmuizY9OOJBs95Ah3iEMDRgKKmlqaSWplomlZT5O1S31KINutIsA74rapu478ND2r9pVyc56+4cw4z4ns+dMwa1Ws2ObOm72knmZCAo2pqk4CTcndypa65jf95+1Gq1CIJ0QY9K+XNycsjJyTGXLYJuoN9Z19cKxE8U69J0soYYbYpsQv8AZg8LNe4keoXhllIMd3NWMGFAII/OGMSGe8Zx9C9X8suyabx043BuGh1JbKBxX66tR8XoSxN8fvZzS5jueAQPBfeWFFzmXqnotxPMIYT5zdFc7nn/oNZpGh3tx+aHJtmt0wQwaWAgSVF+AJzJr2JHWvtdqF2xM3snaWVpAAwLHGYQITIX+p1emtZ6s2LmNF1hVT23vLNP+3nydnXi48UTrOY0AaSVpWn1tMaFjetUA8tF4cKY0DEAFNUVcaHcOvMMHRmTHSeVSsXzzz+Pr68vMTExxMTE4OfnxwsvvNB1LYnA7BiMXulj6Tr9+qYjZyX1ZZkM/nJtgvF3TAYRJ+vMqJPLZQwO9ea28dH8c2ESO1fM4NDTs1hspAhjYZVU+zQ5YjIRnlKKZW/uXrIrsy1ms8Mgl+v0nOrLDWcQtkPrAnFTUKvVrPvtAn/8/Jg2FTtraCj/XXKZ1YVSTUUmk/HI5QO1j9/accFkTTC1Ws26E+u0j81Z26SPRcevKJvhdEtq18kd4nomeZBdWsvCdfs4ky91wwZ6uvDZA5d1qCtnKYxN02kQ41dMw2TH6emnn+bNN9/k5Zdf5ujRoxw9epS///3vvPHGG6LTzgb099ErEO9jnXWa+iaA6krJgbh5TKRpNSUF+o7TUHOZZjLB3q7MSjAuSqYZKaOQK7h5yM3a7Ro9lj5P63RdJwwI8sSvRYjyaFaZ0c6DUqVm1beneVlPk+f2CdGsu3M07i6OUWt25dBQBod4AZLTaDD02gh25+7WaqjFB8QzPXK62W0ESAxMxN9VcnD35e2jSdnUxREmkLELaoulddxV4OrV7VOdK6hiwTrdHMJ+fu58+dBEm9S46TtOM6K6TuHrd9wJWYKuMdlx+vDDD3n33Xd5+OGHGTFiBCNGjOCRRx5h/fr1fPDBBxYwUdAZfTXi1Kxq5lSxFE1QNfmhbvbBw0XB41cNMf4kajUUpkprn0hw9zO/oSYwvn8A4b5udHTPLgPCfd0M7l7nD5qPk1wqVfz6/Nc0KDseM9NnMGHgr1wu045fKalpJLOV4Gl71Dcp+b/Pkvng9wzttseviuNvNyRaTMjQEsjlMh6ZoRd12ml8iqZ1bdNDIywTbQLpBmFyP+l3WtNUw5FCMypcd1P0UqlSs/9iCVtTi9l/sYQjmWXc/J99FLSMeRoY7MmmhycyILj7jlh3ya7M5lyZNKh4RNAIQj27viEb7DdYK2lyuOCweZ3TXojJf+WlpaXEx8e32R4fH09pqWl3LIKeE+0TjVwm/Rr7kuN0ruwc9UopZaWslZzHRy4fSIiPCQMyK3KktnWAUOuk6TpDIZfx3Dypzqr1V5Dm8XPzEgxaxwPdA7ky5koAyhvK+TnjZytYaueEJoKbn7TO/N2kOqfkzPJO962obeKuDQf54WQ+IP3O/rFgBEtnDnbIgtp5IyKI9JeEP3edLSIlt8Ko4/Zd2qetMRzsP9jijQn66brdOZ07w0bT3Aip30prZ08YfJVRh21NyWPK6l+5/d2DPPP9BW5/9yAL3v6d8toWId5IX758aJLZleiNRV/00pg0HUipW026rq65jmNFxyxhWq/BZMcpKSmJN998s832N998k6Sk7g10FHQfF4WLts4loyKjz8wu069vUtZF0c/P3fTxEVYoDDeVOYnhvH3n6DYT0sN83bRSBK1pPb+uzyOXQ0zLdIO6UihK7XT3UdF+2nVnek6XyutYsO53bUrLw0XBu3eP5eaxjjvqyEkh58HpuqjTv3ee7/KY1rVND4x4QHvzZikmRUzSvobZ6pwu7pTq4ACGXA0uXRfzb03J4+FPkg001kBq3ACIC/Xiv0sm9GhaQE/paKhvV+in6/bn7TerTb0Nk+UIXnnlFa655hq2bdvGxInSG71v3z6ys7P54YcfzG6goGtifGPIqc6htrmW4rriPqH8erTwmHatrIvmyfnxuDmbWFuiXzhspcJwY5iTGM6VCWEcuFjc+aiYFkaHjGaQ3yDOl5/nWNEx0krTGBJgQsqyNxIzGdJarkcZezuNKCZF+qGQy1Cq1CRnlQNtNY3O5Fdyz4ZD5FdKX5iBni5suGectjPNkbl5TCRrt52juLqBH1PyuVBUzcBOUkyH8g9xtPAoAAN8B3Bl9JUWt9HX1ZeRwSNJLkwmozKD7Mrsns/mTNmsWyfe1OXumrq2zm5NK+ub8XAx/7BeYymuK+ZYy7VxgO8Ag67rrtAvEN9/aT//N6rzkUV9GZNvE6ZPn87Zs2eZP38+5eXllJeXc+ONN5KWlsbUqWJAoC0wKBDvI+m633OkWW1qlRNJIQnM6864DP3CcDuJOGlQyGVcNiCQOUODuGxAYKfKzjKZzFCaIE1IExgUiGd23sLu6erE0HBvAM4WVGllBTTsu1DCzev2aZ2m2EAPvnpkUq9wmkCSy1gyVbqGqNWwrotap9bRJmsJr+rLEuzK7WHUqakeznwvrV19YVDXkZmD6aVtIk2tydeTC7EFO7J3oG5x7UyJNoGkmTXQV4o+ppSkUNFgXNq2L9Kt+GpERAR/+9vf2Lx5M5s3b+bFF18kIqL7yrOCnqE/s04zL6o3k1VWRFmTJHypqo/g2WtHdK++RCNFIHeCwMFmtND6XDvgWtydpJqK7y5+R3VjtY0tsjFhw6UvRJAiTl2ksMe0FIir1ZCSp3vvvjtxibs3HKSqZR5hUqQvmx6eREygp2XsthF3TIjGx62lyeBoLrnlde3udzj/MIfyDwHSdWdObM/a903BrHVO57dBoyQZQPw14OTa5SEaGRBz7WcJupum06BJ16nUKu3vWdCWbjlOZWVlvPrqqyxevJjFixfzz3/+UxSG25AYX11nXV8QwXxpx0/adaz3UEZF+3eydwc0N0Jxi9J4UBw42bfuTld4uXhx7YBrAam487uL39nYIhsjV0B0S+qhthiK0jrdXV/PafPxQvZfLGH97oss/fQojUqpuHzGkGA+e+Aygry6/pJ1NLzdnLl7UiwAzSo163e1HfsDGMyku3/E/VYd8zPYbzChHlKH2KH8Q9Q2dd0B2SHdEL3UyICYaz9zU91YzYG8AwCEeoSSEGh6FF3IEhiHyY7Trl27iI2N5V//+hdlZWWUlZXxr3/9i/79+7Nrl5nFyQRGoR9x6u2puotF1exI190JLRrV8SiBTik5B6qWlIwddNSZg9bpur7SKNAhBnpOnUcoqut16bkd58q4/d2D/O17XVH5wrGRrL9rrE3rVyzNvZP7495SJ7jxUBYl1YbSFscKj2mLhiO9Ipnbf65V7ZPJZNqoU6OqUeskmExjLaRtldbu/jDgcqMOG98/AM9ONLrakwuxJrtzd9Pcck2bGT2zW1H4saFjtfImQgizY0x2nB599FFuueUW0tPT+eqrr/jqq6+4ePEit956K48+2vlcKIFlCPUI1aZpenvE6e8/nEHmlqV9PCN2fPdOVGD+GXW2ZkjAEEYGjwTgfPl5kguTbWuQrYnV03PK7FgIc2tKHs98k9Lh83OHh7P6phEOpdHUHQI8Xbh1vFRwXd+k4v29GQbPt442ab5grYlBui63m+m6cz9BU420HjoPFM5GHbbrbBE1jcp2n+tILsSa9DRNB+Dh7EFSsNQdn12VTU6VGKnWHiZfCc6fP8+f/vQnFAqd561QKFi+fDnnz3fdyiowPzKZTCuEmVOV02vFy34/X8y21DwU7tJokWD3YG3o3mQK9L4oe0nECWDhkIXadZ8vEg9LAhep6LujOidjOqWOZpWh6iPBu/unDsBZIX3xf7gvg8p66VqSUpyinRMX4RnBvAHzbGLf+LDxuMiltPqunF3di6p2Q/Qyr6KO5V8c0z72djN0GjuTC7EGDcoGbd2Xr6uvdvZcd5gYLmQJusJkx2n06NGkprbVRUlNTRU6TjZEk65TqpVkV/e+mWVKlZrnvzuN3LUQmUJKISQFJ3VfdLCw90WcAK6KvQo/Vz8Afsn8hZK6EtsaZEsUTro6p5pCKD7XZhdjOqXybNwpZU0i/Ny5cVQkAFX1zXyyX4pg66uELx6+GGcjozTmxsPZg3Fh4wAoqC3gbNlZ007QUAXnWkRiPYIgtutO8Galisc+O0pZi8DlrKGhHP3LlXy6ZDwvXjOQT5eMZ8+TM23mNAEcyDtAbbNU8zU9cnqPooGXRejNrRN1Tu1isuP02GOP8Yc//IFXX32VPXv2sGfPHl599VWWLVvGsmXLOHHihPafwHroj17JrOh96bovD2dzJr8KhbsuTTcieET3T6hJ1bn6gm9kD62zH1wVrswfNB+QxtJ8ff5rG1tkYwzSdW1lCRyhU8raPDh9AJr7kQ170jlecIqdOTsBqSzghkE32Mw2MJQlMDldl/YjNLf8LofdIDnXXbDml7McypCEUfv5ufPqzVLa1li5EGvwa5ZOLby7aToNwwKH4e0sRWoP5B9AqWo/PdmXMdlxuu2228jOzuaJJ55g2rRpTJs2jSeeeILMzExuu+02Ro0axciRIxk1apQl7BV0gL7QWW8rEK+qb+LVn6WuKLme46TJxZtMXTlUtuTuQ4aCA47K6Iyb4/QG/6Z92bcvfPoRhYy2jpO9d0rZggHBXswdLkVPiqsbWbVnrfa5xcMX46KwbQdqj2QJTEzT7Uwr5N8tulZOchlv3D4KPw/76sBVqpTsyN4BgJvCzaAzrjs4yZ0YHy7VjlY0VHCm9EwXR/Q9TI7npaf3fp0gR6Q3i2D+e+cFiqsbAfDzy6MWcJI5MTRwaPdOWKiXarYz4UtzEOUTxeR+k9mbu5dLNZfYe2mvwZdNnyI8SZpD1lSjq3PSc5Q1g5XzK+rbrXOSIdWv2KpTylY8PH0g35/IQ+6az7lqKV0T7B7MjYONH4RrKaK8o4j1iSWjMoNjRceoaKjAV6PZ1Rl15ZJ+E4B3OER37mDkV9Sz/Ivj2sdPzonXDoS2J44VHaO0XkolT+43Wdso1BMmhk/UFpvvy9vHsKDeUwdqDkyOOMXExBj9T9AKlRIy9uBydot092vGSIB+qi6jIsNs57U12aW1vLdHctZdnBuoQxK+jAuI6/4FQn/USi8qDNfnljihJA5IHVOaOqfqfCg11CfqzmDlvkBiP18uHxKMS5AuBXRv4r24KuxDw0pzI6BSq9ib23HHpAFnvgdVS+NMwg3STMMO0NQ1ldZIN2xXxIdo1dXtDXN007XGYG7dJVEg3hqTHacPP/yQ77//Xvv4iSeewM/Pj0mTJpGZ2ftqa8zG6S3weiLyj+bh8/My5B/Ng9cTpe1mwMvFiyD3IKB3RZxe3nqGxmZJgHDOmCbtOIERQT2pb7LPGXXmZFrkNMI8wwApnZFbnWtji2yIfp1TO3pO3Rms3Be4YbwTTt4nAZCrvLlxUNfz3KxFt2QJTBC9fG3bWQ5mSFGcCF83Xr25B40oFkStVmvrm5xkTmaLLEd5R9HPqx8AyYXJ1DW3ryTfVzHZcfr73/+Ou7t0p79v3z7efPNNXnnlFYKCgli2bJnZDewVnN4CX9wFlZcMt1fmSdvN5DxpOutK60upbKw0yzltyeGMUr4/kQdIQ1UHRuk6xJJCetDBaaDh1M10n52jkCtYMHgBAGrUbDq7ycYW2ZAYfSHM9qMTcxLD2fPkTLvqlLI1+0o+RyaTblRqi6ay+6z9XFNGh4zG01kae7Mnd0/XdXy1pXBxp7T2jYLIcR3u+tvZIm1dk6Klrsnf077qmjScLTurvSkaGzbWuJSlEchkMu3Q3yZVE8kFfVwTrhUmO07Z2dkMGjQIgG+++YYFCxbwwAMP8NJLL7F7dw/nB/VGVErY+iS0W0HRsm3rSrOk7XpTZ52qRX5Aw/Kr4kgr02kvJQV103FSq3U1Tj6R4O7XAyvtm5vibsJJJpUxfnXuKxqVjTa2yEZEjAJnD2mdsafDuXWmDFbu7WRUZLA1Q1LXVjV70lQ2gX/vPG83avTOCmet3lB5Qzkni092fkDqFt2kgGE3dNgQUlBZz/LPj2k/Ik/MHsKYGPutb9NP082MnmnWcwtZgo4x2XHy8vKipES68//555+58sorAXBzc6OuToTz2pD5e9tIkwFqqMyV9ush/X17T4H4N8dyOZEjTeceEurNwjGRnCiWJC78Xf2J9O6mhEBFDmimfvfCwnB9gtyDuCJGqnkorS9lW+Y2G1tkI5xcIKpFYb7qEpSJBpeuWH9yPSq1lCL3b5oFaldO5FSw97z96ILpp6V25XQx7suIbjpNXVNJS13TzPgQ7p86oMd2WhIDxynKzI5T2GXIWir9xPgVQ0x2nK688kqWLFnCkiVLOHv2LHPnSvOKTp06RWxsrLntc3yqC8y7Xyf0lpl1tY3NvLJVN5T1mWuHkluTTUWLwzMieIQQvjSS1vPr+iyxXafrBBLZldl8f1GqY/Vx8WHZhHu0z721w36mQ+jrOWlUzdululBX2+YfK0Ug22Ht9nMcaBE6Dfd14583JyG346hjdlW2VgB0eNBwQj27OUWhA/zc/LSdy2fLzlJcV2zW8zsyJjtOb731FhMnTqSoqIjNmzcTGBgIwJEjR7jtttvMbqDD42Xkh9nY/Tqht3TWvbPrIvmVkkjdFfEhTB0crI02QQ/0m8CwMDw0sfvncRDGho5lgK9015xcmMy5srbq2X0CgzqnTr5kBbyb8i5KtVQ6sChhETckDaR/kFRPtO9iCclZZbY0T0uQexAJgdLNT2ppKoW1he3vePp/0BI9I/GmdtN0u88V8WaLU6iQy3jjNvuta9KgL3pp7jSdBv3xK90eqtwLMdlx8vPz48033+R///sfc+bM0W5ftWoVTz/9tFmN6xXETAKfCNo2O2uQgU8/ab8e0s+7n7amxVEjTnkVdaz7TSc49+drpDueE0U6x6lHiuH6EadenqoDqchTzK8D+o0Gp5auuU4G/vZ1cqtz2XJealbxdvbm9qG3o5DLeGi6LmX17x0XbGVeG6b201MR70gMs4s0XWFlPX/cqKtrevyqIYyNtd+6Jg3mVAvvCH1ZAlHnpKNb4753797NnXfeyaRJk8jNlSr6P/74Y/bsEXdybZArYM7qlgcdOE9zXpb26yHOcmdt7U9WZZa2RsGR+MfWNOqbJLvvvCyGgcFeABwvkoToZMhIDOpBpEgTcZI7QeDgHtnqKMwbOE+refXdxe+obaq1sUU2wMlVV+dUkQ1ljt08YSneO/kezWqpiPqOhDvwcfEBYP6oSMJb5Bq2pRaQll9lMxv16VKWoPISZLV84QfFtdFtU6rUPLZRV9d0+ZBgHpxm33VNAMV1xRwtPApIta369a3mZGTISNwU0u99X94+u2kOsDUmO06bN29m9uzZuLu7k5ycTEODNHC1oqKCv//972Y3sFeQcB0s/Ah82mltnvGU9LyZ0NQ51SvrKajped2UNTmeXc5XRyVH3NfdmT/Okhyb2qZabS5/kP8gbRuyySgbobhlKGhQnFQ03AfwcfFhbn+pFrGmqYbvLn5nY4tshEjXdUp+Tb52tqGnsyd3Dr1T+5yLk5wleoXSb++0j1qnxKBEAtyk6NC+S/vado6e+gZt9/KwG9uk6dZuP8f+i1JdU5iPG2sWjrTruiYNO7N3ajXtLBVtAmn25ejQ0QAU1haSXiEaK6AbjtOLL77IunXrWL9+Pc7OugnZkydPJjlZaD10SMJ18McUVHd9S+3wRbrtnXbcmY7+zLr0Ssf5kKvVal7Qkx/4wxWDtTOhTpWc0kbPelTfVHxO15LcBwrD9dFP132R9kXfvHPULxAX6bo2bEjZQHPL38ft8be30QS6bXwU/h7SNX/L8Utkldg+cimXyZkcIQmc1jbXcqTgiOEOnYhe7j1fzBu/SjV/Gr2mADuva9JgCbXwjtCvcxLddRImO05paWlMm9ZWndTX15fy8nJz2NR7kSsgdgq1k55ArdGVOfUNNJtPX8dAy6nScdIRP5zM53CmVHQ6INiTRRN1P4dBfVNPFMP7WH2TPgmBCQwPGg5AWlmaNvXZp+g3BjQjQ9pREO/LFNYWsvnsZgDcndxZlLCozT4eLk7cN1lKCanUsG6XfdQ6dShLUJ4FOYekdcgwCB6ifaqwqp4/6NU1Lb8yjnEOUNcEUN1YrS3UDvUIZVigZacfiDqntpjsOIWFhXH+fNsw7Z49exgwwP5zw3aBswcMuVpa15fDhV873d0UDCQJHKSzrr5JyUs/6gbvPj13KM4K3UdT/0u+JxEnmYEUQe8ctdIZfb5I3NlNpxhdngXl2ba1x454P+V9GlXSDdytQ27F3639YbZ3TYzF00Wqx9x0OIfClu5XWzKp3yQUMskmA1mCU1/r1onztUulSs0fPjtGcbVUZjItLpiHpw+0iq3mYE/uHppaZu7NjJ5p8VEwg/0Ha9Ohh/IPaV+7L2Oy43T//ffzhz/8gQMHDiCTybh06RL//e9/efzxx3n44YctYWOvRJ24QPfg5JdmO69+qs5ROus27E0np0wST50yKIiZ8SHa59RqtTbi5O3ibfDzmYxBxKnvOU5zYudoi31/yviJsnr7aCu3KiJd14biumK+PCtdg9wUbtw17K4O9/X1cObOlmhwo1LFu3tsXw7g4+LDyJCRgHTNy6rMkp7ooJvujV/Pse+iJOQZ6uPKawvtW6+pNZZUC28PuUyuHb9S21zLyaIuVNr7ACY7TitXruT222/niiuuoLq6mmnTprFkyRIefPBB/u///s8SNvZOBs4E95a7urQfoKHaLKcNdAvEy1nqRHOEVF1RVYO2vVkuk8Qu9e+gLtVcoqReusiNCBqBXNatRlAJTUedqy/4dlN53IFxc3LjhkE3ANL8qW/Of2NTe2xCFwN/+yIfnfqIBqUUfbl5yM3aYeEdsXhKf1ycpL/D/+7PpLzW9qN89GUJduXsgpILkHdM2hA+EgKliNLv54tZu12qa5LL4F+3jiLQy9XK1nafRmWjtnvQx8WHMaFjrPK6Buk6UedkuuMkk8l4+umnKS0tJSUlhf3791NUVMQLL7wgRq6YgsIFEm6Q1k21kPajWU4rk8m06bpL1Zeob7Z9KL0z1vySRnWDVJB66/ho4sN8DJ43l36TrKESWaXUsUfI0A5nVfV29NN1X5790iElK3pE5Djpbw+EgjjSKJ6NaRsBcJG7cO+we7s8JsTbjYVjpRuPmkYlH/5u+xu0NnVO7RSFF1bV85heXdOfrhrChAGB1jSzx+zP209NUw0Al0ddjrPcuYsjzIMm4gSizgm6qeME4OLiQkJCAuPHj8fZ2Zk1a9bQv79ltCR6LcNv1q3NmK6L8ZVC6WrUZFfZbx3H6UuVbDwk2eft6sTyK+Pa7KNf39QTx0lRclb3oI8VhusT4xOjvQhmV2X3vYugszv0Gyuty9KhIte29tiYj09/TF2zdMO7IG4BwR7BRh334LSB2iHI7/+eTk3LzY+tGOQ3iHBPSe7lcMFhag3SdPNRqtQs+1xX1zR1cJBD1TVpsIZaeHuEeYZptaJSilOoarQPHS9bYbTj1NDQwFNPPcXYsWOZNGkS33zzDQDvv/8+/fv357XXXmPZsmWWsrN3Ej1RUg0HuLAdaswzQNMRZtap1Wpe/P609u7v0ZmDCGonZK4fcdJ0hXUHpxLd7Lu+JkXQmluH3Kpda6INfQr9dF0frnOqaKjg09RPAUk8997ErqNNGqICPLguKQKA8tomPjuYZREbjUUmk2mjTk2qJvZXt9ReRY4Dv2je2nFeO6A4xNuV125xDL0mfZQqJTuydwBSLdqkiJ5PmzAFjSyBUq3kYP5Bq762vWG04/Tss8/y9ttvExsbS0ZGBjfffDMPPPAAr732GmvWrCEjI4Mnn3zSkrb2PuRyaXYSSPpCp78xy2kNCsTttLNuW2ohv1+QLmRRAe7cOzm2zT4NygZSS6Vuu/6+/dvoypiCQt9x6oOF4fpMj5pOiIdUgL8rZxd51Xk2tsjKxAohTJCiTbXNkhbT/EHzCfMMM+n4hy/XRWzW775IQ7PSrPaZikGdk7uklM+wG9l3oYTXt0kRZ7kM/nXbqHZv0uyd40XHKa2XxDonRUzSTgOwFvp1Tvsv7bfqa9sbRjtOX375JR999BGbNm3i559/RqlU0tzczPHjx7n11ltRKHo+MqRPYpCu22SWU9p7xKmxWcXff9DJD/z56qG4OrX9/KSWpGoF+Xqk34SIOOnjJHdiwWCpq1OlVrHpnHk+dw5D5HjQ1Ib0UcepsrGS/6b+FwAnmROLhy82+Rxxod5cmSANJy+obODrZNumPceHj8e1Radrt4cbamSUxMzlsY1HUbVEtpfNiuMyB6tr0mAgehljWdHL9hgXNk47C3V/nnCcjCInJ4cxY6QK/sTERFxdXVm2bJnFNSR6PWHDIahFmC3rd7Noy0R7R2vX9ug4fbw/k/RiqcBxfP8A5iS2f6drrvom1GpdxMknEtz9un+uXsKNg2/Uat98de4rmpR9SJvFxUMa+gtQegEq+1jEDfg09VOqm6RO3usHXU+EV0S3zvOIXtTp7d8u0Ky0XbOBu5M74/yloeCFTk6kRY/hjz8WUFQl1TVNGRTEIzMG2cy+nqBWq7X1TQqZgumR061ug6ezp/Y6nFGZ0fci1XoY7TgplUpcXHRy9E5OTnh5eVnEqD6FTGYYdUrZ3ONTejh7aMPuGRUZdjVeo6ymkbUtYXOZDP5yTUKHzrd+fVOPRq1U5iDXFDP24cJwfUI9Q5kRNQOQdHy2Z2/v4oheRh/Wc6purObj0x8D0pdwd6JNGkZF+zNpoBTBySyp5YeUfLPY2F2mNeuuJR85hbL7XDEAwS11TQoHq2vScLbsLDnVOQCMDRvbo7KFnnBZhF53XR+WJTDacVKr1dxzzz3ceOON3HjjjdTX1/PQQw9pH2v+CbrB8Jt0azOl6zSjVyobKylvKDfLOc3B69vOUlkvpd9uHBXJ8MiOLwAniiXHyd3JnUF+PbhTLNBXDBeOk4Zb4m/Rrr9I+8KGltiAGH09p76VrtuYtpHKxkoArhlwDVHeUT0636N6UZx/7zhvuxs1tZqpWce0D7+vkeqB5DJYe+tIgr0dr65Jg0E3XZT1uulaYzC3rq915OphtON09913ExISgq+vL76+vtx5551ERERoH2v+CbpBwABdi3TBSShM7Xx/I7DHOqfzhVV8ckDqvnF3VvDEnCEd7ltQU0B+jXT3OjxoOAp5D2ro+rhieEdMCJug/Zwcyj/ExfKLtjXImkRNALlUr9GXIk61TbV8eOpDQFKEvn/4/T0+56SBgSRF+QFwJr+KHWmFPT5nt7h0lMiSTAY0SmlnpfslUNTwhyvimDSwc1FPe8faauEdkRiUqBVYPpB3oO/pwLXgZOyO77//viXtEAy/GXIPS+uTm+CKv/TodBrNDZDSdaNCRvXofObgb9+nomyp0nz48oGE+rh1uK8m2gQ9rG9SKZFd3Kl7HNSxs9bXkMlk3Bx3M/84/A8Avjj7BSvHr7SxVVbC1QsiRklDYIvPQlUBeIfa2iqL83na59oI9NX9r+7ZCKMWZDIZj1w+kAc/PgLAWzsuMGNIiPXrX1tEL6fV1nHRxRmZTE3CgDyWzry5iwPtm5yqHNLKpBrNxMBEk7sfzYmT3IlxYePYkb2DsoYy0krTGBo41Gb22IoezK8QmJVh80EzTuTkl9DDcLcmVQf2EXH67WwRO9KKAAj3deP+qZ0PhDZLfdPpLfB6IrIMvYnpn90qbRcAUmGwphNpy/kt1DbV2tgiKxLTt/Sc6prr+ODUBwDIkPHA8AfMdu4rh4YyOESKRBzJLONgeqnZzm0UajWc+gaAibUN2s1x/XMctq5Jg36azhbddK0R41eE42Q/eIdC/5ZOifJMyDnco9MZpOpsrOXUrFTx4ne6dNmTc+Jxd+k89dZj4cvTW+CLu6DykuH2qjxpu3CeAPB19eXq/lcDUNVUxY/p5hn94xDE6nR/+kKd06azm7Q6QLNjZzPAr/ObF1OQy2UGuk5v7bxgtnMbRc4hqJA6kutqB6NWSjcDhwv3oVTZVl+qp9hLmk6DqHMSjpN9YcYRLOGe4bjIpS5IWw/7/exQNucKpdbnpCg/reJwRzQpmzhVIg3kjfSKJNDdRN0VlRK2Pgm0F7Vr2bZ1pbSfgFuG6IrEP0/73K66MC1K9ARokWTo7RGn+uZ6NqRs0D5+YIT5ok0a5iVFEOkviTLuOltESm6F2V+jI+qO6q6XP6om0t9TkpuoaKjgZPFJq9lhbkrqSjhaeBSQboYH+JrP2e0uMT4x2vE2yQXJdj8P1RIIx8meGHottKRNOPUVKLs//0khVxDtI+k5ZVVl2eyuq6Kuidd+0c2Je/bahC5HHZwtO6ud1t6t+qbM39tGmgxQQ2WutJ+AxKBEEgKlbsPU0lRSilNsbJGVcPWGiJHSuugMVBfZ1BxL8tW5ryiuk1rzZ0XPYrD/YLO/hrNCzoN689/+vfO82V+jPVRKJfXHJRmXBrUTZVFXce/oudrnd+Xs6uhQu2dn9k7ULTd7V0TbPk0HUk2bZt5lo6qR5MJkG1tkfYTjZE+4+ULcbGldUwTpv/XodJp0XZOqiUvVnTkSluOtHecprWkEpDvSMTH+XR6jL3zZrfqm6gLz7tcHaB116jP0gTqnRmUj76W8p338YNKDFnutm8dEaseZ/JiSz4Wiaou9lob/fbsZf6U0vumAfCQv3TGFaZE6nS5HdpwM1MLtxHECMX7FLhynt956i9jYWNzc3JgwYQIHDxo3QHDjxo3IZDJuuOEG7bampiaefPJJhg8fjqenJxEREf/f3n2HR1Vnjx9/z0x6b6SSQkINvXcFjBQVrGBB7K6y63fXRV3c3666qLvKFlb36351beiuFcu66iIICAoICRA6ISQhBQhJIIU00mbu74+bmcyQNglTMsl5PU+eZ8q9d05CmJz5lHO46667KCx0TuLQZTZsweLsBeJ552tYu1NttunppmVlB+UHzJnvqOtW4uRn5e4oa4/rA+YnzMff3R+ADXkbuFDvuGkWp+oDhTC/yP6Cklq1RMCs2FkMDRlqt9fyctfxwEx1R6+iwGt2Xuu0J6+M6n0tNcgipi4l3N+LMO8whoeqpUcyyzMprnG9D0k1jTWm1ibhPuEMD+s5pVQmR0023e6L7Vecnjh9/PHHrFixgmeeeYb09HRGjx7NvHnzKCnpuBZIXl4ejz/+ODNnzrR4vLa2lvT0dJ566inS09P5/PPPyczMZNGiRfb8Nmxn0FzwDFBvZ3wFjRe7fSmLZr9OSJxe+CaDRr06zPzAzAH0D/ax6ryDJeqIk6fOk8HBg7v+wvHTIKCjdVQaCIhRjxOAWm3++oHXA2pz5S+yv3BuQI4SN6VlN2svXCDeqG/kzcNvmu4/POphu7/m0slxBHiplW7+vf8MZyq6/x7WkbKaBh59fy8LtKkANGk9GXJlywfPK/pfYbq9/cx2u8RgT9vPbKfRoNakmhM7B63G6X+uTUK8QhgWopYhyCjLMG066Cuc/i+xZs0aHnzwQe69916Sk5N57bXX8PHx4e233273HL1ez9KlS1m1ahWJiZaL5QIDA9m0aRNLlixhyJAhTJkyhVdeeYV9+/ZRUFBg72/n8rl7wbDmJK+hCrK+7falnLmzbldOKRuPqp/y+vl7snyWdZW/Sy+WmloLJIcm465z7/qLa3WQsqqdJ5vXV81/UT1OmCwe0vJH55MTn/SN4nZegRDZvI6u5BjUljo3Hhv76uRXnK1Re4rNjJnpkFELfy937p6WAECTQeGNH2xfWNVgUHhs3QESatIJ06hV0HVD5qnr1pqZJ06uOF33Xb5ZtfAesJvuUubtV1LPpjoxEsdzauLU0NDAvn37SElJMT2m1WpJSUlh1672tzk+++yzhIeHc//91vVYunDhAhqNhqCgoMsN2TEsWrB0f3edeeLkyJ11eoPC8/9tKT/wxNwh+HlaV2vVfAfMZfWnq69s+/GAaFjyT0h2kRFIB0oMTGRS5CRA/X3pM2+G5tN1Bb1ne3WjoZHXD71uum/PtU2Xunf6ALzd1Q8mH+0poLS6vpMzuub17SfZmnmO67Qt00SaEZYtv5JDkwnxCgHU6aQGfYNNY7CnBn0DP5xRk70AjwAmRE5wckSt9eWyBFZXDreH8+fPo9friYiwXGsSERHB8ePH2zxnx44dvPXWWxw4cMCq16irq2PlypXcfvvtBAQEtHlMfX099fUt/7ErK9U/ugaDAYPBtp+6DQYDiqJ0fN34GWh8w9HUlKCc+Baltlz9ZNxFAR4BBHkGUVFfQW5l7mV/L1bFDnyy9xRHC9WfYXKUPzeOjbb6tY3TdAAjQ0d2L2ZFQZP6D+PYEvpr/kpNI/hGJKJJmK6ONNn439UerP1529LiwYtJK1LXGH6c+TGTIyd3ckbbnBF7t8VNQ7vrFfV27naUflNdI24zbf28/5vzX85UnwFgStSU7v9/6oYgbzdundifd37Mp67RwNs7cnlsbtvT7l39XdmXX86fNmbiRhPzdXsAUNx9UQZe3er/9YzoGXx58ksuNl1kz9k9FouaL5c9f8d3F+6mprEGUEfOdOhs9jq2intMvzF46jyp19ezq3AXer3e7tXi7fkz78o1nZo4dVVVVRXLli3jjTfeICys895DjY2NLFmyBEVRePXVV9s97oUXXmDVqtZTO+Xl5TQ1db8kQFsMBgNVVVUoioJW2/6An2/SArwPvYtGX0/13o+pT76lW68X4xNDRX0FJbUlnCk5g7ebd3dDtyr2mgY9f9qYabr/85n9uVBRbvVr7Du7z3Q71j2WsrKuz527F+wg8LxaAqExeiLlCddRVVVFnb8/2grXWfRs7e+KLY3xHUOIZwhl9WVsPbWVzMJM+nn16/J1nBF7d2kChhGCBg0K+pM/UDn0YZeI29ylP2+9oucfB/9hev6OhDu69X/pctwyIpj3dhfQZFB4d1cei0cGtTny3JXflYqLjTzywRH0BoVZ2iMEa9Rdew0Js6mqqgMsawqNDRrLl6jFbjflbGKIl+1aLtnzd/yb7JZCtJOCJ9n0386WcY8IHsG+8/soqi3i4KmDxPnF2SjKttnzZ15VVWX1sU5NnMLCwtDpdBQXW+54KC4uJjKydT+enJwc8vLyWLhwoekxY5bo5uZGZmYmSUlqHRFj0pSfn893333X7mgTwK9//WtWrFhhul9ZWUlsbCzBwcEdntcdBoMBjUZDcHBwx//wE+6EQ2ozTr/cb/Cd0b2CdUkhSRwtV4tJVrpVEhMS063rgHWxr/32BKU16oLGuckRzB2TYPX19QY9xy+oI42RPpEMie7em5xm4wem27rpjxASEmLdz7yHsfp3xcZuGXwLrx9+HYNi4Ltz37F89PIuX8NZsXdPCESOhKJDuJVmEuhhICgkxAXibnHpz3t97npO16hrBSdGTOTKgVc6PKaQELhx7Hk+2Xea6no9/z1RxXKzOk9G1v6uGAwKT3y1j+IqdcrtnoB0U57kPvY2QkJCWp2T4pfC8/ufR6/o2VO6p81justev+N6g55dJerUl6fOk6sHXY2Pu3Uba6xhy7hnxs1k33n1w+7xi8cZEzfGBhG2z57vK25u1qdDTk2cPDw8GD9+PFu2bDGVFDAYDGzZsoVHHnmk1fFDhw7l8GHLKrC//e1vqaqq4uWXXyY2NhZoSZqysrLYunUroaEdV5729PTE09Oz1eNardYub54ajabza8dOhOAEKM9Dk/cDmpoS8O96c0fzZr8FVQWXvTi0o9jPVFzkzR1q+QF3nYb/d82wLv38siqyuNik7sAZ1W9U9372pTktC+oD+qMdeh1otNb9zHsgZ8S9eMhi3jzyJgbFwOdZn/OT0T/BXdv1Rfou9TNPmAFFh9Cg4LPvVbSjbkBrnNZ1Ecaft4LCG4ffMD2+fMxyp/0bLJ+VxKfpp1EUWLszj/tnJOLl3vpnas3vyps7ckz9LiN9NFyhNJet8QxAO+hqaOPcIK8gxoaPZW/xXgqqCjhVfcqiTMvlssfv+MHzBymtUzcpTIuehp+nn82ubWSruKdFT+Ol9JcAdR3ZHcPusEF0HbPX+0pXruf0d7QVK1bwxhtv8O6775KRkcHy5cupqanh3nvvBeCuu+7i17/+NQBeXl6MGDHC4isoKAh/f39GjBiBh4cHjY2N3HLLLezdu5f3338fvV5PUVERRUVFNDS4zuJANJqWmk6KAY7+u1uXsdhZZ+eSBKu/OU59kzoCeM+0BBLCfLt0vnn9pm5VDAdIewNTW5VJD4DOpWaje4RI30iu7K+OUJRcLOH7U5dXiNUl6DxMN30OvIX2nwvhpREu2dNwU8EmTl5Qd7KNCx/HhAjnLSxO7OfHNSPV9hznqxtYt/dUt66zL7+c1RtalgC8OeMCWuMGkCHXqLuR2+Fqu+u25PfMopdtGRIyxLQAf0/RHpoMtl3a0lM5PXG69dZb+fOf/8zTTz/NmDFjOHDgABs2bDAtGC8oKODs2bNWX+/MmTN8+eWXnD59mjFjxhAVFWX6+vFHF2uxYYPedY4qSbAvv5wvD6pFRkN8PXhkTtdbOpgvDO/Wjrr6Ktj/nnrbzQvG3d31awigj1USP/Yl7Hy59eOVrtcQ2qAYLNY2PTz6Ybsv2O2M+fTcP74/SaO+awt7K2ob+J8P0tEb1A9EP5udxIiyzS0HjLi5nTNVrpQ4KYrCd6fUMgQ6jY5ZsbOcG1AntBqtaQNJdWN1n2nX5PTECeCRRx4hPz+f+vp6UlNTmTy5ZSfPtm3beOedd9o995133uGLL74w3U9ISEBRlDa/Zs2aZb9vwh76DVHXXgCc2adOQ3VRXEAcmub9ZfYacTIYFJ77uqX8wC9TBhHo3fWpHeOIk5vWjWGhw7oeyIEP1dpXAKOWgI/t1jP0NVOjpxLrr0597z672+F1wBymlzWE/u7Ud2RXqD3iRvUbZeop5kwjYgKZNUTdYHCm4iJfHrC+i4OiKDz+yUEKL6iLmSYlhPDLK/tDZvPiaa8gSJzV4TUSAxOJ9lUL4u4t3mvardYTZVVkcapKHZWbEDGBQM+u76Z2NPOdin2lLEGPSJxEB8xHnY581uXTPXQeRPupbxr5lfkoSlt/IC7PV4cKOXCqAoBB4X7cPqnrOysu1F8g94K6PmpYyDA8da3XnHXIYIC0lk/aTLZ/heTeTKvRsmTwEtP9dSfWdXC0C+sFDaH1Bj17ivaw+cxmXtr3kunxh0c5f7TJ6KdmBXBf/T4Hg8G696G3duSyOUPtIhHi68HLt4/BLWczGJOfYQvBzaODK6hrYmb2VztMNBmaenSLEPPedLPjZjsxEuuZJ+e7zkriJHoC82HoQ+vUBlBdZGy9UtNYY+qQbisXG/Ss/qal5tZvr0vGTdf1XyvzId5urW/K+Q5Km7uxJ8yEiJ7T18lV3TDwBjy06h+l/2T/h7qmuk7OcEHWNnouybBvHN20OX8z8z6bxwObHuD3B37PqWp1tCLWL5YZMTM6OdtxJg0IYWKC2uA7u6Sab491/nNPLyjnRbP3ljVLRhMV6A1HP2856JKil+2xaL9yuue2X/muoKVaeE9f32QU5RdlWhJy6Nwhqhvs39jZ2SRx6ukC+7d0cC/NgqJDHR/fhgEBLTvrbD1d98b2k6Zh9FlD+nHl4K7X/AE4eK5lfdOosG4kTqlmdbpktMkmgryCmJcwD4DKhko25G1wckR2YG2j529Wquud8nZ268OLPWzO38yKbSsorm2dhJyqPmUxetET/HR2y6jT/23L7nD0W13XtJ+m5pGp5bOSmDUkHOqr4UTzrlmfMEi4ot1rmJsUOck0ir399Ha7jLxfrtNVpzlepiaKw0OHE+nb9V3UzmIcddIrevYW73VyNPYniZMrGGlW/LIbi8TNt9/aMnEqrqzj1ebu5zqtht9e2411Sc0OnWtJCEeHd3Fh+PksyG5eLBoYB0MWdDsOYenWoWaLxI/3wkXipobQnU1pGeDYf+Cda+C1GbDvXWiodUSEbdIb9LyY9iJKm2uzQIOG1Wmr0fegtVmzBvcjOUqti3fo9AV2ZLc9+q2uazpkag48IT6Yx65urjp+YgM0lywheZHVu2a93LxM7YRKLpaYEpSeZOuprabbrjLaZNTX1jlJ4uQKkm8AbfMbxOHPutwuxDhVB7bdWfenjZlcbFTfmJdOjmNguH8nZ7TNoBhMC8NDvUJNCzmtltbSj4tJD7pU7Z2eblTYKIaGDAXgSOkRjpYedXJENqbVwfzVzXcuTZ406lfyDeAb3vJw8RH46uewZhh8+xSUO64PJKiNsN/LeK/NkSYjBYWi2iLSS9IdGFnHNBoNP53dssPu/7a2vdnl7Z15bM5Qv7dgH3f+dvvYlun/I2bTdMOtm6YzspiuO9PzpuvMRwhdLXGaGDkRnUZ93+0L65wkcXIFPiEwsLkRclUhFHRtoao9ajkdOXOBz9LVysQBXm48mtJ2Hypr5F3Io6p5N9yofqO6tqC17gIcaK4U7u4D45Z1Ow7RmkajYckQs0Ximb1wkXjyIrXxc0CU5ePGhtBL3oVfHoGb3oAYs5pIdRXw49/g5dHw4e2Qs9Wm03jVDdUcKDnApyc+5cW0F7l/4/1c+fGVzFo3iz/v/bNV1zhXe85m8djCghFRDGiu77brZCnpBZbtmA6cquDFb1rWk61ZMobooOY2UXUXIHuTetsvQh0t7ALjAnHoeWUJyurK2F+yH1Dfr80LF7sCfw9/RoapO8BzL+RSVFPk5IjsS6oDuoqRi9VhalCn6xKsX/gZ7hOOt5s3F5sukl95+Z+OFUXh2a+Pmf5G/PyqQYT4dryzpSMW65u6ujD8wAdgXIw4+jbwDu52HKJt1w64lr/s/Qs1jTWsP7mexyY8RoCHbVsROV3yIhh6LYa8nVQXZeMXOdCycribp1riYtQStTRI6uvqImV9A6BA5nr1K2yIOuo5+nawsuJzg76B3Au5nCg/QXZFtvpVnk1hjfXb9tvTz6d7aw7tRafV8PCViaz8TO0A8X9bc3h92TgALlxs5JEP0mnUq28sD12ZyOyhZiN9x//b/PMGht/Y5ZHlGL8YkgKTyLmQw6FzhyivKyfYq2e8X2w7tQ2Dos4kzImb02N2Q3bFlOgpHDh3AFCn624cdKNzA7IjSZxcxZAF6ohKYy0c/QIW/KnTbbhGWo2W+IB4jpcd53TVaRr1jbjrul5nyWjD0WLSctWmkwPCfLlrakK3rwWWFcO7VPjSYIBUsxIEkx66rDhE23zcfViYuJCPMj+iTl/HVzlfsXTYUmeHZXtaHSTMoCEgWW201l4LhpjxcNM/YO7zkP4O7HlbHQkGOJ8J6x+HLc/CmKVqEhWqTk/pDXpOVZ0iuyKbrPIssiqyyK7IpqCyAL1i3VqkMO8wBgYNJDEwka9Pfk1lQ2Wbx2nQEOETwbjwcV39KdjdjWP789LmLM5eqGNzRjHr9p6iqe4iXxw9welydf3S+PhgHp97Sa/Ky5imM7qi/xXkXMhBQWFn4U6uS7yuu9+GTbnyNJ3R1KipvHbwNUCt/SaJk3A+D18Yeq062lRXATlburQI2pg46RU9p6tPd3souKHJwOoNLQsrf71gKB5ulzfja1wYrtVoGR7ahTICWd9CuVr7icRZED70suIQ7bt1yK18lPkRoFYSv2PoHS75qbgjeoOevUV7yTuXR0JDAhMiJ6DraFTDrx9c8QRMfxSOf62OQhX8iAIUN9WQdWgt2cffIzs0niwff07WnadeX29VLH7ufgwMGsjA4IEMChrEoOBBJAUlmdpbgLquZMU2tTm5+SJxY8HblZNWdhy/k3i4aXlgZqKpaO6Tn1tWm/bx0PG/t4/F3bysSW0ZnGxePB3QH/pP7NZrz+w/k7VH1wLqdF1PSJxqGmvYXajWlgr3DmdE2AgnR9Q9I/uNxNfdV/1+zu7GoBjQanrnaiBJnFzJyMUtu+oOf9KlxOnS1itdTZz0BoXUk6W8uyOHgjL1U+G0pFCuTrZyO3c7ahprTJWOBwcP7loX8NTXWm5LCQK7Ghg8kPER49lXvI/cC7nsKdrDpKhJzg7LZjbnb+bFtBctFlxH+ETw5KQnSYlPafe8iroKsiqyyNJeJHvYVLJDfciuyKEKsxEkpRJq2h4Z8tB6kBSUZEqSBgYNZHDwYCJ8IjpNTFPiU1gza02bca+ctLLDuJ0tzK/90fLaBj2HTle0rG0CyPgKjH3Qht/Q/mhgJ8aEj8Hf3Z+qxip2ntlJk6EJN61z/wzuOLODBoM6BTk7brbLJhvuWncmRkxk2+ltlNWVkVWexZCQIZ2f6IIkcXIlSXPAOwQulqktB+qrrV5HYbGzrosLxDccOcuqr45x9oJlAcTZQ8Ive9ThyPkjprn9LtVvKjne8gk0OAEGzb2sOETnbh1yK/uK9wHqqFNvSZyM9ZAu3dpfUlvCim0rWDNrDdOip5FTkUN2RbbFWiRrC8pqFYW4xiYGNTYyqAkGxkxh4Nj7iE248rL+cKfEpzA7dnbLSFk/K0bKnExvUCwKW15KA6z66hhXJ0ei0za/v3Sj6GVb3LXuTI2eyrf531LZUMmhc4cYF+Hc6Uzzabo5cXOcGMnlmxI9hW2ntwHqOidJnITz6dzVT1t731bXOmV+A6MWd3oaWI44dWWB+IYjZ1n+Xnqb1WL+sD6D2BBv5o+IauNZ63S7fpNFCYKfSAkCB0iJSyHEK4SyujK+K/iOc7Xnetzi467qqB6S8bHHv3/c6jVIAJG+kQwKGqROswUmMfBCMYlHvsTTfAt82ddw+GsYcCVMfggGz+/277BOq2Ni5ESSPJIICQlB283RGEdJyy1r9SHMnAKcvVBHWm4ZU5NCofoc5DbvggtOgOjLS3Su6H8F3+arRTS3n9nu1MSpUd9oqmTu7+HPxMjuTUH2FBb1nM7u4p4R9zgvGDuSxMnVjLhFTZxAna7rRuJk7AnXGb1BYdVXx9opsadq9cmwi8wTJ6tHnC5WwMEP1dvuvjD2zm69tugad507Nw+6mTcOv0GT0sTnWZ/z0GjXXpCfXpLeYT0koN2kKcgziEHBgxgYNJBBwYMYFKSuQ/L3aKOe2fifqKOkaa/DwY9aeq3lfq9+BcXBxAdg7LJe35y6pMq61j2m4zL+A82j0gy/ES5zlHtGzAw0aFBQ+OH0D/xi3C8u63qXI7UolepGdVfwlf2vxF3b/U07PcGAgAFE+ERQXFvMvuJ91Ovru9531AVI4uRq4qZCQIzaeDRnC9SUgm9op6f5efgR5h3G+YvnrZ6q6/Inwy5SFMVUiiDAI8CiwnmH9r+njrgBjLkDvHp+B/He4pbBt/Dm4TdRUPjkxCfcP/J+p68R6S5FUdhbZF17iFj/WCZGTlTXIjUnSqFeoV2bqg4fCtetgaueVstopL3esrmhogA2PQ1bX1A/DE16CCJdc5FwZ8L9vbp23JF/tzzYzd105kK9QxkRNoLD5w9zovwERTVFTmtv4oq96Tqi0WiYEjWF/+T8h3p9PQdKDjA5arKzw7K5nj2mK1rTalsa/xqa4NgXVp9qTEzK6sra3cZslF9awyvfZVl1XWs/QV7qdNVpyuvVAnhWF7406CHNvATBT7r12qJ7ov2iTRWYi2uLe1whQWs0GhpZf3I9S9cv5f8O/p9V56yatopV01axLHkZU6OnEuYd1v31fd5BMPWn8D/pcMcnLcVtQW0nkv5PeG06vL1ALT2ib+re6/RQkwaEEBXo1W6TGw0QFejFpAEhUHkW8neqT4QOgsiRNolhZozzi2EaFIOpzYqnzpNp0V0r6NlT9YX2K5I4uaKRZtNzhz+1+jSLdU4X2l7ndLTwAv/z4X5m/3kbO3NKrbqutZ8gL3XwfEvhS6vrN53YoH46B0i6Cvp1v2K56B5XrSReUVfBm4ffZP5n81m5fSWHzx/u9BwNGiJ9Iu1TD0mrhcFz4c7P4JF96s5Q82m+gh/hk7vh5VHww5+gxrqF6D2dTqvhmYXJQNtNbgCeWZisTv8f+wKMiwVG3HTZ03RGPaH9yqFzh0ybC6ZGT+3ajuIezNjwF3pv+xVJnFxR5Ei1QjGob64Vp6w6rb3WK4qisPtkKXe/nca1f9vBVwcLaW5K3mHrU4tPht1gsb7J2orhUoLA6aZHTyfGLwaAnYU7OVVp3e+fs2SXZ7Nq1ypSPk3h5fSXKaktMT03JHgItw29DWipf2Tk0HpIYQNhwWp4LAOu+XPL/29Qp+W/e17tjffvh+HMJf3nDHrI24HHiS8hb4d6v4ebPyKKV+8cR2Sg5YeuyEAvXr1zXMuGExsUvWzLsNBhhHqpywtSz6ZaXV/LlnpD0cu2hHqHMiRY/f3NKM2goq7CuQHZgWsuTujrNBp11Gnr8+r9I5/BjEc7Pe3SkgQGg8KW4yW8ui2b9IIKi2NDfT24d3oCUYHePP6JOjJkvki81SfDbjCub9KgMfU56lDxsZbdNSFJllMcwmF0Wh2LBy/mpfSXAFh3Yh2PTXjMuUFdwqAY2HFmB+8de6/Vp14NGmbFzmJZ8jImRExAo9EwOXJyz6iH5OmvVhuf+ACc3Kaug8r8BlDUdiMHP1S/+k9U10FpdfDtb9BWFmJqghMQrTYuTl7kuLi7Yf6IKK5OjiT15HlOni0lMSqUyYlhLe8nFafgdJp6OzzZpgVutRotM/vP5IvsL7jYdJG9RXuZHjPdZtfvjKIopsRJp9Exq/8sh722I0yNnkpmeSYKCruLdjM/Yb6zQ7IpSZxc1cibWxKnw59alziZjTjtyMvgy60/kFVSbXFMTJA3D12ZyOLxsXh7qJ+yfT11reo4RQZ68czC5G6XIrjYdJETZScA2t+JdCnztU2TH+p2ETxx+W4cdCN/P/B3Gg2NfJH9BY+MfaRH7J6pbazly5wveT/j/VabIHzdfblx4I3cMfQOYgNiLZ7rcfWQNBpImq1+lefBnjch/V9q1wCA03vUr7ZUnoV1d6kNint48qTTapiSGMrgIE1zKQWzD2FHbbso/FIzY9TECdTpOkcmTtkV2ZyqUkdqx0eMJ8gryGGv7QhTo6byztF3ANhdKImT6ClCEtVO7Wf2QvFhKMmA8GEdn+IZgRYdBvQcLsmm1ixpGhLhz/JZSVw7Ksqy1QFWfDLshozSDJoUddGrVdN0tWVw8GP1toe/2kRVOE2IVwhXx1/N+tz1VNRX8G3etyxMWui0eM5Wn+XD4x/yadanVDVUWTzX368/S4ct5YaBN+Dn0X7B2B5bDyk4Qe2LN+v/weF1amuXkqMdnKAAGtjwpNqmyVVrnNmo6GV7pkZPxU3jRpPSxA+nf2DlxJUOayPUm4petmVsxFjcte40GhrZVbgLRVF6VYumHvLOILrFykXiFbUNvLw5iyv/uJ2merUbuNbjPGBgQnwwb98zgQ2PzuSGsTGtkiYj4yfD+cPCmJIYellJE3SjflP6P9UdRwBjl4JXQMfHC7u7dcitptsfZ37s8NdXFIUDJQd4bNtjLPh8AWuPrrVImiZGTuTl2S/z9Y1fc2fynR0mTS7BwwfG3wPLd8K8Fzs5WFHXRuX/6IjIbK/sJBTuV29HjjI1SrYlfw9/U/HLU1WnutxR4XKYlyGYE9v7EidvN2/ThorCmkLT6FpvISNOrmz4jbDx12pxuMOfwJzfWuw6OXvhIm9uz+XDtAJqG9QFo94N/dB6nkejbeS1ewYyf2jHo1T2YlzfBFaMOOmb1KkKIylB0COMDR/LoOBBZJVncfDcQY6XHWdoiP0bLTfqG/k2/1veO/YeR0otG8S6a925ZsA13Jl8p0NicQqNRm0wbI0f/qwW1IzoQvPsnsB8ms4Oo01GM2NmklakrqP64fQP3W5+3hVnqs+QUZYBQHJoMlF+3e+80JNNiZ5CalEqoJYliAuIc3JEtiMjTq7MP0Jt2QBQkQ+n1WJ+2SXVPPHJQa7441be2pFrSpp0Wg2JQQmm0wMDKhwcsMq88KWfux9JQZ18msxcDxeaP7EMmmuXT5+i6zQaDbcOdtyoU3ldOW8ceoP5n83nye1PWiRNoV6h/HTMT/n2lm95fsbzvTdpMvKzsrl27jZ4dRq8PR8OfQJNjt891i0WRS9vtNvLOKMswdaCrabbvWk33aUubb/Sm8iIk6sbudjU7Pbcrvd4apuWjceKUMy2wHm6abl1YiwPzkwk9Xwtq3Z9A6g768x/uR2luLaYcxfPATAibETn3cBTzReFSwmCnuS6pOtYs28NtU21/Pfkf3ls/GM2nxLLKs/i/Yz3+frk1622jQ8NGcqy5GXMT5iPh87Dpq/bo8VPU3fPVZ6FdpsiaVqeK9ilfm0Ig3HLYPy9EGxlpX5HO3dCXbcJ6jrO4AS7vdSAwAHE+MVwpvoM+4r3UdNYg6+7r91eD3pvGYJLDQsZRpBnEBX1FaSdTaPJ0OSyXQYuJSNOLk4Zei0GbfMfjKOfs+noGVPS5O/lxiOzB7LzyTk8e/0IYkN8LGs5XchzeLzQxWm6osOQv0O9HTYYknrfegBX5uvuy3WJ1wHqTsmvTn5lk+saFAM/nP6BB799kJu+vInPsj4zJU0aNFwVdxVr561l3XXrWJS0qG8lTaAu+J6/uvlOW2UkNXDja7DgT9DPbPSt9jzs+Cu8PBreXwInNva8uk92XhRuTqPRmEadmgxNdq90XVZXRnqJWocrPiCexMBEu76eM2k1WlO7larGKo6WdrShwbVI4uSi9AaF/x46y8I3D7OhcQwA/TSVTNMepZ+/J79eMJQfn5zD4/OGEObXsk3cvJZTfmXb1cPtzTxx6rRiuHnBy0k/sVnlYGE7l1YSV5T2RkA6V9tYy4fHP2TRF4v42ZafsfvsbtNzvu6+LEtexn9v+i8vzX6JCZETetVOnS5LXqSWHAi4ZI1MQLT6+OjbYPJP4Ke74Z716pZ+UxNZBbI2wgdL4G9jYPsaqD7n6O+gNUWxLHqZfIPdX9K8/Yq9p+u+P/U9huaGxXPi5vT639+pUS0zGrsLd3dwpGvpHeNmfUh9k55/p5/hHz+cJPe82mH9P9ppXKNTFziuGnCM6Ht+hZd721uQQ71C8XP3o7qx2qG7SMxZvaOuplRdlwHgGSAlCHqoISFDGBs+lv0l+8muyGZf8b4utygprC7kw+Mf8tmJz6hqtCwnEOsfy9JhS7k+6XrX3xlna8mLYOi1GPJ2Ul2UjV/kQLQJ0y1LEGg0kDBd/aouUXeo7nunZd1gRQFsWQVb/wDDb4AJ90PcFOd8SCk5Bucz1dtxUyEwxu4vOTFyIl46L+r0dWw/vd2uW+f7yjSd0ZRoy/YrD41+yInR2I4kTi6iqq6RD9MKeHN7LiVVlus8SiKvoLHyTdybqkk8txVoALzbvI5GoyE+IJ6jpUcprC6krqkOL7fu9ZrrjgZ9Axml6o6S+ID4jgu/pb8DxjUtY5eBp/zR7KmWDFnC/hJ1+/i6zHVWJU6KorC/ZD/vZbzHloItpk/iRpMjJ3Nn8p3MjJnpvEKUrkCrg4QZNAQkQ0hIx4Vh/cLhisdhxi8h61t1t2r2FkABQ6O6O/fwJ2ql7on3w6hb1WrmjmKnFisd8XLzYnLUZL4//T3nLp4joyyD5NBkm79ObWOtaSqwn3c/67oluLgYvxji/OMoqCrg4LmD1DbW9oqefDJV18Odr67nzxszmf7id/xh/XGLpGlaUij/un8Sn//PHNxH3KA+2FClrlvogHG6TkFxeH2NzLJMGgwNQCejTfpG2PNW8x2N2oZC9Fhz4+cS7KnWCNtUsInSi+03iG7UN/JVzlfc9t/buHvD3WzK32RKmjy0Htw48EY+Xfgpb857k1mxsyRpsgetDoYsUBsM/zwdpv0cvM16TpYcg/8+Bn8ZCl+vgGIHrE9RlJb1TRotJF9v/9dsZr677ofTP9jlNXac2WF675sTN6fzTTG9hHEDUpOhib3Fe50cjW3IiFMPdaqslje2n+TjPaeob2r5JK7RwLzkSB6elcSY2KCWE0beAgfeU28f/kQdcm/Hpc1+BwUPsm3wHbB6Yfjxr9UCfqC+wYfYv76K6D4PnQc3DLqBtUfW0mRo4pX9r5Dsn0xCQ0vrkrK6Mj7J/ISPMz827ao0CvUK5baht7F48GJCvUOd9F30USGJMPc5mP0bOPYfdRTK2COuoRr2vqV+xU1Vp/GSF4GbHdrrFB1SC18CxE9Xy604yKXrnB4ebfvduxbVwnth0cv2TI2aaipVsqtwl0WS6qokcephjhdV8tq2HL46dBa9oWWRrbtOww1jYnjoyiQGhrcxZTXgCvANh5oSyNoEFyvAO6jN1zBPnBy9QNx8fVOHC8MtShD0jnnx3m7x4MWsPbIWgM9zPudz1NGDUK9QBgYPZH/xftMnbqNhIcNYlryMeQnz+t7OuJ7G3QtG36p+nT2kJkuHPoFGdS2lvUsaaBy4m+5SUX5RDAwaSHZFNofPHaasrowQr5DOT7RSo76R7afVhef+7v5MjJxos2v3dBOjJqLVaDEoBrvvWnQUSZwcSG9QSD1Z2tzvTbHo97Y3r4z/25bDd8dLLM7x8dBx+6Q47p8xgOigttctAerQ+4ibIfVVdV3Q8a9h7J1tHmq+sy73Qu5lf19dcei8mjh56bzaH+kqPKC+QYO6ldpY5FP0aJllmW0+XlpXSunZlqk7rUbLnNg53Jl8J+PCx/X6nUUuKWoULHwZrn4WDq1TR6HOHVefM5Y02PESDLoaJj4AA1MuryeeorRUC9foYJjjpumMruh/BdkV2Sgo7Dyz06a9F9OK0kybHq6IvQJ3nXsnZ/QeAR4BjAgbwaFzh8i5kENJbQnhPuHODuuySOLkIBuOnGXVV8c4e6Gu+ZEcIgO9uHlcDGm5ZezJK7c4PtjHnXumDeCuqfEE+1r5SXzkYjVxAnW6rp3EKc6/pfS9I3fWnb94njPV6vTb8LDh7RdDu3S0Sf6w9nh6g54X0zrun6ZBw53D7mRp8lJi/Oy/W0rYgFegur5w4gNq37s9b0LGV+pCchR1gXnWtxAYBxPugbF3Wd8Oxoxb8QE0xl1+ibPA1/HTtTNjZvL2kbcBdZ2TLRMn8950fWE33aWmRE0xzTbsPrubRUmLnBzR5ekbq9OcbMORsyx/L90saVIVXajj71tzLJKm6EAvnlmYzM4n5/CLlEHWJ00AMeMguHktUO4PUFXU5mE+7j5E+KjrBxw5VWfV+qbqc3CkuWGxV6C6q0f0eOkl6RTXFnd4jILC7LjZkjS5ImNJg8VrYcUxmPMUBMa2PH+hALY8C2uGwaf3Q/4u6EI9L8+s/7bccfA0ndGY8DH4e6g7CHcW7qTJ0GST6xoUA1tPqd0dPHWeTI+ebpPruhLzek69YbpOEic70xsUVn11rN2mCEYD+/nyl8Wj+f5Xs7l3+gB8PLoxGKjRqIvEQW38a94o8xLG6boL9Rcorytv9zhbsmp90753QN+8Dmbc3eBh3/YHwjbO1VpXPNHa40QPZixp8IuDcPtH6jSdsXq5oVH94LN2vtojL+0NqKvs+HqKAY9stQ0UWncYeq1dw2+Pm9bNlNRUNVRZfNC7HIfOHTJthpgaNbVXbMfvqtH9RuPtpi412X1292UVye0JJHGys7TcslYjTW159voR3Dy+P+66y/wnGbm45fbhT9o97NKddY7QaeFLfaM6FQDqduSJDzgkLnH5+vlYNz1j7XHCBViUNNgP03/RuqTB+sfVUaivfwlFR1pfw6CHtNfR1TSPjifNAe9gx8TfBnuUJTCfppsT13d205lz17mbFsSfv3ierIosJ0d0eSRxsrOSqs6TJoBz1TbqWt5vCEQ2F1Y7sw9Kc9o8zNE965oMTaZeRdG+0W3/AT32H6hufgMdck3PbUIqWhkXPo4Inwg0rfqmqTRoiPSJ7HJFceEiQgaoC8lXZMCNr0Ps5JbnGqph79vw2nR4a5662LypHo59CS+NQLvx1y3HnkpTH3eS6THTTb/Dtmi/oiiKqQyBVqNlVuysy76mq+pN03WSONlZuL91VbmtPc4q5qNORz5r8xDznXWOGHHKKs/iYtNFoIP1TeZ96Sbbvo6KsB+dVseTk54EaJU8Ge+vnLRSiln2dsaSBvd/Cw/vUEsWuJtNt5/aDZ8/CH9MgnXLoLLQ8vy6Clh3l9OSpxCvEFNF76zyLM5Wn72s6+VU5FBQVQDA+IjxBHs5bzTN2YyFMAGLHpSuSBInO5s0IISoQK92PoerKwOiAr2YNMB2NUMYcXPL7UPr2lykGR/QMprjiBGnTtc3nd4Hp/eot8OHQ8IMu8ckbCslPoU1s9a02moc4RPBmllrSIlPcVJkwikiR8LCl+CxDLjmz2ppEaOGqnZOan6v2vCkOo3nBDP7267pb1/rTdeRxMBEwr3V94Z9xfto0Dd0ckbPJYmTnem0Gp5ZqPY9ujR5Mt5/ZmGyqZ6TTQT2VyvvApRmqRV5LxHtG42HVt2x54iddcb6TdDOiFOalCDoDVLiU9h480bevPpNfjvmt7x59ZtsuHmDJE19mbGkwU93wz3rIaGzytGK2jUg/0eHhHcpW65zMk+cZsfOvqxruTqNRmNq+nux6aLNFt87gyRODjB/RBSv3jmOyEDL6bjIQC9evXMc80dE2f5FjbvroM1F4jqtjrgAtZ5TQVUBejt/ujP+J3HXujM0ZKjlk1XFLc09vYNh1BK7xiLsS6fVMTFyIlfFXMXEyIkyPSdUxpIG4++27vjqjstb2MvQkKGEeYcBkHo2lXp999afFlYXklGmNjQfFjKMaL9om8XoqqZETTHdduV1TpI4Ocj8EVHsWDmHDx6YxPPXJvHBA5PYsXKOfZImgOQbwFhg8vBnYDC0OsQ4XddoaKSwprDV87ZSUVdhGtVKDk1u3Vpj39rmgnrA+HvAvYMK6UII1+ZnZQ86a4+zMa1Ga+pdV6evY0/Rnm5dx1i7CWSazsh8nZMkTsIqOq2GKYmhzB8WxpTEUNtOz13KJ6S5vgpQVQgFrYe9HbWzrsNpuqZ62POWelujU5uICiF6r/hpEBBN68ULRhoIiFGPcxJbTNfJ+qbWwrzDTK22jpYe5UL9BSdH1D2SOPVmndR0ctTOOov6TZcmTke/UBsTAwy7DoJiEUL0YlodzF/dfKedlZ/zX7y83neXaUrUFFNLqB9O/9Dlgo3ldeXsK94HqC2ukoKSbB6jqzKWJVBQSCtKc3I03SOJU282ZAEYq9Qe/QKaLHcxmI842XOBuPkiwNFhZjvqFKWltx5ICQIh+orkRbDknxBwyVKFgGj18WTn9jLz8/BjfPh4AM5UnyG3smvN0Led2oZBUZdHXBV3lTSyNtMbpuukyW9v5uGrti84/IlaHyVni5pMNXPEVJ3eoOfw+cMAhHuHE+kb2fLk6b1QuF+9HTkK4qa2cQUhRK+UvAiGXoshbyfVRdn4RQ5EmzDdqSNN5mb2n0lqUSoA209vJzEw0epzpVp4+8aFj8Nd606jodFlEycZcertOpiuC/IKItAzEKDLn6islXshl5rGGkCdprP45HVpwUv5VCZE36LVQcIMGgYvUmu39ZCkCbq/zqm2sZYfC9U1pf28+7Vf8LeP8nH3YUz4GABOV5/mVNUp5wbUDZI49XZJc1r6Rx1fD/XVFk8bR51Kakuobay1+cu3uzC88iwc+0K97RNqWbRTCCGcLCEggf5+/QFIL06nuqG6kzNUOwt30mBQl0XMjp2NViN/Zi/l6u1X5F+0t9O5w/Ab1NtNFyFzvcXT9l7nZL6+ySJx2vsWGJrU2+PvVVs1CCFED6HRaEyjTk1KE7vOWvcH3nw3nUzTtc3V269I4tQXdDBdZ++ddcYddW4aN5JD1QrqNNbB3rXqbY0OJkoJAiFEz9PV6bpGfSM/nFKP83f3Z1LkJLvF5sqGhQwjwCMAUIuM2rsAs61J4tQXxE6BAHXImZzvoKbU9JTFAnEbJ05VDVXkVOQAMDhkMN5uzYUtj34OtefV28nXN9d0EUKInmVC5ATT+9b209tNO+Xas6doD1WNah++mf1n4q5zt3uMrkin1TE5ajIAlQ2VpgrrrkISp75Aq4WRzWuIDE0ta4uw7866I+ePoDQ37RwV1jxNpyiw26wEwZTlNn1NIYSwFU+dJ5Mj1T/wpXWlnf6B/+5Uy246KXrZMVduvyKJU19hMV33qelmbEAsmuaic7Ze49Tm+qZTqS1Nh6PHQv+JNn1NIYSwpZn9Z5pudzRdZ1AMpjIEHloPZsTMsHtsrsyinpOV68d6Ckmc+oqIERA2RL1d8CNUqFtAPXWepuaTeZV5Xa6Q2xHziuFj+o1Rb0gJAiGECzFf57T99PZ2jzt8/jDnLp4D1KTAx1h8WLQp1j/WtGtxf8l+u+zqthdJnPoKjcZy1OnIZ6abxgXiNY01nL943iYvpyiKqRRBsGcw/f37w4XTcOxL9QDffjD8Rpu8lhBC2EukbySDgwcD6vKD0oulbR4nvem6zjjq1GRoMrWocQWSOPUlI81qJZlN19ljgXhBVYGpgaOp8OWet0Bp3j0x4T5w87TJawkhhD3NjFGn6xQUdhbubPW8oiimaTqtRsuVsVc6ND5X5aplCSRx6ktCEiFmgnq7+DCUqAsd7ZE4tVrf1HgR9r2jPqB1VxMnIYRwAZ2VJTh54aRpjei48HGEeIU4LDZXNilykqlAqCutc5LEqa9pY5F4fEC86SFb7awzX980ut9o9bUulqkPDL8R/CPbOVMIIXqWUf1GmeoO/XjmRxoNjRbPyzRd9wR6BjI8dDgAWeVZNlsqYm+SOPU1w28EYwuAw5+AojAgcIDpaVvtrDMmTho0jAgdDqn/aHly8sM2eQ0hhHAEN60b06OnA1DVWMXBkoMWz5snTrPjZjs0NlfnimUJJHHqa/wjYEDz/HtFPpzeS7hPuKnImy2m6mobazlRfgKAgcED8S08qE4NgjpV2H/8Zb+GEEI4kkVZgjMt03Vna85yrPQYoFbEjvGLcXhsrswV1zlJ4tQXXdKCRavREucfB8DpqtM06hvbOdE6R0uPom9eBD6632hINSt4KaNNQggXNCNmhqnmnXlZgq2ntppuS2+6rhvdb7Tpg/uuwl02LYljL5I49UXDrgNd8462o5+DvslUkkCv6DldffqyLm++vmmUT384/l/1jl+k2mJFCCFcTLBXsKmQb3ZFNoXVhQCm3XQg65u6w0PnwfgIdRbi3MVznLxw0skRdU4Sp77IKxAGz1Nv15yD3O9t2nrFYmH4mcNg7O808X5w87isawshhLMYyxIA7DizgwsNF0gvSQfUgo4DgwY6KzSXNjXKrIq4C6xzksSpr7pkd535zrrLWSCuKIqpFIG/uz8Jh/6tPqHzgPH3dPu6QgjhbBZlCc78wK7iXaZlCVfFXaXWqxNd5mrtVyRx6qsGzQVPdXstGV8xwDfa9NTlLBAvrCmktE6trDvKMxRtXYX6xIibwS+829cVQghnGxoylHBv9X1sT9EethRKGQJbGBg0kDDvMED9uV7uOlt7k8Spr3L3gmGL1NsNVcQXZ5meyr2Q2+3LWqxvKjvT8sTkh7p9TSGE6Ak0Go1pd12dvo695/cCEOoV2tLIXHSZRqMxlSW42HTRooByTySJU1828hbTTf+Mrwj1CgUub6quzcQpdjJEj+32NYUQoqcwFsI0V9tUa7FIXHSdK03XSeLUlw24Anybp8+yviXBX+1UXVpXSlVDVbcuaf5JYWR9vXpDRpuEEL3A5vzNrD26ttXjF5susmLbCjbnb3ZCVL2DeSHM3YU9u56TJE59mVanrj0C0DeQ0NRSP6M7O+vq9fVklKn97wY0NBJoUMA/umVKUAghXJTeoOfFtBc7PGZ12mr0Br2DIupdwn3CTbsSj5QeobKh0skRtU8Sp77ObHddQnlL/abuLBDPKM2gydAEwCjjaNPE+0HnflkhCiGEs6WXpFNcW9zu8woKRbVFpvIEouuMo04GxcCes3ucHE37JHHq62LGQbDaqy6h+ITp4e4kThbrm+ob1CKbUoJACNELnKs9Z9PjRGuuss5JEqe+TqMxjTrFNzaYHu7OAnHz9U2j6+vV6/qGXX6MQgjhZP18+tn0ONHahIgJuGndgJ5dCFMSJ2HaXde/sQm35mVO3VnjZBxx8jYYGNjQCJN/YqsIhRDCqcaFjyPCJ8LUr+5SGjRE+kQyLnycgyPrPXzcfdT+pkBBVQFnqs90coZzSOIkoN8QiByFO9C/US08ll+Zj8HYKsUKxTXFFNUWATCyvgFd3DSIGm2PaIUQwuF0Wh1PTnoSoFXyZLy/ctJKdFqdw2PrTVyh/YokTkLVPOoU36Qu7q7T11FSW2L16YfPHzbdHlVfD1Metm18QgjhZCnxKayZtYZwH8suCBE+EayZtYaU+BQnRdZ7mK9z2n22Z5YlcHN2AKKHGHEzbHqahMZGvscbUCuIR/pGWnX6wYLvTbdHaf1hyLV2CVMIIZwpJT6F2bGz2Vu0l7xzeST0S2BC5AQZabKR4aHD8ffwp6qhitSzqRgUA1pNzxrj6VnRCOcJ7A/x00lobOkR1JWddYdO/WC6PWrkUtBJTi6E6J10Wh0TIydyVcxVTIycKEmTDem0OiZHTgagor7CVBuwJ5HESbQYeQvxjU2mu9burGu8WM7RBrWxb/8mPaGTZJpOCCFE95hXEe+J65wkcRItkm9ggEX1cOua/Z5I+zv1GnVx5CifKPAJsUt4Qgghej+LdU49sP1Kj0ic/v73v5OQkICXlxeTJ08mLS3NqvM++ugjNBoNN9xwg8XjiqLw9NNPExUVhbe3NykpKWRlZdkh8l7GJ4TQAbPxNai76fLKMjs/x2DgYManprujkq6xV3RCCCH6gFj/WGL8YgC1YvvFpotOjsiS0xOnjz/+mBUrVvDMM8+Qnp7O6NGjmTdvHiUlHe/oysvL4/HHH2fmzJmtnvvjH//I3/72N1577TVSU1Px9fVl3rx51NXV2evb6DU0o5aY1jkV1pVSr6/v+ISc7zikb+kpNCZxvj3DE0II0ctpNBrTdF2joZH9xfudHJElpydOa9as4cEHH+Tee+8lOTmZ1157DR8fH95+++12z9Hr9SxdupRVq1aRmJho8ZyiKLz00kv89re/5frrr2fUqFH885//pLCwkC+++MLO300vMGSBqdmvAhSU53R8fOprHPL0AMBT48bg4MF2DlAIIURv15Pbrzg1cWpoaGDfvn2kpLTUvtBqtaSkpLBrV/s/qGeffZbw8HDuv//+Vs/l5uZSVFRkcc3AwEAmT57c4TVFMw9f4oOTTHfzs75u/9jz2ZSd3MIpd7WJb3LYCNyloa8QQojLNDlysqmwaE9bIO7UPePnz59Hr9cTERFh8XhERATHjx9v85wdO3bw1ltvceDAgTafLyoqMl3j0msan7tUfX099fUtU1KVlerUk8FgwGCwvnq2NQwGA4qi2Py6thQfdyVkfwBAbu53GCY/DrSOXZP6Goc8PU3njeo3ukd+X67wM2+Lq8YNrhu7xO14rhq7xG1fAR4BDAsZxrGyY2SWZ3Ku5hzBnsF2i70r13SpYjtVVVUsW7aMN954g7Aw2zWPfeGFF1i1alWrx8vLy2lqamrjjO4zGAxUVVWhKApardNnStsUEj7TlDjlVWRTVnQKPHwtYtc11hB84AMO+XmYzhvgNYCysjJnhd0uV/iZt8VV4wbXjV3idjxXjV3itr8xwWM4VnYMgC3ZW5gTNcdusVdVVVl9rFMTp7CwMHQ6HcXFxRaPFxcXExnZumJ1Tk4OeXl5LFy40PSYMUt0c3MjMzPTdF5xcTFRUVEW1xwzZkybcfz6179mxYoVpvuVlZXExsYSHBxMQEBAt7+/thgMBjQaDcHBwT32l3aE/xj4Ub2dr9MScm4XjFxiGfueT9E21nDIs6X1wLQB0wjpgaUIXOFn3hZXjRtcN3aJ2/FcNXaJ2/5mDZjFBznqh/jDVYe5Zfgtdovdzc36dMipiZOHhwfjx49ny5YtppICBoOBLVu28Mgjj7Q6fujQoRw+fNjisd/+9rdUVVXx8ssvExsbi7u7O5GRkWzZssWUKFVWVpKamsry5cvbjMPT0xNPsyknI61Wa5dfLI1GY7dr24Kfpx8RnsEU15eT5+6G9shnMPo2oDl2DWjTXkcPHG5eGB7hE0GUX1QHV3Wunv4zb4+rxg2uG7vE7XiuGrvEbV/jI8fjpfOiTl9H6tlUNBqN3WLvyvWcPlW3YsUK7r77biZMmMCkSZN46aWXqKmp4d577wXgrrvuIiYmhhdeeAEvLy9GjBhhcX5QUBCAxeOPPvoozz//PIMGDWLAgAE89dRTREdHt6r3JNqXEDyI4qI0Luh0lJ/cSnDNefBuHk3K2gTluWS7u1Pb/Ms2ut9oJ0YrhBCit/HQeTA+Yjw7C3dSXFtMXmUegQQ6OyznJ0633nor586d4+mnn6aoqIgxY8awYcMG0+LugoKCLmeWv/rVr6ipqeEnP/kJFRUVzJgxgw0bNuDl5WWPb6FXSggcQGqRWog0301D8LEvYPx9AGjSXgfgkFfL+qZR/UY5PEYhhBC929Toqews3AmoZQnmhzu/VqDTEyeARx55pM2pOYBt27Z1eO4777zT6jGNRsOzzz7Ls88+a4Po+qaEgATT7Vx3d8Yc/hTG34euLBvNye8AOOQfajpGRpyEEELYmnnfut1nd/eIxKlnT3AKp4kPiDfdznN3g4JdcOEUXof+aXr8oH8QAG5aN4aFDnN0iEIIIXq5QcGDCPFSl4mknk3l29PfsqdoD3qD3mkx9YgRJ9HzJAQmmG7nNxe41Gx5Fq9j/wHggrsvuQ0VAAwLGYanrvXieiGEEOJyaDVaEgISKKsro05fxwsHXwDUDUlPTnqSlPiUTq5gh5gc/orCJUT7RuOuVROmPHc1v9Yc+RSNQe1jd8SzpUK4rG8SQghhD5vzN5Nekt7q8ZLaElZsW8Hm/M0Oj0kSJ9EmnVZHnH8cAAXu7lw6KHrIraXK6qgwSZyEEELYlt6g58W0F9t8TkHtqbo6bbXDp+0kcRLtSmhe59So0VDoprN47qB5q5VQyxIRQgghxOVKL0mnuLa43ecVFIpqi9ockbInSZxEuxLMlsDlubdMzRnA1KMutElPTGmegyMTQgjR252rPWfT42xFEifRrnhtS92rfLPEKc/djSqd+qszqr4eTU2Jw2MTQgjRu/Xz6WfT42xFEifRrgFBg0y3jQvEoWW0CWBUfQP4RTg0LiGEEL3fuPBxRPhEoEHT5vMaNET6RDIufJxD45LESbQrfvB1ptvmU3UHPVsqho/W+UP8NIfGJYQQovfTaXU8OelJgFbJk/H+ykkr0Wl1rc61J0mcRLuCfcII1HkDbY84aRWF4bOfBQf/0gohhOgbUuJTWDNrDeE+4RaPR/hEsGbWGqfUcZICmKJDCSGDOXjuIMVubtRqNChAtoc6+jTYNxqfkbc4N0AhhBC9Wkp8CrNjZ7O3aC955/JI6JfAhMgJDh9pMpLESXQoPiCeg+cOApB7498pKcnGcOZTAEb1n+nM0IQQQvQROq2OiZETSfJIIiQkBK3WeRNmkjiJDg0IHGC6ne8XzInaQNN9qRguhBCir5E1TqJDCQEJptt5lXlklGeY7o/uN9oJEQkhhBDOI4mT6FB8c/VwgPwL+RyrOAZAgEeAxXNCCCFEXyCJk+hQXECcadvn7qLdVDRUAOo0nUbTdm0NIYQQoreSxEl0yFPnSbRfNABldWWmx2WaTgghRF8kiZPolPk6JyNZGC6EEKIvksRJdCohMKHVY8khyY4PRAghhHAySZxEpy42XWz12C1f3cLm/M1OiEYIIYRwHkmcRIc252/m86zPWz1eUlvCim0rJHkSQgjRp0jiJNqlN+h5Me3FNp9TUABYnbYavUHvyLCEEEIIp5HESbQrvSSd4tridp9XUCiqLSK9JN2BUQkhhBDOI4mTaNe52nM2PU4IIYRwdZI4iXb18+ln0+OEEEIIVyeJk2jXuPBxRPhEmCqHX0qDhkifSMaFj3NwZEIIIYRzSOIk2qXT6nhy0pMArZIn4/2Vk1ai0+ocHpsQQgjhDJI4iQ6lxKewZtYawn3CLR6P8Ilgzaw1pMSnOCkyIYQQwvHcnB2A6PlS4lOYHTubvUV7yTuXR0K/BCZETpCRJiGEEH2OJE7CKjqtjomRE0nySCIkJAStVgYrhRBC9D3y108IIYQQwkqSOAkhhBBCWEkSJyGEEEIIK0niJIQQQghhJUmchBBCCCGsJImTEEIIIYSVJHESQgghhLCSJE5CCCGEEFaSxEkIIYQQwkqSOAkhhBBCWEkSJyGEEEIIK0niJIQQQghhJWny2wZFUQCorKy0+bUNBgNVVVW4ubm5XKNcV41d4nY8V41d4nY8V41d4nY8e8Zu/Htv/PvfEUmc2lBVVQVAbGyskyMRQgghhKNUVVURGBjY4TEaxZr0qo8xGAwUFhbi7++PRqOx6bUrKyuJjY3l1KlTBAQE2PTa9uaqsUvcjueqsUvcjueqsUvcjmfP2BVFoaqqiujo6E5Hs2TEqQ1arZb+/fvb9TUCAgJc7pfWyFVjl7gdz1Vjl7gdz1Vjl7gdz16xdzbSZORaE5xCCCGEEE4kiZMQQgghhJUkcXIwT09PnnnmGTw9PZ0dSpe5auwSt+O5auwSt+O5auwSt+P1lNhlcbgQQgghhJVkxEkIIYQQwkqSOAkhhBBCWEkSJyGEEEIIK0ni5CC/+93v0Gg0Fl9Dhw51dlhWOXPmDHfeeSehoaF4e3szcuRI9u7d6+ywOpWQkNDqZ67RaPjZz37m7NA6pNfreeqppxgwYADe3t4kJSXx3HPPWdUKwNmqqqp49NFHiY+Px9vbm2nTprFnzx5nh9XKDz/8wMKFC4mOjkaj0fDFF19YPK8oCk8//TRRUVF4e3uTkpJCVlaWc4I101ncn3/+OXPnziU0NBSNRsOBAwecEuelOoq7sbGRlStXMnLkSHx9fYmOjuauu+6isLDQeQGb6exn/rvf/Y6hQ4fi6+tLcHAwKSkppKamOidYM53Fbe7hhx9Go9Hw0ksvOSy+jnQW+z333NPqfX3+/PkOi08SJwcaPnw4Z8+eNX3t2LHD2SF1qry8nOnTp+Pu7s4333zDsWPH+Mtf/kJwcLCzQ+vUnj17LH7emzZtAmDx4sVOjqxjq1ev5tVXX+WVV14hIyOD1atX88c//pH//d//dXZonXrggQfYtGkT//rXvzh8+DBz584lJSWFM2fOODs0CzU1NYwePZq///3vbT7/xz/+kb/97W+89tprpKam4uvry7x586irq3NwpJY6i7umpoYZM2awevVqB0fWsY7irq2tJT09naeeeor09HQ+//xzMjMzWbRokRMiba2zn/ngwYN55ZVXOHz4MDt27CAhIYG5c+dy7tw5B0dqqbO4jf7973+ze/duoqOjHRRZ56yJff78+Rbv7x9++KHjAlSEQzzzzDPK6NGjnR1Gl61cuVKZMWOGs8OwiV/84hdKUlKSYjAYnB1Kh6699lrlvvvus3jspptuUpYuXeqkiKxTW1ur6HQ65euvv7Z4fNy4ccpvfvMbJ0XVOUD597//bbpvMBiUyMhI5U9/+pPpsYqKCsXT01P58MMPnRBh2y6N21xubq4CKPv373doTNboKG6jtLQ0BVDy8/MdE5SVrIn9woULCqBs3rzZMUFZob24T58+rcTExChHjhxR4uPjlb/+9a8Oj60zbcV+9913K9dff71T4lEURZERJwfKysoiOjqaxMREli5dSkFBgbND6tSXX37JhAkTWLx4MeHh4YwdO5Y33njD2WF1WUNDA++99x733XefzfsP2tq0adPYsmULJ06cAODgwYPs2LGDBQsWODmyjjU1NaHX6/Hy8rJ43Nvb2yVGV41yc3MpKioiJSXF9FhgYCCTJ09m165dToys77hw4QIajYagoCBnh9IlDQ0NvP766wQGBjJ69Ghnh9Mhg8HAsmXLeOKJJxg+fLizw+mybdu2ER4ezpAhQ1i+fDmlpaUOe21JnBxk8uTJvPPOO2zYsIFXX32V3NxcZs6cSVVVlbND69DJkyd59dVXGTRoEBs3bmT58uX8/Oc/591333V2aF3yxRdfUFFRwT333OPsUDr1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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# --- plot all three lines together ---\n", - "fig, ax = plt.subplots(figsize=(6, 5))\n", - "for col in panel_df.columns:\n", - " ax.plot(zoom_levels, panel_df[col].values, marker=\"o\", linewidth=2, label=col)\n", - "\n", - "ax.set_xticks(zoom_levels) # exact zoom values\n", - "ax.set_xlabel(\"zoom Level\")\n", - "ax.set_ylabel(\"Response Time (s)\")\n", - "ax.grid(True, alpha=0.25)\n", - "\n", - "fig.subplots_adjust(right=0.78)\n", - "ax.legend(frameon=False, loc=\"best\")\n", - "\n", - "plt.tight_layout()\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "4763b1d6-6051-4c59-8225-911f538b98b8", - "metadata": {}, - "source": [ - "## Conclusion\n", - "\n", - "In this notebook, we explored how to check the performance of tile rendering performance in TiTiler-CMR using different datasets and backends. We observed how factors such as zoom levels, temporal intervals, and dataset structures impact the latency of tile requests.\n", - "\n", - "In general, Xarray backend:\n", - "- Performance depends strongly on the zoom levels, \n", - "- Reads a single timestep for `/tile` requests so interval width generally does not change tile latency.\n", - "\n", - "In Raterio backend:\n", - "- Covers all the granules intersecting the tile footprint and the selected datetime interval,\n", - "- Performance depends on zoom levels and the width of the datetime interval, and band selection\n", - "- Higher zoom levels **(e.g., z > 8)** tend to have more stable and lower latency due to fewer intersecting granules. However, performance plateaus around z≈9 for many datasets.\n", - "\n", - "\n", - "Takeaways: \n", - "- Prefer **single-day** (or narrow) intervals for responsive rendering\n", - "- The bigger the time range, the more data needs to be scanned and processed\n", - "- Avoid very low zooms for heavy composites; consider **minzoom ≥ 7**\n", - "\n", - "\n", - "### Further Reading\n", - "- [TiTiler-CMR GitHub Repository](https://github.com/developmentseed/titiler-cmr)\n", - "- [Titiler-CMR API Documentation](https://staging.openveda.cloud/api/titiler-cmr/api.html#/)\n", - "- [Tile Matrix Sets and Zoom Levels](https://docs.opengeospatial.org/is/17-083r2/17-083r2.html#_tile_matrix_sets_and_zoom_levels)\n", - "- [Earthdata Cloud CMR Datasets](https://cmr.earthdata.nasa.gov/search/site/docs/search/api.html#datasets)\n" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "datacube-guide", - "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.13.5" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/docs/visualization/titiler/titiler-cmr/compatibility.ipynb b/docs/visualization/titiler/titiler-cmr/compatibility.ipynb deleted file mode 100644 index 9578811..0000000 --- a/docs/visualization/titiler/titiler-cmr/compatibility.ipynb +++ /dev/null @@ -1,484 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "b44dbc99", - "metadata": {}, - "source": [ - "# Overview of compatibility testing\n", - "\n", - "This notebook walks you through a workflow to **check compatibility** of a [TiTiler-CMR](https://github.com/developmentseed/titiler-cmr) deployment for a given Earthdata CMR dataset.\n", - "\n", - "-----------------------------------\n", - "\n", - "**📚 In this notebook, you'll learn**:\n", - "\n", - "1. Use `earthaccess` to authenticate to NASA Earthdata and query the CMR catalog\n", - "2. Collect collection-level metadata (concept IDs, temporal range, spatial bounds)\n", - "3. Run `check_titiler_cmr_compatibility` against your TiTiler-CMR endpoint to validate whether a dataset can be successfully visualized and accessed via TiTiler-CMR.\n", - "\n", - "\n", - "Before you begin, you need:\n", - "- An Earthdata login account: https://urs.earthdata.nasa.gov/\n", - "- A valid `netrc` file with your Earthdata credentials or use interactive login.\n", - "\n", - "For this walkthrough, we will use the public instance hosted by [Open VEDA](https://staging.openveda.cloud/api/titiler-cmr/)." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "18a0edb6-7220-4910-854d-3b07d4e4f417", - "metadata": {}, - "outputs": [], - "source": [ - "import earthaccess\n", - "import xarray as xr\n", - "\n", - "from datacube_benchmark.titiler import (\n", - " DatasetParams,\n", - " create_bbox_feature,\n", - " check_titiler_cmr_compatibility,\n", - ")\n", - "\n", - "endpoint = \"https://staging.openveda.cloud/api/titiler-cmr\"" - ] - }, - { - "cell_type": "markdown", - "id": "71aab2bd", - "metadata": {}, - "source": [ - "### Introduction to TiTiler-CMR\n", - "[`Titiler-CMR`](https://github.com/developmentseed/titiler-cmr) is a dynamic map tile server that provides on-demand access to Earth science data managed by NASA's Common Metadata Repository (CMR). It allows users to dynamically generate and serve map tiles from multidimensional data formats like NetCDF and HDF5.\n", - "\n", - "To get started with TiTiler-CMR, you typically need to:\n", - "- Choose a Titiler-CMR endpoint\n", - "- Pick a CMR dataset (by concept ID)\n", - "- Identify the assets/variables/bands you want to visualize\n", - "- Define a temporal interval (`start/end` ISO range) and, if needed, a time step (e.g., daily).\n", - "- Select a backend that matches your dataset’s structure\n", - "\n", - "`titiler-cmr` supports two different backends:\n", - " - **xarray** → for gridded/cloud-native datasets (e.g., NetCDF4/HDF5), typically exposed as variables.\n", - " - **rasterio** → for COG/raster imagery-style datasets exposed as bands (optionally via a regex).\n", - "\n", - "Here, we first explore a dataset using `earthaccess` to collect the necessary information such as **concept_id**, **backend**, and **variable**, then run a compatibility check using the `check_titiler_cmr_compatibility` helper function. If you already know your dataset, you can skip the exploration steps step 2 directly. \n", - "\n", - "## Step 1: Explore data with `earthaccess`\n", - "You can use [`earthaccess`](https://github.com/nsidc/earthaccess) to search for dataset and inspect the individual granules used in your query. This helps you validate which files were accessed, their sizes, and the temporal range.\n", - "\n", - "First you need to authenticate to Earthdata. " - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "5712df15", - "metadata": {}, - "outputs": [], - "source": [ - "# Authenticate to Earthdata\n", - "try:\n", - " auth = earthaccess.login(strategy=\"environment\")\n", - "except Exception:\n", - " auth = earthaccess.login(strategy=\"interactive\")" - ] - }, - { - "cell_type": "markdown", - "id": "f972367c", - "metadata": {}, - "source": [ - "Next, you can search for datasets using doi, keywords, temporal range, and spatial bounds." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "618eca85-a05c-4bfd-aa47-1576d9e932b3", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Concept-Id: C1996881146-POCLOUD\n", - "Abstract: A Group for High Resolution Sea Surface Temperature (GHRSST) Level 4 sea surface temperature analysis produced as a retrospective dataset (four day latency) and near-real-time dataset (one day latency) at the JPL Physical Oceanography DAAC using wavelets as basis functions in an optimal interpolation approach on a global 0.01 degree grid. The version 4 Multiscale Ultrahigh Resolution (MUR) L4 analysis is based upon nighttime GHRSST L2P skin and subskin SST observations from several instruments including the NASA Advanced Microwave Scanning Radiometer-EOS (AMSR-E), the JAXA Advanced Microwave Scanning Radiometer 2 on GCOM-W1, the Moderate Resolution Imaging Spectroradiometers (MODIS) on the NASA Aqua and Terra platforms, the US Navy microwave WindSat radiometer, the Advanced Very High Resolution Radiometer (AVHRR) on several NOAA satellites, and in situ SST observations from the NOAA iQuam project. The ice concentration data are from the archives at the EUMETSAT Ocean and Sea Ice Satellite Application Facility (OSI SAF) High Latitude Processing Center and are also used for an improved SST parameterization for the high-latitudes. The dataset also contains additional variables for some granules including a SST anomaly derived from a MUR climatology and the temporal distance to the nearest IR measurement for each pixel.This dataset is funded by the NASA MEaSUREs program ( http://earthdata.nasa.gov/our-community/community-data-system-programs/measures-projects ), and created by a team led by Dr. Toshio M. Chin from JPL. It adheres to the GHRSST Data Processing Specification (GDS) version 2 format specifications. Use the file global metadata \"history:\" attribute to determine if a granule is near-realtime or retrospective.\n" - ] - } - ], - "source": [ - "datasets = earthaccess.search_datasets(doi=\"10.5067/GHGMR-4FJ04\")\n", - "ds = datasets[0]\n", - "\n", - "concept_id = ds[\"meta\"][\"concept-id\"]\n", - "print(\"Concept-Id: \", concept_id)\n", - "print(\"Abstract:\", ds[\"umm\"][\"Abstract\"])" - ] - }, - { - "cell_type": "markdown", - "id": "774cecbf-996b-4edf-8df2-a31d4422a6c3", - "metadata": {}, - "source": [ - "### Examine the granules\n", - "\n", - "With a selected data collection, we'll now use `earthaccess.search_data` to find individual data granules within a specific temporal window." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "c1eecd4e-8ba0-4e67-b405-dbc7ae499b7e", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Found 1 granules between 2024-10-12 and 2024-10-13\n", - "\n", - "2024-10-11T21:00:00.000Z → 707.34 MB\n", - " https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/MUR-JPL-L4-GLOB-v4.1/20241012090000-JPL-L4_GHRSST-SSTfnd-MUR-GLOB-v02.0-fv04.1.nc\n" - ] - } - ], - "source": [ - "time_range = (\"2024-10-12\", \"2024-10-13\")\n", - "\n", - "results = earthaccess.search_data(\n", - " count=1,\n", - " concept_id=concept_id,\n", - " temporal=(\"2024-10-12\", \"2024-10-13\"),\n", - ")\n", - "print(f\"Found {len(results)} granules between {time_range[0]} and {time_range[1]}\")\n", - "\n", - "for g in results:\n", - " start = g[\"umm\"][\"TemporalExtent\"][\"RangeDateTime\"][\"BeginningDateTime\"]\n", - " size = float(g[\"size\"]) # or use g[\"granule_size_mb\"]\n", - "\n", - " print(f\"\\n{start} → {size:.2f} MB\")\n", - "\n", - " for link in g.data_links(access=\"external\"):\n", - " print(\" \", link)" - ] - }, - { - "cell_type": "markdown", - "id": "14e36c5f-9772-4cd5-a5bb-3fe443895e3a", - "metadata": {}, - "source": [ - "From the output above, the returned link ends with `.nc`, indicating a **NetCDF** file. We can open it directly with **xarray** using the authenticated HTTPS session from `earthaccess` and quickly list the variables (plus a peek at dimensions and coordinates)." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "768c8f60-5f7b-40b3-a7ee-42c2b10361a5", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Data variables:\n", - " analysed_sst (time, lat, lon) float64 5GB ...\n", - " analysis_error (time, lat, lon) float64 5GB ...\n", - " mask (time, lat, lon) float32 3GB ...\n", - " sea_ice_fraction (time, lat, lon) float64 5GB ...\n", - " dt_1km_data (time, lat, lon) timedelta64[ns] 5GB ...\n", - " sst_anomaly (time, lat, lon) float64 5GB ..." - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "fs = earthaccess.get_fsspec_https_session()\n", - "\n", - "ds = xr.open_dataset(\n", - " fs.open(results[0].data_links(access=\"external\")[0]),\n", - " engine=\"h5netcdf\",\n", - " decode_timedelta=True,\n", - ")\n", - "data_vars = ds.data_vars\n", - "data_vars" - ] - }, - { - "cell_type": "markdown", - "id": "f85292d1-4fff-4a41-b5ad-37f02e0d152a", - "metadata": {}, - "source": [ - "\n", - "Now, that we know the **concept_id**, **backend**, and **variable**, we can run a quick compatibility check using `check_titiler_cmr_compatibility()` helper function. \n", - "\n", - "## Step 2: Check Compatibility\n", - "\n", - "`check_titiler_cmr_compatibility()` helper function performs the following steps:\n", - "- Validate the **CMR collection** and **granule search**\n", - "- Resolve collection/granule metadata and fetch **TileJSON**\n", - "- Determine how many **time steps** fall within the requested temporal range\n", - "- Query the **`/timeseries/statistics`** endpoint for a small, bounded preview window to check if the dataset can be opened and processed with the selected backend.\n", - "\n", - "The result is a summary of compatibility, tiling parameters, and dataset statistics." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "5e41d95f-e087-4ee1-850a-5124710f7931", - "metadata": {}, - "outputs": [], - "source": [ - "concept_id = \"C2723754864-GES_DISC\"\n", - "datetime_range = \"2024-10-12T00:00:01Z/2024-10-12T23:59:59Z\"\n", - "variable = \"precipitation\"\n", - "\n", - "ds_xarray = DatasetParams(\n", - " concept_id=concept_id,\n", - " backend=\"xarray\",\n", - " datetime_range=datetime_range,\n", - " variable=variable,\n", - " step=\"P1D\",\n", - " temporal_mode=\"point\",\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "e4b75cc7", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "=== TiTiler-CMR Compatibility Check ===\n", - "Client: 8 physical / 8 logical cores | RAM: 16.00 GiB\n", - "Dataset: C2723754864-GES_DISC (xarray)\n", - "Found 1 timesteps/granules from TileJSON\n", - "Using random bounds for compatibility check: [2.741770939582061, -86.93233148855214, 83.24021812957449, -46.68310789355593]\n", - "Statistics returned 1 timesteps\n", - "Compatibility: compatible\n" - ] - } - ], - "source": [ - "compat = await check_titiler_cmr_compatibility(\n", - " endpoint=endpoint,\n", - " dataset=ds_xarray,\n", - " timeout_s=250.0,\n", - ")\n", - "\n", - "print(f\"Compatibility: {compat['compatibility']}\")" - ] - }, - { - "cell_type": "markdown", - "id": "5a4a5f64", - "metadata": {}, - "source": [ - "Now, we want to check the summary of data is valid:" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "7e4f56bd", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Statistics preview:\n", - " timestamp min max mean count \\\n", - "0 2024-10-12T00:00:00.000000000 0.0 36.904999 1.470654 324133.21875 \n", - "\n", - " sum std median majority minority unique valid_percent \\\n", - "0 476687.84375 3.734399 0.0 0.0 0.065 14219.0 100.0 \n", - "\n", - " masked_pixels valid_pixels percentile_2 percentile_98 \n", - "0 0.0 325624.0 0.0 14.860001 \n" - ] - } - ], - "source": [ - "print(f\"Statistics preview:\\n{compat['statistics']}\")" - ] - }, - { - "cell_type": "markdown", - "id": "a11fa928-9db7-43e4-9642-7be44f1cbabc", - "metadata": {}, - "source": [ - "### `rasterio` backend\n", - "\n", - "Similar to the `xarray` example above, we can check compatibility for a CMR collection that is better suited for the `rasterio` backend." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "95a85b3c", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "=== TiTiler-CMR Compatibility Check ===\n", - "Client: 8 physical / 8 logical cores | RAM: 16.00 GiB\n", - "Dataset: C2021957295-LPCLOUD (rasterio)\n", - "Found 1 timesteps/granules from TileJSON\n", - "Using random bounds for compatibility check: [-105.53889935418451, -46.63206063840639, -25.040452164192082, -6.3828370434101664]\n", - "~~~~~~~~~~~~~~~~ ERROR JSON REQUEST ~~~~~~~~~~~~~~~~\n", - "URL: https://staging.openveda.cloud/api/titiler-cmr/timeseries/statistics?concept_id=C2021957295-LPCLOUD&backend=rasterio&datetime=2024-07-01T00%3A00%3A00Z%2F2024-07-10T23%3A59%3A59Z&bands=B04&bands_regex=B%5B0-9%5D%5B0-9%5D&step=P1D&temporal_mode=point\n", - "Error: 400 Bad Request\n", - "Body: {\"detail\":\"The AOI for this request is too large for the /statistics endpoint for this dataset. Try again with either a smaller AOI\"}\n", - "Statistics request failed: HTTPStatusError: Client error '400 Bad Request' for url 'https://staging.openveda.cloud/api/titiler-cmr/timeseries/statistics?concept_id=C2021957295-LPCLOUD&backend=rasterio&datetime=2024-07-01T00%3A00%3A00Z%2F2024-07-10T23%3A59%3A59Z&bands=B04&bands_regex=B%5B0-9%5D%5B0-9%5D&step=P1D&temporal_mode=point'\n", - "For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400\n", - "Compatibility: issues_detected\n" - ] - } - ], - "source": [ - "ds_hls_day = DatasetParams(\n", - " concept_id=\"C2021957295-LPCLOUD\",\n", - " backend=\"rasterio\",\n", - " datetime_range=\"2024-07-01T00:00:00Z/2024-07-10T23:59:59Z\",\n", - " bands=[\"B05\", \"B04\"],\n", - " bands_regex=\"B[0-9][0-9]\",\n", - " step=\"P1D\",\n", - " temporal_mode=\"point\",\n", - ")\n", - "compat = await check_titiler_cmr_compatibility(\n", - " endpoint=endpoint,\n", - " dataset=ds_hls_day,\n", - " timeout_s=250.0,\n", - ")\n", - "\n", - "print(f\"Compatibility: {compat['compatibility']}\")" - ] - }, - { - "cell_type": "markdown", - "id": "ebd5664e", - "metadata": {}, - "source": [ - "☝️ If your area of interest is too large, the API will return an “AOI is too large” error. Use the `create_bbox_feature` function to define a smaller bounding box before retrying.\n" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "3e8ea321", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "=== TiTiler-CMR Compatibility Check ===\n", - "Client: 8 physical / 8 logical cores | RAM: 16.00 GiB\n", - "Dataset: C2021957295-LPCLOUD (rasterio)\n", - "Found 1 timesteps/granules from TileJSON\n", - "Statistics returned 0 timesteps\n", - "Compatibility: compatible\n" - ] - } - ], - "source": [ - "gulf_geometry = create_bbox_feature(\n", - " -91.65432884883238, 47.86503396133904, -91.53842043960762, 47.9221313337365\n", - ")\n", - "compat = await check_titiler_cmr_compatibility(\n", - " endpoint=endpoint,\n", - " dataset=ds_hls_day,\n", - " geometry=gulf_geometry,\n", - " timeout_s=300.0,\n", - ")\n", - "print(f\"Compatibility: {compat['compatibility']}\")" - ] - }, - { - "cell_type": "markdown", - "id": "9574d094", - "metadata": {}, - "source": [ - "Alternatively, you can specify `bounds_fraction` to create a much smaller bounding box within the original bounds." - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "b7d43515", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "=== TiTiler-CMR Compatibility Check ===\n", - "Client: 8 physical / 8 logical cores | RAM: 16.00 GiB\n", - "Dataset: C2021957295-LPCLOUD (rasterio)\n", - "Found 1 timesteps/granules from TileJSON\n", - "Using random bounds for compatibility check: [-129.466539636604, -10.179722642907745, -128.32811967894338, -9.610512664077437]\n", - "Statistics returned 0 timesteps\n", - "Compatibility: compatible\n" - ] - } - ], - "source": [ - "compat = await check_titiler_cmr_compatibility(\n", - " endpoint=endpoint,\n", - " dataset=ds_hls_day,\n", - " bounds_fraction=1e-5,\n", - " timeout_s=300.0,\n", - ")\n", - "print(f\"Compatibility: {compat['compatibility']}\")" - ] - }, - { - "cell_type": "markdown", - "id": "cd88c0ec-12e0-4583-a51d-b1be67d5e62b", - "metadata": {}, - "source": [ - "### Conclusion\n", - "\n", - "This notebook demonstrated how to use `earthaccess` to explore CMR datasets and validate their compatibility with a TiTiler-CMR deployment using the `check_titiler_cmr_compatibility` helper function. \n", - "\n", - "\n", - "### 📚 Useful Resources\n", - "- [Titiler-CMR GitHub](https://github.com/developmentseed/titiler-cmr)\n", - "- [Earthaccess GitHub](https://github.com/nsidc/earthaccess)\n", - "- [CMR Search](https://cmr.earthdata.nasa.gov/search/site/docs/search/api.html)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "datacube-guide", - "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.13.5" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/docs/visualization/titiler/titiler-cmr/find-netcdf4-datasets.ipynb b/docs/visualization/titiler/titiler-cmr/find-netcdf4-datasets.ipynb deleted file mode 100644 index 7cfb1f9..0000000 --- a/docs/visualization/titiler/titiler-cmr/find-netcdf4-datasets.ipynb +++ /dev/null @@ -1,432 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "89c26d2e", - "metadata": {}, - "source": [ - "# Finding NetCDF-4 collections\n", - "\n", - "This notebook shows how to use earthaccess to discover NASA Earthdata collections that provide granules in netCDF-4 format. In the next step, it opens a representative netCDF-4 file from each collection to inspect and list the available variable names." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "2105efe7-6e6c-4d1c-a713-b0ceabd40ae7", - "metadata": {}, - "outputs": [], - "source": [ - "import earthaccess\n", - "import pandas as pd\n", - "import numpy as np\n", - "\n", - "from typing import Dict, Optional, Tuple, Any\n", - "\n", - "# ----------------------------------------\n", - "# Helpers to parse metadata from earthaccess\n", - "# ----------------------------------------\n", - "\n", - "\n", - "def _parse_temporal(umm: Dict[str, Any]) -> Tuple[Optional[str], Optional[str]]:\n", - " temporal = umm.get(\"TemporalExtents\", [])\n", - " rng = (temporal or [{}])[0].get(\"RangeDateTimes\", [])\n", - " begin = (rng or [{}])[0].get(\"BeginningDateTime\")\n", - " end = (rng or [{}])[0].get(\"EndingDateTime\")\n", - " return begin, end\n", - "\n", - "\n", - "def _parse_bounds_from_spatial(\n", - " umm: Dict[str, Any],\n", - ") -> Tuple[Optional[float], Optional[float], Optional[float], Optional[float]]:\n", - " spatial = umm.get(\"SpatialExtent\", {}) or {}\n", - " horiz = spatial.get(\"HorizontalSpatialDomain\", {}) or {}\n", - " geom = horiz.get(\"Geometry\", {}) or {}\n", - "\n", - " # 1) Bounding rectangles\n", - " rects = geom.get(\"BoundingRectangles\") or []\n", - " if rects:\n", - " wests = [r.get(\"WestBoundingCoordinate\") for r in rects if r]\n", - " easts = [r.get(\"EastBoundingCoordinate\") for r in rects if r]\n", - " souths = [r.get(\"SouthBoundingCoordinate\") for r in rects if r]\n", - " norths = [r.get(\"NorthBoundingCoordinate\") for r in rects if r]\n", - " if all(len(lst) > 0 for lst in (wests, easts, souths, norths)):\n", - " return (\n", - " float(np.min(wests)),\n", - " float(np.min(souths)),\n", - " float(np.max(easts)),\n", - " float(np.max(norths)),\n", - " )\n", - "\n", - " # 2) GPolygons\n", - " gpolys = geom.get(\"GPolygons\") or []\n", - " coords_w, coords_e, coords_s, coords_n = [], [], [], []\n", - " for gp in gpolys:\n", - " b = gp.get(\"Boundary\", {})\n", - " pts = b.get(\"Points\", [])\n", - " lons = [p.get(\"Longitude\") for p in pts if p and p.get(\"Longitude\") is not None]\n", - " lats = [p.get(\"Latitude\") for p in pts if p and p.get(\"Latitude\") is not None]\n", - " if lons and lats:\n", - " coords_w.append(np.min(lons))\n", - " coords_e.append(np.max(lons))\n", - " coords_s.append(np.min(lats))\n", - " coords_n.append(np.max(lats))\n", - " if coords_w and coords_e and coords_s and coords_n:\n", - " return (\n", - " float(np.min(coords_w)),\n", - " float(np.min(coords_s)),\n", - " float(np.max(coords_e)),\n", - " float(np.max(coords_n)),\n", - " )\n", - "\n", - " return None, None, None, None" - ] - }, - { - "cell_type": "markdown", - "id": "c4553120", - "metadata": {}, - "source": [ - "First, let's find all collections that provide netCDF-4 files using the `earthaccess` library." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "40ff1b1f-81c5-4857-b88f-e1deb2e0b84a", - "metadata": {}, - "outputs": [], - "source": [ - "%%time\n", - "\n", - "# step 1-a: search collections with netcdf-4\n", - "\n", - "query = earthaccess.DataCollections()\n", - "query.params[\"granule_data_format\"] = \"*netcdf-4*\"\n", - "query.option(\"granule_data_format\", \"pattern\", True)\n", - "results = query.get_all()\n", - "print(f\"Number of collections found: {len(results)}\")" - ] - }, - { - "cell_type": "markdown", - "id": "be5d37b5", - "metadata": {}, - "source": [ - "Next, parse metadata for each collection to find a temporal and spatial range. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "647b41c8-a6da-4f76-8ab4-0ef6048d571d", - "metadata": {}, - "outputs": [], - "source": [ - "%%time\n", - "\n", - "# step 1-b: parse metadata to find temporal and spatial bounds and save to csv\n", - "rows = []\n", - "for rec in results:\n", - " meta = rec.get(\"meta\", {}) or {}\n", - " umm = rec.get(\"umm\", {}) or {}\n", - " concept_id = meta.get(\"concept-id\") or meta.get(\"concept_id\")\n", - " short_name = umm.get(\"ShortName\")\n", - " entry_title = umm.get(\"EntryTitle\")\n", - " provider_id = meta.get(\"provider-id\")\n", - "\n", - " begin, end = _parse_temporal(umm)\n", - " west, south, east, north = _parse_bounds_from_spatial(umm)\n", - "\n", - " rows.append(\n", - " {\n", - " \"concept_id\": concept_id,\n", - " \"short_name\": short_name,\n", - " \"entry_title\": entry_title,\n", - " \"provider_id\": provider_id,\n", - " \"begin_time\": begin,\n", - " \"end_time\": end,\n", - " \"west\": west,\n", - " \"south\": south,\n", - " \"east\": east,\n", - " \"north\": north,\n", - " }\n", - " )\n", - "\n", - "df = pd.DataFrame(rows)\n", - "\n", - "print(df.head())\n", - "\n", - "concept_ids = [r[\"concept_id\"] for r in rows if r[\"concept_id\"]]\n", - "\n", - "out_csv = \"output/cmr_collections_netcdf4.csv\"\n", - "df.to_csv(out_csv, index=False)" - ] - }, - { - "cell_type": "markdown", - "id": "e119b002", - "metadata": {}, - "source": [ - "Next, open a representative netcdf-4 file from each collection and list variable names\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "90bdacbb-f250-4f85-8f29-f4c5ad7c4a3f", - "metadata": {}, - "outputs": [], - "source": [ - "import concurrent.futures\n", - "import earthaccess\n", - "from urllib.parse import urlparse\n", - "import pandas as pd\n", - "import xarray as xr\n", - "from datetime import datetime, timezone\n", - "\n", - "\n", - "df = pd.read_csv(\"output/cmr_collections_netcdf4.csv\")\n", - "\n", - "for col in [\"links\", \"variables\", \"status\", \"error\", \"scheme\"]:\n", - " df[col] = None\n", - "\n", - "\n", - "def _pick_best_link(all_links):\n", - " \"\"\"Prefer HTTPS; else S3; else None.\"\"\"\n", - " https = [u for u in all_links if u.startswith(\"http\")]\n", - " s3 = [u for u in all_links if u.startswith(\"s3://\")]\n", - " if s3:\n", - " return s3[0]\n", - " if https:\n", - " return https[0]\n", - " return None\n", - "\n", - "\n", - "def _open_xarray_dataset(url):\n", - " \"\"\"Open a NetCDF URL that may be HTTPS or S3 and return (ds, scheme).\"\"\"\n", - " scheme = urlparse(url).scheme.lower()\n", - " if scheme in (\"http\", \"https\"):\n", - " fs = earthaccess.get_fsspec_https_session()\n", - " return xr.open_dataset(\n", - " fs.open(url), engine=\"h5netcdf\", decode_times=False\n", - " ), \"https\"\n", - " elif scheme == \"s3\":\n", - " s3 = earthaccess.get_s3fs_session()\n", - " return xr.open_dataset(\n", - " s3.open(url, \"rb\"), engine=\"h5netcdf\", decode_times=False\n", - " ), \"s3\"\n", - " else:\n", - " raise ValueError(f\"Unsupported URL scheme: {scheme}\")\n", - "\n", - "\n", - "def process_row(i_row):\n", - " i, row = i_row\n", - " concept_id = row[\"concept_id\"]\n", - " begin = row[\"begin_time\"]\n", - " end = (\n", - " row[\"end_time\"]\n", - " if pd.notna(row[\"end_time\"])\n", - " else datetime.now(timezone.utc).strftime(\"%Y-%m-%dT%H:%M:%SZ\")\n", - " )\n", - "\n", - " logs = []\n", - " logs.append(f\"\\n🔍 [{i}] Concept ID: {concept_id}\")\n", - " logs.append(f\" 🚀 [{i}] Starting search for {concept_id}...\")\n", - "\n", - " try:\n", - " with concurrent.futures.ThreadPoolExecutor(max_workers=1) as ex:\n", - " fut = ex.submit(\n", - " earthaccess.search_data,\n", - " concept_id=concept_id,\n", - " temporal=(begin, end),\n", - " count=1,\n", - " )\n", - " results = fut.result(timeout=120)\n", - " except concurrent.futures.TimeoutError:\n", - " logs.append(f\" ⏳ [{i}] Timeout while searching {concept_id}\")\n", - " return {\n", - " \"i\": i,\n", - " \"concept_id\": concept_id,\n", - " \"links\": None,\n", - " \"variables\": None,\n", - " \"status\": \"timeout\",\n", - " \"error\": None,\n", - " \"scheme\": None,\n", - " \"logs\": logs,\n", - " }\n", - " except Exception as e:\n", - " logs.append(f\" ❌ [{i}] Search failed for {concept_id}: {e}\")\n", - " return {\n", - " \"i\": i,\n", - " \"concept_id\": concept_id,\n", - " \"links\": None,\n", - " \"variables\": None,\n", - " \"status\": \"search_failed\",\n", - " \"error\": str(e),\n", - " \"scheme\": None,\n", - " \"logs\": logs,\n", - " }\n", - "\n", - " if not results:\n", - " logs.append(f\" ⚠️ [{i}] No granules for {concept_id}\")\n", - " return {\n", - " \"i\": i,\n", - " \"concept_id\": concept_id,\n", - " \"links\": None,\n", - " \"variables\": None,\n", - " \"status\": \"no_granules\",\n", - " \"error\": None,\n", - " \"scheme\": None,\n", - " \"logs\": logs,\n", - " }\n", - "\n", - " try:\n", - " all_links = results[0].data_links() or []\n", - " except Exception as e:\n", - " logs.append(f\" ⚠️ [{i}] Could not extract data_links: {e}\")\n", - " return {\n", - " \"i\": i,\n", - " \"concept_id\": concept_id,\n", - " \"links\": None,\n", - " \"variables\": None,\n", - " \"status\": \"no_links\",\n", - " \"error\": str(e),\n", - " \"scheme\": None,\n", - " \"logs\": logs,\n", - " }\n", - "\n", - " netcdf_url = _pick_best_link(all_links)\n", - " if not netcdf_url:\n", - " logs.append(f\" ⚠️ [{i}] No usable HTTPS/S3 NetCDF links for {concept_id}\")\n", - " return {\n", - " \"i\": i,\n", - " \"concept_id\": concept_id,\n", - " \"links\": None,\n", - " \"variables\": None,\n", - " \"status\": \"no_links\",\n", - " \"error\": None,\n", - " \"scheme\": None,\n", - " \"logs\": logs,\n", - " }\n", - "\n", - " logs.append(f\" 🔗 [{i}] Link chosen: {netcdf_url}\")\n", - "\n", - " try:\n", - " ds, scheme = _open_xarray_dataset(netcdf_url)\n", - " with ds:\n", - " variables = list(ds.data_vars.keys())\n", - " logs.append(f\" 📊 [{i}] Variables ({len(variables)}): {variables}\")\n", - " logs.append(f\" ✅ [{i}] Result: ok, scheme: {scheme}\")\n", - " return {\n", - " \"i\": i,\n", - " \"concept_id\": concept_id,\n", - " \"links\": netcdf_url,\n", - " \"variables\": variables,\n", - " \"status\": \"ok\",\n", - " \"error\": None,\n", - " \"scheme\": scheme,\n", - " \"logs\": logs,\n", - " }\n", - " except Exception as e:\n", - " logs.append(f\" ⚠️ [{i}] Failed to open dataset: {e}\")\n", - " return {\n", - " \"i\": i,\n", - " \"concept_id\": concept_id,\n", - " \"links\": netcdf_url,\n", - " \"variables\": [],\n", - " \"status\": \"open_failed\",\n", - " \"error\": str(e),\n", - " \"scheme\": urlparse(netcdf_url).scheme or None,\n", - " \"logs\": logs,\n", - " }\n", - "\n", - "\n", - "# ----------------------------\n", - "# Run in parallel\n", - "# ----------------------------\n", - "rows = []\n", - "n = max(10, len(df))\n", - "print(f\"\\n🚀 Starting processing of {n} rows...\", flush=True)\n", - "with concurrent.futures.ThreadPoolExecutor(max_workers=6) as executor:\n", - " futures = [executor.submit(process_row, item) for item in df.iloc[:n].iterrows()]\n", - " for fut in concurrent.futures.as_completed(futures):\n", - " res = fut.result()\n", - "\n", - " # Print all logs for this collection at once\n", - " for log in res.get(\"logs\", []):\n", - " print(log, flush=True)\n", - "\n", - " rows.append({k: v for k, v in res.items() if k != \"logs\"})\n", - "\n", - "out = pd.DataFrame(rows).set_index(\"i\").sort_index()\n", - "\n", - "# Merge back into original df (preserves all other columns)\n", - "df.loc[out.index, [\"links\", \"variables\", \"status\", \"error\", \"scheme\"]] = out[\n", - " [\"links\", \"variables\", \"status\", \"error\", \"scheme\"]\n", - "]\n", - "\n", - "print(\"\\n📦 Merge complete. Sample:\", flush=True)\n", - "print(df.loc[out.index, [\"concept_id\", \"scheme\", \"links\", \"status\"]].head(), flush=True)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "89dafeac-19f7-4576-b810-49423f269940", - "metadata": {}, - "outputs": [], - "source": [ - "df_valid_vars = df.dropna(subset=[\"variables\"])\n", - "df_valid_vars" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "55457811-98dc-4922-9337-a56363f80948", - "metadata": {}, - "outputs": [], - "source": [ - "# Save result\n", - "df.to_csv(\"output/cmr_collections_netcdf4_updated_saved_all.csv\", index=False)\n", - "print(f\"\\n✅ Updated CSV saved with {df['link'].notna().sum()} links populated.\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "2d47e879-27f6-4e99-842e-ee3657a11d86", - "metadata": {}, - "outputs": [], - "source": [ - "## For grouped hdf-5 files, it does not use datatree (reason is current mechanics of Titiler-CMR).\n", - "url = \"https://data.laadsdaac.earthdatacloud.nasa.gov/prod-lads/VNP03IMG/VNP03IMG.A2012019.0000.002.2020318135750.nc\"\n", - "fs = earthaccess.get_fsspec_https_session()\n", - "ds = xr.open_datatree(fs.open(url), engine=\"h5netcdf\", decode_times=False)\n", - "ds" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "datacube-guide", - "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.13.5" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/docs/visualization/titiler/titiler-cmr/output/cmr_collections_netcdf4.csv b/docs/visualization/titiler/titiler-cmr/output/cmr_collections_netcdf4.csv deleted file mode 100644 index 8db6450..0000000 --- a/docs/visualization/titiler/titiler-cmr/output/cmr_collections_netcdf4.csv +++ /dev/null @@ -1,1944 +0,0 @@ -concept_id,short_name,entry_title,provider_id,begin_time,end_time,west,south,east,north -C2105092163-LAADS,VNP03IMG,VIIRS/NPP Imagery Resolution Terrain Corrected Geolocation 6-Min L1 Swath 375 m ,LAADS,2012-01-19T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2105091501-LAADS,VNP02IMG,VIIRS/NPP Imagery Resolution 6-Min L1B Swath 375 m,LAADS,2012-01-19T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C1562021084-LAADS,CLDMSK_L2_VIIRS_SNPP,VIIRS/Suomi-NPP Cloud Mask 6-Min Swath 750 m,LAADS,2012-03-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C1964798938-LAADS,CLDMSK_L2_VIIRS_NOAA20,VIIRS/NOAA20 Cloud Mask and Spectral Test Results 6-Min L2 Swath 750m,LAADS,2012-03-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C1593392869-LAADS,CLDMSK_L2_MODIS_Aqua,MODIS/Aqua Cloud Mask 5-Min Swath 1000 m,LAADS,2002-07-04T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2600303218-LAADS,AERDB_L2_VIIRS_SNPP,VIIRS/SNPP Deep Blue Aerosol L2 6 Min Swath 6km,LAADS,2012-03-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2105092427-LAADS,VNP03MOD,VIIRS/NPP Moderate Resolution Terrain-Corrected Geolocation L1 6-Min Swath 750 m,LAADS,2012-01-19T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2105087643-LAADS,VNP02MOD,VNP02MOD | VIIRS/NPP Moderate Resolution 6-Min L1B Swath 750 m,LAADS,2012-01-19T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2408750690-LPCLOUD,EMITL2ARFL,EMIT L2A Estimated Surface Reflectance and Uncertainty and Masks 60 m V001,LPCLOUD,2022-08-09T00:00:00.000Z,,-180.0,-54.0,180.0,54.0 -C2408009906-LPCLOUD,EMITL1BRAD,EMIT L1B At-Sensor Calibrated Radiance and Geolocation Data 60 m V001,LPCLOUD,2022-08-09T00:00:00.000Z,,-180.0,-54.0,180.0,54.0 -C2772641628-LAADS,AERDT_L2_VIIRS_NOAA20,VIIRS/NOAA20 Dark Target Aerosol 6-Min L2 Swath 6 km,LAADS,2018-02-17T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C1344465347-LAADS,VNP03DNB,VIIRS/NPP Day/Night Band Terrain Corrected Geolocation L1 6-Min Swath 750 m,LAADS,2012-01-19T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2771506686-LAADS,AERDT_L2_VIIRS_SNPP,VIIRS/SNPP Dark Target Aerosol L2 6-Min Swath 6 km V2,LAADS,2012-03-01T00:36:00.000Z,,-180.0,-90.0,180.0,90.0 -C2600305692-LAADS,AERDB_L2_VIIRS_NOAA20,VIIRS/NOAA20 Deep Blue Aerosol L2 6-Min Swath 6 km,LAADS,2018-02-17T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2532426483-ORNL_CLOUD,Daymet_Daily_V4R1_2129,"Daymet: Daily Surface Weather Data on a 1-km Grid for North America, Version 4 R1",ORNL_CLOUD,1950-01-01T00:00:00.000Z,2024-12-31T23:59:59.999Z,-178.133,14.0749,-53.0567,82.9143 -C2734202914-LPCLOUD,VNP14IMG,VIIRS/NPP Active Fires 6-Min L2 Swath 375m V002,LPCLOUD,2012-01-17T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2859248304-LAADS,XAERDT_L2_MODIS_Terra,MODIS/Terra Dark Target Aerosol 5-Min L2 Swath 10 km,LAADS,2019-01-01T00:00:00.000Z,2022-12-31T23:59:59.990Z,-180.0,-90.0,180.0,90.0 -C2001636718-LAADS,CLDCR_L2_VIIRS_SNPP,VIIRS/SNPP Cirrus Reflectance 6-min L2 Swath 750m,LAADS,2012-03-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C1996881146-POCLOUD,MUR-JPL-L4-GLOB-v4.1,GHRSST Level 4 MUR Global Foundation Sea Surface Temperature Analysis (v4.1),POCLOUD,2002-05-31T21:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2230035528-LAADS,FSNRAD_L2_VIIRS_CRIS_NOAA20,NOAA20 VIIRS+CrIS Fusion 6-Min L2 Swath 750 m,LAADS,2012-03-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C3380709133-OB_CLOUD,MODISA_L3m_CHL,"Aqua MODIS Level-3 Global Mapped Chlorophyll (CHL) Data, version 2022.0",OB_CLOUD,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C2930763263-LARC_CLOUD,TEMPO_NO2_L3,TEMPO gridded NO2 tropospheric and stratospheric columns V03 (PROVISIONAL),LARC_CLOUD,2023-08-02T00:00:00.000Z,,-170.0,10.0,-10.0,80.0 -C2075141605-POCLOUD,ASCATB-L2-Coastal,MetOp-B ASCAT Level 2 Ocean Surface Wind Vectors Optimized for Coastal Ocean,POCLOUD,2012-10-29T01:03:01.000Z,,-180.0,-89.6,180.0,89.6 -C2075141684-POCLOUD,ASCATC-L2-Coastal,MetOp-C ASCAT Level 2 Ocean Surface Wind Vectors Optimized for Coastal Ocean,POCLOUD,2019-10-22T16:42:00.000Z,,-180.0,-89.6,180.0,89.6 -C2832195379-POCLOUD,CYGNSS_L1_V3.2,CYGNSS Level 1 Science Data Record Version 3.2,POCLOUD,2018-08-01T00:00:00.000Z,,-180.0,-40.0,180.0,40.0 -C2098858642-POCLOUD,OSCAR_L4_OC_FINAL_V2.0,Ocean Surface Current Analyses Real-time (OSCAR) Surface Currents - Final 0.25 Degree (Version 2.0),POCLOUD,1993-01-01T00:00:00.000Z,2022-08-05T00:00:00.000Z,-180.0,-89.75,180.0,89.75 -C2545310883-LPCLOUD,VJ121,VIIRS/JPSS1 Land Surface Temperature and Emissivity 6-Min L2 Swath 750m V002,LPCLOUD,2018-01-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2859255251-LAADS,XAERDT_L2_AHI_H08,AHI/Himawari-08 Dark Target Aerosol 10-Min L2 Full Disk 10 km,LAADS,2019-01-01T00:00:00.000Z,2022-12-15T00:00:00.990Z,-180.0,-90.0,180.0,90.0 -C2439422590-LPCLOUD,ASTGTM_NC,ASTER Global Digital Elevation Model NetCDF V003,LPCLOUD,2000-03-01T00:00:00.000Z,2013-11-30T23:59:59.999Z,-180.0,-83.0,180.0,82.0 -C3380708980-OB_CLOUD,MODISA_L2_OC,"Aqua MODIS Level-2 Regional Ocean Color (OC) Data, version 2022.0",OB_CLOUD,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C2147478146-POCLOUD,VIIRS_N20-STAR-L2P-v2.80,GHRSST Level 2P NOAA STAR SST v2.80 from VIIRS on NOAA-20 Satellite,POCLOUD,2018-01-05T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2408034484-LPCLOUD,EMITL2BMIN,EMIT L2B Estimated Mineral Identification and Band Depth and Uncertainty 60 m V001,LPCLOUD,2022-08-09T00:00:00.000Z,,-180.0,-54.0,180.0,54.0 -C1940475563-POCLOUD,MODIS_T-JPL-L2P-v2019.0,GHRSST Level 2P Global Sea Surface Skin Temperature from the Moderate Resolution Imaging Spectroradiometer (MODIS) on the NASA Terra satellite (GDS2),POCLOUD,2000-02-24T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2102958977-POCLOUD,OSCAR_L4_OC_NRT_V2.0,Ocean Surface Current Analyses Real-time (OSCAR) Surface Currents - Near Real Time 0.25 Degree (Version 2.0),POCLOUD,2021-01-01T00:00:00.000Z,,-180.0,-89.75,180.0,89.75 -C2545310869-LPCLOUD,VJ114,VIIRS/JPSS1 Thermal Anomalies/Fire 6-Min L2 Swath 750m V002,LPCLOUD,2018-01-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2734197957-LPCLOUD,VJ114IMG,VIIRS/JPSS1 Active Fires 6-Min L2 Swath 375m V002,LPCLOUD,2018-01-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2545314550-LPCLOUD,VNP21,VIIRS/NPP Land Surface Temperature and Emissivity 6-Min L2 Swath 750m V002,LPCLOUD,2012-01-17T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2859265967-LAADS,XAERDT_L2_ABI_G17,ABI/GOES-17 Dark Target Aerosol 10-Min L2 Full Disk 10 km,LAADS,2019-01-01T00:00:00.000Z,2023-01-02T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C2205121394-POCLOUD,AVHRRF_MB-STAR-L2P-v2.80,GHRSST NOAA/STAR Metop-B AVHRR FRAC ACSPO v2.80 1km L2P Dataset (GDS v2),POCLOUD,2012-10-19T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2205121400-POCLOUD,AVHRRF_MC-STAR-L2P-v2.80,GHRSST NOAA/STAR Metop-C AVHRR FRAC ACSPO v2.80 1km L2P Dataset (GDS v2),POCLOUD,2018-12-04T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C3206162112-LAADS,CLDMSK_L2_VIIRS_NOAA21,VIIRS/NOAA21 Cloud Mask and Spectral Test Results 6-Min L2 Swath 750m,LAADS,2023-02-10T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2763264764-LPCLOUD,NASADEM_NC,NASADEM Merged DEM Global 1 arc second nc V001,LPCLOUD,2000-02-11T00:00:00.000Z,2000-02-21T23:59:59.000Z,-180.0,-56.0,180.0,60.0 -C3177838875-NSIDC_CPRD,NSIDC-0081,Near-Real-Time DMSP SSMIS Daily Polar Gridded Sea Ice Concentrations V002,NSIDC_CPRD,2023-01-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C3294057315-ASF,OPERA_L3_DISP-S1_V1,OPERA Surface Displacement from Sentinel-1 validated product (Version 1),ASF,2016-07-01T00:00:00.000Z,,-180.0,-15.289224,180.0,72.785503 -C2799438271-POCLOUD,SWOT_L2_HR_Raster_2.0,"SWOT Level 2 Water Mask Raster Image Data Product, Version C",POCLOUD,2022-12-16T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2930761273-LARC_CLOUD,TEMPO_HCHO_L3,TEMPO gridded formaldehyde total column V03 (PROVISIONAL),LARC_CLOUD,2023-08-01T00:00:00.000Z,,-170.0,10.0,-10.0,80.0 -C2859238768-LAADS,XAERDT_L2_MODIS_Aqua,MODIS/Aqua Dark Target Aerosol 5-Min L2 Swath 10 km,LAADS,2019-01-01T00:00:00.000Z,2023-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C2439429778-LPCLOUD,ASTGTM_NUMNC,ASTER Global Digital Elevation Model Attributes NetCDF V003,LPCLOUD,2000-03-01T00:00:00.000Z,2013-11-30T23:59:59.999Z,-180.0,-83.0,180.0,82.0 -C2916514952-POCLOUD,CCMP_WINDS_10M6HR_L4_V3.1,RSS CCMP 6-Hourly 10 Meter Surface Winds Level 4 Version 3.1,POCLOUD,1993-01-01T00:00:00.000Z,,-180.0,-80.0,180.0,80.0 -C2254232941-POCLOUD,CYGNSS_NOAA_L2_SWSP_25KM_V1.2,NOAA CYGNSS Level 2 Science Wind Speed 25-km Product Version 1.2,POCLOUD,2017-05-01T00:00:02.000Z,,-180.0,-40.0,180.0,40.0 -C2759076389-ORNL_CLOUD,Global_Veg_Greenness_GIMMS_3G_2187,"Global Vegetation Greenness (NDVI) from AVHRR GIMMS-3G+, 1981-2022",ORNL_CLOUD,1982-01-01T00:00:00.000Z,2022-12-31T23:59:59.999Z,-180.0,-90.0,180.0,90.0 -C2754895884-POCLOUD,N21-VIIRS-L2P-ACSPO-v2.80,GHRSST Level 2P NOAA ACSPO SST v2.80 from VIIRS on NOAA-21 Satellite,POCLOUD,2023-03-19T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2586786218-POCLOUD,OSTIA-UKMO-L4-GLOB-REP-v2.0,GHRSST Level 4 OSTIA Global Historical Reprocessed Foundation Sea Surface Temperature Analysis produced by the UK Meteorological Office,POCLOUD,1982-01-01T00:00:00.000Z,2024-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C3555842028-OB_CLOUD,PACE_HARP2_L1C_SCI,"PACE HARP2 Level-1C Science Data, version 3",OB_CLOUD,2024-02-22T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3392966952-OB_CLOUD,PACE_OCI_L1B_SCI,"PACE OCI Level-1B Science Data, version 3",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3261923228-LPCLOUD,SRTMGL1_NC,NASA Shuttle Radar Topography Mission Global 1 arc second NetCDF V003,LPCLOUD,2000-02-11T00:00:00.000Z,2000-02-21T23:59:59.000Z,-180.0,-56.0,180.0,60.0 -C2147480877-POCLOUD,VIIRS_NPP-STAR-L2P-v2.80,GHRSST Level 2P NOAA STAR SST v2.80 from VIIRS on S-NPP Satellite,POCLOUD,2012-02-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C3365180216-LPCLOUD,VJ147IMG,VIIRS/JPSS1 FILDA-2 Fire Modified Combustion Efficiency Product 6-min L2 Swath 375 V002,LPCLOUD,2018-01-05T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C3365168551-LPCLOUD,VJ147MOD,VIIRS/JPSS1 FILDA-2 Fire Modified Combustion Efficiency Product 6-min L2 Swath 750m V002,LPCLOUD,2018-01-05T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2545314536-LPCLOUD,VNP14,VIIRS/NPP Thermal Anomalies/Fire 6-Min L2 Swath 750m V002,LPCLOUD,2012-01-17T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C3365190240-LPCLOUD,VNP47IMG,VIIRS/NPP FILDA-2 Fire Modified Combustion Efficiency Product 6-min L2 Swath 375 V002,LPCLOUD,2012-01-19T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2859273114-LAADS,XAERDT_L2_ABI_G16,ABI/GOES-16 Dark Target Aerosol 10-Min L2 Full Disk 10 km,LAADS,2019-01-01T00:00:00.000Z,2023-01-02T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C2859228520-LAADS,XAERDT_L2_VIIRS_NOAA20,VIIRS/NOAA20 Dark Target Aerosol L2 6-Min Swath 6 km,LAADS,2019-01-01T00:00:00.000Z,2023-05-28T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C2859232902-LAADS,XAERDT_L2_VIIRS_SNPP,VIIRS/SNPP Dark Target Aerosol L2 6-Min Swath 6km,LAADS,2019-01-01T00:00:00.000Z,2023-05-28T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C2927907727-POCLOUD,CYGNSS_L2_SURFACE_FLUX_V3.2,CYGNSS Level 2 Ocean Surface Heat Flux Science Data Record Version 3.2,POCLOUD,2018-08-01T00:00:00.000Z,,-180.0,-39.8,180.0,39.8 -C2731035022-POCLOUD,G18-ABI-L2P-ACSPO-v2.90,GHRSST L2P NOAA/ACSPO GOES-18/ABI West America Region Sea Surface Temperature v2.90 dataset,POCLOUD,2022-06-07T00:00:00.000Z,,163.0,-60.0,-77.0,60.0 -C3380708978-OB_CLOUD,MODISA_L2_OC_NRT,"Aqua MODIS Level-2 Regional Ocean Color (OC) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C2036880657-POCLOUD,MUR25-JPL-L4-GLOB-v04.2,GHRSST Level 4 MUR 0.25deg Global Foundation Sea Surface Temperature Analysis (v4.2),POCLOUD,2002-08-31T21:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2763264768-LPCLOUD,NASADEM_NUMNC,NASADEM Merged DEM Source Global 1 arc second nc V001,LPCLOUD,2000-02-11T00:00:00.000Z,2000-02-21T23:59:59.000Z,-180.0,-56.0,180.0,60.0 -C2399557265-NSIDC_ECS,NSIDC-0051,Sea Ice Concentrations from Nimbus-7 SMMR and DMSP SSM/I-SSMIS Passive Microwave Data V002,NSIDC_ECS,1978-10-26T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C3177837840-NSIDC_CPRD,NSIDC-0051,Sea Ice Concentrations from Nimbus-7 SMMR and DMSP SSM/I-SSMIS Passive Microwave Data V002,NSIDC_CPRD,1978-10-26T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2776464104-NSIDC_ECS,NSIDC-0630,Calibrated Enhanced-Resolution Passive Microwave Daily EASE-Grid 2.0 Brightness Temperature ESDR V002,NSIDC_ECS,1978-10-25T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C3177839163-NSIDC_CPRD,NSIDC-0630,Calibrated Enhanced-Resolution Passive Microwave Daily EASE-Grid 2.0 Brightness Temperature ESDR V002,NSIDC_CPRD,1978-10-25T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C3177839243-NSIDC_CPRD,NSIDC-0630,MEaSUREs Calibrated Enhanced-Resolution Passive Microwave Daily EASE-Grid 2.0 Brightness Temperature ESDR V001,NSIDC_CPRD,1978-10-25T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2036877535-POCLOUD,OSTIA-UKMO-L4-GLOB-v2.0,GHRSST Level 4 OSTIA Global Foundation Sea Surface Temperature Analysis (GDS version 2),POCLOUD,2006-12-31T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C3620139932-OB_CLOUD,PACE_OCI_L2_UVAI_UAA_NRT,"PACE OCI Level-2 Regional Aerosol Index, Unified Aerosol Algorithm (UAA) - Near Real-time (NRT) Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620140222-OB_CLOUD,PACE_OCI_L3M_AER_UAA_NRT,"PACE OCI Level-3 Global Mapped Aerosol Optical Properties, Unified Aerosol Algorithm (UAA) Algorithm - Near Real-time (NRT) Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3261923657-LPCLOUD,SRTMGL1_NUMNC,NASA Shuttle Radar Topography Mission Global 1 arc second Number NetCDF V003,LPCLOUD,2000-02-11T00:00:00.000Z,2000-02-21T23:59:59.000Z,-180.0,-56.0,180.0,60.0 -C2763266381-LPCLOUD,SRTMGL3_NC,NASA Shuttle Radar Topography Mission Global 3 arc second NetCDF V003,LPCLOUD,2000-02-11T00:00:00.000Z,2000-02-21T23:59:59.000Z,-180.0,-56.0,180.0,60.0 -C2799438306-POCLOUD,SWOT_L2_LR_SSH_2.0,"SWOT Level 2 KaRIn Low Rate Sea Surface Height Data Product, Version C",POCLOUD,2022-12-16T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C3233945000-POCLOUD,SWOT_L2_LR_SSH_D,"SWOT Level 2 KaRIn Low Rate Sea Surface Height Data Product, Version D",POCLOUD,2022-12-16T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2930725014-LARC_CLOUD,TEMPO_NO2_L2,TEMPO NO2 tropospheric and stratospheric columns V03 (PROVISIONAL),LARC_CLOUD,2023-08-01T00:00:00Z,,-170.0,10.0,-10.0,80.0 -C2930764281-LARC_CLOUD,TEMPO_O3TOT_L3,TEMPO gridded ozone total column V03 (PROVISIONAL),LARC_CLOUD,2023-08-01T00:00:00.000Z,,-170.0,10.0,-10.0,80.0 -C3388381264-OB_CLOUD,VIIRSN_L2_OC,"Suomi-NPP VIIRS Level-2 Regional Ocean Color (OC) Data, version 2022.0",OB_CLOUD,2012-01-02T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3388381281-OB_CLOUD,VIIRSN_L2_OC_NRT,"Suomi-NPP VIIRS Level-2 Regional Ocean Color (OC) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2012-01-02T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C2162185379-ORNL_CLOUD,ABoVE_Arctic_CAP_1658,"ABoVE: Atmospheric Profiles of CO, CO2 and CH4 Concentrations from Arctic-CAP, 2017",ORNL_CLOUD,2017-04-26T00:00:00.000Z,2017-11-05T23:59:59.999Z,-166.045,40.0387,-104.112,71.2874 -C3255116494-ORNL_CLOUD,ABoVE_Domain_Projected_LULC_2353,Land Use and Land Cover Change Projection in the ABoVE Domain,ORNL_CLOUD,2015-01-01T00:00:00.000Z,2100-12-31T23:59:59.999Z,-169.0,49.0,-81.0,80.0 -C2170972048-ORNL_CLOUD,ABoVE_PBand_SAR_1657,ABoVE: Active Layer and Soil Moisture Properties from AirMOSS P-band SAR in Alaska,ORNL_CLOUD,2014-08-16T00:00:00.000Z,2017-10-10T23:59:59.999Z,-167.944,64.7127,-150.249,70.8774 -C2600317177-ORNL_CLOUD,ABoVE_SnowModel_Data_2105,"Daily SnowModel Outputs Covering the ABoVE Core Domain, 3-km Resolution, 1980-2020",ORNL_CLOUD,1980-09-01T00:00:00.000Z,2020-08-31T23:59:59.999Z,-176.915,49.8038,-84.3282,75.8357 -C2706335063-ORNL_CLOUD,ACTAMERICA_MFFLL_1649,"ACT-America: L2 Remotely Sensed Column-average CO2 by Airborne Lidar, Eastern USA",ORNL_CLOUD,2016-05-27T00:00:00.000Z,2018-05-20T23:59:59.999Z,-106.054,27.2303,-71.9109,49.1083 -C2705731187-ORNL_CLOUD,ACTAMERICA_MFLL_L1_1817,"ACT-America: L1 DAOD Measurements by Airborne CO2 Lidar, Eastern USA",ORNL_CLOUD,2016-05-27T00:00:00.000Z,2018-05-20T23:59:59.999Z,-106.054,27.2303,-71.9109,49.1083 -C2705715010-ORNL_CLOUD,ACT_CASA_Ensemble_Prior_Fluxes_1675,"ACT-America: Gridded Ensembles of Surface Biogenic Carbon Fluxes, 2003-2019",ORNL_CLOUD,2003-01-01T00:00:00.000Z,2019-12-31T23:59:59.999Z,-176.0,0.5,-24.5,70.5 -C3352415929-LAADS,AERDB_L2_AHI_H08,Himawari-08 AHI Deep Blue Aerosol L2,LAADS,2019-05-01T00:00:00.000Z,2020-04-30T23:59:00.000Z,-180.0,-90.0,180.0,90.0 -C2251465126-POCLOUD,ALTIKA_SARAL_L2_OST_XOGDR,SARAL Near-Real-Time Value-added Operational Geophysical Data Record Sea Surface Height Anomaly,POCLOUD,2020-03-18T00:00:00.000Z,,-180.0,-82.0,180.0,82.0 -C2596983413-POCLOUD,AMSR2-REMSS-L2P-v8.2,GHRSST Level 2P Global Subskin Sea Surface Temperature version 8.2 (v8.2) from the Advanced Microwave Scanning Radiometer 2 (AMSR2) by REMSS,POCLOUD,2012-07-02T19:00:44.000Z,,-180.0,-90.0,180.0,90.0 -C2596986276-POCLOUD,AMSR2-REMSS-L2P_RT-v8.2,GHRSST Level 2P Global Near-Real-Time Subskin Sea Surface Temperature version 8.2 (v8.2) from the Advanced Microwave Scanning Radiometer 2 (AMSR2) on the GCOM-W satellite by REMSS,POCLOUD,2012-07-02T19:00:44.000Z,,-180.0,-90.0,180.0,90.0 -C2075141559-POCLOUD,ASCATB-L2-25km,MetOp-B ASCAT Level 2 25.0km Ocean Surface Wind Vectors in Full Orbit Swath,POCLOUD,2012-10-29T01:00:01.000Z,,-180.0,-89.6,180.0,89.6 -C2075141638-POCLOUD,ASCATC-L2-25km,MetOp-C ASCAT Level 2 25.0km Ocean Surface Wind Vectors in Full Orbit Swath,POCLOUD,2019-10-22T09:57:00.000Z,,-180.0,-89.6,180.0,89.6 -C2698465642-ORNL_CLOUD,ATom_Aerosol_Properties_V2_2111,"ATom: Comprehensive Aerosol Properties, 2016-2018, Version 2",ORNL_CLOUD,2016-07-29T00:00:00.000Z,2018-05-22T23:59:59.999Z,-180.0,-86.5,180.0,82.9313 -C2704885339-ORNL_CLOUD,ATom_CESM2_1878,"ATom: CAM-chem/CESM2 Model Outputs Along Flight Tracks, 2016-2018",ORNL_CLOUD,2016-07-29T00:00:00.000Z,2018-05-21T23:59:59.999Z,-180.0,-86.1768,180.0,82.9404 -C3237458908-ORNL_CLOUD,ATom_Clouds_Aerosols_2250,ATom: Development of Cloud Indicator Algorithm Using Airborne Observations from CAPS,ORNL_CLOUD,2016-07-01T00:00:00.000Z,2019-09-30T23:59:59.999Z,-180.0,-90.0,180.0,90.0 -C2704875522-ORNL_CLOUD,ATom_GlobalModelInitiative_CTM_1897,ATom: Global Modeling Initiative (GMI) Chemical Transport Model (CTM) Output,ORNL_CLOUD,2016-07-29T00:00:00.000Z,2018-05-21T23:59:59.999Z,-180.0,-90.0,180.0,90.0 -C2704959373-ORNL_CLOUD,ATom_Photolysis_Rates_1651,"ATom: Global Modeled and CAFS Measured Cloudy and Clear Sky Photolysis Rates, 2016",ORNL_CLOUD,2005-08-01T00:00:00.000Z,2017-08-31T23:59:59.999Z,-180.0,-90.0,180.0,90.0 -C2036881712-POCLOUD,AVHRR_OI-NCEI-L4-GLOB-v2.1,GHRSST Level 4 AVHRR_OI Global Blended Sea Surface Temperature Analysis (GDS2) from NCEI,POCLOUD,2016-01-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2274733329-ORNL_CLOUD,AirMOSS_L2_3_RZ_Soil_Moisture_1418,"AirMOSS: L2/3 Volumetric Soil Moisture Profiles Derived From Radar, 2012-2015",ORNL_CLOUD,2012-09-18T00:00:00.000Z,2015-09-29T23:59:59.999Z,-123.283,9.87958,-68.3196,54.1254 -C2279583354-ORNL_CLOUD,AirMOSS_L2_Inground_Soil_Moist_1416,"AirMOSS: L2 Hourly In-Ground Soil Moisture at AirMOSS Sites, 2011-2015",ORNL_CLOUD,2011-09-01T00:00:00.000Z,2015-12-31T23:59:59.999Z,-121.558,19.5086,-72.1712,53.9169 -C2279583671-ORNL_CLOUD,AirMOSS_L2_Precipitation_1417,"AirMOSS: L2 Hourly Precipitation at AirMOSS Sites, 2011-2015",ORNL_CLOUD,2011-09-01T00:00:00.000Z,2015-12-31T23:59:59.999Z,-121.558,19.5086,-72.1712,53.9169 -C2262413649-ORNL_CLOUD,AirMOSS_L4_Daily_NEE_1422,"AirMOSS: L4 Daily Modeled Net Ecosystem Exchange (NEE), AirMOSS sites, 2012-2014",ORNL_CLOUD,2012-01-01T00:00:00.000Z,2014-10-30T23:59:59.999Z,-122.883,31.4912,-68.3359,45.7861 -C2258632707-ORNL_CLOUD,AirMOSS_L4_RZ_Soil_Moisture_1421,"AirMOSS: L4 Modeled Volumetric Root Zone Soil Moisture, 2012-2015",ORNL_CLOUD,2012-09-21T00:00:00.000Z,2015-09-28T23:59:59.999Z,-123.283,19.1247,-68.1237,54.1254 -C2274237497-ORNL_CLOUD,AirMOSS_L4_Regional_NEE_1423,"AirMOSS: L4 Modeled Net Ecosystem Exchange (NEE), Continental USA, 2012-2014",ORNL_CLOUD,2012-01-01T00:00:00.000Z,2014-10-31T23:59:59.999Z,-124.938,25.062,-66.937,53.062 -C2515937777-ORNL_CLOUD,Biogenic_CO2flux_SIF_SMUrF_1899,"Urban Biogenic CO2 fluxes: GPP, Reco and NEE Estimates from SMUrF, 2010-2019",ORNL_CLOUD,2010-01-01T00:00:00.000Z,2019-12-31T23:59:59.999Z,-125.0,-40.0,155.0,60.0 -C3170774861-ORNL_CLOUD,Boreal_Arctic_Wetland_CH4_2351,"Boreal Arctic Wetland Methane Emissions, 2002-2021",ORNL_CLOUD,2002-01-01T00:00:00.000Z,2021-12-30T23:59:59.999Z,-179.76,44.8744,179.75,89.7493 -C3543139481-LPCLOUD,CAM5K30EM,Combined ASTER and MODIS Emissivity database over Land (CAMEL) Emissivity Monthly Global 0.05Deg V003,LPCLOUD,2000-03-01T00:00:00.000Z,2024-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C2236316271-ORNL_CLOUD,CARVE_L1_FlightPath_1425,"CARVE: L1 Daily Flight Path Geolocation and Aircraft Position Data, Alaska, 2012-2015",ORNL_CLOUD,2012-05-23T00:00:00.000Z,2015-11-13T23:59:59.999Z,-168.111,58.8438,-131.754,71.5622 -C2236316070-ORNL_CLOUD,CARVE_L2_AtmosGas_NOAA_1401,"CARVE: L2 Atmospheric CO2, CO and CH4 Concentrations, NOAA CRDS, Alaska, 2012-2015",ORNL_CLOUD,2012-05-23T00:00:00.000Z,2014-11-09T23:59:59.999Z,-168.111,60.2085,-131.755,71.5622 -C2036881720-POCLOUD,CMC0.1deg-CMC-L4-GLOB-v3.0,GHRSST Level 4 CMC0.1deg Global Foundation Sea Surface Temperature Analysis (GDS version 2),POCLOUD,2016-01-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2395540148-ORNL_CLOUD,CMS_Forest_Productivity_1221,"CMS: Forest Biomass and Productivity, 1-degree and 5-km, Conterminous US, 2005",ORNL_CLOUD,2005-01-01T00:00:00.000Z,2005-12-31T23:59:59.999Z,-129.0,21.0,-65.0,52.0 -C2395542240-ORNL_CLOUD,CMS_Global_Cropland_Carbon_1279,"CMS: Carbon Fluxes from Global Agricultural Production and Consumption, 2005-2011",ORNL_CLOUD,2005-01-01T00:00:00.000Z,2011-12-31T23:59:59.999Z,-180.0,-59.463,180.0,83.637 -C2389022189-ORNL_CLOUD,CMS_Monthly_CO2_Gulf_1668,"Ocean Surface pCO2 and Air-Sea CO2 Flux in the Northern Gulf of America, 2006-2010",ORNL_CLOUD,2006-01-01T00:00:00.000Z,2011-01-01T23:59:59.999Z,-96.0,25.0,-86.0,32.0 -C2389082819-ORNL_CLOUD,CMS_SABGOM_Model_Simulations_1510,"CMS: Simulated Physical-Biogeochemical Data, SABGOM Model, Gulf of America, 2005-2010",ORNL_CLOUD,2005-01-01T00:00:00.000Z,2010-12-31T23:59:59.999Z,-100.433,13.1637,-68.1901,39.3735 -C2389021661-ORNL_CLOUD,CMS_Simulated_SIF_NiwotRidge_1720,"CLM Simulated Solar-Induced Fluorescence, Niwot Ridge, Colorado, USA, 1998-2018",ORNL_CLOUD,1998-01-01T00:00:00.000Z,2019-01-01T23:59:59.999Z,-105.546,40.0329,-105.546,40.0329 -C2390408273-ORNL_CLOUD,CMS_WRF_Model_Products_1338,"CMS: Hourly Carbon Dioxide Estimated Using the WRF Model, North America, 2010",ORNL_CLOUD,2010-01-01T00:00:00.000Z,2010-12-31T23:59:59.999Z,-151.0,13.0,-41.0,63.0 -C2251464384-POCLOUD,CYGNSS_L1_V2.1,CYGNSS Level 1 Science Data Record Version 2.1,POCLOUD,2017-03-18T00:00:00.000Z,,-180.0,-40.0,180.0,40.0 -C2646932894-POCLOUD,CYGNSS_L2_SURFACE_FLUX_CDR_V1.2,CYGNSS Level 2 Ocean Surface Heat Flux Climate Data Record Version 1.2,POCLOUD,2018-08-01T00:00:00.000Z,,-180.0,-38.0,180.0,38.0 -C2247621105-POCLOUD,CYGNSS_L2_SURFACE_FLUX_V2.0,CYGNSS Level 2 Ocean Surface Heat Flux Science Data Record Version 2.0,POCLOUD,2018-08-01T00:00:00.000Z,,-180.0,-38.0,180.0,38.0 -C2251464495-POCLOUD,CYGNSS_L2_V2.1,CYGNSS Level 2 Science Data Record Version 2.1,POCLOUD,2017-03-18T00:00:00.000Z,,-180.0,-40.0,180.0,40.0 -C2205620319-POCLOUD,CYGNSS_L2_V3.0,CYGNSS Level 2 Science Data Record Version 3.0,POCLOUD,2018-08-01T00:00:00.000Z,,-180.0,-40.0,180.0,40.0 -C2832196001-POCLOUD,CYGNSS_L2_V3.2,CYGNSS Level 2 Science Data Record Version 3.2,POCLOUD,2018-08-01T00:00:00.000Z,,-180.0,-40.0,180.0,40.0 -C2205121698-POCLOUD,CYGNSS_L3_S1.0,CYGNSS Level 3 Storm Centric Grid Science Data Record Version 1.0,POCLOUD,2018-08-05T12:00:00.000Z,2021-12-31T23:59:59.999Z,-180.0,0.0,0.0,55.0 -C2251464847-POCLOUD,CYGNSS_L3_V2.1,CYGNSS Level 3 Science Data Record Version 2.1,POCLOUD,2017-03-18T00:30:00.000Z,,-180.0,-40.0,180.0,40.0 -C2345896855-ORNL_CLOUD,C_Pools_Fluxes_CONUS_1837,"CMS: Terrestrial Carbon Stocks, Emissions, and Fluxes for Conterminous US, 2001-2016",ORNL_CLOUD,2001-01-01T00:00:00.000Z,2016-12-31T23:59:59.999Z,-130.0,25.0,-60.0,50.0 -C2036881727-POCLOUD,DMI_OI-DMI-L4-GLOB-v1.0,GHRSST Level 4 DMI_OI Global Foundation Sea Surface Temperature Analysis (GDS version 2),POCLOUD,2013-04-30T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2170971503-ORNL_CLOUD,Dall_Sheep_Snowpack_1602,"ABoVE: Dall Sheep Response to Snow and Landscape Covariates, Alaska, 2005-2008",ORNL_CLOUD,2005-09-01T00:00:00.000Z,2008-08-31T23:59:59.999Z,-154.526,59.976,-153.033,61.0517 -C3104728587-ORNL_CLOUD,DeltaX_LandAccretionMap_WLD_2308,"Delta-X: Modeled Land Accretion Rate Maps, Wax Lake Delta, MRD, LA, USA, 2021",ORNL_CLOUD,2021-03-20T00:00:00.000Z,2021-08-27T23:59:59.999Z,-91.5784,29.3892,-91.3286,29.595 -C2389176598-ORNL_CLOUD,Disturbance_Biomass_Maps_1679,"Disturbance History and Forest Biomass from Landsat for Six US Sites, 1985-2014",ORNL_CLOUD,1984-01-01T00:00:00.000Z,2014-12-31T23:59:59.999Z,-123.235,32.2654,-68.4809,48.2886 -C2207986936-ORNL_CLOUD,ENVISAT_SCIAMACHY_SIF_1871,"L2 Solar-Induced Fluorescence (SIF) from SCIAMACHY, 2003-2012",ORNL_CLOUD,2003-01-01T00:00:00.000Z,2012-04-08T23:59:59.999Z,-180.0,-58.0,180.0,70.0 -C2764707175-ORNL_CLOUD,FluxSat_GPP_FPAR_1835,"Global MODIS and FLUXNET-derived Daily Gross Primary Production, V2",ORNL_CLOUD,2000-03-01T00:00:00.000Z,2020-08-01T23:59:59.999Z,-180.0,-90.0,180.0,90.0 -C2731041317-POCLOUD,G18-ABI-L3C-ACSPO-v2.90,GHRSST L3C NOAA/ACSPO GOES-18/ABI West America Region Sea Surface Temperature v2.90 dataset,POCLOUD,2022-06-07T00:00:00.000Z,,163.0,-60.0,-77.0,60.0 -C2036881735-POCLOUD,GAMSSA_28km-ABOM-L4-GLOB-v01,GHRSST Level 4 GAMSSA_28km Global Foundation Sea Surface Temperature Analysis v1.0 dataset (GDS2),POCLOUD,2008-07-23T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2395504063-ORNL_CLOUD,GCAM_Land_Cover_2005-2095_1216,"CMS: Land Cover Projections (5.6-km) from GCAM v3.1 for Conterminous USA, 2005-2095",ORNL_CLOUD,2005-01-01T00:00:00.000Z,2095-12-31T23:59:59.999Z,-124.69,25.25,-67.09,49.35 -C3558858528-OB_CLOUD,GOCI_L2_OC,"COMS GOCI Level-2 Regional Ocean Color (OC) Data, version 2014.0",OB_CLOUD,2010-06-26T00:00:00Z,2021-03-31T23:59:59Z,-180.0,-90.0,180.0,90.0 -C2036877806-POCLOUD,GOES16-SST-OSISAF-L3C-v1.0,GHRSST L3C hourly America Region sub-skin Sea Surface Temperature v1.0 from ABI on GOES16 produced by OSISAF,POCLOUD,2017-12-14T14:30:00.000Z,,-135.0,-60.0,-15.0,60.0 -C2390701035-ORNL_CLOUD,GPP_CONUS_TROPOMI_1875,"CMS: Daily Gross Primary Productivity over CONUS from TROPOMI SIF, 2018-2021",ORNL_CLOUD,2018-02-15T00:00:00.000Z,2021-10-15T23:59:59.999Z,-125.002,23.9975,-64.9993,50.0 -C3293388915-ORNL_CLOUD,GPP_COS_Conductance_SoilFluxes_2324,"SiB4 Modeled 0.5-degree Carbonyl Sulfide Vegetation and Soil Fluxes, 2000-2020",ORNL_CLOUD,2000-01-01T00:00:00.000Z,2020-12-31T23:59:59.999Z,-180.0,53.0,180.0,90.0 -C2036877754-POCLOUD,Geo_Polar_Blended-OSPO-L4-GLOB-v1.0,GHRSST Level 4 OSPO Global Foundation Sea Surface Temperature Analysis (GDS version 2),POCLOUD,2014-06-02T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2036877745-POCLOUD,Geo_Polar_Blended_Night-OSPO-L4-GLOB-v1.0,GHRSST Level 4 OSPO Global Nighttime Foundation Sea Surface Temperature Analysis (GDS version 2),POCLOUD,2014-06-02T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2840821292-ORNL_CLOUD,Global_Freshwater_CH4Emissions_2253,"Global Wetland Methane Emissions derived from FLUXNET and the UpCH4 Model, 2001-2018",ORNL_CLOUD,2001-01-01T00:00:00.000Z,2018-12-31T23:59:59.999Z,-180.0,-56.0,180.0,85.0 -C2764746271-ORNL_CLOUD,Global_Lakes_Methane_2008,"Global-Gridded Daily Methane Emissions Climatology from Lake Systems, 2003-2015",ORNL_CLOUD,2012-01-01T00:00:00.000Z,2012-12-31T23:59:59.999Z,-180.0,-90.0,180.0,90.0 -C2764742564-ORNL_CLOUD,Global_Monthly_GPP_1789,"Global Monthly GPP from an Improved Light Use Efficiency Model, 1982-2016",ORNL_CLOUD,1982-01-01T00:00:00.000Z,2017-01-01T23:59:59.999Z,-180.0,-90.0,180.0,90.0 -C2515869951-ORNL_CLOUD,Global_Reservoirs_Methane_1918,Global-Gridded Daily Methane Emissions from Inland Dam-Reservoir Systems,ORNL_CLOUD,2002-01-01T00:00:00.000Z,2015-12-31T23:59:59.999Z,-180.0,-90.0,180.0,90.0 -C2207986708-ORNL_CLOUD,Global_SIF_OCO2_MODIS_1863,"High Resolution Global Contiguous SIF Estimates from OCO-2 SIF and MODIS, Version 2",ORNL_CLOUD,2014-09-01T00:00:00.000Z,2020-07-31T23:59:59.999Z,-180.0,-90.0,180.0,90.0 -C2744808497-POCLOUD,H09-AHI-L2P-ACSPO-v2.90,GHRSST L2P NOAA/ACSPO Himawari-09 AHI Pacific Ocean Region Sea Surface Temperature v2.90 dataset,POCLOUD,2022-10-22T00:00:00.000Z,,80.0,-60.0,-160.0,60.0 -C2744809790-POCLOUD,H09-AHI-L3C-ACSPO-v2.90,GHRSST L3C NOAA/ACSPO Himawari-09 AHI Pacific Ocean Region Sea Surface Temperature v2.90 dataset,POCLOUD,2022-10-22T00:00:00.000Z,,80.0,-60.0,-160.0,60.0 -C2216863856-ORNL_CLOUD,HWSD_1247,Regridded Harmonized World Soil Database v1.2,ORNL_CLOUD,2000-01-01T00:00:00.000Z,2000-12-31T23:59:59.999Z,-180.0,-90.0,180.0,90.0 -C2517357574-ORNL_CLOUD,HighRes_ClimateData_Western_US_1682,"NACP: Climate Data Inputs (3-hourly) for Community Land Model, Western USA, 1979-2015",ORNL_CLOUD,1979-01-01T00:00:00.000Z,2016-01-01T23:59:59.999Z,-124.812,31.1875,-101.979,49.0208 -C2706327711-ORNL_CLOUD,Insitu_Tower_Greenhouse_Gas_1798,"ACT-America: L1 Raw, Uncalibrated In-Situ CO2, CO, and CH4 Mole Fractions from Towers",ORNL_CLOUD,2015-01-01T00:00:00.000Z,2019-12-31T23:59:59.999Z,-98.588,30.1951,-76.4188,44.0502 -C2036881956-POCLOUD,K10_SST-NAVO-L4-GLOB-v01,GHRSST Level 4 K10_SST Global 10 km Analyzed Sea Surface Temperature from Naval Oceanographic Office (NAVO) in GDS2.0,POCLOUD,2019-01-09T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2954717391-ORNL_CLOUD,LAI_Africa_2325,"MODIS-derived Aggregate, Woody and Herbaceous Leaf Area Index for Africa, 2002-2022",ORNL_CLOUD,2002-07-05T00:00:00.000Z,2022-07-29T23:59:59.999Z,-21.2839,-40.02,63.8625,20.02 -C2784898845-ORNL_CLOUD,Land_Use_Harmonization_V1_1248,"LUH1: Harmonized Global Land Use for Years 1500-2100, V1",ORNL_CLOUD,1500-01-01T00:00:00.000Z,2100-01-01T23:59:59.999Z,-180.0,-90.0,180.0,90.0 -C2764728966-ORNL_CLOUD,Land_Use_Harmonization_V2_1721,LUH2-ISIMIP2b Harmonized Global Land Use for the Years 2015-2100,ORNL_CLOUD,2015-01-01T00:00:00.000Z,2100-01-01T23:59:59.999Z,-180.0,-90.0,180.0,90.0 -C2704977536-ORNL_CLOUD,MFLL_CO2_Weighting_Functions_1891,"ACT-America: L2 Weighting Functions for Airborne Lidar Column-avg CO2, Eastern USA",ORNL_CLOUD,2016-05-27T00:00:00.000Z,2018-05-20T23:59:59.999Z,-106.053,27.2303,-71.9111,49.1081 -C2704971204-ORNL_CLOUD,MFLL_XCO2_Range_10Hz_1892,"ACT-America: L2 Remotely Sensed Column-avg CO2 by Airborne Lidar, Lite, Eastern USA",ORNL_CLOUD,2016-05-27T00:00:00.000Z,2018-05-20T23:59:59.999Z,-106.054,27.2303,-71.9109,49.1083 -C2873769608-LARC_CLOUD,MIL2ASAF,MISR Level 2 FIRSTLOOK Aerosol parameters V002,LARC_CLOUD,1999-12-18T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C3380709124-OB_CLOUD,MODISA_L3m_CHL_NRT,"Aqua MODIS Level-3 Global Mapped Chlorophyll (CHL) - NRT Data, version 2022.0",OB_CLOUD,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3380709177-OB_CLOUD,MODISA_L3m_IOP,"Aqua MODIS Level-3 Global Mapped Inherent Optical Properties (IOP) Data, version 2022.0",OB_CLOUD,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3380709198-OB_CLOUD,MODISA_L3m_KD,"Aqua MODIS Level-3 Global Mapped Diffuse Attenuation Coefficient for Downwelling Irradiance (KD) Data, version 2022.0",OB_CLOUD,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3384236977-OB_CLOUD,MODIST_L2_OC_NRT,"Terra MODIS Level-2 Regional Ocean Color (OC) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2000-02-24T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3384237428-OB_CLOUD,MODIST_L3m_CHL,"Terra MODIS Level-3 Global Mapped Chlorophyll (CHL) Data, version 2022.0",OB_CLOUD,2000-02-24T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C1940473819-POCLOUD,MODIS_A-JPL-L2P-v2019.0,GHRSST Level 2P Global Sea Surface Skin Temperature from the Moderate Resolution Imaging Spectroradiometer (MODIS) on the NASA Aqua satellite (GDS2),POCLOUD,2002-07-04T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2036878045-POCLOUD,MW_IR_OI-REMSS-L4-GLOB-v5.0,GHRSST Level 4 MW_IR_OI Global Foundation Sea Surface Temperature analysis version 5.0 from REMSS,POCLOUD,2002-06-01T00:00:00.000Z,,-179.0,-90.0,180.0,90.0 -C2205102254-POCLOUD,MW_IR_OI-REMSS-L4-GLOB-v5.1,GHRSST Level 4 MW_IR_OI Global Foundation Sea Surface Temperature analysis version 5.1 from REMSS,POCLOUD,2002-06-01T00:00:00.000Z,,-179.0,-90.0,180.0,90.0 -C2036878052-POCLOUD,MW_OI-REMSS-L4-GLOB-v5.0,GHRSST Level 4 MW_OI Global Foundation Sea Surface Temperature analysis version 5.0 from REMSS,POCLOUD,1997-12-31T16:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2205105895-POCLOUD,MW_OI-REMSS-L4-GLOB-v5.1,GHRSST Level 4 MW_OI Global Foundation Sea Surface Temperature analysis version 5.1 from REMSS,POCLOUD,1997-12-31T16:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2764692443-ORNL_CLOUD,Mean_Seasonal_LAI_1653,"Global Monthly Mean Leaf Area Index Climatology, 1981-2015",ORNL_CLOUD,1981-08-01T00:00:00.000Z,2015-08-31T23:59:59.999Z,-180.0,-90.0,180.0,90.0 -C2847115945-ORNL_CLOUD,MetOpA_GOME2_SIF_V2_2292,"L2 Daily Solar-Induced Fluorescence (SIF) from MetOp-A GOME-2, 2007-2018, V2",ORNL_CLOUD,2007-02-01T00:00:00.000Z,2018-02-01T23:59:59.999Z,-180.0,-89.7804,180.0,89.5996 -C2840822442-ORNL_CLOUD,MetOpB_GOME2_SIF_2182,"L2 Daily Solar-Induced Fluorescence (SIF) from MetOp-B GOME-2, 2013-2021",ORNL_CLOUD,2013-04-01T00:00:00.000Z,2021-06-07T23:59:59.999Z,-180.0,-89.7694,180.0,89.5944 -C2434072484-ORNL_CLOUD,NACP_ACES_V2_1943,"Anthropogenic Carbon Emission System, 2012-2017, Version 2",ORNL_CLOUD,2012-01-01T00:00:00.000Z,2018-01-01T23:59:59.999Z,-128.267,23.0132,-65.3066,48.1089 -C2517656499-ORNL_CLOUD,NACP_Forest_Conservation_1662,"NACP: Forest Carbon Stocks, Fluxes and Productivity Estimates, Western USA, 1979-2099",ORNL_CLOUD,1979-01-01T00:00:00.000Z,2099-12-31T23:59:59.999Z,-124.812,31.1875,-101.961,49.0351 -C2552206090-ORNL_CLOUD,NACP_MsTMIP_Model_Driver_1220,NACP MsTMIP: Global and North American Driver Data for Multi-Model Intercomparison,ORNL_CLOUD,1700-01-01T00:00:00.000Z,2010-12-31T23:59:59.999Z,-178.75,-78.25,179.95,89.75 -C2840815089-ORNL_CLOUD,NACP_PalEON_MIP_1779,"PalEON: Terrestrial Ecosystem Model Drivers for the Northeastern U.S., 0850-2010",ORNL_CLOUD,0850-01-01T00:00:00.000Z,2010-12-31T23:59:59.999Z,-100.001,35.0,-60.0,50.001 -C3309442935-POCLOUD,NASA_SSH_REF_SIMPLE_GRID_V1,NASA-SSH Simple Gridded Sea Surface Height from Standardized Reference Missions Only Version 1,POCLOUD,1992-10-25T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C3085229833-POCLOUD,NEUROST_SSH-SST_L4_V2024.0,Daily NeurOST L4 Sea Surface Height and Surface Geostrophic Currents,POCLOUD,2010-01-01T00:00:00.000Z,,-180.0,-70.0,180.0,79.9 -C3177782311-NSIDC_CPRD,NSIDC-0001,DMSP SSM/I-SSMIS Daily Polar Gridded Brightness Temperatures V006,NSIDC_CPRD,1987-07-09T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2519306057-NSIDC_ECS,NSIDC-0080,Near-Real-Time DMSP SSM/I-SSMIS Daily Polar Gridded Brightness Temperatures V002,NSIDC_ECS,2023-01-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C3177838478-NSIDC_CPRD,NSIDC-0080,Near-Real-Time DMSP SSM/I-SSMIS Daily Polar Gridded Brightness Temperatures V002,NSIDC_CPRD,2023-01-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C3291000346-NSIDC_CPRD,NSIDC-0530,MEaSUREs Northern Hemisphere Terrestrial Snow Cover Extent Daily 25km EASE-Grid 2.0 V001,NSIDC_CPRD,1999-01-01T00:00:00.000Z,2012-12-31T23:59:59.999Z,-180.0,0.0,180.0,90.0 -C2240727916-ORNL_CLOUD,NorthSlope_NEE_TVPRM_1920,"ABoVE: TVPRM Simulated Net Ecosystem Exchange, Alaskan North Slope, 2008-2017",ORNL_CLOUD,2008-01-01T00:00:00.000Z,2017-12-31T23:59:59.999Z,-177.469,56.0895,-128.592,77.2626 -C2036878059-POCLOUD,OISST_HR_NRT-GOS-L4-BLK-v2.0,Black Sea High Resolution SST L4 Analysis 0.0625 deg Resolution,POCLOUD,2007-12-31T19:00:00.000Z,,26.375,38.75,42.375,48.812 -C2036878073-POCLOUD,OISST_HR_NRT-GOS-L4-MED-v2.0,Mediterranean Sea High Resolution SST L4 Analysis 1/16deg Resolution,POCLOUD,2007-12-31T19:00:00.000Z,,-18.125,30.25,36.25,46.0 -C2036878081-POCLOUD,OISST_UHR_NRT-GOS-L4-BLK-v2.0,Black Sea Ultra High Resolution SST L4 Analysis 0.01 deg Resolution,POCLOUD,2007-12-31T19:00:00.000Z,,26.375,38.75,42.375,48.812 -C2036878088-POCLOUD,OISST_UHR_NRT-GOS-L4-MED-v2.0,Mediterranean Sea Ultra High Resolution SST L4 Analysis 0.01 deg Resolution,POCLOUD,2007-12-31T19:00:00.000Z,,-18.125,30.25,36.25,46.0 -C3406446219-OB_CLOUD,OLCIS3A_L2_EFR_OC,"Sentinel-3A OLCI Level-2 Regional Earth-observation Full Resolution (EFR) Ocean Color (OC) Data, version 2022.0",OB_CLOUD,2016-04-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3407754974-OB_CLOUD,OLCIS3B_L2_EFR_OC,"Sentinel-3B OLCI Level-2 Regional Earth-observation Full Resolution (EFR) Ocean Color (OC) Data, version 2022.0",OB_CLOUD,2018-05-14T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C2102959417-POCLOUD,OSCAR_L4_OC_INTERIM_V2.0,Ocean Surface Current Analyses Real-time (OSCAR) Surface Currents - Interim 0.25 Degree (Version 2.0),POCLOUD,2020-01-01T00:00:00.000Z,,-180.0,-89.75,180.0,89.75 -C3392966961-OB_CLOUD,PACE_OCI_L1C_SCI,"PACE OCI Level-1C Science Data, version 3",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620139326-OB_CLOUD,PACE_OCI_L2_AER_UAA_NRT,"PACE OCI Level-2 Regional Aerosol Optical Properties, Unified Aerosol Algorithm (UAA) Algorithm - Near Real-time (NRT) Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620139587-OB_CLOUD,PACE_OCI_L2_AOP_NRT,"PACE OCI Level-2 Regional Apparent Optical Properties - Near Real-time (NRT) Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620139643-OB_CLOUD,PACE_OCI_L2_BGC_NRT,"PACE OCI Level-2 Regional Ocean Biogeochemical Properties, Near Real-time (NRT) Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620139865-OB_CLOUD,PACE_OCI_L2_SFREFL_NRT,"PACE OCI Level-2 Regional Surface Reflectance - Near Real-time (NRT) Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3285304335-OB_CLOUD,PACE_SPEXONE_L1C_SCI,"PACE SPEXone Level-1C Science Data, version 3",OB_CLOUD,2024-02-23T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C2254686682-ORNL_CLOUD,PermafrostThaw_CarbonEmissions_1872,"Projections of Permafrost Thaw and Carbon Release for RCP 4.5 and 8.5, 1901-2299",ORNL_CLOUD,1901-01-01T00:00:00.000Z,2300-12-31T23:59:59.999Z,-180.0,-90.0,180.0,90.0 -C2036878103-POCLOUD,RAMSSA_09km-ABOM-L4-AUS-v01,GHRSST Level 4 RAMSSA_9km Australian Regional Foundation Sea Surface Temperature Analysis v1.0 dataset (GDS2),POCLOUD,2006-06-12T00:00:00.000Z,,60.0,-70.0,180.0,20.0 -C2270392799-POCLOUD,SEA_SURFACE_HEIGHT_ALT_GRIDS_L4_2SATS_5DAY_6THDEG_V_JPL2205,MEaSUREs Gridded Sea Surface Height Anomalies Version 2205,POCLOUD,1992-10-01T23:46:00.000Z,,-180.0,-80.0,180.0,80.0 -C2345900038-ORNL_CLOUD,SIF_PAR_fPAR_US_Midwest_2018_1813,"High Resolution Land Cover-Specific Solar-Induced Fluorescence, Midwestern USA, 2018",ORNL_CLOUD,2018-05-02T00:00:00.000Z,2018-09-23T23:59:59.999Z,-110.021,34.9792,-77.9792,49.9375 -C2847119443-ORNL_CLOUD,SIF_SCIAMACHY_GOME2_Harmonized_2317,"Global High-Resolution Estimates of SIF from Fused SCIAMACHY and GOME-2, V2",ORNL_CLOUD,2003-01-01T00:00:00.000Z,2017-12-31T23:59:59.999Z,-180.0,-90.0,180.0,90.0 -C2208422957-POCLOUD,SMAP_JPL_L3_SSS_CAP_8DAY-RUNNINGMEAN_V5,JPL SMAP Level 3 CAP Sea Surface Salinity Standard Mapped Image 8-Day Running Mean V5.0 Validated Dataset,POCLOUD,2015-04-30T12:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2832221740-POCLOUD,SMAP_RSS_L2_SSS_V6,RSS SMAP Level 2C Sea Surface Salinity V6.0 Validated Dataset,POCLOUD,2015-04-01T00:43:12.000Z,,-180.0,-90.0,180.0,90.0 -C2832227567-POCLOUD,SMAP_RSS_L3_SSS_SMI_8DAY-RUNNINGMEAN_V6,RSS SMAP Level 3 Sea Surface Salinity Standard Mapped Image 8-Day Running Mean V6.0 Validated Dataset,POCLOUD,2015-03-27T12:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2763266390-LPCLOUD,SRTMGL3_NUMNC,NASA Shuttle Radar Topography Mission Global 3 arc second Number NetCDF V003,LPCLOUD,2000-02-11T00:00:00.000Z,2000-02-21T23:59:59.000Z,-180.0,-56.0,180.0,60.0 -C2799438266-POCLOUD,SWOT_L2_HR_PIXC_2.0,"SWOT Level 2 Water Mask Pixel Cloud Data Product, Version C",POCLOUD,2022-12-16T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2799438313-POCLOUD,SWOT_L2_NALT_GDR_2.0,SWOT Level 2 Nadir Altimeter Geophysical Data Record with Waveforms,POCLOUD,2022-12-16T00:00:00.000Z,,-180.0,-77.6,180.0,77.6 -C2143402571-ORNL_CLOUD,Sat_ActiveLayer_Thickness_Maps_1760,"ABoVE: Active Layer Thickness from Remote Sensing Permafrost Model, Alaska, 2001-2015",ORNL_CLOUD,2001-01-01T00:00:00.000Z,2015-12-31T23:59:59.999Z,-179.18,55.5667,-132.576,70.214 -C2390248773-ORNL_CLOUD,SiB4_Global_HalfDegree_Daily_1849,"SiB4 Modeled Global 0.5-Degree Daily Carbon Fluxes and Pools, 2000-2018",ORNL_CLOUD,2000-01-01T00:00:00.000Z,2018-12-31T23:59:59.999Z,-180.0,-90.0,180.0,90.0 -C2392085682-ORNL_CLOUD,SiB4_Global_HalfDegree_Hourly_1847,"SiB4 Modeled Global 0.5-Degree Hourly Carbon Fluxes and Productivity, 2000-2018",ORNL_CLOUD,2000-01-01T00:00:00.000Z,2018-12-31T23:59:59.999Z,-180.0,-90.0,180.0,90.0 -C2345882961-ORNL_CLOUD,SiB4_Global_HalfDegree_Monthly_1848,"SiB4 Modeled Global 0.5-Degree Monthly Carbon Fluxes and Pools, 2000-2018",ORNL_CLOUD,2000-01-01T00:00:00.000Z,2018-12-31T23:59:59.999Z,-180.0,-90.0,180.0,90.0 -C2143402490-ORNL_CLOUD,Snow_Cover_Extent_and_Depth_1757,"ABoVE: High Resolution Cloud-Free Snow Cover Extent and Snow Depth, Alaska, 2001-2017",ORNL_CLOUD,2001-01-01T00:00:00.000Z,2017-12-30T23:59:59.999Z,-179.18,55.5667,-132.576,71.4215 -C2736724942-ORNL_CLOUD,SoilSCAPE_1339,"Soil Moisture Profiles and Temperature Data from SoilSCAPE Sites, USA",ORNL_CLOUD,2011-08-03T00:00:00.000Z,2019-12-14T23:59:59.999Z,-120.99,31.7355,-83.663,42.299 -C2736725173-ORNL_CLOUD,SoilSCAPE_V2_2049,"Soil Moisture Profiles and Temperature Data from SoilSCAPE Sites, Version 2",ORNL_CLOUD,2021-12-03T00:00:00.000Z,2023-02-03T23:59:59.999Z,-110.053,-36.7161,174.616,37.1954 -C3195527175-POCLOUD,TELLUS_GRAC-GRFO_MASCON_CRI_GRID_RL06.3_V4,"JPL GRACE and GRACE-FO Mascon Ocean, Ice, and Hydrology Equivalent Water Height Coastal Resolution Improvement (CRI) Filtered Release 06.3 Version 04",POCLOUD,2002-04-04T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2930727817-LARC_CLOUD,TEMPO_CLDO4_L3,TEMPO gridded cloud fraction and pressure (O2-O2 dimer) V03 (PROVISIONAL),LARC_CLOUD,2023-08-01T00:00:00.000Z,,-170.0,10.0,-10.0,80.0 -C2930730944-LARC_CLOUD,TEMPO_HCHO_L2,TEMPO formaldehyde total column V03 (PROVISIONAL),LARC_CLOUD,2023-08-01T00:00:00.000Z,,-170.0,10.0,-10.0,80.0 -C2764637520-ORNL_CLOUD,US_MODIS_NDVI_1299,"MODIS NDVI Data, Smoothed and Gap-filled, for the Conterminous US: 2000-2015",ORNL_CLOUD,2000-01-01T00:00:00.000Z,2015-12-31T23:59:59.999Z,-129.892,20.8458,-62.556,50.5562 -C2517700524-ORNL_CLOUD,US_MODIS_Veg_Parameters_1539,MODIS-derived Vegetation and Albedo Parameters for Agroecosystem-Climate Modeling,ORNL_CLOUD,2003-01-01T00:00:00.000Z,2010-12-31T23:59:59.999Z,-139.051,15.1525,-51.9489,49.1525 -C3396928893-OB_CLOUD,VIIRSJ1_L2_IOP,"NOAA-20 VIIRS Level-2 Regional Inherent Optical Properties (IOP) Data, version 2022.0",OB_CLOUD,2017-11-29T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3396928899-OB_CLOUD,VIIRSJ1_L2_OC,"NOAA-20 VIIRS Level-2 Regional Ocean Color (OC) Data, version 2022.0",OB_CLOUD,2017-11-29T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3396928895-OB_CLOUD,VIIRSJ1_L2_OC_NRT,"NOAA-20 VIIRS Level-2 Regional Ocean Color (OC) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2017-11-29T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3397023585-OB_CLOUD,VIIRSJ2_L2_OC_NRT,"NOAA-21 VIIRS Level-2 Regional Ocean Color (OC) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2022-11-10T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C2517350332-ORNL_CLOUD,Vulcan_V3_Annual_Emissions_1741,"Vulcan: High-Resolution Annual Fossil Fuel CO2 Emissions in USA, 2010-2015, Version 3",ORNL_CLOUD,2010-01-01T00:00:00.000Z,2016-01-01T23:59:59.999Z,-165.214,22.8582,-65.3082,73.7533 -C2516155224-ORNL_CLOUD,Vulcan_V3_Hourly_Emissions_1810,"Vulcan: High-Resolution Hourly Fossil Fuel CO2 Emissions in USA, 2010-2015, Version 3",ORNL_CLOUD,2010-01-01T00:00:00.000Z,2016-01-01T23:59:59.999Z,-165.214,22.8582,-65.3082,73.7533 -C1681179895-LAADS,WATVP_L2_VIIRS_SNPP,VIIRS/SNPP Level-2 Water Vapor Products 6-min Swath 750m,LAADS,2012-05-01T00:06:00.000Z,2018-09-11T16:06:00.000Z,-180.0,-90.0,180.0,90.0 -C2764687115-ORNL_CLOUD,Xingu_Albedo_Radiation_1622,"Net Radiation and Albedo from MODIS for Xingu River Basin, Brazil, 2000-2012",ORNL_CLOUD,2000-02-18T00:00:00.000Z,2012-11-16T23:59:59.999Z,-55.6935,-15.0697,-51.2324,-9.5717 -C1996546500-GHRC_DAAC,rssmif16d,RSS SSMIS OCEAN PRODUCT GRIDS DAILY FROM DMSP F16 NETCDF V7,GHRC_DAAC,2003-10-26T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2945392606-ORNL_CLOUD,vemap-1_VEMAP_Alaska_1344,"VEMAP 2: Monthly Historical and Future Climate Data, Alaska, USA",ORNL_CLOUD,1922-01-01T00:00:00.000Z,2100-12-31T23:59:59.999Z,-170.5,53.5,-128.5,71.5 -C2036877465-POCLOUD,ABI_G16-STAR-L2P-v2.70,GHRSST NOAA/STAR GOES-16 ABI L2P America Region SST v2.70 dataset in GDS2,POCLOUD,2017-12-15T00:00:00.000Z,,-135.0,-59.0,-15.0,59.0 -C2036877612-POCLOUD,ABI_G16-STAR-L3C-v2.70,GHRSST NOAA/STAR GOES-16 ABI L3C America Region SST v2.70 dataset in GDS2,POCLOUD,2017-12-15T00:00:00.000Z,,-135.0,-59.0,-15.0,59.0 -C2036877626-POCLOUD,ABI_G17-STAR-L2P-v2.71,GHRSST NOAA/STAR GOES-17 ABI L2P America Region SST v2.71 dataset in GDS2,POCLOUD,2019-10-16T00:00:00.000Z,2023-01-10T23:00:00.000Z,163.0,-60.0,-77.0,60.0 -C2036877645-POCLOUD,ABI_G17-STAR-L3C-v2.71,GHRSST NOAA/STAR GOES-17 ABI L3C America Region SST v2.71 dataset in GDS2,POCLOUD,2019-10-16T00:00:00.000Z,2023-01-10T23:00:00.000Z,163.0,-60.0,-77.0,60.0 -C2181255288-ORNL_CLOUD,ABoVE_Footprints_WRF_AK_NWCa_1896,"ABoVE: Level-4 WRF-STILT Footprint Files for Circumpolar Receptors, 2016-2019",ORNL_CLOUD,2016-07-24T00:00:00.000Z,2019-12-31T23:59:59.999Z,-180.0,30.0,180.0,90.0 -C2180373101-ORNL_CLOUD,ABoVE_Particles_WRF_AK_NWCa_1895,"ABoVE: Level-4 WRF-STILT Particle Trajectories for Circumpolar Receptors, 2016-2019",ORNL_CLOUD,2016-07-24T00:00:00.000Z,2019-12-31T23:59:59.999Z,-180.0,10.0,180.0,90.0 -C2704985393-ORNL_CLOUD,ACTAMERICA_WRF_Chem_Output_1884,"ACT-America: WRF-Chem Baseline Simulations for North America, 2016-2019",ORNL_CLOUD,2016-06-29T00:00:00.000Z,2019-07-31T23:59:59.999Z,-150.391,12.994,-41.6086,62.8403 -C3573648328-ASIPS,AERDA_D3_VIIRS_MODIS_NRT,NRT VIIRS/MODIS Dark Target Deep Blue Aerosol AOD with QA for Data Assimilation 24-Hour 1 Degree L3,ASIPS,2025-05-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C3573647939-ASIPS,AERDA_L3_VIIRS_MODIS_NRT,NRT VIIRS/MODIS Dark Target Deep Blue Aerosol AOD with QA for Data Assimilation 3-Hour 1 Degree L3,ASIPS,2025-05-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C3352252530-LAADS,AERDB_D3_ABI_G16,"ABI G16 Deep Blue L3 Daily Aerosol Data, 1 x 1 degree grid",LAADS,2019-05-01T00:00:00.000Z,2020-05-01T23:59:00.000Z,-180.0,-90.0,180.0,90.0 -C3352447655-LAADS,AERDB_D3_ABI_G17,"ABI G17 Deep Blue L3 Daily Aerosol Data, 1 x 1 degree grid",LAADS,2019-05-01T00:00:00.000Z,2020-05-01T23:59:00.000Z,-180.0,-90.0,180.0,90.0 -C3352393947-LAADS,AERDB_D3_AHI_H08,"H08 Deep Blue Level 3 daily aerosol data, 1x1 degree grid",LAADS,2019-05-01T00:00:00.000Z,2020-05-01T23:59:00.000Z,-180.0,-90.0,180.0,90.0 -C3348072630-LAADS,AERDB_D3_GEOLEO_Merged,GEO-LEO Merged Deep Blue Aerosol Daily 1 x 1 degree Gridded L3,LAADS,2019-05-01T00:00:00.000Z,2020-05-01T23:59:00.000Z,-180.0,-90.0,180.0,90.0 -C3348093425-LAADS,AERDB_L2G_GEOLEO_Merged,GEO-LEO Merged Deep Blue Aerosol 0.25x0.25 degree Gridded L2,LAADS,2019-05-01T00:00:00.000Z,2020-05-01T23:59:00.000Z,-180.0,-90.0,180.0,90.0 -C3352432008-LAADS,AERDB_L2_ABI_G16,GOES16 ABI Deep Blue Aerosol L2,LAADS,2019-05-01T00:00:00.000Z,2020-05-01T03:59:00.000Z,-180.0,-90.0,180.0,90.0 -C3352437433-LAADS,AERDB_L2_ABI_G17,GOES17 ABI Deep Blue Aerosol L2,LAADS,2019-05-01T00:00:00.000Z,2020-05-01T04:59:00.000Z,-180.0,-90.0,180.0,90.0 -C2706369224-ASIPS,AERDB_L2_VIIRS_NOAA20_NRT,VIIRS/NOAA-20 Deep Blue Aerosol L2 6-Min Swath 6 km (v2.0),ASIPS,2023-06-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2706359459-ASIPS,AERDB_L2_VIIRS_SNPP_NRT,VIIRS/SNPP Deep Blue Aerosol L2 6-Min Swath 6 km (v2.0),ASIPS,2023-06-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C3352280822-LAADS,AERDB_M3_ABI_G16,"ABI G16 Deep Blue L3 Monthly Aerosol Data, 1 x 1 degree grid",LAADS,2019-05-01T00:00:00.000Z,2020-05-01T23:59:00.000Z,-180.0,-90.0,180.0,90.0 -C3352241703-LAADS,AERDB_M3_ABI_G17,"ABI G17 Deep Blue L3 Monthly Aerosol Data, 1 x 1 degree grid",LAADS,2019-05-01T00:00:00.000Z,2020-05-01T23:59:00.000Z,-180.0,-90.0,180.0,90.0 -C3352230787-LAADS,AERDB_M3_AHI_H08,"H08 Deep Blue Level 3 monthly aerosol data, 1x1 degree grid",LAADS,2019-05-01T00:00:00.000Z,2020-05-01T23:59:00.000Z,-180.0,-90.0,180.0,90.0 -C3348069018-LAADS,AERDB_M3_GEOLEO_Merged,GEO-LEO Merged Deep Blue Aerosol Monthly 1 x 1 degree Gridded L3,LAADS,2019-05-01T00:00:00.000Z,2020-05-01T23:59:00.000Z,-180.0,-90.0,180.0,90.0 -C2812413911-ASIPS,AERDT_L2_VIIRS_NOAA20_NRT,VIIRS/NOAA-20 Dark Target Aerosol L2 6-Min Swath (v2.0),ASIPS,2023-11-15T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2812412751-ASIPS,AERDT_L2_VIIRS_SNPP_NRT,VIIRS/SNPP Dark Target Aerosol L2 6-Min Swath (v2.0),ASIPS,2023-11-15T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2036877480-POCLOUD,AHI_H08-STAR-L2P-v2.70,GHRSST NOAA/STAR Himawari-08 AHI L2P Pacific Ocean Region SST v2.70 dataset in GDS2,POCLOUD,2019-10-16T00:00:00.000Z,2022-12-14T00:00:00.000Z,80.0,-59.0,-160.0,59.0 -C2036877660-POCLOUD,AHI_H08-STAR-L3C-v2.70,GHRSST NOAA/STAR Himawari-08 AHI L3C Pacific Ocean Region SST v2.70 dataset in GDS2,POCLOUD,2019-10-16T00:00:00.000Z,2022-12-14T00:00:00.000Z,80.0,-59.0,-160.0,59.0 -C2205120784-POCLOUD,ALT_TIDE_GAUGE_L4_OST_SLA_US_WEST_COAST,Gridded Altimeter Fields with Enhanced Coastal Coverage,POCLOUD,1992-10-14T00:00:00.000Z,2012-04-18T00:00:00.000Z,-180.0,35.25,180.0,48.5 -C2036882016-POCLOUD,ALT_TIDE_GAUGE_L4_OST_SLA_US_WEST_COAST_DAILY,Gridded Altimeter Fields with Enhanced Coastal Coverage Daily,POCLOUD,1992-10-14T12:00:00.000Z,2011-01-19T12:00:00.000Z,-133.0,35.0,-111.0,49.0 -C2600786104-POCLOUD,AMSR2-REMSS-L3U-v8.2,GHRSST Level 3U Global Subskin Sea Surface Temperature version 8.2 from the Advanced Microwave Scanning Radiometer 2 on the GCOM-W satellite by REMSS,POCLOUD,2012-07-02T21:00:00.000Z,,-179.0,-90.0,180.0,90.0 -C2036877487-POCLOUD,AMSR2-REMSS-L3U-v8a,GHRSST Level 3U Global Subskin Sea Surface Temperature version 8a from the Advanced Microwave Scanning Radiometer 2 on the GCOM-W satellite,POCLOUD,2012-07-02T23:24:00.000Z,,-179.0,-90.0,180.0,90.0 -C2600797908-POCLOUD,AMSR2-REMSS-L3U_RT-v8.2,GHRSST Level 3U Global Global Near-Real Subskin Sea Surface Temperature version 8.2 (v8.2) from the Advanced Microwave Scanning Radiometer 2 (AMSR2) on the GCOM-W satellite by REMSS ,POCLOUD,2012-07-02T23:24:00.000Z,,-179.0,-90.0,180.0,90.0 -C2108869784-POCLOUD,AMSR2-REMSS-L3U_RT-v8a,GHRSST Level 3U Global Near-Real-Time Subskin Sea Surface Temperature version 8a from the Advanced Microwave Scanning Radiometer 2 on the GCOM-W satellite,POCLOUD,2012-07-02T23:24:00.000Z,,-179.0,-90.0,180.0,90.0 -C2205553958-POCLOUD,AMSRE-REMSS-L2P-v7a,GHRSST Level 2P Global Subskin Sea Surface Temperature from the Advanced Scanning Microwave Radiometer - Earth Observing System (AMSR-E) on the NASA Aqua Satellite,POCLOUD,2002-06-01T12:06:00.000Z,2011-10-04T06:51:45.000Z,-180.0,-90.0,180.0,90.0 -C2205121281-POCLOUD,AMSRE-REMSS-L3U-v7a,GHRSST Level 3U Global Subskin Sea Surface Temperature from the Advanced Scanning Microwave Radiometer - Earth Observing System (AMSR-E) on the NASA Aqua Satellite,POCLOUD,2002-06-01T16:12:00.000Z,2011-10-04T06:54:00.000Z,-180.0,-90.0,180.0,90.0 -C2491756349-POCLOUD,AQUARIUS_L3_SSS_CAP_7DAY_V5,Aquarius CAP Level 3 Sea Surface Salinity Standard Mapped Image 7-Day Data V5.0,POCLOUD,2011-08-26T00:00:00.000Z,2015-06-08T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C2491756350-POCLOUD,AQUARIUS_L3_SSS_CAP_MONTHLY_V5,Aquarius CAP Level 3 Sea Surface Salinity Standard Mapped Image Monthly Data V5.0,POCLOUD,2011-09-01T00:00:00.000Z,2015-06-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C2491756351-POCLOUD,AQUARIUS_L3_SSS_RAINCORRECTED_CAP_7DAY_V5,Aquarius CAP Level 3 Sea Surface Salinity Rain Corrected Standard Mapped Image 7-Day Data V5.0,POCLOUD,2011-08-26T00:00:00.000Z,2015-06-08T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C2491756352-POCLOUD,AQUARIUS_L3_SSS_RAINCORRECTED_CAP_MONTHLY_V5,Aquarius CAP Level 3 Sea Surface Salinity Rain Corrected Standard Mapped Image Monthly Data V5.0,POCLOUD,2011-09-01T00:00:00.000Z,2015-06-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C2491757161-POCLOUD,AQUARIUS_L3_WIND_SPEED_CAP_7DAY_V5,Aquarius CAP Level 3 Wind Speed Standard Mapped Image 7-Day Data V5.0,POCLOUD,2011-08-26T00:00:00.000Z,2015-06-08T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C2491757162-POCLOUD,AQUARIUS_L3_WIND_SPEED_CAP_MONTHLY_V5,Aquarius CAP Level 3 Wind Speed Standard Mapped Image Monthly Data V5.0,POCLOUD,2011-09-01T00:00:00.000Z,2015-06-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C2617176747-POCLOUD,AQUARIUS_L4_OISSS_IPRC_7DAY_V5,IPRC/SOEST Aquarius V5.0 Optimally Interpolated Sea Surface Salinity 7-Day global Dataset,POCLOUD,2011-08-27T00:00:00.000Z,2015-06-07T23:59:59.999Z,-180.0,-90.0,180.0,90.0 -C3527026802-LARC_CLOUD,ARCSIX_AircraftRemoteSensing_Learjet_KPR_Data,ARCSIX Learjet Ka-Band Probe Radar-Radiometer (KPR) Data,LARC_CLOUD,2024-07-25T00:00:00.000Z,2024-08-18T00:00:00.000Z,-110.53,63.58,-49.13,84.18 -C3466129584-LARC_CLOUD,ARCSIX_AircraftRemoteSensing_P3B_MARLi_Data,ARCSIX P-3B Aircraft Multi-function Airborne Raman Lidar (MARLi) Data,LARC_CLOUD,2024-05-17T00:00:00.000Z,2024-08-18T00:00:00.000Z,-105.18,37.68,-8.32,86.06 -C3466130980-LARC_CLOUD,ARCSIX_Dropsondes_LaRC-G3_Data,ARCSIX LaRC G-III Dropsonde Data,LARC_CLOUD,2024-05-28T00:00:00.000Z,2024-08-18T00:00:00.000Z,-108.39,36.65,2.79,85.87 -C3466129502-LARC_CLOUD,ARCSIX_Radiation_AircraftInSitu_P3B_Data,ARCSIX P-3B In-Situ Radiation Data,LARC_CLOUD,2024-05-17T00:00:00.000Z,2024-08-18T00:00:00.000Z,-105.18,37.68,-8.32,86.06 -C2859376221-ASF,ARIA_S1_GUNW,ARIA Sentinel-1 Geocoded Unwrapped Interferograms,ASF,2014-06-15T03:44:43.000Z,,-180.0,-90.0,180.0,90.0 -C2075141524-POCLOUD,ASCATA-L2-25km,MetOp-A ASCAT Level 2 25.0 km Ocean Surface Wind Vectors,POCLOUD,2007-03-27T17:00:00.000Z,2021-11-15T08:54:00.000Z,-180.0,-89.6,180.0,89.6 -C1996881752-POCLOUD,ASCATA-L2-Coastal,MetOp-A ASCAT Level 2 Ocean Surface Wind Vectors Optimized for Coastal Ocean,POCLOUD,2010-08-18T00:21:01.000Z,2021-11-15T08:54:00.000Z,-180.0,-89.6,180.0,89.6 -C2705728324-POCLOUD,ASCATA_ESDR_ANCILLARY_L2_V1.1,MetOp-A ASCAT ESDR Level 2 Ancillary Ocean Surface Fields Version 1.1,POCLOUD,2007-01-01T00:00:00.000Z,2014-04-01T01:00:00Z,-180.0,-90.0,180.0,90.0 -C2730520815-POCLOUD,ASCATA_ESDR_L2_WIND_STRESS_V1.1,MetOp-A ASCAT Scatterometer Inter-Calibrated ESDR Level 2 Ocean Surface Equivalent Neutral Wind Vectors and Wind Stress Vectors Version 1.1,POCLOUD,2007-01-01T00:00:00.000Z,2014-04-01T01:00:00Z,-180.0,-90.0,180.0,90.0 -C3401738510-POCLOUD,ASCATA_ESDR_L2_WSDERIV_V1.0,Metop-A ASCAT Inter-Calibrated ESDR Level 2 Observed and Modeled Spatial Derivatives of Surface Wind and Wind Stress Version 1.0,POCLOUD,2007-01-01T00:00:00.000Z,2014-04-01T01:00:00Z,-180.0,-90.0,180.0,90.0 -C3402062729-POCLOUD,ASCATA_ESDR_L3_WIND_STRESS_V1.0,MetOp-A ASCAT Scatterometer Inter-Calibrated ESDR Level 3 Ocean Surface Equivalent Neutral Wind Vectors and Wind Stress Version 1.0,POCLOUD,2007-01-01T00:00:00.000Z,2014-04-02T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C2491772100-POCLOUD,ASCATA_L2_25KM_CDR,MetOp-A ASCAT Level 2 25-km Ocean Surface Wind Vector Climate Data Record,POCLOUD,2007-01-01T01:03:00.000Z,2014-04-01T00:43:48.000Z,-180.0,-89.6,180.0,89.6 -C2036877686-POCLOUD,ASCATA_L2_COASTAL_CDR,MetOp-A ASCAT Level 2 12.5-km Ocean Surface Wind Vector Climate Data Record Optimized for Coastal Ocean,POCLOUD,2007-01-01T01:03:00.000Z,2014-04-01T00:43:46.000Z,-180.0,-89.6,180.0,89.6 -C2706510710-POCLOUD,ASCATB_ESDR_ANCILLARY_L2_V1.1,MetOp-B ASCAT ESDR Level 2 Ancillary Ocean Surface Fields Version 1.1,POCLOUD,2013-08-01T00:00:00.000Z,2022-05-31T01:00:00.000Z,-180.0,-90.0,180.0,90.0 -C2706513160-POCLOUD,ASCATB_ESDR_L2_WIND_STRESS_V1.1,MetOp-B ASCAT Scatterometer Inter-Calibrated ESDR Level 2 Ocean Surface Equivalent Neutral Wind Vectors and Wind Stress Vectors Version 1.1,POCLOUD,2013-08-01T00:00:00.000Z,2022-05-31T01:00:00.000Z,-180.0,-90.0,180.0,90.0 -C3401765750-POCLOUD,ASCATB_ESDR_L2_WSDERIV_V1.0,Metop-B ASCAT Inter-Calibrated ESDR Level 2 Observed and Modeled Spatial Derivatives of Surface Wind and Wind Stress Version 1.0,POCLOUD,2013-08-01T00:00:00.000Z,2022-05-31T01:00:00.000Z,-180.0,-90.0,180.0,90.0 -C3403169610-POCLOUD,ASCATB_ESDR_L3_WIND_STRESS_V1.0,MetOp-B ASCAT Scatterometer Inter-Calibrated ESDR Level 3 Ocean Surface Equivalent Neutral Wind Vectors and Wind Stress Version 1.0,POCLOUD,2013-08-01T00:00:00.000Z,2022-05-31T01:00:00.000Z,-180.0,-90.0,180.0,90.0 -C3268200418-LARC_CLOUD,ASIA-AQ_AircraftRemoteSensing_LaRC-G3_GCAS_Data,ASIA-AQ LaRC G-III Geostationary Coastal and Air Pollution Event (GEO-CAPE) Airborne Simulator Data,LARC_CLOUD,2024-02-05T00:00:00.000Z,2024-03-28T00:00:00.000Z,99.73,8.0,128.6,37.84 -C1575734760-LPDAAC_ECS,ASTWBD_ATTNC,ASTER Global Water Bodies Database Attributes NetCDF V001,LPDAAC_ECS,2000-03-01T00:00:00.000Z,2013-11-30T23:59:59.999Z,-180.0,-83.0,180.0,82.0 -C3543445363-LPCLOUD,ASTWBD_ATTNC,ASTER Global Water Bodies Database Attributes NetCDF V001,LPCLOUD,2000-03-01T00:00:00.000Z,2013-11-30T23:59:59.999Z,-180.0,-83.0,180.0,82.0 -C1575734501-LPDAAC_ECS,ASTWBD_NC,ASTER Global Water Bodies Database NetCDF V001,LPDAAC_ECS,2000-03-01T00:00:00.000Z,2013-11-30T23:59:59.999Z,-180.0,-83.0,180.0,82.0 -C3543445963-LPCLOUD,ASTWBD_NC,ASTER Global Water Bodies Database NetCDF V001,LPCLOUD,2000-03-01T00:00:00.000Z,2013-11-30T23:59:59.999Z,-180.0,-83.0,180.0,82.0 -C3162179692-NSIDC_CPRD,ATL14,ATLAS/ICESat-2 L3B Gridded Antarctic and Arctic Land Ice Height V004,NSIDC_CPRD,2019-01-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C3162334027-NSIDC_CPRD,ATL15,ATLAS/ICESat-2 L3B Gridded Antarctic and Arctic Land Ice Height Change V004,NSIDC_CPRD,2019-01-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2732580198-ORNL_CLOUD,ATom_Organic_Aerossols_1795,"ATom: Observed and Modeled Organic Aerosol Mass Concentrations, 2016-2017",ORNL_CLOUD,2016-07-29T00:00:00.000Z,2017-02-22T23:59:59.999Z,-180.0,-90.0,180.0,90.0 -C2966724160-ORNL_CLOUD,ATom_merge_1581,"ATom: Merged Atmospheric Chemistry, Trace Gases, and Aerosols",ORNL_CLOUD,2016-07-29T00:00:00.000Z,2018-05-21T23:59:59.999Z,-180.0,-90.0,180.0,90.0 -C2367011141-ORNL_CLOUD,ATom_merge_V2_1925,"ATom: Merged Atmospheric Chemistry, Trace Gases, and Aerosols, Version 2",ORNL_CLOUD,2016-07-29T00:00:00.000Z,2018-05-21T23:59:59.999Z,-180.0,-86.1769,180.0,82.9406 -C1514684539-LANCEAMSR2,AU_Land_NRT_R02,NRT AMSR2 Unified L2B Half-Orbit 25 km EASE-Grid Surface Soil Moisture Beta V2,LANCEAMSR2,2018-04-11T10:00:00.000Z,,-180.0,-89.24,180.0,89.24 -C1841273046-LANCEAMSR2,AU_Ocean_NRT_R01,NRT AMSR2 Unified L2B Global Swath Ocean Products V1,LANCEAMSR2,2020-06-01T08:00:00.000Z,,-180.0,-89.0,180.0,89.0 -C2152626500-LANCEAMSR2,AU_Rain_NRT_R02,NRT AMSR2 Unified Global Swath Surface Precipitation GSFC Profiling Algorithm V2,LANCEAMSR2,2021-10-01T00:00:00.000Z,,-180.0,-89.0,180.0,89.0 -C2499940513-POCLOUD,AVHRR18_G-NAVO-L2P-v1.0,GHRSST Level 2P Global 1m Sea Surface Temperature from the Advanced Very High Resolution Radiometer (AVHRR) on the NOAA-18 satellite produced by NAVO,POCLOUD,2013-09-24T10:34:01.000Z,2018-05-14T11:25:36.000Z,-180.0,-70.0,180.0,80.0 -C2036880640-POCLOUD,AVHRR19_G-NAVO-L2P-v1.0,GHRSST Level 2P Global 1m Sea Surface Temperature from the Advanced Very High Resolution Radiometer (AVHRR) on the NOAA-19 satellite produced by NAVO,POCLOUD,2013-09-24T11:31:01.000Z,2021-01-06T23:00:00.000Z,-180.0,-70.0,180.0,80.0 -C2036877716-POCLOUD,AVHRR19_L-NAVO-L2P-v1.0,GHRSST Level 2P Regional 1m Sea Surface Temperature from the Advanced Very High Resolution Radiometer (AVHRR) on the NOAA-19 satellite produced by NAVO,POCLOUD,2013-05-05T15:07:20.000Z,2021-01-16T23:59:00.000Z,-180.0,-70.0,180.0,80.0 -C2205121384-POCLOUD,AVHRRF_MA-STAR-L2P-v2.80,GHRSST NOAA/STAR Metop-A AVHRR FRAC ACSPO v2.80 1km L2P Dataset (GDS v2),POCLOUD,2006-12-01T00:00:00.000Z,2021-11-14T23:59:59.900Z,-180.0,-90.0,180.0,90.0 -C2205121413-POCLOUD,AVHRRF_MA-STAR-L3U-v2.80,GHRSST NOAA/STAR Metop-A AVHRR FRAC ACSPO v2.80 0.02 L3U Dataset (GDS v2),POCLOUD,2006-12-01T00:00:00.000Z,2021-11-14T23:59:59.900Z,-180.0,-90.0,180.0,90.0 -C2205121416-POCLOUD,AVHRRF_MB-STAR-L3U-v2.80,GHRSST NOAA/STAR Metop-B AVHRR FRAC ACSPO v2.80 0.02 L3U Dataset (GDS v2),POCLOUD,2012-10-19T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2205121433-POCLOUD,AVHRRF_MC-STAR-L3U-v2.80,GHRSST NOAA/STAR Metop-C AVHRR FRAC ACSPO v2.80 0.02 L3U Dataset (GDS v2),POCLOUD,2018-12-04T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2205618215-POCLOUD,AVHRRMTA_G-NAVO-L2P-v1.0,GHRSST Level 2P Global 1m Sea Surface Temperature from the Advanced Very High Resolution Radiometer (AVHRR) on the MetOp-A satellite produced by NAVO,POCLOUD,2013-09-24T12:09:00.000Z,2020-07-07T00:00:00.000Z,-180.0,-70.0,180.0,80.0 -C2036877495-POCLOUD,AVHRRMTA_G-NAVO-L2P-v2.0,GHRSST Level 2P Global Sea Surface Temperature v2.0 from the AVHRR on the MetOp-A satellite produced by NAVO,POCLOUD,2020-06-29T04:46:08.000Z,,-180.0,-70.0,180.0,80.0 -C2205618339-POCLOUD,AVHRRMTB_G-NAVO-L2P-v1.0,GHRSST Level 2P Global 1m Sea Surface Temperature from the Advanced Very High Resolution Radiometer (AVHRR) on the MetOp-B satellite produced by NAVO,POCLOUD,2013-09-24T12:09:00.000Z,2020-06-22T15:10:55.000Z,-180.0,-70.0,180.0,80.0 -C2036877502-POCLOUD,AVHRRMTB_G-NAVO-L2P-v2.0,GHRSST Level 2P Global Sea Surface Temperature v2.0 from the AVHRR on the MetOp-B satellite produced by NAVO,POCLOUD,2020-06-22T12:09:00.000Z,,-180.0,-70.0,180.0,80.0 -C2036877509-POCLOUD,AVHRRMTC_G-NAVO-L2P-v2.0,GHRSST Level 2P Global Sea Surface Temperature v2.0 from the AVHRR on the MetOp-C satellite produced by NAVO,POCLOUD,2020-06-10T11:52:20.000Z,,-180.0,-70.0,180.0,80.0 -C3534990344-OB_CLOUD,AVHRR_L4m_ELOEV,"AVHRR Global Mapped Eulerian and Lagrangian Oceanography and Ecology Variables Data, version 1",OB_CLOUD,2000-01-01T00:00:00.00Z,2009-12-31T23:59:59.99Z,-180.0,-90.0,180.0,90.0 -C2499940505-POCLOUD,AVHRR_OI-NCEI-L4-GLOB-v2.0,GHRSST Level 4 AVHRR_OI Global Blended Sea Surface Temperature Analysis (GDS version 2) from NCEI,POCLOUD,1981-09-01T00:00:00.000Z,2020-04-05T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C2491735309-POCLOUD,AVHRR_SST_METOP_A-OSISAF-L2P-v1.0,GHRSST Level 2P sub-skin Sea Surface Temperature from the Advanced Very High Resolution Radiometer (AVHRR) on Metop satellites (currently Metop-A) (GDS V2) produced by OSI SAF,POCLOUD,2013-06-04T10:25:00.000Z,2016-11-23T11:52:04.000Z,-180.0,-90.0,180.0,90.0 -C2491735275-POCLOUD,AVHRR_SST_METOP_A_GLB-OSISAF-L3C-v1.0,GHRSST L3C global sub-skin Sea Surface Temperature from the Advanced Very High Resolution Radiometer (AVHRR) on Metop satellites (currently Metop-A) (GDS V2) produced by OSI SAF,POCLOUD,2013-06-04T06:00:00.000Z,2016-02-23T05:54:39.000Z,-180.0,-90.0,180.0,90.0 -C2491735295-POCLOUD,AVHRR_SST_METOP_A_NAR-OSISAF-L3C-v1.0,GHRSST Level 3C North Atlantic Regional (NAR) subskin Sea Surface Temperature from SNPP/VIIRS and Metop-A/AVHRR (GDS V2) produced by OSI SAF,POCLOUD,2013-06-04T05:30:00.000Z,2016-11-22T23:41:34.000Z,-76.02,23.59,72.97,78.24 -C2036880717-POCLOUD,AVHRR_SST_METOP_B-OSISAF-L2P-v1.0,GHRSST Level 2P sub-skin Sea Surface Temperature from the Advanced Very High Resolution Radiometer (AVHRR) on Metop satellites (currently Metop-B) (GDS V2) produced by OSI SAF,POCLOUD,2016-01-19T08:07:03.000Z,,-180.0,-90.0,180.0,90.0 -C2036877693-POCLOUD,AVHRR_SST_METOP_B_GLB-OSISAF-L3C-v1.0,GHRSST L3C global sub-skin Sea Surface Temperature from the Advanced Very High Resolution Radiometer (AVHRR) on Metop satellites (currently Metop-B) (GDS V2) produced by OSI SAF,POCLOUD,2016-01-06T17:58:00.000Z,,-180.0,-90.0,180.0,90.0 -C2036877700-POCLOUD,AVHRR_SST_METOP_B_NAR-OSISAF-L3C-v1.0,GHRSST Level 3C North Atlantic Regional (NAR) subskin Sea Surface Temperature from Metop/AVHRR (GDS V2) produced by OSI SAF,POCLOUD,2016-01-06T08:43:20.000Z,,-76.02,13.59,72.97,78.24 -C2491735321-POCLOUD,AVHRR_SST_NOAA19_NAR-OSISAF-L3C-v1.0,GHRSST Level 3C North Atlantic Regional Subskin Sea Surface Temperature from the Advanced Very High Resolution Radiometer (AVHRR) on NOAA-19 (GDS2 version),POCLOUD,2013-06-04T11:21:30.000Z,2013-11-20T04:43:31.000Z,-76.02,23.59,72.97,78.24 -C2617226203-POCLOUD,AVISO_L4_DYN_TOPO_1DEG_1MO,AVISO Level 4 Absolute Dynamic Topography for Climate Model Comparison,POCLOUD,1992-10-01T00:00:00.000Z,2010-12-31T23:59:59.000Z,-180.0,-90.0,180.0,90.0 -C1918229328-LARC_ASDC,Aeolus-CalVal-DAWN_DC8,Aeolus CalVal DAWN Wind Profiles,LARC_ASDC,2019-04-17T00:00:00.000Z,2019-04-30T23:59:59.999Z,-159.0,5.0,-113.0,52.0 -C1451429598-LARC_ASDC,AirMSPI_ORACLES_Cloud_Droplet_Size_and_Cloud_Optical_Depth,AirMSPI version 1 cloud droplet size and cloud optical depth product acquired during the ORACLES flight campaign Jul-Oct 2016.,LARC_ASDC,2016-08-03T00:00:00.000Z,2016-09-29T23:59:59.999Z,-180.0,-90.0,180.0,90.0 -C2170970879-ORNL_CLOUD,Alaska_L4_WRF_STILT_Footprints_1544,"Pre-ABoVE: Gridded Footprints from WRF-STILT Model, Barrow, Alaska, 1982-2011",ORNL_CLOUD,1982-08-10T00:00:00.000Z,2011-10-15T23:59:59.999Z,-180.0,30.0,180.0,90.0 -C2935657850-POCLOUD,BAROCLINIC_HRET14,Harmonic Constants for Baroclinic Tide Prediction,POCLOUD,1993-01-01T00:00:00.000Z,2021-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C3574826988-OB_CLOUD,CALIPSO_CALIOP_L3_BBP,"CALIPSO CALIOP Regional Particulate Backscattering Coefficient (Bbp) Data, version 1",OB_CLOUD,2006-04-28T00:00:00Z,2018-09-14T00:00:00Z,-180.0,-90.0,180.0,90.0 -C3543139929-LPCLOUD,CAM5K30CF,Combined ASTER and MODIS Emissivity database over Land (CAMEL) Coefficient Monthly Global 0.05Deg V003,LPCLOUD,2000-03-01T00:00:00.000Z,2024-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C2763266335-LPCLOUD,CAM5K30CF,Combined ASTER and MODIS Emissivity database over Land (CAMEL) Coefficient Monthly Global 0.05Deg V002,LPCLOUD,2000-04-01T00:00:00.000Z,2017-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C3274449168-LPCLOUD,CAM5K30CFCLIM,Combined ASTER and MODIS Emissivity database over Land (CAMEL) Coefficient Climatology Monthly Global 0.05Deg V003,LPCLOUD,2003-01-01T00:00:00.000Z,2022-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C3274450252-LPCLOUD,CAM5K30COVCLIM,Combined ASTER and MODIS Emissivity database over Land (CAMEL) Covariances Climatology Monthly Global 0.25Deg V003,LPCLOUD,2003-01-01T00:00:00.000Z,2022-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C2763266338-LPCLOUD,CAM5K30EM,Combined ASTER and MODIS Emissivity database over Land (CAMEL) Emissivity Monthly Global 0.05Deg V002,LPCLOUD,2000-04-01T00:00:00.000Z,2017-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C3274448375-LPCLOUD,CAM5K30EMCLIM,Combined ASTER and MODIS Emissivity database over Land (CAMEL) Emissivity Climatology Monthly Global 0.05Deg V003,LPCLOUD,2003-01-01T00:00:00.000Z,2022-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C3543131596-LPCLOUD,CAM5K30UC,Combined ASTER and MODIS Emissivity database over Land (CAMEL) Uncertainty Monthly Global 0.05Deg V003,LPCLOUD,2000-03-01T00:00:00.000Z,2024-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C2763266343-LPCLOUD,CAM5K30UC,Combined ASTER and MODIS Emissivity database over Land (CAMEL) Uncertainty Monthly Global 0.05Deg V002,LPCLOUD,2000-04-01T00:00:00.000Z,2017-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C3274446180-LPCLOUD,CAM5K30UCCLIM,Combined ASTER and MODIS Emissivity database over Land (CAMEL) Uncertainty Climatology Monthly Global 0.05Deg V003,LPCLOUD,2003-01-01T00:00:00.000Z,2022-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1954733856-LARC_ASDC,CAMP2Ex_Aerosol_AircraftRemoteSensing_P3_Data,CAMP2Ex P-3 Remotely Sensed Aerosol Data,LARC_ASDC,2019-08-03T00:00:00.000Z,2019-10-12T00:00:00.000Z,-180.0,0.0,180.0,45.0 -C2079163151-LARC_ASDC,CAMP2Ex_Miscellaneous_Data,CAMP2Ex Miscellaneous Data ,LARC_ASDC,2018-08-01T00:00:00.000Z,2019-10-08T00:00:00.000Z,-180.0,-10.0,180.0,45.0 -C2236316723-ORNL_CLOUD,CARVE_Ecosystem_CH4_Flux_1558,CARVE: Ecosystem Scale CH4 Emission Derived from Aircraft Observations 2012-2014,ORNL_CLOUD,2012-05-01T00:00:00.000Z,2014-11-30T23:59:59.999Z,-169.75,50.25,-130.25,74.75 -C2236316336-ORNL_CLOUD,CARVE_L1_FTS_Spectra_1426,"CARVE: L1 Spectral Radiances from Airborne FTS, Alaska, 2012-2015",ORNL_CLOUD,2012-05-23T00:00:00.000Z,2015-11-13T23:59:59.999Z,-168.111,58.8438,-131.752,71.435 -C2236316359-ORNL_CLOUD,CARVE_L1_FlightPath_Winds_1427,"CARVE: L1 Daily Flight Path and Winds Data, Alaska, 2015",ORNL_CLOUD,2015-04-15T00:00:00.000Z,2015-11-13T23:59:59.999Z,-168.069,58.8438,-132.238,71.3182 -C2236316372-ORNL_CLOUD,CARVE_L1_Infrared_1428,"CARVE: L1 Airborne Forward Looking Infrared Radiance Counts, Alaska, 2013-2015",ORNL_CLOUD,2013-04-03T00:00:00.000Z,2015-11-13T23:59:59.999Z,-168.069,58.8438,-132.238,71.3608 -C2236316247-ORNL_CLOUD,CARVE_L2_AtmosGas_Ground_1419,"CARVE: L2 Atmospheric CO2, CO, and CH4 Concentrations, CARVE Tower, Alaska, 2011-2015",ORNL_CLOUD,2011-10-23T00:00:00.000Z,2014-12-31T23:59:59.999Z,-147.598,64.986,-147.598,64.986 -C2236316143-ORNL_CLOUD,CARVE_L2_AtmosGas_Harvard_1403,"CARVE: L2 Atmospheric CO2, CO and CH4 Concentrations, Harvard CRDS, Alaska, 2012-2014",ORNL_CLOUD,2012-05-23T00:00:00.000Z,2014-11-09T23:59:59.999Z,-168.111,60.2085,-131.755,71.5622 -C2236316392-ORNL_CLOUD,CARVE_L2_FTS_ColumnGas_1429,"CARVE: L2 Column Gas and Uncertainty from Airborne FTS, Alaska, 2012-2015",ORNL_CLOUD,2012-05-23T00:00:00.000Z,2015-11-13T23:59:59.999Z,-167.646,58.8879,-131.768,71.4259 -C2236316154-ORNL_CLOUD,CARVE_L2_Flask_1404,"CARVE: L2 Atmospheric Gas Concentrations, Airborne Flasks, Alaska, 2012-2015",ORNL_CLOUD,2012-05-23T00:00:00.000Z,2015-11-12T23:59:59.999Z,-167.481,35.1547,-106.295,71.4985 -C2236316208-ORNL_CLOUD,CARVE_L2_Flask_Ground_1405,"CARVE: L2 Atmospheric Gas Concentrations, Tower-based Flasks, Alaska, 2012-2015",ORNL_CLOUD,2012-01-04T00:00:00.000Z,2015-12-05T23:59:59.999Z,-147.598,64.9833,-147.583,64.9864 -C2236316518-ORNL_CLOUD,CARVE_L4_WRF-STILT_Footprint_1431,"CARVE: L4 Gridded Footprints from WRF-STILT model, 2012-2016",ORNL_CLOUD,2012-01-01T00:00:00.000Z,2016-04-28T23:59:59.999Z,-180.0,30.0,180.0,90.0 -C2236316466-ORNL_CLOUD,CARVE_L4_WRF-STILT_Particle_1430,"CARVE: L4 Gridded Particle Trajectories for WRF-STILT model, 2012-2016",ORNL_CLOUD,2012-01-01T00:00:00.000Z,2016-04-28T23:59:59.999Z,-180.0,30.0,180.0,90.0 -C2236282870-ORNL_CLOUD,CARVE_Land_Thaw_State_1383,"CARVE: Daily Thaw State of Boreal and Arctic Alaska from AMSR-E and SSM/I, 2003-2014",ORNL_CLOUD,2003-01-01T00:00:00.000Z,2014-12-31T23:59:59.999Z,-179.999,46.9946,-106.947,74.399 -C2916529935-POCLOUD,CCMP_WINDS_10MMONTHLY_L4_V3.1,RSS CCMP Monthly 10 Meter Surface Winds Level 4 Version 3.1,POCLOUD,1993-01-01T00:00:00.000Z,,-180.0,-80.0,180.0,80.0 -C3491703066-LARC_ASDC,CERES_EBAF,CERES Energy Balanced and Filled (EBAF) TOA and Surface Monthly means data in netCDF Edition 4.2.1,LARC_ASDC,2000-03-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C1630432625-LARC_ASDC,CERES_EBAF,CERES Energy Balanced and Filled (EBAF) TOA and Surface Monthly means data in netCDF Edition 4.1,LARC_ASDC,2000-03-01T00:00:00Z,2022-04-01T00:00:00Z,-180.0,-90.0,180.0,90.0 -C2765798375-LARC_ASDC,CER_FluxByCldTyp-Day_NOAA20-VIIRS,CERES Daily Daytime Mean Regionally Averaged NOAA-20 TOA Fluxes and Associated Cloud Properties Stratified by Optical Depth and Effective Pressure Edition1B,LARC_ASDC,2018-05-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C1886238385-LARC_ASDC,CER_FluxByCldTyp-Day_Terra-Aqua-MODIS,CERES Daily Daytime Mean Regionally Averaged Terra and Aqua TOA Fluxes and Associated Cloud Properties Stratified by Optical Depth and Effective Pressure Edition4A,LARC_ASDC,2002-07-01T00:00:00.000000Z,,-180.0,-90.0,180.0,90.0 -C2765799041-LARC_ASDC,CER_FluxByCldTyp-Month_NOAA20-VIIRS,CERES Monthly Daytime Mean Regionally Averaged NOAA-20 TOA Fluxes and Associated Cloud Properties Stratified by Optical Depth and Effective Pressure Edition1B,LARC_ASDC,2018-05-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C1886238447-LARC_ASDC,CER_FluxByCldTyp-Month_Terra-Aqua-MODIS,CERES Monthly Daytime Mean Regionally Averaged Terra and Aqua TOA Fluxes and Associated Cloud Properties Stratified by Optical Depth and Effective Pressure Edition4A,LARC_ASDC,2002-07-01T00:00:00.000000Z,,-180.0,-90.0,180.0,90.0 -C2652524871-LARC_ASDC,CER_GEO_Ed4_GMS05_FD,SatCORPS CERES GEO Edition 4 GMS-5 Full Disk Version 2,LARC_ASDC,2000-02-28T23:59:59.999Z,2003-04-23T15:00:00.000Z,-180.0,-60.0,180.0,60.0 -C1289258791-LARC_ASDC,CER_GEO_Ed4_GOE08_NH,SatCORPS CERES GEO Edition 4 GOES-8 Northern Hemisphere Version 1.0,LARC_ASDC,2000-03-01T00:00:00.000000Z,2003-04-01T23:59:59.999999Z,-120.0,0.0,-30.0,60.0 -C1289258821-LARC_ASDC,CER_GEO_Ed4_GOE08_SH,SatCORPS CERES GEO Edition 4 GOES-8 Southern Hemisphere Version 1.0,LARC_ASDC,2000-03-01T00:00:00.000000Z,2003-04-01T23:59:59.999999Z,-120.0,-60.0,-30.0,0.0 -C1237207600-LARC_ASDC,CER_GEO_Ed4_GOE09_NH,SatCORPS CERES GEO Edition 4 GOES-9 Northern Hemisphere Version 1.0,LARC_ASDC,2003-04-23T00:00:00.000000Z,2005-07-06T23:59:59.999999Z,-180.0,0.0,180.0,60.0 -C1237207592-LARC_ASDC,CER_GEO_Ed4_GOE09_SH,SatCORPS CERES GEO Edition 4 GOES-9 Southern Hemisphere Version 1.0,LARC_ASDC,2003-04-23T00:00:00.000000Z,2005-07-06T23:59:59.999999Z,-180.0,-60.0,180.0,0.0 -C1237207593-LARC_ASDC,CER_GEO_Ed4_GOE10_NH,SatCORPS CERES GEO Edition 4 GOES-10 Northern Hemisphere Version 1.0,LARC_ASDC,2000-03-01T00:00:00.000000Z,2007-12-12T23:59:59.999999Z,-180.0,0.0,-30.0,60.0 -C1237207594-LARC_ASDC,CER_GEO_Ed4_GOE10_SH,SatCORPS CERES GEO Edition 4 GOES-10 Southern Hemisphere Version 1.0,LARC_ASDC,2000-03-01T00:00:00.000000Z,2007-12-12T23:59:59.999999Z,-180.0,-60.0,-30.0,0.0 -C1237207603-LARC_ASDC,CER_GEO_Ed4_GOE11_NH,SatCORPS CERES GEO Edition 4 GOES-11 Northern Hemisphere Version 1.0,LARC_ASDC,2006-06-21T00:00:00.000000Z,2011-12-06T23:59:59.999999Z,-180.0,0.0,-91.0,60.0 -C1237207595-LARC_ASDC,CER_GEO_Ed4_GOE11_SH,SatCORPS CERES GEO Edition 4 GOES-11 Southern Hemisphere Version 1.0,LARC_ASDC,2006-06-21T00:00:00.000000Z,2011-12-06T23:59:59.999999Z,-180.0,-60.0,-91.0,0.0 -C1237207604-LARC_ASDC,CER_GEO_Ed4_GOE12_NH,SatCORPS CERES GEO Edition 4 GOES-12 Northern Hemisphere Version 1.0,LARC_ASDC,2003-04-01T00:00:00.000000Z,2010-04-14T23:59:59.999999Z,-120.0,0.0,-30.0,60.0 -C1237207596-LARC_ASDC,CER_GEO_Ed4_GOE12_SH,SatCORPS CERES GEO Edition 4 GOES-12 Southern Hemisphere Version 1.0,LARC_ASDC,2003-04-01T00:00:00.000000Z,2010-04-14T23:59:59.999999Z,-120.0,-60.0,-30.0,0.0 -C1587404696-LARC_ASDC,CER_GEO_Ed4_GOE13_NH,SatCORPS CERES GEO Edition 4 GOES-13 Northern Hemisphere Version 1.2,LARC_ASDC,2015-07-01T00:00:00.000000Z,2017-12-31T23:59:59.000Z,-120.0,0.0,-30.0,60.0 -C1237207605-LARC_ASDC,CER_GEO_Ed4_GOE13_NH,SatCORPS CERES GEO Edition 4 GOES-13 Northern Hemisphere Version 1.0,LARC_ASDC,2008-12-15T00:00:00.000000Z,2017-02-28T23:59:59.999999Z,-120.0,0.0,-30.0,60.0 -C1587405101-LARC_ASDC,CER_GEO_Ed4_GOE13_SH,SatCORPS CERES GEO Edition 4 GOES-13 Southern Hemisphere Version 1.2,LARC_ASDC,2015-07-01T00:00:00.000000Z,2017-12-31T23:59:59.000Z,-120.0,-60.0,-30.0,0.0 -C1237207597-LARC_ASDC,CER_GEO_Ed4_GOE13_SH,SatCORPS CERES GEO Edition 4 GOES-13 Southern Hemisphere Version 1.0,LARC_ASDC,2008-12-15T00:00:00.000000Z,2017-02-28T23:59:59.999999Z,-120.0,-60.0,-30.0,0.0 -C1237207606-LARC_ASDC,CER_GEO_Ed4_GOE14_NH,SatCORPS CERES GEO Edition 4 GOES-14 Northern Hemisphere Version 1.0,LARC_ASDC,2012-09-24T00:00:00.000000Z,2013-06-09T23:59:59.999999Z,-120.0,0.0,-30.0,60.0 -C1237207598-LARC_ASDC,CER_GEO_Ed4_GOE14_SH,SatCORPS CERES GEO Edition 4 GOES-14 Southern Hemisphere Version 1.0,LARC_ASDC,2012-09-24T00:00:00.000000Z,2013-06-09T23:59:59.999999Z,-120.0,-60.0,-30.0,0.0 -C3417454362-LARC_ASDC,CER_GEO_Ed4_GOE15_NH,SatCORPS CERES GEO Edition 4 GOES-15 Northern Hemisphere Version 1.4,LARC_ASDC,2018-04-30T00:00:00.000Z,2020-03-01T23:59:59.999Z,-180.0,0.0,-91.0,60.0 -C1584977032-LARC_ASDC,CER_GEO_Ed4_GOE15_NH,SatCORPS CERES GEO Edition 4 GOES-15 Northern Hemisphere Version 1.2,LARC_ASDC,2015-07-01T00:00:00.000000Z,2020-03-01T23:59:59.999999Z,-180.0,0.0,-91.0,60.0 -C1237207599-LARC_ASDC,CER_GEO_Ed4_GOE15_NH,SatCORPS CERES GEO Edition 4 GOES-15 Northern Hemisphere Version 1.0,LARC_ASDC,2011-12-06T00:00:00.000000Z,2017-02-28T23:59:59.999999Z,-180.0,0.0,-91.0,60.0 -C3417454080-LARC_ASDC,CER_GEO_Ed4_GOE15_SH,SatCORPS CERES GEO Edition 4 GOES-15 Southern Hemisphere Version 1.4,LARC_ASDC,2018-04-30T00:00:00.000Z,2020-03-01T23:59:59.999Z,-180.0,-60.0,-91.0,0.0 -C1584977033-LARC_ASDC,CER_GEO_Ed4_GOE15_SH,SatCORPS CERES GEO Edition 4 GOES-15 Southern Hemisphere Version 1.2,LARC_ASDC,2015-07-01T00:00:00.000000Z,2020-03-01T23:59:59.000Z,-180.0,-60.0,-91.0,0.0 -C1237207607-LARC_ASDC,CER_GEO_Ed4_GOE15_SH,SatCORPS CERES GEO Edition 4 GOES-15 Southern Hemisphere Version 1.0,LARC_ASDC,2011-12-06T00:00:00.000000Z,2017-02-28T23:59:59.999999Z,-180.0,-60.0,-91.0,0.0 -C3417454106-LARC_ASDC,CER_GEO_Ed4_GOE16_NH,SatCORPS CERES GEO Edition 4 GOES-16 Northern Hemisphere Version 1.4,LARC_ASDC,2018-04-30T00:00:00.000Z,,-120.0,0.0,-30.0,60.0 -C1584977034-LARC_ASDC,CER_GEO_Ed4_GOE16_NH,SatCORPS CERES GEO Edition 4 GOES-16 Northern Hemisphere Version 1.2,LARC_ASDC,2017-12-31T00:00:00.000Z,2024-08-01T00:00:00.000Z,-120.0,0.0,-30.0,60.0 -C3417454031-LARC_ASDC,CER_GEO_Ed4_GOE16_SH,SatCORPS CERES GEO Edition 4 GOES-16 Southern Hemisphere Version 1.4,LARC_ASDC,2018-04-30T00:00:00.000Z,,-120.0,-60.0,-30.0,0.0 -C1584977035-LARC_ASDC,CER_GEO_Ed4_GOE16_SH,SatCORPS CERES GEO Edition 4 GOES-16 Southern Hemisphere Version 1.2,LARC_ASDC,2017-12-31T00:00:00.000Z,2024-08-01T00:00:00.000Z,-120.0,-60.0,-30.0,0.0 -C3417454067-LARC_ASDC,CER_GEO_Ed4_GOE17_NH,SatCORPS CERES GEO Edition 4 GOES-17 Northern Hemisphere Version 1.4,LARC_ASDC,2020-02-29T00:00:00.000Z,2023-01-04T18:00:00.000Z,-180.0,0.0,-90.0,60.0 -C1990752708-LARC_ASDC,CER_GEO_Ed4_GOE17_NH,SatCORPS CERES GEO Edition 4 GOES-17 Northern Hemisphere Version 1.2,LARC_ASDC,2020-02-29T00:00:00.000Z,2023-01-04T18:00:00.000Z,-180.0,0.0,-90.0,60.0 -C3417454004-LARC_ASDC,CER_GEO_Ed4_GOE17_SH,SatCORPS CERES GEO Edition 4 GOES-17 Southern Hemisphere Version 1.4,LARC_ASDC,2020-02-29T00:00:00.000Z,2023-01-04T18:00:00.000Z,-180.0,-60.0,-90.0,0.0 -C1990752718-LARC_ASDC,CER_GEO_Ed4_GOE17_SH,SatCORPS CERES GEO Edition 4 GOES-17 Southern Hemisphere Version 1.2,LARC_ASDC,2020-02-29T00:00:00.000000Z,2023-01-04T18:00:00.000Z,-180.0,-60.0,-90.0,0.0 -C3417454199-LARC_ASDC,CER_GEO_Ed4_GOE18_NH,SatCORPS CERES GEO Edition 4 GOES-18 Northern Hemisphere Version 1.4,LARC_ASDC,2023-01-04T00:00:00.000Z,,-180.0,0.0,-90.0,60.0 -C2736710133-LARC_ASDC,CER_GEO_Ed4_GOE18_NH,SatCORPS CERES GEO Edition 4 GOES-18 Northern Hemisphere Version 1.2,LARC_ASDC,2023-01-04T00:00:00.000Z,2024-08-01T00:00:00.000Z,-180.0,0.0,-90.0,60.0 -C3417454285-LARC_ASDC,CER_GEO_Ed4_GOE18_SH,SatCORPS CERES GEO Edition 4 GOES-18 Southern Hemisphere Version 1.4,LARC_ASDC,2023-01-04T00:00:00.000Z,,-180.0,-60.0,-90.0,0.0 -C2650019074-LARC_ASDC,CER_GEO_Ed4_GOE18_SH,SatCORPS CERES GEO Edition 4 GOES-18 Southern Hemisphere Version 1.2,LARC_ASDC,2023-01-04T00:00:00.000Z,2024-08-01T00:00:00.000Z,-180.0,-60.0,-90.0,0.0 -C3417454635-LARC_ASDC,CER_GEO_Ed4_HIM08_NH,SatCORPS CERES GEO Edition 4 Himawari-8 Northern Hemisphere Version 1.4,LARC_ASDC,2018-04-30T00:00:00.000Z,2022-12-01T21:00:00.000Z,-180.0,0.0,180.0,60.0 -C1584977037-LARC_ASDC,CER_GEO_Ed4_HIM08_NH,SatCORPS CERES GEO Edition 4 Himawari-8 Northern Hemisphere Version 1.2,LARC_ASDC,2015-07-05T23:59:59.999Z,2022-12-01T23:59:59.000Z,-180.0,0.0,180.0,60.0 -C3417454796-LARC_ASDC,CER_GEO_Ed4_HIM08_SH,SatCORPS CERES GEO Edition 4 Himawari-8 Southern Hemisphere Version 1.4,LARC_ASDC,2018-04-30T00:00:00.000Z,2022-12-01T21:00:00.000Z,-180.0,-60.0,180.0,0.0 -C1584977038-LARC_ASDC,CER_GEO_Ed4_HIM08_SH,SatCORPS CERES GEO Edition 4 Himawari-8 Southern Hemisphere Version 1.2,LARC_ASDC,2015-07-05T23:59:59.999Z,2022-12-01T23:59:59.000Z,-180.0,-60.0,180.0,0.0 -C3417454449-LARC_ASDC,CER_GEO_Ed4_HIM09_NH,SatCORPS CERES GEO Edition 4 Himawari-9 Northern Hemisphere Version 1.4,LARC_ASDC,2022-11-30T00:00:00.000Z,,-180.0,0.0,180.0,60.0 -C1591855282-LARC_ASDC,CER_GEO_Ed4_HIM09_NH,SatCORPS CERES GEO Edition 4 Himawari-9 Northern Hemisphere Version 1.2,LARC_ASDC,2018-02-13T00:00:00.000Z,2018-02-14T08:00:00.000Z,-180.0,0.0,180.0,60.0 -C3417454731-LARC_ASDC,CER_GEO_Ed4_HIM09_SH,SatCORPS CERES GEO Edition 4 Himawari-9 Southern Hemisphere Version 1.4,LARC_ASDC,2022-11-30T00:00:00.000Z,,-180.0,-60.0,180.0,0.0 -C1591853913-LARC_ASDC,CER_GEO_Ed4_HIM09_SH,SatCORPS CERES GEO Edition 4 Himawari-9 Southern Hemisphere Version 1.2,LARC_ASDC,2018-02-13T00:00:00.000000Z,2018-02-14T08:00:00.000Z,-180.0,-60.0,180.0,0.0 -C2762855019-LARC_ASDC,CER_GEO_Ed4_MET05_FD,SatCORPS CERES GEO Edition 4 Meteosat-5 Full Disk Version 2,LARC_ASDC,2000-02-28T23:59:59.000Z,2007-01-25T23:59:59.000Z,8.0,-60.0,118.0,60.0 -C2650226893-LARC_ASDC,CER_GEO_Ed4_MET07_FD,SatCORPS CERES GEO Edition 4 Meteosat-7 Full Disk Version 2,LARC_ASDC,2000-02-28T23:59:59.9990Z,2017-02-02T00:00:00.000Z,-50.0,-60.0,110.0,60.0 -C3417453507-LARC_ASDC,CER_GEO_Ed4_MET08_NH,SatCORPS CERES GEO Edition 4 Meteosat-8 Northern Hemisphere Version 1.4,LARC_ASDC,2018-04-30T00:00:00.000Z,2022-07-01T09:00:00.000Z,-10.0,0.0,100.0,60.0 -C1584977039-LARC_ASDC,CER_GEO_Ed4_MET08_NH,SatCORPS CERES GEO Edition 4 Meteosat-8 Northern Hemisphere Version 1.2,LARC_ASDC,2015-11-15T00:00:00.000Z,,-50.0,0.0,100.0,60.0 -C1237207608-LARC_ASDC,CER_GEO_Ed4_MET08_NH,SatCORPS CERES GEO Edition 4 Meteosat-8 Northern Hemisphere Version 1.0,LARC_ASDC,2004-04-05T00:00:00.000000Z,2017-02-28T23:59:59.999999Z,-50.0,0.0,100.0,60.0 -C3417453942-LARC_ASDC,CER_GEO_Ed4_MET08_SH,SatCORPS CERES GEO Edition 4 Meteosat-8 Southern Hemisphere Version 1.4,LARC_ASDC,2018-04-30T00:00:00.000Z,2022-07-01T09:00:00.000Z,-10.0,-60.0,100.0,0.0 -C1584979294-LARC_ASDC,CER_GEO_Ed4_MET08_SH,SatCORPS CERES GEO Edition 4 Meteosat-8 Southern Hemisphere Version 1.2,LARC_ASDC,2015-11-15T00:00:00.000Z,,-50.0,-60.0,100.0,0.0 -C1237207609-LARC_ASDC,CER_GEO_Ed4_MET08_SH,SatCORPS CERES GEO Edition 4 Meteosat-8 Southern Hemisphere Version 1.0,LARC_ASDC,2004-04-05T00:00:00.000000Z,2017-02-28T23:59:59.999999Z,-50.0,-60.0,100.0,0.0 -C3417454776-LARC_ASDC,CER_GEO_Ed4_MET09_NH,SatCORPS CERES GEO Edition 4 Meteosat-09 Northern Hemisphere Version 1.4,LARC_ASDC,2018-05-06T22:00:00.000Z,,-50.0,0.0,100.0,60.0 -C1584979295-LARC_ASDC,CER_GEO_Ed4_MET09_NH,SatCORPS CERES GEO Edition 4 Meteosat-09 Northern Hemisphere Version 1.2,LARC_ASDC,2016-10-15T00:00:00.000000Z,,-50.0,0.0,100.0,60.0 -C1237207610-LARC_ASDC,CER_GEO_Ed4_MET09_NH,SatCORPS CERES GEO Edition 4 Meteosat-9 Northern Hemisphere Version 1.0,LARC_ASDC,2006-09-23T00:00:00.000000Z,2016-10-17T23:59:59.999999Z,-50.0,0.0,60.0,60.0 -C3417454690-LARC_ASDC,CER_GEO_Ed4_MET09_SH,SatCORPS CERES GEO Edition 4 Meteosat-09 Southern Hemisphere Version 1.4,LARC_ASDC,2018-05-06T22:00:00.000Z,,-50.0,-60.0,100.0,0.0 -C1584979296-LARC_ASDC,CER_GEO_Ed4_MET09_SH,SatCORPS CERES GEO Edition 4 Meteosat-09 Southern Hemisphere Version 1.2,LARC_ASDC,2016-10-15T00:00:00.000000Z,,-50.0,-60.0,100.0,0.0 -C1237207611-LARC_ASDC,CER_GEO_Ed4_MET09_SH,SatCORPS CERES GEO Edition 4 Meteosat-9 Southern Hemisphere Version 1.0,LARC_ASDC,2006-09-23T00:00:00.000000Z,2016-10-17T23:59:59.999999Z,-50.0,-60.0,60.0,0.0 -C3417453675-LARC_ASDC,CER_GEO_Ed4_MET10_NH,SatCORPS CERES GEO Edition 4 Meteosat-10 Northern Hemisphere Version 1.4,LARC_ASDC,2023-03-21T09:00:00.000Z,,-50.0,0.0,60.0,60.0 -C1588128371-LARC_ASDC,CER_GEO_Ed4_MET10_NH,SatCORPS CERES GEO Edition 4 Meteosat-10 Northern Hemisphere Version 1.2,LARC_ASDC,2015-07-31T00:00:00.000000Z,2024-08-01T00:00:00.000Z,-50.0,0.0,60.0,60.0 -C1237207612-LARC_ASDC,CER_GEO_Ed4_MET10_NH,SatCORPS CERES GEO Edition 4 Meteosat-10 Northern Hemisphere Version 1.0,LARC_ASDC,2013-01-21T00:00:00.000000Z,2017-02-28T23:59:59.999999Z,-50.0,0.0,60.0,60.0 -C3417454573-LARC_ASDC,CER_GEO_Ed4_MET10_SH,SatCORPS CERES GEO Edition 4 Meteosat-10 Southern Hemisphere Version 1.4,LARC_ASDC,2023-03-21T09:00:00.000Z,,-50.0,-60.0,60.0,0.0 -C1588128401-LARC_ASDC,CER_GEO_Ed4_MET10_SH,SatCORPS CERES GEO Edition 4 Meteosat-10 Southern Hemisphere Version 1.2,LARC_ASDC,2015-07-31T00:00:00.000000Z,2024-08-01T00:00:00.000Z,-50.0,-60.0,60.0,0.0 -C1237207620-LARC_ASDC,CER_GEO_Ed4_MET10_SH,SatCORPS CERES GEO Edition 4 Meteosat-10 Southern Hemisphere Version 1.0,LARC_ASDC,2013-01-21T00:00:00.000000Z,2017-02-28T23:59:59.999999Z,-50.0,-60.0,60.0,0.0 -C3417453329-LARC_ASDC,CER_GEO_Ed4_MET11_NH,SatCORPS CERES GEO Edition 4 Meteosat-11 Northern Hemisphere Version 1.4,LARC_ASDC,2018-04-30T00:00:00.000Z,,-50.0,0.0,60.0,60.0 -C1584977040-LARC_ASDC,CER_GEO_Ed4_MET11_NH,SatCORPS CERES GEO Edition 4 Meteosat-11 Northern Hemisphere Version 1.2,LARC_ASDC,2018-02-20T00:00:00.000Z,2023-03-21T08:00:00.000Z,-50.0,0.0,60.0,60.0 -C3417453832-LARC_ASDC,CER_GEO_Ed4_MET11_SH,SatCORPS CERES GEO Edition 4 Meteosat-11 Southern Hemisphere Version 1.4,LARC_ASDC,2018-04-30T00:00:00.000Z,,-50.0,-60.0,60.0,0.0 -C1584977041-LARC_ASDC,CER_GEO_Ed4_MET11_SH,SatCORPS CERES GEO Edition 4 Meteosat-11 Southern Hemisphere Version 1.2,LARC_ASDC,2018-02-20T00:00:00.000Z,2023-03-21T08:00:00.000Z,-50.0,-60.0,60.0,0.0 -C1000000060-LARC_ASDC,CER_GEO_Ed4_MTS01_NH,SatCORPS CERES GEO Edition 4 MTSAT-1R Northern Hemisphere Version 1.0,LARC_ASDC,2005-06-30T00:00:00.000000Z,2014-11-28T23:59:59.999999Z,-180.0,0.0,180.0,60.0 -C1237207613-LARC_ASDC,CER_GEO_Ed4_MTS01_SH,SatCORPS CERES GEO Edition 4 MTSAT-1R Southern Hemisphere Version 1.0,LARC_ASDC,2005-06-30T00:00:00.000000Z,2014-11-28T23:59:59.999999Z,-180.0,-60.0,180.0,0.0 -C1588775847-LARC_ASDC,CER_GEO_Ed4_MTS02_NH,SatCORPS CERES GEO Edition 4 MTSAT-2 Northern Hemisphere Version 1.2,LARC_ASDC,2015-06-30T00:00:00.000000Z,2015-07-05T23:59:59.000Z,-180.0,0.0,180.0,60.0 -C1237207614-LARC_ASDC,CER_GEO_Ed4_MTS02_NH,SatCORPS CERES GEO Edition 4 MTSAT-2R Northern Hemisphere Version 1.0,LARC_ASDC,2007-06-05T00:00:00.000000Z,2015-07-05T23:59:59.999999Z,-180.0,0.0,180.0,60.0 -C1588775839-LARC_ASDC,CER_GEO_Ed4_MTS02_SH,SatCORPS CERES GEO Edition 4 MTSAT-2 Southern Hemisphere Version 1.2,LARC_ASDC,2015-06-30T00:00:00.000000Z,2015-07-05T23:59:59.000Z,-180.0,-60.0,180.0,0.0 -C1237207615-LARC_ASDC,CER_GEO_Ed4_MTS02_SH,SatCORPS CERES GEO Edition 4 MTSAT-2R Southern Hemisphere Version 1.0,LARC_ASDC,2007-06-05T00:00:00.000000Z,2015-07-05T23:59:59.999999Z,-180.0,-60.0,180.0,0.0 -C3023585169-LARC_ASDC,CER_SSF1deg-Hour_NOAA20-VIIRS,"CERES Regionally Averaged TOA Fluxes, Clouds and Aerosols Hourly NOAA-20 Edition 1C",LARC_ASDC,2018-05-01T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C2920544837-LARC_ASDC,CER_SSF_NOAA20-FM6-VIIRS," CERES Single Scanner Footprint (SSF) TOA/Surface Fluxes, Clouds and Aerosols NOAA20-FM6-VIIRS Edition1C",LARC_ASDC,2018-05-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2246001744-LARC_ASDC,CER_SSF_NOAA20-FM6-VIIRS," CERES Single Scanner Footprint (SSF) TOA/Surface Fluxes, Clouds and Aerosols NOAA20-FM6-VIIRS Edition1B",LARC_ASDC,2018-05-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2246001739-LARC_ASDC,CER_SSF_NPP-FM5-VIIRS,"CERES Single Scanner Footprint (SSF) TOA/Surface Fluxes, Clouds and Aerosols NPP-FM5 Edition2A",LARC_ASDC,2012-01-27T00:00:00.000000Z,,-180.0,-90.0,180.0,90.0 -C3540911800-ESDIS,CIESIN_SEDAC_FERMANv1_PESTG_V1.01,"Global Pesticide Grids (PEST-CHEMGRIDS), Version 1.01",ESDIS,,,-180.0,-84.0,180.0,56.0 -C3540909447-ESDIS,CIESIN_SEDAC_GPWv4_APCT_WPP_2015_R11,"Gridded Population of the World, Version 4 (GPWv4): Population Count Adjusted to Match 2015 Revision of UN WPP Country Totals, Revision 11",ESDIS,,,-180.0,-90.0,180.0,90.0 -C3540929692-ESDIS,CIESIN_SEDAC_GPWv4_APDENS_WPP_2015_R11,"Gridded Population of the World, Version 4 (GPWv4): Population Density Adjusted to Match 2015 Revision UN WPP Country Totals, Revision 11",ESDIS,,,-180.0,-90.0,180.0,90.0 -C3540911253-ESDIS,CIESIN_SEDAC_GPWv4_BDC_R11,"Gridded Population of the World, Version 4 (GPWv4): Basic Demographic Characteristics, Revision 11",ESDIS,,,-180.0,-90.0,180.0,90.0 -C3540910651-ESDIS,CIESIN_SEDAC_GPWv4_POPDENS_R11,"Gridded Population of the World, Version 4 (GPWv4): Population Density, Revision 11",ESDIS,,,-180.0,-90.0,180.0,90.0 -C3550194092-ESDIS,CIESIN_SEDAC_INDIA_AWCA,"India Annual Winter Cropped Area, 2001-2016",ESDIS,2001-03-31T00:00:00.000Z,2016-03-31T01:00:00.000Z,68.106253,8.083816,89.150397,37.073831 -C3540929631-ESDIS,CIESIN_SEDAC_PD_SSPBSYR_1_8th,"Global One-Eighth Degree Population Base Year and Projection Grids Based on the Shared Socioeconomic Pathways, Revision 01",ESDIS,2000-01-01T00:00:00.000Z,2100-12-31T00:00:00.000Z,-180.0,-55.77,180.0,83.63 -C3540932167-ESDIS,CIESIN_SEDAC_PD_SSPBSYR_1km,"Global 1-km Downscaled Population Base Year and Projection Grids Based on the Shared Socioeconomic Pathways, Revision 01",ESDIS,2000-01-01T00:00:00.000Z,2100-12-31T00:00:00.000Z,-180.0,-55.77,180.0,83.63 -C3540908987-ESDIS,CIESIN_SEDAC_SDEI_GWRPM25_MMSVAOD_5GL04,"Global Annual PM2.5 Grids from MODIS, MISR, SeaWiFS and VIIRS Aerosol Optical Depth (AOD), 1998-2022, V5.GL.04",ESDIS,1998-01-01T00:00:00.000Z,2022-12-31T00:00:00.000Z,-180.0,-54.85,180.0,69.85 -C3540909397-ESDIS,CIESIN_SEDAC_SSP_1-8thDULEPBYGSSP,"Global One-Eighth Degree Urban Land Extent Projection and Base Year Grids by SSP Scenarios, 2000-2100",ESDIS,2000-01-01T00:00:00.000Z,2100-12-31T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C3540931213-ESDIS,CIESIN_SEDAC_SSP_1-kmDULEPBYGSSP,"Global 1-km Downscaled Urban Land Extent Projection and Base Year Grids by SSP Scenarios, 2000-2100",ESDIS,2000-01-01T00:00:00.000Z,2100-12-31T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C3540910600-ESDIS,CIESIN_SEDAC_USPAT_BSCATTER_1993_2020,"Global Monthly and Seasonal Urban and Land Backscatter Time Series, 1993-2020",ESDIS,1993-01-01T00:00:00.000Z,2020-12-31T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C3540910585-ESDIS,CIESIN_SEDAC_WATER_WSIM_GLDAS_V1,"Water Security Indicator Model - Global Land Data Assimilation System (WSIM-GLDAS) Monthly Grids, Version 1",ESDIS,1948-01-01T00:00:00.000Z,2014-12-31T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C2023582667-LAADS,CLDPROP_D3_VIIRS_NOAA20,VIIRS/SNPP Cloud Properties Level-3 daily 1x1 degree grid ,LAADS,2018-03-17T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C1643809696-LAADS,CLDPROP_L2_MODIS_Aqua,MODIS/Aqua Cloud Properties 5-min L2 Swath 1km,LAADS,2002-07-04T00:00:00.000Z,,,,, -C2024854901-LAADS,CLDPROP_L2_VIIRS_NOAA20,VIIRS/NOAA20 Cloud Properties 6-min L2 Swath 750m,LAADS,2018-02-17T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C1643492740-LAADS,CLDPROP_L2_VIIRS_SNPP,VIIRS/SNPP Cloud Properties 6-min L2 Swath 750m,LAADS,2012-03-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C1655783889-LAADS,CLDPROP_M3_MODIS_Aqua,"MODIS/Aqua Cloud Properties Level 3 monthly, 1x1 degree grid ",LAADS,2002-07-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2023555984-LAADS,CLDPROP_M3_VIIRS_NOAA20,"VIIRS/NOAA20 Cloud Properties Level 3 monthly, 1x1 degree grid",LAADS,2018-04-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C1655783629-LAADS,CLDPROP_M3_VIIRS_SNPP,"VIIRS/SNPP Cloud Properties Level 3 monthly, 1x1 degree grid",LAADS,2012-01-19T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2499940521-POCLOUD,CMC0.2deg-CMC-L4-GLOB-v2.0,GHRSST Level 4 CMC0.2deg Global Foundation Sea Surface Temperature Analysis (GDS version 2),POCLOUD,1991-09-01T00:00:00.000Z,2017-03-18T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C2389685421-ORNL_CLOUD,CMS_CO2_Fluxes_TBMO_1315,"CMS: Modeled Net Ecosystem Exchange at 3-hourly Time Steps, 2004-2010",ORNL_CLOUD,2004-01-01T00:00:00.000Z,2010-12-31T23:59:59.999Z,-180.0,-90.0,180.0,90.0 -C2954648832-ORNL_CLOUD,CMS_FluxEstimates_Aircraft_CO2_2336,CMS-Flux-NA Fluxes and Aircraft CO2 Co-samples for 2018-2019,ORNL_CLOUD,2018-01-01T00:00:00.000Z,2019-12-31T23:59:59.999Z,-167.812,13.75,-39.6875,76.25 -C2260262728-LARC_ASDC,CPEXAW-DAWN_DC8,CPEX-AW DAWN Doppler Aerosol WiNd Lidar ,LARC_ASDC,2020-08-20T00:00:00.000Z,2021-09-05T23:59:59.999Z,-81.0,11.0,-45.0,35.0 -C2566352815-LARC_ASDC,CPEXCV-DAWN_DC8,CPEX-CV DAWN Doppler Aerosol WiNd Lidar ,LARC_ASDC,2022-09-06T00:00:00.000Z,2022-09-30T23:59:59.999Z,-118.2,1.8,-14.93,39.4 -C2566353904-LARC_ASDC,CPEXCV-Dropsondes,CPEX-CV Dropsonde Data,LARC_ASDC,2022-06-16T00:00:00.000Z,2022-10-03T23:59:59.999Z,-125.0,1.8,-14.93,39.4 -C1996881862-POCLOUD,CYGNSS_L1_CDR_V1.0,CYGNSS Level 1 Climate Data Record Version 1.0,POCLOUD,2017-03-18T00:00:00.000Z,2021-03-01T00:00:00.000Z,-180.0,-40.0,180.0,40.0 -C2205121449-POCLOUD,CYGNSS_L1_CDR_V1.1,CYGNSS Level 1 Climate Data Record Version 1.1,POCLOUD,2018-08-01T00:00:00.000Z,,-180.0,-40.0,180.0,40.0 -C2274919541-POCLOUD,CYGNSS_L1_CDR_V1.2,CYGNSS Level 1 Climate Data Record Version 1.2,POCLOUD,2018-08-01T00:00:00.000Z,,-180.0,-40.0,180.0,40.0 -C2036882030-POCLOUD,CYGNSS_L1_FULL_DDM,CYGNSS Level 1 Full Delay Doppler Map Data Record,POCLOUD,2017-08-19T07:48:10.000Z,2020-11-17T01:00:00.000Z,-180.0,-40.0,180.0,40.0 -C2205121474-POCLOUD,CYGNSS_L1_FULL_DDM_V3.0,CYGNSS Level 1 Full Delay Doppler Map Data Record Version 3.0,POCLOUD,2018-08-06T00:00:01.000Z,,-180.0,-40.0,180.0,40.0 -C2205618435-POCLOUD,CYGNSS_L1_V3.0,CYGNSS Level 1 Science Data Record Version 3.0,POCLOUD,2018-08-01T00:00:00.000Z,2022-08-07T00:00:00.000Z,-180.0,-40.0,180.0,40.0 -C2146321631-POCLOUD,CYGNSS_L1_V3.1,CYGNSS Level 1 Science Data Record Version 3.1,POCLOUD,2018-08-01T00:00:00.000Z,,-180.0,-40.0,180.0,40.0 -C2036882048-POCLOUD,CYGNSS_L2_CDR_V1.0,CYGNSS Level 2 Climate Data Record Version 1.0,POCLOUD,2017-03-18T00:00:00.000Z,2021-02-28T23:59:59.999Z,-180.0,-40.0,180.0,40.0 -C2205121485-POCLOUD,CYGNSS_L2_CDR_V1.1,CYGNSS Level 2 Climate Data Record Version 1.1,POCLOUD,2018-08-01T00:00:00.000Z,,-180.0,-40.0,180.0,40.0 -C2274919215-POCLOUD,CYGNSS_L2_CDR_V1.2,CYGNSS Level 2 Climate Data Record Version 1.2,POCLOUD,2018-08-01T00:00:00.000Z,,-180.0,-40.0,180.0,40.0 -C2205618975-POCLOUD,CYGNSS_L2_SURFACE_FLUX_CDR_V1.0,CYGNSS Level 2 Ocean Surface Heat Flux Climate Data Record Version 1.0,POCLOUD,2017-03-18T00:00:00.000Z,2022-02-01T00:00:00.000Z,-180.0,-40.0,180.0,40.0 -C2205121520-POCLOUD,CYGNSS_L2_SURFACE_FLUX_CDR_V1.1,CYGNSS Level 2 Ocean Surface Heat Flux Climate Data Record Version 1.1,POCLOUD,2018-08-01T00:00:00.000Z,,-180.0,-40.0,180.0,40.0 -C2036882055-POCLOUD,CYGNSS_L2_SURFACE_FLUX_V1.0,CYGNSS Level 2 Ocean Surface Heat Flux Science Data Record Version 1.0,POCLOUD,2017-03-18T00:00:00.000Z,2020-09-30T23:59:59.999Z,-180.0,-40.0,180.0,40.0 -C2183155461-POCLOUD,CYGNSS_L2_V3.1,CYGNSS Level 2 Science Data Record Version 3.1,POCLOUD,2018-08-01T00:00:00.000Z,,-180.0,-40.0,180.0,40.0 -C2036882064-POCLOUD,CYGNSS_L3_CDR_V1.0,CYGNSS Level 3 Climate Data Record Version 1.0,POCLOUD,2017-03-18T00:00:00.000Z,2021-02-28T23:59:59.999Z,-180.0,-40.0,180.0,40.0 -C2205121540-POCLOUD,CYGNSS_L3_CDR_V1.1,CYGNSS Level 3 Climate Data Record Version 1.1,POCLOUD,2018-08-01T00:00:00.000Z,,-180.0,-40.0,180.0,40.0 -C2274918604-POCLOUD,CYGNSS_L3_CDR_V1.2,CYGNSS Level 3 Climate Data Record Version 1.2,POCLOUD,2018-08-01T00:00:00.000Z,,-180.0,-40.0,180.0,40.0 -C2142677420-POCLOUD,CYGNSS_L3_MICROPLASTIC_V1.0,CYGNSS L3 Ocean Microplastic Concentration V1.0,POCLOUD,2017-04-02T00:00:00.000Z,2018-09-25T00:00:00.000Z,-180.0,-37.125,180.0,37.125 -C2893924134-POCLOUD,CYGNSS_L3_MICROPLASTIC_V3.2,CYGNSS Level 3 Ocean Microplastic Concentration Version 3.2,POCLOUD,2018-08-01T00:00:00.000Z,,-180.0,-37.4,180.0,37.4 -C3051555827-POCLOUD,CYGNSS_L3_MRG_NRT_V3.2,CYGNSS Level 3 MRG Science Data Record Near Real Time Version 3.2,POCLOUD,2023-07-21T00:00:00.000Z,,-180.0,-40.0,180.0,40.0 -C3168810773-POCLOUD,CYGNSS_L3_MRG_NRT_V3.2.1,CYGNSS Level 3 MRG Science Data Record Near Real Time Version 3.2.1,POCLOUD,2024-06-17T00:00:00.000Z,,-180.0,-40.0,180.0,40.0 -C3542082998-POCLOUD,CYGNSS_L3_MRG_NRT_V3.2.2,CYGNSS Level 3 MRG Science Data Record Near Real Time Version 3.2.2,POCLOUD,2025-05-11T00:00:00.000Z,,-180.0,-40.0,180.0,40.0 -C2832242310-POCLOUD,CYGNSS_L3_MRG_V3.2,CYGNSS Level 3 MRG Science Data Record Version 3.2,POCLOUD,2018-08-01T00:00:00.000Z,,-180.0,-40.0,180.0,40.0 -C3168812717-POCLOUD,CYGNSS_L3_MRG_V3.2.1,CYGNSS Level 3 MRG Science Data Record Version 3.2.1,POCLOUD,2018-08-01T00:00:00.000Z,,-180.0,-40.0,180.0,40.0 -C3452782295-POCLOUD,CYGNSS_L3_MRG_V3.2.2,CYGNSS Level 3 MRG Science Data Record Version 3.2.2,POCLOUD,2018-08-01T00:00:00.000Z,,-180.0,-40.0,180.0,40.0 -C2205122332-POCLOUD,CYGNSS_L3_SOIL_MOISTURE_V1.0,UCAR-CU CYGNSS Level 3 Soil Moisture Version 1.0,POCLOUD,2017-03-18T00:00:00.000Z,,-135.0,-38.0,164.0,38.0 -C2927902887-POCLOUD,CYGNSS_L3_SOIL_MOISTURE_V3.2,CYGNSS Level 3 Soil Moisture Version 3.2,POCLOUD,2018-08-01T00:00:00.000Z,,-135.0,-38.15,164.0,38.15 -C2251464874-POCLOUD,CYGNSS_L3_V3.0,CYGNSS Level 3 Science Data Record Version 3.0,POCLOUD,2018-08-01T00:00:00.000Z,,-180.0,-40.0,180.0,40.0 -C2183149774-POCLOUD,CYGNSS_L3_V3.1,CYGNSS Level 3 Science Data Record Version 3.1,POCLOUD,2018-08-01T00:00:00.000Z,,-180.0,-40.0,180.0,40.0 -C2832196567-POCLOUD,CYGNSS_L3_V3.2,CYGNSS Level 3 Science Data Record Version 3.2,POCLOUD,2018-08-01T00:00:00.000Z,,-180.0,-40.0,180.0,40.0 -C3280967831-OB_CLOUD,CZCS_L1,"Nimbus-7 CZCS Level-1A Data, version 2",OB_CLOUD,1978-10-30T00:00:00Z,1986-06-22T23:59:59Z,-180.0,-90.0,180.0,90.0 -C3300838564-OB_CLOUD,CZCS_L2_OC,"Nimbus-7 CZCS Level-2 Regional Ocean Color (OC) Data, version 2022.0",OB_CLOUD,1978-10-30T00:00:00Z,1986-06-22T23:59:59Z,-180.0,-90.0,180.0,90.0 -C3300838583-OB_CLOUD,CZCS_L3b_CHL,"Nimbus-7 CZCS Level-3 Global Binned Chlorophyll (CHL) Data, version 2022.0",OB_CLOUD,1978-10-30T00:00:00Z,1986-06-22T23:59:59Z,-180.0,-90.0,180.0,90.0 -C3300838596-OB_CLOUD,CZCS_L3b_KD,"Nimbus-7 CZCS Level-3 Global Binned Diffuse Attenuation Coefficient for Downwelling Irradiance (KD) Data, version 2022.0",OB_CLOUD,1978-10-30T00:00:00Z,1986-06-22T23:59:59Z,-180.0,-90.0,180.0,90.0 -C3300838667-OB_CLOUD,CZCS_L3b_RRS,"Nimbus-7 CZCS Level-3 Global Binned Remote-Sensing Reflectance (RRS) Data, version 2022.0",OB_CLOUD,1978-10-30T00:00:00Z,1986-06-22T23:59:59Z,-180.0,-90.0,180.0,90.0 -C3300838699-OB_CLOUD,CZCS_L3m_CHL,"Nimbus-7 CZCS Level-3 Global Mapped Chlorophyll (CHL) Data, version 2022.0",OB_CLOUD,1978-10-30T00:00:00Z,1986-06-22T23:59:59Z,-180.0,-90.0,180.0,90.0 -C3300838712-OB_CLOUD,CZCS_L3m_KD,"Nimbus-7 CZCS Level-3 Global Mapped Diffuse Attenuation Coefficient for Downwelling Irradiance (KD) Data, version 2022.0",OB_CLOUD,1978-10-30T00:00:00Z,1986-06-22T23:59:59Z,-180.0,-90.0,180.0,90.0 -C3300838810-OB_CLOUD,CZCS_L3m_RRS,"Nimbus-7 CZCS Level-3 Global Mapped Remote-Sensing Reflectance (RRS) Data, version 2022.0",OB_CLOUD,1978-10-30T00:00:00Z,1986-06-22T23:59:59Z,-180.0,-90.0,180.0,90.0 -C2276336440-LARC_ASDC,DCOTSS-Aircraft-Data,Dynamics and Chemistry of the Summer Stratosphere Airborne Data Products,LARC_ASDC,2021-06-09T00:00:00.000Z,2022-07-13T00:00:00.000Z,-131.0,13.5,-78.5,58.0 -C2276362394-LARC_ASDC,DCOTSS-Radar-Satellite-Data,Dynamics and Chemistry of the Summer Stratosphere Radar and Satellite (Remote Sensing) Data Products,LARC_ASDC,2021-07-05T00:00:00.000Z,2022-07-14T00:00:00.000Z,-135.0,10.0,-60.0,55.0 -C1982417666-LARC_ASDC,DSCOVR_EPIC_L2_CLOUD,DSCOVR EPIC Level 2 Cloud Version 03,LARC_ASDC,2015-06-13T11:00:36Z,,-180.0,-90.0,180.0,90.0 -C2231134699-LARC_ASDC,DSCOVR_EPIC_L2_COMPOSITE,"GEO/LEO based cloud property composites for DSCOVR EPIC view, Version 2",LARC_ASDC,2015-06-13T07:53:20Z,2025-07-31T23:59:48.000Z,-180.0,-90.0,180.0,90.0 -C1576365803-LARC_ASDC,DSCOVR_EPIC_L2_COMPOSITE,"EPIC-view satellite composites for DSCOVR, Version 1",LARC_ASDC,2015-06-12T14:09:20Z,2017-12-31T23:37:03Z,-180.0,-90.0,180.0,90.0 -C1573253314-LARC_ASDC,DSCOVR_NISTAR_L2_FLX,Daytime Earth radiation budget determined from NISTAR and EPIC composites Version 1,LARC_ASDC,2017-01-01T01:00:00Z,2017-12-31T22:00:00Z,-180.0,-90.0,180.0,90.0 -C2751553403-ORNL_CLOUD,Daymet_SubDaily_Puerto_Rico_1977,Sub-daily Climate Forcings for Puerto Rico,ORNL_CLOUD,1950-01-01T00:00:00.000Z,2019-12-31T23:59:59.999Z,-67.9928,16.84,-64.1,19.94 -C1990404801-POCLOUD,ECCO_L4_ATM_STATE_05DEG_DAILY_V4R4,"ECCO Atmosphere Surface Temperature, Humidity, Wind, and Pressure - Daily Mean 0.5 Degree (Version 4 Release 4)",POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1990404814-POCLOUD,ECCO_L4_ATM_STATE_05DEG_MONTHLY_V4R4,"ECCO Atmosphere Surface Temperature, Humidity, Wind, and Pressure - Monthly Mean 0.5 Degree (Version 4 Release 4)",POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1991543823-POCLOUD,ECCO_L4_ATM_STATE_LLC0090GRID_DAILY_V4R4,"ECCO Atmosphere Surface Temperature, Humidity, Wind, and Pressure - Daily Mean llc90 Grid (Version 4 Release 4)",POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1991543805-POCLOUD,ECCO_L4_ATM_STATE_LLC0090GRID_MONTHLY_V4R4,"ECCO Atmosphere Surface Temperature, Humidity, Wind, and Pressure - Monthly Mean llc90 Grid (Version 4 Release 4)",POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1990404807-POCLOUD,ECCO_L4_BOLUS_05DEG_DAILY_V4R4,ECCO Gent-McWilliams Ocean Bolus Velocity - Daily Mean 0.5 Degree (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1990404805-POCLOUD,ECCO_L4_BOLUS_05DEG_MONTHLY_V4R4,ECCO Gent-McWilliams Ocean Bolus Velocity - Monthly Mean 0.5 Degree (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1991543824-POCLOUD,ECCO_L4_BOLUS_LLC0090GRID_DAILY_V4R4,ECCO Gent-McWilliams Ocean Bolus Velocity - Daily Mean llc90 Grid (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1991543745-POCLOUD,ECCO_L4_BOLUS_LLC0090GRID_MONTHLY_V4R4,ECCO Gent-McWilliams Ocean Bolus Velocity - Monthly Mean llc90 Grid (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1990404793-POCLOUD,ECCO_L4_DENS_STRAT_PRESS_05DEG_DAILY_V4R4,"ECCO Ocean Density, Stratification, and Hydrostatic Pressure - Daily Mean 0.5 Degree (Version 4 Release 4)",POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1990404798-POCLOUD,ECCO_L4_DENS_STRAT_PRESS_05DEG_MONTHLY_V4R4,"ECCO Ocean Density, Stratification, and Hydrostatic Pressure - Monthly Mean 0.5 Degree (Version 4 Release 4)",POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1991543727-POCLOUD,ECCO_L4_DENS_STRAT_PRESS_LLC0090GRID_DAILY_V4R4,"ECCO Ocean Density, Stratification, and Hydrostatic Pressure - Daily Mean llc90 Grid (Version 4 Release 4)",POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1991543735-POCLOUD,ECCO_L4_DENS_STRAT_PRESS_LLC0090GRID_MONTHLY_V4R4,"ECCO Ocean Density, Stratification, and Hydrostatic Pressure - Monthly Mean llc90 Grid (Version 4 Release 4)",POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1990404818-POCLOUD,ECCO_L4_FRESH_FLUX_05DEG_DAILY_V4R4,ECCO Ocean and Sea-Ice Surface Freshwater Fluxes - Daily Mean 0.5 Degree (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1990404792-POCLOUD,ECCO_L4_FRESH_FLUX_05DEG_MONTHLY_V4R4,ECCO Ocean and Sea-Ice Surface Freshwater Fluxes - Monthly Mean 0.5 Degree (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1991543820-POCLOUD,ECCO_L4_FRESH_FLUX_LLC0090GRID_DAILY_V4R4,ECCO Ocean and Sea-Ice Surface Freshwater Fluxes - Daily Mean llc90 Grid (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1991543803-POCLOUD,ECCO_L4_FRESH_FLUX_LLC0090GRID_MONTHLY_V4R4,ECCO Ocean and Sea-Ice Surface Freshwater Fluxes - Monthly Mean llc90 Grid (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C2013583732-POCLOUD,ECCO_L4_GEOMETRY_05DEG_V4R4,ECCO Geometry Parameters for the 0.5 degree Lat-Lon Model Grid (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,180.0,-90.0,-180.0,90.0 -C2013557893-POCLOUD,ECCO_L4_GEOMETRY_LLC0090GRID_V4R4,ECCO Geometry Parameters for the Lat-Lon-Cap 90 (llc90) Native Model Grid (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1991543729-POCLOUD,ECCO_L4_GMAP_TIME_SERIES_SNAPSHOT_V4R4,ECCO Global Mean Atmospheric Pressure - Snapshot (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C2133160276-POCLOUD,ECCO_L4_GMAP_TIME_SERIES_SNAPSHOT_V4R4B,ECCO Global Mean Atmospheric Pressure - Snapshot (Version 4 Release 4b),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1991543819-POCLOUD,ECCO_L4_GMSL_TIME_SERIES_DAILY_V4R4,ECCO Global Mean Sea Level - Daily Mean (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1991543742-POCLOUD,ECCO_L4_GMSL_TIME_SERIES_MONTHLY_V4R4,ECCO Global Mean Sea Level - Monthly Mean (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1990404788-POCLOUD,ECCO_L4_HEAT_FLUX_05DEG_DAILY_V4R4,ECCO Ocean and Sea-Ice Surface Heat Fluxes - Daily Mean 0.5 Degree (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1990404812-POCLOUD,ECCO_L4_HEAT_FLUX_05DEG_MONTHLY_V4R4,ECCO Ocean and Sea-Ice Surface Heat Fluxes - Monthly Mean 0.5 Degree (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1991543712-POCLOUD,ECCO_L4_HEAT_FLUX_LLC0090GRID_DAILY_V4R4,ECCO Ocean and Sea-Ice Surface Heat Fluxes - Daily Mean llc90 Grid (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1991543811-POCLOUD,ECCO_L4_HEAT_FLUX_LLC0090GRID_MONTHLY_V4R4,ECCO Ocean and Sea-Ice Surface Heat Fluxes - Monthly Mean llc90 Grid (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1990404810-POCLOUD,ECCO_L4_MIXED_LAYER_DEPTH_05DEG_DAILY_V4R4,ECCO Ocean Mixed Layer Depth - Daily Mean 0.5 Degree (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1990404819-POCLOUD,ECCO_L4_MIXED_LAYER_DEPTH_05DEG_MONTHLY_V4R4,ECCO Ocean Mixed Layer Depth - Monthly Mean 0.5 Degree (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1991543734-POCLOUD,ECCO_L4_MIXED_LAYER_DEPTH_LLC0090GRID_DAILY_V4R4,ECCO Ocean Mixed Layer Depth - Daily Mean llc90 Grid (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1991543741-POCLOUD,ECCO_L4_MIXED_LAYER_DEPTH_LLC0090GRID_MONTHLY_V4R4,ECCO Ocean Mixed Layer Depth - Monthly Mean llc90 Grid (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1990404797-POCLOUD,ECCO_L4_OBP_05DEG_DAILY_V4R4,ECCO Ocean Bottom Pressure - Daily Mean 0.5 Degree (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C2129192243-POCLOUD,ECCO_L4_OBP_05DEG_DAILY_V4R4B,ECCO Ocean Bottom Pressure - Daily Mean 0.5 Degree (Version 4 Release 4b),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1990404791-POCLOUD,ECCO_L4_OBP_05DEG_MONTHLY_V4R4,ECCO Ocean Bottom Pressure - Monthly Mean 0.5 Degree (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C2129193421-POCLOUD,ECCO_L4_OBP_05DEG_MONTHLY_V4R4B,ECCO Ocean Bottom Pressure - Monthly Mean 0.5 Degree (Version 4 Release 4b),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1991543737-POCLOUD,ECCO_L4_OBP_LLC0090GRID_DAILY_V4R4,ECCO Ocean Bottom Pressure - Daily Mean llc90 Grid (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C2129195053-POCLOUD,ECCO_L4_OBP_LLC0090GRID_DAILY_V4R4B,ECCO Ocean Bottom Pressure - Daily Mean llc90 Grid (Version 4 Release 4b),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1991543806-POCLOUD,ECCO_L4_OBP_LLC0090GRID_MONTHLY_V4R4,ECCO Ocean Bottom Pressure - Monthly Mean llc90 Grid (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C2129197196-POCLOUD,ECCO_L4_OBP_LLC0090GRID_MONTHLY_V4R4B,ECCO Ocean Bottom Pressure - Monthly Mean llc90 Grid (Version 4 Release 4b),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1991543804-POCLOUD,ECCO_L4_OBP_LLC0090GRID_SNAPSHOT_V4R4,ECCO Ocean Bottom Pressure - Snapshot llc90 Grid (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C2013584708-POCLOUD,ECCO_L4_OCEAN_3D_MIX_COEFFS_05DEG_V4R4,"ECCO Ocean 3D Gent-Mcwilliams, Redi, and Background Vertical Diffusivity Coefficients for the 0.5 degree Lat-Lon Model Grid (Version 4 Release 4)",POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C2013583906-POCLOUD,ECCO_L4_OCEAN_3D_MIX_COEFFS_LLC0090GRID_V4R4,"ECCO Ocean 3D Gent-Mcwilliams, Redi, and Background Vertical Diffusivity Coefficients for the Lat-Lon-Cap 90 (llc90) Native Model Grid (Version 4 Release 4)",POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1991543726-POCLOUD,ECCO_L4_OCEAN_3D_MOMENTUM_TEND_LLC0090GRID_DAILY_V4R4,ECCO Ocean Three-Dimensional Momentum Tendency - Daily Mean llc90 Grid (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1991543702-POCLOUD,ECCO_L4_OCEAN_3D_MOMENTUM_TEND_LLC0090GRID_MONTHLY_V4R4,ECCO Ocean Three-Dimensional Momentum Tendency - Monthly Mean llc90 Grid (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1991543814-POCLOUD,ECCO_L4_OCEAN_3D_SALINITY_FLUX_LLC0090GRID_DAILY_V4R4,ECCO Ocean Three-Dimensional Salinity Fluxes - Daily Mean llc90 Grid (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1991543752-POCLOUD,ECCO_L4_OCEAN_3D_SALINITY_FLUX_LLC0090GRID_MONTHLY_V4R4,ECCO Ocean Three-Dimensional Salinity Fluxes - Monthly Mean llc90 Grid (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1991543812-POCLOUD,ECCO_L4_OCEAN_3D_TEMPERATURE_FLUX_LLC0090GRID_DAILY_V4R4,ECCO Ocean Three-Dimensional Potential Temperature Fluxes - Daily Mean llc90 Grid (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1991543740-POCLOUD,ECCO_L4_OCEAN_3D_TEMPERATURE_FLUX_LLC0090GRID_MONTHLY_V4R4,ECCO Ocean Three-Dimensional Potential Temperature Fluxes - Monthly Mean llc90 Grid (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1991543699-POCLOUD,ECCO_L4_OCEAN_3D_VOLUME_FLUX_LLC0090GRID_DAILY_V4R4,ECCO Ocean Three-Dimensional Volume Fluxes - Daily Mean llc90 Grid (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1991543739-POCLOUD,ECCO_L4_OCEAN_3D_VOLUME_FLUX_LLC0090GRID_MONTHLY_V4R4,ECCO Ocean Three-Dimensional Volume Fluxes - Monthly Mean llc90 Grid (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1991543818-POCLOUD,ECCO_L4_OCEAN_BOLUS_STREAMFUNCTION_LLC0090GRID_DAILY_V4R4,ECCO Gent-McWilliams Bolus Transport Streamfunction - Daily Mean llc90 Grid (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1991543733-POCLOUD,ECCO_L4_OCEAN_BOLUS_STREAMFUNCTION_LLC0090GRID_MONTHLY_V4R4,ECCO Gent-McWilliams Bolus Transport Streamfunction - Monthly Mean llc90 Grid (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1990404811-POCLOUD,ECCO_L4_OCEAN_VEL_05DEG_DAILY_V4R4,ECCO Ocean Velocity - Daily Mean 0.5 Degree (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1990404823-POCLOUD,ECCO_L4_OCEAN_VEL_05DEG_MONTHLY_V4R4,ECCO Ocean Velocity - Monthly Mean 0.5 Degree (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1991543808-POCLOUD,ECCO_L4_OCEAN_VEL_LLC0090GRID_DAILY_V4R4,ECCO Ocean Velocity - Daily Mean llc90 Grid (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1991543732-POCLOUD,ECCO_L4_OCEAN_VEL_LLC0090GRID_MONTHLY_V4R4,ECCO Ocean Velocity - Monthly Mean llc90 Grid (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1991543766-POCLOUD,ECCO_L4_SBO_CORE_TIME_SERIES_SNAPSHOT_V4R4,ECCO SBO Core Products - Snapshot (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C2133162585-POCLOUD,ECCO_L4_SBO_CORE_TIME_SERIES_SNAPSHOT_V4R4B,ECCO SBO Core Products - Snapshot (Version 4 Release 4b),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1990404815-POCLOUD,ECCO_L4_SEA_ICE_CONC_THICKNESS_05DEG_DAILY_V4R4,ECCO Sea-Ice and Snow Concentration and Thickness - Daily Mean 0.5 Degree (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1990404820-POCLOUD,ECCO_L4_SEA_ICE_CONC_THICKNESS_05DEG_MONTHLY_V4R4,ECCO Sea-Ice and Snow Concentration and Thickness - Monthly Mean 0.5 Degree (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1991543763-POCLOUD,ECCO_L4_SEA_ICE_CONC_THICKNESS_LLC0090GRID_DAILY_V4R4,ECCO Sea-Ice and Snow Concentration and Thickness - Daily Mean llc90 Grid (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1991543764-POCLOUD,ECCO_L4_SEA_ICE_CONC_THICKNESS_LLC0090GRID_MONTHLY_V4R4,ECCO Sea-Ice and Snow Concentration and Thickness - Monthly Mean llc90 Grid (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1991543821-POCLOUD,ECCO_L4_SEA_ICE_CONC_THICKNESS_LLC0090GRID_SNAPSHOT_V4R4,ECCO Sea-Ice and Snow Concentration and Thickness - Snapshot llc90 Grid (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1991543731-POCLOUD,ECCO_L4_SEA_ICE_HORIZ_VOLUME_FLUX_LLC0090GRID_DAILY_V4R4,ECCO Sea-Ice and Snow Horizontal Volume Fluxes - Daily Mean llc90 Grid (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1991543724-POCLOUD,ECCO_L4_SEA_ICE_HORIZ_VOLUME_FLUX_LLC0090GRID_MONTHLY_V4R4,ECCO Sea-Ice and Snow Horizontal Volume Fluxes - Monthly Mean llc90 Grid (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1991543807-POCLOUD,ECCO_L4_SEA_ICE_SALT_PLUME_FLUX_LLC0090GRID_DAILY_V4R4,ECCO Sea-Ice Salt Plume Fluxes - Daily Mean llc90 Grid (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1991543730-POCLOUD,ECCO_L4_SEA_ICE_SALT_PLUME_FLUX_LLC0090GRID_MONTHLY_V4R4,ECCO Sea-Ice Salt Plume Fluxes - Monthly Mean llc90 Grid (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1990404817-POCLOUD,ECCO_L4_SEA_ICE_VELOCITY_05DEG_DAILY_V4R4,ECCO Sea-Ice Velocity - Daily Mean 0.5 Degree (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1990404790-POCLOUD,ECCO_L4_SEA_ICE_VELOCITY_05DEG_MONTHLY_V4R4,ECCO Sea-Ice Velocity - Monthly Mean 0.5 Degree (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1991543765-POCLOUD,ECCO_L4_SEA_ICE_VELOCITY_LLC0090GRID_DAILY_V4R4,ECCO Sea-Ice Velocity - Daily Mean llc90 Grid (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1991543700-POCLOUD,ECCO_L4_SEA_ICE_VELOCITY_LLC0090GRID_MONTHLY_V4R4,ECCO Sea-Ice Velocity - Monthly Mean llc90 Grid (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1991543768-POCLOUD,ECCO_L4_SEA_ICE_VELOCITY_LLC0090GRID_SNAPSHOT_V4R4,ECCO Sea-Ice Velocity - Snapshot llc90 Grid (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1990404813-POCLOUD,ECCO_L4_SSH_05DEG_DAILY_V4R4,ECCO Sea Surface Height - Daily Mean 0.5 Degree (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C2129181904-POCLOUD,ECCO_L4_SSH_05DEG_DAILY_V4R4B,ECCO Sea Surface Height - Daily Mean 0.5 Degree (Version 4 Release 4b),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1990404799-POCLOUD,ECCO_L4_SSH_05DEG_MONTHLY_V4R4,ECCO Sea Surface Height - Monthly Mean 0.5 Degree (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C2129189405-POCLOUD,ECCO_L4_SSH_05DEG_MONTHLY_V4R4B,ECCO Sea Surface Height - Monthly Mean 0.5 Degree (Version 4 Release 4b),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1991543744-POCLOUD,ECCO_L4_SSH_LLC0090GRID_DAILY_V4R4,ECCO Sea Surface Height - Daily Mean llc90 Grid (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C2129186341-POCLOUD,ECCO_L4_SSH_LLC0090GRID_DAILY_V4R4B,ECCO Sea Surface Height - Daily Mean llc90 Grid (Version 4 Release 4b),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1991543813-POCLOUD,ECCO_L4_SSH_LLC0090GRID_MONTHLY_V4R4,ECCO Sea Surface Height - Monthly Mean llc90 Grid (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C2129189870-POCLOUD,ECCO_L4_SSH_LLC0090GRID_MONTHLY_V4R4B,ECCO Sea Surface Height - Monthly Mean llc90 Grid (Version 4 Release 4b),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1991543817-POCLOUD,ECCO_L4_SSH_LLC0090GRID_SNAPSHOT_V4R4,ECCO Sea Surface Height - Snapshot llc90 Grid (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1990404808-POCLOUD,ECCO_L4_STRESS_05DEG_DAILY_V4R4,ECCO Ocean and Sea-Ice Surface Stress - Daily Mean 0.5 Degree (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1990404796-POCLOUD,ECCO_L4_STRESS_05DEG_MONTHLY_V4R4,ECCO Ocean and Sea-Ice Surface Stress - Monthly Mean 0.5 Degree (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1991543704-POCLOUD,ECCO_L4_STRESS_LLC0090GRID_DAILY_V4R4,ECCO Ocean and Sea-Ice Surface Stress - Daily Mean llc90 Grid (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1991543760-POCLOUD,ECCO_L4_STRESS_LLC0090GRID_MONTHLY_V4R4,ECCO Ocean and Sea-Ice Surface Stress - Monthly Mean llc90 Grid (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1990404821-POCLOUD,ECCO_L4_TEMP_SALINITY_05DEG_DAILY_V4R4,ECCO Ocean Temperature and Salinity - Daily Mean 0.5 Degree (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1990404795-POCLOUD,ECCO_L4_TEMP_SALINITY_05DEG_MONTHLY_V4R4,ECCO Ocean Temperature and Salinity - Monthly Mean 0.5 Degree (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1991543736-POCLOUD,ECCO_L4_TEMP_SALINITY_LLC0090GRID_DAILY_V4R4,ECCO Ocean Temperature and Salinity - Daily Mean llc90 Grid (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1991543728-POCLOUD,ECCO_L4_TEMP_SALINITY_LLC0090GRID_MONTHLY_V4R4,ECCO Ocean Temperature and Salinity - Monthly Mean llc90 Grid (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C1991543757-POCLOUD,ECCO_L4_TEMP_SALINITY_LLC0090GRID_SNAPSHOT_V4R4,ECCO Ocean Temperature and Salinity - Snapshot llc90 Grid (Version 4 Release 4),POCLOUD,1992-01-01T00:00:00.000Z,2018-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C2408031090-LPCLOUD,EMITL1BATT,EMIT L1B Corrected Spacecraft Attitude and Ephemeris V001,LPCLOUD,2022-08-09T00:00:00.000Z,,-180.0,-54.0,180.0,54.0 -C3147269019-LPCLOUD,EMITL3ASA,EMIT L3 Aggregated Mineral Spectral Abundance and Uncertainty 0.5 Deg V002,LPCLOUD,2022-08-10T00:00:00.000Z,2024-01-20T00:00:00.000Z,-165.0,-54.5,179.5,55.0 -C2408752948-LPCLOUD,EMITL3ASA,EMIT L3 Aggregated Mineral Spectral Abundance and Uncertainty 0.5 Deg V001,LPCLOUD,2022-08-10T00:00:00.000Z,2023-07-30T23:59:59.000Z,-165.0,-54.5,179.5,55.0 -C2408755900-LPCLOUD,EMITL4ESM,EMIT L4 Earth System Model Products V001,LPCLOUD,2007-01-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C1962671350-LARC_ASDC,ERBE_S10N_WFOV_SF_ERBS_AreaAverageTimeSeries,Earth Radiation area average time series through Wide-field-of-view nonscanner aboard Earth Radiation Budget Satellite Edition 4.1,LARC_ASDC,1985-01-01T00:00:00.000000Z,1999-12-31T23:59:59.999999Z,-180.0,-90.0,180.0,90.0 -C1407077722-LARC_ASDC,ERBE_S10N_WFOV_SF_ERBS_AreaAverageTimeSeries_Edition4,Earth Radiation area average time series through Wide-field-of-view nonscanner aboard Earth Radiation Budget Satellite,LARC_ASDC,1985-01-01T00:00:00.000000Z,1998-12-31T23:59:59.999999Z,-180.0,-90.0,180.0,90.0 -C1962659660-LARC_ASDC,ERBE_S10N_WFOV_SF_ERBS_Regional,Earth Radiation Budget through Earth Radiation Budget Satellite Wide-field-of-view Nonscanner Observations Edition 4.1,LARC_ASDC,1985-01-01T00:00:00.000Z,1999-12-31T23:59:59.000Z,-180.0,-60.0,180.0,60.0 -C1404663419-LARC_ASDC,ERBE_S10N_WFOV_SF_ERBS_Regional,Earth Radiation Budget through Earth Radiation Budget Satellite Wide-field-of-view Nonscanner Observations Edition ,LARC_ASDC,1985-01-01T00:00:00.000000Z,1998-12-31T23:59:59.999999Z,-180.0,-60.0,180.0,60.0 -C2184546470-POCLOUD,EWSG1-NAVO-L2P-v01,GHRSST Level 2P Sea Surface Temperature version 1.0 from the Electro-Optical Infrared Weather System Geostationary (EWSG1) produced by NAVO,POCLOUD,2021-12-06T00:00:00.000Z,2023-11-08T00:00:00.000Z,-16.0,-78.0,140.0,78.0 -C2904379383-POCLOUD,EWSG2-NAVO-L2P-v01,GHRSST Level 2P Sea Surface Temperature version 1.0 from the Electro-Optical Infrared Weather System Geostationary (EWSG2) produced by NAVO,POCLOUD,2023-12-03T00:00:00.000Z,,-20.0,-65.0,140.0,65.0 -C1917876412-LARC_ASDC,FIREXAQ_TraceGas_AircraftRemoteSensing_ER2_NASTI_Data,FIREX-AQ ER-2 Remotely Sensed National Polar - Orbiting Operational Environmental Satellite System Airborne Sounder Testbed - Interferometer (NAST-I) Data,LARC_ASDC,2019-08-01T00:00:00.000Z,2019-08-23T23:59:59.999Z,-135.0,15.0,-75.0,60.0 -C2789636167-LARC_ASDC,FLASH_SSF_NOAA20-FM6-VIIRS,Fast Longwave And SHortwave Fluxes (FLASHflux) NOAA-20 Clouds and Radiative Swath (SSF) Version1B,LARC_ASDC,2023-10-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2569832691-LARC_ASDC,FLASH_SSF_NOAA20-FM6-VIIRS,Fast Longwave And SHortwave Fluxes (FLASHflux) Clouds and Radiative Swath (SSF) data in netCDF,LARC_ASDC,2021-12-21T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2804771144-LARC_ASDC,FLASH_SSF_Terra-FM1-MODIS,Fast Longwave And SHortwave Fluxes (FLASHflux) Clouds and Radiative Swath (SSF) TERRA-FM1 data in netCDF Version 4B,LARC_ASDC,2017-01-01T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3420608213-LARC_ASDC,FLASH_TISA_NOAA20,FLASHFlux NOAA-20 Daily Gridded TOA and Surfaces/Clouds data Version 1A,LARC_ASDC,2024-12-31T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C1719147151-LARC_ASDC,FLASH_TISA_Terra-Aqua,FLASHFlux Daily Gridded Single Satellite TOA and Surfaces/Clouds data in HDF Version 4A,LARC_ASDC,2018-12-01T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C2789632196-LARC_ASDC,FLASH_TISA_Terra-NOAA20,FLASHFlux Daily Gridded TOA and Surfaces/Clouds data Version 4C,LARC_ASDC,2021-12-21T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2634012953-LARC_ASDC,FLASH_TISA_Terra-NOAA20,FLASHFlux Daily Gridded TOA and Surfaces/Clouds data Version 4B ,LARC_ASDC,2021-12-21T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2062227429-LARC_ASDC,GEWEXSRB_Rel4-IP_Ancillary_3hrly,GEWEX SRB Integrated Product (Rel-4) Ancillary 3-Hourly,LARC_ASDC,1988-01-01T00:00:00.000000Z,2009-12-31T23:59:59.999999Z,-180.0,-90.0,180.0,90.0 -C2068394146-LARC_ASDC,GEWEXSRB_Rel4-IP_Ancillary_3hrly_landonly,GEWEX SRB Integrated Product (Rel-4) Ancillary 3-Hourly Land-only,LARC_ASDC,1983-07-01T00:00:00.000000Z,1987-12-31T23:59:59.999999Z,-180.0,-90.0,180.0,90.0 -C2062214608-LARC_ASDC,GEWEXSRB_Rel4-IP_Ancillary_3hrly_oceanonly,GEWEX SRB Integrated Product (Rel-4) Ancillary 3-Hourly Ocean-only,LARC_ASDC,2010-01-01T00:00:00.000000Z,2017-06-30T23:59:59.999999Z,-180.0,-90.0,180.0,90.0 -C2058673000-LARC_ASDC,GEWEXSRB_Rel4-IP_Longwave_3hrly,GEWEX SRB Integrated Product (Rel-4) Longwave 3-Hourly Fluxes,LARC_ASDC,1988-01-01T00:00:00.000000Z,2009-12-31T23:59:59.999999Z,-180.0,-90.0,180.0,90.0 -C2068391958-LARC_ASDC,GEWEXSRB_Rel4-IP_Longwave_3hrlymonthly_landonly_utc,GEWEX SRB Integrated Product (Rel-4) Longwave 3-Hourly Monthly Average by UTC Land-only Fluxes,LARC_ASDC,1983-07-01T00:00:00.000000Z,1987-12-31T23:59:59.999999Z,-180.0,-90.0,180.0,90.0 -C2062180056-LARC_ASDC,GEWEXSRB_Rel4-IP_Longwave_3hrlymonthly_oceanonly_utc,GEWEX SRB Integrated Product (Rel-4) Longwave 3-Hourly Monthly Average by UTC Ocean-only Fluxes,LARC_ASDC,2010-01-01T00:00:00.000000Z,2017-06-30T23:59:59.999999Z,-180.0,-90.0,180.0,90.0 -C2069361509-LARC_ASDC,GEWEXSRB_Rel4-IP_Longwave_3hrlymonthly_utc,GEWEX SRB Integrated Product (Rel-4) Longwave 3-Hourly Monthly Average by UTC Fluxes,LARC_ASDC,1988-01-01T00:00:00.000000Z,2009-12-31T23:59:59.999999Z,-180.0,-90.0,180.0,90.0 -C2058672988-LARC_ASDC,GEWEXSRB_Rel4-IP_Longwave_daily_landonly_utc,GEWEX SRB Integrated Product (Rel-4) Longwave Daily Average by UTC Land-only Fluxes,LARC_ASDC,1983-07-01T00:00:00.000000Z,1987-12-31T23:59:59.999999Z,-180.0,-90.0,180.0,90.0 -C2058671746-LARC_ASDC,GEWEXSRB_Rel4-IP_Longwave_daily_oceanonly_utc, GEWEX SRB Integrated Product (Rel-4) Longwave Daily Average by UTC Ocean-only Fluxes,LARC_ASDC,2010-01-01T00:00:00.000000Z,2017-06-30T23:59:59.999999Z,-180.0,-90.0,180.0,90.0 -C2062227430-LARC_ASDC,GEWEXSRB_Rel4-IP_Longwave_daily_utc,GEWEX SRB Integrated Product (Rel-4) Longwave Daily Average by UTC,LARC_ASDC,1988-01-01T00:00:00.000000Z,2009-12-31T23:59:59.999999Z,-180.0,-90.0,180.0,90.0 -C2062255113-LARC_ASDC,GEWEXSRB_Rel4-IP_Longwave_monthly_landonly_utc,GEWEX SRB Integrated Product (Rel-4) Longwave Monthly Average by UTC Land-only Fluxes,LARC_ASDC,1983-07-01T00:00:00.000000Z,1987-12-31T23:59:59.999999Z,-180.0,-90.0,180.0,90.0 -C2058672885-LARC_ASDC,GEWEXSRB_Rel4-IP_Longwave_monthly_local,GEWEX SRB Integrated Product (Rel-4) Longwave Monthly Average by Local,LARC_ASDC,1988-01-01T00:00:00.000000Z,2009-12-31T23:59:59.999999Z,-180.0,-90.0,180.0,90.0 -C2062255114-LARC_ASDC,GEWEXSRB_Rel4-IP_Longwave_monthly_oceanonly_utc,GEWEX SRB Integrated Product (Rel-4) Longwave Monthly Average by UTC Ocean-only Fluxes,LARC_ASDC,2010-01-01T00:00:00.000000Z,2017-06-30T23:59:59.999999Z,-180.0,-90.0,180.0,90.0 -C2058669482-LARC_ASDC,GEWEXSRB_Rel4-IP_Longwave_monthly_utc,GEWEX SRB Integrated Product (Rel-4) Longwave Monthly Average by UTC,LARC_ASDC,1988-01-01T00:00:00.000000Z,2009-12-31T23:59:59.999999Z,-180.0,-90.0,180.0,90.0 -C2068394132-LARC_ASDC,GEWEXSRB_Rel4-IP_Shortwave_3hrly,GEWEX SRB Integrated Product (Rel-4) Shortwave 3-Hourly Fluxes,LARC_ASDC,1983-07-01T00:00:00.000000Z,2017-06-30T23:59:59.999999Z,-180.0,-90.0,180.0,90.0 -C2058672708-LARC_ASDC,GEWEXSRB_Rel4-IP_Shortwave_3hrlymonthly_utc,GEWEX SRB Integrated Product (Rel-4) Shortwave 3-Hourly Monthly Average by UTC Fluxes,LARC_ASDC,1983-07-01T00:00:00.000000Z,2017-06-30T23:59:59.999999Z,-180.0,-90.0,180.0,90.0 -C2062255117-LARC_ASDC,GEWEXSRB_Rel4-IP_Shortwave_daily_local,GEWEX SRB Integrated Product (Rel-4) Shortwave Daily Average by local Fluxes,LARC_ASDC,1983-07-01T00:00:00.000000Z,2017-06-30T23:59:59.999999Z,-180.0,-90.0,180.0,90.0 -C2062255109-LARC_ASDC,GEWEXSRB_Rel4-IP_Shortwave_daily_utc,GEWEX SRB Integrated Product (Rel-4) Shortwave Daily Average by UTC Fluxes,LARC_ASDC,1983-07-01T00:00:00.000000Z,2017-06-30T23:59:59.999999Z,-180.0,-90.0,180.0,90.0 -C2062255116-LARC_ASDC,GEWEXSRB_Rel4-IP_Shortwave_monthly_local,GEWEX SRB Integrated Product (Rel-4) Shortwave Monthly Average by Local Fluxes,LARC_ASDC,1983-07-01T00:00:00.000000Z,2017-06-30T23:59:59.999999Z,-180.0,-90.0,180.0,90.0 -C2062255111-LARC_ASDC,GEWEXSRB_Rel4-IP_Shortwave_monthly_utc,GEWEX SRB Integrated Product (Rel-4) Shortwave Monthly Average by UTC Fluxes,LARC_ASDC,1983-07-01T00:00:00.000000Z,2017-06-30T23:59:59.999999Z,-180.0,-90.0,180.0,90.0 -C2791471836-LARC_ASDC,GEWEXSRB_Rel4_1-IP_Longwave_3hrly_landonly,GEWEX SRB Integrated Product (Rel-4_1) Longwave 3-Hourly Land-only Fluxes,LARC_ASDC,1983-07-01T00:00:00.000Z,1987-12-31T23:59:59.999Z,-180.0,-90.0,180.0,90.0 -C2791459985-LARC_ASDC,GEWEXSRB_Rel4_1-IP_Longwave_3hrly_oceanonly,GEWEX SRB Integrated Product (Rel-4_1) Longwave 3-Hourly Ocean-only Fluxes,LARC_ASDC,2010-01-01T00:00:00.000Z,2017-06-30T23:59:59.999Z,-180.0,-90.0,180.0,90.0 -C2791476513-LARC_ASDC,GEWEXSRB_Rel4_1-IP_Longwave_daily_landonly_local,GEWEX SRB Integrated Product (Rel-4_1) Longwave Daily Average by Local Land-only Fluxes,LARC_ASDC,1983-07-01T00:00:00.000Z,1987-12-31T23:59:59.999Z,-180.0,-90.0,180.0,90.0 -C2791485698-LARC_ASDC,GEWEXSRB_Rel4_1-IP_Longwave_daily_local,GEWEX SRB Integrated Product (Rel-4_1) Longwave Daily Average by Local Fluxes,LARC_ASDC,1988-01-01T00:00:00.000Z,2009-12-31T23:59:59.999Z,-180.0,-90.0,180.0,90.0 -C2791474780-LARC_ASDC,GEWEXSRB_Rel4_1-IP_Longwave_daily_oceanonly_local,GEWEX SRB Integrated Product (Rel-4_1) Longwave Daily Average by Local Ocean-only Fluxes,LARC_ASDC,2010-01-01T00:00:00.000Z,2017-12-31T23:59:59.999Z,-180.0,-90.0,180.0,90.0 -C2791481349-LARC_ASDC,GEWEXSRB_Rel4_1-IP_Longwave_monthly_landonly_local,GEWEX SRB Integrated Product (Rel-4_1) Longwave Monthly Average by local Land-only Fluxes,LARC_ASDC,1983-07-01T00:00:00.000Z,1987-12-31T23:59:59.999Z,-180.0,-90.0,180.0,90.0 -C2791478791-LARC_ASDC,GEWEXSRB_Rel4_1-IP_Longwave_monthly_oceanonly_local,GEWEX SRB Integrated Product (Rel-4_1) Longwave Monthly Average by local Ocean-only Fluxes,LARC_ASDC,2010-01-01T00:00:00.000Z,2017-06-30T23:59:59.999Z,-180.0,-90.0,180.0,90.0 -C2036877762-POCLOUD,GMI-REMSS-L3U-v8.2a,GHRSST Level 3U Global Subskin Sea Surface Temperature from GMI onboard GPM satellite,POCLOUD,2014-03-04T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2499940522-POCLOUD,GOES13-OSISAF-L3C-v1.0,GHRSST Level 3C sub-skin Sea Surface Temperature from the Geostationary Operational Environmental Satellites (GOES 13) Imager in East position (GDS V2) produced by OSI SAF,POCLOUD,2010-01-01T14:30:00.000Z,2017-12-14T15:30:01.000Z,-135.0,-60.0,-15.0,60.0 -C2499940523-POCLOUD,GOES13-OSPO-L2P-v1.0,GHRSST Level 2P Western Atlantic Regional Skin Sea Surface Temperature from the Geostationary Operational Environmental Satellites (GOES) Imager on the GOES-13 satellite (GDS version 2),POCLOUD,2013-08-01T13:09:00.000Z,2018-01-08T15:29:19.000Z,-155.0,-68.0,-0.0,68.0 -C2036881909-POCLOUD,GOES15-OSPO-L2P-v1.0,GHRSST Level 2P Central Pacific Regional Skin Sea Surface Temperature from the Geostationary Operational Environmental Satellites (GOES) Imager on the GOES-15 satellite (GDS version 2),POCLOUD,2013-08-01T13:22:00.000Z,2020-03-02T16:00:20.000Z,-180.0,-44.0,180.0,72.0 -C3252991748-POCLOUD,GRACE_ABPR_FO_L2_V1.0,Hourly Ocean Bottom Pressure at the North Pole from the Arctic Bottom Pressure Recorder Follow On Version 1.0,POCLOUD,2022-08-14T00:00:00.000Z,2023-08-17T00:00:00.000Z,,,, -C3215150173-POCLOUD,GRC-GFO_GRIDDED_AOD1B_JPL_1-DEG_RL06.3,JPL GRACE/GRACE-FO Gridded-AOD1B Water-Equivalent-Thickness Surface-Mass Anomaly RL06.3 dataset for Tellus Level-3 1.0-degree grid,POCLOUD,2002-04-04T00:00:00.000Z,,-180.0,-89.5,180.0,89.5 -C3215162709-POCLOUD,GRC-GFO_GRIDDED_AOD1B_JPL_MASCON_RL06.3,JPL GRACE/GRACE-FO Gridded-AOD1B Water-Equivalent-Thickness Surface-Mass Anomaly RL06.3 dataset for Tellus Level-3 mascon 0.5-degree grid,POCLOUD,2002-04-04T00:00:00.000Z,,-180.0,-89.5,180.0,89.5 -C2216863372-ORNL_CLOUD,Global_Phosphorus_Dist_Map_1223,Global Gridded Soil Phosphorus Distribution Maps at 0.5-degree Resolution,ORNL_CLOUD,1850-01-01T00:00:00.000Z,1850-12-31T23:59:59.999Z,-180.0,-90.0,180.0,90.0 -C3327154985-OB_CLOUD,HICO_L1,"ISS HICO Level-1B Data, version 2",OB_CLOUD,2009-09-25T00:00:00Z,2014-09-13T23:59:59Z,-180.0,-90.0,180.0,90.0 -C3555970700-OB_CLOUD,HICO_L2_OC,"ISS HICO Level-2 Regional Ocean Color (OC) Data, version 2018.0",OB_CLOUD,2009-09-25T00:00:00Z,2014-09-13T23:59:59Z,-180.0,-90.0,180.0,90.0 -C3266793157-NSIDC_CPRD,HMA2_DDSMET,"High Mountain Asia 4-km Dynamically Downscaled Meteorological Data, 2000-2015 V001",NSIDC_CPRD,2000-01-01T00:00:00.000Z,2016-01-01T23:59:59.999Z,43.179,10.34,108.829,45.569 -C3266793342-NSIDC_CPRD,HMA2_DSPAT,High Mountain Asia Daily 5 km Downscaled SPEAR Precipitation and Air Temperature Projections V001,NSIDC_CPRD,1990-01-01T00:00:00.000Z,2014-12-31T23:59:59.999Z,60.025,20.025,110.975,45.975 -C3266793605-NSIDC_CPRD,HMA2_GFTP,"High Mountain Asia 1 km MODIS-AIRS Gap-Filled Ground Temperatures and Permafrost Probability Maps, 2003-2016 V001",NSIDC_CPRD,2003-01-01T00:00:00.000Z,2016-12-31T23:59:59.999Z,63.0,22.7,106.7,45.0 -C3266793612-NSIDC_CPRD,HMA2_GGP,Global PyGEM-OGGM Glacier Projections with RCP and SSP Scenarios V001,NSIDC_CPRD,2000-01-01T00:00:00.000Z,2100-12-31T23:59:59.999Z,-180.0,-90.0,180.0,90.0 -C3266793968-NSIDC_CPRD,HMA2_LHI,High Mountain Asia Daily 5km Landslide Hazard Indicator V001,NSIDC_CPRD,1990-01-31T00:00:00.000Z,2019-01-01T23:59:59.999Z,60.0,20.0,111.0,46.0 -C3266794162-NSIDC_CPRD,HMA2_MATCHA,"High Mountain Asia 12 km Modeled Estimates of Aerosol Transport, Chemistry, and Deposition Reanalysis, 2003-2019 V001",NSIDC_CPRD,2003-01-01T00:00:00.000Z,2019-08-31T23:59:59.999Z,44.647,4.873,138.953,57.767 -C3266794310-NSIDC_CPRD,HMA2_WBP,"High Mountain Asia CMIP6 Monthly and Yearly Water Balance Projections, 2016-2099 for Parts of Afghanistan, Tajikistan, Kyrgyzstan, and Pakistan V001",NSIDC_CPRD,2016-01-01T00:00:00.000Z,2099-12-31T23:59:59.999Z,65.58334,31.08334,81.75,39.83334 -C3249536877-NSIDC_CPRD,HMA_DM_6H,High Mountain Asia 1 km 6-hourly Downscaled Meteorological Data 2003 to 2018 V001,NSIDC_CPRD,2003-01-01T00:00:00.000Z,2018-12-31T23:59:59.999Z,56.94,12.95,102.59,48.5 -C3249539331-NSIDC_CPRD,HMA_GL_RCP,High Mountain Asia PyGEM Glacier Projections with RCP Scenarios V001,NSIDC_CPRD,2000-10-01T00:00:00.000Z,2100-09-30T23:59:59.999Z,65.0,25.0,105.0,45.0 -C3249539474-NSIDC_CPRD,HMA_GL_RCPR,High Mountain Asia Rasterized PyGEM Glacier Projections with RCP Scenarios V001,NSIDC_CPRD,2000-10-01T00:00:00.000Z,2100-10-15T23:59:59.999Z,56.5,7.4,135.1,51.8 -C3249575587-NSIDC_CPRD,HMA_Glacier_dH,High Mountain Asia Gridded Glacier Thickness Change from Multi-Sensor DEMs V001,NSIDC_CPRD,1974-01-01T00:00:00.000Z,2017-12-31T23:59:59.999Z,75.4,27.4,92.9,34.4 -C3249540960-NSIDC_CPRD,HMA_LIS_LandSurfaceHydro,High Mountain Asia LIS Model Terrestrial Hydrological Parameters V001,NSIDC_CPRD,2003-02-01T00:00:00.000Z,2018-01-31T23:59:59.999Z,66.875,20.875,100.875,40.875 -C3252587866-NSIDC_CPRD,HMA_MAR3_5,High Mountain Asia MAR V3.5 Regional Climate Model Output V001,NSIDC_CPRD,2000-01-01T00:00:00.000Z,2015-12-31T23:59:59.999Z,65.2,22.41,87.92,38.84 -C3249543319-NSIDC_CPRD,HMA_RCMO_D,High Mountain Asia COAWST Daily 4km Regional Climate Model Simulations V001,NSIDC_CPRD,1999-10-01T00:00:00.000Z,2014-09-30T23:59:59.999Z,49.1684,20.96392,120.8316,46.34996 -C3249543522-NSIDC_CPRD,HMA_RCMO_M,High Mountain Asia COAWST Monthly 4km Regional Climate Model Simulations V001,NSIDC_CPRD,1999-10-01T00:00:00.000Z,2014-09-30T23:59:59.999Z,49.1684,20.96392,120.8316,46.34996 -C3272554109-NSIDC_CPRD,HMA_SR_D,High Mountain Asia UCLA Daily Snow Reanalysis V001,NSIDC_CPRD,1999-10-01T00:00:00.000Z,2017-09-30T23:59:59.999Z,60.0,27.0,105.0,45.0 -C2263336836-POCLOUD,HOMAGE_GGFO_L4_GOMA_Monthly_v01,GRACE/GRACE-FO Level-4 Monthly Global Ocean Mass Anomaly version 01 from NASA MEaSUREs HOMaGE project,POCLOUD,2002-04-17T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C3560326548-POCLOUD,HOMAGE_GGFO_MSC_CRI_SALGRD_v01,GRACE/GRACE-FO Level-4 Monthly Gravitational-Rotational-Deformation version 01 from NASA MEaSUREs HOMaGE,POCLOUD,2002-04-16T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2263337642-POCLOUD,HOMAGE_STERIC_OHC_TIME_SERIES_v01,HOMAGE Monthly Time series of global average steric height anomalies and ocean heat content estimates from gridded in-situ ocean observations version 01,POCLOUD,1978-01-15T00:00:00.000Z,,-180.0,-89.5,180.0,89.5 -C3534746191-OB_CLOUD,HYCOM_L4m_ELOEV,"HYCOM Global Mapped Eulerian and Lagrangian Oceanography and Ecology Variables Data, version 1",OB_CLOUD,2000-01-01T00:00:00.00Z,2009-12-31T23:59:59.99Z,-180.0,-90.0,180.0,90.0 -C2499940517-POCLOUD,IASI_SST_METOP_A-OSISAF-L2P-v1.0,GHRSST Level 2P Global skin Sea Surface Temperature from the Infrared Atmospheric Sounding Interferometer (IASI) on the Metop-A satellite (GDS V2) produced by OSI SAF,POCLOUD,2014-11-20T04:44:55.000Z,2016-02-23T04:23:53.000Z,-180.0,-90.0,180.0,90.0 -C2036877829-POCLOUD,IASI_SST_METOP_B-OSISAF-L2P-v1.0,GHRSST Level 2P Global skin Sea Surface Temperature from the Infrared Atmospheric Sounding Interferometer (IASI) on the Metop-B satellite (GDS V2) produced by OSI SAF,POCLOUD,2016-01-07T03:35:55.000Z,,-180.0,-90.0,180.0,90.0 -C3187378850-NSIDC_CPRD,IDBMG4,IceBridge BedMachine Greenland V005,NSIDC_CPRD,1993-01-01T00:00:00.000Z,2021-12-31T23:59:59.999Z,-80.0,60.0,10.0,90.0 -C3188457225-NSIDC_CPRD,ILATMGR,IceBridge ATM Waveform Derived Snow Effective Grain Radius V001,NSIDC_CPRD,2017-07-17T00:00:00.000Z,2019-09-11T23:59:59.999Z,-180.0,60.0,180.0,90.0 -C3187451357-NSIDC_CPRD,IRACC1B,IceBridge Accumulation Radar L1B Geolocated Radar Echo Strength Profiles V002,NSIDC_CPRD,2013-03-21T00:00:00.000Z,2018-05-01T23:59:59.999Z,-180.0,-90.0,180.0,90.0 -C3187451781-NSIDC_CPRD,IRKUB1B,IceBridge Ku-Band Radar L1B Geolocated Radar Echo Strength Profiles V002,NSIDC_CPRD,2012-10-12T00:00:00.000Z,2016-11-18T23:59:59.999Z,-180.0,-90.0,180.0,90.0 -C3187452533-NSIDC_CPRD,IRMCR1B,IceBridge MCoRDS L1B Geolocated Radar Echo Strength Profiles V002,NSIDC_CPRD,2009-10-16T00:00:00.000Z,2019-11-20T23:59:59.999Z,-180.0,-90.0,180.0,83.1 -C3187453659-NSIDC_CPRD,IRSNO1B,IceBridge Snow Radar L1B Geolocated Radar Echo Strength Profiles V002,NSIDC_CPRD,2009-03-31T00:00:00.000Z,2021-05-13T23:59:59.999Z,-180.0,-90.0,180.0,90.0 -C3205192843-NSIDC_CPRD,IRTIT3,IceBridge Radar L3 Tomographic Ice Thickness V002,NSIDC_CPRD,2010-11-20T00:00:00.000Z,2013-04-20T23:59:59.999Z,-180.0,-90.0,180.0,83.0 -C3263544354-NSIDC_CPRD,IS2SITDAT4,ICESat-2 L4 Along-Track Sea Ice Thickness V001,NSIDC_CPRD,2018-10-14T00:00:00.000Z,2022-05-01T23:59:59.999Z,-180.0,60.0,180.0,88.0 -C3206550748-NSIDC_CPRD,IS2SITMOGR4,ICESat-2 L4 Monthly Gridded Sea Ice Thickness V003,NSIDC_CPRD,2018-11-01T00:00:00.000Z,2024-04-30T23:59:59.999Z,-180.0,30.0,180.0,88.0 -C3207121268-NSIDC_CPRD,ISSITGR4,ICESat L4 Seasonal Gridded Sea Ice Thickness V001,NSIDC_CPRD,2003-02-20T00:00:00.000Z,2008-03-21T23:59:59.999Z,-180.0,66.0,180.0,86.0 -C2491735244-POCLOUD,JASON-1_JMR_ENH,JASON-1 ENHANCED JASON MICROWAVE RADIOMETER,POCLOUD,2002-01-15T06:07:00.000Z,2012-02-11T17:50:28.000Z,-180.0,-66.15,180.0,66.15 -C1940470304-POCLOUD,JASON-1_L2_OST_GPN_E,Jason-1 GDR version E NetCDF,POCLOUD,2002-01-14T12:00:00.000Z,2012-03-03T12:59:12.000Z,-180.0,-66.15,180.0,66.15 -C2491731827-POCLOUD,JASON-1_L2_OST_GPN_E_GEODETIC,Jason-1 GDR version E NetCDF Geodetic,POCLOUD,2012-05-07T16:00:00.000Z,2013-06-21T00:56:55.000Z,-180.0,-66.15,180.0,66.15 -C1940471193-POCLOUD,JASON-1_L2_OST_GPR_E,Jason-1 GDR SSHA version E NetCDF,POCLOUD,2002-01-14T12:00:00.000Z,2012-03-03T12:59:12.000Z,-180.0,-66.15,180.0,66.15 -C2491731829-POCLOUD,JASON-1_L2_OST_GPR_E_GEODETIC,Jason-1 GDR SSHA version E NetCDF Geodetic,POCLOUD,2012-05-07T16:00:00.000Z,2013-06-21T00:56:55.000Z,-180.0,-66.15,180.0,66.15 -C1940472420-POCLOUD,JASON-1_L2_OST_GPS_E,Jason-1 SGDR version E NetCDF,POCLOUD,2002-01-14T12:00:00.000Z,2012-03-03T12:59:12.000Z,-180.0,-66.15,180.0,66.15 -C2491731831-POCLOUD,JASON-1_L2_OST_GPS_E_GEODETIC,Jason-1 SGDR version E NetCDF Geodetic,POCLOUD,2012-05-07T16:00:00.000Z,2013-06-21T00:56:55.000Z,-180.0,-66.15,180.0,66.15 -C2205122298-POCLOUD,JASON_3_L2_OST_OGDR_GPS,Jason-3 GPS based orbit and SSHA OGDR,POCLOUD,2020-10-29T12:14:23.000Z,,-180.0,-66.0,180.0,66.0 -C2619443888-POCLOUD,JASON_CS_S6A_L1A_ALT_HR_NTC_F08,Sentinel-6A MF Jason-CS L1A P4 Altimeter High Resolution (HR) NTC Intermediate Outputs with Instrument Calibrations F08,POCLOUD,2020-11-30T14:26:00.822Z,,-180.0,-66.15,180.0,66.15 -C1968979558-POCLOUD,JASON_CS_S6A_L1A_ALT_HR_STC_F,Sentinel-6A MF Jason-CS L1A P4 Altimeter High Resolution (HR) STC Intermediate Outputs with Instrument Calibrations,POCLOUD,2020-12-07T01:15:01.314Z,,-180.0,-66.15,180.0,66.15 -C2619443894-POCLOUD,JASON_CS_S6A_L1B_ALT_HR_NTC_F08,Sentinel-6A MF Jason-CS L1B P4 Altimeter High Resolution (HR) NTC Geolocated Waveforms F08,POCLOUD,2020-11-30T14:26:00.875Z,,-180.0,-66.15,180.0,66.15 -C1968979588-POCLOUD,JASON_CS_S6A_L1B_ALT_HR_STC_F,Sentinel-6A MF Jason-CS L1B P4 Altimeter High Resolution (HR) STC Geolocated Waveforms,POCLOUD,2020-12-07T01:15:01.367Z,,-180.0,-66.15,180.0,66.15 -C2619443901-POCLOUD,JASON_CS_S6A_L1B_ALT_LR_NTC_F08,Sentinel-6A MF Jason-CS L1B P4 Altimeter Low Resolution (LR) NTC Geolocated Waveforms F08,POCLOUD,2020-11-30T14:26:00.843Z,,-180.0,-66.15,180.0,66.15 -C1968980593-POCLOUD,JASON_CS_S6A_L1B_ALT_LR_STC_F,Sentinel-6A MF Jason-CS L1B P4 Altimeter Low Resolution (LR) STC Geolocated Waveforms,POCLOUD,2020-12-07T01:15:01.335Z,,-180.0,-66.15,180.0,66.15 -C2619443911-POCLOUD,JASON_CS_S6A_L2P_ALT_HR_OST_NTC_F08,Sentinel-6A MF Jason-CS L2P P4 Altimeter High Resolution (HR) NTC Ocean Surface Topography F08,POCLOUD,2020-11-30T00:00:00.000Z,,-180.0,-66.15,180.0,66.15 -C2619443920-POCLOUD,JASON_CS_S6A_L2P_ALT_LR_OST_NTC_F08,Sentinel-6A MF Jason-CS L2P P4 Altimeter Low Resolution (LR) NTC Ocean Surface Topography F08,POCLOUD,2020-11-30T00:00:00.000Z,,-180.0,-66.15,180.0,66.15 -C1968980549-POCLOUD,JASON_CS_S6A_L2_ALT_HR_RED_OST_NRT_F,Sentinel-6A MF Jason-CS L2 P4 Altimeter High Resolution (HR) NRT Reduced Ocean Surface Topography ,POCLOUD,2020-12-07T14:20:01.399Z,,-180.0,-66.15,180.0,66.15 -C2619443925-POCLOUD,JASON_CS_S6A_L2_ALT_HR_RED_OST_NTC_F08,Sentinel-6A MF Jason-CS L2 P4 Altimeter High Resolution (HR) NTC Reduced Ocean Surface Topography F08,POCLOUD,2020-11-30T00:00:00.000Z,,-180.0,-66.15,180.0,66.15 -C2619443946-POCLOUD,JASON_CS_S6A_L2_ALT_HR_RED_OST_NTC_F08_UNVALIDATED,Sentinel-6A MF Jason-CS L2 P4 Altimeter High Resolution (HR) NTC Reduced Ocean Surface Topography (Unvalidated) F08,POCLOUD,2020-11-30T14:26:00.875Z,,-180.0,-66.15,180.0,66.15 -C1968979550-POCLOUD,JASON_CS_S6A_L2_ALT_HR_RED_OST_STC_F,Sentinel-6A MF Jason-CS L2 P4 Altimeter High Resolution (HR) STC Reduced Ocean Surface Topography ,POCLOUD,2020-12-07T01:15:01.367Z,,-180.0,-66.15,180.0,66.15 -C1968979566-POCLOUD,JASON_CS_S6A_L2_ALT_HR_STD_OST_NRT_F,Sentinel-6A MF Jason-CS L2 P4 Altimeter High Resolution (HR) NRT Ocean Surface Topography,POCLOUD,2020-12-07T14:20:01.399Z,,-180.0,-66.15,180.0,66.15 -C2619443963-POCLOUD,JASON_CS_S6A_L2_ALT_HR_STD_OST_NTC_F08,Sentinel-6A MF Jason-CS L2 P4 Altimeter High Resolution (HR) NTC Ocean Surface Topography F08,POCLOUD,2020-11-30T00:00:00.000Z,,-180.0,-66.15,180.0,66.15 -C2619443979-POCLOUD,JASON_CS_S6A_L2_ALT_HR_STD_OST_NTC_F08_UNVALIDATED,Sentinel-6A MF Jason-CS L2 P4 Altimeter High Resolution (HR) NTC Ocean Surface Topography (Unvalidated) F08,POCLOUD,2020-11-30T14:26:00.875Z,,-180.0,-66.15,180.0,66.15 -C1968980583-POCLOUD,JASON_CS_S6A_L2_ALT_HR_STD_OST_STC_F,Sentinel-6A MF Jason-CS L2 P4 Altimeter High Resolution (HR) STC Ocean Surface Topography ,POCLOUD,2020-12-07T01:15:01.367Z,,-180.0,-66.15,180.0,66.15 -C1968980576-POCLOUD,JASON_CS_S6A_L2_ALT_LR_RED_OST_NRT_F,Sentinel-6A MF Jason-CS L2 P4 Altimeter Low Resolution (LR) NRT Reduced Ocean Surface Topography ,POCLOUD,2020-12-07T13:34:56.105Z,,-180.0,-66.15,180.0,66.15 -C2619443998-POCLOUD,JASON_CS_S6A_L2_ALT_LR_RED_OST_NTC_F08,Sentinel-6A MF Jason-CS L2 P4 Altimeter Low Resolution (LR) NTC Reduced Ocean Surface Topography F08,POCLOUD,2020-11-30T00:00:00.000Z,,-180.0,-66.15,180.0,66.15 -C2619444006-POCLOUD,JASON_CS_S6A_L2_ALT_LR_RED_OST_NTC_F08_UNVALIDATED,Sentinel-6A MF Jason-CS L2 P4 Altimeter Low Resolution (LR) NTC Reduced Ocean Surface Topography (Unvalidated) F08,POCLOUD,2020-11-30T14:26:00.843Z,,-180.0,-66.15,180.0,66.15 -C1968979561-POCLOUD,JASON_CS_S6A_L2_ALT_LR_RED_OST_STC_F,Sentinel-6A MF Jason-CS L2 P4 Altimeter Low Resolution (LR) STC Reduced Ocean Surface Topography ,POCLOUD,2020-12-07T01:15:01.335Z,,-180.0,-66.15,180.0,66.15 -C1968979597-POCLOUD,JASON_CS_S6A_L2_ALT_LR_STD_OST_NRT_F,Sentinel-6A MF Jason-CS L2 P4 Altimeter Low Resolution (LR) NRT Ocean Surface Topography ,POCLOUD,2020-11-30T00:00:00.000Z,,-180.0,-66.15,180.0,66.15 -C2619444013-POCLOUD,JASON_CS_S6A_L2_ALT_LR_STD_OST_NTC_F08,Sentinel-6A MF Jason-CS L2 P4 Altimeter Low Resolution (LR) NTC Ocean Surface Topography F08,POCLOUD,2020-11-30T00:00:00.000Z,,-180.0,-66.15,180.0,66.15 -C2619444025-POCLOUD,JASON_CS_S6A_L2_ALT_LR_STD_OST_NTC_F08_UNVALIDATED,Sentinel-6A MF Jason-CS L2 P4 Altimeter Low Resolution (LR) NTC Ocean Surface Topography (Unvalidated) F08,POCLOUD,2020-11-30T14:26:00.843Z,,-180.0,-66.15,180.0,66.15 -C1968980609-POCLOUD,JASON_CS_S6A_L2_ALT_LR_STD_OST_STC_F,Sentinel-6A MF Jason-CS L2 P4 Altimeter Low Resolution (LR) STC Ocean Surface Topography ,POCLOUD,2020-12-07T01:15:01.335Z,,-180.0,-66.15,180.0,66.15 -C1968979997-POCLOUD,JASON_CS_S6A_L2_AMR_RAD_NRT,Sentinel-6A MF Jason-CS L2 Advanced Microwave Radiometer (AMR-C) NRT Geophysical Parameters,POCLOUD,2020-11-28T11:12:34.901Z,,-180.0,-66.15,180.0,66.15 -C2623720885-POCLOUD,JASON_CS_S6A_L2_AMR_RAD_NTC_F08,Sentinel-6A MF Jason-CS L2 Advanced Microwave Radiometer (AMR-C) NTC Geophysical Parameters F08,POCLOUD,2020-11-30T00:00:00.000Z,,-180.0,-66.15,180.0,66.15 -C2623720879-POCLOUD,JASON_CS_S6A_L2_AMR_RAD_NTC_F08_UNVALIDATED,Sentinel-6A MF Jason-CS L2 Advanced Microwave Radiometer (AMR-C) NTC Geophysical Parameters (Unvalidated) F08,POCLOUD,2020-11-28T11:12:34.901Z,,-180.0,-66.15,180.0,66.15 -C1968979762-POCLOUD,JASON_CS_S6A_L2_AMR_RAD_STC,Sentinel-6A MF Jason-CS L2 Advanced Microwave Radiometer (AMR-C) STC Geophysical Parameters,POCLOUD,2020-12-06T22:42:29.275Z,,-180.0,-66.15,180.0,66.15 -C2627806996-POCLOUD,JASON_CS_S6A_L3_ALT_HR_OST_NTC_F08,Sentinel-6A MF Jason-CS L3 P4 Altimeter High Resolution (HR) NTC Ocean Surface Topography (Unfiltered) Version F08,POCLOUD,2020-11-30T00:00:00.000Z,,-180.0,-66.15,180.0,66.15 -C2627807006-POCLOUD,JASON_CS_S6A_L3_ALT_LR_OST_NTC_F08,Sentinel-6A MF Jason-CS L3 P4 Altimeter Low Resolution (LR) NTC Ocean Surface Topography (Unfiltered) Version F08,POCLOUD,2020-11-30T00:00:00.000Z,,-180.0,-66.15,180.0,66.15 -C2491724765-POCLOUD,JPL_RECON_GMSL,Reconstructed Global Mean Sea Level 1900-2018,POCLOUD,1900-01-01T00:00:00.000Z,2018-12-31T23:59:59.000Z,-180.0,-89.5,180.0,89.5 -C2210941541-LARC_ASDC,KORUSAQ_Model_Data,KORUS-AQ Ancillary Model Data Products ,LARC_ASDC,2016-04-30T00:00:00.000Z,2016-06-11T23:59:59.999Z,-180.0,25.0,180.0,67.0 -C2050135480-POCLOUD,L3S_LEO_AM-STAR-v2.80,GHRSST NOAA/STAR ACSPO v2.80 0.02 degree L3S Dataset from mid-Morning LEO Satellites (GDS v2),POCLOUD,2006-12-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2805339147-POCLOUD,L3S_LEO_DY-STAR-v2.81,GHRSST NOAA/STAR ACSPO v2.81 0.02 degree L3S Daily Dataset from LEO Satellites,POCLOUD,2000-02-24T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2805331435-POCLOUD,L3S_LEO_PM-STAR-v2.81,GHRSST NOAA/STAR ACSPO v2.81 0.02 degree L3S Dataset from Afternoon LEO Satellites,POCLOUD,2002-07-04T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2814094878-LPDAAC_ECS,LPJ_L2_SSREF,LPJ-PROSAIL L2 Global Simulated Dynamic Surface Reflectance V002,LPDAAC_ECS,2000-01-01T00:00:00.000Z,2022-12-31T23:59:59.000Z,-180.0,-90.0,180.0,90.0 -C2801693973-LPDAAC_ECS,LPJ_L2_SSREF,LPJ-PROSAIL L2 Global Simulated Dynamic Surface Reflectance V001,LPDAAC_ECS,2020-01-01T00:00:00.000Z,2020-12-31T23:59:59.000Z,-180.0,-90.0,180.0,90.0 -C2756847743-ORNL_CLOUD,LUH2_GCB2019_1851,"LUH2-GCB2019: Land-Use Harmonization 2 Update for the Global Carbon Budget, 850-2019",ORNL_CLOUD,0850-01-01T00:00:00.000Z,2019-12-31T23:59:59.999Z,-180.0,-90.0,180.0,90.0 -C3271469628-LARC_ASDC,MAIA_ANC_SURFACEMONITOR_PM_2.5_SPECIES,Ancillary speciated PM data from the MAIA Surface Monitor Network,LARC_ASDC,2021-01-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C3271469675-LARC_ASDC,MAIA_ANC_SURFACEMONITOR_PM_TOTAL,Ancillary total PM data from the MAIA Surface Monitor Network,LARC_ASDC,2021-01-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2585741154-OB_DAAC,MERGED_S3_OLCI_L3b_CYANTC,"Merged Sentinel-3A and Sentinel-3B OLCI Global Binned CyAN Project, True Color (TC) Data, version 5.0",OB_DAAC,2016-04-25T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3433948237-OB_CLOUD,MERGED_S3_OLCI_L3b_ILW,"Merged Sentinel-3A and Sentinel-3B OLCI Regional Binned Inland Waters (ILW) Data, version 5.0",OB_CLOUD,2016-04-25T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3416412382-OB_CLOUD,MERGED_S3_OLCI_L3m_CYAN,"Merged Sentinel-3A and Sentinel-3B OLCI Regional Mapped Cyanobacteria Index (CI) Data, version 6.0",OB_CLOUD,2016-04-25T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3416412386-OB_CLOUD,MERGED_S3_OLCI_L3m_CYANTC,"Merged Sentinel-3A and Sentinel-3B OLCI Regional Mapped CyAN Project, True Color (TC) Data, version 6.0",OB_CLOUD,2016-04-25T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3433948350-OB_CLOUD,MERGED_S3_OLCI_L3m_ILW,"Merged Sentinel-3A and Sentinel-3B OLCI Regional Mapped Inland Waters (ILW) Data, version 5.0",OB_CLOUD,2016-04-25T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C2901524183-POCLOUD,MERGED_TP_J1_OSTM_OST_ALL_V52,Integrated Multi-Mission Ocean Altimeter Data for Climate Research complete time series Version 5.2,POCLOUD,1992-09-25T00:00:00.000Z,,-180.0,-66.0,180.0,66.0 -C2901523432-POCLOUD,MERGED_TP_J1_OSTM_OST_CYCLES_V52,Integrated Multi-Mission Ocean Altimeter Data for Climate Research Version 5.2,POCLOUD,1992-09-25T00:00:00.000Z,,-180.0,-66.0,180.0,66.0 -C3281901057-OB_CLOUD,MERIS_L2_FRS_IOP,"ENVISAT MERIS Level-2 Regional Full Resolution, Full Swath (FRS) Inherent Optical Properties (IOP) Data, version 2022.0",OB_CLOUD,2002-03-21T00:00:00Z,2012-05-09T00:00:00Z,-180.0,-90.0,180.0,90.0 -C3281778845-OB_CLOUD,MERIS_L2_FRS_OC,"ENVISAT MERIS Level-2 Regional Full Resolution, Full Swath (FRS) Ocean Color (OC) Data, version 2022.0",OB_CLOUD,2002-03-21T00:00:00Z,2012-05-09T00:00:00Z,-180.0,-90.0,180.0,90.0 -C3433948159-OB_CLOUD,MERIS_L2_ILW,"ENVISAT MERIS Regional Inland Waters (ILW) Data, version 5.0",OB_CLOUD,2002-03-21T00:00:00Z,2012-05-09T00:00:00Z,-180.0,-90.0,180.0,90.0 -C3281901072-OB_CLOUD,MERIS_L2_RR_IOP,"ENVISAT MERIS Level-2 Regional Reduced Resolution (RR) Inherent Optical Properties (IOP) Data, version 2022.0",OB_CLOUD,2002-03-21T00:00:00Z,2012-05-09T00:00:00Z,-180.0,-90.0,180.0,90.0 -C3281778850-OB_CLOUD,MERIS_L2_RR_OC,"ENVISAT MERIS Level-2 Regional Reduced Resolution (RR) Ocean Color (OC) Data, version 2022.0",OB_CLOUD,2002-03-21T00:00:00Z,2012-05-09T00:00:00Z,-180.0,-90.0,180.0,90.0 -C3281778854-OB_CLOUD,MERIS_L3b_CHL,"ENVISAT MERIS Level-3 Global Binned Chlorophyll (CHL) Data, version 2022.0",OB_CLOUD,2002-03-21T00:00:00Z,2012-05-09T00:00:00Z,-180.0,-90.0,180.0,90.0 -C2561580568-OB_DAAC,MERIS_L3b_CYAN,"ENVISAT MERIS Global Binned Cyanobacteria Index (CI) Data, version 5.0",OB_DAAC,2002-03-21T00:00:00Z,2012-05-09T00:00:00Z,-180.0,-90.0,180.0,90.0 -C2561580570-OB_DAAC,MERIS_L3b_CYANTC,"ENVISAT MERIS Global Binned CyAN Project, True Color (TC) Data, version 5.0",OB_DAAC,2002-03-21T00:00:00Z,2012-05-09T00:00:00Z,-180.0,-90.0,180.0,90.0 -C3433948164-OB_CLOUD,MERIS_L3b_ILW,"ENVISAT MERIS Regional Binned Inland Waters (ILW) Data, version 5.0",OB_CLOUD,2002-03-21T00:00:00Z,2012-05-09T00:00:00Z,-180.0,-90.0,180.0,90.0 -C3281778868-OB_CLOUD,MERIS_L3b_IOP,"ENVISAT MERIS Level-3 Global Binned Inherent Optical Properties (IOP) Data, version 2022.0",OB_CLOUD,2002-03-21T00:00:00Z,2012-05-09T00:00:00Z,-180.0,-90.0,180.0,90.0 -C3281778872-OB_CLOUD,MERIS_L3b_KD,"ENVISAT MERIS Level-3 Global Binned Diffuse Attenuation Coefficient for Downwelling Irradiance (KD) Data, version 2022.0",OB_CLOUD,2002-03-21T00:00:00Z,2012-05-09T00:00:00Z,-180.0,-90.0,180.0,90.0 -C3281778878-OB_CLOUD,MERIS_L3b_PAR,"ENVISAT MERIS Level-3 Global Binned Photosynthetically Available Radiation (PAR) Data, version 2022.0",OB_CLOUD,2002-03-21T00:00:00Z,2012-05-09T00:00:00Z,-180.0,-90.0,180.0,90.0 -C3281778885-OB_CLOUD,MERIS_L3b_PIC,"ENVISAT MERIS Level-3 Global Binned Particulate Inorganic Carbon (PIC) Data, version 2022.0",OB_CLOUD,2002-03-21T00:00:00Z,2012-05-09T00:00:00Z,-180.0,-90.0,180.0,90.0 -C3281778891-OB_CLOUD,MERIS_L3b_POC,"ENVISAT MERIS Level-3 Global Binned Particulate Organic Carbon (POC) Data, version 2022.0",OB_CLOUD,2002-03-21T00:00:00Z,2012-05-09T00:00:00Z,-180.0,-90.0,180.0,90.0 -C3281778899-OB_CLOUD,MERIS_L3b_RRS,"ENVISAT MERIS Level-3 Global Binned Remote-Sensing Reflectance (RRS) Data, version 2022.0",OB_CLOUD,2002-03-21T00:00:00Z,2012-05-09T00:00:00Z,-180.0,-90.0,180.0,90.0 -C3281778904-OB_CLOUD,MERIS_L3m_CHL,"ENVISAT MERIS Level-3 Global Mapped Chlorophyll (CHL) Data, version 2022.0",OB_CLOUD,2002-03-21T00:00:00Z,2012-05-09T00:00:00Z,-180.0,-90.0,180.0,90.0 -C3416412319-OB_CLOUD,MERIS_L3m_CYAN,"ENVISAT MERIS Regional Mapped Cyanobacteria Index (CI) Data, version 6.0",OB_CLOUD,2002-03-21T00:00:00Z,2012-05-09T00:00:00Z,-180.0,-90.0,180.0,90.0 -C3416412340-OB_CLOUD,MERIS_L3m_CYANTC,"ENVISAT MERIS Regional Mapped CyAN Project, True Color (TC) Data, version 6.0",OB_CLOUD,2002-03-21T00:00:00Z,2012-05-09T00:00:00Z,-180.0,-90.0,180.0,90.0 -C3433948168-OB_CLOUD,MERIS_L3m_ILW,"ENVISAT MERIS Regional Mapped Inland Waters (ILW) Data, version 5.0",OB_CLOUD,2002-03-21T00:00:00Z,2012-05-09T00:00:00Z,-180.0,-90.0,180.0,90.0 -C3281778909-OB_CLOUD,MERIS_L3m_IOP,"ENVISAT MERIS Level-3 Global Mapped Inherent Optical Properties (IOP) Data, version 2022.0",OB_CLOUD,2002-03-21T00:00:00Z,2012-05-09T00:00:00Z,-180.0,-90.0,180.0,90.0 -C3281778916-OB_CLOUD,MERIS_L3m_KD,"ENVISAT MERIS Level-3 Global Mapped Diffuse Attenuation Coefficient for Downwelling Irradiance (KD) Data, version 2022.0",OB_CLOUD,2002-03-21T00:00:00Z,2012-05-09T00:00:00Z,-180.0,-90.0,180.0,90.0 -C3281778919-OB_CLOUD,MERIS_L3m_PAR,"ENVISAT MERIS Level-3 Global Mapped Photosynthetically Available Radiation (PAR) Data, version 2022.0",OB_CLOUD,2002-03-21T00:00:00Z,2012-05-09T00:00:00Z,-180.0,-90.0,180.0,90.0 -C3281778924-OB_CLOUD,MERIS_L3m_PIC,"ENVISAT MERIS Level-3 Global Mapped Particulate Inorganic Carbon (PIC) Data, version 2022.0",OB_CLOUD,2002-03-21T00:00:00Z,2012-05-09T00:00:00Z,-180.0,-90.0,180.0,90.0 -C3281778927-OB_CLOUD,MERIS_L3m_POC,"ENVISAT MERIS Level-3 Global Mapped Particulate Organic Carbon (POC) Data, version 2022.0",OB_CLOUD,2002-03-21T00:00:00Z,2012-05-09T00:00:00Z,-180.0,-90.0,180.0,90.0 -C3281778928-OB_CLOUD,MERIS_L3m_RRS,"ENVISAT MERIS Level-3 Global Mapped Remote-Sensing Reflectance (RRS) Data, version 2022.0",OB_CLOUD,2002-03-21T00:00:00Z,2012-05-09T00:00:00Z,-180.0,-90.0,180.0,90.0 -C3467581033-OB_CLOUD,MERIS_L4b_AVW,"ENVISAT MERIS Level-4 Global Binned Apparent Visible Wavelength (AVW) Data, version 2022.0",OB_CLOUD,2002-03-21T00:00:00Z,2012-05-09T00:00:00Z,-180.0,-90.0,180.0,90.0 -C3467581108-OB_CLOUD,MERIS_L4b_CARBON,"ENVISAT MERIS Level-4 Global Binned Carbon Data, version 2022.0",OB_CLOUD,2002-03-21T00:00:00Z,2012-05-09T00:00:00Z,-180.0,-90.0,180.0,90.0 -C3288082129-OB_CLOUD,MERIS_L4b_GSM,"ENVISAT MERIS Level-4 Global Binned Garver-Siegel-Maritorena Model (GSM) Data, version 2022.0",OB_CLOUD,2002-03-21T00:00:00Z,2012-05-09T00:00:00Z,-180.0,-90.0,180.0,90.0 -C3467581150-OB_CLOUD,MERIS_L4m_AVW,"ENVISAT MERIS Level-4 Global Mapped Apparent Visible Wavelength (AVW) Data, version 2022.0",OB_CLOUD,2002-03-21T00:00:00Z,2012-05-09T00:00:00Z,-180.0,-90.0,180.0,90.0 -C3467581216-OB_CLOUD,MERIS_L4m_CARBON,"ENVISAT MERIS Level-4 Global Mapped Carbon Data, version 2022.0",OB_CLOUD,2002-03-21T00:00:00Z,2012-05-09T00:00:00Z,-180.0,-90.0,180.0,90.0 -C3288082302-OB_CLOUD,MERIS_L4m_GSM,"ENVISAT MERIS Level-4 Global Mapped Garver-Siegel-Maritorena Model (GSM) Data, version 2022.0",OB_CLOUD,2002-03-21T00:00:00Z,2012-05-09T00:00:00Z,-180.0,-90.0,180.0,90.0 -C2854334599-LARC_CLOUD,MI1B2E,MISR Level 1B2 Ellipsoid Data V004,LARC_CLOUD,1999-12-18T00:00:00.000Z,,,,, -C2854334658-LARC_CLOUD,MI1B2T,MISR Level 1B2 Terrain Data V004,LARC_CLOUD,1999-12-18T00:00:00.000Z,,,,, -C2854338720-LARC_CLOUD,MI3DAENF,MISR Level 3 FIRSTLOOK Global Aerosol product in netCDF format covering a day V002,LARC_CLOUD,1999-12-18T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2854338447-LARC_CLOUD,MI3DALNF,MISR Level 3 FIRSTLOOK Global Albedo product in netCDF format covering a day V002,LARC_CLOUD,1999-12-18T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2854338573-LARC_CLOUD,MI3DCDNF,MISR Level 3 FIRSTLOOK Global Cloud public Product in netCDF covering a day V002,LARC_CLOUD,1999-12-18T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2873768588-LARC_CLOUD,MI3DCLDN,MISR Level 3 Global Cloud public Product in netCDF format covering a day V002,LARC_CLOUD,1999-12-18T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2854338930-LARC_CLOUD,MI3DLSNF,MISR Level 3 FIRSTLOOK Global Land product in netCDF format covering a day V002,LARC_CLOUD,1999-12-18T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2854339684-LARC_CLOUD,MI3MAENF,MISR Level 3 FIRSTLOOK Global Aerosol product in netCDF format covering a month V002,LARC_CLOUD,1999-12-18T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2854339491-LARC_CLOUD,MI3MALNF,MISR Level 3 FIRSTLOOK Global Albedo product in netCDF format covering a month V002,LARC_CLOUD,1999-12-18T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2854339578-LARC_CLOUD,MI3MCDNF,MISR Level 3 FIRSTLOOK Global Cloud public Product in netCDF covering a month V002,LARC_CLOUD,1999-12-18T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2873768742-LARC_CLOUD,MI3MCLDN,MISR Level 3 Global Cloud public Product in netCDF format covering a month V002,LARC_CLOUD,1999-12-18T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C3387017483-LARC_CLOUD,MI3MCMVN,MISR Level 3 Cloud Motion Vector monthly Product in netCDF format V002,LARC_CLOUD,1999-12-18T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2854339835-LARC_CLOUD,MI3MLSNF,MISR Level 3 FIRSTLOOK Global Land product in netCDF format covering a month V002,LARC_CLOUD,1999-12-18T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2873769069-LARC_CLOUD,MI3QCLDN,MISR Level 3 Global Cloud public Product in netCDF format covering a quarter V002,LARC_CLOUD,1999-12-18T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C3387017591-LARC_CLOUD,MI3QCMVN,MISR Level 3 Cloud Motion Vector quarterly Product in netCDF format V002,LARC_CLOUD,1999-12-18T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2873769466-LARC_CLOUD,MI3YCLDN,MISR Level 3 Global Cloud public Product in netCDF format covering a year V002,LARC_CLOUD,1999-12-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C3417583924-LARC_CLOUD,MI3YCMVN,MISR Level 3 Cloud Motion Vector yearly Product in netCDF format V002,LARC_CLOUD,1999-12-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2854334537-LARC_CLOUD,MIB2GEOP,MISR Geometric Parameters V003,LARC_CLOUD,1999-12-18T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2854336973-LARC_CLOUD,MIL2ASAE,MISR Level 2 Aerosol parameters V003,LARC_CLOUD,1999-12-18T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2854335482-LARC_CLOUD,MIL2ASLF,MISR Level 2 FIRSTLOOK Surface parameters V002,LARC_CLOUD,1999-12-18T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2854337125-LARC_CLOUD,MIL2ASLS,MISR Level 2 Surface parameters V003,LARC_CLOUD,2000-03-01T01:06:13.000Z,,-180.0,-90.0,180.0,90.0 -C2854335355-LARC_CLOUD,MIL2TCCF,MISR Level 2 FIRSTLOOK TOA/Cloud Classifier parameters V002,LARC_CLOUD,1999-12-18T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2854336257-LARC_CLOUD,MIL2TCSP,MISR Level 2 TOA/Cloud Height and Motion parameters V002,LARC_CLOUD,1999-12-18T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2873769854-LARC_CLOUD,MIL3DAEN,MISR Level 3 Component Global Aerosol product in netCDF format covering a day V004,LARC_CLOUD,1999-12-18T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2873770629-LARC_CLOUD,MIL3DALN,MISR Level 3 Component Global Albedo product in netCDF format covering a day V006,LARC_CLOUD,1999-12-18T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2873771301-LARC_CLOUD,MIL3DLSN,MISR Level 3 Component Global Land product in netCDF format covering a day V004,LARC_CLOUD,1999-12-18T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2873771604-LARC_CLOUD,MIL3MAEN,MISR Level 3 Component Global Aerosol product in netCDF format covering a month V004,LARC_CLOUD,1999-12-18T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2873772253-LARC_CLOUD,MIL3MALN,MISR Level 3 Component Global Albedo product in netCDF format covering a month V006,LARC_CLOUD,1999-12-18T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2873772960-LARC_CLOUD,MIL3MJTA,MISR Level 3 Global Joint Aerosol monthly product V002,LARC_CLOUD,2000-03-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2873773072-LARC_CLOUD,MIL3MLSN,MISR Level 3 Component Global Land product in netCDF format covering a month V004,LARC_CLOUD,1999-12-18T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2873773600-LARC_CLOUD,MIL3QAEN,MISR Level 3 Component Global Aerosol seasonal product in netCDF format V004,LARC_CLOUD,1999-12-18T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2873773976-LARC_CLOUD,MIL3QALN,MISR Level 3 Component Global Albedo seasonal product in netCDF format V006,LARC_CLOUD,1999-12-18T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2873774574-LARC_CLOUD,MIL3QLSN,MISR Level 3 Component Global Land seasonal product in netCDF format V004,LARC_CLOUD,1999-12-18T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2873774819-LARC_CLOUD,MIL3YAEN,MISR Level 3 Component Global Aerosol product in netCDF format covering a year V004,LARC_CLOUD,1999-12-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2873775262-LARC_CLOUD,MIL3YALN,MISR Level 3 Component Global Albedo product in netCDF format covering a year V006,LARC_CLOUD,1999-12-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2873775922-LARC_CLOUD,MIL3YLSN,MISR Level 3 Component Global Land product in netCDF format covering a year V004,LARC_CLOUD,1999-12-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2854335241-LARC_CLOUD,MIRCCMF,MISR FIRSTLOOK radiometric camera-by-camera Cloud Mask V002,LARC_CLOUD,1999-12-18T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2006849995-POCLOUD,MITgcm_LLC4320_Pre-SWOT_JPL_L4_ACC_SMST_v1.0,Southern Ocean Pre-SWOT Level-4 Hourly MITgcm LLC4320 Native Grid 2km Oceanographic Dataset Version 1.0,POCLOUD,2011-09-13T00:00:00.000Z,2012-11-15T00:00:00.000Z,148.0,-57.5,158.0,-53.0 -C2006849866-POCLOUD,MITgcm_LLC4320_Pre-SWOT_JPL_L4_BassStrait_v1.0,Bass Strait Pre-SWOT Level-4 Hourly MITgcm LLC4320 Native Grid 2km Oceanographic Dataset Version 1.0,POCLOUD,2011-09-13T00:00:00.000Z,2012-11-15T00:00:00.000Z,143.8646,-41.99857,147.8438,-38.00927 -C2258661664-POCLOUD,MITgcm_LLC4320_Pre-SWOT_JPL_L4_Boknis_v1.0,Boknis Pre-SWOT Level-4 Hourly MITgcm LLC4320 Native Grid 2km Oceanographic Dataset Version 1.0,POCLOUD,2011-09-13T00:00:00.000Z,2012-11-15T00:00:00.000Z,9.2,53.5,14.5,58.0 -C2006849794-POCLOUD,MITgcm_LLC4320_Pre-SWOT_JPL_L4_CapeBasin_v1.0,Cape Basin Pre-SWOT Level-4 Hourly MITgcm LLC4320 Native Grid 2km Oceanographic Dataset Version 1.0,POCLOUD,2011-09-13T00:00:00.000Z,2012-11-15T00:00:00.000Z,11.82292,-44.99279,15.80208,-41.01421 -C2258640557-POCLOUD,MITgcm_LLC4320_Pre-SWOT_JPL_L4_GotlandBasin_v1.0,Gotland Basin Pre-SWOT Level-4 Hourly MITgcm LLC4320 Native Grid 2km Oceanographic Dataset Version 1.0,POCLOUD,2011-09-13T00:00:00.000Z,2012-11-15T00:00:00.000Z,17.0,54.2,21.2,59.5 -C2006849706-POCLOUD,MITgcm_LLC4320_Pre-SWOT_JPL_L4_LabradorSea_v1.0,Labrador Sea Pre-SWOT Level-4 Hourly MITgcm LLC4320 Native Grid 2km Oceanographic Dataset Version 1.0,POCLOUD,2011-09-13T00:00:00.000Z,2012-11-15T00:00:00.000Z,-63.61784,59.5549,-58.52856,63.79824 -C2006849650-POCLOUD,MITgcm_LLC4320_Pre-SWOT_JPL_L4_MarmaraSea_v1.0,Marmara Sea Pre-SWOT Level-4 Hourly MITgcm LLC4320 Native Grid 2km Oceanographic Dataset Version 1.0,POCLOUD,2011-09-13T00:00:00.000Z,2012-11-15T00:00:00.000Z,25.51042,38.50841,29.48958,42.49986 -C2263417492-POCLOUD,MITgcm_LLC4320_Pre-SWOT_JPL_L4_NWAustralia_v1.0,Northwest Australian Shelf Pre-SWOT Level-4 Hourly MITgcm LLC4320 Native Grid 2km Oceanographic Dataset Version 1.0,POCLOUD,2011-09-13T00:00:00.000Z,2012-11-15T00:00:00.000Z,120.5,-15.0,124.5,-11.0 -C2006849488-POCLOUD,MITgcm_LLC4320_Pre-SWOT_JPL_L4_NWPacific_v1.0,Northwest Pacific Pre-SWOT Level-4 Hourly MITgcm LLC4320 Native Grid 2km Oceanographic Dataset Version 1.0,POCLOUD,2011-09-13T00:00:00.000Z,2012-11-15T00:00:00.000Z,132.9062,19.00565,136.8854,22.99216 -C2006849571-POCLOUD,MITgcm_LLC4320_Pre-SWOT_JPL_L4_NewCaledonia_v1.0,New Caledonia Pre-SWOT Level-4 Hourly MITgcm LLC4320 Native Grid 2km Oceanographic Dataset Version 1.0,POCLOUD,2011-09-13T00:00:00.000Z,2012-11-15T00:00:00.000Z,166.0,-26.0,171.0,-22.0 -C2006849345-POCLOUD,MITgcm_LLC4320_Pre-SWOT_JPL_L4_ROAM_MIZ_v1.0,Northeast Weddell Sea Pre-SWOT Level-4 Hourly MITgcm LLC4320 Native Grid 2km Oceanographic Dataset Version 1.0,POCLOUD,2011-09-13T00:00:00.000Z,2012-11-15T00:00:00.000Z,1.197917,-63.57185,5.177083,-59.5867 -C2006849257-POCLOUD,MITgcm_LLC4320_Pre-SWOT_JPL_L4_RockallTrough_v1.0,Rockall Trough Pre-SWOT Level-4 Hourly MITgcm LLC4320 Native Grid 2km Oceanographic Dataset Version 1.0,POCLOUD,2011-09-13T00:00:00.000Z,2012-11-15T00:00:00.000Z,-12.18558,59.54496,-7.320777,63.73713 -C2263419126-POCLOUD,MITgcm_LLC4320_Pre-SWOT_JPL_L4_WestAtlantic_v1.0,West Atlantic Pre-SWOT Level-4 Hourly MITgcm LLC4320 Native Grid 2km Oceanographic Dataset Version 1.0,POCLOUD,2011-09-13T00:00:00.000Z,2012-11-15T00:00:00.000Z,-76.5,32.7,-72.0,38.7 -C2006849087-POCLOUD,MITgcm_LLC4320_Pre-SWOT_JPL_L4_WesternMed_v1.0,Mediterranean Sea Pre-SWOT Level-4 Hourly MITgcm LLC4320 Native Grid 2km Oceanographic Dataset Version 1.0,POCLOUD,2011-09-13T00:00:00.000Z,2012-11-15T00:00:00.000Z,1.010417,36.50821,4.989583,40.48752 -C2258633956-POCLOUD,MITgcm_LLC4320_Pre-SWOT_JPL_L4_Yongala_v1.0,Yongala Pre-SWOT Level-4 Hourly MITgcm LLC4320 Native Grid 2km Oceanographic Dataset Version 1.0,POCLOUD,2011-09-13T00:00:00.000Z,2012-11-15T00:00:00.000Z,146.25,-20.5,150.25,-16.5 -C3177834360-NSIDC_CPRD,MODGRNLD,"Multilayer Greenland Ice Surface Temperature, Surface Albedo, and Water Vapor from MODIS V001",NSIDC_CPRD,2000-03-01T00:00:00.000Z,2021-08-31T23:59:59.999Z,-94.0,58.0,12.0,84.0 -C1570116979-OB_DAAC,MODISA_L1,"Aqua MODIS Level-1 Level-1 Data, version 1",OB_DAAC,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C2526537408-OB_DAAC,MODISA_L1_GEO,"Aqua MODIS Level-1 Geolocation Product Data, version 1",OB_DAAC,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3380708974-OB_CLOUD,MODISA_L2_IOP,"Aqua MODIS Level-2 Regional Inherent Optical Properties (IOP) Data, version 2022.0",OB_CLOUD,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3380708971-OB_CLOUD,MODISA_L2_IOP_NRT,"Aqua MODIS Level-2 Regional Inherent Optical Properties (IOP) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C1615905765-OB_DAAC,MODISA_L2_SST,"Aqua MODIS Level-Regional Regional 11µm Day/Night Sea Surface Temperature (SST) Data, version R2019.0",OB_DAAC,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C1615905764-OB_DAAC,MODISA_L2_SST4,"Aqua MODIS Level-2 Regional 4µm Nighttime Sea Surface Temperature (SST4) Data, version R2019.0",OB_DAAC,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C1641945453-OB_DAAC,MODISA_L2_SST4_NRT,"Aqua MODIS Level-2 Regional 4µm Day/Night Sea Surface Temperature (SST4) - Near Real-time (NRT) Data, version R2019.0",OB_DAAC,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C1641945527-OB_DAAC,MODISA_L2_SST_NRT,"Aqua MODIS Level-2 Regional 11µm Day/Night Sea Surface Temperature (SST) - Near Real-time (NRT) Data, version R2019.0",OB_DAAC,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3380708988-OB_CLOUD,MODISA_L3b_CHL,"Aqua MODIS Level-3 Global Binned Chlorophyll (CHL) Data, version 2022.0",OB_CLOUD,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3380708984-OB_CLOUD,MODISA_L3b_CHL_NRT,"Aqua MODIS Level-3 Global Binned Chlorophyll (CHL) - NRT Data, version 2022.0",OB_CLOUD,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3380709029-OB_CLOUD,MODISA_L3b_FLH,"Aqua MODIS Level-3 Global Binned Fluorescence Line Height (FLH) Data, version 2022.0",OB_CLOUD,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3380709001-OB_CLOUD,MODISA_L3b_FLH_NRT,"Aqua MODIS Level-3 Global Binned Fluorescence Line Height (FLH) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3380709070-OB_CLOUD,MODISA_L3b_IOP,"Aqua MODIS Level-3 Global Binned Inherent Optical Properties (IOP) Data, version 2022.0",OB_CLOUD,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3476588350-OB_CLOUD,MODISA_L3b_IOP_NRT,"Aqua MODIS Level-3 Global Binned Inherent Optical Properties (IOP) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3380709086-OB_CLOUD,MODISA_L3b_KD,"Aqua MODIS Level-3 Global Binned Diffuse Attenuation Coefficient for Downwelling Irradiance (KD) Data, version 2022.0",OB_CLOUD,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3380709080-OB_CLOUD,MODISA_L3b_KD_NRT,"Aqua MODIS Level-3 Global Binned Diffuse Attenuation Coefficient for Downwelling Irradiance (KD) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C1615905766-OB_DAAC,MODISA_L3b_NSST,"Aqua MODIS Level-3 Global Binned 11µm Nighttime Sea Surface Temperature (NSST) Data, version R2019.0",OB_DAAC,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C1641945661-OB_DAAC,MODISA_L3b_NSST_NRT,"Aqua MODIS Level-3 Global Binned 11µm Nighttime Sea Surface Temperature (NSST) - Near Real-time (NRT) Data, version R2019.0",OB_DAAC,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3380709097-OB_CLOUD,MODISA_L3b_PAR,"Aqua MODIS Level-3 Global Binned Photosynthetically Available Radiation (PAR) Data, version 2022.0",OB_CLOUD,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3380709094-OB_CLOUD,MODISA_L3b_PAR_NRT,"Aqua MODIS Level-3 Global Binned Photosynthetically Available Radiation (PAR) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3380709104-OB_CLOUD,MODISA_L3b_PIC,"Aqua MODIS Level-3 Global Binned Particulate Inorganic Carbon (PIC) Data, version 2022.0",OB_CLOUD,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3380709103-OB_CLOUD,MODISA_L3b_PIC_NRT,"Aqua MODIS Level-3 Global Binned Particulate Inorganic Carbon (PIC) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3380709108-OB_CLOUD,MODISA_L3b_POC,"Aqua MODIS Level-3 Global Binned Particulate Organic Carbon (POC) Data, version 2022.0",OB_CLOUD,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3380709106-OB_CLOUD,MODISA_L3b_POC_NRT,"Aqua MODIS Level-3 Global Binned Particulate Organic Carbon (POC) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3380709117-OB_CLOUD,MODISA_L3b_RRS,"Aqua MODIS Level-3 Global Binned Remote-Sensing Reflectance (RRS) Data, version 2022.0",OB_CLOUD,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3380709112-OB_CLOUD,MODISA_L3b_RRS_NRT,"Aqua MODIS Level-3 Global Binned Remote-Sensing Reflectance (RRS) - NRT Data, version 2022.0",OB_CLOUD,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C1615905769-OB_DAAC,MODISA_L3b_SST,"Aqua MODIS Level-3 Global Binned 11µm Daytime Sea Surface Temperature (SST) Data, version R2019.0",OB_DAAC,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C1615905768-OB_DAAC,MODISA_L3b_SST4,"Aqua MODIS Level-3 Global Binned 4µm Nighttime Sea Surface Temperature (SST4) Data, version R2019.0",OB_DAAC,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C1641945731-OB_DAAC,MODISA_L3b_SST4_NRT,"Aqua MODIS Level-3 Global Binned 4µm Day/Night Sea Surface Temperature (SST4) - Near Real-time (NRT) Data, version R2019.0",OB_DAAC,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C1641945804-OB_DAAC,MODISA_L3b_SST_NRT,"Aqua MODIS Level-3 Global Binned 11µm Day/Night Sea Surface Temperature (SST) - Near Real-time (NRT) Data, version R2019.0",OB_DAAC,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3380709159-OB_CLOUD,MODISA_L3m_FLH,"Aqua MODIS Level-3 Global Mapped Fluorescence Line Height (FLH) Data, version 2022.0",OB_CLOUD,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3380709143-OB_CLOUD,MODISA_L3m_FLH_NRT,"Aqua MODIS Level-3 Global Mapped Fluorescence Line Height (FLH) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3476588467-OB_CLOUD,MODISA_L3m_IOP_NRT,"Aqua MODIS Level-3 Global Mapped Inherent Optical Properties (IOP) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3380709189-OB_CLOUD,MODISA_L3m_KD_NRT,"Aqua MODIS Level-3 Global Mapped Diffuse Attenuation Coefficient for Downwelling Irradiance (KD) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C1615929573-OB_DAAC,MODISA_L3m_NSST,"Aqua MODIS Level-3 Global Mapped 11µm Nighttime Sea Surface Temperature (NSST) Data, version R2019.0",OB_DAAC,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C1641945873-OB_DAAC,MODISA_L3m_NSST_NRT,"Aqua MODIS Level-3 Global Mapped 11µm Nighttime Sea Surface Temperature (NSST) - Near Real-time (NRT) Data, version R2019.0",OB_DAAC,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3380709277-OB_CLOUD,MODISA_L3m_PAR,"Aqua MODIS Level-3 Global Mapped Photosynthetically Available Radiation (PAR) Data, version 2022.0",OB_CLOUD,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3380709244-OB_CLOUD,MODISA_L3m_PAR_NRT,"Aqua MODIS Level-3 Global Mapped Photosynthetically Available Radiation (PAR) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3380709319-OB_CLOUD,MODISA_L3m_PIC,"Aqua MODIS Level-3 Global Mapped Particulate Inorganic Carbon (PIC) Data, version 2022.0",OB_CLOUD,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3380709307-OB_CLOUD,MODISA_L3m_PIC_NRT,"Aqua MODIS Level-3 Global Mapped Particulate Inorganic Carbon (PIC) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3380709345-OB_CLOUD,MODISA_L3m_POC,"Aqua MODIS Level-3 Global Mapped Particulate Organic Carbon (POC) Data, version 2022.0",OB_CLOUD,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3380709332-OB_CLOUD,MODISA_L3m_POC_NRT,"Aqua MODIS Level-3 Global Mapped Particulate Organic Carbon (POC) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3380709369-OB_CLOUD,MODISA_L3m_RRS,"Aqua MODIS Level-3 Global Mapped Remote-Sensing Reflectance (RRS) Data, version 2022.0",OB_CLOUD,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3380709359-OB_CLOUD,MODISA_L3m_RRS_NRT,"Aqua MODIS Level-3 Global Mapped Remote-Sensing Reflectance (RRS) - NRT Data, version 2022.0",OB_CLOUD,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C1615905770-OB_DAAC,MODISA_L3m_SST,"Aqua MODIS Level-3 Global Mapped 11µm Daytime Sea Surface Temperature (SST) Data, version R2019.0",OB_DAAC,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C1615929578-OB_DAAC,MODISA_L3m_SST4,"Aqua MODIS Level-3 Global Mapped 4µm Nighttime Sea Surface Temperature (SST4) Data, version R2019.0",OB_DAAC,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C1641945930-OB_DAAC,MODISA_L3m_SST4_NRT,"Aqua MODIS Level-3 Global Mapped 4µm Day/Night Sea Surface Temperature (SST4) - Near Real-time (NRT) Data, version R2019.0",OB_DAAC,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C1641945980-OB_DAAC,MODISA_L3m_SST_NRT,"Aqua MODIS Level-3 Global Mapped 11µm Day/Night Sea Surface Temperature (SST) - Near Real-time (NRT) Data, version R2019.0",OB_DAAC,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3455985652-OB_CLOUD,MODISA_L4b_AVW,"Aqua MODIS Level-4 Global Binned Apparent Visible Wavelength (AVW) Data, version 2022.0",OB_CLOUD,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3455985653-OB_CLOUD,MODISA_L4b_CARBON,"Aqua MODIS Level-4 Global Binned Carbon Data, version 2022.0",OB_CLOUD,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3427336459-OB_CLOUD,MODISA_L4b_GSM,"Aqua MODIS Level-4 Global Binned Garver-Siegel-Maritorena Model (GSM) Data, version 2022.0",OB_CLOUD,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3455985654-OB_CLOUD,MODISA_L4m_AVW,"Aqua MODIS Level-4 Global Mapped Apparent Visible Wavelength (AVW) Data, version 2022.0",OB_CLOUD,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3455985655-OB_CLOUD,MODISA_L4m_CARBON,"Aqua MODIS Level-4 Global Mapped Carbon Data, version 2022.0",OB_CLOUD,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3534747104-OB_CLOUD,MODISA_L4m_ELOEV,"Aqua MODIS Global Mapped Eulerian and Lagrangian Oceanography and Ecology Variables Data, version 1",OB_CLOUD,2002-07-04T00:00:00Z,2021-10-31T23:59:59.000Z,-180.0,-90.0,180.0,90.0 -C3427336480-OB_CLOUD,MODISA_L4m_GSM,"Aqua MODIS Level-4 Global Mapped Garver-Siegel-Maritorena Model (GSM) Data, version 2022.0",OB_CLOUD,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C1570116636-OB_DAAC,MODIST_L1,"Terra MODIS Level-1 Level-1 Data, version 1",OB_DAAC,2000-02-24T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C2471262183-OB_DAAC,MODIST_L1_GEO,"Terra MODIS Level-1 Geolocation Product Data, version 1",OB_DAAC,2000-02-24T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3384236975-OB_CLOUD,MODIST_L2_IOP,"Terra MODIS Level-2 Regional Inherent Optical Properties (IOP) Data, version 2022.0",OB_CLOUD,2000-02-24T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3384236974-OB_CLOUD,MODIST_L2_IOP_NRT,"Terra MODIS Level-2 Regional Inherent Optical Properties (IOP) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2000-02-24T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3384236979-OB_CLOUD,MODIST_L2_OC,"Terra MODIS Level-2 Regional Ocean Color (OC) Data, version 2022.0",OB_CLOUD,2000-02-24T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C1615934250-OB_DAAC,MODIST_L2_SST,"Terra MODIS Level-Regional Regional 11µm Day/Night Sea Surface Temperature (SST) Data, version R2019.0",OB_DAAC,2000-02-24T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C1615934239-OB_DAAC,MODIST_L2_SST4,"Terra MODIS Level-2 Regional 4µm Nighttime Sea Surface Temperature (SST4) Data, version R2019.0",OB_DAAC,2000-02-24T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C1641918996-OB_DAAC,MODIST_L2_SST4_NRT,"Terra MODIS Level-2 Regional 4µm Day/Night Sea Surface Temperature (SST4) - Near Real-time (NRT) Data, version R2019.0",OB_DAAC,2000-02-24T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C1641917076-OB_DAAC,MODIST_L2_SST_NRT,"Terra MODIS Level-2 Regional 11µm Day/Night Sea Surface Temperature (SST) - Near Real-time (NRT) Data, version R2019.0",OB_DAAC,2000-02-24T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3384236986-OB_CLOUD,MODIST_L3b_CHL,"Terra MODIS Level-3 Global Binned Chlorophyll (CHL) Data, version 2022.0",OB_CLOUD,2000-02-24T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3384236980-OB_CLOUD,MODIST_L3b_CHL_NRT,"Terra MODIS Level-3 Global Binned Chlorophyll (CHL) - NRT Data, version 2022.0",OB_CLOUD,2000-02-24T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3384236999-OB_CLOUD,MODIST_L3b_FLH,"Terra MODIS Level-3 Global Binned Fluorescence Line Height (FLH) Data, version 2022.0",OB_CLOUD,2000-02-24T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3476250769-OB_CLOUD,MODIST_L3b_FLH_NRT,"Terra MODIS Level-3 Global Binned Fluorescence Line Height (FLH) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2000-02-24T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3384237062-OB_CLOUD,MODIST_L3b_IOP,"Terra MODIS Level-3 Global Binned Inherent Optical Properties (IOP) Data, version 2022.0",OB_CLOUD,2000-02-24T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3384237025-OB_CLOUD,MODIST_L3b_IOP_NRT,"Terra MODIS Level-3 Global Binned Inherent Optical Properties (IOP) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2000-02-24T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3384237110-OB_CLOUD,MODIST_L3b_KD,"Terra MODIS Level-3 Global Binned Diffuse Attenuation Coefficient for Downwelling Irradiance (KD) Data, version 2022.0",OB_CLOUD,2000-02-24T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3384237084-OB_CLOUD,MODIST_L3b_KD_NRT,"Terra MODIS Level-3 Global Binned Diffuse Attenuation Coefficient for Downwelling Irradiance (KD) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2000-02-24T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C1615934256-OB_DAAC,MODIST_L3b_NSST,"Terra MODIS Level-3 Global Binned 11µm Nighttime Sea Surface Temperature (NSST) Data, version R2019.0",OB_DAAC,2000-02-24T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C1641916383-OB_DAAC,MODIST_L3b_NSST_NRT,"Terra MODIS Level-3 Global Binned 11µm Nighttime Sea Surface Temperature (NSST) - Near Real-time (NRT) Data, version R2019.0",OB_DAAC,2000-02-24T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3384237152-OB_CLOUD,MODIST_L3b_PAR,"Terra MODIS Level-3 Global Binned Photosynthetically Available Radiation (PAR) Data, version 2022.0",OB_CLOUD,2000-02-24T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3384237137-OB_CLOUD,MODIST_L3b_PAR_NRT,"Terra MODIS Level-3 Global Binned Photosynthetically Available Radiation (PAR) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2000-02-24T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3384237174-OB_CLOUD,MODIST_L3b_PIC,"Terra MODIS Level-3 Global Binned Particulate Inorganic Carbon (PIC) Data, version 2022.0",OB_CLOUD,2000-02-24T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3384237161-OB_CLOUD,MODIST_L3b_PIC_NRT,"Terra MODIS Level-3 Global Binned Particulate Inorganic Carbon (PIC) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2000-02-24T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3384237230-OB_CLOUD,MODIST_L3b_POC,"Terra MODIS Level-3 Global Binned Particulate Organic Carbon (POC) Data, version 2022.0",OB_CLOUD,2000-02-24T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3384237196-OB_CLOUD,MODIST_L3b_POC_NRT,"Terra MODIS Level-3 Global Binned Particulate Organic Carbon (POC) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2000-02-24T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3384237342-OB_CLOUD,MODIST_L3b_RRS,"Terra MODIS Level-3 Global Binned Remote-Sensing Reflectance (RRS) Data, version 2022.0",OB_CLOUD,2000-02-24T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3384237274-OB_CLOUD,MODIST_L3b_RRS_NRT,"Terra MODIS Level-3 Global Binned Remote-Sensing Reflectance (RRS) - NRT Data, version 2022.0",OB_CLOUD,2000-02-24T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C1615934268-OB_DAAC,MODIST_L3b_SST,"Terra MODIS Level-3 Global Binned 11µm Daytime Sea Surface Temperature (SST) Data, version R2019.0",OB_DAAC,2000-02-24T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C1615934263-OB_DAAC,MODIST_L3b_SST4,"Terra MODIS Level-3 Global Binned 4µm Nighttime Sea Surface Temperature (SST4) Data, version R2019.0",OB_DAAC,2000-02-24T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C1641915709-OB_DAAC,MODIST_L3b_SST4_NRT,"Terra MODIS Level-3 Global Binned 4µm Day/Night Sea Surface Temperature (SST4) - Near Real-time (NRT) Data, version R2019.0",OB_DAAC,2000-02-24T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C1641915272-OB_DAAC,MODIST_L3b_SST_NRT,"Terra MODIS Level-3 Global Binned 11µm Day/Night Sea Surface Temperature (SST) - Near Real-time (NRT) Data, version R2019.0",OB_DAAC,2000-02-24T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3384237409-OB_CLOUD,MODIST_L3m_CHL_NRT,"Terra MODIS Level-3 Global Mapped Chlorophyll (CHL) - NRT Data, version 2022.0",OB_CLOUD,2000-02-24T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3384237454-OB_CLOUD,MODIST_L3m_FLH,"Terra MODIS Level-3 Global Mapped Fluorescence Line Height (FLH) Data, version 2022.0",OB_CLOUD,2000-02-24T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3476250770-OB_CLOUD,MODIST_L3m_FLH_NRT,"Terra MODIS Level-3 Global Mapped Fluorescence Line Height (FLH) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2000-02-24T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3384237564-OB_CLOUD,MODIST_L3m_IOP,"Terra MODIS Level-3 Global Mapped Inherent Optical Properties (IOP) Data, version 2022.0",OB_CLOUD,2000-02-24T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3384237531-OB_CLOUD,MODIST_L3m_IOP_NRT,"Terra MODIS Level-3 Global Mapped Inherent Optical Properties (IOP) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2000-02-24T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3384237605-OB_CLOUD,MODIST_L3m_KD,"Terra MODIS Level-3 Global Mapped Diffuse Attenuation Coefficient for Downwelling Irradiance (KD) Data, version 2022.0",OB_CLOUD,2000-02-24T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3384237582-OB_CLOUD,MODIST_L3m_KD_NRT,"Terra MODIS Level-3 Global Mapped Diffuse Attenuation Coefficient for Downwelling Irradiance (KD) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2000-02-24T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C1615934275-OB_DAAC,MODIST_L3m_NSST,"Terra MODIS Level-3 Global Mapped 11µm Nighttime Sea Surface Temperature (NSST) Data, version R2019.0",OB_DAAC,2000-02-24T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C1641914526-OB_DAAC,MODIST_L3m_NSST_NRT,"Terra MODIS Level-3 Global Mapped 11µm Nighttime Sea Surface Temperature (NSST) - Near Real-time (NRT) Data, version R2019.0",OB_DAAC,2000-02-24T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3384237648-OB_CLOUD,MODIST_L3m_PAR,"Terra MODIS Level-3 Global Mapped Photosynthetically Available Radiation (PAR) Data, version 2022.0",OB_CLOUD,2000-02-24T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3384237629-OB_CLOUD,MODIST_L3m_PAR_NRT,"Terra MODIS Level-3 Global Mapped Photosynthetically Available Radiation (PAR) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2000-02-24T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3384237659-OB_CLOUD,MODIST_L3m_PIC,"Terra MODIS Level-3 Global Mapped Particulate Inorganic Carbon (PIC) Data, version 2022.0",OB_CLOUD,2000-02-24T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3384237656-OB_CLOUD,MODIST_L3m_PIC_NRT,"Terra MODIS Level-3 Global Mapped Particulate Inorganic Carbon (PIC) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2000-02-24T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3384237661-OB_CLOUD,MODIST_L3m_POC,"Terra MODIS Level-3 Global Mapped Particulate Organic Carbon (POC) Data, version 2022.0",OB_CLOUD,2000-02-24T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3384237660-OB_CLOUD,MODIST_L3m_POC_NRT,"Terra MODIS Level-3 Global Mapped Particulate Organic Carbon (POC) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2000-02-24T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3384237665-OB_CLOUD,MODIST_L3m_RRS,"Terra MODIS Level-3 Global Mapped Remote-Sensing Reflectance (RRS) Data, version 2022.0",OB_CLOUD,2000-02-24T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3384237664-OB_CLOUD,MODIST_L3m_RRS_NRT,"Terra MODIS Level-3 Global Mapped Remote-Sensing Reflectance (RRS) - NRT Data, version 2022.0",OB_CLOUD,2000-02-24T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C1615934288-OB_DAAC,MODIST_L3m_SST,"Terra MODIS Level-3 Global Mapped 11µm Daytime Sea Surface Temperature (SST) Data, version R2019.0",OB_DAAC,2000-02-24T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C1615934284-OB_DAAC,MODIST_L3m_SST4,"Terra MODIS Level-3 Global Mapped 4µm Nighttime Sea Surface Temperature (SST4) Data, version R2019.0",OB_DAAC,2000-02-24T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C1641914065-OB_DAAC,MODIST_L3m_SST4_NRT,"Terra MODIS Level-3 Global Mapped 4µm Day/Night Sea Surface Temperature (SST4) - Near Real-time (NRT) Data, version R2019.0",OB_DAAC,2000-02-24T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C1641913601-OB_DAAC,MODIST_L3m_SST_NRT,"Terra MODIS Level-3 Global Mapped 11µm Day/Night Sea Surface Temperature (SST) - Near Real-time (NRT) Data, version R2019.0",OB_DAAC,2000-02-24T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3455985657-OB_CLOUD,MODIST_L4b_AVW,"Terra MODIS Level-4 Global Binned Apparent Visible Wavelength (AVW) Data, version 2022.0",OB_CLOUD,2000-02-24T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3455985659-OB_CLOUD,MODIST_L4b_CARBON,"Terra MODIS Level-4 Global Binned Carbon Data, version 2022.0",OB_CLOUD,2000-02-24T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3427337282-OB_CLOUD,MODIST_L4b_GSM,"Terra MODIS Level-4 Global Binned Garver-Siegel-Maritorena Model (GSM) Data, version 2022.0",OB_CLOUD,2000-02-24T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3455985660-OB_CLOUD,MODIST_L4m_AVW,"Terra MODIS Level-4 Global Mapped Apparent Visible Wavelength (AVW) Data, version 2022.0",OB_CLOUD,2000-02-24T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3455985663-OB_CLOUD,MODIST_L4m_CARBON,"Terra MODIS Level-4 Global Mapped Carbon Data, version 2022.0",OB_CLOUD,2000-02-24T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3427337291-OB_CLOUD,MODIST_L4m_GSM,"Terra MODIS Level-4 Global Mapped Garver-Siegel-Maritorena Model (GSM) Data, version 2022.0",OB_CLOUD,2000-02-24T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C2036881966-POCLOUD,MODIS_AQUA_L3_SST_MID-IR_8DAY_4KM_NIGHTTIME_V2019.0,MODIS Aqua Level 3 SST MID-IR 8 Day 4km Nighttime V2019.0,POCLOUD,2002-07-03T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2036877838-POCLOUD,MODIS_AQUA_L3_SST_MID-IR_8DAY_9KM_NIGHTTIME_V2019.0,MODIS Aqua Level 3 SST MID-IR 8 Day 9km Nighttime V2019.0,POCLOUD,2002-07-03T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2036882179-POCLOUD,MODIS_AQUA_L3_SST_MID-IR_ANNUAL_4KM_NIGHTTIME_V2019.0,MODIS Aqua Level 3 SST MID-IR Annual 4km Nighttime V2019.0,POCLOUD,2002-01-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2036877847-POCLOUD,MODIS_AQUA_L3_SST_MID-IR_ANNUAL_9KM_NIGHTTIME_V2019.0,MODIS Aqua Level 3 SST MID-IR Annual 9km Nighttime V2019.0,POCLOUD,2002-01-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2036881975-POCLOUD,MODIS_AQUA_L3_SST_MID-IR_DAILY_4KM_NIGHTTIME_V2019.0,MODIS Aqua Level 3 SST MID-IR Daily 4km Nighttime V2019.0,POCLOUD,2002-07-03T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2036877856-POCLOUD,MODIS_AQUA_L3_SST_MID-IR_DAILY_9KM_NIGHTTIME_V2019.0,MODIS Aqua Level 3 SST MID-IR Daily 9km Nighttime V2019.0,POCLOUD,2002-07-03T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2036882188-POCLOUD,MODIS_AQUA_L3_SST_MID-IR_MONTHLY_4KM_NIGHTTIME_V2019.0,MODIS Aqua Level 3 SST MID-IR Monthly 4km Nighttime V2019.0,POCLOUD,2002-07-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2036877865-POCLOUD,MODIS_AQUA_L3_SST_MID-IR_MONTHLY_9KM_NIGHTTIME_V2019.0,MODIS Aqua Level 3 SST MID-IR Monthly 9km Nighttime V2019.0,POCLOUD,2002-07-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2036881986-POCLOUD,MODIS_AQUA_L3_SST_THERMAL_8DAY_4KM_DAYTIME_V2019.0,MODIS Aqua Level 3 SST Thermal IR 8 Day 4km Daytime V2019.0,POCLOUD,2002-07-04T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2036881993-POCLOUD,MODIS_AQUA_L3_SST_THERMAL_8DAY_4KM_NIGHTTIME_V2019.0,MODIS Aqua Level 3 SST Thermal IR 8 Day 4km Nighttime V2019.0,POCLOUD,2002-07-03T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2036877890-POCLOUD,MODIS_AQUA_L3_SST_THERMAL_8DAY_9KM_DAYTIME_V2019.0,MODIS Aqua Level 3 SST Thermal IR 8 Day 9km Daytime V2019.0,POCLOUD,2002-07-04T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2036877904-POCLOUD,MODIS_AQUA_L3_SST_THERMAL_8DAY_9KM_NIGHTTIME_V2019.0,MODIS Aqua Level 3 SST Thermal IR 8 Day 9km Nighttime V2019.0,POCLOUD,2002-07-03T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2036882197-POCLOUD,MODIS_AQUA_L3_SST_THERMAL_ANNUAL_4KM_DAYTIME_V2019.0,MODIS Aqua Level 3 SST Thermal IR Annual 4km Daytime V2019.0,POCLOUD,2002-01-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2036882206-POCLOUD,MODIS_AQUA_L3_SST_THERMAL_ANNUAL_4KM_NIGHTTIME_V2019.0,MODIS Aqua Level 3 SST Thermal IR Annual 4km Nighttime V2019.0,POCLOUD,2002-01-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2036877912-POCLOUD,MODIS_AQUA_L3_SST_THERMAL_ANNUAL_9KM_DAYTIME_V2019.0,MODIS Aqua Level 3 SST Thermal IR Annual 9km Daytime V2019.0,POCLOUD,2002-07-03T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2036877920-POCLOUD,MODIS_AQUA_L3_SST_THERMAL_ANNUAL_9KM_NIGHTTIME_V2019.0,MODIS Aqua Level 3 SST Thermal IR Annual 9km Nighttime V2019.0,POCLOUD,2002-07-03T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2036880650-POCLOUD,MODIS_AQUA_L3_SST_THERMAL_DAILY_4KM_DAYTIME_V2019.0,MODIS Aqua Level 3 SST Thermal IR Daily 4km Daytime V2019.0,POCLOUD,2002-07-03T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2036882003-POCLOUD,MODIS_AQUA_L3_SST_THERMAL_DAILY_4KM_NIGHTTIME_V2019.0,MODIS Aqua Level 3 SST Thermal IR Daily 4km Nighttime V2019.0,POCLOUD,2002-07-03T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2036877928-POCLOUD,MODIS_AQUA_L3_SST_THERMAL_DAILY_9KM_DAYTIME_V2019.0,MODIS Aqua Level 3 SST Thermal IR Daily 9km Daytime V2019.0,POCLOUD,2002-07-03T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2036877937-POCLOUD,MODIS_AQUA_L3_SST_THERMAL_DAILY_9KM_NIGHTTIME_V2019.0,MODIS Aqua Level 3 SST Thermal IR Daily 9km Nighttime V2019.0,POCLOUD,2002-07-03T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2036882228-POCLOUD,MODIS_AQUA_L3_SST_THERMAL_MONTHLY_4KM_DAYTIME_V2019.0,MODIS Aqua Level 3 SST Thermal IR Monthly 4km Daytime V2019.0,POCLOUD,2002-07-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2036882237-POCLOUD,MODIS_AQUA_L3_SST_THERMAL_MONTHLY_4KM_NIGHTTIME_V2019.0,MODIS Aqua Level 3 SST Thermal IR Monthly 4km Nighttime V2019.0,POCLOUD,2002-07-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2036877944-POCLOUD,MODIS_AQUA_L3_SST_THERMAL_MONTHLY_9KM_DAYTIME_V2019.0,MODIS Aqua Level 3 SST Thermal IR Monthly 9km Daytime V2019.0,POCLOUD,2002-07-03T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2036877952-POCLOUD,MODIS_AQUA_L3_SST_THERMAL_MONTHLY_9KM_NIGHTTIME_V2019.0,MODIS Aqua Level 3 SST Thermal IR Monthly 9km Nighttime V2019.0,POCLOUD,2002-07-03T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2036882246-POCLOUD,MODIS_TERRA_L3_SST_MID-IR_8DAY_4KM_NIGHTTIME_V2019.0,MODIS Terra Level 3 SST MID-IR 8 day 4km Nighttime V2019.0,POCLOUD,2000-02-24T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2036877960-POCLOUD,MODIS_TERRA_L3_SST_MID-IR_8DAY_9KM_NIGHTTIME_V2019.0,MODIS Terra Level 3 SST MID-IR 8 Day 9km Nighttime V2019.0,POCLOUD,2000-02-24T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2036882255-POCLOUD,MODIS_TERRA_L3_SST_MID-IR_ANNUAL_4KM_NIGHTTIME_V2019.0,MODIS Terra Level 3 SST MID-IR Annual 4km Nighttime V2019.0,POCLOUD,2000-01-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2036877972-POCLOUD,MODIS_TERRA_L3_SST_MID-IR_ANNUAL_9KM_NIGHTTIME_V2019.0,MODIS Terra Level 3 SST MID-IR Annual 9km Nighttime V2019.0,POCLOUD,2000-01-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2036882265-POCLOUD,MODIS_TERRA_L3_SST_MID-IR_DAILY_4KM_NIGHTTIME_V2019.0,MODIS Terra Level 3 SST Mid-IR Daily 4km Nighttime V2019.0,POCLOUD,2000-02-24T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2036877977-POCLOUD,MODIS_TERRA_L3_SST_MID-IR_DAILY_9KM_NIGHTTIME_V2019.0,MODIS Terra Level 3 SST MID-IR Daily 9km Nighttime V2019.0,POCLOUD,2000-02-24T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2036882273-POCLOUD,MODIS_TERRA_L3_SST_MID-IR_MONTHLY_4KM_NIGHTTIME_V2019.0,MODIS Terra Level 3 SST MID-IR Monthly 4km Nighttime V2019.0,POCLOUD,2000-02-24T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2036877978-POCLOUD,MODIS_TERRA_L3_SST_MID-IR_MONTHLY_9KM_NIGHTTIME_V2019.0,MODIS Terra Level 3 SST MID-IR Monthly 9km Nighttime V2019.0,POCLOUD,2000-02-24T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2036882282-POCLOUD,MODIS_TERRA_L3_SST_THERMAL_8DAY_4KM_DAYTIME_V2019.0,MODIS Terra Level 3 SST Thermal IR 8 Day 4km Daytime V2019.0,POCLOUD,2000-02-18T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2036882292-POCLOUD,MODIS_TERRA_L3_SST_THERMAL_8DAY_4KM_NIGHTTIME_V2019.0,MODIS Terra Level 3 SST Thermal IR 8 Day 4km Nighttime V2019.0,POCLOUD,2000-02-24T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2036877983-POCLOUD,MODIS_TERRA_L3_SST_THERMAL_8DAY_9KM_DAYTIME_V2019.0,MODIS Terra Level 3 SST Thermal IR 8 Day 9km Daytime V2019.0,POCLOUD,2000-02-18T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2036877986-POCLOUD,MODIS_TERRA_L3_SST_THERMAL_8DAY_9KM_NIGHTTIME_V2019.0,MODIS Terra Level 3 SST Thermal IR 8 Day 9km Nighttime V2019.0,POCLOUD,2000-02-24T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2036882301-POCLOUD,MODIS_TERRA_L3_SST_THERMAL_ANNUAL_4KM_DAYTIME_V2019.0,MODIS Terra Level 3 SST Thermal IR Annual 4km Daytime V2019.0,POCLOUD,2000-01-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2036882310-POCLOUD,MODIS_TERRA_L3_SST_THERMAL_ANNUAL_4KM_NIGHTTIME_V2019.0,MODIS Terra Level 3 SST Thermal IR Annual 4km Nighttime V2019.0,POCLOUD,2000-01-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2036877987-POCLOUD,MODIS_TERRA_L3_SST_THERMAL_ANNUAL_9KM_DAYTIME_V2019.0,MODIS Terra Level 3 SST Thermal IR Annual 9km Daytime V2019.0,POCLOUD,2000-01-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2036877989-POCLOUD,MODIS_TERRA_L3_SST_THERMAL_ANNUAL_9KM_NIGHTTIME_V2019.0,MODIS Terra Level 3 SST Thermal IR Annual 9km Nighttime V2019.0,POCLOUD,2000-01-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2036880725-POCLOUD,MODIS_TERRA_L3_SST_THERMAL_DAILY_4KM_DAYTIME_V2019.0,MODIS Terra Level 3 SST Thermal IR Daily 4km Daytime V2019.0,POCLOUD,2000-02-24T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2036882319-POCLOUD,MODIS_TERRA_L3_SST_THERMAL_DAILY_4KM_NIGHTTIME_V2019.0,MODIS Terra Level 3 SST Thermal IR Daily 4km Nighttime V2019.0,POCLOUD,2000-02-24T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2036877991-POCLOUD,MODIS_TERRA_L3_SST_THERMAL_DAILY_9KM_DAYTIME_V2019.0,MODIS Terra Level 3 SST Thermal IR Daily 9km Daytime V2019.0,POCLOUD,2000-02-24T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2036877993-POCLOUD,MODIS_TERRA_L3_SST_THERMAL_DAILY_9KM_NIGHTTIME_V2019.0,MODIS Terra Level 3 SST Thermal IR Daily 9km Nighttime V2019.0,POCLOUD,2000-02-24T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2036882327-POCLOUD,MODIS_TERRA_L3_SST_THERMAL_MONTHLY_4KM_DAYTIME_V2019.0,MODIS Terra Level 3 SST Thermal IR Monthly 4km Daytime V2019.0,POCLOUD,2000-02-24T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2036882337-POCLOUD,MODIS_TERRA_L3_SST_THERMAL_MONTHLY_4KM_NIGHTTIME_V2019.0,MODIS Terra Level 3 SST Thermal IR Monthly 4km Nighttime V2019.0,POCLOUD,2000-02-24T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2036877995-POCLOUD,MODIS_TERRA_L3_SST_THERMAL_MONTHLY_9KM_DAYTIME_V2019.0,MODIS Terra Level 3 SST Thermal IR Monthly 9km Daytime V2019.0,POCLOUD,2000-02-24T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2036878004-POCLOUD,MODIS_TERRA_L3_SST_THERMAL_MONTHLY_9KM_NIGHTTIME_V2019.0,MODIS Terra Level 3 SST Thermal IR Monthly 9km Nighttime V2019.0,POCLOUD,2000-02-24T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2545284712-LARC_ASDC,MOOSE_AircraftRemoteSensing_NASA-G3_GCAS_Data,MOOSE NASA G-3 Aircraft GEO-CAPE Airborne Simulator (GCAS) Remotely Sensed Data,LARC_ASDC,2021-06-05T00:00:00.000Z,2021-07-01T23:59:59.999Z,-87.2,35.0,-70.1,45.6 -C2098739529-POCLOUD,MSG01-OSPO-L2P-v1.0,NOAA GHRSST Level 2P Indian Ocean Regional Skin Sea Surface Temperature v1.0 from the Spinning Enhanced Visible and InfraRed Imager (SEVIRI) on the Meteosat Second Generation-1 (MSG-1) satellite,POCLOUD,2018-09-18T00:00:00.000Z,2022-06-01T23:00:00.000Z,-81.0,-73.0,81.0,73.0 -C2604362899-POCLOUD,MSG02-OSPO-L2P-v1.0,NOAA GHRSST Level 2P Indian Ocean Regional Skin Sea Surface Temperature v1.0 from the Spinning Enhanced Visible and InfraRed Imager (SEVIRI) on the Meteosat Second Generation-2 (MSG-2) satellite,POCLOUD,2013-08-01T12:30:00.000Z,,-81.0,-73.0,81.0,73.0 -C2036878029-POCLOUD,MSG03-OSPO-L2P-v1.0,GHRSST Level 2P Atlantic Regional Skin Sea Surface Temperature from the Spinning Enhanced Visible and InfraRed Imager (SEVIRI) on the Meteosat Second Generation (MSG-3) satellite (GDS version 2),POCLOUD,2013-08-01T12:30:00.000Z,,-81.0,-73.0,81.0,73.0 -C2098740781-POCLOUD,MSG04-OSPO-L2P-v1.0,NOAA GHRSST Level 2P Atlantic Ocean Regional Skin Sea Surface Temperature v1.0 from the Spinning Enhanced Visible and InfraRed Imager (SEVIRI) on the Meteosat Second Generation-4 (MSG-4) satellite,POCLOUD,2018-09-10T00:00:00.000Z,2023-03-21T23:59:00.000Z,-81.0,-73.0,81.0,73.0 -C2102664483-LPDAAC_ECS,MSLSP30NA,MuSLI Multi-Source Land Surface Phenology Yearly North America 30 m V011,LPDAAC_ECS,2016-01-01T00:00:00.000Z,2019-12-31T23:59:59.000Z,-180.0,0.0,0.0,90.0 -C2499940520-POCLOUD,MTSAT2-OSPO-L2P-v1.0,GHRSST Level 2P Western Pacific Regional Skin Sea Surface Temperature from the Multifunctional Transport Satellite 2 (MTSAT-2) (GDS version 2),POCLOUD,2013-08-01T09:32:00.000Z,2015-12-04T11:15:00.000Z,-180.0,-80.0,180.0,79.0 -C2754899545-POCLOUD,N21-VIIRS-L3U-ACSPO-v2.80,GHRSST Level 3U NOAA ACSPO SST v2.80 from VIIRS on NOAA-21 Satellite,POCLOUD,2023-03-19T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C1688125085-LARC_ASDC,NAAMES_Misc_Ship_Data,"NAAMES R/V Atlantis Miscellaneous Data, Version 1",LARC_ASDC,2015-01-01T00:00:00.000Z,2018-09-24T23:59:59.999Z,-180.0,0.0,179.0,90.0 -C3526925159-ORNL_CLOUD,NACP_MsTMIP_TBMO_1225,"NACP MsTMIP: Global 0.5-degree Model Outputs in Standard Format, Version 1.0",ORNL_CLOUD,1900-01-01T00:00:00.000Z,2010-12-31T23:59:59.999Z,-180.0,-90.0,180.0,90.0 -C3309450672-POCLOUD,NASA_SSH_REF_ALONGTRACK_V1,NASA-SSH Along-Track Sea Surface Height from Standardized Reference Missions Version 1,POCLOUD,1992-10-25T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2784871888-ORNL_CLOUD,NA_MODIS_Surface_Biophysics_1210,"MODIS-derived Biophysical Parameters for 5-km Land Cover, North America, 2000-2012 ",ORNL_CLOUD,2000-01-01T00:00:00.000Z,2012-12-31T23:59:59.999Z,-160.0,20.0,-40.0,60.0 -C2794540918-NSIDC_ECS,NSIDC-0079,Bootstrap Sea Ice Concentrations from Nimbus-7 SMMR and DMSP SSM/I-SSMIS V004,NSIDC_ECS,1978-11-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C3177837864-NSIDC_CPRD,NSIDC-0079,Bootstrap Sea Ice Concentrations from Nimbus-7 SMMR and DMSP SSM/I-SSMIS V004,NSIDC_CPRD,1978-11-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C3291177469-NSIDC_CPRD,NSIDC-0484,MEaSUREs InSAR-Based Antarctica Ice Velocity Map V002,NSIDC_CPRD,1996-01-01T00:00:00.000Z,2016-12-31T23:59:59.999Z,-180.0,-90.0,180.0,-60.0 -C3291000593-NSIDC_CPRD,NSIDC-0531,MEaSUREs Northern Hemisphere Terrestrial Snow Cover Extent Weekly 100km EASE-Grid 2.0 V001,NSIDC_CPRD,1966-10-04T00:00:00.000Z,2012-12-31T23:59:59.999Z,-180.0,0.0,180.0,90.0 -C3291000765-NSIDC_CPRD,NSIDC-0532,MEaSUREs Arctic Sea Ice Characterization Daily 25km EASE-Grid 2.0 V001,NSIDC_CPRD,1979-01-01T00:00:00.000Z,2012-12-31T23:59:59.999Z,-180.0,0.0,180.0,90.0 -C3291001072-NSIDC_CPRD,NSIDC-0533,MEaSUREs Greenland Surface Melt Daily 25km EASE-Grid 2.0 V001,NSIDC_CPRD,1979-01-02T00:00:00.000Z,2012-12-31T23:59:59.999Z,-180.0,0.0,180.0,90.0 -C3291002011-NSIDC_CPRD,NSIDC-0534,MEaSUREs Northern Hemisphere State of Cryosphere Daily 25km EASE-Grid 2.0 V001,NSIDC_CPRD,1999-01-01T00:00:00.000Z,2012-12-31T23:59:59.999Z,-180.0,0.0,180.0,90.0 -C3291002174-NSIDC_CPRD,NSIDC-0535,MEaSUREs Northern Hemisphere State of Cryosphere Weekly 100km EASE-Grid 2.0 V001,NSIDC_CPRD,1979-01-02T00:00:00.000Z,2012-12-31T23:59:59.999Z,-180.0,0.0,180.0,90.0 -C3298025582-NSIDC_CPRD,NSIDC-0720,MEaSUREs Annual Antarctic Ice Velocity Maps V001,NSIDC_CPRD,2000-07-01T00:00:00.000Z,2001-06-30T23:59:59.999Z,-180.0,-90.0,180.0,-60.0 -C3177836675-NSIDC_CPRD,NSIDC-0738,SMAP Radiometer Twice-Daily rSIR-Enhanced EASE-Grid 2.0 Brightness Temperatures V002,NSIDC_CPRD,2015-03-31T00:00:00.000Z,2022-12-31T23:59:59.999Z,-180.0,-90.0,180.0,90.0 -C3298047930-NSIDC_CPRD,NSIDC-0754,MEaSUREs Phase-Based Antarctica Ice Velocity Map V001,NSIDC_CPRD,1996-01-01T00:00:00.000Z,2018-12-31T23:59:59.999Z,-180.0,-90.0,180.0,-60.0 -C3298056659-NSIDC_CPRD,NSIDC-0756,MEaSUREs BedMachine Antarctica V003,NSIDC_CPRD,1970-01-01T00:00:00.000Z,2019-10-01T23:59:59.999Z,-180.0,-90.0,180.0,-53.0 -C3298060693-NSIDC_CPRD,NSIDC-0761,MEaSUREs Multi-year Reference Velocity Maps of the Antarctic Ice Sheet V001,NSIDC_CPRD,2014-07-01T00:00:00.000Z,2017-06-30T23:59:59.999Z,-180.0,-90.0,180.0,-60.0 -C3643680627-NSIDC_CPRD,NSIDC-0773,ICESat-2 and CryoSat-2 L4 Monthly Arctic Snow Depth and Sea Ice Thickness V001,NSIDC_CPRD,2018-10-01T00:00:00.000Z,2021-04-30T23:59:59.999Z,-180.0,62.0,180.0,90.0 -C3177836855-NSIDC_CPRD,NSIDC-0774,SMAP Radar Twice-Daily SAR and SIR-Enhanced Scatterometer EASE-Grid 2.0 Radar Backscatter V001,NSIDC_CPRD,2015-04-13T00:00:00.000Z,2015-07-12T23:59:59.999Z,-180.0,-90.0,180.0,90.0 -C3291016291-NSIDC_CPRD,NSIDC-0775,MEaSUREs ITS_LIVE Landsat Image-Pair Glacier and Ice Sheet Surface Velocities V001,NSIDC_CPRD,1982-11-12T00:00:00.000Z,2019-04-27T23:59:59.999Z,-180.0,-90.0,180.0,90.0 -C3618748415-NSIDC_CPRD,NSIDC-0776,MEaSUREs ITS_LIVE Regional Glacier and Ice Sheet Surface Velocities V002,NSIDC_CPRD,1984-01-01T00:00:00.000Z,2022-12-31T23:59:59.999Z,-171.53,-58.71,173.59,85.03 -C3298525136-NSIDC_CPRD,NSIDC-0777,MEaSUREs Greenland Ice Velocity: Selected Glacier Site Single-Pair Velocity Maps from Optical Images V001,NSIDC_CPRD,2016-01-01T00:00:00.000Z,2023-12-29T23:59:59.999Z,-70.0,62.0,-20.0,82.0 -C3298526284-NSIDC_CPRD,NSIDC-0782,MEaSUREs ITS_LIVE Antarctic Grounded Ice Sheet Elevation Change V001,NSIDC_CPRD,1985-04-17T00:00:00.000Z,2020-12-16T23:59:59.999Z,-180.0,-90.0,180.0,-60.0 -C3177836398-NSIDC_CPRD,NSIDC-0786,NSCAT Twice-Daily SIR-Enhanced EASE-Grid 2.0 Radar Backscatter V001,NSIDC_CPRD,1996-09-14T00:00:00.000Z,1997-06-30T23:59:59.999Z,-180.0,-90.0,180.0,90.0 -C3177836482-NSIDC_CPRD,NSIDC-0787,SASS Twice-Daily SIR-Enhanced EASE-Grid 2.0 Radar Backscatter V001,NSIDC_CPRD,1978-07-07T00:00:00.000Z,1978-10-10T23:59:59.999Z,-180.0,-90.0,180.0,90.0 -C3171846878-NSIDC_CPRD,NSIDC-0791,MODIS/Terra Global Annual 0.01Deg CMG Snow Cover Climatology V001,NSIDC_CPRD,2000-03-01T00:00:00.000Z,2023-07-31T23:59:59.999Z,-180.0,-90.0,180.0,90.0 -C3327092253-NSIDC_CPRD,NSIDC-0792,"MEaSUREs ITS_LIVE Antarctic Quarterly 1920 m Ice Shelf Height Change and Basal Melt Rates, 1992-2017 V001",NSIDC_CPRD,1992-03-17T00:00:00.000Z,2017-12-16T23:59:59.999Z,-180.0,-90.0,180.0,-54.0 -C3327092422-NSIDC_CPRD,NSIDC-0793,"MEaSUREs ITS_LIVE Greenland Monthly 120 m Ice Sheet Extent Masks, 1972-2022 V001",NSIDC_CPRD,1972-09-15T00:00:00.000Z,2022-02-15T23:59:59.999Z,-94.4,58.33,11.32,81.51 -C3327092641-NSIDC_CPRD,NSIDC-0794,"MEaSUREs ITS_LIVE Antarctic Annual 240 m Ice Sheet Extent Masks, 1997-2021 V001",NSIDC_CPRD,1997-10-01T00:00:00.000Z,2021-03-14T23:59:59.999Z,-180.0,-90.0,180.0,-57.6 -C1595664379-LARC_ASDC,NVAP_CLIMATE_Layered-Precipitable-Water,NASA Water Vapor Project MEaSUREs (NVAP-M) CLIMATE Layered Precipitable Water,LARC_ASDC,1988-01-01T00:00:00.000000Z,2009-12-01T23:59:59.999999Z,-179.9,-90.0,180.0,90.0 -C1600001034-LARC_ASDC,NVAP_CLIMATE_Total-Precipitable-Water,NASA Water Vapor Project MEaSUREs (NVAP-M) CLIMATE Total Precipitable Water,LARC_ASDC,1988-01-01T00:00:00.000000Z,2009-12-01T23:59:59.999999Z,-179.9,-90.0,180.0,90.0 -C1599730870-LARC_ASDC,NVAP_OCEAN_Total-Precipitable-Water,NASA Water Vapor Project MEaSUREs (NVAP-M) OCEAN Total Precipitable Water,LARC_ASDC,1988-01-01T00:00:00.000000Z,2009-12-01T23:59:59.999999Z,-179.9,-90.0,180.0,90.0 -C1596748680-LARC_ASDC,NVAP_WEATHER_Layered-Precipitable-Water,NASA Water Vapor Project MEaSUREs (NVAP-M) WEATHER Layered Precipitable Water,LARC_ASDC,1988-01-01T00:00:00.000000Z,2009-12-01T23:59:59.999999Z,-179.9,-90.0,180.0,90.0 -C1600355222-LARC_ASDC,NVAP_WEATHER_Total-Precipitable-Water,NASA Water Vapor Project MEaSUREs (NVAP-M) NVAP WEATHER Total Precipitable Water,LARC_ASDC,1988-01-01T00:00:00.000000Z,2009-12-01T23:59:59.999999Z,-179.9,-90.0,180.0,90.0 -C3300834679-OB_CLOUD,OCTS_L1,"ADEOS-I OCTS Level-1A Data, version 2",OB_CLOUD,1996-10-31T00:00:00Z,1997-06-30T23:59:59Z,-180.0,-90.0,180.0,90.0 -C3300834690-OB_CLOUD,OCTS_L2_IOP,"ADEOS-I OCTS Level-2 Regional Inherent Optical Properties (IOP) Data, version 2022.0",OB_CLOUD,1996-10-31T00:00:00Z,1997-06-30T23:59:59Z,-180.0,-90.0,180.0,90.0 -C3300834711-OB_CLOUD,OCTS_L2_OC,"ADEOS-I OCTS Level-2 Regional Ocean Color (OC) Data, version 2022.0",OB_CLOUD,1996-10-31T00:00:00Z,1997-06-30T23:59:59Z,-180.0,-90.0,180.0,90.0 -C3300834719-OB_CLOUD,OCTS_L3b_CHL,"ADEOS-I OCTS Level-3 Global Binned Chlorophyll (CHL) Data, version 2022.0",OB_CLOUD,1996-10-31T00:00:00Z,1997-06-30T23:59:59Z,-180.0,-90.0,180.0,90.0 -C3300834731-OB_CLOUD,OCTS_L3b_IOP,"ADEOS-I OCTS Level-3 Global Binned Inherent Optical Properties (IOP) Data, version 2022.0",OB_CLOUD,1996-10-31T00:00:00Z,1997-06-30T23:59:59Z,-180.0,-90.0,180.0,90.0 -C3300834737-OB_CLOUD,OCTS_L3b_KD,"ADEOS-I OCTS Level-3 Global Binned Diffuse Attenuation Coefficient for Downwelling Irradiance (KD) Data, version 2022.0",OB_CLOUD,1996-10-31T00:00:00Z,1997-06-30T23:59:59Z,-180.0,-90.0,180.0,90.0 -C3300834749-OB_CLOUD,OCTS_L3b_PAR,"ADEOS-I OCTS Level-3 Global Binned Photosynthetically Available Radiation (PAR) Data, version 2022.0",OB_CLOUD,1996-10-31T00:00:00Z,1997-06-30T23:59:59Z,-180.0,-90.0,180.0,90.0 -C3300834762-OB_CLOUD,OCTS_L3b_PIC,"ADEOS-I OCTS Level-3 Global Binned Particulate Inorganic Carbon (PIC) Data, version 2022.0",OB_CLOUD,1996-10-31T00:00:00Z,1997-06-30T23:59:59Z,-180.0,-90.0,180.0,90.0 -C3300834780-OB_CLOUD,OCTS_L3b_POC,"ADEOS-I OCTS Level-3 Global Binned Particulate Organic Carbon (POC) Data, version 2022.0",OB_CLOUD,1996-10-31T00:00:00Z,1997-06-30T23:59:59Z,-180.0,-90.0,180.0,90.0 -C3300834794-OB_CLOUD,OCTS_L3b_RRS,"ADEOS-I OCTS Level-3 Global Binned Remote-Sensing Reflectance (RRS) Data, version 2022.0",OB_CLOUD,1996-10-31T00:00:00Z,1997-06-30T23:59:59Z,-180.0,-90.0,180.0,90.0 -C3300834809-OB_CLOUD,OCTS_L3m_CHL,"ADEOS-I OCTS Level-3 Global Mapped Chlorophyll (CHL) Data, version 2022.0",OB_CLOUD,1996-10-31T00:00:00Z,1997-06-30T23:59:59Z,-180.0,-90.0,180.0,90.0 -C3300834819-OB_CLOUD,OCTS_L3m_IOP,"ADEOS-I OCTS Level-3 Global Mapped Inherent Optical Properties (IOP) Data, version 2022.0",OB_CLOUD,1996-10-31T00:00:00Z,1997-06-30T23:59:59Z,-180.0,-90.0,180.0,90.0 -C3300834825-OB_CLOUD,OCTS_L3m_KD,"ADEOS-I OCTS Level-3 Global Mapped Diffuse Attenuation Coefficient for Downwelling Irradiance (KD) Data, version 2022.0",OB_CLOUD,1996-10-31T00:00:00Z,1997-06-30T23:59:59Z,-180.0,-90.0,180.0,90.0 -C3300834829-OB_CLOUD,OCTS_L3m_PAR,"ADEOS-I OCTS Level-3 Global Mapped Photosynthetically Available Radiation (PAR) Data, version 2022.0",OB_CLOUD,1996-10-31T00:00:00Z,1997-06-30T23:59:59Z,-180.0,-90.0,180.0,90.0 -C3300834831-OB_CLOUD,OCTS_L3m_PIC,"ADEOS-I OCTS Level-3 Global Mapped Particulate Inorganic Carbon (PIC) Data, version 2022.0",OB_CLOUD,1996-10-31T00:00:00Z,1997-06-30T23:59:59Z,-180.0,-90.0,180.0,90.0 -C3300834842-OB_CLOUD,OCTS_L3m_POC,"ADEOS-I OCTS Level-3 Global Mapped Particulate Organic Carbon (POC) Data, version 2022.0",OB_CLOUD,1996-10-31T00:00:00Z,1997-06-30T23:59:59Z,-180.0,-90.0,180.0,90.0 -C3300834849-OB_CLOUD,OCTS_L3m_RRS,"ADEOS-I OCTS Level-3 Global Mapped Remote-Sensing Reflectance (RRS) Data, version 2022.0",OB_CLOUD,1996-10-31T00:00:00Z,1997-06-30T23:59:59Z,-180.0,-90.0,180.0,90.0 -C2095055342-POCLOUD,OISSS_L4_multimission_7day_v1,Multi-Mission Optimally Interpolated Sea Surface Salinity Global Dataset V1,POCLOUD,2011-08-24T12:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2589160971-POCLOUD,OISSS_L4_multimission_7day_v2,Multi-Mission Optimally Interpolated Sea Surface Salinity Global Dataset V2,POCLOUD,2011-08-24T12:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2179010138-POCLOUD,OISSS_L4_multimission_monthly_v1,Multi-Mission Optimally Interpolated Sea Surface Salinity Global Monthly Dataset V1,POCLOUD,2011-09-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2589165108-POCLOUD,OISSS_L4_multimission_monthly_v2,Multi-Mission Optimally Interpolated Sea Surface Salinity Global Monthly Dataset V2,POCLOUD,2011-08-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C1577017384-OB_DAAC,OLCIS3A_L1_EFR,"Sentinel-3A OLCI Level-1B Earth-observation Full Resolution (EFR) Data, version 1",OB_DAAC,2016-04-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C1570120874-OB_DAAC,OLCIS3A_L1_ERR,"Sentinel-3A OLCI Level-1B Earth-observation Reduced Resolution (ERR) Data, version 1",OB_DAAC,2016-04-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3406446181-OB_CLOUD,OLCIS3A_L2_EFR_IOP,"Sentinel-3A OLCI Level-2 Regional Earth-observation Full Resolution (EFR) Inherent Optical Properties (IOP) Data, version 2022.0",OB_CLOUD,2016-04-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3406446161-OB_CLOUD,OLCIS3A_L2_EFR_IOP_NRT,"Sentinel-3A OLCI Level-2 Regional Earth-observation Full Resolution (EFR) Inherent Optical Properties (IOP) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2016-04-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3406446207-OB_CLOUD,OLCIS3A_L2_EFR_OC_NRT,"Sentinel-3A OLCI Level-2 Regional Earth-observation Full Resolution (EFR) Ocean Color (OC) - Near Real-time Data, version 2022.0",OB_CLOUD,2016-04-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3406446278-OB_CLOUD,OLCIS3A_L2_ERR_IOP,"Sentinel-3A OLCI Level-2 Regional Earth-observation Reduced-Resolution (ERR) Inherent Optical Properties (IOP) Data, version 2022.0",OB_CLOUD,2016-04-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3406446252-OB_CLOUD,OLCIS3A_L2_ERR_IOP_NRT,"Sentinel-3A OLCI Level-2 Regional Earth-observation Reduced-Resolution (ERR) Inherent Optical Properties (IOP), Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2016-04-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3406446332-OB_CLOUD,OLCIS3A_L2_ERR_OC,"Sentinel-3A OLCI Level-2 Regional Earth-observation Reduced Resolution (ERR) Ocean Color (OC) Data, version 2022.0",OB_CLOUD,2016-04-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3406446308-OB_CLOUD,OLCIS3A_L2_ERR_OC_NRT,"Sentinel-3A OLCI Level-2 Regional Earth-observation Reduced Resolution (ERR) Ocean Color (OC) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2016-04-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3433948389-OB_CLOUD,OLCIS3A_L2_ILW,"Sentinel-3A OLCI Regional Inland Waters (ILW) Data, version 5.0",OB_CLOUD,2016-04-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3406447058-OB_CLOUD,OLCIS3A_L3b_ERR_CHL,"Sentinel-3A OLCI Level-3 Global Binned Earth-observation Reduced Resolution (ERR) Chlorophyll (CHL) Data, version 2022.0",OB_CLOUD,2016-04-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3406446957-OB_CLOUD,OLCIS3A_L3b_ERR_CHL_NRT,"Sentinel-3A OLCI Level-3 Global Binned Earth-observation Reduced Resolution (ERR) Chlorophyll (CHL) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2016-04-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3406447141-OB_CLOUD,OLCIS3A_L3b_ERR_IOP,"Sentinel-3A OLCI Level-3 Global Binned Earth-observation Reduced-Resolution (ERR) Inherent Optical Properties (IOP) Data, version 2022.0",OB_CLOUD,2016-04-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3406447138-OB_CLOUD,OLCIS3A_L3b_ERR_IOP_NRT,"Sentinel-3A OLCI Level-3 Global Binned Earth-observation Reduced-Resolution (ERR) Inherent Optical Properties (IOP), Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2016-04-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3406447152-OB_CLOUD,OLCIS3A_L3b_ERR_KD,"Sentinel-3A OLCI Level-3 Global Binned Earth-observation Reduced Resolution (ERR) Diffuse Attenuation Coefficient for Downwelling Irradiance (KD) Data, version 2022.0",OB_CLOUD,2016-04-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3406447149-OB_CLOUD,OLCIS3A_L3b_ERR_KD_NRT,"Sentinel-3A OLCI Level-3 Global Binned Earth-observation Reduced Resolution (ERR) Diffuse Attenuation Coefficient for Downwelling Irradiance (KD) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2016-04-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3406447155-OB_CLOUD,OLCIS3A_L3b_ERR_RRS,"Sentinel-3A OLCI Level-3 Global Binned Earth-observation Reduced Resolution (ERR) Remote-Sensing Reflectance (RRS) Data, version 2022.0",OB_CLOUD,2016-04-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3406447154-OB_CLOUD,OLCIS3A_L3b_ERR_RRS_NRT,"Sentinel-3A OLCI Level-3 Global Binned Earth-observation Reduced Resolution (ERR) Remote-Sensing Reflectance (RRS) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2016-04-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3433948434-OB_CLOUD,OLCIS3A_L3b_ILW,"Sentinel-3A OLCI Regional Binned Inland Waters (ILW) Data, version 5.0",OB_CLOUD,2016-04-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3406447185-OB_CLOUD,OLCIS3A_L3m_ERR_CHL,"Sentinel-3A OLCI Level-3 Global Mapped Earth-observation Reduced Resolution (ERR) Chlorophyll (CHL) Data, version 2022.0",OB_CLOUD,2016-04-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3406447181-OB_CLOUD,OLCIS3A_L3m_ERR_CHL_NRT,"Sentinel-3A OLCI Level-3 Global Mapped Earth-observation Reduced Resolution (ERR) Chlorophyll (CHL) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2016-04-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3406447204-OB_CLOUD,OLCIS3A_L3m_ERR_IOP,"Sentinel-3A OLCI Level-3 Global Mapped Earth-observation Reduced-Resolution (ERR) Inherent Optical Properties (IOP) Data, version 2022.0",OB_CLOUD,2016-04-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3406447196-OB_CLOUD,OLCIS3A_L3m_ERR_IOP_NRT,"Sentinel-3A OLCI Level-3 Global Mapped Earth-observation Reduced-Resolution (ERR) Inherent Optical Properties (IOP), Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2016-04-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3406447220-OB_CLOUD,OLCIS3A_L3m_ERR_KD,"Sentinel-3A OLCI Level-3 Global Mapped Earth-observation Reduced Resolution (ERR) Diffuse Attenuation Coefficient for Downwelling Irradiance (KD) Data, version 2022.0",OB_CLOUD,2016-04-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3406447213-OB_CLOUD,OLCIS3A_L3m_ERR_KD_NRT,"Sentinel-3A OLCI Level-3 Global Mapped Earth-observation Reduced Resolution (ERR) Diffuse Attenuation Coefficient for Downwelling Irradiance (KD) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2016-04-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3406447239-OB_CLOUD,OLCIS3A_L3m_ERR_RRS,"Sentinel-3A OLCI Level-3 Global Mapped Earth-observation Reduced Resolution (ERR) Remote-Sensing Reflectance (RRS) Data, version 2022.0",OB_CLOUD,2016-04-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3406447225-OB_CLOUD,OLCIS3A_L3m_ERR_RRS_NRT,"Sentinel-3A OLCI Level-3 Global Mapped Earth-observation Reduced Resolution (ERR) Remote-Sensing Reflectance (RRS) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2016-04-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3433948475-OB_CLOUD,OLCIS3A_L3m_ILW,"Sentinel-3A OLCI Regional Mapped Inland Waters (ILW) Data, version 5.0",OB_CLOUD,2016-04-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3455985664-OB_CLOUD,OLCIS3A_L4b_ERR_AVW,"Sentinel-3A OLCI Level-4 Global Binned Earth-observation Reduced Resolution (ERR) Apparent Visible Wavelength (AVW) Data, version 2022.0",OB_CLOUD,2016-04-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3455985669-OB_CLOUD,OLCIS3A_L4b_ERR_CARBON,"Sentinel-3A OLCI Level-4 Global Binned Earth-observation Reduced Resolution (ERR) Phytoplankton Carbon Data, version 2022.0",OB_CLOUD,2016-04-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3455985680-OB_CLOUD,OLCIS3A_L4m_ERR_AVW,"Sentinel-3A OLCI Level-4 Global Mapped Earth-observation Reduced Resolution (ERR) Apparent Visible Wavelength (AVW) Data, version 2022.0",OB_CLOUD,2016-04-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3455985703-OB_CLOUD,OLCIS3A_L4m_ERR_CARBON,"Sentinel-3A OLCI Level-4 Global Mapped Earth-observation Reduced Resolution (ERR) Phytoplankton Carbon Data, version 2022.0",OB_CLOUD,2016-04-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C1615893450-OB_DAAC,OLCIS3B_L1_EFR,"Sentinel-3B OLCI Data, version 1",OB_DAAC,2018-04-25T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C1615893452-OB_DAAC,OLCIS3B_L1_ERR,"Sentinel-3B OLCI Earth-observation Reduced Resolution (ERR) Data, version 1",OB_DAAC,2018-04-25T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3407754937-OB_CLOUD,OLCIS3B_L2_EFR_IOP,"Sentinel-3B OLCI Level-2 Regional Earth-observation Full Resolution (EFR) Inherent Optical Properties (IOP) Data, version 2022.0",OB_CLOUD,2018-05-14T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3407754902-OB_CLOUD,OLCIS3B_L2_EFR_IOP_NRT,"Sentinel-3B OLCI Level-2 Regional Earth-observation Full Resolution (EFR) Inherent Optical Properties (IOP) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2018-04-25T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3407754966-OB_CLOUD,OLCIS3B_L2_EFR_OC_NRT,"Sentinel-3B OLCI Level-2 Regional Earth-observation Full Resolution (EFR) Ocean Color (OC) - Near Real-time Data, version 2022.0",OB_CLOUD,2018-04-25T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3407754995-OB_CLOUD,OLCIS3B_L2_ERR_IOP,"Sentinel-3B OLCI Level-2 Regional Earth-observation Reduced-Resolution (ERR) Inherent Optical Properties (IOP) Data, version 2022.0",OB_CLOUD,2018-05-14T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3407754982-OB_CLOUD,OLCIS3B_L2_ERR_IOP_NRT,"Sentinel-3B OLCI Level-2 Regional Earth-observation Reduced-Resolution (ERR) Inherent Optical Properties (IOP), Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2018-04-25T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3407755020-OB_CLOUD,OLCIS3B_L2_ERR_OC,"Sentinel-3B OLCI Level-2 Regional Earth-observation Reduced Resolution (ERR) Ocean Color (OC) Data, version 2022.0",OB_CLOUD,2018-05-14T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3407754999-OB_CLOUD,OLCIS3B_L2_ERR_OC_NRT,"Sentinel-3B OLCI Level-2 Regional Earth-observation Reduced Resolution (ERR) Ocean Color (OC) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2018-04-25T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3433948481-OB_CLOUD,OLCIS3B_L2_ILW,"Sentinel-3B OLCI Regional Inland Waters (ILW) Data, version 5.0",OB_CLOUD,2018-05-14T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3407755061-OB_CLOUD,OLCIS3B_L3b_ERR_CHL,"Sentinel-3B OLCI Level-3 Global Binned Earth-observation Reduced Resolution (ERR) Chlorophyll (CHL) Data, version 2022.0",OB_CLOUD,2018-05-14T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3407755035-OB_CLOUD,OLCIS3B_L3b_ERR_CHL_NRT,"Sentinel-3B OLCI Level-3 Global Binned Earth-observation Reduced Resolution (ERR) Chlorophyll (CHL) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2018-04-25T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3407755113-OB_CLOUD,OLCIS3B_L3b_ERR_IOP,"Sentinel-3B OLCI Level-3 Global Binned Earth-observation Reduced-Resolution (ERR) Inherent Optical Properties (IOP) Data, version 2022.0",OB_CLOUD,2018-05-14T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3407755095-OB_CLOUD,OLCIS3B_L3b_ERR_IOP_NRT,"Sentinel-3B OLCI Level-3 Global Binned Earth-observation Reduced-Resolution (ERR) Inherent Optical Properties (IOP), Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2018-04-25T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3407755164-OB_CLOUD,OLCIS3B_L3b_ERR_KD,"Sentinel-3B OLCI Level-3 Global Binned Earth-observation Reduced Resolution (ERR) Diffuse Attenuation Coefficient for Downwelling Irradiance (KD) Data, version 2022.0",OB_CLOUD,2018-05-14T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3407755134-OB_CLOUD,OLCIS3B_L3b_ERR_KD_NRT,"Sentinel-3B OLCI Level-3 Global Binned Earth-observation Reduced Resolution (ERR) Diffuse Attenuation Coefficient for Downwelling Irradiance (KD) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2018-04-25T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3407755197-OB_CLOUD,OLCIS3B_L3b_ERR_RRS,"Sentinel-3B OLCI Level-3 Global Binned Earth-observation Reduced Resolution (ERR) Remote-Sensing Reflectance (RRS) Data, version 2022.0",OB_CLOUD,2018-05-14T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3407755180-OB_CLOUD,OLCIS3B_L3b_ERR_RRS_NRT,"Sentinel-3B OLCI Level-3 Global Binned Earth-observation Reduced Resolution (ERR) Remote-Sensing Reflectance (RRS) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2018-04-25T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3433948484-OB_CLOUD,OLCIS3B_L3b_ILW,"Sentinel-3B OLCI Regional Binned Inland Waters (ILW) Data, version 5.0",OB_CLOUD,2018-05-14T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3407755281-OB_CLOUD,OLCIS3B_L3m_ERR_CHL,"Sentinel-3B OLCI Level-3 Global Mapped Earth-observation Reduced Resolution (ERR) Chlorophyll (CHL) Data, version 2022.0",OB_CLOUD,2018-05-14T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3407755261-OB_CLOUD,OLCIS3B_L3m_ERR_CHL_NRT,"Sentinel-3B OLCI Level-3 Global Mapped Earth-observation Reduced Resolution (ERR) Chlorophyll (CHL) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2018-04-25T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3407755313-OB_CLOUD,OLCIS3B_L3m_ERR_IOP,"Sentinel-3B OLCI Level-3 Global Mapped Earth-observation Reduced-Resolution (ERR) Inherent Optical Properties (IOP) Data, version 2022.0",OB_CLOUD,2018-05-14T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3407755301-OB_CLOUD,OLCIS3B_L3m_ERR_IOP_NRT,"Sentinel-3B OLCI Level-3 Global Mapped Earth-observation Reduced-Resolution (ERR) Inherent Optical Properties (IOP), Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2018-04-25T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3407755331-OB_CLOUD,OLCIS3B_L3m_ERR_KD,"Sentinel-3B OLCI Level-3 Global Mapped Earth-observation Reduced Resolution (ERR) Diffuse Attenuation Coefficient for Downwelling Irradiance (KD) Data, version 2022.0",OB_CLOUD,2018-05-14T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3407755328-OB_CLOUD,OLCIS3B_L3m_ERR_KD_NRT,"Sentinel-3B OLCI Level-3 Global Mapped Earth-observation Reduced Resolution (ERR) Diffuse Attenuation Coefficient for Downwelling Irradiance (KD) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2018-04-25T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3407755341-OB_CLOUD,OLCIS3B_L3m_ERR_RRS,"Sentinel-3B OLCI Level-3 Global Mapped Earth-observation Reduced Resolution (ERR) Remote-Sensing Reflectance (RRS) Data, version 2022.0",OB_CLOUD,2018-05-14T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3407755332-OB_CLOUD,OLCIS3B_L3m_ERR_RRS_NRT,"Sentinel-3B OLCI Level-3 Global Mapped Earth-observation Reduced Resolution (ERR) Remote-Sensing Reflectance (RRS) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2018-04-25T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3433948487-OB_CLOUD,OLCIS3B_L3m_ILW,"Sentinel-3B OLCI Regional Mapped Inland Waters (ILW) Data, version 5.0",OB_CLOUD,2018-05-14T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3455985719-OB_CLOUD,OLCIS3B_L4b_ERR_AVW,"Sentinel-3B OLCI Level-4 Global Binned Earth-observation Reduced Resolution (ERR) Apparent Visible Wavelength (AVW) Data, version 2022.0",OB_CLOUD,2018-04-25T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3455985752-OB_CLOUD,OLCIS3B_L4b_ERR_CARBON,"Sentinel-3B OLCI Level-4 Global Binned Earth-observation Reduced Resolution (ERR) Phytoplankton Carbon Data, version 2022.0",OB_CLOUD,2018-04-25T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3455985772-OB_CLOUD,OLCIS3B_L4m_ERR_AVW,"Sentinel-3B OLCI Level-4 Global Mapped Earth-observation Reduced Resolution (ERR) Apparent Visible Wavelength (AVW) Data, version 2022.0",OB_CLOUD,2018-04-25T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3455985797-OB_CLOUD,OLCIS3B_L4m_ERR_CARBON,"Sentinel-3B OLCI Level-4 Global Mapped Earth-observation Reduced Resolution (ERR) Phytoplankton Carbon Data, version 2022.0",OB_CLOUD,2018-04-25T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C2491772153-POCLOUD,OMG_L2_AXBT,OMG Level 2 Airborne eXpendable Bathy Thermograph (AXBT) Profiles,POCLOUD,2020-09-02T17:52:10.000Z,2021-09-16T18:14:06.000Z,-180.0,59.1,180.0,83.6 -C2205122616-POCLOUD,OMG_L2_AXCTD,OMG Airborne eXpendable Conductivity Temperature Depth (AXCTD) Profiles,POCLOUD,2016-09-13T15:26:43.000Z,2021-12-31T15:02:12.000Z,-180.0,59.1,180.0,83.6 -C2491772154-POCLOUD,OMG_L2_Bathy_MBES_Gridded,OMG Swath Gridded Multibeam Echo Sounding (MBES) Bathymetry,POCLOUD,2015-07-25T00:00:00.000Z,2021-08-31T23:59:59.999Z,-73.6,59.1,-6.9,83.6 -C2491772155-POCLOUD,OMG_L2_Bathy_SBES_Gridded,OMG Swath Gridded Singlebeam Echo Sounding (SBES) Bathymetry,POCLOUD,2015-08-04T00:00:00.000Z,2016-08-16T00:00:00.000Z,-180.0,59.1,180.0,83.6 -C2491772156-POCLOUD,OMG_L2_CTD,OMG Conductivity Temperature Depth (CTD) Profiles,POCLOUD,2015-07-25T07:17:58.000Z,2020-08-23T17:57:58.000Z,-74.576,60.351,53.406,79.841 -C2837134642-POCLOUD,OMG_NARWHALS_MOORING_TEMP_CTD_1.0,"OMG Narwhals oceanographic data from moorings, 2018-2020",POCLOUD,2018-08-01T00:00:00.000Z,2020-08-31T00:00:00.000Z,-61.726983,75.841817,-58.410533,76.103817 -C2837135414-POCLOUD,OMG_NARWHALS_SHIPBOARD_CTD_1.0,"OMG Narwhals Shipboard Conductivity, Temperature, and Depth (CTD) profiles, 2018-2020",POCLOUD,2018-08-01T00:00:00.000Z,2020-08-31T00:00:00.000Z,-61.726983,75.841817,-58.410533,76.103817 -C3717139408-ASF,OPERA_L4_TROPO-ZENITH_V1,OPERA Tropospheric Correction at Zenith validated product (Version 1),ASF,2016-07-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C1703976441-LARC_ASDC,ORACLES_AerosolCloud_AircraftRemoteSensing_Data,ORACLES Aerosol Cloud Aircraft Remote Sensing Data,LARC_ASDC,2016-07-28T00:00:00.000Z,2019-03-23T23:59:59.999Z,-126.0,-76.0,40.0,45.0 -C2303156665-LARC_ASDC,ORACLES_Merge_Data,ORACLES Merge Data Files,LARC_ASDC,2016-07-28T00:00:00.000Z,2019-03-23T23:59:59.999Z,-126.0,-35.0,14.94,41.0 -C2036882482-POCLOUD,OS2_OSCAT_LEVEL_2B_OWV_COMP_12_V2,Oceansat-2 Scatterometer Level 2B Ocean Wind Vectors in 12.5km Slice Composites Version 2,POCLOUD,2010-01-16T00:25:23.000Z,2014-02-20T23:59:59.999Z,-180.0,-90.0,180.0,90.0 -C3534746437-OB_CLOUD,OSCAR_L4m_ELOEV,"OSCAR Global Mapped Eulerian and Lagrangian Oceanography and Ecology Variables Data, version 1",OB_CLOUD,2000-01-01T00:00:00.00Z,2009-12-31T23:59:59.99Z,-180.0,-90.0,180.0,90.0 -C1997465387-LARC_ASDC,OWLETS1_Model_Data,OWLETS-1 Analysis Model Data,LARC_ASDC,2017-07-17T00:00:00.000Z,2017-07-22T23:59:59.999Z,-79.0,34.0,-73.0,41.0 -C3525268031-LARC_CLOUD,PACE-PAX_AircraftRemoteSensing_ER2_AirHARP2-MAP_Data,PACE-PAX ER-2 Airborne Hyper-Angular Rainbow Polarimeter - 2 (AirHARP2) Data,LARC_CLOUD,2024-09-04T00:00:00.000Z,2024-10-01T00:00:00.000Z,-135.0,-45.0,135.0,58.11 -C3525269038-LARC_CLOUD,PACE-PAX_AircraftRemoteSensing_ER2_PRISM-PICARD-L1C_Data,PACE-PAX ER-2 PRISM/PICARD Merged Level-1C Data,LARC_CLOUD,2024-09-04T00:00:00.000Z,2024-10-01T00:00:00.000Z,-128.62,31.57,-112.28,42.31 -C3525267343-LARC_CLOUD,PACE-PAX_AircraftRemoteSensing_ER2_RSP_Data,PACE-PAX ER-2 Research Scanning Polarimeter (RSP) Data,LARC_CLOUD,2024-08-29T00:00:00.000Z,2024-10-02T00:00:00.000Z,-128.52,31.58,-112.42,42.42 -C3525269528-LARC_CLOUD,PACE-PAX_AircraftRemoteSensing_ER2_SPEXAIRBORNE_Data,PACE-PAX ER-2 Spectro-Polarimeter for Exploration - Airborne (SPEX Airborne) Data,LARC_CLOUD,2024-08-28T00:00:00.000Z,2024-10-01T00:00:00.000Z,-128.76,31.36,-112.16,42.54 -C3525272812-LARC_CLOUD,PACE-PAX_Analysis_ISARA_Data,PACE-PAX CIRPAS Twin Otter In-Situ Aerosol Retrieval Algorithm (ISARA) Analysis Data,LARC_CLOUD,2024-09-03T00:00:00.000Z,2024-09-29T00:00:00.000Z,-124.24,33.62,-116.98,38.1 -C3020918309-OB_CLOUD,PACE_EPH_DEF,"PACE Definitive Ephemeris Data Data, V1",OB_CLOUD,2024-02-08T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C2804798238-OB_CLOUD,PACE_HARP2_L0_D1,"PACE HARP2 Level-0 Detector 1 (D1) Data, V1",OB_CLOUD,2024-02-08T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C2804798239-OB_CLOUD,PACE_HARP2_L0_D2,"PACE HARP2 Level-0 Detector 2 (D2) Data, V1",OB_CLOUD,2024-02-08T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C2804798240-OB_CLOUD,PACE_HARP2_L0_D3,"PACE HARP2 Level-0 Detector 3 (D3) Data, V1",OB_CLOUD,2024-02-08T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3556542317-OB_CLOUD,PACE_HARP2_L1A_SCI,"PACE HARP2 Level-1A Science Data, version 3",OB_CLOUD,2024-02-22T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3555841897-OB_CLOUD,PACE_HARP2_L1B_SCI,"PACE HARP2 Level-1B Science Data, version 3",OB_CLOUD,2024-02-22T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3600169991-OB_CLOUD,PACE_HARP2_L2_CLOUD_GPC,"PACE HARP2 Level-2 Regional Cloud Optical Properties, GISS Polarimetric Cloud (GPC) Algorithm Data, version 3.0",OB_CLOUD,2024-02-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3600169974-OB_CLOUD,PACE_HARP2_L2_CLOUD_GPC_NRT,"PACE HARP2 Level-2 Regional Cloud Optical Properties, GISS Polarimetric Cloud (GPC) Algorithm - Near Real-time (NRT) Data, version 3.0",OB_CLOUD,2024-02-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3652817390-OB_CLOUD,PACE_HARP2_L2_MAPOL_OCEAN,"PACE HARP2 Level-2 Regional Aerosol Optical Properties, FastMAPOL Algorithm Data, version 3.0",OB_CLOUD,2024-02-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3652817338-OB_CLOUD,PACE_HARP2_L2_MAPOL_OCEAN_NRT,"PACE HARP2 Level-2 Regional Aerosol Over Ocean Optical Properties, FastMAPOL Algorithm - Near Real-time (NRT) Data, version 3.0",OB_CLOUD,2024-02-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3600170036-OB_CLOUD,PACE_HARP2_L3M_CLOUD_GPC,"PACE HARP2 Level-3 Global Mapped Cloud Optical Properties, GISS Polarimetric Cloud (GPC) Algorithm Data, version 3.0",OB_CLOUD,2024-02-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3600170019-OB_CLOUD,PACE_HARP2_L3M_CLOUD_GPC_NRT,"PACE HARP2 Level-3 Global Cloud Optical Properties, GISS Polarimetric Cloud (GPC) Algorithm - Near Real-time (NRT) Data, version 3.0",OB_CLOUD,2024-02-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3652817380-OB_CLOUD,PACE_HARP2_L3M_MAPOL_OCEAN,"PACE HARP2 Level-3 Global Mapped Aerosol Over Ocean Optical Properties, FastMAPOL Algorithm Data, version 3.0",OB_CLOUD,2024-02-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3652817360-OB_CLOUD,PACE_HARP2_L3M_MAPOL_OCEAN_NRT,"PACE HARP2 Level-3 Global Aerosol Over Ocean Optical Properties, FastMAPOL Algorithm - Near Real-time (NRT) Data, version 3.0",OB_CLOUD,2024-02-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C2832273136-OB_CLOUD,PACE_HKT,"PACE Spacecraft Housekeeping, NetCDF format Data, V1",OB_CLOUD,2024-02-08T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C2869693107-OB_CLOUD,PACE_HSK,"PACE Spacecraft Housekeeping Data, V1",OB_CLOUD,2024-02-08T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C2804798309-OB_CLOUD,PACE_OCI_L0_SCI,"PACE OCI Level-0 Science Data, version 1",OB_CLOUD,2024-02-08T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3026581050-OB_CLOUD,PACE_OCI_L1A_SCI,"PACE OCI Level-1A Science Data, V2",OB_CLOUD,2024-02-25T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620139465-OB_CLOUD,PACE_OCI_L2_AER_UAA,"PACE OCI Level-2 Regional Aerosol Optical Properties, Unified Aerosol Algorithm (UAA) Algorithm Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620139598-OB_CLOUD,PACE_OCI_L2_AOP,"PACE OCI Level-2 Regional Apparent Optical Properties Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620139680-OB_CLOUD,PACE_OCI_L2_BGC,"PACE OCI Level-2 Regional Ocean Biogeochemical Properties Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620139813-OB_CLOUD,PACE_OCI_L2_CLOUD,"PACE OCI Level-2 Regional Cloud Optical Properties Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620139782-OB_CLOUD,PACE_OCI_L2_CLOUD_MASK,"PACE OCI Level-2 Regional Cloud Mask Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620139761-OB_CLOUD,PACE_OCI_L2_CLOUD_MASK_NRT,"PACE OCI Level-2 Regional Cloud Mask - Near Real-time (NRT) Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620139797-OB_CLOUD,PACE_OCI_L2_CLOUD_NRT,"PACE OCI Level-2 Regional Cloud Optical Properties - Near Real-time (NRT) Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620139828-OB_CLOUD,PACE_OCI_L2_IOP,"PACE OCI Level-2 Regional Inherent Optical Properties (IOP) Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620139822-OB_CLOUD,PACE_OCI_L2_IOP_NRT,"PACE OCI Level-2 Regional Inherent Optical Properties (IOP) - Near Real-time (NRT) Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620139839-OB_CLOUD,PACE_OCI_L2_LANDVI,"PACE OCI Level-2 Regional Land Vegetation Indices Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620139833-OB_CLOUD,PACE_OCI_L2_LANDVI_NRT,"PACE OCI Level-2 Regional Land Vegetation Indices - Near Real-time (NRT) Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620139852-OB_CLOUD,PACE_OCI_L2_PAR,"PACE OCI Level-2 Regional Photosynthetically Available Radiation (PAR) Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620139844-OB_CLOUD,PACE_OCI_L2_PAR_NRT,"PACE OCI Level-2 Regional Photosynthetically Available Radiation (PAR) - Near Real-time (NRT) Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620139902-OB_CLOUD,PACE_OCI_L2_SFREFL,"PACE OCI Level-2 Regional Surface Reflectance Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620139979-OB_CLOUD,PACE_OCI_L2_UVAI_UAA,"PACE OCI Level-2 Regional Aerosol Index, Unified Aerosol Algorithm (UAA) Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620140062-OB_CLOUD,PACE_OCI_L3B_AVW,"PACE OCI Level-3 Global Binned Apparent Visible Wavelength (AVW) Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620140047-OB_CLOUD,PACE_OCI_L3B_AVW_NRT,"PACE OCI Level-3 Global Binned Apparent Visible Wavelength (AVW) - Near Real-time (NRT) Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620140089-OB_CLOUD,PACE_OCI_L3B_CARBON,"PACE OCI Level-3 Global Binned Carbon Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620140085-OB_CLOUD,PACE_OCI_L3B_CARBON_NRT,"PACE OCI Level-3 Global Binned Carbon, Near Real-time (NRT) Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620140099-OB_CLOUD,PACE_OCI_L3B_CHL,"PACE OCI Level-3 Global Binned Chlorophyll (CHL) Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620140094-OB_CLOUD,PACE_OCI_L3B_CHL_NRT,"PACE OCI Level-3 Global Binned Chlorophyll (CHL) - NRT Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620140123-OB_CLOUD,PACE_OCI_L3B_FLH,"PACE OCI Level-3 Global Binned Fluorescence Line Height (FLH) Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620140101-OB_CLOUD,PACE_OCI_L3B_FLH_NRT,"PACE OCI Level-3 Global Binned Fluorescence Line Height (FLH) - Near Real-time (NRT) Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620140137-OB_CLOUD,PACE_OCI_L3B_IOP,"PACE OCI Level-3 Global Binned Inherent Optical Properties (IOP) Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620140130-OB_CLOUD,PACE_OCI_L3B_IOP_NRT,"PACE OCI Level-3 Global Binned Inherent Optical Properties (IOP) - Near Real-time (NRT) Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620140143-OB_CLOUD,PACE_OCI_L3B_KD,"PACE OCI Level-3 Global Binned Diffuse Attenuation Coefficient for Downwelling Irradiance (KD) Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620140140-OB_CLOUD,PACE_OCI_L3B_KD_NRT,"PACE OCI Level-3 Global Binned Diffuse Attenuation Coefficient for Downwelling Irradiance (KD) - Near Real-time (NRT) Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620140152-OB_CLOUD,PACE_OCI_L3B_LANDVI,"PACE OCI Level-3 Global Binned Land Vegetation Indices Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620140148-OB_CLOUD,PACE_OCI_L3B_LANDVI_NRT,"PACE OCI Level-3 Global Binned Land Vegetation Indices - Near Real-time (NRT) Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620140155-OB_CLOUD,PACE_OCI_L3B_PAR,"PACE OCI Level-3 Global Binned Photosynthetically Available Radiation (PAR) Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620140153-OB_CLOUD,PACE_OCI_L3B_PAR_NRT,"PACE OCI Level-3 Global Binned Photosynthetically Available Radiation (PAR) - Near Real-time (NRT) Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620140165-OB_CLOUD,PACE_OCI_L3B_POC,"PACE OCI Level-3 Global Binned Particulate Organic Carbon (POC) Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620140159-OB_CLOUD,PACE_OCI_L3B_POC_NRT,"PACE OCI Level-3 Global Binned Particulate Organic Carbon (POC) - Near Real-time (NRT) Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620140171-OB_CLOUD,PACE_OCI_L3B_RRS,"PACE OCI Level-3 Global Binned Remote-Sensing Reflectance (RRS) Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620140167-OB_CLOUD,PACE_OCI_L3B_RRS_NRT,"PACE OCI Level-3 Global Binned Remote-Sensing Reflectance (RRS) - NRT Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620140190-OB_CLOUD,PACE_OCI_L3B_SFREFL,"PACE OCI Level-3 Global Binned Surface Reflectance Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620140174-OB_CLOUD,PACE_OCI_L3B_SFREFL_NRT,"PACE OCI Level-3 Global Binned Surface Reflectance - Near Real-time (NRT) Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620140231-OB_CLOUD,PACE_OCI_L3M_AER_UAA,"PACE OCI Level-3 Global Mapped Aerosol Optical Properties, Unified Aerosol Algorithm (UAA) Algorithm Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620140248-OB_CLOUD,PACE_OCI_L3M_AVW,"PACE OCI Level-3 Global Mapped Apparent Visible Wavelength (AVW) Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620140246-OB_CLOUD,PACE_OCI_L3M_AVW_NRT,"PACE OCI Level-3 Global Mapped Apparent Visible Wavelength (AVW) - Near Real-time (NRT) Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620140254-OB_CLOUD,PACE_OCI_L3M_CARBON,"PACE OCI Level-3 Global Mapped Carbon Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620140253-OB_CLOUD,PACE_OCI_L3M_CARBON_NRT,"PACE OCI Level-3 Global Mapped Carbon, Near Real-time (NRT) Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620140256-OB_CLOUD,PACE_OCI_L3M_CHL,"PACE OCI Level-3 Global Mapped Chlorophyll (CHL) Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620140255-OB_CLOUD,PACE_OCI_L3M_CHL_NRT,"PACE OCI Level-3 Global Mapped Chlorophyll (CHL) - NRT Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620140269-OB_CLOUD,PACE_OCI_L3M_CLOUD,"PACE OCI Level-3 Global Mapped Cloud Optical Properties Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620140267-OB_CLOUD,PACE_OCI_L3M_CLOUD_NRT,"PACE OCI Level-3 Global Mapped Cloud Optical Properties - Near Real-time (NRT) Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620140277-OB_CLOUD,PACE_OCI_L3M_FLH,"PACE OCI Level-3 Global Mapped Fluorescence Line Height (FLH) Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620140273-OB_CLOUD,PACE_OCI_L3M_FLH_NRT,"PACE OCI Level-3 Global Mapped Fluorescence Line Height (FLH) - Near Real-time (NRT) Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620140295-OB_CLOUD,PACE_OCI_L3M_IOP,"PACE OCI Level-3 Global Mapped Inherent Optical Properties (IOP) Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620140278-OB_CLOUD,PACE_OCI_L3M_IOP_NRT,"PACE OCI Level-3 Global Mapped Inherent Optical Properties (IOP) - Near Real-time (NRT) Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620140322-OB_CLOUD,PACE_OCI_L3M_KD,"PACE OCI Level-3 Global Mapped Diffuse Attenuation Coefficient for Downwelling Irradiance (KD) Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620140305-OB_CLOUD,PACE_OCI_L3M_KD_NRT,"PACE OCI Level-3 Global Mapped Diffuse Attenuation Coefficient for Downwelling Irradiance (KD) - Near Real-time (NRT) Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620140363-OB_CLOUD,PACE_OCI_L3M_LANDVI,"PACE OCI Level-3 Global Mapped Land Vegetation Indices Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620140344-OB_CLOUD,PACE_OCI_L3M_LANDVI_NRT,"PACE OCI Level-3 Global Mapped Land Vegetation Indices - Near Real-time (NRT) Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620140402-OB_CLOUD,PACE_OCI_L3M_PAR,"PACE OCI Level-3 Global Mapped Photosynthetically Available Radiation (PAR) Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620140397-OB_CLOUD,PACE_OCI_L3M_PAR_NRT,"PACE OCI Level-3 Global Mapped Photosynthetically Available Radiation (PAR) - Near Real-time (NRT) Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620140426-OB_CLOUD,PACE_OCI_L3M_POC,"PACE OCI Level-3 Global Mapped Particulate Organic Carbon (POC) Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620140420-OB_CLOUD,PACE_OCI_L3M_POC_NRT,"PACE OCI Level-3 Global Mapped Particulate Organic Carbon (POC) - Near Real-time (NRT) Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620140444-OB_CLOUD,PACE_OCI_L3M_RRS,"PACE OCI Level-3 Global Mapped Remote-Sensing Reflectance (RRS) Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620140436-OB_CLOUD,PACE_OCI_L3M_RRS_NRT,"PACE OCI Level-3 Global Mapped Remote-Sensing Reflectance (RRS) - NRT Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620140468-OB_CLOUD,PACE_OCI_L3M_SFREFL,"PACE OCI Level-3 Global Mapped Surface Reflectance Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3620140454-OB_CLOUD,PACE_OCI_L3M_SFREFL_NRT,"PACE OCI Level-3 Global Mapped Surface Reflectance - Near Real-time (NRT) Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3752338477-OB_CLOUD,PACE_OCI_L4M_MOANA,"PACE OCI Level-4 Regional Mapped Multi-Ordination ANAlysis (MOANA) Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3752309934-OB_CLOUD,PACE_OCI_L4M_MOANA_NRT,"PACE OCI Level-4 Regional Mapped Multi-Ordination ANAlysis (MOANA), Near Real-time (NRT) Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3294162788-OB_CLOUD,PACE_SPEXONE_L1A_SCI,"PACE SPEXone Level-1A Science Data, version 3",OB_CLOUD,2024-02-23T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3285304315-OB_CLOUD,PACE_SPEXONE_L1B_SCI,"PACE SPEXone Level-1B Science Data, version 3",OB_CLOUD,2024-02-23T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3555839907-OB_CLOUD,PACE_SPEXONE_L2_AER_RTAPLAND,"PACE SPEXone Level-2 Regional Aerosol Optical Properties Over Land, RemoTAP Algorithm Data, version 3.0",OB_CLOUD,2024-02-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3555839744-OB_CLOUD,PACE_SPEXONE_L2_AER_RTAPLAND_NRT,"PACE SPEXone Level-2 Regional Aerosol Optical Properties Over Land, RemoTAP Algorithm - Near Real-time (NRT) Data, version 3.0",OB_CLOUD,2024-02-25T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3555840220-OB_CLOUD,PACE_SPEXONE_L2_AER_RTAPOCEAN,"PACE SPEXone Level-2 Regional Aerosol Optical Properties Over Ocean, RemoTAP Algorithm Data, version 3.0",OB_CLOUD,2024-02-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3555840000-OB_CLOUD,PACE_SPEXONE_L2_AER_RTAPOCEAN_NRT,"PACE SPEXone Level-2 Regional Aerosol Optical Properties Over Ocean, RemoTAP Algorithm - Near Real-time (NRT) Data, version 3.0",OB_CLOUD,2024-02-25T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3652817426-OB_CLOUD,PACE_SPEXONE_L2_MAPOL_OCEAN,"PACE SPEXone Level-2 Regional Aerosol Optical Properties, FastMAPOL Algorithm Data, version 3.0",OB_CLOUD,2024-02-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3652817414-OB_CLOUD,PACE_SPEXONE_L2_MAPOL_OCEAN_NRT,"PACE SPEXone Level-2 Regional Aerosol Over Ocean Optical Properties, FastMAPOL Algorithm - Near Real-time (NRT) Data, version 3.0",OB_CLOUD,2024-02-25T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3555840363-OB_CLOUD,PACE_SPEXONE_L3M_AER_RTAP,"PACE SPEXone Level-3 Global Aerosol Optical Properties, RemoTAP Algorithm Data, version 3.0",OB_CLOUD,2024-02-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3555840289-OB_CLOUD,PACE_SPEXONE_L3M_AER_RTAPLAND,"PACE SPEXone Level-3 Global Land Properties, RemoTAP Algorithm Data, version 3.0",OB_CLOUD,2024-02-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3555840263-OB_CLOUD,PACE_SPEXONE_L3M_AER_RTAPLAND_NRT,"PACE SPEXone Level-3 Global Land Properties, RemoTAP Algorithm - Near Real-time (NRT) Data, version 3.0",OB_CLOUD,2024-02-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3555840343-OB_CLOUD,PACE_SPEXONE_L3M_AER_RTAPOCEAN,"PACE SPEXone Level-3 Global Ocean Properties, RemoTAP Algorithm Data, version 3.0",OB_CLOUD,2024-02-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3555840337-OB_CLOUD,PACE_SPEXONE_L3M_AER_RTAPOCEAN_NRT,"PACE SPEXone Level-3 Global Ocean Properties, RemoTAP Algorithm - Near Real-time (NRT) Data, version 3.0",OB_CLOUD,2024-02-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3555840333-OB_CLOUD,PACE_SPEXONE_L3M_AER_RTAP_NRT,"PACE SPEXone Level-3 Global Aerosol Optical Properties, RemoTAP Algorithm - Near Real-time (NRT) Data, version 3.0",OB_CLOUD,2024-02-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3652817450-OB_CLOUD,PACE_SPEXONE_L3M_MAPOL_OCEAN,"PACE SPEXone Level-3 Global Aerosol Over Ocean Optical Properties, FastMAPOL Algorithm Data, version 3.0",OB_CLOUD,2024-02-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3652817442-OB_CLOUD,PACE_SPEXONE_L3M_MAPOL_OCEAN_NRT,"PACE SPEXone Level-3 Global Aerosol Over Ocean Optical Properties, FastMAPOL Algorithm - Near Realtime (NRT) Data, version 3.0",OB_CLOUD,2024-02-05T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C2566392214-LARC_ASDC,PISTON-ONR-NOAA-Autonomous-Uncrewed_2018-2019,PISTON 2018-2019 Autonomous Platform Ocean Datasets,LARC_ASDC,2018-08-23T00:00:00.000Z,2018-11-09T23:59:59.999Z,123.2587,3.9491,134.7463,16.6721 -C2566393530-LARC_ASDC,PISTON-ONR-NOAA_RVSallyRide_2019,PISTON 2019 Research Vessel (RV) Sally Ride Data,LARC_ASDC,2019-08-31T00:00:00.000Z,2019-09-26T23:59:59.999Z,125.628,14.98,130.0,21.41 -C2566393631-LARC_ASDC,PISTON-ONR-NOAA_RVThompson_2018,"PISTON 2018 Research Vessel (RV) Thompson ship datasets of ocean, atmosphere, and air-sea interaction",LARC_ASDC,2018-08-18T00:00:00.000Z,2018-10-13T23:59:59.999Z,120.06,7.3,136.997,22.7 -C3523946217-LARC_CLOUD,PREFIRE_SAT1_1A-RAD,PREFIRE Level 1A Calibrated Spectral Radiance from PREFIRE Satellite 1 R01,LARC_CLOUD,2024-07-24T00:00:00.000Z,,-180.0,-84.0,180.0,84.0 -C3523946238-LARC_CLOUD,PREFIRE_SAT1_1B-RAD,PREFIRE Spectral Radiance from PREFIRE Satellite 1 R01,LARC_CLOUD,2024-07-24T00:00:00.000Z,,-180.0,-84.0,180.0,84.0 -C3518594643-LARC_CLOUD,PREFIRE_SAT1_2B-ATM,Polar Radiant Energy in the Far InfraRed Experiment (PREFIRE) Atmospheric Properties from PREFIRE Satellite 1 R01,LARC_CLOUD,2024-07-24T00:00:00.000Z,,-180.0,-84.0,180.0,84.0 -C3518594641-LARC_CLOUD,PREFIRE_SAT1_2B-CLD,Polar Radiant Energy in the Far InfraRed Experiment (PREFIRE) Cloud Properties from PREFIRE Satellite 1 R01,LARC_CLOUD,2024-07-24T00:00:00.000Z,,-180.0,-84.0,180.0,84.0 -C3518594632-LARC_CLOUD,PREFIRE_SAT1_2B-FLX,Polar Radiant Energy in the Far InfraRed Experiment (PREFIRE) Spectral Flux from PREFIRE Satellite 1 R01,LARC_CLOUD,2024-07-24T00:00:00.000Z,,-180.0,-84.0,180.0,84.0 -C3499202417-LARC_CLOUD,PREFIRE_SAT1_2B-MSK,Polar Radiant Energy in the Far InfraRed Experiment (PREFIRE) Satellite 1 Cloud Mask R01,LARC_CLOUD,2024-07-24T00:00:00.000Z,,-180.0,-84.0,180.0,84.0 -C3518594617-LARC_CLOUD,PREFIRE_SAT1_2B-SFC,Polar Radiant Energy in the Far InfraRed Experiment (PREFIRE) Surface Emissivity from PREFIRE Satellite 1 R01,LARC_CLOUD,2024-07-24T00:00:00.000Z,,-180.0,-84.0,180.0,84.0 -C3544479147-LARC_CLOUD,PREFIRE_SAT1_3-SFC-SORTED-ALLSKY,Polar Radiant Energy in the Far InfraRed Experiment (PREFIRE) Surface Emissivity Sorted All-sky Climatology from PREFIRE Satellite 1 R01,LARC_CLOUD,2024-07-24T00:00:00.000Z,,-180.0,-84.0,180.0,84.0 -C3457546430-LARC_CLOUD,PREFIRE_SAT1_AUX-MET,PREFIRE Auxiliary Meteorology Data for PREFIRE Satellite 1 version R01,LARC_CLOUD,2024-07-24T00:00:00.000Z,,-180.0,-84.0,180.0,84.0 -C3518594654-LARC_CLOUD,PREFIRE_SAT1_AUX-SAT,PREFIRE Auxiliary Satellite Data for PREFIRE Satellite 1 R01,LARC_CLOUD,2024-07-24T00:00:00.000Z,,-180.0,-84.0,180.0,84.0 -C3454519345-LARC_CLOUD,PREFIRE_SAT2_1A-RAD,PREFIRE Level 1A Calibrated Spectral Radiance from PREFIRE Satellite 2 R01,LARC_CLOUD,2024-06-29T00:00:00.000Z,,-180.0,-84.0,180.0,84.0 -C3454519544-LARC_CLOUD,PREFIRE_SAT2_1B-RAD,PREFIRE Spectral Radiance from PREFIRE Satellite 2 R01,LARC_CLOUD,2024-06-29T00:00:00.000Z,,-180.0,-84.0,180.0,84.0 -C3499264831-LARC_CLOUD,PREFIRE_SAT2_2B-ATM,Polar Radiant Energy in the Far InfraRed Experiment (PREFIRE) Atmospheric Properties from PREFIRE Satellite 2 R01,LARC_CLOUD,2024-06-29T00:00:00.000Z,,-180.0,-84.0,180.0,84.0 -C3499264827-LARC_CLOUD,PREFIRE_SAT2_2B-CLD,Polar Radiant Energy in the Far InfraRed Experiment (PREFIRE) Cloud Properties from PREFIRE Satellite 2 R01,LARC_CLOUD,2024-06-29T00:00:00.000Z,,-180.0,-84.0,180.0,84.0 -C3499202317-LARC_CLOUD,PREFIRE_SAT2_2B-FLX,Polar Radiant Energy in the Far InfraRed Experiment (PREFIRE) Spectral Flux from PREFIRE Satellite 2 R01,LARC_CLOUD,2024-06-29T00:00:00.000Z,,-180.0,-84.0,180.0,84.0 -C3476334262-LARC_CLOUD,PREFIRE_SAT2_2B-MSK,Polar Radiant Energy in the Far InfraRed Experiment (PREFIRE) Satellite 2 Cloud Mask R01,LARC_CLOUD,2024-06-29T00:00:00.000Z,,-180.0,-84.0,180.0,84.0 -C3499264824-LARC_CLOUD,PREFIRE_SAT2_2B-SFC,Polar Radiant Energy in the Far InfraRed Experiment (PREFIRE) Surface Emissivity from PREFIRE Satellite 2 R01,LARC_CLOUD,2024-06-29T00:00:00.000Z,,-180.0,-84.0,180.0,84.0 -C3544479139-LARC_CLOUD,PREFIRE_SAT2_3-SFC-SORTED-ALLSKY,Polar Radiant Energy in the Far InfraRed Experiment (PREFIRE) Surface Emissivity Sorted All-sky Climatology from PREFIRE Satellite 2 R01,LARC_CLOUD,2024-06-29T00:00:00.000Z,,-180.0,-84.0,180.0,84.0 -C3457546411-LARC_CLOUD,PREFIRE_SAT2_AUX-MET,PREFIRE Auxiliary Meteorology Data for PREFIRE Satellite 2 R01,LARC_CLOUD,2024-06-29T00:00:00.000Z,,-180.0,-84.0,180.0,84.0 -C3522057290-LARC_CLOUD,PREFIRE_SAT2_AUX-SAT,PREFIRE Auxiliary Satellite Data for PREFIRE Satellite 2 R01,LARC_CLOUD,2024-06-29T00:00:00.000Z,,-180.0,-84.0,180.0,84.0 -C2036882359-POCLOUD,PRESWOT_HYDRO_GRRATS_L2_DAILY_VIRTUAL_STATION_HEIGHTS_V2,Pre SWOT Hydrology GRRATS Daily River Heights and Storage Version 2,POCLOUD,1992-04-06T06:00:00.000Z,2018-04-20T14:39:26.000Z,-180.0,-90.0,180.0,90.0 -C2036882009-POCLOUD,PRESWOT_HYDRO_GRRATS_L2_VIRTUAL_STATION_HEIGHTS_V2,Pre SWOT Hydrology GRRATS Virtual Station River Heights Version 2,POCLOUD,1992-04-06T06:00:00.000Z,2018-04-20T16:03:55.000Z,-180.0,-90.0,180.0,90.0 -C2036882366-POCLOUD,PRESWOT_HYDRO_L2_GREALM_LAKE_HEIGHT_V2,Pre SWOT Hydrology Global Lake/Reservoir Surface Inland Water Height GREALM V.2,POCLOUD,1992-09-25T00:00:00.000Z,2019-12-23T00:00:00.000Z,-180.0,-66.0,180.0,66.0 -C2036882384-POCLOUD,PRESWOT_HYDRO_L3_LAKE_RESEVOIR_AREA_V2,Pre SWOT Hydrology Global Lake/Reservoir Surface Inland Water Area Extent V2,POCLOUD,2000-02-18T00:00:00.000Z,2016-10-15T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C2036882391-POCLOUD,PRESWOT_HYDRO_L4_LAKE_STORAGE_TIME_SERIES_V2,Pre SWOT Hydrology Global Lake/Reservoir Storage Time Series V2,POCLOUD,1992-09-25T00:00:00.000Z,2019-12-23T00:00:00.000Z,-180.0,-66.0,180.0,66.0 -C2526576230-POCLOUD,QSCAT_LEVEL_2B_OWV_COMP_12,QuikSCAT Level 2B Ocean Wind Vectors in 12.5km Slice Composites Version 3,POCLOUD,1999-10-27T15:18:34.000Z,2009-11-22T00:06:42.000Z,-180.0,-90.0,180.0,90.0 -C2036882397-POCLOUD,QSCAT_LEVEL_2B_OWV_COMP_12_KUSST_LCRES_4.1,QuikSCAT Level 2B Ocean Wind Vectors in 12.5km Slice Composites Version 4.1,POCLOUD,1999-10-27T15:18:34.000Z,2009-11-22T00:06:42.000Z,-180.0,-90.0,180.0,90.0 -C2036882492-POCLOUD,QSCAT_LEVEL_2B_OWV_COMP_12_LCR_3.1,QuikSCAT Level 2B Ocean Wind Vectors in 12.5km Slice Composites Version 3.1,POCLOUD,1999-10-27T15:18:34.000Z,2009-11-22T00:06:42.000Z,-180.0,-90.0,180.0,90.0 -C2706515562-POCLOUD,QUIKSCAT_ESDR_ANCILLARY_L2_V1.1,QuikSCAT ESDR Level 2 Ancillary Ocean Surface Fields Version 1.1,POCLOUD,2000-06-01T00:00:00.000Z,2009-11-22T23:59:59.999Z,-180.0,-90.0,180.0,90.0 -C2706518612-POCLOUD,QUIKSCAT_ESDR_L2_WIND_STRESS_V1.1,QuikSCAT Scatterometer Inter-Calibrated ESDR Level 2 Ocean Surface Equivalent Neutral Wind Vectors and Wind Stress Vectors Version 1.1,POCLOUD,1999-10-27T00:00:00.000Z,2009-11-22T00:06:42.000Z,-180.0,-90.0,180.0,90.0 -C3401812448-POCLOUD,QUIKSCAT_ESDR_L2_WSDERIV_V1.0,QUIKSCAT Inter-Calibrated ESDR Level 2 Observed and Modeled Spatial Derivatives of Surface Wind and Wind Stress Version 1.0,POCLOUD,1999-10-27T00:00:00.000Z,2009-11-23T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C3403218558-POCLOUD,QUIKSCAT_ESDR_L3_WIND_STRESS_V1.0,QuikSCAT Scatterometer Inter-Calibrated ESDR Level 3 Ocean Surface Equivalent Neutral Wind Vectors and Wind Stress Version 1.0,POCLOUD,1999-10-27T00:00:00.000Z,2009-11-24T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C3205011603-NSIDC_CPRD,RDBTS4,Likely Basal Thermal State of the Greenland Ice Sheet V002,NSIDC_CPRD,1993-06-23T00:00:00.000Z,2017-05-20T23:59:59.999Z,-88.33,58.91,6.62,83.56 -C3205011903-NSIDC_CPRD,RDGBV4,Level-4 9ka Greenland Ice Sheet Balance Velocity V001,NSIDC_CPRD,1993-06-23T00:00:00.000Z,2013-04-26T23:59:59.999Z,-88.33,58.91,6.62,81.51 -C2491772104-POCLOUD,RECON_SEA_LEVEL_OST_L4_V1,Reconstructed Sea Level Version 1,POCLOUD,1950-01-03T00:00:00.000Z,2009-06-27T23:59:59.000Z,-180.0,-90.0,180.0,90.0 -C2556630002-POCLOUD,REMO_OI_SST_5km-UFRJ-L4-SAMERICA-v1.0,GHRSST Level 4 REMO_OI_SST_5km Regional Foundation Sea Surface Temperature Analysis (GDS version 2),POCLOUD,2002-09-01T00:00:00.000Z,2016-10-12T00:00:00.000Z,-70.0,-45.0,-15.0,15.0 -C2036878116-POCLOUD,REYNOLDS_NCDC_L4_MONTHLY_V5,NOAA Smith and Reynolds Extended Reconstructed Sea Surface Temperature (ERSST) Level 4 Monthly Version 5 Dataset in netCDF,POCLOUD,1854-01-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2784494745-POCLOUD,RONGOWAI_L1_SDR_V1.0,Rongowai-CYGNSS Airborne Level 1 Science Data Record Version 1.0,POCLOUD,2022-10-20T00:00:00.000Z,,165.0,-47.0,179.0,-34.0 -C3205179365-NSIDC_CPRD,RRRAG4,Radiostratigraphy and Age Structure of the Greenland Ice Sheet V001,NSIDC_CPRD,1993-06-23T00:00:00.000Z,2013-04-26T23:59:59.999Z,-88.33,58.91,6.62,81.51 -C2526576258-POCLOUD,RSCAT_COLOCATED_RSS_RADIOMETER_LEVEL_2B_V1,Remote Sensing Systems Radiometer Rain Collocations with JPL RapidScat L2B Swath Grid,POCLOUD,2014-10-03T19:28:21.000Z,2016-02-11T15:56:16.000Z,-180.0,-61.0,180.0,61.0 -C2491772108-POCLOUD,RSCAT_LEVEL_2B_OWV_CLIM_12_V1,RapidScat Level 2B Climate Ocean Wind Vectors in 12.5km Footprints,POCLOUD,2014-10-03T19:28:21.000Z,2016-08-19T15:01:26.000Z,-180.0,-61.0,180.0,61.0 -C2036882499-POCLOUD,RSCAT_LEVEL_2B_OWV_CLIM_12_V2,RapidScat Level 2B Climate Ocean Wind Vectors in 12.5km Footprints Version 2.0,POCLOUD,2014-10-08T03:05:03.000Z,2016-08-19T15:01:26.000Z,-180.0,-61.0,180.0,61.0 -C2526576283-POCLOUD,RSCAT_LEVEL_2B_OWV_COMP_12_V1.1,RapidScat Level 2B Ocean Wind Vectors in 12.5km Slice Composites Version 1.1,POCLOUD,2014-10-03T19:28:21.000Z,2016-03-10T15:10:44.000Z,-180.0,-61.0,180.0,61.0 -C2526576305-POCLOUD,RSCAT_LEVEL_2B_OWV_COMP_12_V1.2,RapidScat Level 2B Ocean Wind Vectors in 12.5km Slice Composites Version 1.2,POCLOUD,2015-08-19T03:48:11.000Z,2016-08-19T15:01:26.000Z,-180.0,-61.0,180.0,61.0 -C2526576326-POCLOUD,RSCAT_LEVEL_2B_OWV_COMP_12_V1.3,RapidScat Level 2B Ocean Wind Vectors in 12.5km Slice Composites Version 1.3,POCLOUD,2016-02-11T15:56:15.000Z,2016-08-19T15:01:26.000Z,-180.0,-61.0,180.0,61.0 -C2559430954-POCLOUD,RSS_WindSat_L1C_TB_V08.0,RSS WindSat L1C Calibrated TB Version 8,POCLOUD,2003-02-01T00:00:00.000Z,2020-10-19T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C2491772160-POCLOUD,SAILDRONE_ARCTIC,Saildrone Arctic field campaign surface and ADCP measurements for NOPP-MISST project,POCLOUD,2019-05-14T18:00:00.000Z,2019-10-11T18:30:01.000Z,-168.7,53.8,-146.1,75.5 -C2254805714-POCLOUD,SAILDRONE_ARCTIC_2021,Saildrone 2021 Arctic field campaign for the Multi-Sensor Improved SST (MISST) project,POCLOUD,2021-07-06T00:00:00.000Z,2021-10-21T00:00:00.000Z,-168.0,65.0,-164.5,71.0 -C2746559549-POCLOUD,SAILDRONE_ARCTIC_2022,Saildrone 2022 Arctic field campaign for the Multi-Sensor Improved SST (MISST) project,POCLOUD,2022-06-18T00:00:00.000Z,2022-08-17T23:59:59.000Z,-168.5,65.2,-157.2,71.6 -C2491772162-POCLOUD,SAILDRONE_ATOMIC,Saildrone field campaign surface and ADCP measurements for the Atlantic Tradewind Ocean-Atmosphere Mesoscale Interaction Campaign (ATOMIC) project,POCLOUD,2020-01-17T00:00:00.000Z,2020-03-02T23:59:59.000Z,-59.4,7.4,-48.6,12.1 -C2491772165-POCLOUD,SAILDRONE_BAJA_SURFACE,Saildrone Baja field campaign surface and ADCP measurements,POCLOUD,2018-04-11T18:00:00.000Z,2018-06-11T20:17:26.000Z,-125.55,28.01,-115.52,37.82 -C3354382150-LARC_CLOUD,SARP_2023_East_Data,SARP-East 2023 Data,LARC_CLOUD,2023-06-01T00:00:00.000Z,2023-06-29T00:00:00.000Z,-77.26,36.99,-76.24,37.34 -C2638311700-POCLOUD,SASSIE_L2_ALTO_ALAMO_FLOATS_V1,SASSIE Arctic Field Campaign ALTO/ALAMO Profiling Float Data Fall 2022 Version 1,POCLOUD,2022-09-08T00:00:00.000Z,2022-10-15T00:00:00.000Z,-156.0,71.0,-145.0,73.5 -C3609562018-POCLOUD,SASSIE_L2_DRIFTER_UPTEMPO_V2,SASSIE Arctic Field Campaign Drifter Hydrography Data Fall 2025 Version 2,POCLOUD,2022-09-09T04:00:00.000Z,2025-07-11T15:49:17.000Z,-163.9,72.9,-150.0,75.6 -C2624096959-POCLOUD,SASSIE_L2_JET_SSP_V1,SASSIE Arctic Field Campaign Jet Surface Salinity Profiler Data Fall 2022 Version 1,POCLOUD,2022-09-10T23:00:00Z,2022-09-26T20:00:00Z,-151.0,72.0,-144.0,73.5 -C3147781229-POCLOUD,SASSIE_L2_PALS_V1,SASSIE Arctic Field Campaign PALS Data Fall 2022,POCLOUD,2022-09-14T00:00:00.000Z,2022-09-20T00:00:00.000Z,-170.5,67.46,-138.0,75.75 -C3181024015-POCLOUD,SASSIE_L2_SBAND_ML_V1,SASSIE Arctic Field Campaign Summary Ice Concentration Rankings from ML analysis of SBAND Images Fall 2022 ,POCLOUD,2022-09-08T00:00:00.000Z,2022-09-30T00:00:00.000Z,-170.5,67.5,-138.0,75.5 -C2775118883-POCLOUD,SASSIE_L2_SHIPBOARD_ADCP_V1,SASSIE Arctic Field Campaign Shipboard Acoustic Doppler Current Profiler Data Fall 2022,POCLOUD,2022-09-08T00:00:00.000Z,2022-10-04T00:00:00.000Z,-170.0,65.0,-144.0,75.0 -C2624100570-POCLOUD,SASSIE_L2_SHIPBOARD_CASTAWAY_CTD_V1,SASSIE Arctic Field Campaign Shipboard Castaway CTD Data Fall 2022 Version 1,POCLOUD,2022-09-09T15:00:00.000Z,2022-09-19T01:00:00.000Z,-152.5,72.0,-145.0,73.5 -C2675866206-POCLOUD,SASSIE_L2_SHIPBOARD_DELTA_18O_V1,SASSIE Arctic Field Campaign Shipboard Delta-18O Data Fall 2022,POCLOUD,2022-09-09T00:00:00.000Z,2022-10-03T23:59:59.000Z,-168.1,66.0,-144.8,73.3 -C2675923537-POCLOUD,SASSIE_L2_SHIPBOARD_METEOROLOGY_V1,SASSIE Arctic Field Campaign Shipboard Meteorology Data Fall 2022,POCLOUD,2022-08-06T00:00:00.000Z,2022-10-01T23:59:59.000Z,-166.0,69.0,-144.8,73.55 -C2684906861-POCLOUD,SASSIE_L2_SHIPBOARD_SALINITY_SNAKE_V1,SASSIE Arctic Field Campaign Shipboard Salinity Snake Data Fall 2022,POCLOUD,2022-09-09T00:00:00.000Z,2022-10-03T23:59:59.000Z,-168.1,66.0,-144.8,73.6 -C2624105045-POCLOUD,SASSIE_L2_SHIPBOARD_TSG_V1,SASSIE Arctic Field Campaign Shipboard Thermosalinograph Data Fall 2022 Version 1,POCLOUD,2022-09-05T00:00:00.000Z,2022-10-03T00:00:00.000Z,-169.0,64.5,-144.0,73.6 -C2622954412-POCLOUD,SASSIE_L2_SHIPBOARD_UCTD_V1,SASSIE Arctic Field Campaign Shipboard uCTD Data Fall 2022 Version 1,POCLOUD,2022-09-09T03:55:00.000Z,2022-09-29T12:15:00.000Z,-153.0,72.02,-144.5,73.52 -C2637402374-POCLOUD,SASSIE_L2_SWIFT_V1,SASSIE Arctic Field Campaign SWIFT Data Fall 2022 Version 1,POCLOUD,2022-09-09T00:00:00.000Z,2022-09-30T00:00:00.000Z,-153.6,72.0,-145.5,73.5 -C2637328093-POCLOUD,SASSIE_L2_UNDER_ICE_FLOAT_V1,SASSIE Arctic Field Campaign Under Ice Float Fall 2022 Version 1,POCLOUD,2022-09-10T00:00:00.000Z,2022-10-23T00:00:00.000Z,-156.0,73.0,-152.0,74.0 -C2637536168-POCLOUD,SASSIE_L2_WAVEGLIDERS_V1,SASSIE Arctic Field Campaign Wave Glider Data Fall 2022 Version 1,POCLOUD,2022-08-12T00:00:00.000Z,2022-09-30T00:00:00.000Z,-156.0,70.0,-142.0,73.5 -C2706524255-POCLOUD,SCATSAT1_ESDR_ANCILLARY_L2_V1.1,SCATSAT-1 ESDR Level 2 Ancillary Ocean Surface Fields Version 1.1,POCLOUD,2018-04-01T00:00:00.000Z,2021-03-01T23:59:59.000Z,-180.0,-90.0,180.0,90.0 -C2706520933-POCLOUD,SCATSAT1_ESDR_L2_WIND_STRESS_V1.1,SCATSAT-1 Scatterometer Inter-Calibrated ESDR Level 2 Ocean Surface Equivalent Neutral Wind Vectors and Wind Stress Vectors Version 1.1,POCLOUD,2018-04-01T00:00:00.000Z,2021-03-01T23:59:59.000Z,-180.0,-90.0,180.0,90.0 -C3401797730-POCLOUD,SCATSAT1_ESDR_L2_WSDERIV_V1.0,SCATSAT-1 Inter-Calibrated ESDR Level 2 Observed and Modeled Spatial Derivatives of Surface Wind and Wind Stress Version 1.0,POCLOUD,2018-04-01T00:00:00.000Z,2021-03-01T23:59:59.000Z,-180.0,-90.0,180.0,90.0 -C3403197474-POCLOUD,SCATSAT1_ESDR_L3_WIND_STRESS_V1.0,SCATSAT-1 Scatterometer Inter-Calibrated ESDR Level 3 Ocean Surface Equivalent Neutral Wind Vectors and Wind Stress Version 1.0,POCLOUD,2018-04-01T00:00:00.000Z,2021-03-01T23:59:59.000Z,-180.0,-90.0,180.0,90.0 -C3438248196-LARC_ASDC,SCOAPE2_RVPointSur_Data,SCOAPE-II R/V Point Sur Data,LARC_ASDC,2024-06-02T00:00:00.000Z,2024-06-15T00:00:00.000Z,-91.12,27.79,-87.91,29.43 -C2151536874-POCLOUD,SEAGLIDER_GUAM_2019,Adaptive Sampling of Rain and Ocean Salinity from Autonomous Seagliders (Guam 2019-2020),POCLOUD,2019-10-03T00:00:00.000Z,2020-01-15T02:00:00.000Z,143.63035,13.39476,144.613,14.71229 -C2036877550-POCLOUD,SEVIRI_IO_SST-OSISAF-L3C-v1.0,GHRSST Level 3C Indian-Ocean (IO) sub-skin Sea Surface Temperature from the Spinning Enhanced Visible and Infrared Imager (SEVIRI) on MSG in GDS2 format produced by OSISAF,POCLOUD,2017-03-28T13:30:00.000Z,,-18.5,-60.0,101.5,60.0 -C2036878243-POCLOUD,SEVIRI_SST-OSISAF-L3C-v1.0,GHRSST Level 3C Atlantic sub-skin Sea Surface Temperature from the Spinning Enhanced Visible and Infrared Imager (SEVIRI) on MSG at 0 degree longitude (GDS V2) produced by OSI SAF,POCLOUD,2004-06-01T00:00:00.000Z,,-60.0,-60.0,60.0,60.0 -C2157151105-POCLOUD,SEVIRI_SST_DR-OSISAF-L3C-v1.0,GHRSST L3C hourly Atlantic reprocessed sub-skin sea surface temperature data record v1.0 from SEVIRI on MSG produced by OSISAF,POCLOUD,2004-01-19T00:00:00.000Z,2012-12-31T23:59:59.000Z,-60.0,-60.0,60.0,60.0 -C2208423975-POCLOUD,SMAP_JPL_L3_SSS_CAP_MONTHLY_V5,JPL SMAP Level 3 CAP Sea Surface Salinity Standard Mapped Image Monthly V5.0 Validated Dataset,POCLOUD,2015-04-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C3412874942-NSIDC_CPRD,SMAP_L1_L3_ANC_GEOS,Soil Moisture Active Passive (SMAP) L1-L3 Ancillary GEOS Data V001,NSIDC_CPRD,2015-01-31T00:00:00.000Z,,-180.0,-86.4,180.0,86.4 -C3420733742-NSIDC_CPRD,SMAP_L4_SM_ANC_CLIM,Soil Moisture Active Passive (SMAP) L4 Soil Moisture Ancillary Climatology Files V001,NSIDC_CPRD,2015-01-31T00:00:00.000Z,,-180.0,-86.4,180.0,86.4 -C3252895238-NSIDC_CPRD,SMAP_L4_SM_ANC_RST,Soil Moisture Active Passive (SMAP) L4 Soil Moisture Ancillary Restart Files V001,NSIDC_CPRD,2015-01-31T00:00:00.000Z,,-180.0,-86.4,180.0,86.4 -C2646960543-POCLOUD,SMAP_RSS_L2_SSS_NRT_V5,RSS SMAP Level 2C Sea Surface Salinity NRT V5.0 Validated Dataset,POCLOUD,2022-07-28T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2832224417-POCLOUD,SMAP_RSS_L2_SSS_NRT_V6,RSS SMAP Level 2C Sea Surface Salinity NRT V6.0 Validated Dataset,POCLOUD,2022-07-28T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C1940468263-POCLOUD,SMAP_RSS_L3_SSS_SMI_8DAY-RUNNINGMEAN_V4,RSS SMAP Level 3 Sea Surface Salinity Standard Mapped Image 8-Day Running Mean V4.0 Validated Dataset,POCLOUD,2015-03-27T12:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2208425700-POCLOUD,SMAP_RSS_L3_SSS_SMI_8DAY-RUNNINGMEAN_V5,RSS SMAP Level 3 Sea Surface Salinity Standard Mapped Image 8-Day Running Mean V5.0 Validated Dataset,POCLOUD,2015-03-27T12:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2951822554-POCLOUD,SMAP_RSS_L3_SSS_SMI_8DAY-RUNNINGMEAN_V5.3,RSS SMAP Level 3 Sea Surface Salinity Standard Mapped Image 8-Day Running Mean V5.3 Evaluation Dataset,POCLOUD,2015-03-27T12:00:00.000Z,2024-01-05T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C2036878255-POCLOUD,SMAP_RSS_L3_SSS_SMI_MONTHLY_V4,RSS SMAP Level 3 Sea Surface Salinity Standard Mapped Image Monthly V4.0 Validated Dataset,POCLOUD,2015-04-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2208416221-POCLOUD,SMAP_RSS_L3_SSS_SMI_MONTHLY_V5,RSS SMAP Level 3 Sea Surface Salinity Standard Mapped Image Monthly V5.0 Validated Dataset,POCLOUD,2015-04-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2936708691-POCLOUD,SMAP_RSS_L3_SSS_SMI_MONTHLY_V5.3,RSS SMAP Level 3 Sea Surface Salinity Standard Mapped Image Monthly V5.3 Evaluation Dataset,POCLOUD,2015-04-01T00:00:00.000Z,2024-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C2832226365-POCLOUD,SMAP_RSS_L3_SSS_SMI_MONTHLY_V6,RSS SMAP Level 3 Sea Surface Salinity Standard Mapped Image Monthly V6.0 Validated Dataset,POCLOUD,2015-04-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2162113242-POCLOUD,SMODE_L1_ASIT_KABODS_V1,S-MODE Pre-Pilot Level 1 Data from the Ka-band Ocean Doppler Scatterometer (KaBODS) at the Air-Sea Interaction Tower Version 1,POCLOUD,2019-10-01T21:00:00.000Z,2020-01-15T16:00:00Z,,,, -C2162104652-POCLOUD,SMODE_L1_ASIT_SLOPEFIELDS_V1,S-MODE Pre-Pilot Ocean Wave Slope from Visible-Band Polarimetry at the Air-Sea Interaction Tower Version 1,POCLOUD,2019-10-07T00:00:00.000Z,2020-01-18T23:59:59.999Z,,,, -C2301076107-POCLOUD,SMODE_L1_DOPPLERSCATT_V1,S-MODE DopplerScatt Level 1 Surface Doppler and Radar Backscatter Version 1,POCLOUD,2021-05-03T20:58:16.000Z,2023-04-30T00:00:00.000Z,-125.4,36.3,-122.5,38.1 -C2110184916-POCLOUD,SMODE_L1_PRISM_V1,S-MODE PRISM Level 1 Radiance and Ancillary Products Version 1,POCLOUD,2022-10-18T00:00:00.000Z,2023-05-10T00:00:00.000Z,-130.0,35.0,-122.0,40.0 -C2574191901-POCLOUD,SMODE_L1_SAILDRONES_V1,S-MODE Saildrone Level 1 Observations,POCLOUD,2021-10-01T00:00:00.000Z,2022-11-30T00:00:00.000Z,-125.4,36.3,-122.9,38.1 -C2864321540-POCLOUD,SMODE_L2_APEX_FLOAT_V1,S-MODE Temperature and Salinity from NAVO Floats Version 1,POCLOUD,2023-04-01T00:00:00.000Z,2023-08-01T00:00:00.000Z,-125.4,36.3,-122.9,38.1 -C2110184925-POCLOUD,SMODE_L2_DOPPLERSCATT_WINDS_CURRENT_V1,S-MODE DopplerScatt Level 2 Ocean Winds and Currents Version 1,POCLOUD,2021-10-20T00:00:00.000Z,2021-11-05T23:59:59.000Z,-126.2,36.3,-122.1,38.2 -C2639507467-POCLOUD,SMODE_L2_DOPPLERSCATT_WINDS_CURRENT_V2,S-MODE DopplerScatt Level 2 Ocean Winds and Currents Version 2,POCLOUD,2021-10-20T00:00:00.000Z,2023-04-30T00:00:00.000Z,-126.5,36.0,-122.0,38.4 -C2830029002-POCLOUD,SMODE_L2_DRIFTER_POSITIONS_V1,S-MODE L2 Position Data from Surface Drifters Version 1,POCLOUD,2021-10-21T00:00:00.000Z,2023-12-31T00:00:00.000Z,-125.4,36.3,-122.9,38.1 -C2612867358-POCLOUD,SMODE_L2_LAGRANGIAN_FLOATS_V1,S-MODE Lagrangian Float Observations Version 1,POCLOUD,2022-10-01T00:00:00.000Z,2023-05-31T00:00:00.000Z,-125.4,36.3,-122.9,38.1 -C2110184921-POCLOUD,SMODE_L2_MOSES_LWIR_SST_V1,S-MODE MOSES Level 2 Atmospherically-Corrected Sea Surface Temperature Version 1,POCLOUD,2021-10-19T16:09:34.000Z,2023-05-05T00:00:00.000Z,-125.4,36.0,-122.9,38.1 -C2727960248-POCLOUD,SMODE_L2_PRISM_CHLA_V1,S-MODE PRISM Level 2 Water Surface Chlorophyll-a Version 1,POCLOUD,2022-10-19T00:00:00.000Z,2023-05-10T00:00:00.000Z,-130.0,35.0,-122.0,40.0 -C2766903177-POCLOUD,SMODE_L2_SAILDRONES_V1,S-MODE L2 Temperature and Salinity from Saildrones Version 1,POCLOUD,2021-09-01T00:00:00.000Z,2022-10-31T00:00:00.000Z,-125.4,36.3,-122.9,38.1 -C2766303078-POCLOUD,SMODE_L2_SEAGLIDERS_V1,S-MODE Seaglider Observations Version 1,POCLOUD,2022-08-23T00:00:00.000Z,2023-07-07T00:00:00.000Z,-125.4,36.3,-122.9,38.1 -C2830022538-POCLOUD,SMODE_L2_SHIPBOARD_ADCP_V1,S-MODE L2 Shipboard Acoustic Doppler Current Profiler Measurements Version 1,POCLOUD,2021-10-19T00:00:00.000Z,2023-05-06T00:00:00.000Z,-125.4,36.3,-122.9,38.1 -C2700534037-POCLOUD,SMODE_L2_SHIPBOARD_BIO_V1,S-MODE Shipboard Bio-optical Measurements Version 1,POCLOUD,2022-10-09T00:00:00.000Z,2022-11-02T00:00:00.000Z,-125.4,30.0,-119.0,42.0 -C2830060262-POCLOUD,SMODE_L2_SHIPBOARD_BOTTLES_V1,S-MODE L2 Shipboard Bottle Data Version 1,POCLOUD,2021-10-22T00:00:00.000Z,2023-05-02T00:00:00.000Z,-125.4,36.3,-122.9,38.1 -C2834159558-POCLOUD,SMODE_L2_SHIPBOARD_CTD_V1,"S-MODE L2 Shipboard Conductivity, Temperature, and Depth Measurements Version 1",POCLOUD,2021-08-01T00:00:00.000Z,2023-05-05T00:00:00.000Z,-125.4,36.3,-122.9,38.1 -C2832306976-POCLOUD,SMODE_L2_SHIPBOARD_RADIOMETER_METEOROLOGY_V1,S-MODE Shipboard Radiometer Measurements Version 1,POCLOUD,2021-08-01T00:00:00.000Z,,-125.4,36.3,-122.9,38.1 -C2832235159-POCLOUD,SMODE_L2_SHIPBOARD_RADIOSONDES_METEOROLOGY_V1,S-MODE L2 Shipboard Meteorological Data from Rawinsondes Version 1,POCLOUD,2021-10-21T00:00:00.000Z,2023-05-31T00:00:00.000Z,-125.4,36.3,-122.9,38.1 -C2832216518-POCLOUD,SMODE_L2_SHIPBOARD_SUNA_V1,S-MODE L2 Shipboard SUNA nitrate data Version 1,POCLOUD,2021-10-22T00:00:00.000Z,2021-10-23T00:00:00.000Z,-125.4,36.3,-122.9,38.1 -C2832851810-POCLOUD,SMODE_L2_SHIPBOARD_TSG_V1,"S-MODE L2 Shipboard Thermosalinograph, Meteorology, and Bio-optics Measurements Version 1",POCLOUD,2021-08-01T00:00:00.000Z,2023-05-04T00:00:00.000Z,-125.4,36.3,-122.9,38.1 -C2110184931-POCLOUD,SMODE_L2_SHIPBOARD_UCTD_ECOCTD_V1,S-MODE Shipboard uCTD and EcoCTD Measurements Version 1,POCLOUD,2021-08-01T00:00:00.000Z,2023-05-31T00:00:00.000Z,-125.4,36.3,-122.9,38.1 -C2301083264-POCLOUD,SMODE_L2_SLOCUM_GLIDERS_V1,S-MODE Temperature and Salinity from Slocum Gliders Version 1,POCLOUD,2021-08-01T00:00:00.000Z,2023-05-31T00:00:00.000Z,-125.4,36.3,-122.9,38.1 -C2574025518-POCLOUD,SMODE_L2_WAVEGLIDERS_TEMP_SALINITY_V1,SMODE L2 WAVEGLIDERS TEMP SALINITY V1,POCLOUD,2021-10-28T00:00:00.000Z,2023-05-14T00:00:00.000Z,-126.2,36.3,-122.1,38.2 -C2847092563-POCLOUD,SMODE_L3_SEAGLIDERS_TEMP_SALINITY_V1,S-MODE Level 3 Seaglider Observations Version 1,POCLOUD,2022-08-23T00:00:00.000Z,2023-07-07T00:00:00.000Z,-125.4,36.3,-122.9,38.1 -C2574152934-POCLOUD,SMODE_L3_SHIPBOARD_UCTD_ECOCTD_V1,S-MODE Level 3 Shipboard uCTD and EcoCTD Measurements Version 1,POCLOUD,2021-08-01T00:00:00.000Z,2021-11-30T00:00:00.000Z,-125.4,36.3,-122.9,38.1 -C3582930396-POCLOUD,SMODE_L3_WAVEGLIDERS_TEMP_SALINITY_V1,SMODE L3 WAVEGLIDERS TEMP SALINITY V1,POCLOUD,2022-09-20T20:15:00.000Z,2023-05-13T15:00:00.000Z,-126.2,36.3,-122.1,38.2 -C2988721782-POCLOUD,SMODE_L4_NCOM_V1,S-MODE NCOM Model Output Version 1,POCLOUD,2021-09-01T00:00:00.000Z,2023-08-01T00:00:00.000Z,-130.0,30.0,-116.0,42.0 -C3756737926-POCLOUD,SMODE_L4_WAVEGLIDERS_V1,S-MODE Level 4 Wavegliders Version 1,POCLOUD,2022-09-20T20:15:00.000Z,2023-05-13T15:00:00.000Z,-125.8,35.7,-121.9,37.9 -C3262828325-NSIDC_CPRD,SNEX17_CAR,SnowEx17 Cloud Absorption Radiometer BRDF V001,NSIDC_CPRD,2017-02-16T00:00:00.000Z,2017-02-22T23:59:59.999Z,-108.448729,37.653967,-104.459534,40.243618 -C3266798301-NSIDC_CPRD,SNEX17_SnowSAR,SnowEx17 SnowSAR Multi-look Synthetic Aperture Radar Backscatter Amplitude Images V001,NSIDC_CPRD,2017-02-16T00:00:00.000Z,2017-02-22T23:59:59.999Z,-109.05,37.0,-102.05,41.0 -C3271326152-NSIDC_CPRD,SNEX20_BSU_CMP_Raw,SnowEx20 Grand Mesa IOP BSU Multi-polarization 1 GHz GPR CMP Raw V001,NSIDC_CPRD,2020-01-31T00:00:00.000Z,2020-02-01T23:59:59.999Z,-108.198261,39.021584,-108.197754,39.03467 -C3271328242-NSIDC_CPRD,SNEX20_BSU_GPR_Raw,SnowEx20 Grand Mesa IOP BSU 1 GHz Multi-polarization GPR Raw V001,NSIDC_CPRD,2020-01-28T00:00:00.000Z,2020-02-04T23:59:59.999Z,-108.206626,39.002182,-108.159761,39.038896 -C3503073680-NSIDC_CPRD,SNEX20_CASIE_TIR,"SnowEx20 APL-UW CASIE Brightness Temperatures, Thermal Infrared Imagery (TIR), and Visible-Band Imagery (RGB) V001",NSIDC_CPRD,2020-02-08T00:00:00.000Z,2020-02-12T23:59:59.999Z,-108.26,38.88,-108.01,39.07 -C3274609072-NSIDC_CPRD,SNEX23_CRREL_GPR_Raw,SnowEx23 CRREL Ground Penetrating Radar Raw V001,NSIDC_CPRD,2023-03-08T00:00:00.000Z,2023-03-15T23:59:59.999Z,-149.598,68.5257,-149.2186,68.64 -C3378626164-POCLOUD,SPORT-MSFC-L4-GLOB-v1.0,GHRSST Level 4 SPoRT Global Foundation Sea Surface Temperature Analysis (v1.0),POCLOUD,2025-03-24T00:00:00.000Z,,-180.0,-80.0,180.0,80.0 -C2491772166-POCLOUD,SPURS1_ADCP,SPURS-1 shipboard Acoustic Doppler Current Profiler data for N. Atlantic Endeavor and Knorr cruises,POCLOUD,2012-09-06T00:00:00.000Z,2013-10-13T00:00:00.000Z,-73.0,20.0,-28.0,42.0 -C2491772167-POCLOUD,SPURS1_ARGO,Argo float CTD profile data within the scope of the SPURS-1 N. Atlantic field campaign,POCLOUD,2012-09-09T00:00:00.000Z,2014-08-21T00:00:00.000Z,-76.0,23.0,-28.0,41.0 -C2491772169-POCLOUD,SPURS1_CTD,SPURS-1 research vessel CTD profile data for N. Atlantic cruises,POCLOUD,2012-08-16T00:00:00.000Z,2013-10-05T00:00:00.000Z,-63.0,23.0,-37.0,43.0 -C2491772174-POCLOUD,SPURS1_DRIFTER,Drifter data for the SPURS-1 N. Atlantic field campaign,POCLOUD,2011-10-19T00:00:00.000Z,2015-04-07T00:00:00.000Z,-66.0,16.0,-28.0,35.0 -C2491772199-POCLOUD,SPURS1_ECOMAPPER,Ecomapper data for the SPURS-1 N. Atlantic field campaign,POCLOUD,2012-09-29T00:00:00.000Z,2012-09-30T00:00:00.000Z,-39.0,26.0,-38.0,27.0 -C2491772227-POCLOUD,SPURS1_FLOAT_NEUTRALLYBUOYANT,Neutrally buoyant float data for the SPURS-1 N. Atlantic field campaign,POCLOUD,2012-09-18T00:00:00.000Z,2013-02-22T00:00:00.000Z,-39.0,21.0,-34.0,26.0 -C2491772266-POCLOUD,SPURS1_METEO,SPURS-1 research vessel Meteorological series data for N. Atlantic Endeavor cruises,POCLOUD,2013-03-14T00:00:00.000Z,2013-10-13T00:00:00.000Z,-72.0,32.0,-37.0,42.0 -C2491772306-POCLOUD,SPURS1_MOORING_PICO,PICO Mooring data for the SPURS-1 N. Atlantic field campaign,POCLOUD,2012-09-14T00:00:00.000Z,2013-09-30T00:00:00.000Z,-38.0,24.0,-27.0,25.0 -C2491772311-POCLOUD,SPURS1_MOORING_WHOI,"WHOI mooring CTD, surface flux and meterorological data for the SPURS-1 N. Atlantic field campaign",POCLOUD,2012-09-14T20:00:00.000Z,2013-09-30T10:40:00.000Z,-38.0,24.0,-38.0,24.6 -C2491772312-POCLOUD,SPURS1_SEAGLIDER,Seaglider CTD data for the SPURS-1 N. Atlantic field campaign,POCLOUD,2012-09-13T00:00:00.000Z,2013-08-24T00:00:00.000Z,-39.0,23.0,-34.0,26.0 -C2491772317-POCLOUD,SPURS1_SEASOAR,Seasoar CTD data for the SPURS-1 N. Atlantic field campaign,POCLOUD,2013-03-22T00:00:00.000Z,2013-04-08T00:00:00.000Z,-39.0,22.0,-36.0,26.0 -C2491772318-POCLOUD,SPURS1_TENUSEGLIDER,Tenuse Glider CTD data for the SPURS-1 N. Atlantic field campaign,POCLOUD,2012-08-21T00:00:00.000Z,2012-10-04T00:00:00.000Z,-39.0,24.0,-35.0,27.0 -C2491772319-POCLOUD,SPURS1_TSG,SPURS-1 research vessel Thermosalinograph series data for N. Atlantic cruises,POCLOUD,2012-09-01T00:00:00.000Z,2013-10-13T00:00:00.000Z,-73.0,20.0,-14.0,42.0 -C2491772320-POCLOUD,SPURS1_UCTD,SPURS-1 research vessel Underway-CTD trajectory profile data for N. Atlantic Endeavor and Knorr cruises,POCLOUD,2012-09-16T00:00:00.000Z,2013-04-06T00:00:00.000Z,-58.0,23.0,-36.0,35.0 -C2491772321-POCLOUD,SPURS1_WAVEGLIDER,Waveglider data for the SPURS-1 N. Atlantic field campaign,POCLOUD,2012-09-01T00:00:00.000Z,2013-03-25T00:00:00.000Z,-71.0,23.0,-37.0,42.0 -C2491772322-POCLOUD,SPURS2_ADCP,SPURS-2 shipboard Acoustic Doppler Current Profiler data for E. Tropical Pacific R/V Revelle cruises,POCLOUD,2016-08-14T02:54:07.000Z,2017-11-17T10:59:30.000Z,-157.88,5.06,-118.32,21.26 -C2491772323-POCLOUD,SPURS2_ARGO,SPURS-2 Argo float CTD profile data from the E. Tropical Pacific field campaign,POCLOUD,2016-08-27T05:47:58.000Z,2019-03-11T23:42:58.000Z,-157.88,5.06,-118.32,21.26 -C2491772324-POCLOUD,SPURS2_CTD,SPURS-2 research vessel CTD profile data for E. Tropical Pacific R/V Revelle cruises,POCLOUD,2016-08-16T20:29:02.000Z,2017-11-17T04:49:30.000Z,-157.88,5.06,-118.32,21.26 -C2781747781-POCLOUD,SPURS2_DISDR,SPURS-2 shipboard disdrometer data for the E. Tropical Pacific field campaign,POCLOUD,2016-08-11T00:00:00.000Z,2017-11-17T00:00:00.000Z,-144.783,5.055,-119.886,24.204 -C2491772335-POCLOUD,SPURS2_DRIFTER,SPURS-2 Drifter data for the E. Tropical Pacific field campaign,POCLOUD,2016-06-20T05:57:00.000Z,2019-03-14T12:04:00.000Z,-179.999,-10.074,-124.78,32.283 -C2491772336-POCLOUD,SPURS2_FLOAT_NEUTRALLYBUOYANT,SPURS-2 Neutrally buoyant float data for the E. Tropical Pacific field campaign,POCLOUD,2016-08-26T17:43:36.000Z,2016-12-29T08:04:45.000Z,-125.015,7.855,-108.951,11.891 -C2491772337-POCLOUD,SPURS2_LADYAMBER,SPURS-2 S/V Lady Amber underway Thermosalinograph and Sea Snake data for the E. Tropical Pacific field campaign,POCLOUD,2016-08-29T00:00:01.000Z,2018-04-30T23:59:45.000Z,-163.925,0.085,-126.978,35.627 -C2491772338-POCLOUD,SPURS2_METEO,SPURS-2 Research vessel Meteorological series data for the E. Tropical Pacific field campaign R/V Revelle cruises,POCLOUD,2016-08-20T00:00:30.000Z,2017-11-15T00:00:00.000Z,-144.874,5.055,-119.886,24.203 -C2491772339-POCLOUD,SPURS2_MOORING_CENTRAL,"SPURS-2 Central mooring CTD, surface flux and meterorological data for the E. Tropical Pacific field campaign",POCLOUD,2016-08-16T07:22:00.000Z,2017-11-16T22:45:16.000Z,-125.03,10.05,-125.03,10.05 -C2491772340-POCLOUD,SPURS2_MOORING_PICO,SPURS-2 PICO mooring data for the E. Tropical Pacific field campaign,POCLOUD,2016-08-22T16:00:00.000Z,2017-11-03T00:00:00.000Z,-125.0,9.047,-124.958,11.0 -C2491772341-POCLOUD,SPURS2_PALS,SPURS-2 Passive Accoustic Listener (PAL) data from ARGO float deployments during the E. Tropical Pacific field campaign,POCLOUD,2016-08-25T00:00:00.000Z,2018-08-22T01:58:35.000Z,-129.129,8.861,-116.57,12.106 -C2491772345-POCLOUD,SPURS2_RAINRADAR,SPURS-2 research vessel along track SEA-POL rain radar imaging data for E. Tropical Pacific R/V Revelle-2 cruise,POCLOUD,2017-10-22T00:05:04.000Z,2017-11-10T23:00:03.000Z,-125.57,5.06,-119.89,24.2 -C2491772347-POCLOUD,SPURS2_RAWINSONDE,SPURS-2 Rawinsonde meteorological data for the E. Tropical Pacific field campaign R/V Revelle cruises,POCLOUD,2016-08-20T01:56:45.000Z,2017-11-10T21:16:04.000Z,-133.216,5.139,-123.32,12.35 -C2491772348-POCLOUD,SPURS2_SAILDRONE,SPURS-2 Saildrone data for the E. Tropical Pacific field campaign,POCLOUD,2017-10-16T00:00:00.000Z,2017-11-17T00:00:00.000Z,-125.0,8.5,-124.5,10.9 -C2491772349-POCLOUD,SPURS2_SALINITYSNAKE,SPURS-2 Surface Salinity Snake data for the E. Tropical Pacific field campaign R/V Revelle cruises,POCLOUD,2016-08-16T07:22:00.000Z,2017-11-16T22:45:15.000Z,-155.8,5.06,-117.3,32.3 -C2491772350-POCLOUD,SPURS2_SEAGLIDER,SPURS-2 Seaglider data for the E. Tropical Pacific field campaign,POCLOUD,2016-08-24T16:18:24.000Z,2017-11-07T00:03:55.000Z,-126.122,8.994,-122.128,12.022 -C2491772351-POCLOUD,SPURS2_SSP,SPURS-2 Towed surface salinity profile (SSP) data for the E. Tropical Pacific R/V Revelle cruises,POCLOUD,2016-08-27T07:52:23.000Z,2017-11-11T07:35:01.000Z,-140.969,6.546,-123.203,16.502 -C2491772352-POCLOUD,SPURS2_UCTD,SPURS-2 research vessel Underway CTD (uCTD) data for the E. Tropical Pacific R/V Revelle cruises,POCLOUD,2016-08-21T21:50:36.000Z,2017-11-11T07:29:14.000Z,-126.51,5.09,-123.51,13.97 -C2491772353-POCLOUD,SPURS2_UNDERWAY_pCO2_DIC_pH,"SPURS-2 underway surface pCO2, DIC and pH data for the E. Tropical Pacific field campaign R/V Revelle cruises",POCLOUD,2017-10-21T20:26:57.000Z,2017-11-13T00:00:00.000Z,-125.572,1.383,-121.545,16.411 -C2491772360-POCLOUD,SPURS2_USPS,SPURS-2 research vessel Underway Salinity Profiling System (USPS) data for the E. Tropical Pacific R/V Revelle cruises,POCLOUD,2016-08-15T00:00:00.000Z,2017-11-15T23:59:55.000Z,-157.0,5.06,-119.5,25.84 -C2491772361-POCLOUD,SPURS2_WAMOS,SPURS-2 research vessel along track WAMOS wave radar data for the second R/V Revelle cruise in the E. Tropical Pacific,POCLOUD,2017-10-05T20:13:15.000Z,2017-11-16T23:26:01.000Z,-125.57,5.06,-119.89,24.2 -C2491772363-POCLOUD,SPURS2_WAVEGLIDER,SPURS-2 Waveglider data for the E. Tropical Pacific field campaign,POCLOUD,2016-08-24T00:00:00.000Z,2017-11-10T21:30:00.000Z,-126.4,6.1,-108.8,13.8 -C2781659132-POCLOUD,SPURS2_XBAND,SPURS-2 shipboard X-band radar backscatter data for the E. Tropical Pacific field campaign,POCLOUD,2017-10-21T00:00:00.000Z,2017-11-13T15:46:00.000Z,-129.131,8.927,-122.151,10.355 -C2491772372-POCLOUD,SPURS2_XBT,SPURS-2 research vessel Expendable Bathythermograph (XBT) profile data for E. Tropical Pacific R/V Revelle cruises,POCLOUD,2016-08-14T05:21:45.000Z,2017-11-15T21:51:33.000Z,-157.88,5.06,-118.32,21.26 -C2862468660-LARC_CLOUD,STAQS_AircraftRemoteSensing_JSC-GV_GCAS_Data,STAQS JSC GV GEOstationary Coastal and Air Pollution Events (GEO-CAPE) Airborne Simulator Data,LARC_CLOUD,2023-06-26T00:00:00.000Z,2023-08-17T00:00:00.000Z,-120.3,33.36,-72.0,44.56 -C2862461566-LARC_CLOUD,STAQS_AircraftRemoteSensing_NASA-G3_GCAS_Data,STAQS NASA G-III GEOstationary Coastal and Air Pollution Events (GEO-CAPE) Airborne Simulator Data,LARC_CLOUD,2023-08-22T00:00:00.000Z,2023-08-28T00:00:00.000Z,-119.31,33.42,-116.5,34.96 -C2799436707-POCLOUD,SWOT_ATTD_RECONST_2.0,SWOT Satellite Reconstructed Attitude Data,POCLOUD,2022-12-16T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2799438119-POCLOUD,SWOT_L1B_HR_SLC_2.0,"SWOT Level 1B High-Rate Single-look Complex Data Product, Version C",POCLOUD,2022-12-16T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C3233944967-POCLOUD,SWOT_L1B_HR_SLC_D,"SWOT Level 1B High-Rate Single-look Complex Data Product, Version D",POCLOUD,2022-12-16T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2799438202-POCLOUD,SWOT_L1B_LR_INTF_2.0,"SWOT Level 1B Low-Rate Interferogram Data Product, Version C",POCLOUD,2022-12-16T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C3233944969-POCLOUD,SWOT_L1B_LR_INTF_D,"SWOT Level 1B Low-Rate Interferogram Data Product, Version D",POCLOUD,2022-12-16T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2799438260-POCLOUD,SWOT_L2_HR_PIXCVec_2.0,"SWOT Level 2 Water Mask Pixel Cloud Auxiliary Data Product, Version C",POCLOUD,2022-12-16T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C3233944988-POCLOUD,SWOT_L2_HR_PIXCVec_D,"SWOT Level 2 Water Mask Pixel Cloud Auxiliary Data Product, Version D",POCLOUD,2022-12-16T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C3233944986-POCLOUD,SWOT_L2_HR_PIXC_D,"SWOT Level 2 Water Mask Pixel Cloud Data Product, Version D",POCLOUD,2022-12-16T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2799438280-POCLOUD,SWOT_L2_HR_Raster_100m_2.0,"SWOT Level 2 Water Mask Raster Image 100m Data Product, Version C",POCLOUD,2022-12-16T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C3233942298-POCLOUD,SWOT_L2_HR_Raster_100m_D,"SWOT Level 2 Water Mask Raster Image 100m Data Product, Version D",POCLOUD,2022-12-16T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2799438288-POCLOUD,SWOT_L2_HR_Raster_250m_2.0,"SWOT Level 2 Water Mask Raster Image 250m Data Product, Version C",POCLOUD,2022-12-16T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C3233942299-POCLOUD,SWOT_L2_HR_Raster_250m_D,"SWOT Level 2 Water Mask Raster Image 250m Data Product, Version D",POCLOUD,2022-12-16T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C3233944993-POCLOUD,SWOT_L2_HR_Raster_D,"SWOT Level 2 Water Mask Raster Image Data Product, Version D",POCLOUD,2022-12-16T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2799465428-POCLOUD,SWOT_L2_LR_SSH_BASIC_2.0,"SWOT Level 2 KaRIn Low Rate Sea Surface Height Data Product - Basic, Version C",POCLOUD,2022-12-16T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C3233942270-POCLOUD,SWOT_L2_LR_SSH_BASIC_D,"SWOT Level 2 KaRIn Low Rate Sea Surface Height Data Product - Basic, Version D",POCLOUD,2022-12-16T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2799465497-POCLOUD,SWOT_L2_LR_SSH_EXPERT_2.0,"SWOT Level 2 KaRIn Low Rate Sea Surface Height Data Product - Expert, Version C",POCLOUD,2022-12-16T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C3233942272-POCLOUD,SWOT_L2_LR_SSH_EXPERT_D,"SWOT Level 2 KaRIn Low Rate Sea Surface Height Data Product - Expert, Version D",POCLOUD,2022-12-16T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2799465503-POCLOUD,SWOT_L2_LR_SSH_UNSMOOTHED_2.0,"SWOT Level 2 KaRIn Low Rate Sea Surface Height Data Product - Unsmoothed, Version C",POCLOUD,2022-12-16T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C3233942278-POCLOUD,SWOT_L2_LR_SSH_UNSMOOTHED_D,"SWOT Level 2 KaRIn Low Rate Sea Surface Height Data Product - Unsmoothed, Version D",POCLOUD,2022-12-16T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2799465507-POCLOUD,SWOT_L2_LR_SSH_WINDWAVE_2.0,"SWOT Level 2 KaRIn Low Rate Sea Surface Height Data Product - WindWave, Version C",POCLOUD,2022-12-16T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C3233942281-POCLOUD,SWOT_L2_LR_SSH_WINDWAVE_D,"SWOT Level 2 KaRIn Low Rate Sea Surface Height Data Product - WindWave, Version D",POCLOUD,2022-12-16T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C3317113871-POCLOUD,SWOT_L2_NALT_GDR_D,SWOT Level 2 Nadir Altimeter Geophysical Data Record with Waveforms Version D,POCLOUD,2022-12-16T00:00:00.000Z,,-180.0,-77.6,180.0,77.6 -C2799465509-POCLOUD,SWOT_L2_NALT_GDR_GDR_2.0,SWOT Level 2 Nadir Altimeter Geophysical Data Record with Waveforms - GDR,POCLOUD,2022-12-16T00:00:00.000Z,,-180.0,-77.6,180.0,77.6 -C3317113887-POCLOUD,SWOT_L2_NALT_GDR_GDR_D,SWOT Level 2 Nadir Altimeter Geophysical Data Record with Waveforms - GDR Version D,POCLOUD,2022-12-16T00:00:00.000Z,,-180.0,-77.6,180.0,77.6 -C2799465518-POCLOUD,SWOT_L2_NALT_GDR_SGDR_2.0,SWOT Level 2 Nadir Altimeter Geophysical Data Record with Waveforms - SGDR,POCLOUD,2022-12-16T00:00:00.000Z,,-180.0,-77.6,180.0,77.6 -C3317113891-POCLOUD,SWOT_L2_NALT_GDR_SGDR_D,SWOT Level 2 Nadir Altimeter Geophysical Data Record with Waveforms - SGDR Version D,POCLOUD,2022-12-16T00:00:00.000Z,,-180.0,-77.6,180.0,77.6 -C2799465522-POCLOUD,SWOT_L2_NALT_GDR_SSHA_2.0,SWOT Level 2 Nadir Altimeter Geophysical Data Record with Waveforms - SSHA,POCLOUD,2022-12-16T00:00:00.000Z,,-180.0,-77.6,180.0,77.6 -C3317113896-POCLOUD,SWOT_L2_NALT_GDR_SSHA_D,SWOT Level 2 Nadir Altimeter Geophysical Data Record with Waveforms - SSHA Version D,POCLOUD,2022-12-16T00:00:00.000Z,,-180.0,-77.6,180.0,77.6 -C2799438335-POCLOUD,SWOT_L2_NALT_IGDR_2.0,SWOT Level 2 Nadir Altimeter Interim Geophysical Data Record with Waveforms,POCLOUD,2022-12-16T00:00:00.000Z,,-180.0,-77.6,180.0,77.6 -C3317113876-POCLOUD,SWOT_L2_NALT_IGDR_D,SWOT Level 2 Nadir Altimeter Interim Geophysical Data Record with Waveforms Version D,POCLOUD,2022-12-16T00:00:00.000Z,,-180.0,-77.6,180.0,77.6 -C2799465526-POCLOUD,SWOT_L2_NALT_IGDR_GDR_2.0,SWOT Level 2 Nadir Altimeter Interim Geophysical Data Record with Waveforms - GDR,POCLOUD,2022-12-16T00:00:00.000Z,,-180.0,-77.6,180.0,77.6 -C3317113901-POCLOUD,SWOT_L2_NALT_IGDR_GDR_D,SWOT Level 2 Nadir Altimeter Interim Geophysical Data Record with Waveforms - GDR Version D,POCLOUD,2022-12-16T00:00:00.000Z,,-180.0,-77.6,180.0,77.6 -C2799465529-POCLOUD,SWOT_L2_NALT_IGDR_SGDR_2.0,SWOT Level 2 Nadir Altimeter Interim Geophysical Data Record with Waveforms - SGDR,POCLOUD,2022-12-16T00:00:00.000Z,,-180.0,-77.6,180.0,77.6 -C3317113912-POCLOUD,SWOT_L2_NALT_IGDR_SGDR_D,SWOT Level 2 Nadir Altimeter Interim Geophysical Data Record with Waveforms - SGDR Version D,POCLOUD,2022-12-16T00:00:00.000Z,,-180.0,-77.6,180.0,77.6 -C2799465538-POCLOUD,SWOT_L2_NALT_IGDR_SSHA_2.0,SWOT Level 2 Nadir Altimeter Interim Geophysical Data Record with Waveforms - SSHA,POCLOUD,2022-12-16T00:00:00.000Z,,-180.0,-77.6,180.0,77.6 -C3317113913-POCLOUD,SWOT_L2_NALT_IGDR_SSHA_D,SWOT Level 2 Nadir Altimeter Interim Geophysical Data Record with Waveforms - SSHA Version D,POCLOUD,2022-12-16T00:00:00.000Z,,-180.0,-77.6,180.0,77.6 -C2799438345-POCLOUD,SWOT_L2_NALT_OGDR_2.0,SWOT Level 2 Nadir Altimeter Operational Geophysical Data Record with Waveforms,POCLOUD,2022-12-16T00:00:00.000Z,,-180.0,-77.6,180.0,77.6 -C3317113879-POCLOUD,SWOT_L2_NALT_OGDR_D,SWOT Level 2 Nadir Altimeter Operational Geophysical Data Record with Waveforms Version D,POCLOUD,2022-12-16T00:00:00.000Z,,-180.0,-77.6,180.0,77.6 -C2799465542-POCLOUD,SWOT_L2_NALT_OGDR_GDR_2.0,SWOT Level 2 Nadir Altimeter Operational Geophysical Data Record with Waveforms - GDR,POCLOUD,2022-12-16T00:00:00.000Z,,-180.0,-77.6,180.0,77.6 -C3317113915-POCLOUD,SWOT_L2_NALT_OGDR_GDR_D,SWOT Level 2 Nadir Altimeter Operational Geophysical Data Record with Waveforms - GDR Version D,POCLOUD,2022-12-16T00:00:00.000Z,,-180.0,-77.6,180.0,77.6 -C2799465544-POCLOUD,SWOT_L2_NALT_OGDR_SSHA_2.0,SWOT Level 2 Nadir Altimeter Operational Geophysical Data Record with Waveforms - SSHA,POCLOUD,2022-12-16T00:00:00.000Z,,-180.0,-77.6,180.0,77.6 -C3317113918-POCLOUD,SWOT_L2_NALT_OGDR_SSHA_D,SWOT Level 2 Nadir Altimeter Operational Geophysical Data Record with Waveforms - SSHA Version D,POCLOUD,2022-12-16T00:00:00.000Z,,-180.0,-77.6,180.0,77.6 -C2799438350-POCLOUD,SWOT_L2_RAD_GDR_2.0,SWOT Level 2 Radiometer Brightness Temperatures and Troposphere Data Product,POCLOUD,2022-12-16T00:00:00.000Z,,-180.0,-77.6,180.0,77.6 -C3317113598-POCLOUD,SWOT_L2_RAD_GDR_D,SWOT Level 2 Radiometer Brightness Temperatures and Troposphere Data Product Version D,POCLOUD,2022-12-16T00:00:00.000Z,,-180.0,-77.6,180.0,77.6 -C2799438351-POCLOUD,SWOT_L2_RAD_IGDR_2.0,SWOT Level 2 Radiometer Brightness Temperatures and Troposphere Interim Data Product,POCLOUD,2022-12-16T00:00:00.000Z,,-180.0,-77.6,180.0,77.6 -C3317113861-POCLOUD,SWOT_L2_RAD_IGDR_D,SWOT Level 2 Radiometer Brightness Temperatures and Troposphere Interim Data Product Version D,POCLOUD,2022-12-16T00:00:00.000Z,,-180.0,-77.6,180.0,77.6 -C2799438353-POCLOUD,SWOT_L2_RAD_OGDR_2.0,SWOT Level 2 Radiometer Brightness Temperatures and Troposphere Operational Data Product,POCLOUD,2022-12-16T00:00:00.000Z,,-180.0,-77.6,180.0,77.6 -C3317113868-POCLOUD,SWOT_L2_RAD_OGDR_D,SWOT Level 2 Radiometer Brightness Temperatures and Troposphere Operational Data Product Version D,POCLOUD,2022-12-16T00:00:00.000Z,,-180.0,-77.6,180.0,77.6 -C2777002894-POCLOUD,SWOT_L4_DAWG_SOS_DISCHARGE,SWOT Sword of Science River Discharge Products Version 1,POCLOUD,1980-01-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2296989401-POCLOUD,SWOT_MOE_1.0,SWOT Medium-accuracy Orbit Ephemeris (MOE),POCLOUD,2022-12-16T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2799438359-POCLOUD,SWOT_POE_2.0,SWOT Precise Orbit Ephemeris (POE),POCLOUD,2022-12-16T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C3403413166-POCLOUD,SWOT_POSTLAUNCH_GLIDER,SWOT Postlaunch Field Campaign Data from Gliders,POCLOUD,2023-03-30T00:00:00.000Z,2023-08-02T00:00:00.000Z,-125.28,35.3,-121.88,36.85 -C3377339417-POCLOUD,SWOT_POSTLAUNCH_L1_MOORING,SWOT Postlaunch Oceanography Field Campaign L1 Moorings,POCLOUD,2023-02-18T00:00:00.000Z,2023-10-09T00:00:00.000Z,-125.2,35.3,-124.8,36.2 -C3384042453-POCLOUD,SWOT_POSTLAUNCH_L2_MOORING,SWOT Postlaunch Oceanography Field Campaign L2 Moorings,POCLOUD,2023-02-18T00:00:00.000Z,2024-10-29T00:00:00.000Z,-125.2,35.3,-124.8,36.19 -C3393505469-POCLOUD,SWOT_POSTLAUNCH_L3_MOORING,SWOT Post-launch Field Campaign Data from L3 Mooring,POCLOUD,2023-02-18T00:00:00.000Z,2024-10-29T00:00:00.000Z,-125.2,35.2,-124.8,36.2 -C3377359968-POCLOUD,SWOT_POSTLAUNCH_SHIPBOARD,SWOT Postlaunch Oceanography Field Campaign Shipboard CTD and Water Sample Data,POCLOUD,2023-02-23T00:00:00.000Z,2024-11-02T00:00:00.000Z,-125.4,33.04,-118.24,36.21 -C2229635767-POCLOUD,SWOT_PRELAUNCH_L2_BPR_V1,SWOT 2019-2020 Prelaunch Oceanography Field Campaign NOAA Bottom Pressure Recorders (BPR) ,POCLOUD,2019-09-04T00:00:00.000Z,2020-01-19T23:59:59.999Z,-125.2,35.8,-125.0,36.2 -C2229635647-POCLOUD,SWOT_PRELAUNCH_L2_GLIDER_V1,SWOT 2019-2020 Prelaunch Oceanography Field Campaign Rutgers Slocum Gliders,POCLOUD,2019-09-05T00:00:00.000Z,2019-12-28T23:59:59.999Z,-125.2,35.8,-125.0,36.2 -C2229635778-POCLOUD,SWOT_PRELAUNCH_L2_GPS_V1,SWOT 2019-2020 Prelaunch Oceanography Field Campaign JPL Global Positioning Systems (GPS),POCLOUD,2019-09-05T00:00:00.000Z,2020-01-19T23:59:59.999Z,-125.2,35.8,-125.0,36.2 -C2229635776-POCLOUD,SWOT_PRELAUNCH_L2_PIES_V1,SWOT 2019-2020 Prelaunch Oceanography Field Campaign SIO Pressure-sensing Inverted Echo Sounder (PIES),POCLOUD,2019-09-06T00:00:00.000Z,2020-01-18T23:59:59.999Z,-125.2,35.8,-125.0,36.2 -C2229635764-POCLOUD,SWOT_PRELAUNCH_L2_PRAWLER_V1,SWOT 2019-2020 Prelaunch Oceanography Field Campaign NOAA Prawlers,POCLOUD,2019-09-05T00:00:00.000Z,2020-01-06T23:59:59.999Z,-125.2,35.8,-125.0,36.2 -C2229635779-POCLOUD,SWOT_PRELAUNCH_L2_SIOCTD_V1,SWOT 2019-2020 Prelaunch Oceanography Field Campaign SIO Moored Fixed-Depth CTDs,POCLOUD,2019-09-05T00:00:00.000Z,2020-01-18T23:59:59.999Z,-125.2,35.8,-125.0,36.2 -C2235488579-POCLOUD,SWOT_PRELAUNCH_L2_WHOICTD_V1,SWOT 2019-2020 Prelaunch Oceanography Field Campaign WHOI/NOAA Moored Fixed-Depth CTDs,POCLOUD,2019-09-04T00:00:00.000Z,2020-01-19T23:59:59.999Z,-125.2,35.8,-125.0,36.2 -C2229635761-POCLOUD,SWOT_PRELAUNCH_L2_WW_V1,SWOT 2019-2020 Prelaunch Oceanography Field Campaign SIO Mooring WireWalker (WW),POCLOUD,2019-09-05T00:00:00.000Z,2019-12-03T23:59:59.999Z,-125.2,35.8,-125.0,36.2 -C2296989490-POCLOUD,SWOT_SAT_COM_1.0,SWOT Satellite Center of Mass Position Data,POCLOUD,2022-12-16T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2147947806-POCLOUD,SWOT_SIMULATED_L2_KARIN_SSH_ECCO_LLC4320_CALVAL_V1,SWOT Simulated Level-2 KaRIn SSH from MITgcm ECCO LLC4320 for Cal/Val Version 1,POCLOUD,2011-11-13T00:00:00.000Z,2012-11-12T00:50:15.999Z,-180.0,-77.6,180.0,77.6 -C2152044763-POCLOUD,SWOT_SIMULATED_L2_KARIN_SSH_ECCO_LLC4320_SCIENCE_V1,SWOT Simulated Level-2 KaRIn SSH from MITgcm ECCO LLC4320 for Science Version 1,POCLOUD,2011-11-13T00:00:00.000Z,2012-11-12T01:23:39.999Z,-180.0,-77.6,180.0,77.6 -C2152046451-POCLOUD,SWOT_SIMULATED_L2_KARIN_SSH_GLORYS_CALVAL_V1, SWOT Simulated Level-2 KaRIn SSH from GLORYS for Cal/Val Version 1,POCLOUD,2014-04-12T12:00:00.000Z,2015-12-31T00:40:12.999Z,-180.0,-77.6,180.0,77.6 -C2152045877-POCLOUD,SWOT_SIMULATED_L2_KARIN_SSH_GLORYS_SCIENCE_V1, SWOT Simulated Level-2 KaRIn SSH from GLORYS for Science Version 1,POCLOUD,2014-04-12T12:00:00.000Z,2015-12-31T00:12:00.999Z,-180.0,-77.6,180.0,77.6 -C2158344213-POCLOUD,SWOT_SIMULATED_L2_NADIR_SSH_ECCO_LLC4320_CALVAL_V1,SWOT Simulated Level-2 Nadir SSH from MITgcm ECCO LLC4320 for Cal/Val Version 1,POCLOUD,2011-11-13T00:00:00.000Z,2012-11-12T00:50:15.999Z,-180.0,-77.6,180.0,77.6 -C2158348170-POCLOUD,SWOT_SIMULATED_L2_NADIR_SSH_ECCO_LLC4320_SCIENCE_V1,SWOT Simulated Level-2 Nadir SSH from MITgcm ECCO LLC4320 for Science Version 1,POCLOUD,2011-11-13T00:00:00.000Z,2012-11-12T01:23:37.999Z,-180.0,-77.6,180.0,77.6 -C2158348264-POCLOUD,SWOT_SIMULATED_L2_NADIR_SSH_GLORYS_CALVAL_V1, SWOT Simulated Level-2 Nadir SSH from GLORYS for Cal/Val Version 1,POCLOUD,2014-04-12T12:00:00.000Z,2015-12-31T00:40:12.999Z,-180.0,-77.6,180.0,77.6 -C2158350299-POCLOUD,SWOT_SIMULATED_L2_NADIR_SSH_GLORYS_SCIENCE_V1, SWOT Simulated Level-2 Nadir SSH from GLORYS for Science Version 1,POCLOUD,2014-04-12T12:00:00.000Z,2015-12-31T00:11:58.999Z,-180.0,-77.6,180.0,77.6 -C2263383657-POCLOUD,SWOT_SIMULATED_NA_CONTINENT_L2_HR_PIXCVEC_V1,SWOT Simulated Level 2 North America Continent KaRIn High Rate Pixel Cloud Vector Attribute Product Version 1.0,POCLOUD,2022-08-01T00:00:00.000Z,2022-08-22T23:59:00.000Z,-113.0,24.0,-82.0,52.0 -C2263383386-POCLOUD,SWOT_SIMULATED_NA_CONTINENT_L2_HR_PIXC_V1,SWOT Simulated Level 2 North America Continent KaRIn High Rate Water Mask Pixel Cloud Product Version 1.0,POCLOUD,2022-08-01T00:00:00.000Z,2022-08-22T23:59:00.000Z,-113.0,24.0,-82.0,52.0 -C2263383790-POCLOUD,SWOT_SIMULATED_NA_CONTINENT_L2_HR_RASTER_V1,SWOT Simulated Level 2 North America Continent High Rate Raster Product Version 1.0,POCLOUD,2022-08-01T00:00:00.000Z,2022-08-22T23:59:00.000Z,-113.0,24.0,-82.0,52.0 -C3202004220-OB_CLOUD,SeaWiFS_L1_GAC,"OrbView-2 SeaWiFS Level-1A Global Area Coverage (GAC) Data, version 2",OB_CLOUD,1997-09-04T00:00:00Z,2010-12-11T23:59:59Z,-180.0,-90.0,180.0,90.0 -C3202004252-OB_CLOUD,SeaWiFS_L1_MLAC,"OrbView-2 SeaWiFS Level-1A Merged Local Area Coverage (MLAC) Data, version 2",OB_CLOUD,1997-09-04T00:00:00Z,2010-12-11T23:59:59Z,-180.0,-90.0,180.0,90.0 -C3198658845-OB_CLOUD,SeaWiFS_L2_GAC_IOP,"OrbView-2 SeaWiFS Level-2 Regional Global Area Coverage (GAC) Inherent Optical Properties (IOP) Data, version 2022.0",OB_CLOUD,1997-09-04T00:00:00Z,2010-12-11T23:59:59Z,-180.0,-90.0,180.0,90.0 -C2789774382-OB_CLOUD,SeaWiFS_L2_GAC_OC,"OrbView-2 SeaWiFS Level-2 Regional Global Area Coverage (GAC) Ocean Color (OC) Data, version 2022.0",OB_CLOUD,1997-09-04T00:00:00Z,2010-12-11T23:59:59Z,-180.0,-90.0,180.0,90.0 -C3198658953-OB_CLOUD,SeaWiFS_L2_MLAC_IOP,"OrbView-2 SeaWiFS Level-2 Regional Merged Local Area Coverage (MLAC) Inherent Optical Properties (IOP) Data, version 2022.0",OB_CLOUD,1997-09-04T00:00:00Z,2010-12-11T23:59:59Z,-180.0,-90.0,180.0,90.0 -C3198658688-OB_CLOUD,SeaWiFS_L2_MLAC_OC,"OrbView-2 SeaWiFS Level-2 Regional Merged Local Area Coverage (MLAC) Ocean Color (OC) Data, version 2022.0",OB_CLOUD,1997-09-04T00:00:00Z,2010-12-11T23:59:59Z,-180.0,-90.0,180.0,90.0 -C3113253100-OB_CLOUD,SeaWiFS_L3b_CHL,"OrbView-2 SeaWiFS Level-3 Global Binned Chlorophyll (CHL) Data, version 2022.0",OB_CLOUD,1997-09-04T00:00:00Z,2010-12-11T23:59:59Z,-180.0,-90.0,180.0,90.0 -C3113253547-OB_CLOUD,SeaWiFS_L3b_IOP,"OrbView-2 SeaWiFS Level-3 Global Binned Inherent Optical Properties (IOP) Data, version 2022.0",OB_CLOUD,1997-09-04T00:00:00Z,2010-12-11T23:59:59Z,-180.0,-90.0,180.0,90.0 -C3113253709-OB_CLOUD,SeaWiFS_L3b_KD,"OrbView-2 SeaWiFS Level-3 Global Binned Diffuse Attenuation Coefficient for Downwelling Irradiance (KD) Data, version 2022.0",OB_CLOUD,1997-09-04T00:00:00Z,2010-12-11T23:59:59Z,-180.0,-90.0,180.0,90.0 -C3113254062-OB_CLOUD,SeaWiFS_L3b_PAR,"OrbView-2 SeaWiFS Level-3 Global Binned Photosynthetically Available Radiation (PAR) Data, version 2022.0",OB_CLOUD,1997-09-04T00:00:00Z,2010-12-11T23:59:59Z,-180.0,-90.0,180.0,90.0 -C3113254253-OB_CLOUD,SeaWiFS_L3b_PIC,"OrbView-2 SeaWiFS Level-3 Global Binned Particulate Inorganic Carbon (PIC) Data, version 2022.0",OB_CLOUD,1997-09-04T00:00:00Z,2010-12-11T23:59:59Z,-180.0,-90.0,180.0,90.0 -C3113254405-OB_CLOUD,SeaWiFS_L3b_POC,"OrbView-2 SeaWiFS Level-3 Global Binned Particulate Organic Carbon (POC) Data, version 2022.0",OB_CLOUD,1997-09-04T00:00:00Z,2010-12-11T23:59:59Z,-180.0,-90.0,180.0,90.0 -C3113254561-OB_CLOUD,SeaWiFS_L3b_RRS,"OrbView-2 SeaWiFS Level-3 Global Binned Remote-Sensing Reflectance (RRS) Data, version 2022.0",OB_CLOUD,1997-09-04T00:00:00Z,2010-12-11T23:59:59Z,-180.0,-90.0,180.0,90.0 -C3113254690-OB_CLOUD,SeaWiFS_L3m_CHL,"OrbView-2 SeaWiFS Level-3 Global Mapped Chlorophyll (CHL) Data, version 2022.0",OB_CLOUD,1997-09-04T00:00:00Z,2010-12-11T23:59:59Z,-180.0,-90.0,180.0,90.0 -C3113254783-OB_CLOUD,SeaWiFS_L3m_IOP,"OrbView-2 SeaWiFS Level-3 Global Mapped Inherent Optical Properties (IOP) Data, version 2022.0",OB_CLOUD,1997-09-04T00:00:00Z,2010-12-11T23:59:59Z,-180.0,-90.0,180.0,90.0 -C3113254820-OB_CLOUD,SeaWiFS_L3m_KD,"OrbView-2 SeaWiFS Level-3 Global Mapped Diffuse Attenuation Coefficient for Downwelling Irradiance (KD) Data, version 2022.0",OB_CLOUD,1997-09-04T00:00:00Z,2010-12-11T23:59:59Z,-180.0,-90.0,180.0,90.0 -C3113254885-OB_CLOUD,SeaWiFS_L3m_PAR,"OrbView-2 SeaWiFS Level-3 Global Mapped Photosynthetically Available Radiation (PAR) Data, version 2022.0",OB_CLOUD,1997-09-04T00:00:00Z,2010-12-11T23:59:59Z,-180.0,-90.0,180.0,90.0 -C3113254916-OB_CLOUD,SeaWiFS_L3m_PIC,"OrbView-2 SeaWiFS Level-3 Global Mapped Particulate Inorganic Carbon (PIC) Data, version 2022.0",OB_CLOUD,1997-09-04T00:00:00Z,2010-12-11T23:59:59Z,-180.0,-90.0,180.0,90.0 -C3113254949-OB_CLOUD,SeaWiFS_L3m_POC,"OrbView-2 SeaWiFS Level-3 Global Mapped Particulate Organic Carbon (POC) Data, version 2022.0",OB_CLOUD,1997-09-04T00:00:00Z,2010-12-11T23:59:59Z,-180.0,-90.0,180.0,90.0 -C3113255003-OB_CLOUD,SeaWiFS_L3m_RRS,"OrbView-2 SeaWiFS Level-3 Global Mapped Remote-Sensing Reflectance (RRS) Data, version 2022.0",OB_CLOUD,1997-09-04T00:00:00Z,2010-12-11T23:59:59Z,-180.0,-90.0,180.0,90.0 -C3455985815-OB_CLOUD,SeaWiFS_L4b_AVW,"OrbView-2 SeaWiFS Level-4 Global Binned Apparent Visible Wavelength (AVW) Data, version 2022.0",OB_CLOUD,1997-09-04T00:00:00Z,2010-12-11T23:59:59Z,-180.0,-90.0,180.0,90.0 -C3455985836-OB_CLOUD,SeaWiFS_L4b_CARBON,"OrbView-2 SeaWiFS Level-4 Global Binned Carbon Data, version 2022.0",OB_CLOUD,1997-09-04T00:00:00Z,2010-12-11T23:59:59Z,-180.0,-90.0,180.0,90.0 -C3427337461-OB_CLOUD,SeaWiFS_L4b_GSM,"OrbView-2 SeaWiFS Level-4 Global Binned Garver-Siegel-Maritorena Model (GSM) Data, version 2022.0",OB_CLOUD,1997-09-04T00:00:00Z,2010-12-11T23:59:59Z,-180.0,-90.0,180.0,90.0 -C3455985873-OB_CLOUD,SeaWiFS_L4m_AVW,"OrbView-2 SeaWiFS Level-4 Global Mapped Apparent Visible Wavelength (AVW) Data, version 2022.0",OB_CLOUD,1997-09-04T00:00:00Z,2010-12-11T23:59:59Z,-180.0,-90.0,180.0,90.0 -C3455985893-OB_CLOUD,SeaWiFS_L4m_CARBON,"OrbView-2 SeaWiFS Level-4 Global Mapped Carbon Data, version 2022.0",OB_CLOUD,1997-09-04T00:00:00Z,2010-12-11T23:59:59Z,-180.0,-90.0,180.0,90.0 -C3534747485-OB_CLOUD,SeaWiFS_L4m_ELOEV,"OrbView-2 SeaWiFS Global Mapped Eulerian and Lagrangian Oceanography and Ecology Variables Data, version 1",OB_CLOUD,1997-09-04T00:00:00.00Z,2010-12-11T23:59:59Z,-180.0,-90.0,180.0,90.0 -C3427337473-OB_CLOUD,SeaWiFS_L4m_GSM,"OrbView-2 SeaWiFS Level-4 Global Mapped Garver-Siegel-Maritorena Model (GSM) Data, version 2022.0",OB_CLOUD,1997-09-04T00:00:00Z,2010-12-11T23:59:59Z,-180.0,-90.0,180.0,90.0 -C2036877565-POCLOUD,TELLUS_GLDAS-NOAH-3.3_TWS-ANOMALY_MONTHLY,Monthly gridded Global Land Data Assimilation System (GLDAS) from Noah-v3.3 land hydrology model for GRACE and GRACE-FO over nominal months,POCLOUD,2002-04-04T00:00:00.000Z,,-180.0,-89.5,180.0,89.5 -C3195502222-POCLOUD,TELLUS_GRAC-GRFO_MASCON_GRID_RL06.3_V4,"JPL GRACE and GRACE-FO Mascon Ocean, Ice, and Hydrology Equivalent Water Height JPL Release 06.3 Version 04",POCLOUD,2002-04-04T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2077042515-POCLOUD,TELLUS_GRAC_L3_CSR_RL06_LND_v04,CSR TELLUS GRACE Level-3 Monthly Land Water-Equivalent-Thickness Surface Mass Anomaly Release 6.0 version 04,POCLOUD,2002-04-05T00:00:00.000Z,2017-10-18T20:00:00.000Z,-180.0,-89.5,180.0,89.5 -C2077042363-POCLOUD,TELLUS_GRAC_L3_CSR_RL06_OCN_v04,CSR TELLUS GRACE Level-3 Monthly Ocean Bottom Pressure Anomaly Release 6.0 version 04,POCLOUD,2002-04-04T00:00:00.000Z,2017-10-25T00:00:00.000Z,-180.0,-89.5,180.0,89.5 -C2077042566-POCLOUD,TELLUS_GRAC_L3_GFZ_RL06_LND_v04,GFZ TELLUS GRACE Level-3 Monthly Land Water-Equivalent-Thickness Surface Mass Anomaly Release 6.0 version 04,POCLOUD,2002-04-05T00:00:00.000Z,2017-10-18T00:00:00.000Z,-180.0,-89.5,180.0,89.5 -C2077042412-POCLOUD,TELLUS_GRAC_L3_GFZ_RL06_OCN_v04,GFZ TELLUS GRACE Level-3 Monthly Ocean Bottom Pressure Anomaly Release 6.0 version 04,POCLOUD,2002-04-04T00:00:00.000Z,2017-10-25T00:00:00.000Z,-180.0,-89.5,180.0,89.5 -C2077042612-POCLOUD,TELLUS_GRAC_L3_JPL_RL06_LND_v04,JPL TELLUS GRACE Level-3 Monthly Land Water-Equivalent-Thickness Surface Mass Anomaly Release 6.0 version 04,POCLOUD,2002-04-04T00:00:00.000Z,2017-10-18T00:00:00.000Z,-180.0,-89.5,180.0,89.5 -C2077042455-POCLOUD,TELLUS_GRAC_L3_JPL_RL06_OCN_v04,JPL TELLUS GRACE Level-3 Monthly Ocean Bottom Pressure Anomaly Release 6.0 version 04,POCLOUD,2002-04-04T00:00:00.000Z,2017-10-25T00:00:00.000Z,-180.0,-89.5,180.0,89.5 -C3193285193-POCLOUD,TELLUS_GRFO_L3_CSR_RL06.3_LND_v04,CSR TELLUS GRACE-FO Level-3 Monthly Land Water-Equivalent-Thickness Surface Mass Anomaly Release 6.3 version 04,POCLOUD,2018-05-22T00:00:00.000Z,,-180.0,-89.5,180.0,89.5 -C3193289116-POCLOUD,TELLUS_GRFO_L3_CSR_RL06.3_OCN_v04,CSR TELLUS GRACE-FO Level-3 Monthly Ocean Bottom Pressure Anomaly Release 6.3 version 04,POCLOUD,2018-05-22T00:00:00.000Z,,-180.0,-89.5,180.0,89.5 -C3193293825-POCLOUD,TELLUS_GRFO_L3_GFZ_RL06.3_LND_v04,GFZ TELLUS GRACE-FO Level-3 Monthly Land Water-Equivalent-Thickness Surface Mass Anomaly Release 6.3 version 04,POCLOUD,2018-05-22T00:00:00.000Z,,-180.0,-89.5,180.0,89.5 -C3193298027-POCLOUD,TELLUS_GRFO_L3_GFZ_RL06.3_OCN_v04,GFZ TELLUS GRACE-FO Level-3 Monthly Ocean Bottom Pressure Anomaly Release 6.3 version 04,POCLOUD,2018-05-22T00:00:00.000Z,,-180.0,-89.5,180.0,89.5 -C3193302127-POCLOUD,TELLUS_GRFO_L3_JPL_RL06.3_LND_v04,JPL TELLUS GRACE-FO Level-3 Monthly Land Water-Equivalent-Thickness Surface Mass Anomaly Release 6.3 version 04,POCLOUD,2018-05-22T00:00:00.000Z,,-180.0,-89.5,180.0,89.5 -C3193304376-POCLOUD,TELLUS_GRFO_L3_JPL_RL06.3_OCN_v04,JPL TELLUS GRACE-FO Level-3 Monthly Ocean Bottom Pressure Anomaly Release 6.3 version 04,POCLOUD,2018-05-22T00:00:00.000Z,,-180.0,-89.5,180.0,89.5 -C3685896232-LARC_CLOUD,TEMPO_CLDO4_L2,TEMPO cloud pressure and fraction (O2-O2 dimer) V04 (PROVISIONAL),LARC_CLOUD,2023-08-01T00:00:00Z,,-170.0,10.0,-10.0,80.0 -C2930760329-LARC_CLOUD,TEMPO_CLDO4_L2,TEMPO cloud pressure and fraction (O2-O2 dimer) V03 (PROVISIONAL),LARC_CLOUD,2023-08-01T00:00:00.000Z,,-170.0,10.0,-10.0,80.0 -C3685669056-LARC_CLOUD,TEMPO_CLDO4_L2_NRT,TEMPO cloud pressure and fraction (O2-O2 dimer) V02 (NRT) (PROVISIONAL),LARC_CLOUD,2025-09-17T00:00:00.000Z,,-170.0,10.0,-10.0,80.0 -C3685896149-LARC_CLOUD,TEMPO_CLDO4_L3,TEMPO gridded cloud fraction and pressure (O2-O2 dimer) Version V04 (PROVISIONAL),LARC_CLOUD,2023-08-01T00:00:00Z,,-170.0,10.0,-10.0,80.0 -C3685668579-LARC_CLOUD,TEMPO_CLDO4_L3_NRT,TEMPO gridded cloud fraction and pressure (O2-O2 dimer) V02 (NRT) (PROVISIONAL),LARC_CLOUD,2025-09-17T00:00:00.000Z,,-170.0,10.0,-10.0,80.0 -C3685896602-LARC_CLOUD,TEMPO_DRK_L1,TEMPO dark exposure V04 (PROVISIONAL),LARC_CLOUD,2023-06-06T00:00:00.000Z,,-170.0,10.0,-10.0,80.0 -C2930729926-LARC_CLOUD,TEMPO_DRK_L1,TEMPO dark exposure V03 (PROVISIONAL),LARC_CLOUD,2023-06-08T00:00:00.000Z,,-170.0,10.0,-10.0,80.0 -C3685912035-LARC_CLOUD,TEMPO_HCHO_L2,TEMPO formaldehyde total column V04 (PROVISIONAL) ,LARC_CLOUD,2023-08-01T00:00:00.000Z,,-170.0,10.0,-10.0,80.0 -C3685668884-LARC_CLOUD,TEMPO_HCHO_L2_NRT,TEMPO formaldehyde total column V02 (NRT) (PROVISIONAL),LARC_CLOUD,2025-09-17T00:00:00.000Z,,-170.0,10.0,-10.0,80.0 -C3685897141-LARC_CLOUD,TEMPO_HCHO_L3,TEMPO gridded formaldehyde total column V04 (PROVISIONAL),LARC_CLOUD,2023-08-01T00:00:00Z,,-170.0,10.0,-10.0,80.0 -C3685668680-LARC_CLOUD,TEMPO_HCHO_L3_NRT,TEMPO gridded formaldehyde total column V02 (NRT) (PROVISIONAL),LARC_CLOUD,2025-09-17T00:00:00.000Z,,-170.0,10.0,-10.0,80.0 -C3685896490-LARC_CLOUD,TEMPO_IRRR_L1,TEMPO solar irradiance (reference diffuser) V04 (PROVISIONAL),LARC_CLOUD,2023-08-01T00:00:00Z,,,,, -C2930728569-LARC_CLOUD,TEMPO_IRRR_L1,TEMPO solar irradiance (reference diffuser) V03 (PROVISIONAL),LARC_CLOUD,2023-08-01T00:00:00.000Z,,-170.0,10.0,-10.0,80.0 -C3685896550-LARC_CLOUD,TEMPO_IRR_L1,TEMPO solar irradiance V04 (PROVISIONAL),LARC_CLOUD,2023-08-01T00:00:00Z,,-170.0,10.0,-10.0,80.0 -C2930757598-LARC_CLOUD,TEMPO_IRR_L1,TEMPO solar irradiance V03 (PROVISIONAL),LARC_CLOUD,2023-08-01T00:00:00.000Z,,-170.0,10.0,-10.0,80.0 -C3685896872-LARC_CLOUD,TEMPO_NO2_L2,TEMPO NO2 tropospheric and stratospheric columns V04 (PROVISIONAL),LARC_CLOUD,2023-08-01T00:00:00Z,,-170.0,10.0,-10.0,80.0 -C3685668972-LARC_CLOUD,TEMPO_NO2_L2_NRT,TEMPO NO2 tropospheric and stratospheric columns V02 (NRT) PROVISIONAL,LARC_CLOUD,2025-09-17T00:00:00.000Z,,-170.0,10.0,-10.0,80.0 -C3685896708-LARC_CLOUD,TEMPO_NO2_L3,TEMPO gridded NO2 tropospheric and stratospheric columns V04 (PROVISIONAL),LARC_CLOUD,,,-170.0,10.0,-10.0,80.0 -C3685668637-LARC_CLOUD,TEMPO_NO2_L3_NRT,TEMPO gridded NO2 tropospheric and stratospheric columns V02 (NRT) (PROVISIONAL),LARC_CLOUD,2025-09-17T00:00:00.000Z,,-170.0,10.0,-10.0,80.0 -C3685896287-LARC_CLOUD,TEMPO_O3PROF_L2,TEMPO ozone profile V04 (BETA),LARC_CLOUD,2023-08-01T00:00:00Z,,-170.0,10.0,-10.0,80.0 -C3685896402-LARC_CLOUD,TEMPO_O3PROF_L3,TEMPO gridded ozone profile V04 (BETA),LARC_CLOUD,2023-08-01T00:00:00Z,,-170.0,10.0,-10.0,80.0 -C3685912131-LARC_CLOUD,TEMPO_O3TOT_L2,TEMPO ozone total column V04 (PROVISIONAL),LARC_CLOUD,2023-08-01T00:00:00.000Z,,-170.0,10.0,-10.0,80.0 -C2930726639-LARC_CLOUD,TEMPO_O3TOT_L2,TEMPO ozone total column V03 (PROVISIONAL),LARC_CLOUD,2023-08-01T00:00:00.000Z,,-170.0,10.0,-10.0,80.0 -C3685896625-LARC_CLOUD,TEMPO_O3TOT_L3,TEMPO gridded ozone total column V04 (PROVISIONAL)  ,LARC_CLOUD,2023-08-01T00:00:00Z,,-170.0,10.0,-10.0,80.0 -C2930766795-LARC_CLOUD,TEMPO_RADT_L1,TEMPO geolocated Earth radiances twilight V03 (PROVISIONAL),LARC_CLOUD,2023-08-01T00:00:00.000Z,,-170.0,10.0,-10.0,80.0 -C3685912073-LARC_CLOUD,TEMPO_RAD_L1,TEMPO geolocated Earth radiances V04 (PROVISIONAL),LARC_CLOUD,2023-08-01T00:00:00.000Z,,-170.0,10.0,-10.0,80.0 -C2930759336-LARC_CLOUD,TEMPO_RAD_L1,TEMPO geolocated Earth radiances V03 (PROVISIONAL),LARC_CLOUD,2023-08-01T00:00:00.000Z,,-170.0,10.0,-10.0,80.0 -C3685668726-LARC_CLOUD,TEMPO_RAD_L1_NRT,TEMPO geolocated Earth radiances V02 (NRT) (PROVISIONAL),LARC_CLOUD,2025-09-17T00:00:00.000Z,,-170.0,10.0,-10.0,80.0 -C3215607563-LARC_CLOUD,TL2CH4LN,TES/Aura L2 Methane Lite Nadir V007,LARC_CLOUD,2004-08-01T00:00:00.000Z,2015-12-31T23:59:59.999Z,-180.0,-90.0,180.0,90.0 -C3215608588-LARC_CLOUD,TL2COLN,TES/Aura L2 Carbon Monoxide Lite Nadir V007,LARC_CLOUD,2004-08-01T00:00:00.000Z,2015-12-31T23:59:59.999Z,-180.0,-90.0,180.0,90.0 -C3215609406-LARC_CLOUD,TL2H2OLN,TES/Aura L2 Water Vapor Lite Nadir V007,LARC_CLOUD,2004-08-01T00:00:00.000Z,2015-12-31T23:59:59.999Z,-180.0,-90.0,180.0,90.0 -C3215610255-LARC_CLOUD,TL2HDOLN,TES/Aura L2 Deuterium Oxide Lite Nadir V007,LARC_CLOUD,2004-08-01T00:00:00.000Z,2015-12-31T23:59:59.999Z,-180.0,-90.0,180.0,90.0 -C3215610787-LARC_CLOUD,TL2MTLLN,TES/Aura L2 Methanol Lite Nadir V007,LARC_CLOUD,2004-08-01T00:00:00.000Z,2015-12-31T23:59:59.999Z,-180.0,-90.0,180.0,90.0 -C3215611066-LARC_CLOUD,TL2NH3LN,TES/Aura L2 Ammonia Lite Nadir V007,LARC_CLOUD,2004-08-01T00:00:00.000Z,2015-12-31T23:59:59.999Z,-180.0,-90.0,180.0,90.0 -C3215611677-LARC_CLOUD,TL2O3LN,TES/Aura L2 Ozone Lite Nadir V007,LARC_CLOUD,2004-08-01T00:00:00.000000Z,2015-12-31T23:59:59.999999Z,-180.0,-90.0,180.0,90.0 -C2036879048-POCLOUD,TMI-REMSS-L2P-v4,GHRSST Level 2P Global Subskin Sea Surface Temperature from TRMM Microwave Imager (TMI) onboard Tropical Rainfall Measurement Mission (TRMM) satellite,POCLOUD,1998-01-01T00:44:16.000Z,2015-01-11T22:19:45.000Z,-179.99,-39.06,180.0,39.01 -C2617176783-POCLOUD,TMI-REMSS-L3U-v7.1a,GHRSST Level 3U Global Subskin Sea Surface Temperature from TMI onboard TRMM satellite,POCLOUD,1997-12-08T00:00:00.000Z,2015-01-01T23:59:59.999Z,-180.0,-90.0,180.0,90.0 -C2599212091-POCLOUD,TOPEX_POSEIDON_GDR_F,TOPEX/POSEIDON Geophysical Data Record Version F,POCLOUD,1992-10-13T00:00:00.000Z,2005-10-04T23:59:59.999Z,-180.0,-66.0,180.0,66.0 -C2342535199-LARC_ASDC,TRACERAQ_AircraftRemoteSensing_GV_GCAS_Data,TRACER-AQ JSC G-V Aircraft Remotely Sensed GEOstationary Coastal and Air Pollution Events (GEO-CAPE) Airborne Simulator (GCAS) Data,LARC_ASDC,2021-08-09T00:00:00.000Z,2021-09-29T00:00:00.000Z,-99.0,23.0,35.0,37.0 -C2342535056-LARC_ASDC,TRACERAQ_Ground_LaPorte_Data,TRACER-AQ La Porte Ground Site Data,LARC_ASDC,2021-08-09T00:00:00.000Z,2021-09-30T00:00:00.000Z,-100.0,22.0,-83.0,38.0 -C1570117995-OB_DAAC,VIIRSJ1_L1,"NOAA-20 VIIRS Level-1A Data, version 2",OB_DAAC,2017-11-29T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C1940926976-OB_DAAC,VIIRSJ1_L1_GEO,"NOAA-20 VIIRS Level-1 Geolocation Product Data, version 2",OB_DAAC,2017-11-29T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3396928892-OB_CLOUD,VIIRSJ1_L2_IOP_NRT,"NOAA-20 VIIRS Level-2 Regional Inherent Optical Properties (IOP) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2017-11-29T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3166805774-OB_DAAC,VIIRSJ1_L2_SST,"NOAA-20 VIIRS Level-Regional Regional 11µm Day/Night Sea Surface Temperature (SST) Data, version R2024.0",OB_DAAC,2017-11-29T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3166805761-OB_DAAC,VIIRSJ1_L2_SST3,"NOAA-20 VIIRS Level-2 Regional Triple-window Sea Surface Temperature (SST3) Data, version R2024.0",OB_DAAC,2017-11-29T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3166805758-OB_DAAC,VIIRSJ1_L2_SST3_NRT,"NOAA-20 VIIRS Level-2 Regional Triple-window Sea Surface Temperature (SST3) - Near Real-time (NRT) Data, version R2024.0",OB_DAAC,2017-11-29T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3166805767-OB_DAAC,VIIRSJ1_L2_SST_NRT,"NOAA-20 VIIRS Level-2 Regional 11µm Day/Night Sea Surface Temperature (SST) - Near Real-time (NRT) Data, version R2024.0",OB_DAAC,2017-11-29T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3396928906-OB_CLOUD,VIIRSJ1_L3b_CHL,"NOAA-20 VIIRS Level-3 Global Binned Chlorophyll (CHL) Data, version 2022.0",OB_CLOUD,2017-11-29T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3396928904-OB_CLOUD,VIIRSJ1_L3b_CHL_NRT,"NOAA-20 VIIRS Level-3 Global Binned Chlorophyll (CHL) - NRT Data, version 2022.0",OB_CLOUD,2017-11-29T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3396928908-OB_CLOUD,VIIRSJ1_L3b_IOP,"NOAA-20 VIIRS Level-3 Global Binned Inherent Optical Properties (IOP) Data, version 2022.0",OB_CLOUD,2017-11-29T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3396928907-OB_CLOUD,VIIRSJ1_L3b_IOP_NRT,"NOAA-20 VIIRS Level-3 Global Binned Inherent Optical Properties (IOP) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2017-11-29T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3396928913-OB_CLOUD,VIIRSJ1_L3b_KD,"NOAA-20 VIIRS Level-3 Global Binned Diffuse Attenuation Coefficient for Downwelling Irradiance (KD) Data, version 2022.0",OB_CLOUD,2017-11-29T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3396928911-OB_CLOUD,VIIRSJ1_L3b_KD_NRT,"NOAA-20 VIIRS Level-3 Global Binned Diffuse Attenuation Coefficient for Downwelling Irradiance (KD) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2017-11-29T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C2340494504-OB_DAAC,VIIRSJ1_L3b_LAND,"NOAA-20 VIIRS Global Binned Normalized Difference Vegetation Index Data, version R2022.0",OB_DAAC,2017-11-29T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3166805781-OB_DAAC,VIIRSJ1_L3b_NSST_NRT,"NOAA-20 VIIRS Level-3 Global Binned 11µm Nighttime Sea Surface Temperature (NSST) - Near Real-time (NRT) Data, version R2024.0",OB_DAAC,2017-11-29T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3396928924-OB_CLOUD,VIIRSJ1_L3b_PAR,"NOAA-20 VIIRS Level-3 Global Binned Photosynthetically Available Radiation (PAR) Data, version 2022.0",OB_CLOUD,2017-11-29T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3396928922-OB_CLOUD,VIIRSJ1_L3b_PAR_NRT,"NOAA-20 VIIRS Level-3 Global Binned Photosynthetically Available Radiation (PAR) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2017-11-29T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3396928926-OB_CLOUD,VIIRSJ1_L3b_PIC,"NOAA-20 VIIRS Level-3 Global Binned Particulate Inorganic Carbon (PIC) Data, version 2022.0",OB_CLOUD,2017-11-29T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3396928925-OB_CLOUD,VIIRSJ1_L3b_PIC_NRT,"NOAA-20 VIIRS Level-3 Global Binned Particulate Inorganic Carbon (PIC) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2017-11-29T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3396928930-OB_CLOUD,VIIRSJ1_L3b_POC,"NOAA-20 VIIRS Level-3 Global Binned Particulate Organic Carbon (POC) Data, version 2022.0",OB_CLOUD,2017-11-29T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3396928929-OB_CLOUD,VIIRSJ1_L3b_POC_NRT,"NOAA-20 VIIRS Level-3 Global Binned Particulate Organic Carbon (POC) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2017-11-29T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3396928932-OB_CLOUD,VIIRSJ1_L3b_RRS,"NOAA-20 VIIRS Level-3 Global Binned Remote-Sensing Reflectance (RRS) Data, version 2022.0",OB_CLOUD,2017-11-29T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3396928931-OB_CLOUD,VIIRSJ1_L3b_RRS_NRT,"NOAA-20 VIIRS Level-3 Global Binned Remote-Sensing Reflectance (RRS) - NRT Data, version 2022.0",OB_CLOUD,2017-11-29T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3166805813-OB_DAAC,VIIRSJ1_L3b_SST3_NRT,"NOAA-20 VIIRS Level-3 Global Binned Triple-window Sea Surface Temperature (SST3) - Near Real-time (NRT) Data, version R2024.0",OB_DAAC,2017-11-29T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3166805835-OB_DAAC,VIIRSJ1_L3b_SST_NRT,"NOAA-20 VIIRS Level-3 Global Binned 11µm Day/Night Sea Surface Temperature (SST) - Near Real-time (NRT) Data, version R2024.0",OB_DAAC,2017-11-29T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3396928935-OB_CLOUD,VIIRSJ1_L3m_CHL,"NOAA-20 VIIRS Level-3 Global Mapped Chlorophyll (CHL) Data, version 2022.0",OB_CLOUD,2017-11-29T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3396928934-OB_CLOUD,VIIRSJ1_L3m_CHL_NRT,"NOAA-20 VIIRS Level-3 Global Mapped Chlorophyll (CHL) - NRT Data, version 2022.0",OB_CLOUD,2017-11-29T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3396928937-OB_CLOUD,VIIRSJ1_L3m_IOP,"NOAA-20 VIIRS Level-3 Global Mapped Inherent Optical Properties (IOP) Data, version 2022.0",OB_CLOUD,2017-11-29T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3396928936-OB_CLOUD,VIIRSJ1_L3m_IOP_NRT,"NOAA-20 VIIRS Level-3 Global Mapped Inherent Optical Properties (IOP) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2017-11-29T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3396928961-OB_CLOUD,VIIRSJ1_L3m_KD,"NOAA-20 VIIRS Level-3 Global Mapped Diffuse Attenuation Coefficient for Downwelling Irradiance (KD) Data, version 2022.0",OB_CLOUD,2017-11-29T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3396928940-OB_CLOUD,VIIRSJ1_L3m_KD_NRT,"NOAA-20 VIIRS Level-3 Global Mapped Diffuse Attenuation Coefficient for Downwelling Irradiance (KD) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2017-11-29T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C2340494585-OB_DAAC,VIIRSJ1_L3m_LAND,"NOAA-20 VIIRS Level-3 Global Mapped Normalized Difference Vegetation Index Data, version R2022.0",OB_DAAC,2017-11-29T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3166805848-OB_DAAC,VIIRSJ1_L3m_NSST_NRT,"NOAA-20 VIIRS Level-3 Global Mapped 11µm Nighttime Sea Surface Temperature (NSST) - Near Real-time (NRT) Data, version R2024.0",OB_DAAC,2017-11-29T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3396929137-OB_CLOUD,VIIRSJ1_L3m_PAR,"NOAA-20 VIIRS Level-3 Global Mapped Photosynthetically Available Radiation (PAR) Data, version 2022.0",OB_CLOUD,2017-11-29T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3396929083-OB_CLOUD,VIIRSJ1_L3m_PAR_NRT,"NOAA-20 VIIRS Level-3 Global Mapped Photosynthetically Available Radiation (PAR) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2017-11-29T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3396929194-OB_CLOUD,VIIRSJ1_L3m_PIC,"NOAA-20 VIIRS Level-3 Global Mapped Particulate Inorganic Carbon (PIC) Data, version 2022.0",OB_CLOUD,2017-11-29T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3396929168-OB_CLOUD,VIIRSJ1_L3m_PIC_NRT,"NOAA-20 VIIRS Level-3 Global Mapped Particulate Inorganic Carbon (PIC) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2017-11-29T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3396929215-OB_CLOUD,VIIRSJ1_L3m_POC,"NOAA-20 VIIRS Level-3 Global Mapped Particulate Organic Carbon (POC) Data, version 2022.0",OB_CLOUD,2017-11-29T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3396929206-OB_CLOUD,VIIRSJ1_L3m_POC_NRT,"NOAA-20 VIIRS Level-3 Global Mapped Particulate Organic Carbon (POC) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2017-11-29T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3396929228-OB_CLOUD,VIIRSJ1_L3m_RRS,"NOAA-20 VIIRS Level-3 Global Mapped Remote-Sensing Reflectance (RRS) Data, version 2022.0",OB_CLOUD,2017-11-29T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3396929220-OB_CLOUD,VIIRSJ1_L3m_RRS_NRT,"NOAA-20 VIIRS Level-3 Global Mapped Remote-Sensing Reflectance (RRS) - NRT Data, version 2022.0",OB_CLOUD,2017-11-29T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3166805863-OB_DAAC,VIIRSJ1_L3m_SST3_NRT,"NOAA-20 VIIRS Level-3 Global Mapped Triple-window Sea Surface Temperature (SST3) - Near Real-time (NRT) Data, version R2024.0",OB_DAAC,2017-11-29T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3166805868-OB_DAAC,VIIRSJ1_L3m_SST_NRT,"NOAA-20 VIIRS Level-3 Global Mapped 11µm Day/Night Sea Surface Temperature (SST) - Near Real-time (NRT) Data, version R2024.0",OB_DAAC,2017-11-29T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3455985921-OB_CLOUD,VIIRSJ1_L4b_AVW,"NOAA-20 VIIRS Level-4 Global Binned Apparent Visible Wavelength (AVW) Data, version 2022.0",OB_CLOUD,2017-11-29T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3455985944-OB_CLOUD,VIIRSJ1_L4b_CARBON,"NOAA-20 VIIRS Level-4 Global Binned Carbon Data, version 2022.0",OB_CLOUD,2017-11-29T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3455985953-OB_CLOUD,VIIRSJ1_L4m_AVW,"NOAA-20 VIIRS Level-4 Global Mapped Apparent Visible Wavelength (AVW) Data, version 2022.0",OB_CLOUD,2017-11-29T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3455985979-OB_CLOUD,VIIRSJ1_L4m_CARBON,"NOAA-20 VIIRS Level-4 Global Mapped Carbon Data, version 2022.0",OB_CLOUD,2017-11-29T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C2652675296-OB_DAAC,VIIRSJ2_L1,"NOAA-21 VIIRS Level-1 Level-1 Data, version 1",OB_DAAC,2022-11-10T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C2652675294-OB_DAAC,VIIRSJ2_L1_GEO,"NOAA-21 VIIRS Level-1 Geolocation Product Data, version 1",OB_DAAC,2022-11-10T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3779578076-OB_CLOUD,VIIRSJ2_L2_IOP,"NOAA-21 VIIRS Level-2 Regional Inherent Optical Properties (IOP) Data, version 2025.0",OB_CLOUD,2022-11-10T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3397023581-OB_CLOUD,VIIRSJ2_L2_IOP,"NOAA-21 VIIRS Level-2 Regional Inherent Optical Properties (IOP) Data, version 2022.0",OB_CLOUD,2022-11-10T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3779577977-OB_CLOUD,VIIRSJ2_L2_IOP_NRT,"NOAA-21 VIIRS Level-2 Regional Inherent Optical Properties (IOP) - Near Real-time (NRT) Data, version 2025.0",OB_CLOUD,2022-11-10T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3397023577-OB_CLOUD,VIIRSJ2_L2_IOP_NRT,"NOAA-21 VIIRS Level-2 Regional Inherent Optical Properties (IOP) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2022-11-10T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3779578213-OB_CLOUD,VIIRSJ2_L2_OC,"NOAA-21 VIIRS Level-2 Regional Ocean Color (OC) Data, version 2025.0",OB_CLOUD,2022-11-10T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3397023590-OB_CLOUD,VIIRSJ2_L2_OC,"NOAA-21 VIIRS Level-2 Regional Ocean Color (OC) Data, version 2022.0",OB_CLOUD,2022-11-10T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3779578158-OB_CLOUD,VIIRSJ2_L2_OC_NRT,"NOAA-21 VIIRS Level-2 Regional Ocean Color (OC) - Near Real-time (NRT) Data, version 2025.0",OB_CLOUD,2022-11-10T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3397023608-OB_CLOUD,VIIRSJ2_L3b_CHL,"NOAA-21 VIIRS Level-3 Global Binned Chlorophyll (CHL) Data, version 2022.0",OB_CLOUD,2022-11-10T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3779578237-OB_CLOUD,VIIRSJ2_L3b_CHL_NRT,"NOAA-21 VIIRS Level-3 Global Binned Chlorophyll (CHL) - NRT Data, version 2025.0",OB_CLOUD,2022-11-10T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3397023598-OB_CLOUD,VIIRSJ2_L3b_CHL_NRT,"NOAA-21 VIIRS Level-3 Global Binned Chlorophyll (CHL) - NRT Data, version 2022.0",OB_CLOUD,2022-11-10T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3397023621-OB_CLOUD,VIIRSJ2_L3b_IOP,"NOAA-21 VIIRS Level-3 Global Binned Inherent Optical Properties (IOP) Data, version 2022.0",OB_CLOUD,2022-11-10T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3779578300-OB_CLOUD,VIIRSJ2_L3b_IOP_NRT,"NOAA-21 VIIRS Level-3 Global Binned Inherent Optical Properties (IOP) - Near Real-time (NRT) Data, version 2025.0",OB_CLOUD,2022-11-10T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3397023615-OB_CLOUD,VIIRSJ2_L3b_IOP_NRT,"NOAA-21 VIIRS Level-3 Global Binned Inherent Optical Properties (IOP) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2022-11-10T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3397023633-OB_CLOUD,VIIRSJ2_L3b_KD,"NOAA-21 VIIRS Level-3 Global Binned Diffuse Attenuation Coefficient for Downwelling Irradiance (KD) Data, version 2022.0",OB_CLOUD,2022-11-10T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3779578354-OB_CLOUD,VIIRSJ2_L3b_KD_NRT,"NOAA-21 VIIRS Level-3 Global Binned Diffuse Attenuation Coefficient for Downwelling Irradiance (KD) - Near Real-time (NRT) Data, version 2025.0",OB_CLOUD,2022-11-10T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3397023627-OB_CLOUD,VIIRSJ2_L3b_KD_NRT,"NOAA-21 VIIRS Level-3 Global Binned Diffuse Attenuation Coefficient for Downwelling Irradiance (KD) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2022-11-10T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C2652675320-OB_DAAC,VIIRSJ2_L3b_LAND,"NOAA-21 VIIRS Level-3 Global Binned Normalized Difference Vegetation Index Data, version 2022.0",OB_DAAC,2022-11-10T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3783323295-OB_DAAC,VIIRSJ2_L3b_LAND,"NOAA-21 VIIRS Level-3 Global Binned Normalized Difference Vegetation Index Data, version 2025.0",OB_DAAC,2022-11-10T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3779578510-OB_CLOUD,VIIRSJ2_L3b_PAR_NRT,"NOAA-21 VIIRS Level-3 Global Binned Photosynthetically Available Radiation (PAR) - Near Real-time (NRT) Data, version 2025.0",OB_CLOUD,2022-11-10T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3397023635-OB_CLOUD,VIIRSJ2_L3b_PAR_NRT,"NOAA-21 VIIRS Level-3 Global Binned Photosynthetically Available Radiation (PAR) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2022-11-10T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3397023646-OB_CLOUD,VIIRSJ2_L3b_PIC,"NOAA-21 VIIRS Level-3 Global Binned Particulate Inorganic Carbon (PIC) Data, version 2022.0",OB_CLOUD,2022-11-10T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3779578601-OB_CLOUD,VIIRSJ2_L3b_PIC_NRT,"NOAA-21 VIIRS Level-3 Global Binned Particulate Inorganic Carbon (PIC) - Near Real-time (NRT) Data, version 2025.0",OB_CLOUD,2022-11-10T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3397023643-OB_CLOUD,VIIRSJ2_L3b_PIC_NRT,"NOAA-21 VIIRS Level-3 Global Binned Particulate Inorganic Carbon (PIC) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2022-11-10T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3397023654-OB_CLOUD,VIIRSJ2_L3b_POC,"NOAA-21 VIIRS Level-3 Global Binned Particulate Organic Carbon (POC) Data, version 2022.0",OB_CLOUD,2022-11-10T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3779578673-OB_CLOUD,VIIRSJ2_L3b_POC_NRT,"NOAA-21 VIIRS Level-3 Global Binned Particulate Organic Carbon (POC) - Near Real-time (NRT) Data, version 2025.0",OB_CLOUD,2022-11-10T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3397023649-OB_CLOUD,VIIRSJ2_L3b_POC_NRT,"NOAA-21 VIIRS Level-3 Global Binned Particulate Organic Carbon (POC) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2022-11-10T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3397023669-OB_CLOUD,VIIRSJ2_L3b_RRS,"NOAA-21 VIIRS Level-3 Global Binned Remote-Sensing Reflectance (RRS) Data, version 2022.0",OB_CLOUD,2022-11-10T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3779578772-OB_CLOUD,VIIRSJ2_L3b_RRS_NRT,"NOAA-21 VIIRS Level-3 Global Binned Remote-Sensing Reflectance (RRS) - NRT Data, version 2025.0",OB_CLOUD,2022-11-10T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3397023664-OB_CLOUD,VIIRSJ2_L3b_RRS_NRT,"NOAA-21 VIIRS Level-3 Global Binned Remote-Sensing Reflectance (RRS) - NRT Data, version 2022.0",OB_CLOUD,2022-11-10T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3397023706-OB_CLOUD,VIIRSJ2_L3m_CHL,"NOAA-21 VIIRS Level-3 Global Mapped Chlorophyll (CHL) Data, version 2022.0",OB_CLOUD,2022-11-10T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3779578837-OB_CLOUD,VIIRSJ2_L3m_CHL_NRT,"NOAA-21 VIIRS Level-3 Global Mapped Chlorophyll (CHL) - NRT Data, version 2025.0",OB_CLOUD,2022-11-10T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3397023675-OB_CLOUD,VIIRSJ2_L3m_CHL_NRT,"NOAA-21 VIIRS Level-3 Global Mapped Chlorophyll (CHL) - NRT Data, version 2022.0",OB_CLOUD,2022-11-10T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3397023806-OB_CLOUD,VIIRSJ2_L3m_IOP,"NOAA-21 VIIRS Level-3 Global Mapped Inherent Optical Properties (IOP) Data, version 2022.0",OB_CLOUD,2022-11-10T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3779578929-OB_CLOUD,VIIRSJ2_L3m_IOP_NRT,"NOAA-21 VIIRS Level-3 Global Mapped Inherent Optical Properties (IOP) - Near Real-time (NRT) Data, version 2025.0",OB_CLOUD,2022-11-10T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3397023758-OB_CLOUD,VIIRSJ2_L3m_IOP_NRT,"NOAA-21 VIIRS Level-3 Global Mapped Inherent Optical Properties (IOP) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2022-11-10T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3397023908-OB_CLOUD,VIIRSJ2_L3m_KD,"NOAA-21 VIIRS Level-3 Global Mapped Diffuse Attenuation Coefficient for Downwelling Irradiance (KD) Data, version 2022.0",OB_CLOUD,2022-11-10T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3779579074-OB_CLOUD,VIIRSJ2_L3m_KD_NRT,"NOAA-21 VIIRS Level-3 Global Mapped Diffuse Attenuation Coefficient for Downwelling Irradiance (KD) - Near Real-time (NRT) Data, version 2025.0",OB_CLOUD,2022-11-10T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3397023859-OB_CLOUD,VIIRSJ2_L3m_KD_NRT,"NOAA-21 VIIRS Level-3 Global Mapped Diffuse Attenuation Coefficient for Downwelling Irradiance (KD) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2022-11-10T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C2652675355-OB_DAAC,VIIRSJ2_L3m_LAND,"NOAA-21 VIIRS Level-3 Global Mapped Normalized Difference Vegetation Index Data, version R2022.0",OB_DAAC,2022-11-10T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3783508853-OB_DAAC,VIIRSJ2_L3m_LAND,"NOAA-21 VIIRS Level-3 Global Mapped Normalized Difference Vegetation Index Data, version 2025.0",OB_DAAC,2022-11-10T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3779579257-OB_CLOUD,VIIRSJ2_L3m_PAR_NRT,"NOAA-21 VIIRS Level-3 Global Mapped Photosynthetically Available Radiation (PAR) - Near Real-time (NRT) Data, version 2025.0",OB_CLOUD,2022-11-10T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3397023949-OB_CLOUD,VIIRSJ2_L3m_PAR_NRT,"NOAA-21 VIIRS Level-3 Global Mapped Photosynthetically Available Radiation (PAR) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2022-11-10T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3397023974-OB_CLOUD,VIIRSJ2_L3m_PIC,"NOAA-21 VIIRS Level-3 Global Mapped Particulate Inorganic Carbon (PIC) Data, version 2022.0",OB_CLOUD,2022-11-10T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3779579436-OB_CLOUD,VIIRSJ2_L3m_PIC_NRT,"NOAA-21 VIIRS Level-3 Global Mapped Particulate Inorganic Carbon (PIC) - Near Real-time (NRT) Data, version 2025.0",OB_CLOUD,2022-11-10T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3397023967-OB_CLOUD,VIIRSJ2_L3m_PIC_NRT,"NOAA-21 VIIRS Level-3 Global Mapped Particulate Inorganic Carbon (PIC) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2022-11-10T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3397023999-OB_CLOUD,VIIRSJ2_L3m_POC,"NOAA-21 VIIRS Level-3 Global Mapped Particulate Organic Carbon (POC) Data, version 2022.0",OB_CLOUD,2022-11-10T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3779579630-OB_CLOUD,VIIRSJ2_L3m_POC_NRT,"NOAA-21 VIIRS Level-3 Global Mapped Particulate Organic Carbon (POC) - Near Real-time (NRT) Data, version 2025.0",OB_CLOUD,2022-11-10T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3397023985-OB_CLOUD,VIIRSJ2_L3m_POC_NRT,"NOAA-21 VIIRS Level-3 Global Mapped Particulate Organic Carbon (POC) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2022-11-10T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3397024028-OB_CLOUD,VIIRSJ2_L3m_RRS,"NOAA-21 VIIRS Level-3 Global Mapped Remote-Sensing Reflectance (RRS) Data, version 2022.0",OB_CLOUD,2022-11-10T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3779579730-OB_CLOUD,VIIRSJ2_L3m_RRS_NRT,"NOAA-21 VIIRS Level-3 Global Mapped Remote-Sensing Reflectance (RRS) - NRT Data, version 2025.0",OB_CLOUD,2022-11-10T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3397024011-OB_CLOUD,VIIRSJ2_L3m_RRS_NRT,"NOAA-21 VIIRS Level-3 Global Mapped Remote-Sensing Reflectance (RRS) - NRT Data, version 2022.0",OB_CLOUD,2022-11-10T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C1570118532-OB_DAAC,VIIRSN_L1,"Suomi-NPP VIIRS Level-1A Data, version 2",OB_DAAC,2012-01-02T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C1940926265-OB_DAAC,VIIRSN_L1_GEO,"Suomi-NPP VIIRS Level-1 Geolocation Product Data, version 2",OB_DAAC,2012-01-02T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3388381176-OB_CLOUD,VIIRSN_L2_IOP,"Suomi-NPP VIIRS Level-2 Regional Inherent Optical Properties (IOP) Data, version 2022.0",OB_CLOUD,2012-01-02T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3388381223-OB_CLOUD,VIIRSN_L2_IOP_NRT,"Suomi-NPP VIIRS Level-2 Regional Inherent Optical Properties (IOP) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2012-01-02T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C1658475743-OB_DAAC,VIIRSN_L2_SST,"Suomi-NPP VIIRS Level-Regional Regional 11µm Day/Night Sea Surface Temperature (SST) Data, version R2016.2",OB_DAAC,2012-01-02T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C1658475738-OB_DAAC,VIIRSN_L2_SST3,"Suomi-NPP VIIRS Level-2 Regional Triple-window Sea Surface Temperature (SST3) Data, version R2016.2",OB_DAAC,2012-01-02T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C1658475737-OB_DAAC,VIIRSN_L2_SST3_NRT,"Suomi-NPP VIIRS Level-2 Regional Triple-window Sea Surface Temperature (SST3) - Near Real-time (NRT) Data, version R2016.2",OB_DAAC,2012-01-02T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C1658475742-OB_DAAC,VIIRSN_L2_SST_NRT,"Suomi-NPP VIIRS Level-2 Regional 11µm Day/Night Sea Surface Temperature (SST) - Near Real-time (NRT) Data, version R2016.2",OB_DAAC,2012-01-02T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3388381323-OB_CLOUD,VIIRSN_L3b_CHL,"Suomi-NPP VIIRS Level-3 Global Binned Chlorophyll (CHL) Data, version 2022.0",OB_CLOUD,2012-01-02T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3388381341-OB_CLOUD,VIIRSN_L3b_CHL_NRT,"Suomi-NPP VIIRS Level-3 Global Binned Chlorophyll (CHL) - NRT Data, version 2022.0",OB_CLOUD,2012-01-02T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3388381361-OB_CLOUD,VIIRSN_L3b_IOP,"Suomi-NPP VIIRS Level-3 Global Binned Inherent Optical Properties (IOP) Data, version 2022.0",OB_CLOUD,2012-01-02T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3388381380-OB_CLOUD,VIIRSN_L3b_IOP_NRT,"Suomi-NPP VIIRS Level-3 Global Binned Inherent Optical Properties (IOP) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2012-01-02T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3388381393-OB_CLOUD,VIIRSN_L3b_KD,"Suomi-NPP VIIRS Level-3 Global Binned Diffuse Attenuation Coefficient for Downwelling Irradiance (KD) Data, version 2022.0",OB_CLOUD,2012-01-02T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3388381409-OB_CLOUD,VIIRSN_L3b_KD_NRT,"Suomi-NPP VIIRS Level-3 Global Binned Diffuse Attenuation Coefficient for Downwelling Irradiance (KD) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2012-01-02T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C2340494031-OB_DAAC,VIIRSN_L3b_LAND,"Suomi-NPP VIIRS Global Binned Normalized Difference Vegetation Index Data, version R2022.0",OB_DAAC,2012-01-02T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C1658475749-OB_DAAC,VIIRSN_L3b_NSST,"Suomi-NPP VIIRS Level-3 Global Binned 11µm Nighttime Sea Surface Temperature (NSST) Data, version R2016.2",OB_DAAC,2012-01-02T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C1658475747-OB_DAAC,VIIRSN_L3b_NSST_NRT,"Suomi-NPP VIIRS Level-3 Global Binned 11µm Nighttime Sea Surface Temperature (NSST) - Near Real-time (NRT) Data, version R2016.2",OB_DAAC,2012-01-02T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3388381421-OB_CLOUD,VIIRSN_L3b_PAR,"Suomi-NPP VIIRS Level-3 Global Binned Photosynthetically Available Radiation (PAR) Data, version 2022.0",OB_CLOUD,2012-01-02T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3388381438-OB_CLOUD,VIIRSN_L3b_PAR_NRT,"Suomi-NPP VIIRS Level-3 Global Binned Photosynthetically Available Radiation (PAR) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2012-01-02T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3388381455-OB_CLOUD,VIIRSN_L3b_PIC,"Suomi-NPP VIIRS Level-3 Global Binned Particulate Inorganic Carbon (PIC) Data, version 2022.0",OB_CLOUD,2012-01-02T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3388381467-OB_CLOUD,VIIRSN_L3b_PIC_NRT,"Suomi-NPP VIIRS Level-3 Global Binned Particulate Inorganic Carbon (PIC) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2012-01-02T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3388381486-OB_CLOUD,VIIRSN_L3b_POC,"Suomi-NPP VIIRS Level-3 Global Binned Particulate Organic Carbon (POC) Data, version 2022.0",OB_CLOUD,2012-01-02T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3388381503-OB_CLOUD,VIIRSN_L3b_POC_NRT,"Suomi-NPP VIIRS Level-3 Global Binned Particulate Organic Carbon (POC) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2012-01-02T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3388381524-OB_CLOUD,VIIRSN_L3b_RRS,"Suomi-NPP VIIRS Level-3 Global Binned Remote-Sensing Reflectance (RRS) Data, version 2022.0",OB_CLOUD,2012-01-02T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3388381548-OB_CLOUD,VIIRSN_L3b_RRS_NRT,"Suomi-NPP VIIRS Level-3 Global Binned Remote-Sensing Reflectance (RRS) - NRT Data, version 2022.0",OB_CLOUD,2012-01-02T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C1658475760-OB_DAAC,VIIRSN_L3b_SST,"Suomi-NPP VIIRS Level-3 Global Binned 11µm Daytime Sea Surface Temperature (SST) Data, version R2016.2",OB_DAAC,2012-01-02T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C1658475754-OB_DAAC,VIIRSN_L3b_SST3,"Suomi-NPP VIIRS Level-3 Global Binned Triple-window Sea Surface Temperature (SST3) Data, version R2016.2",OB_DAAC,2012-01-02T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C1658475752-OB_DAAC,VIIRSN_L3b_SST3_NRT,"Suomi-NPP VIIRS Level-3 Global Binned Triple-window Sea Surface Temperature (SST3) - Near Real-time (NRT) Data, version R2016.2",OB_DAAC,2012-01-02T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C1658475758-OB_DAAC,VIIRSN_L3b_SST_NRT,"Suomi-NPP VIIRS Level-3 Global Binned 11µm Day/Night Sea Surface Temperature (SST) - Near Real-time (NRT) Data, version R2016.2",OB_DAAC,2012-01-02T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3388381565-OB_CLOUD,VIIRSN_L3m_CHL,"Suomi-NPP VIIRS Level-3 Global Mapped Chlorophyll (CHL) Data, version 2022.0",OB_CLOUD,2012-01-02T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3388381583-OB_CLOUD,VIIRSN_L3m_CHL_NRT,"Suomi-NPP VIIRS Level-3 Global Mapped Chlorophyll (CHL) - NRT Data, version 2022.0",OB_CLOUD,2012-01-02T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3388381600-OB_CLOUD,VIIRSN_L3m_IOP,"Suomi-NPP VIIRS Level-3 Global Mapped Inherent Optical Properties (IOP) Data, version 2022.0",OB_CLOUD,2012-01-02T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3388381620-OB_CLOUD,VIIRSN_L3m_IOP_NRT,"Suomi-NPP VIIRS Level-3 Global Mapped Inherent Optical Properties (IOP) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2012-01-02T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3388381638-OB_CLOUD,VIIRSN_L3m_KD,"Suomi-NPP VIIRS Level-3 Global Mapped Diffuse Attenuation Coefficient for Downwelling Irradiance (KD) Data, version 2022.0",OB_CLOUD,2012-01-02T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3388381651-OB_CLOUD,VIIRSN_L3m_KD_NRT,"Suomi-NPP VIIRS Level-3 Global Mapped Diffuse Attenuation Coefficient for Downwelling Irradiance (KD) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2012-01-02T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C2340494249-OB_DAAC,VIIRSN_L3m_LAND,"Suomi-NPP VIIRS Global Mapped Normalized Difference Vegetation Index Data, version R2022.0",OB_DAAC,2012-01-02T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C1658475765-OB_DAAC,VIIRSN_L3m_NSST,"Suomi-NPP VIIRS Level-3 Global Mapped 11µm Nighttime Sea Surface Temperature (NSST) Data, version R2016.2",OB_DAAC,2012-01-02T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C1658475763-OB_DAAC,VIIRSN_L3m_NSST_NRT,"Suomi-NPP VIIRS Level-3 Global Mapped 11µm Nighttime Sea Surface Temperature (NSST) - Near Real-time (NRT) Data, version R2016.2",OB_DAAC,2012-01-02T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3388381663-OB_CLOUD,VIIRSN_L3m_PAR,"Suomi-NPP VIIRS Level-3 Global Mapped Photosynthetically Available Radiation (PAR) Data, version 2022.0",OB_CLOUD,2012-01-02T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3388381675-OB_CLOUD,VIIRSN_L3m_PAR_NRT,"Suomi-NPP VIIRS Level-3 Global Mapped Photosynthetically Available Radiation (PAR) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2012-01-02T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3388381690-OB_CLOUD,VIIRSN_L3m_PIC,"Suomi-NPP VIIRS Level-3 Global Mapped Particulate Inorganic Carbon (PIC) Data, version 2022.0",OB_CLOUD,2012-01-02T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3388381706-OB_CLOUD,VIIRSN_L3m_PIC_NRT,"Suomi-NPP VIIRS Level-3 Global Mapped Particulate Inorganic Carbon (PIC) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2012-01-02T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3388381745-OB_CLOUD,VIIRSN_L3m_POC,"Suomi-NPP VIIRS Level-3 Global Mapped Particulate Organic Carbon (POC) Data, version 2022.0",OB_CLOUD,2012-01-02T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3388381788-OB_CLOUD,VIIRSN_L3m_POC_NRT,"Suomi-NPP VIIRS Level-3 Global Mapped Particulate Organic Carbon (POC) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2012-01-02T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3388381848-OB_CLOUD,VIIRSN_L3m_RRS,"Suomi-NPP VIIRS Level-3 Global Mapped Remote-Sensing Reflectance (RRS) Data, version 2022.0",OB_CLOUD,2012-01-02T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3388381897-OB_CLOUD,VIIRSN_L3m_RRS_NRT,"Suomi-NPP VIIRS Level-3 Global Mapped Remote-Sensing Reflectance (RRS) - NRT Data, version 2022.0",OB_CLOUD,2012-01-02T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C1658475777-OB_DAAC,VIIRSN_L3m_SST,"Suomi-NPP VIIRS Level-3 Global Mapped 11µm Daytime Sea Surface Temperature (SST) Data, version R2016.2",OB_DAAC,2012-01-02T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C1658475772-OB_DAAC,VIIRSN_L3m_SST3,"Suomi-NPP VIIRS Level-3 Global Mapped Triple-window Sea Surface Temperature (SST3) Data, version R2016.2",OB_DAAC,2012-01-02T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C1658475768-OB_DAAC,VIIRSN_L3m_SST3_NRT,"Suomi-NPP VIIRS Level-3 Global Mapped Triple-window Sea Surface Temperature (SST3) - Near Real-time (NRT) Data, version R2016.2",OB_DAAC,2012-01-02T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C1658475773-OB_DAAC,VIIRSN_L3m_SST_NRT,"Suomi-NPP VIIRS Level-3 Global Mapped 11µm Day/Night Sea Surface Temperature (SST) - Near Real-time (NRT) Data, version R2016.2",OB_DAAC,2012-01-02T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3455986086-OB_CLOUD,VIIRSN_L4b_AVW,"Suomi-NPP VIIRS Level-4 Global Binned Apparent Visible Wavelength (AVW) Data, version 2022.0",OB_CLOUD,2012-01-02T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3455986117-OB_CLOUD,VIIRSN_L4b_CARBON,"Suomi-NPP VIIRS Level-4 Global Binned Carbon Data, version 2022.0",OB_CLOUD,2012-01-02T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3455986153-OB_CLOUD,VIIRSN_L4m_AVW,"Suomi-NPP VIIRS Level-4 Global Mapped Apparent Visible Wavelength (AVW) Data, version 2022.0",OB_CLOUD,2012-01-02T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C3455986176-OB_CLOUD,VIIRSN_L4m_CARBON,"Suomi-NPP VIIRS Level-4 Global Mapped Carbon Data, version 2022.0",OB_CLOUD,2012-01-02T00:00:00Z,,-180.0,-90.0,180.0,90.0 -C2847232153-POCLOUD,VIIRS_N20-NAVO-L2P-v3.0,GHRSST Level 2P NAVO 1 m Depth Global Sea Surface Temperature version 3.0 from the Visible Infrared Imaging Radiometer Suite (VIIRS) on the NOAA-20 satellite,POCLOUD,2024-02-20T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2147488020-POCLOUD,VIIRS_N20-STAR-L3U-v2.80,GHRSST Level 3U NOAA STAR SST v2.80 from VIIRS on NOAA-20 Satellite,POCLOUD,2018-01-05T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2847232536-POCLOUD,VIIRS_N21-NAVO-L2P-v3.0,GHRSST Level 2P NAVO 1 m Depth Global Sea Surface Temperature version 3.0 from the Visible Infrared Imaging Radiometer Suite (VIIRS) on the NOAA-21 satellite,POCLOUD,2024-02-21T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C1996881456-POCLOUD,VIIRS_NPP-JPL-L2P-v2016.2,GHRSST Level 2P Global Sea Surface Skin Temperature from the Visible and Infrared Imager/Radiometer Suite (VIIRS) on the Suomi-NPP satellite (GDS2),POCLOUD,2011-11-21T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C1996881807-POCLOUD,VIIRS_NPP-NAVO-L2P-v1.0,GHRSST Level 2P 1 m Depth Global Sea Surface Temperature from VIIRS on Suomi NPP (GDS2) V1,POCLOUD,2013-05-20T17:28:00.000Z,2016-02-25T23:45:00.000Z,-180.0,-90.0,180.0,90.0 -C2036881016-POCLOUD,VIIRS_NPP-NAVO-L2P-v2.0,GHRSST Level 2P 1 m Depth Global Sea Surface Temperature from VIIRS on Suomi NPP (GDS2) V2,POCLOUD,2016-02-25T17:30:00.000Z,2018-02-22T15:48:07.000Z,-180.0,-90.0,180.0,90.0 -C1996881636-POCLOUD,VIIRS_NPP-NAVO-L2P-v3.0,GHRSST Level 2P 1 m Depth Global Sea Surface Temperature version 3.0 from the Visible Infrared Imaging Radiometer Suite (VIIRS) on the Suomi NPP satellite (GDS2),POCLOUD,2018-01-30T17:51:49.000Z,,-180.0,-90.0,180.0,90.0 -C2147485059-POCLOUD,VIIRS_NPP-STAR-L3U-v2.80,GHRSST Level 3U NOAA STAR SST v2.80 from VIIRS on S-NPP Satellite,POCLOUD,2012-02-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2036878808-POCLOUD,VIIRS_SST_NPP_NAR-OSISAF-L3C-v1.0,GHRSST Level 3C North Atlantic Regional (NAR) subskin Sea Surface Temperature from SNPP/VIIRS (GDS V2) produced by OSI SAF,POCLOUD,2013-11-11T01:14:40.000Z,2020-11-20T00:00:00.000Z,-76.02,13.59,72.97,78.24 -C2105083900-LAADS,VJ102IMG,VIIRS/JPSS1 Imagery Resolution 6-Min L1B Swath 375 m,LAADS,2018-01-05T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2103811746-LAADS,VJ102MOD,VIIRS/JPSS1 Moderate Resolution 6-Min L1B Swath 750 m,LAADS,2018-01-05T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2105087273-LAADS,VJ103DNB,VIIRS/JPSS1 Day/Night Band Resolution Terrain Corrected Geolocation L1 6-Min Swath 750 m ,LAADS,2017-12-13T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2105086226-LAADS,VJ103IMG,VIIRS/JPSS1 Imagery Resolution Terrain Corrected Geolocation L1 6-Min Swath 375 m,LAADS,2017-12-13T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C2105084593-LAADS,VJ103MOD,VIIRS/JPSS1 Moderate Resolution Terrain Corrected Geolocation L1 6-Min Swath 750m,LAADS,2018-01-05T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C3173450415-NSIDC_CPRD,VJ110,VIIRS/JPSS1 Snow Cover 6-Min L2 Swath 375m V002,NSIDC_CPRD,2018-01-05T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C3173455803-NSIDC_CPRD,VJ129,VIIRS/JPSS1 Sea Ice Cover 6-Min L2 Swath 375m V002,NSIDC_CPRD,2018-01-05T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C3173456267-NSIDC_CPRD,VJ130,VIIRS/JPSS1 Ice Surface Temperature 6-Min L2 Swath 750m V002,NSIDC_CPRD,2018-01-05T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C3173404788-NSIDC_CPRD,VNP10,VIIRS/NPP Snow Cover 6-Min L2 Swath 375m V002,NSIDC_CPRD,2012-01-19T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C3173445758-NSIDC_CPRD,VNP29,VIIRS/NPP Sea Ice Cover 6-Min L2 Swath 375m V002,NSIDC_CPRD,2012-01-19T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C3173447301-NSIDC_CPRD,VNP30,VIIRS/NPP Ice Surface Temperature 6-Min L2 Swath 750m V002,NSIDC_CPRD,2012-01-19T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C3365181544-LPCLOUD,VNP47MOD,VIIRS/NPP FILDA-2 Fire Modified Combustion Efficiency Product 6-min L2 Swath 750 V002,LPCLOUD,2012-01-19T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C1682050863-LAADS,WATVP_M3_VIIRS_SNPP,VIIRS/SNPP Water Vapor Level-3 monthly 0.5 x 0.5 degree grid,LAADS,2012-05-01T00:00:00.000Z,2018-09-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C3385960709-LARC_ASDC,WNA-FLEXPART-BackTraj-1994,Western North American FLEXPART Back Trajectory 1994 Data,LARC_ASDC,1994-01-01T00:00:00.000Z,1994-12-31T23:59:59.000Z,-180.0,-90.0,180.0,90.0 -C3550401221-LARC_ASDC,WNA-FLEXPART-BackTraj-1994-2021-Merge,Western North American FLEXPART Back Trajectory 1994-2021 Merge Data,LARC_ASDC,1994-01-01T00:00:00.000Z,2021-12-31T23:59:59.000Z,-180.0,-90.0,180.0,90.0 -C3385972564-LARC_ASDC,WNA-FLEXPART-BackTraj-1995,Western North American FLEXPART Back Trajectory 1995 Data,LARC_ASDC,1995-01-01T00:00:00.000Z,1995-12-31T23:59:59.000Z,-180.0,-90.0,180.0,90.0 -C3385973175-LARC_ASDC,WNA-FLEXPART-BackTraj-1996,Western North American FLEXPART Back Trajectory 1996 Data,LARC_ASDC,1996-01-01T00:00:00.000Z,1996-12-31T23:59:59.000Z,-180.0,-90.0,180.0,90.0 -C3385973791-LARC_ASDC,WNA-FLEXPART-BackTraj-1997,Western North American FLEXPART Back Trajectory 1997 Data,LARC_ASDC,1997-01-01T00:00:00.000Z,1997-12-31T23:59:59.000Z,-180.0,-90.0,180.0,90.0 -C3385973962-LARC_ASDC,WNA-FLEXPART-BackTraj-1998,Western North American FLEXPART Back Trajectory 1998 Data,LARC_ASDC,1998-01-01T00:00:00.000Z,1998-12-31T23:59:59.000Z,-180.0,-90.0,180.0,90.0 -C3385974557-LARC_ASDC,WNA-FLEXPART-BackTraj-1999,Western North American FLEXPART Back Trajectory 1999 Data,LARC_ASDC,1999-01-01T00:00:00.000Z,1999-12-31T23:59:59.000Z,-180.0,-90.0,180.0,90.0 -C3385978921-LARC_ASDC,WNA-FLEXPART-BackTraj-2000,Western North American FLEXPART Back Trajectory 2000 Data,LARC_ASDC,2000-01-01T00:00:00.000Z,2000-12-31T23:59:59.000Z,-180.0,-90.0,180.0,90.0 -C3385979969-LARC_ASDC,WNA-FLEXPART-BackTraj-2001,Western North American FLEXPART Back Trajectory 2001 Data,LARC_ASDC,2001-01-01T00:00:00.000Z,2001-12-31T23:59:59.000Z,-180.0,-90.0,180.0,90.0 -C3385980138-LARC_ASDC,WNA-FLEXPART-BackTraj-2002,Western North American FLEXPART Back Trajectory 2002 Data,LARC_ASDC,2002-01-01T00:00:00.000Z,2002-12-31T23:59:59.000Z,-180.0,-90.0,180.0,90.0 -C3385985175-LARC_ASDC,WNA-FLEXPART-BackTraj-2003,Western North American FLEXPART Back Trajectory 2003 Data,LARC_ASDC,2003-01-01T00:00:00.000Z,2003-12-31T23:59:59.000Z,-180.0,-90.0,180.0,90.0 -C3385985656-LARC_ASDC,WNA-FLEXPART-BackTraj-2004,Western North American FLEXPART Back Trajectory 2004 Data,LARC_ASDC,2004-01-01T00:00:00.000Z,2004-12-31T23:59:59.000Z,-180.0,-90.0,180.0,90.0 -C3385985804-LARC_ASDC,WNA-FLEXPART-BackTraj-2005,Western North American FLEXPART Back Trajectory 2005 Data,LARC_ASDC,2005-01-01T00:00:00.000Z,2005-12-31T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C3385985880-LARC_ASDC,WNA-FLEXPART-BackTraj-2006,Western North American FLEXPART Back Trajectory 2006 Data,LARC_ASDC,2006-01-01T00:00:00.000Z,2006-12-31T23:59:59.000Z,-180.0,-90.0,180.0,90.0 -C3385986605-LARC_ASDC,WNA-FLEXPART-BackTraj-2007,Western North American FLEXPART Back Trajectory 2007 Data,LARC_ASDC,2007-01-01T00:00:00.000Z,2007-12-31T23:59:59.000Z,-180.0,-90.0,180.0,90.0 -C3385987044-LARC_ASDC,WNA-FLEXPART-BackTraj-2008,Western North American FLEXPART Back Trajectory 2008 Data,LARC_ASDC,2008-01-01T00:00:00.000Z,2008-12-31T23:59:59.000Z,-180.0,-90.0,180.0,90.0 -C3386043314-LARC_ASDC,WNA-FLEXPART-BackTraj-2009,Western North American FLEXPART Back Trajectory 2009 Data,LARC_ASDC,2009-01-01T00:00:00.000Z,2009-12-31T23:59:59.000Z,-180.0,-90.0,180.0,90.0 -C3386043729-LARC_ASDC,WNA-FLEXPART-BackTraj-2010,Western North American FLEXPART Back Trajectory 2010 Data,LARC_ASDC,2010-01-01T00:00:00.000Z,2010-12-31T23:59:59.000Z,-180.0,-90.0,180.0,90.0 -C3386044608-LARC_ASDC,WNA-FLEXPART-BackTraj-2011,Western North American FLEXPART Back Trajectory 2011 Data,LARC_ASDC,2011-01-01T00:00:00.000Z,2011-12-31T23:59:59.000Z,-180.0,-90.0,180.0,90.0 -C3386045618-LARC_ASDC,WNA-FLEXPART-BackTraj-2012,Western North American FLEXPART Back Trajectory 2012 Data,LARC_ASDC,2012-01-01T00:00:00.000Z,2012-12-31T23:59:59.000Z,-180.0,-90.0,180.0,90.0 -C3386046798-LARC_ASDC,WNA-FLEXPART-BackTraj-2013,Western North American FLEXPART Back Trajectory 2013 Data,LARC_ASDC,2013-01-01T00:00:00.000Z,2013-12-31T23:59:59.000Z,-180.0,-90.0,180.0,90.0 -C3386046988-LARC_ASDC,WNA-FLEXPART-BackTraj-2014,Western North American FLEXPART Back Trajectory 2014 Data,LARC_ASDC,2014-01-01T00:00:00.000Z,2014-12-31T23:59:59.000Z,-180.0,-90.0,180.0,90.0 -C3386047494-LARC_ASDC,WNA-FLEXPART-BackTraj-2015,Western North American FLEXPART Back Trajectory 2015 Data,LARC_ASDC,2015-01-01T00:00:00.000Z,2015-12-31T23:59:59.000Z,-180.0,-90.0,180.0,90.0 -C3386048426-LARC_ASDC,WNA-FLEXPART-BackTraj-2016,Western North American FLEXPART Back Trajectory 2016 Data,LARC_ASDC,2016-01-01T00:00:00.000Z,2016-12-31T23:59:59.000Z,-180.0,-90.0,180.0,90.0 -C3386048997-LARC_ASDC,WNA-FLEXPART-BackTraj-2017,Western North American FLEXPART Back Trajectory 2017 Data,LARC_ASDC,2017-01-01T00:00:00.000Z,2017-12-31T23:59:59.000Z,-180.0,-90.0,180.0,90.0 -C3386049461-LARC_ASDC,WNA-FLEXPART-BackTraj-2018,Western North American FLEXPART Back Trajectory 2018 Data,LARC_ASDC,2018-01-01T00:00:00.000Z,2018-12-31T23:59:59.000Z,-180.0,-90.0,180.0,90.0 -C3386049858-LARC_ASDC,WNA-FLEXPART-BackTraj-2019,Western North American FLEXPART Back Trajectory 2019 Data,LARC_ASDC,2019-01-01T00:00:00.000Z,2019-12-31T23:59:59.000Z,-180.0,-90.0,180.0,90.0 -C3386050408-LARC_ASDC,WNA-FLEXPART-BackTraj-2020,Western North American FLEXPART Back Trajectory 2020 Data,LARC_ASDC,2020-01-01T00:00:00.000Z,2020-12-31T23:59:59.000Z,-180.0,-90.0,180.0,90.0 -C3386050612-LARC_ASDC,WNA-FLEXPART-BackTraj-2021,Western North American FLEXPART Back Trajectory 2021 Data,LARC_ASDC,2021-01-01T00:00:00.000Z,2021-12-31T23:59:59.000Z,-180.0,-90.0,180.0,90.0 -C2517698238-ORNL_CLOUD,WRF_STILT_Footprints_Boston_1572,"WRF-STILT Gridded Footprints for Boston, MA, USA, 2013-2014",ORNL_CLOUD,2013-07-01T00:00:00.000Z,2014-12-31T23:59:59.999Z,-169.5,10.5,-50.5,69.5 -C2517667717-ORNL_CLOUD,WRF_STILT_Particles_Boston_1596,"WRF-STILT Particle Trajectories for Boston, MA, USA, 2013-2014",ORNL_CLOUD,2013-07-01T00:00:00.000Z,2014-12-31T23:59:59.999Z,-81.78,34.51,-65.93,49.19 -C3273595478-NSIDC_CPRD,WUS_UCLA_SR,Western United States UCLA Daily Snow Reanalysis V001,NSIDC_CPRD,1984-10-01T00:00:00.000Z,2021-09-30T23:59:59.999Z,-125.0,31.0,-102.0,49.0 -C2674694066-LPCLOUD,WaterBalance_Daily_Historical_GRIDMET,Daily Historical Water Balance Products for the CONUS,LPCLOUD,1980-01-01T00:00:00.000Z,2024-12-31T23:59:59.000Z,-131.70607,21.115301,-60.530453,55.457306 -C2674700048-LPCLOUD,WaterBalance_Monthly_Historical_GRIDMET,Monthly Historical Water Balance Products for the CONUS,LPCLOUD,1980-01-01T00:00:00.000Z,2024-12-31T23:59:59.000Z,-131.70607,21.115301,-60.530453,55.457306 -C2036878925-POCLOUD,WindSat-REMSS-L3U-v7.0.1a,GHRSST Level 3U Global Subskin Sea Surface Temperature version7.0.1a from the WindSat Polarimetric Radiometer on the Coriolis satellite,POCLOUD,2002-06-01T19:15:00.000Z,2020-10-19T23:59:00.000Z,-179.99,-39.06,180.0,39.01 -C2859261579-LAADS,XAERDT_L2_AHI_H09,AHI/Himawari-09 Dark Target Aerosol 10-Min L2 Full Disk 10 km,LAADS,2022-12-13T00:00:00.000Z,2022-12-31T23:59:59.990Z,-180.0,-90.0,180.0,90.0 -C2645106424-GHRC_DAAC,aamhcpex,AAMH CPEX,GHRC_DAAC,2017-05-26T00:29:00.000Z,2017-07-16T00:53:00.000Z,154.716,0.6408,-19.5629,44.9689 -C3632619964-GHRC_DAAC,ampraloft,Advanced Microwave Precipitation Radiometer (AMPR) ALOFT,GHRC_DAAC,2023-06-15T17:33:21.000Z,2023-07-31T17:51:46.000Z,-119.209,10.416,-79.882,36.334 -C2004708841-GHRC_DAAC,amprimpacts,Advanced Microwave Precipitation Radiometer (AMPR) IMPACTS,GHRC_DAAC,2019-12-16T21:17:28.000Z,2023-03-02T17:06:51.000Z,-124.259,26.507,-64.366,49.31 -C1977859380-GHRC_DAAC,amprtbf3a,AMPR FIRE III ACE,GHRC_DAAC,1998-05-18T19:41:20.000Z,1998-06-06T22:50:34.000Z,-174.291,64.7934,-147.234,78.1863 -C1979079822-GHRC_DAAC,amprtbkwj,AMPR BRIGHTNESS TEMPERATURE (TB) KWAJEX,GHRC_DAAC,1999-07-30T02:53:54.000Z,1999-09-14T07:01:36.000Z,165.962,5.93167,171.12,11.0683 -C1979080166-GHRC_DAAC,amprtblba,TRMM LBA (LARGE SCALE BIOSPHERE-ATMOSPHERE) EXPERIMENT (AMPR) V1,GHRC_DAAC,1999-01-24T17:41:10.000Z,1999-02-23T22:33:19.000Z,-62.9596,-12.4343,-56.5415,-9.5957 -C1979080326-GHRC_DAAC,amprtbta,AMPR TEFLUN-A BRIGHTNESS TEMPERATURE (TB),GHRC_DAAC,1998-04-15T00:36:17.000Z,1998-05-05T00:43:01.000Z,-98.6646,25.6215,-81.3661,33.0512 -C1996541017-GHRC_DAAC,amsua15sp,ADVANCED MICROWAVE SOUNDING UNIT-A (AMSU-A) SWATH FROM NOAA-15,GHRC_DAAC,1998-08-03T01:51:10.000Z,,-180.0,-90.0,180.0,90.0 -C2708951073-GHRC_DAAC,apr3cpexcv,Airborne Precipitation Radar 3rd Generation (APR-3) CPEX-CV,GHRC_DAAC,2022-09-02T18:57:54Z,2022-09-30T14:43:09Z,-89.67333150433124,1.7593585100490179,-14.818943522569624,39.198552376304335 -C1995871063-GHRC_DAAC,asosimpacts,Automated Surface Observing System (ASOS) IMPACTS,GHRC_DAAC,2019-12-29T00:00:00.000Z,2023-03-01T12:45:00.000Z,-89.694,36.571,-67.791,47.467 -C3565103670-GHRC_DAAC,cmx2edop,CAMEX-2 ER-2 Doppler Radar (EDOP),GHRC_DAAC,1995-07-17T17:10:34.000Z,1995-08-28T23:47:59.000Z,-84.542,30.675,-71.274,42.907 -C1995565150-GHRC_DAAC,cosmirimpacts,Conical Scanning Millimeter-wave Imaging Radiometer (CoSMIR) IMPACTS V1,GHRC_DAAC,2020-01-15T18:00:36.000Z,2022-02-28T18:53:03.000Z,-116.701,30.5854,-62.6816,48.5552 -C3671162869-GHRC_DAAC,cossiraloft,Configurable Scanning Submillimeter-wave Instrument/Radiometer (CoSSIR) ALOFT,GHRC_DAAC,2023-06-15T18:14:59.000Z,2023-07-29T21:47:03.000Z,-119.334,10.321,-79.761,35.925 -C3104921929-GHRC_DAAC,cossirimpacts,Configurable Scanning Submillimeter-wave Instrument/Radiometer (CoSSIR) IMPACTS,GHRC_DAAC,2023-01-05T16:44:10.000Z,2023-03-02T16:11:12.000Z,-115.701,26.395,-66.647,49.36 -C3741535891-GHRC_DAAC,cryfceedop,ER-2 Doppler radar (EDOP) CRYSTAL-FACE,GHRC_DAAC,2002-06-26T16:33:55.000Z,2002-07-29T21:06:00.000Z,-124.208,12.456,-77.057,41.403 -C1979104136-GHRC_DAAC,csgcpex01,GPM GROUND VALIDATION GCPEX SNOW MICROPHYSICS CASE STUDY V1,GHRC_DAAC,2012-02-24T00:00:48.000Z,2012-02-25T23:59:57.000Z,-80.4026,43.4595,-78.7616,46.3966 -C3733910357-GHRC_DAAC,edoptc4,ER-2 Doppler radar (EDOP) TC4,GHRC_DAAC,2007-07-07T16:34:53.000Z,2007-08-09T18:12:32.000Z,-119.355,-6.419,-74.997,37.886 -C3525231893-LARC_CLOUD,g3blmnc,SAGE III/ISS L2 Monthly Lunar Event Species Profiles (NetCDF) V006,LARC_CLOUD,2017-05-31T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C3116796107-LARC_CLOUD,g3blmnc,SAGE III/ISS L2 Monthly Lunar Event Species Profiles (NetCDF) V053,LARC_CLOUD,2017-05-30T00:00:00.000Z,2024-12-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C3525232606-LARC_CLOUD,g3bsmnc,SAGE III/ISS L2 Monthly Solar Event Species Profiles (NetCDF) V006,LARC_CLOUD,2017-06-07T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C3116797064-LARC_CLOUD,g3bsmnc,SAGE III/ISS L2 Monthly Solar Event Species Profiles (NetCDF) V053,LARC_CLOUD,2017-05-31T00:00:00.000Z,2024-12-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0 -C3499311418-LARC_CLOUD,g3btmnc,SAGE III/ISS L1B Monthly Solar Event Transmission Data (NetCDF) V006,LARC_CLOUD,2017-06-07T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C3116798961-LARC_CLOUD,g3btmnc,SAGE III/ISS L1B Monthly Solar Event Transmission Data (NetCDF) V053,LARC_CLOUD,2017-05-31T00:00:00.000Z,2024-11-30T23:59:59.000Z,-180.0,-90.0,180.0,90.0 -C3160666934-GHRC_DAAC,glmcierra,"Geostationary Lightning Mapper (GLM) Cluster Integrity, Exception Resolution, and Reclustering Algorithm (CIERRA)",GHRC_DAAC,2017-01-12T20:15:00.000Z,2023-03-31T23:59:59.000Z,-180.0,-57.312,180.0,57.267 -C2278812167-GHRC_DAAC,glmgoesL3,GOES-R Geostationary Lightning Mapper (GLM) Gridded Data Products,GHRC_DAAC,2017-12-18T00:00:00.000Z,,162.9,-57.0,-76.2,57.0 -C3534731641-GHRC_DAAC,glmmth,Geostationary Lightning Mapper (GLM) Combined Monthly Thunder Hour Data Product,GHRC_DAAC,2019-01-01T00:00:00.000Z,2024-12-31T23:59:59.000Z,-180.0,-90.0,180.0,90.0 -C2738393375-GHRC_DAAC,goescpexcv,GOES CPEX-CV,GHRC_DAAC,2022-09-06T00:10:40Z,2022-09-30T23:44:48Z,-84.0932388305664,3.21962308883667,5.653615474700928,67.0445327758789 -C1995568158-GHRC_DAAC,goesimpacts,GOES IMPACTS,GHRC_DAAC,2020-01-01T00:01:18.000Z,2023-03-02T23:58:56.000Z,-117.11434936523438,8.241040229797363,-50.125858306884766,53.1492919921875 -C1979126358-GHRC_DAAC,gpmampriphx2,GPM GROUND VALIDATION ADVANCED MICROWAVE PRECIPITATION RADIOMETER (AMPR) IPHEX V2,GHRC_DAAC,2014-05-01T00:00:00.000Z,2014-06-14T23:59:59.000Z,-87.1608,29.957,-71.1657,39.0117 -C1979126614-GHRC_DAAC,gpmamprolyx,GPM Ground Validation Advanced Microwave Precipitation Radiometer (AMPR) OLYMPEX V1,GHRC_DAAC,2015-11-09T18:48:53.000Z,2015-12-15T20:03:37.000Z,-130.947,33.7591,-117.287,50.0166 -C1981360835-GHRC_DAAC,gpmcax1cfolyx,GPM Ground Validation CAX1 Radar CFradial format OLYMPEX V1,GHRC_DAAC,2015-11-14T23:10:04.000Z,2016-04-01T13:08:33.000Z,-124.376,47.4888,-122.58,49.2854 -C3469171234-GHRC_DAAC,gpmceiluconn,GPM Ground Validation Ceilometers UConn,GHRC_DAAC,2023-12-15T08:53:04.000Z,2024-05-21T13:40:00.000Z,-72.304,41.798,-72.284,41.818 -C1980101480-GHRC_DAAC,gpmcmorphnifld,GPM GROUND VALIDATION NOAA CPC MORPHING TECHNIQUE (CMORPH) IFLOODS,GHRC_DAAC,2013-04-01T00:00:00.000Z,2013-06-30T23:59:59.000Z,-180.0,-60.0,180.0,60.0 -C1979134074-GHRC_DAAC,gpmcmorphniphx,GPM GROUND VALIDATION NOAA CPC MORPHING TECHNIQUE (CMORPH) IPHEX,GHRC_DAAC,2014-05-01T00:00:00.000Z,2014-06-14T23:59:59.000Z,-179.964,-59.9636,179.964,59.9636 -C1980126207-GHRC_DAAC,gpmd3rgcpex,GPM GROUND VALIDATION DUAL-FREQUENCY DUAL-POLARIZED DOPPLER RADAR (D3R) GCPEX,GHRC_DAAC,2012-01-03T11:44:11.000Z,2012-02-29T21:46:01.000Z,-80.0512,43.9631,-79.5122,44.5021 -C1983445363-GHRC_DAAC,gpmd3ricepop,GPM Ground Validation Dual-frequency Dual-polarized Doppler Radar (D3R) ICE POP,GHRC_DAAC,2017-11-01T01:45:31.000Z,2018-03-17T18:46:16.000Z,128.36,37.3181,129.078,38.0367 -C1981506869-GHRC_DAAC,gpmd3riphx,GPM GROUND VALIDATION DUAL-FREQUENCY DUAL-POLARIZED DOPPLER RADAR (D3R) IPHEX,GHRC_DAAC,2014-05-01T17:21:53.000Z,2014-06-15T13:27:28.000Z,-81.9632,35.1959,-81.9631,35.1959 -C2748694717-GHRC_DAAC,gpmd3rolyx,GPM Ground Validation Dual-frequency Dual-polarized Doppler Radar (D3R) OLYMPEX,GHRC_DAAC,2015-11-08T00:01:07.000Z,2016-01-15T06:29:55.000Z,-124.211,47.2772,-124.211,47.2773 -C3499342208-GHRC_DAAC,gpmd3ruconn,GPM Ground Validation Dual-Frequency Dual-Polarized Doppler Radar (D3R) UCONN,GHRC_DAAC,2023-01-01T00:00:02.000Z,2023-04-10T19:46:31.000Z,-72.74,41.459,-71.776,42.177 -C1980430683-GHRC_DAAC,gpmdowolyx2,GPM Ground Validation Doppler on Wheels (DOW) OLYMPEX,GHRC_DAAC,2015-11-06T13:34:26.000Z,2016-01-15T22:39:15.000Z,-124.408,46.9499,-123.331,48.0271 -C1979566372-GHRC_DAAC,gpmgsmapjifld,GPM Ground Validation Global Satellite Mapping of Precipitation (GSMaP) IFloodS V1,GHRC_DAAC,2013-04-22T15:00:00.000Z,2013-06-30T23:59:00.000Z,-179.95,-59.95,179.95,59.95 -C1979596455-GHRC_DAAC,gpmheiphx,GPM Ground Validation Hydro-Estimator IPHEx V1,GHRC_DAAC,2014-05-01T00:00:00.000Z,2014-06-16T23:45:00.000Z,-91.736,27.897,-71.793,42.921 -C1979602587-GHRC_DAAC,gpmhiwrapiphx,GPM GROUND VALIDATION HIGH ALTITUDE IMAGING WIND AND RAIN AIRBORNE PROFILER (HIWRAP) IPHEX V1,GHRC_DAAC,2014-05-03T17:57:11.000Z,2014-06-12T23:59:44.000Z,-86.5619,26.7992,-71.9384,36.6426 -C3504978078-GHRC_DAAC,gpmmrr2uconn,GPM Ground Validation Micro Rain Radar 2 (MRR-2) UConn,GHRC_DAAC,2021-12-01T00:00:02.000Z,2024-05-21T12:59:00.000Z,-72.304,41.798,-72.247,41.828 -C1979627039-GHRC_DAAC,gpmmrrecgcpex2,GPM GROUND VALIDATION ENVIRONMENT CANADA (EC) MICRO RAIN RADAR (MRR) GCPEX,GHRC_DAAC,2012-01-01T00:00:00.000Z,2012-03-14T23:59:59.000Z,-81.0,43.5,-78.0,46.5 -C1979629962-GHRC_DAAC,gpmmrrnagcpex2,GPM GROUND VALIDATION NASA MICRO RAIN RADAR (MRR) GCPEX,GHRC_DAAC,2011-10-24T20:59:00.000Z,2012-03-13T15:14:00.000Z,-79.7814,44.1806,-79.7175,44.2336 -C1982783702-GHRC_DAAC,gpmnmqifld,GPM Ground Validation National Mosaic and Multi-Sensor QPE (NMQ) System IFloodS,GHRC_DAAC,2013-04-01T00:20:00.000Z,2013-06-30T23:55:00.000Z,-130.0,20.0,-60.0,55.0 -C1980963390-GHRC_DAAC,gpmnmqiphx,GPM Ground Validation National Mosaic and Multi-Sensor QPE (NMQ) System IPHEx,GHRC_DAAC,2014-04-30T00:00:01.000Z,2014-06-16T23:58:00.000Z,-87.1,32.7,-78.695,38.705 -C1979639569-GHRC_DAAC,gpmnrlrtifld,GPM Ground Validation Naval Research Laboratory (NRL) Near-Real Time Rain Rates IFloodS,GHRC_DAAC,2013-04-23T01:00:00.000Z,2013-06-30T23:59:59.000Z,-179.875,-59.875,179.875,59.875 -C2683417176-GHRC_DAAC,gpmpal,GPM Ground Validation Passive Aquatic Listener (PAL),GHRC_DAAC,2010-10-18T00:00:00.000Z,2021-07-28T00:00:00.000Z,-179.999,-18.928,179.999,53.335 -C1979667328-GHRC_DAAC,gpmparprbgcpex,GPM GROUND VALIDATION NCAR CLOUD MICROPHYSICS PARTICLE PROBES GCPEX,GHRC_DAAC,2012-01-19T14:48:05.000Z,2012-02-24T20:15:00.000Z,-80.549,43.4595,-78.7659,46.3966 -C1979668994-GHRC_DAAC,gpmpersucifld,GPM Ground Validation Precipitation Estimation from Remotely Sensed Information using Artificial Neural Networks Cloud Classification System (PERSIANN-CCS) IFloodS,GHRC_DAAC,2013-04-01T00:00:00.000Z,2013-07-01T00:00:00.000Z,-96.84,39.36,-87.16,45.24 -C1979686100-GHRC_DAAC,gpmprecipolyx,GPM Ground Validation Daily Precipitation OLYMPEX,GHRC_DAAC,2015-10-01T00:00:00.000Z,2016-04-30T23:59:59.000Z,-124.734,46.2031,-122.391,48.4844 -C1982957832-GHRC_DAAC,gpmrfcmpifld,GPM Ground Validation Iowa Flood Center (IFC) NEXRAD Composite IFloodS V1,GHRC_DAAC,2013-04-15T18:00:00.000Z,2013-06-30T23:55:00.000Z,-97.1542,40.1333,-89.9036,44.5337 -C1979717298-GHRC_DAAC,gpmscampriphx,GPM Ground Validation Self-Calibrating Multivariate Precipitation Retrieval (SCaMPR) IPHEx V1,GHRC_DAAC,2014-04-30T23:47:00.000Z,2014-06-16T23:45:00.000Z,-91.741,27.897,-71.798,42.921 -C1995570197-GHRC_DAAC,gpmseafluxicepop,GPM Ground Validation SEA FLUX ICE POP V1,GHRC_DAAC,2017-09-01T00:30:00.000Z,2018-04-30T23:30:00.000Z,98.5,8.5,177.5,54.25 -C1979733201-GHRC_DAAC,gpmsogcpex,GPM GROUND VALIDATION COMPOSITE SATELLITE OVERPASSES GCPEX V1,GHRC_DAAC,2012-01-17T00:00:00.000Z,2012-02-29T23:59:59.000Z,-88.7,37.9,-70.9,50.5 -C1979816569-GHRC_DAAC,gpmtfmifld,GPM Ground Validation Global Flood Monitoring System (GFMS) Flood Maps IFloodS V1,GHRC_DAAC,2013-03-26T15:00:00.000Z,2013-06-30T21:00:00.000Z,-179.875,-49.875,179.875,49.875 -C1979823036-GHRC_DAAC,gpmtmpaifld,GPM Ground Validation TRMM Multi-satellite Precipitation Analysis (TMPA) IFloodS V7,GHRC_DAAC,2013-04-01T00:00:00.000Z,2013-06-30T23:59:59.000Z,-179.875,-59.875,179.875,59.875 -C1979825245-GHRC_DAAC,gpmtmpaiphx,GPM Ground Validation TRMM Multi-satellite Precipitation Analysis (TMPA) IPHEx V7,GHRC_DAAC,2014-05-01T00:00:00.000Z,2014-06-16T23:59:59.000Z,-180.0,-60.0,180.0,60.0 -C2704126285-GHRC_DAAC,hamsrcpexcv,High Altitude MMIC Sounding Radiometer (HAMSR) CPEX-CV,GHRC_DAAC,2022-09-06T10:51:42Z,2022-09-30T15:14:27Z,-40.63600158691406,1.8480000495910645,3.936000108718872,79.58300018310547 -C1979862427-GHRC_DAAC,hs3cpl,HURRICANE AND SEVERE STORM SENTINEL (HS3) GLOBAL HAWK CLOUD PHYSICS LIDAR (CPL) V1,GHRC_DAAC,2012-09-07T00:57:07.000Z,2014-09-30T21:58:14.000Z,-118.552,7.55657,-19.4239,48.1787 -C1979869732-GHRC_DAAC,hs3hiwrap,HURRICANE AND SEVERE STORM SENTINEL (HS3) HIGH-ALTITUDE IMAGING WIND AND RAIN AIRBORNE PROFILER (HIWRAP) V1,GHRC_DAAC,2013-09-15T18:34:46.000Z,2014-10-17T14:58:31.000Z,-96.6094,21.0197,-65.0064,31.613 -C1979872496-GHRC_DAAC,hs3wwlln,HURRICANE AND SEVERE STORM SENTINEL (HS3) WORLD WIDE LIGHTNING LOCATION NETWORK (WWLLN) STORMS V1,GHRC_DAAC,2012-08-28T00:00:45.000Z,2014-10-20T23:59:19.000Z,-116.595,12.9,-15.001,68.994 -C2303212754-GHRC_DAAC,isslis_v2_fin,Quality Controlled Lightning Imaging Sensor (LIS) on International Space Station (ISS) Science Data V2,GHRC_DAAC,2017-03-01T00:00:00.000Z,2023-11-16T23:59:59.000Z,-180.0,-55.0,180.0,55.0 -C2303219035-GHRC_DAAC,isslisg_v2_fin,Quality Controlled Lightning Imaging Sensor (LIS) on International Space Station (ISS) Backgrounds V2,GHRC_DAAC,2017-03-01T00:00:00.000Z,2023-11-16T23:59:59.000Z,-180.0,-55.0,180.0,55.0 -C1995580744-GHRC_DAAC,kakqimpacts,KAKQ NEXRAD IMPACTS V1,GHRC_DAAC,2020-01-01T00:03:22.000Z,2020-03-01T00:02:26.000Z,-82.1814,32.8531,-71.8333,41.115 -C1976723062-GHRC_DAAC,kbgmimpacts,KBGM NEXRAD IMPACTS V1,GHRC_DAAC,2020-01-01T00:03:22.000Z,2020-03-01T00:02:36.000Z,-81.5637,38.0698,-70.4058,46.3296 -C1995581487-GHRC_DAAC,kboximpacts,KBOX NEXRAD IMPACTS V1,GHRC_DAAC,2020-01-01T00:05:13.000Z,2020-03-01T00:00:16.000Z,-76.6945,37.8256,-65.5792,46.086 -C1995581917-GHRC_DAAC,kbufimpacts,KBUF NEXRAD IMPACTS V1,GHRC_DAAC,2020-01-01T00:07:16.000Z,2020-03-01T00:04:30.000Z,-84.3844,38.8183,-73.0894,47.0794 -C1995582220-GHRC_DAAC,kccximpacts,KCCX NEXRAD IMPACTS V1,GHRC_DAAC,2020-01-01T00:05:06.000Z,2020-03-01T00:01:10.000Z,-83.4731,36.7933,-72.5346,45.053 -C2020894988-GHRC_DAAC,kcleimpacts,KCLE NEXRAD IMPACTS V1,GHRC_DAAC,2020-01-01T00:06:35.000Z,2020-03-01T00:04:54.000Z,-87.3705,37.2833,-76.3492,45.5434 -C2020895772-GHRC_DAAC,kcxximpacts,KCXX NEXRAD IMPACTS V1,GHRC_DAAC,2020-01-01T00:02:05.000Z,2020-03-01T00:00:00.000Z,-78.9629,40.3809,-67.3702,48.6411 -C2020896896-GHRC_DAAC,kdiximpacts,KDIX NEXRAD IMPACTS V1,GHRC_DAAC,2020-01-01T00:06:33.000Z,2020-03-01T00:01:07.000Z,-79.81,35.8109,-69.0103,44.0825 -C2020897888-GHRC_DAAC,kdoximpacts,KDOX NEXRAD IMPACTS V1,GHRC_DAAC,2020-01-01T00:06:51.000Z,2020-03-01T00:00:37.000Z,-80.7442,34.6956,-70.136,42.9556 -C2020898934-GHRC_DAAC,kdtximpacts,KDTX NEXRAD IMPACTS V1,GHRC_DAAC,2020-01-01T00:04:50.000Z,2020-03-01T00:02:10.000Z,-89.0956,38.5699,-77.8477,46.8301 -C2025219690-GHRC_DAAC,kdvnimpacts,KDVN NEXRAD IMPACTS V1,GHRC_DAAC,2020-01-01T00:04:54.000Z,2020-03-01T00:07:49.000Z,-96.109,37.482,-85.053,45.742 -C2025220226-GHRC_DAAC,kenximpacts,KENX NEXRAD IMPACTS V1,GHRC_DAAC,2020-01-01T00:02:13.000Z,2020-03-01T00:00:32.000Z,-79.677,38.457,-68.451,46.716 -C2025222404-GHRC_DAAC,kfcximpacts,KFCX NEXRAD IMPACTS V1,GHRC_DAAC,2020-01-01T00:09:50.000Z,2020-03-01T00:02:00.000Z,-85.449,32.895,-75.099,41.154 -C2025222762-GHRC_DAAC,kgrbimpacts,KGRB NEXRAD IMPACTS V1,GHRC_DAAC,2020-01-01T00:04:41.000Z,2020-03-01T00:04:53.000Z,-93.906,40.369,-82.316,48.629 -C2025223549-GHRC_DAAC,kgrrimpacts,KGRR NEXRAD IMPACTS V1,GHRC_DAAC,2020-01-01T00:09:05.000Z,2020-03-01T00:00:53.000Z,-91.187,38.764,-79.903,47.024 -C2030430631-GHRC_DAAC,kgyximpacts,KGYX NEXRAD IMPACTS V1,GHRC_DAAC,2020-01-01T00:00:05.000Z,2020-03-01T00:03:54.000Z,-75.9914,39.7616,-64.5211,48.021 -C2030432039-GHRC_DAAC,kilnimpacts,KILN NEXRAD IMPACTS V1,GHRC_DAAC,2020-01-01T00:10:44.000Z,2020-03-01T00:00:56.000Z,-89.1706,35.2906,-78.4723,43.5504 -C2030434636-GHRC_DAAC,kilximpacts,KILX NEXRAD IMPACTS V1,GHRC_DAAC,2020-01-01T00:05:33.000Z,2020-03-01T00:03:55.000Z,-94.7433,36.0206,-83.9303,44.2804 -C2030436692-GHRC_DAAC,kindimpacts,KIND NEXRAD IMPACTS V1,GHRC_DAAC,2020-01-01T00:03:18.000Z,2020-03-01T00:03:48.000Z,-91.6517,35.5776,-80.9086,43.8414 -C2030440758-GHRC_DAAC,kiwximpacts,KIWX NEXRAD IMPACTS V1,GHRC_DAAC,2020-01-01T00:03:20.000Z,2020-03-01T00:04:18.000Z,-91.2062,37.2284,-80.1938,45.4887 -C2012922051-GHRC_DAAC,kjklimpacts,KJKL NEXRAD IMPACTS V1,GHRC_DAAC,2020-01-01T00:04:04.000Z,2020-03-01T00:04:38.000Z,-88.527,33.461,-78.099,41.721 -C2012927437-GHRC_DAAC,klotimpacts,KLOT NEXRAD IMPACTS V1,GHRC_DAAC,2020-01-01T00:10:38.000Z,2020-03-01T00:04:35.000Z,-93.612,37.474,-82.557,45.735 -C2012931540-GHRC_DAAC,klwximpacts,KLWX NEXRAD IMPACTS V1,GHRC_DAAC,2020-01-01T00:05:11.000Z,2020-03-01T00:01:45.000Z,-82.803,34.846,-72.172,43.106 -C2012947380-GHRC_DAAC,kmhximpacts,KMHX NEXRAD IMPACTS V1,GHRC_DAAC,2020-01-01T00:02:25.000Z,2020-03-01T00:05:33.000Z,-81.907,30.646,-71.846,38.906 -C2012934799-GHRC_DAAC,kmkximpacts,KMKX NEXRAD IMPACTS V1,GHRC_DAAC,2020-01-01T00:04:41.000Z,2020-03-01T00:03:39.000Z,-94.199,38.838,-82.902,47.098 -C2020260938-GHRC_DAAC,kokximpacts,KOKX NEXRAD IMPACTS V1,GHRC_DAAC,2020-01-01T00:02:20.000Z,2020-03-01T00:02:55.000Z,-78.3285,36.7356,-67.3994,44.9961 -C2020261956-GHRC_DAAC,kpbzimpacts,KPBZ NEXRAD IMPACTS V1,GHRC_DAAC,2020-01-01T00:01:03.000Z,2020-03-01T00:01:48.000Z,-85.6552,36.4018,-74.7808,44.6616 -C2020262679-GHRC_DAAC,kraximpacts,KRAX NEXRAD IMPACTS V1,GHRC_DAAC,2020-01-01T00:03:18.000Z,2020-03-01T00:06:21.000Z,-83.577,31.5343,-73.4025,39.7968 -C2020263812-GHRC_DAAC,krlximpacts,KRLX NEXRAD IMPACTS V1,GHRC_DAAC,2020-01-01T00:03:40.000Z,2020-03-01T00:05:59.000Z,-86.9891,34.1811,-76.4563,42.4412 -C2020264637-GHRC_DAAC,ktyximpacts,KTYX NEXRAD IMPACTS V1,GHRC_DAAC,2020-01-01T00:00:09.000Z,2020-03-01T00:01:15.000Z,-81.4022,39.6256,-69.9573,47.8857 -C2020265507-GHRC_DAAC,kvwximpacts,KVWX NEXRAD IMPACTS V1,GHRC_DAAC,2020-01-01T00:08:12.000Z,2020-03-01T00:06:38.000Z,-92.9872,34.1302,-82.4619,42.3903 -C1983762329-GHRC_DAAC,lislip,Lightning Imaging Sensor (LIS) on TRMM Science Data V4,GHRC_DAAC,1998-01-01T00:45:12.000Z,2015-04-08T14:09:43.000Z,-180.0,-40.0,180.0,40.0 -C1995583255-GHRC_DAAC,lislipG,Lightning Imaging Sensor (LIS) on TRMM Backgrounds V4,GHRC_DAAC,1998-01-01T00:45:12.000Z,2015-04-08T14:09:43.000Z,-180.0,-40.0,180.0,40.0 -C1979882997-GHRC_DAAC,lisvhrac,LIS 0.1 DEGREE VERY HIGH RESOLUTION GRIDDED LIGHTNING ANNUAL CLIMATOLOGY (VHRAC) V1,GHRC_DAAC,1998-01-01T00:00:00.000Z,2013-12-31T23:59:59.000Z,-180.0,-38.0,180.0,38.0 -C1979883116-GHRC_DAAC,lisvhrdc,LIS 0.1 DEGREE VERY HIGH RESOLUTION GRIDDED LIGHTNING DIURNAL CLIMATOLOGY (VHRDC) V1,GHRC_DAAC,1998-01-01T00:00:00.000Z,2013-12-31T23:59:59.000Z,-180.0,-38.0,180.0,38.0 -C1979883245-GHRC_DAAC,lisvhrfc,LIS 0.1 DEGREE VERY HIGH RESOLUTION GRIDDED LIGHTNING FULL CLIMATOLOGY (VHRFC) V1,GHRC_DAAC,1998-01-01T00:00:00.000Z,2013-12-31T23:59:59.000Z,-180.0,-38.0,180.0,38.0 -C1979883359-GHRC_DAAC,lisvhrmc,LIS 0.1 DEGREE VERY HIGH RESOLUTION GRIDDED LIGHTNING MONTHLY CLIMATOLOGY (VHRMC) V1,GHRC_DAAC,1998-01-01T00:00:00.000Z,2013-12-31T23:59:59.000Z,-180.0,-38.0,180.0,38.0 -C1979883491-GHRC_DAAC,lisvhrsc,LIS 0.1 DEGREE VERY HIGH RESOLUTION GRIDDED LIGHTNING SEASONAL CLIMATOLOGY (VHRSC) V1,GHRC_DAAC,1998-01-01T00:00:00.000Z,2013-12-31T23:59:59.000Z,-180.0,-38.0,180.0,38.0 -C1995863067-GHRC_DAAC,lohrac,LIS/OTD 0.5 Degree High Resolution Annual Climatology (HRAC) V2.3.2015,GHRC_DAAC,1995-05-04T00:00:00.000Z,2014-12-31T23:59:59.000Z,-179.75,-89.75,179.75,89.75 -C1995863244-GHRC_DAAC,lohrfc,LIS/OTD 0.5 Degree High Resolution Full Climatology (HRFC) V2.3.2015,GHRC_DAAC,1995-05-04T00:00:00.000Z,2014-12-31T23:59:59.000Z,-179.75,-89.75,179.75,89.75 -C1995863290-GHRC_DAAC,lohrmc,LIS/OTD 0.5 Degree High Resolution Monthly Climatology (HRMC) V2.3.2015,GHRC_DAAC,1995-05-04T00:00:00.000Z,2014-12-31T23:59:59.000Z,-179.75,-89.75,179.75,89.75 -C1995863391-GHRC_DAAC,lolrac,LIS/OTD 2.5 Degree Low Resolution Annual Climatology (LRAC) V2.3.2015,GHRC_DAAC,1995-05-04T00:00:00.000Z,2014-12-31T23:59:59.000Z,-178.75,-88.75,178.75,88.75 -C1995863430-GHRC_DAAC,lolracts,LIS/OTD 2.5 Degree Low Resolution Annual Climatology Time Series (LRACTS) V2.3.2015,GHRC_DAAC,1995-05-04T00:00:00.000Z,2015-04-08T23:59:59.000Z,-178.75,-88.75,178.75,88.75 -C1995863553-GHRC_DAAC,lolradc,LIS/OTD 2.5 Degree Low Resolution Annual Diurnal Climatology (LRADC) V2.3.2015,GHRC_DAAC,1995-05-04T00:00:00.000Z,2014-12-31T23:59:59.000Z,-178.75,-88.75,178.75,88.75 -C1995863733-GHRC_DAAC,lolrdc,LIS/OTD 2.5 Degree Low Resolution Diurnal Climatology (LRDC) V2.3.2015,GHRC_DAAC,1995-05-04T00:00:00.000Z,2014-12-31T23:59:59.000Z,-178.75,-88.75,178.75,88.75 -C1995864215-GHRC_DAAC,lolrfc,LIS/OTD 2.5 Degree Low Resolution Full Climatology (LRFC) V2.3.2015,GHRC_DAAC,1995-05-04T00:00:00.000Z,2014-12-31T23:59:59.000Z,-178.75,-88.75,178.75,88.75 -C1995865015-GHRC_DAAC,lolrmts,LIS/OTD 2.5 Degree Low Resolution Monthly Climatology Time Series (LRMTS) V2.3.2015,GHRC_DAAC,1995-05-04T00:00:00.000Z,2015-04-08T23:59:59.000Z,-178.75,-88.75,178.75,88.75 -C1995865470-GHRC_DAAC,lolrts,LIS/OTD 2.5 Degree Low Resolution Time Series (LRTS) V2.3.2015,GHRC_DAAC,1995-05-04T00:00:00.000Z,2015-04-08T23:59:59.000Z,-178.75,-88.75,178.75,88.75 -C2287332555-GHRC_DAAC,mrmsimpacts,Multi-Radar/Multi-Sensor (MRMS) Precipitation Reanalysis for Satellite Validation Product IMPACTS V1,GHRC_DAAC,2022-01-01T00:05:38.000Z,2023-03-02T16:28:40.000Z,-129.9949951171875,20.005001068115234,-60.0050048828125,54.994998931884766 -C1996545162-GHRC_DAAC,msutls,AMSU/MSU Lowstratosphere Day/Month Temperature Anomalies and Annual Cycle,GHRC_DAAC,1978-01-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C1996545409-GHRC_DAAC,msutlt,AMSU/MSU Lowtroposphere Day/Month Temperature Anomalies and Annual Cycle V6,GHRC_DAAC,1978-01-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C1996545587-GHRC_DAAC,msutmt,AMSU/MSU Midtroposphere Day/Month Temperature Anomalies and Annual Cycle V6,GHRC_DAAC,1978-01-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C1996545873-GHRC_DAAC,msuttp,AMSU/MSU Tropopause Day/Month Temperature Anomalies and Annual Cycle V6,GHRC_DAAC,1978-01-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C1995865990-GHRC_DAAC,ncsusndimpacts,NCSU Soundings IMPACTS,GHRC_DAAC,2020-02-20T16:49:00.000Z,2023-02-12T16:00:00.000Z,-78.643,35.757000000000005,-78.62299999999999,35.777 -C1995866059-GHRC_DAAC,nexeastimpacts,NEXRAD Mosaic East IMPACTS V1,GHRC_DAAC,2019-12-31T23:50:34.000Z,2020-02-29T23:58:00.000Z,-85.0,32.5,-67.525,46.475 -C1995866123-GHRC_DAAC,nexmidwstimpacts,NEXRAD Mosaic Midwest IMPACTS V1,GHRC_DAAC,2020-01-01T00:01:18.000Z,2020-02-29T23:57:25.000Z,-93.0,36.0,-79.025,45.975 -C1995866540-GHRC_DAAC,noaasndimpacts,NOAA Soundings IMPACTS,GHRC_DAAC,2020-01-01T00:00:00.000Z,2023-03-01T23:59:59.000Z,-98.42330000000001,27.6953,-68.00359999999999,48.5747 -C1995868627-GHRC_DAAC,parprbimpacts,NCAR Particle Probes IMPACTS ,GHRC_DAAC,2020-01-18T18:00:00.000Z,2023-02-28T15:36:00.000Z,-95.243,33.261,-64.987,48.237 -C3181083175-GHRC_DAAC,raxpolimpacts,Rapid X-band Polarimetric Radar (RaXPol) IMPACTS,GHRC_DAAC,2022-01-29T00:01:34.000Z,2023-01-25T23:41:18.000Z,-74.732,41.289,-69.761,43.439 -C1979892577-GHRC_DAAC,relampagolma,"Remote sensing of Electrification, Lightning, And Mesoscale/microscale Processes with Adaptive Ground Observations (RELAMPAGO) Lightning Mapping Array (LMA) V1",GHRC_DAAC,2018-11-08T00:00:01.000Z,2019-04-20T00:00:00.000Z,-66.166,-33.464,-61.959,-29.856 -C1996546067-GHRC_DAAC,rss1tpwnv7r01,RSS MONTHLY 1-DEG MICROWAVE TOTAL PRECIPITABLE WATER NETCDF V7R01,GHRC_DAAC,1988-01-01T00:00:00.000Z,,-180.0,-60.0,180.0,60.0 -C1996546295-GHRC_DAAC,rss1windnv7r01,RSS MONTHLY 1-DEG MERGED WIND CLIMATOLOGY NETCDF V7R01,GHRC_DAAC,1988-01-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C1979893137-GHRC_DAAC,rssmif08d,RSS SSM/I OCEAN PRODUCT GRIDS DAILY FROM DMSP F8 NETCDF V7,GHRC_DAAC,1987-07-09T00:00:00.000Z,1991-12-31T23:59:59.000Z,-180.0,-90.0,180.0,90.0 -C1979894778-GHRC_DAAC,rssmif08d3d,RSS SSM/I OCEAN PRODUCT GRIDS 3-DAY AVERAGE FROM DMSP F8 NETCDF V7,GHRC_DAAC,1987-07-07T00:00:00.000Z,1991-12-31T23:59:59.000Z,-180.0,-90.0,180.0,90.0 -C1979896540-GHRC_DAAC,rssmif08m,RSS SSM/I OCEAN PRODUCT GRIDS MONTHLY AVERAGE FROM DMSP F8 NETCDF V7,GHRC_DAAC,1987-07-01T00:00:00.000Z,1991-12-31T23:59:59.000Z,-180.0,-90.0,180.0,90.0 -C1979897328-GHRC_DAAC,rssmif08w,RSS SSM/I OCEAN PRODUCT GRIDS WEEKLY AVERAGE FROM DMSP F8 NETCDF V7,GHRC_DAAC,1987-07-05T00:00:00.000Z,1992-01-04T23:59:59.000Z,-180.0,-90.0,180.0,90.0 -C1979897870-GHRC_DAAC,rssmif10d,RSS SSM/I OCEAN PRODUCT GRIDS DAILY FROM DMSP F10 NETCDF V7,GHRC_DAAC,1990-12-08T00:00:00.000Z,1997-11-14T23:59:59.000Z,-180.0,-90.0,180.0,90.0 -C1979900425-GHRC_DAAC,rssmif10d3d,RSS SSM/I OCEAN PRODUCT GRIDS 3-DAY AVERAGE FROM DMSP F10 NETCDF V7,GHRC_DAAC,1990-12-06T00:00:00.000Z,1997-11-14T23:59:59.000Z,-180.0,-90.0,180.0,90.0 -C1979902952-GHRC_DAAC,rssmif10m,RSS SSM/I OCEAN PRODUCT GRIDS MONTHLY AVERAGE FROM DMSP F10 NETCDF V7,GHRC_DAAC,1990-12-01T00:00:00.000Z,1997-11-30T23:59:59.000Z,-180.0,-90.0,180.0,90.0 -C1979903058-GHRC_DAAC,rssmif10w,RSS SSM/I OCEAN PRODUCT GRIDS WEEKLY AVERAGE FROM DMSP F10 NETCDF V7,GHRC_DAAC,1990-12-02T00:00:00.000Z,1997-11-15T23:59:59.000Z,-180.0,-90.0,180.0,90.0 -C1979903542-GHRC_DAAC,rssmif11d,RSS SSM/I OCEAN PRODUCT GRIDS DAILY FROM DMSP F11 NETCDF V7,GHRC_DAAC,1991-12-03T00:00:00.000Z,2000-05-16T23:59:59.000Z,-180.0,-90.0,180.0,90.0 -C1979906652-GHRC_DAAC,rssmif11d3d,RSS SSM/I OCEAN PRODUCT GRIDS 3-DAY AVERAGE FROM DMSP F11 NETCDF V7,GHRC_DAAC,1991-12-01T00:00:00.000Z,2000-05-16T23:59:59.000Z,-180.0,-90.0,180.0,90.0 -C1979909875-GHRC_DAAC,rssmif11m,RSS SSM/I OCEAN PRODUCT GRIDS MONTHLY AVERAGE FROM DMSP F11 NETCDF V7,GHRC_DAAC,1991-12-01T00:00:00.000Z,2000-05-31T23:59:59.000Z,-180.0,-90.0,180.0,90.0 -C1979910004-GHRC_DAAC,rssmif11w,RSS SSM/I OCEAN PRODUCT GRIDS WEEKLY AVERAGE FROM DMSP F11 NETCDF V7,GHRC_DAAC,1991-12-01T00:00:00.000Z,2000-05-20T23:59:59.000Z,-180.0,-90.0,180.0,90.0 -C1979910491-GHRC_DAAC,rssmif13d,RSS SSM/I OCEAN PRODUCT GRIDS DAILY FROM DMSP F13 NETCDF V7,GHRC_DAAC,1995-05-03T00:00:00.000Z,2009-11-04T23:59:59.000Z,-180.0,-90.0,180.0,90.0 -C1979917074-GHRC_DAAC,rssmif13d3d,RSS SSM/I OCEAN PRODUCT GRIDS 3-DAY AVERAGE FROM DMSP F13 NETCDF V7,GHRC_DAAC,1995-05-01T00:00:00.000Z,2009-11-04T23:59:59.000Z,-180.0,-90.0,180.0,90.0 -C1979922855-GHRC_DAAC,rssmif13m,RSS SSM/I OCEAN PRODUCT GRIDS MONTHLY AVERAGE FROM DMSP F13 NETCDF V7,GHRC_DAAC,1995-05-01T00:00:00.000Z,2009-11-30T23:59:59.000Z,-180.0,-90.0,180.0,90.0 -C1979923135-GHRC_DAAC,rssmif13w,RSS SSM/I OCEAN PRODUCT GRIDS WEEKLY AVERAGE FROM DMSP F13 NETCDF V7,GHRC_DAAC,1995-04-30T00:00:00.000Z,2009-11-07T23:59:59.000Z,-180.0,-90.0,180.0,90.0 -C1979923944-GHRC_DAAC,rssmif14d,RSS SSM/I OCEAN PRODUCT GRIDS DAILY FROM DMSP F14 NETCDF V7,GHRC_DAAC,1997-05-08T00:00:00.000Z,2008-08-08T23:59:59.000Z,-180.0,-90.0,180.0,90.0 -C1979928137-GHRC_DAAC,rssmif14d3d,RSS SSM/I OCEAN PRODUCT GRIDS 3-DAY AVERAGE FROM DMSP F14 NETCDF V7,GHRC_DAAC,1997-05-06T00:00:00.000Z,2008-08-08T23:59:59.000Z,-180.0,-90.0,180.0,90.0 -C1979932834-GHRC_DAAC,rssmif14m,RSS SSM/I OCEAN PRODUCT GRIDS MONTHLY AVERAGE FROM DMSP F14 NETCDF V7,GHRC_DAAC,1997-05-01T00:00:00.000Z,2008-08-31T23:59:59.000Z,-180.0,-90.0,180.0,90.0 -C1979933018-GHRC_DAAC,rssmif14w,RSS SSM/I OCEAN PRODUCT GRIDS WEEKLY AVERAGE FROM DMSP F14 NETCDF V7,GHRC_DAAC,1997-05-04T00:00:00.000Z,2008-08-09T23:59:59.000Z,-180.0,-90.0,180.0,90.0 -C1979933843-GHRC_DAAC,rssmif15d,RSS SSM/I OCEAN PRODUCT GRIDS DAILY FROM DMSP F15 NETCDF V7,GHRC_DAAC,1999-12-18T00:00:00.000Z,2011-12-31T23:59:59.000Z,-180.0,-90.0,180.0,90.0 -C1979938371-GHRC_DAAC,rssmif15d3d,RSS SSM/I OCEAN PRODUCT GRIDS 3-DAY AVERAGE FROM DMSP F15 NETCDF V7,GHRC_DAAC,1999-12-16T00:00:00.000Z,2011-12-31T23:59:59.000Z,-180.0,-90.0,180.0,90.0 -C1979943148-GHRC_DAAC,rssmif15m,RSS SSM/I OCEAN PRODUCT GRIDS MONTHLY AVERAGE FROM DMSP F15 NETCDF V7,GHRC_DAAC,1999-12-01T00:00:00.000Z,2011-12-31T23:59:59.000Z,-180.0,-90.0,180.0,90.0 -C1979943320-GHRC_DAAC,rssmif15w,RSS SSM/I OCEAN PRODUCT GRIDS WEEKLY AVERAGE FROM DMSP F15 NETCDF V7,GHRC_DAAC,1999-12-12T00:00:00.000Z,2011-12-31T23:59:59.000Z,-180.0,-90.0,180.0,90.0 -C1996546840-GHRC_DAAC,rssmif16d3d,RSS SSMIS OCEAN PRODUCT GRIDS 3-DAY AVERAGE FROM DMSP F16 NETCDF V7,GHRC_DAAC,2003-10-24T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C1996546916-GHRC_DAAC,rssmif16m,RSS SSMIS OCEAN PRODUCT GRIDS MONTHLY AVERAGE FROM DMSP F16 NETCDF V7,GHRC_DAAC,2003-10-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C1996547004-GHRC_DAAC,rssmif16w,RSS SSMIS OCEAN PRODUCT GRIDS WEEKLY AVERAGE FROM DMSP F16 NETCDF V7,GHRC_DAAC,2003-10-26T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C1996546695-GHRC_DAAC,rssmif17d,RSS SSMIS OCEAN PRODUCT GRIDS DAILY FROM DMSP F17 NETCDF V7,GHRC_DAAC,2006-12-14T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C1996546880-GHRC_DAAC,rssmif17d3d,RSS SSMIS OCEAN PRODUCT GRIDS 3-DAY AVERAGE FROM DMSP F17 NETCDF V7,GHRC_DAAC,2006-12-12T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C1996546984-GHRC_DAAC,rssmif17m,RSS SSMIS OCEAN PRODUCT GRIDS MONTHLY AVERAGE FROM DMSP F17 NETCDF V7,GHRC_DAAC,2006-12-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C1996547038-GHRC_DAAC,rssmif17w,RSS SSMIS OCEAN PRODUCT GRIDS WEEKLY AVERAGE FROM DMSP F17 NETCDF V7,GHRC_DAAC,2006-12-10T00:00:00.000Z,,-180.0,-90.0,180.0,90.0 -C1995869065-GHRC_DAAC,sbuceilimpacts,SBU Ceilometers IMPACTS,GHRC_DAAC,2020-01-01T00:00:00.000Z,2023-03-02T23:59:44.000Z,-73.1278305053711,40.896705627441406,-73.02965545654297,40.9652694812486 -C1995869315-GHRC_DAAC,sbukasprimpacts,SBU Ka-band Scanning Polarimetric Radar (KASPR) IMPACTS V1,GHRC_DAAC,2020-01-06T03:22:43.000Z,2020-02-26T15:36:46.000Z,-73.1284,40.8898,-73.1276,40.8906 -C1995869498-GHRC_DAAC,sbulidarimpacts,SBU Doppler LiDAR IMPACTS V1,GHRC_DAAC,2020-01-01T00:00:00.000Z,2020-02-26T18:05:03.000Z,-72.8909,40.8611,-72.8631,40.8889 -C1995869596-GHRC_DAAC,sbumetimpacts,SBU Meteorological Station IMPACTS V1,GHRC_DAAC,2020-01-01T00:00:50.000Z,2023-01-25T15:46:44.000Z,-76.882,40.718,-73.02,43.256 -C1995869658-GHRC_DAAC,sbumrr2impacts,SBU Micro Rain Radar 2 (MRR2) IMPACTS,GHRC_DAAC,2020-01-01T00:00:00.000Z,2023-03-02T23:59:58.000Z,-74.0168,40.7182,-72.864,40.975 -C2870820819-GHRC_DAAC,sbumwrimpacts,SBU Microwave Radiometer (MWR) IMPACTS,GHRC_DAAC,2023-01-01T00:00:04.000Z,2023-03-06T21:15:00.000Z,-72.8815,40.8655,-72.8813,40.8657 -C2704110186-GHRC_DAAC,sbuskylerimpacts,SBU X-band Phased Array Radar (SKYLER) IMPACTS,GHRC_DAAC,2022-01-17T02:06:30.000Z,2023-02-28T14:54:29.000Z,-77.4867,40.1501,-71.266,43.695 -C2418992215-GHRC_DAAC,scrxsondecpexaw,St. Croix Radiosondes CPEX-AW V1,GHRC_DAAC,2021-08-19T23:12:00.000Z,2021-09-14T21:03:31.000Z,-65.2209,17.4441,-64.6749,18.0047 -C1995869798-GHRC_DAAC,seaflux,SeaFlux Data Products V1,GHRC_DAAC,1988-01-01T00:00:00.000Z,2018-12-31T23:59:59.000Z,-179.87,-85.549,179.87,85.549 -C2748663117-GHRC_DAAC,sondecpexcv,Radiosondes CPEX-CV,GHRC_DAAC,2022-09-01T15:12:00Z,2022-09-29T19:51:20Z,-23.400798,0.053658,-0.073876,16.789384 -C1979947964-GHRC_DAAC,tc4ampr,TC4 AMPR BRIGHTNESS TEMPERATURE (TB) V1,GHRC_DAAC,2007-07-19T12:27:02.000Z,2007-08-08T18:17:16.000Z,-93.6027,-6.56725,-47.5813,17.2207 -C3277813808-GHRC_DAAC,tpwcpex,Total Precipitable Water (TPW) CPEX,GHRC_DAAC,2017-05-24T00:03:19.000Z,2017-09-20T13:26:23.000Z,-180.0,-25.8,179.99,50.72 -C2382050573-GHRC_DAAC,ualbmrr2impacts,UAlbany Micro Rain Radar 2 (MRR-2) IMPACTS,GHRC_DAAC,2020-01-30T00:01:00.000Z,2023-02-28T23:59:00.000Z,-73.83243896249719,42.680376870022336,-73.81390653310828,42.68628038705774 -C2102858144-GHRC_DAAC,ualbparsimpacts,UAlbany Parsivel IMPACTS,GHRC_DAAC,2020-01-30T00:00:00.000Z,2023-02-28T23:58:40.000Z,-73.84190000000001,42.67091583251953,-73.80444549560546,42.695699999999995 -C1995869868-GHRC_DAAC,uiucsndimpacts,Mobile UIUC Soundings IMPACTS V1,GHRC_DAAC,2020-01-18T16:00:00.000Z,2023-02-28T15:06:50.000Z,-88.253,38.958,-70.661,44.707 -C3247862082-GHRC_DAAC,wbandimpacts,ACHIEVE W-Band Cloud Radar IMPACTS,GHRC_DAAC,2023-01-23T01:00:35.000Z,2023-03-01T00:42:40.000Z,-72.861,41.368,-71.655,42.268 -C3301410475-GHRC_DAAC,wwllnmth,World Wide Lightning Location Network (WWLLN) Monthly Thunder Hour Data,GHRC_DAAC,2013-01-01T00:00:00.000Z,2024-12-31T23:59:59.000Z,-180.0,-90.0,180.0,90.0 diff --git a/docs/visualization/titiler/titiler-cmr/output/cmr_collections_netcdf4_updated_saved_all.csv b/docs/visualization/titiler/titiler-cmr/output/cmr_collections_netcdf4_updated_saved_all.csv deleted file mode 100644 index 9072408..0000000 --- a/docs/visualization/titiler/titiler-cmr/output/cmr_collections_netcdf4_updated_saved_all.csv +++ /dev/null @@ -1,1991 +0,0 @@ -concept_id,short_name,entry_title,provider_id,begin_time,end_time,west,south,east,north,links,variables,status,error,scheme -C2105092163-LAADS,VNP03IMG,VIIRS/NPP Imagery Resolution Terrain Corrected Geolocation 6-Min L1 Swath 375 m ,LAADS,2012-01-19T00:00:00.000Z,,-180.0,-90.0,180.0,90.0,https://data.laadsdaac.earthdatacloud.nasa.gov/prod-lads/VNP03IMG/VNP03IMG.A2012019.0000.002.2020318135750.nc,[],ok,,https -C2105091501-LAADS,VNP02IMG,VIIRS/NPP Imagery Resolution 6-Min L1B Swath 375 m,LAADS,2012-01-19T00:00:00.000Z,,-180.0,-90.0,180.0,90.0,https://data.laadsdaac.earthdatacloud.nasa.gov/prod-lads/VNP02IMG/VNP02IMG.A2012019.0000.002.2020318151901.nc,[],ok,,https -C1562021084-LAADS,CLDMSK_L2_VIIRS_SNPP,VIIRS/Suomi-NPP Cloud Mask 6-Min Swath 750 m,LAADS,2012-03-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0,https://data.laadsdaac.earthdatacloud.nasa.gov/prod-lads/CLDMSK_L2_VIIRS_SNPP/CLDMSK_L2_VIIRS_SNPP.A2012061.0000.001.2019070194123.nc,[],ok,,https -C1964798938-LAADS,CLDMSK_L2_VIIRS_NOAA20,VIIRS/NOAA20 Cloud Mask and Spectral Test Results 6-Min L2 Swath 750m,LAADS,2012-03-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0,https://data.laadsdaac.earthdatacloud.nasa.gov/prod-lads/CLDMSK_L2_VIIRS_NOAA20/CLDMSK_L2_VIIRS_NOAA20.A2018048.0000.001.2021054143020.nc,[],ok,,https -C1593392869-LAADS,CLDMSK_L2_MODIS_Aqua,MODIS/Aqua Cloud Mask 5-Min Swath 1000 m,LAADS,2002-07-04T00:00:00.000Z,,-180.0,-90.0,180.0,90.0,https://data.laadsdaac.earthdatacloud.nasa.gov/prod-lads/CLDMSK_L2_MODIS_Aqua/CLDMSK_L2_MODIS_Aqua.A2002185.0000.001.2021142090111.nc,[],ok,,https -C2600303218-LAADS,AERDB_L2_VIIRS_SNPP,VIIRS/SNPP Deep Blue Aerosol L2 6 Min Swath 6km,LAADS,2012-03-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0,https://data.laadsdaac.earthdatacloud.nasa.gov/prod-lads/AERDB_L2_VIIRS_SNPP/AERDB_L2_VIIRS_SNPP.A2012064.0000.002.2023077205327.nc,"['Aerosol_Optical_Thickness_550_Expected_Uncertainty_Land', 'Aerosol_Optical_Thickness_550_Expected_Uncertainty_Ocean', 'Aerosol_Optical_Thickness_550_Land', 'Aerosol_Optical_Thickness_550_Land_Best_Estimate', 'Aerosol_Optical_Thickness_550_Land_Ocean', 'Aerosol_Optical_Thickness_550_Land_Ocean_Best_Estimate', 'Aerosol_Optical_Thickness_550_Ocean', 'Aerosol_Optical_Thickness_550_Ocean_Best_Estimate', 'Aerosol_Optical_Thickness_550_STDV_Land', 'Aerosol_Optical_Thickness_550_STDV_Ocean', 'Aerosol_Optical_Thickness_QA_Flag_Land', 'Aerosol_Optical_Thickness_QA_Flag_Ocean', 'Aerosol_Type_Land', 'Aerosol_Type_Land_Ocean', 'Aerosol_Type_Ocean', 'Algorithm_Flag_Land', 'Algorithm_Flag_Ocean', 'Angstrom_Exponent_Land', 'Angstrom_Exponent_Land_Best_Estimate', 'Angstrom_Exponent_Land_Ocean', 'Angstrom_Exponent_Land_Ocean_Best_Estimate', 'Angstrom_Exponent_Ocean', 'Angstrom_Exponent_Ocean_Best_Estimate', 'Cell_Average_Elevation_Land', 'Cell_Average_Elevation_Ocean', 'Fine_Mode_Fraction_550_Ocean', 'Fine_Mode_Fraction_550_Ocean_Best_Estimate', 'Number_Of_Pixels_Used_Land', 'Number_Of_Pixels_Used_Ocean', 'Number_Valid_Pixels', 'Ocean_Sum_Squares', 'Precipitable_Water', 'Relative_Azimuth_Angle', 'Scan_Start_Time', 'Scattering_Angle', 'Solar_Zenith_Angle', 'Spectral_Aerosol_Optical_Thickness_Land', 'Spectral_Aerosol_Optical_Thickness_Ocean', 'Spectral_Single_Scattering_Albedo_Land', 'Spectral_Surface_Reflectance', 'Spectral_TOA_Reflectance_Land', 'Spectral_TOA_Reflectance_Ocean', 'TOA_NDVI', 'Total_Column_Ozone', 'Unsuitable_Pixel_Fraction_Land_Ocean', 'Viewing_Zenith_Angle', 'Wind_Direction', 'Wind_Speed']",ok,,https -C2105092427-LAADS,VNP03MOD,VIIRS/NPP Moderate Resolution Terrain-Corrected Geolocation L1 6-Min Swath 750 m,LAADS,2012-01-19T00:00:00.000Z,,-180.0,-90.0,180.0,90.0,https://data.laadsdaac.earthdatacloud.nasa.gov/prod-lads/VNP03MOD/VNP03MOD.A2012019.0000.002.2020318135750.nc,[],ok,,https -C2105087643-LAADS,VNP02MOD,VNP02MOD | VIIRS/NPP Moderate Resolution 6-Min L1B Swath 750 m,LAADS,2012-01-19T00:00:00.000Z,,-180.0,-90.0,180.0,90.0,https://data.laadsdaac.earthdatacloud.nasa.gov/prod-lads/VNP02MOD/VNP02MOD.A2012019.0000.002.2020318151901.nc,[],ok,,https -C2408750690-LPCLOUD,EMITL2ARFL,EMIT L2A Estimated Surface Reflectance and Uncertainty and Masks 60 m V001,LPCLOUD,2022-08-09T00:00:00.000Z,,-180.0,-54.0,180.0,54.0,https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/EMITL2ARFL.001/EMIT_L2A_RFL_001_20220810T034103_2222203_001/EMIT_L2A_RFL_001_20220810T034103_2222203_001.nc,['reflectance'],ok,,https -C2408009906-LPCLOUD,EMITL1BRAD,EMIT L1B At-Sensor Calibrated Radiance and Geolocation Data 60 m V001,LPCLOUD,2022-08-09T00:00:00.000Z,,-180.0,-54.0,180.0,54.0,https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/EMITL1BRAD.001/EMIT_L1B_RAD_001_20220810T034103_2222203_001/EMIT_L1B_RAD_001_20220810T034103_2222203_001.nc,['radiance'],ok,,https -C2772641628-LAADS,AERDT_L2_VIIRS_NOAA20,VIIRS/NOAA20 Dark Target Aerosol 6-Min L2 Swath 6 km,LAADS,2018-02-17T00:00:00.000Z,,-180.0,-90.0,180.0,90.0,https://data.laadsdaac.earthdatacloud.nasa.gov/prod-lads/AERDT_L2_VIIRS_NOAA20/AERDT_L2_VIIRS_NOAA20.A2018048.0030.002.2023213152259.nc,[],ok,,https -C1344465347-LAADS,VNP03DNB,VIIRS/NPP Day/Night Band Terrain Corrected Geolocation L1 6-Min Swath 750 m,LAADS,2012-01-19T00:00:00.000Z,,-180.0,-90.0,180.0,90.0,https://data.laadsdaac.earthdatacloud.nasa.gov/prod-lads/VNP03DNB/VNP03DNB.A2012019.0000.002.2020318135750.nc,[],ok,,https -C2771506686-LAADS,AERDT_L2_VIIRS_SNPP,VIIRS/SNPP Dark Target Aerosol L2 6-Min Swath 6 km V2,LAADS,2012-03-01T00:36:00.000Z,,-180.0,-90.0,180.0,90.0,https://data.laadsdaac.earthdatacloud.nasa.gov/prod-lads/AERDT_L2_VIIRS_SNPP/AERDT_L2_VIIRS_SNPP.A2012061.0036.002.2023213150933.nc,[],ok,,https -C2600305692-LAADS,AERDB_L2_VIIRS_NOAA20,VIIRS/NOAA20 Deep Blue Aerosol L2 6-Min Swath 6 km,LAADS,2018-02-17T00:00:00.000Z,,-180.0,-90.0,180.0,90.0,https://data.laadsdaac.earthdatacloud.nasa.gov/prod-lads/AERDB_L2_VIIRS_NOAA20/AERDB_L2_VIIRS_NOAA20.A2018048.0030.002.2023081182749.nc,"['Aerosol_Optical_Thickness_550_Expected_Uncertainty_Land', 'Aerosol_Optical_Thickness_550_Expected_Uncertainty_Ocean', 'Aerosol_Optical_Thickness_550_Land', 'Aerosol_Optical_Thickness_550_Land_Best_Estimate', 'Aerosol_Optical_Thickness_550_Land_Ocean', 'Aerosol_Optical_Thickness_550_Land_Ocean_Best_Estimate', 'Aerosol_Optical_Thickness_550_Ocean', 'Aerosol_Optical_Thickness_550_Ocean_Best_Estimate', 'Aerosol_Optical_Thickness_550_STDV_Land', 'Aerosol_Optical_Thickness_550_STDV_Ocean', 'Aerosol_Optical_Thickness_QA_Flag_Land', 'Aerosol_Optical_Thickness_QA_Flag_Ocean', 'Aerosol_Type_Land', 'Aerosol_Type_Land_Ocean', 'Aerosol_Type_Ocean', 'Algorithm_Flag_Land', 'Algorithm_Flag_Ocean', 'Angstrom_Exponent_Land', 'Angstrom_Exponent_Land_Best_Estimate', 'Angstrom_Exponent_Land_Ocean', 'Angstrom_Exponent_Land_Ocean_Best_Estimate', 'Angstrom_Exponent_Ocean', 'Angstrom_Exponent_Ocean_Best_Estimate', 'Cell_Average_Elevation_Land', 'Cell_Average_Elevation_Ocean', 'Fine_Mode_Fraction_550_Ocean', 'Fine_Mode_Fraction_550_Ocean_Best_Estimate', 'Number_Of_Pixels_Used_Land', 'Number_Of_Pixels_Used_Ocean', 'Number_Valid_Pixels', 'Ocean_Sum_Squares', 'Precipitable_Water', 'Relative_Azimuth_Angle', 'Scan_Start_Time', 'Scattering_Angle', 'Solar_Zenith_Angle', 'Spectral_Aerosol_Optical_Thickness_Land', 'Spectral_Aerosol_Optical_Thickness_Ocean', 'Spectral_Single_Scattering_Albedo_Land', 'Spectral_Surface_Reflectance', 'Spectral_TOA_Reflectance_Land', 'Spectral_TOA_Reflectance_Ocean', 'TOA_NDVI', 'Total_Column_Ozone', 'Unsuitable_Pixel_Fraction_Land_Ocean', 'Viewing_Zenith_Angle', 'Wind_Direction', 'Wind_Speed']",ok,,https -C2532426483-ORNL_CLOUD,Daymet_Daily_V4R1_2129,"Daymet: Daily Surface Weather Data on a 1-km Grid for North America, Version 4 R1",ORNL_CLOUD,1950-01-01T00:00:00.000Z,2024-12-31T23:59:59.999Z,-178.133,14.0749,-53.0567,82.9143,https://data.ornldaac.earthdata.nasa.gov/protected/daymet/Daymet_Daily_V4R1/data/daymet_v4_daily_pr_dayl_1950.nc,"['yearday', 'time_bnds', 'lambert_conformal_conic', 'dayl']",ok,,https -C2734202914-LPCLOUD,VNP14IMG,VIIRS/NPP Active Fires 6-Min L2 Swath 375m V002,LPCLOUD,2012-01-17T00:00:00.000Z,,-180.0,-90.0,180.0,90.0,https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/VNP14IMG.002/VNP14IMG.A2012019.0248.002.2024002130141/VNP14IMG.A2012019.0248.002.2024002130141.nc,"['FP_AdjCloud', 'FP_AdjWater', 'FP_MAD_DT', 'FP_MAD_T4', 'FP_MAD_T5', 'FP_MeanDT', 'FP_MeanRad13', 'FP_MeanT4', 'FP_MeanT5', 'FP_Rad13', 'FP_SolAzAng', 'FP_SolZenAng', 'FP_T4', 'FP_T5', 'FP_ViewAzAng', 'FP_ViewZenAng', 'FP_WinSize', 'FP_confidence', 'FP_day', 'FP_latitude', 'FP_line', 'FP_longitude', 'FP_power', 'FP_sample', 'algorithm QA', 'fire mask']",ok,,https -C2859248304-LAADS,XAERDT_L2_MODIS_Terra,MODIS/Terra Dark Target Aerosol 5-Min L2 Swath 10 km,LAADS,2019-01-01T00:00:00.000Z,2022-12-31T23:59:59.990Z,-180.0,-90.0,180.0,90.0,https://data.laadsdaac.earthdatacloud.nasa.gov/prod-lads/XAERDT_L2_MODIS_Terra/XAERDT_L2_MODIS_Terra.A2019001.0000.001.2023248114816.nc,[],ok,,https -C2001636718-LAADS,CLDCR_L2_VIIRS_SNPP,VIIRS/SNPP Cirrus Reflectance 6-min L2 Swath 750m,LAADS,2012-03-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0,https://data.laadsdaac.earthdatacloud.nasa.gov/prod-lads/CLDCR_L2_VIIRS_SNPP/CLDCR_L2_VIIRS_SNPP.A2012061.0036.001.2020339220108.nc,[],ok,,https -C1996881146-POCLOUD,MUR-JPL-L4-GLOB-v4.1,GHRSST Level 4 MUR Global Foundation Sea Surface Temperature Analysis (v4.1),POCLOUD,2002-05-31T21:00:00.000Z,,-180.0,-90.0,180.0,90.0,https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/MUR-JPL-L4-GLOB-v4.1/20020601090000-JPL-L4_GHRSST-SSTfnd-MUR-GLOB-v02.0-fv04.1.nc,"['analysed_sst', 'analysis_error', 'mask', 'sea_ice_fraction']",ok,,https -C2230035528-LAADS,FSNRAD_L2_VIIRS_CRIS_NOAA20,NOAA20 VIIRS+CrIS Fusion 6-Min L2 Swath 750 m,LAADS,2012-03-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0,https://data.laadsdaac.earthdatacloud.nasa.gov/prod-lads/FSNRAD_L2_VIIRS_CRIS_NOAA20/FSNRAD_L2_VIIRS_CRIS_NOAA20.A2018048.0012.002.2021357051744.nc,[],ok,,https -C3380709133-OB_CLOUD,MODISA_L3m_CHL,"Aqua MODIS Level-3 Global Mapped Chlorophyll (CHL) Data, version 2022.0",OB_CLOUD,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0,https://obdaac-tea.earthdatacloud.nasa.gov/ob-cumulus-prod-public/AQUA_MODIS.20020704_20250228.L3m.CU.CHL.chlor_a.9km.nc,"['chlor_a', 'palette']",ok,,https -C2930763263-LARC_CLOUD,TEMPO_NO2_L3,TEMPO gridded NO2 tropospheric and stratospheric columns V03 (PROVISIONAL),LARC_CLOUD,2023-08-01T00:00:00.000Z,,-170.0,10.0,-10.0,80.0,https://data.asdc.earthdata.nasa.gov/asdc-prod-protected/TEMPO/TEMPO_NO2_L3_V03/2023.08.02/TEMPO_NO2_L3_V03_20230802T151249Z_S001.nc,['weight'],ok,,https -C2075141605-POCLOUD,ASCATB-L2-Coastal,MetOp-B ASCAT Level 2 Ocean Surface Wind Vectors Optimized for Coastal Ocean,POCLOUD,2012-10-29T01:03:01.000Z,,-180.0,-89.6,180.0,89.6,https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/ASCATB-L2-Coastal/ascat_20121029_010301_metopb_00588_eps_o_coa_2101_ovw.l2.nc,"['time', 'wvc_index', 'model_speed', 'model_dir', 'ice_prob', 'ice_age', 'wvc_quality_flag', 'wind_speed', 'wind_dir', 'bs_distance']",ok,,https -C2075141684-POCLOUD,ASCATC-L2-Coastal,MetOp-C ASCAT Level 2 Ocean Surface Wind Vectors Optimized for Coastal Ocean,POCLOUD,2019-10-22T16:42:00.000Z,,-180.0,-89.6,180.0,89.6,https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/ASCATC-L2-Coastal/ascat_20191022_164200_metopc_04968_eps_o_coa_3203_ovw.l2.nc,"['time', 'wvc_index', 'model_speed', 'model_dir', 'ice_prob', 'ice_age', 'wvc_quality_flag', 'wind_speed', 'wind_dir', 'bs_distance']",ok,,https -C2832195379-POCLOUD,CYGNSS_L1_V3.2,CYGNSS Level 1 Science Data Record Version 3.2,POCLOUD,2018-08-01T00:00:00.000Z,,-180.0,-40.0,180.0,40.0,https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/CYGNSS_L1_V3.2/cyg02.ddmi.s20180801-000000-e20180801-235959.l1.power-brcs.a32.d33.nc,"['spacecraft_id', 'spacecraft_num', 'ddm_source', 'ddm_time_type_selector', 'delay_resolution', 'dopp_resolution', 'ddm_timestamp_gps_week', 'ddm_timestamp_gps_sec', 'pvt_timestamp_utc', 'pvt_timestamp_gps_week', 'pvt_timestamp_gps_sec', 'att_timestamp_utc', 'att_timestamp_gps_week', 'att_timestamp_gps_sec', 'sc_pos_x', 'sc_pos_y', 'sc_pos_z', 'sc_vel_x', 'sc_vel_y', 'sc_vel_z', 'sc_pos_x_pvt', 'sc_pos_y_pvt', 'sc_pos_z_pvt', 'sc_vel_x_pvt', 'sc_vel_y_pvt', 'sc_vel_z_pvt', 'nst_att_status', 'sc_roll', 'sc_pitch', 'sc_yaw', 'sc_roll_att', 'sc_pitch_att', 'sc_yaw_att', 'sc_lat', 'sc_lon', 'sc_alt', 'commanded_sc_roll', 'rx_clk_bias', 'rx_clk_bias_rate', 'rx_clk_bias_pvt', 'rx_clk_bias_rate_pvt', 'lna_temp_nadir_starboard', 'lna_temp_nadir_port', 'lna_temp_zenith', 'ddm_end_time_offset', 'bit_ratio_lo_hi_starboard', 'bit_ratio_lo_hi_port', 'bit_ratio_lo_hi_zenith', 'bit_null_offset_starboard', 'bit_null_offset_port', 'bit_null_offset_zenith', 'status_flags_one_hz', 'prn_code', 'sv_num', 'track_id', 'ddm_ant', 'zenith_code_phase', 'sp_ddmi_delay_correction', 'sp_ddmi_dopp_correction', 'add_range_to_sp', 'add_range_to_sp_pvt', 'sp_ddmi_dopp', 'sp_fsw_delay', 'sp_delay_error', 'sp_dopp_error', 'fsw_comp_delay_shift', 'fsw_comp_dopp_shift', 'prn_fig_of_merit', 'tx_clk_bias', 'sp_alt', 'sp_pos_x', 'sp_pos_y', 'sp_pos_z', 'sp_vel_x', 'sp_vel_y', 'sp_vel_z', 'sp_inc_angle', 'sp_theta_orbit', 'sp_az_orbit', 'sp_theta_body', 'sp_az_body', 'sp_rx_gain', 'gps_eirp', 'static_gps_eirp', 'gps_tx_power_db_w', 'gps_ant_gain_db_i', 'gps_off_boresight_angle_deg', 'ddm_snr', 'ddm_noise_floor', 'inst_gain', 'lna_noise_figure', 'rx_to_sp_range', 'tx_to_sp_range', 'tx_pos_x', 'tx_pos_y', 'tx_pos_z', 'tx_vel_x', 'tx_vel_y', 'tx_vel_z', 'bb_nearest', 'fresnel_coeff', 'ddm_nbrcs', 'ddm_nbrcs_scale_factor', 'ddm_les', 'nbrcs_scatter_area', 'les_scatter_area', 'brcs_ddm_peak_bin_delay_row', 'brcs_ddm_peak_bin_dopp_col', 'brcs_ddm_sp_bin_delay_row', 'brcs_ddm_sp_bin_dopp_col', 'ddm_brcs_uncert', 'comp_ddm_sp_delay_row', 'comp_ddm_sp_doppler_col', 'bb_power_temperature_density', 'ddm_nadir_signal_correction', 'ddm_nadir_bb_correction_prev', 'ddm_nadir_bb_correction_next', 'zenith_sig_i2q2', 'zenith_sig_i2q2_corrected', 'zenith_sig_i2q2_mult_correction', 'zenith_sig_i2q2_add_correction', 'starboard_gain_setting', 'port_gain_setting', 'ddm_kurtosis', 'reflectivity_peak', 'ddm_nbrcs_center', 'ddm_nbrcs_peak', 'coherency_state', 'coherency_ratio', 'quality_flags', 'quality_flags_2', 'raw_counts', 'power_analog', 'brcs', 'eff_scatter', 'modis_land_cover', 'srtm_dem_alt', 'srtm_slope', 'sp_land_valid', 'sp_land_confidence', 'ddmi_tracker_delay_center', 'rx_clk_doppler', 'pekel_sp_water_percentage', 'pekel_sp_water_flag', 'pekel_sp_water_percentage_2km', 'pekel_sp_water_flag_2km', 'pekel_sp_water_percentage_5km', 'pekel_sp_water_flag_5km', 'pekel_sp_water_percentage_10km', 'pekel_sp_water_flag_10km', 'pekel_sp_water_local_map_5km', 'sp_calc_method']",ok,,https -C2098858642-POCLOUD,OSCAR_L4_OC_FINAL_V2.0,Ocean Surface Current Analyses Real-time (OSCAR) Surface Currents - Final 0.25 Degree (Version 2.0),POCLOUD,1993-01-01T00:00:00.000Z,2022-08-05T00:00:00.000Z,-180.0,-89.75,180.0,89.75,https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/OSCAR_L4_OC_FINAL_V2.0/oscar_currents_final_19930101.nc,"['u', 'v', 'ug', 'vg']",ok,,https -C2545310883-LPCLOUD,VJ121,VIIRS/JPSS1 Land Surface Temperature and Emissivity 6-Min L2 Swath 750m V002,LPCLOUD,2018-01-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0,https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/VJ121.002/VJ121.A2018005.0000.002.2022252130735/VJ121.A2018005.0000.002.2022252130735.nc,[],ok,,https -C2859255251-LAADS,XAERDT_L2_AHI_H08,AHI/Himawari-08 Dark Target Aerosol 10-Min L2 Full Disk 10 km,LAADS,2019-01-01T00:00:00.000Z,2022-12-15T00:00:00.990Z,-180.0,-90.0,180.0,90.0,https://data.laadsdaac.earthdatacloud.nasa.gov/prod-lads/XAERDT_L2_AHI_H08/XAERDT_L2_AHI_H08.A2019001.0000.001.2023212184827.nc,[],ok,,https -C2439422590-LPCLOUD,ASTGTM_NC,ASTER Global Digital Elevation Model NetCDF V003,LPCLOUD,2000-03-01T00:00:00.000Z,2013-11-30T23:59:59.999Z,-180.0,-83.0,180.0,82.0,https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/ASTGTM_NC.003/ASTGTMV003_N00E027_dem.nc,"['ASTER_GDEM_DEM', 'crs']",ok,,https -C3380708980-OB_CLOUD,MODISA_L2_OC,"Aqua MODIS Level-2 Regional Ocean Color (OC) Data, version 2022.0",OB_CLOUD,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0,https://obdaac-tea.earthdatacloud.nasa.gov/ob-cumulus-prod-public/AQUA_MODIS.20020704T004000.L2.OC.nc,[],ok,,https -C2147478146-POCLOUD,VIIRS_N20-STAR-L2P-v2.80,GHRSST Level 2P NOAA STAR SST v2.80 from VIIRS on NOAA-20 Satellite,POCLOUD,2018-01-05T00:00:00.000Z,,-180.0,-90.0,180.0,90.0,https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/VIIRS_N20-STAR-L2P-v2.80/20180105000000-STAR-L2P_GHRSST-SSTsubskin-VIIRS_N20-ACSPO_V2.80-v02.0-fv01.0.nc,"['sst_dtime', 'dt_analysis', 'satellite_zenith_angle', 'sea_surface_temperature', 'sses_bias', 'sses_standard_deviation', 'sea_ice_fraction', 'l2p_flags', 'quality_level', 'wind_speed', 'sst_gradient_magnitude', 'sst_front_position']",ok,,https -C2408034484-LPCLOUD,EMITL2BMIN,EMIT L2B Estimated Mineral Identification and Band Depth and Uncertainty 60 m V001,LPCLOUD,2022-08-09T00:00:00.000Z,,-180.0,-54.0,180.0,54.0,https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/EMITL2BMIN.001/EMIT_L2B_MIN_001_20220810T034103_2222203_001/EMIT_L2B_MIN_001_20220810T034103_2222203_001.nc,"['group_1_band_depth', 'group_1_mineral_id', 'group_2_band_depth', 'group_2_mineral_id']",ok,,https -C1940475563-POCLOUD,MODIS_T-JPL-L2P-v2019.0,GHRSST Level 2P Global Sea Surface Skin Temperature from the Moderate Resolution Imaging Spectroradiometer (MODIS) on the NASA Terra satellite (GDS2),POCLOUD,2000-02-24T00:00:00.000Z,,-180.0,-90.0,180.0,90.0,https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/MODIS_T-JPL-L2P-v2019.0/20000224000006-JPL-L2P_GHRSST-SSTskin-MODIS_T-N-v02.0-fv01.0.nc,"['sea_surface_temperature', 'sst_dtime', 'quality_level', 'sses_bias', 'sses_standard_deviation', 'l2p_flags', 'sea_surface_temperature_4um', 'quality_level_4um', 'sses_bias_4um', 'sses_standard_deviation_4um', 'wind_speed', 'dt_analysis']",ok,,https -C2102958977-POCLOUD,OSCAR_L4_OC_NRT_V2.0,Ocean Surface Current Analyses Real-time (OSCAR) Surface Currents - Near Real Time 0.25 Degree (Version 2.0),POCLOUD,2021-01-01T00:00:00.000Z,,-180.0,-89.75,180.0,89.75,https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/OSCAR_L4_OC_NRT_V2.0/oscar_currents_nrt_20210101.nc,"['u', 'v', 'ug', 'vg']",ok,,https -C2545310869-LPCLOUD,VJ114,VIIRS/JPSS1 Thermal Anomalies/Fire 6-Min L2 Swath 750m V002,LPCLOUD,2018-01-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0,https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/VJ114.002/VJ114.A2018005.0000.002.2022252033022/VJ114.A2018005.0000.002.2022252033022.nc,"['CMG_night', 'FP_AdjCloud', 'FP_AdjWater', 'FP_CMG_col', 'FP_CMG_row', 'FP_MAD_DT', 'FP_MAD_R7', 'FP_MAD_T13', 'FP_MAD_T15', 'FP_MeanDT', 'FP_MeanR7', 'FP_MeanT13', 'FP_MeanT15', 'FP_NumValid', 'FP_R7', 'FP_RelAzAng', 'FP_SolZenAng', 'FP_T13', 'FP_T15', 'FP_ViewZenAng', 'FP_WinSize', 'FP_confidence', 'FP_land', 'FP_latitude', 'FP_line', 'FP_longitude', 'FP_power', 'FP_sample', 'algorithm QA', 'fire mask', 'qhist07', 'qhist11', 'qhist13', 'qhist15', 'qhist16']",ok,,https -C2734197957-LPCLOUD,VJ114IMG,VIIRS/JPSS1 Active Fires 6-Min L2 Swath 375m V002,LPCLOUD,2018-01-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0,https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/VJ114IMG.002/VJ114IMG.A2018015.1006.002.2024003093337/VJ114IMG.A2018015.1006.002.2024003093337.nc,"['FP_AdjCloud', 'FP_AdjWater', 'FP_MAD_DT', 'FP_MAD_T4', 'FP_MAD_T5', 'FP_MeanDT', 'FP_MeanRad13', 'FP_MeanT4', 'FP_MeanT5', 'FP_Rad13', 'FP_SolAzAng', 'FP_SolZenAng', 'FP_T4', 'FP_T5', 'FP_ViewAzAng', 'FP_ViewZenAng', 'FP_WinSize', 'FP_confidence', 'FP_day', 'FP_latitude', 'FP_line', 'FP_longitude', 'FP_power', 'FP_sample', 'algorithm QA', 'fire mask']",ok,,https -C2545314550-LPCLOUD,VNP21,VIIRS/NPP Land Surface Temperature and Emissivity 6-Min L2 Swath 750m V002,LPCLOUD,2012-01-17T00:00:00.000Z,,-180.0,-90.0,180.0,90.0,https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/VNP21.002/VNP21.A2012019.0000.002.2023123113154/VNP21.A2012019.0000.002.2023123113154.nc,[],ok,,https -C2859265967-LAADS,XAERDT_L2_ABI_G17,ABI/GOES-17 Dark Target Aerosol 10-Min L2 Full Disk 10 km,LAADS,2019-01-01T00:00:00.000Z,2023-01-02T00:00:00.000Z,-180.0,-90.0,180.0,90.0,https://data.laadsdaac.earthdatacloud.nasa.gov/prod-lads/XAERDT_L2_ABI_G17/XAERDT_L2_ABI_G17.A2019001.0000.001.2023342093143.nc,[],ok,,https -C2205121394-POCLOUD,AVHRRF_MB-STAR-L2P-v2.80,GHRSST NOAA/STAR Metop-B AVHRR FRAC ACSPO v2.80 1km L2P Dataset (GDS v2),POCLOUD,2012-10-19T00:00:00.000Z,,-180.0,-90.0,180.0,90.0,https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/AVHRRF_MB-STAR-L2P-v2.80/2012/293/20121019000000-STAR-L2P_GHRSST-SSTsubskin-AVHRRF_MB-ACSPO_V2.80-v02.0-fv01.0.nc,"['sst_dtime', 'dt_analysis', 'satellite_zenith_angle', 'sea_surface_temperature', 'sses_bias', 'sses_standard_deviation', 'sea_ice_fraction', 'l2p_flags', 'quality_level', 'wind_speed', 'sst_gradient_magnitude', 'sst_front_position']",ok,,https -C2205121400-POCLOUD,AVHRRF_MC-STAR-L2P-v2.80,GHRSST NOAA/STAR Metop-C AVHRR FRAC ACSPO v2.80 1km L2P Dataset (GDS v2),POCLOUD,2018-12-04T00:00:00.000Z,,-180.0,-90.0,180.0,90.0,https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/AVHRRF_MC-STAR-L2P-v2.80/2018/338/20181204000000-STAR-L2P_GHRSST-SSTsubskin-AVHRRF_MC-ACSPO_V2.80-v02.0-fv01.0.nc,"['sst_dtime', 'dt_analysis', 'satellite_zenith_angle', 'sea_surface_temperature', 'sses_bias', 'sses_standard_deviation', 'sea_ice_fraction', 'l2p_flags', 'quality_level', 'wind_speed', 'sst_gradient_magnitude', 'sst_front_position']",ok,,https -C3206162112-LAADS,CLDMSK_L2_VIIRS_NOAA21,VIIRS/NOAA21 Cloud Mask and Spectral Test Results 6-Min L2 Swath 750m,LAADS,2023-02-10T00:00:00.000Z,,-180.0,-90.0,180.0,90.0,https://data.laadsdaac.earthdatacloud.nasa.gov/prod-lads/CLDMSK_L2_VIIRS_NOAA21/CLDMSK_L2_VIIRS_NOAA21.A2023041.0000.001.2024130182907.nc,[],ok,,https -C2763264764-LPCLOUD,NASADEM_NC,NASADEM Merged DEM Global 1 arc second nc V001,LPCLOUD,2000-02-11T00:00:00.000Z,2000-02-21T23:59:59.000Z,-180.0,-56.0,180.0,60.0,https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/NASADEM_NC.001/NASADEM_NC_s10e046/NASADEM_NC_s10e046.nc,"['NASADEM_HGT', 'crs']",ok,,https -C3177838875-NSIDC_CPRD,NSIDC-0081,Near-Real-Time DMSP SSMIS Daily Polar Gridded Sea Ice Concentrations V002,NSIDC_CPRD,2023-01-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0,https://data.nsidc.earthdatacloud.nasa.gov/nsidc-cumulus-prod-public/PM/NSIDC-0081/2/2023/01/01/NSIDC0081_SEAICE_PS_N25km_20230101_v2.0_F16.png,[],open_failed,b'\x89PNG\r\n\x1a\n' is not the signature of a valid netCDF4 file,https -C3294057315-ASF,OPERA_L3_DISP-S1_V1,OPERA Surface Displacement from Sentinel-1 validated product (Version 1),ASF,2016-07-01T00:00:00.000Z,,-180.0,-15.289224,180.0,72.785503,https://datapool.asf.alaska.edu/DISP/OPERA-S1/OPERA_L3_DISP-S1_IW_F40286_VV_20160701T005555Z_20160818T005558Z_v1.0_20250724T212204Z.nc,[],open_failed,https://datapool.asf.alaska.edu/DISP/OPERA-S1/OPERA_L3_DISP-S1_IW_F40286_VV_20160701T005555Z_20160818T005558Z_v1.0_20250724T212204Z.nc,https -C3385049983-OB_CLOUD,PACE_OCI_L2_AOP,"PACE OCI Level-2 Regional Apparent Optical Properties Data, version 3.0",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0,https://obdaac-tea.earthdatacloud.nasa.gov/ob-cumulus-prod-public/PACE_OCI.20240513T155533.L2.OC_AOP.V3_0.nc,[],ok,,https -C2799438271-POCLOUD,SWOT_L2_HR_Raster_2.0,"SWOT Level 2 Water Mask Raster Image Data Product, Version C",POCLOUD,2022-12-16T00:00:00.000Z,,-180.0,-90.0,180.0,90.0,https://archive.swot.podaac.earthdata.nasa.gov/podaac-swot-ops-cumulus-protected/SWOT_L2_HR_Raster_2.0/SWOT_L2_HR_Raster_100m_UTM10T_N_x_x_x_474_013_114F_20230329T085242_20230329T085303_PGC0_01.nc,"['crs', 'longitude', 'latitude', 'wse', 'wse_qual', 'wse_qual_bitwise', 'wse_uncert', 'water_area', 'water_area_qual', 'water_area_qual_bitwise', 'water_area_uncert', 'water_frac', 'water_frac_uncert', 'sig0', 'sig0_qual', 'sig0_qual_bitwise', 'sig0_uncert', 'inc', 'cross_track', 'illumination_time', 'illumination_time_tai', 'n_wse_pix', 'n_water_area_pix', 'n_sig0_pix', 'n_other_pix', 'dark_frac', 'ice_clim_flag', 'ice_dyn_flag', 'layover_impact', 'sig0_cor_atmos_model', 'height_cor_xover', 'geoid', 'solid_earth_tide', 'load_tide_fes', 'load_tide_got', 'pole_tide', 'model_dry_tropo_cor', 'model_wet_tropo_cor', 'iono_cor_gim_ka']",ok,,https -C2930761273-LARC_CLOUD,TEMPO_HCHO_L3,TEMPO gridded formaldehyde total column V03 (PROVISIONAL),LARC_CLOUD,2023-08-01T00:00:00.000Z,,-170.0,10.0,-10.0,80.0,https://data.asdc.earthdata.nasa.gov/asdc-prod-protected/TEMPO/TEMPO_HCHO_L3_V03/2023.08.02/TEMPO_HCHO_L3_V03_20230802T151249Z_S001.nc,['weight'],ok,,https -C2859238768-LAADS,XAERDT_L2_MODIS_Aqua,MODIS/Aqua Dark Target Aerosol 5-Min L2 Swath 10 km,LAADS,2019-01-01T00:00:00.000Z,2023-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0,https://data.laadsdaac.earthdatacloud.nasa.gov/prod-lads/XAERDT_L2_MODIS_Aqua/XAERDT_L2_MODIS_Aqua.A2019001.0025.001.2023248114901.nc,[],ok,,https -C2439429778-LPCLOUD,ASTGTM_NUMNC,ASTER Global Digital Elevation Model Attributes NetCDF V003,LPCLOUD,2000-03-01T00:00:00.000Z,2013-11-30T23:59:59.999Z,-180.0,-83.0,180.0,82.0,https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/ASTGTM_NUMNC.003/ASTGTMV003_N00E010_num.nc,"['ASTER_GDEM_NUM', 'crs']",ok,,https -C2916514952-POCLOUD,CCMP_WINDS_10M6HR_L4_V3.1,RSS CCMP 6-Hourly 10 Meter Surface Winds Level 4 Version 3.1,POCLOUD,1993-01-01T00:00:00.000Z,,-180.0,-80.0,180.0,80.0,https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/CCMP_WINDS_10M6HR_L4_V3.1/CCMP_Wind_Analysis_19930102_V03.1_L4.nc,"['uwnd', 'vwnd', 'ws', 'nobs']",ok,,https -C2254232941-POCLOUD,CYGNSS_NOAA_L2_SWSP_25KM_V1.2,NOAA CYGNSS Level 2 Science Wind Speed 25-km Product Version 1.2,POCLOUD,2017-05-01T00:00:02.000Z,,-180.0,-40.0,180.0,40.0,https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/CYGNSS_NOAA_L2_SWSP_25KM_V1.2/cyg.ddmi.s20170501-000002-e20170501-235959.l2.wind_trackgridsize25km_NOAAv1.2_L1a21.d21.nc,"['spacecraft_num', 'prn_code', 'sv_num', 'antenna', 'sc_lat', 'sc_lon', 'incidence_angle', 'track_id', 'rx_gain', 'snr', 'range_corr_gain', 'sample_flags', 'num_ddms_utilized', 'ddm_sample_index', 'ddm_channel', 'nbrcs_mean', 'nbrcs_mean_corrected', 'wind_speed', 'wind_speed_uncertainty', 'azimuth_angle', 'sc_roll', 'sc_pitch', 'sc_yaw', 'sc_alt']",ok,,https -C2759076389-ORNL_CLOUD,Global_Veg_Greenness_GIMMS_3G_2187,"Global Vegetation Greenness (NDVI) from AVHRR GIMMS-3G+, 1981-2022",ORNL_CLOUD,1982-01-01T00:00:00.000Z,2022-12-31T23:59:59.999Z,-180.0,-90.0,180.0,90.0,https://data.ornldaac.earthdata.nasa.gov/protected/global_vegetation/Global_Veg_Greenness_GIMMS_3G/data/ndvi3g_geo_v1_1_1982_0106.nc4,"['crs', 'time_bnds', 'satellites', 'ndvi', 'percentile']",ok,,https -C2754895884-POCLOUD,N21-VIIRS-L2P-ACSPO-v2.80,GHRSST Level 2P NOAA ACSPO SST v2.80 from VIIRS on NOAA-21 Satellite,POCLOUD,2023-03-19T00:00:00.000Z,,-180.0,-90.0,180.0,90.0,https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/N21-VIIRS-L2P-ACSPO-v2.80/20230319000000-STAR-L2P_GHRSST-SSTsubskin-VIIRS_N21-ACSPO_V2.80-v02.0-fv01.0.nc,"['sst_dtime', 'dt_analysis', 'satellite_zenith_angle', 'sea_surface_temperature', 'sses_bias', 'sses_standard_deviation', 'sea_ice_fraction', 'l2p_flags', 'quality_level', 'wind_speed', 'sst_gradient_magnitude', 'sst_front_position']",ok,,https -C2586786218-POCLOUD,OSTIA-UKMO-L4-GLOB-REP-v2.0,GHRSST Level 4 OSTIA Global Historical Reprocessed Foundation Sea Surface Temperature Analysis produced by the UK Meteorological Office,POCLOUD,1982-01-01T00:00:00.000Z,2024-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0,https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/OSTIA-UKMO-L4-GLOB-REP-v2.0/1982/001/19820101120000-UKMO-L4_GHRSST-SSTfnd-OSTIA-GLOB_REP-v02.0-fv02.0.nc,"['analysed_sst', 'analysis_error', 'sea_ice_fraction', 'mask']",ok,,https -C3555842028-OB_CLOUD,PACE_HARP2_L1C_SCI,"PACE HARP2 Level-1C Science Data, version 3",OB_CLOUD,2024-02-22T00:00:00Z,,-180.0,-90.0,180.0,90.0,https://obdaac-tea.earthdatacloud.nasa.gov/ob-cumulus-prod-public/PACE_HARP2.20240223T205922.L1C.V3.5km.nc,[],ok,,https -C3392966952-OB_CLOUD,PACE_OCI_L1B_SCI,"PACE OCI Level-1B Science Data, version 3",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0,https://obdaac-tea.earthdatacloud.nasa.gov/ob-cumulus-prod-public/PACE_OCI.20240305T000858.L1B.V3.nc,[],ok,,https -C3385050059-OB_CLOUD,PACE_OCI_L2_SFREFL,"PACE OCI Level-2 Regional Surface Reflectance Data, version 3.0",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0,https://obdaac-tea.earthdatacloud.nasa.gov/ob-cumulus-prod-public/PACE_OCI.20240513T155033.L2.SFREFL.V3_0.nc,[],ok,,https -C3261923228-LPCLOUD,SRTMGL1_NC,NASA Shuttle Radar Topography Mission Global 1 arc second NetCDF V003,LPCLOUD,2000-02-11T00:00:00.000Z,2000-02-21T23:59:59.000Z,-180.0,-56.0,180.0,60.0,https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/SRTMGL1_NC.003/N59E037.SRTMGL1_NC/N59E037.SRTMGL1_NC.nc,"['SRTMGL1_DEM', 'crs']",ok,,https -C2147480877-POCLOUD,VIIRS_NPP-STAR-L2P-v2.80,GHRSST Level 2P NOAA STAR SST v2.80 from VIIRS on S-NPP Satellite,POCLOUD,2012-02-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0,https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/VIIRS_NPP-STAR-L2P-v2.80/20120201000000-STAR-L2P_GHRSST-SSTsubskin-VIIRS_NPP-ACSPO_V2.80-v02.0-fv01.0.nc,"['sst_dtime', 'dt_analysis', 'satellite_zenith_angle', 'sea_surface_temperature', 'sses_bias', 'sses_standard_deviation', 'sea_ice_fraction', 'l2p_flags', 'quality_level', 'wind_speed', 'sst_gradient_magnitude', 'sst_front_position']",ok,,https -C3365180216-LPCLOUD,VJ147IMG,VIIRS/JPSS1 FILDA-2 Fire Modified Combustion Efficiency Product 6-min L2 Swath 375 V002,LPCLOUD,2018-01-05T00:00:00.000Z,,-180.0,-90.0,180.0,90.0,https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/VJ147IMG.002/VJ147IMG.A2018005.0000.002.2024268173659/VJ147IMG.A2018005.0000.002.2024268173659.nc,"['DNB_observations', 'FP_MCE', 'FP_VEF', 'FP_Status', 'FP_Num_Fire', 'FP_I04_Mean', 'FP_I05_Mean', 'FP_BTD_Mean', 'FP_WinSize', 'FP_M13_Rad', 'FP_M13_Rad_Mean', 'FP_M13_Rad_MAD', 'FP_M13_Rad_Num', 'FP_M13_WinSize', 'FP_Power_QA', 'FP_M07_Rad', 'FP_M07_Rad_Mean', 'FP_M07_Rad_Num', 'FP_M08_Rad', 'FP_M08_Rad_Mean', 'FP_M08_Rad_Num', 'FP_M10_Rad', 'FP_M10_Rad_Mean', 'FP_M10_Rad_Num', 'FP_M11_Rad', 'FP_M11_Rad_Mean', 'FP_M11_Rad_Num', 'FP_M12_Rad', 'FP_M12_Rad_Mean', 'FP_M12_Rad_Num', 'FP_M14_Rad', 'FP_M14_Rad_Mean', 'FP_M14_Rad_Num', 'FP_M15_Rad', 'FP_M15_Rad_Mean', 'FP_M15_Rad_Num', 'FP_M16_Rad', 'FP_M16_Rad_Mean', 'FP_M16_Rad_Num', 'FP_I04_Rad', 'FP_I04_Rad_Mean', 'FP_I04_Rad_Num', 'FP_I05_Rad', 'FP_I05_Rad_Mean', 'FP_I05_Rad_Num', 'FP_BG_Temp', 'FP_Fire_Temp', 'FP_Fire_Frac', 'FP_Opt_Status', 'FP_DNB_POS', 'FP_Power', 'FP_VE', 'FP_Area', 'FP_Line', 'FP_Sample', 'FP_Latitude', 'FP_Longitude', 'FP_IMG_BTD', 'FP_I04_BT', 'FP_I05_BT', 'FP_CM', 'FP_I04_MAD', 'FP_I05_MAD', 'FP_BTD_MAD', 'FP_Bowtie', 'FP_SAA_flag', 'Sensor_Zenith', 'Sensor_Azimuth', 'Fire_mask', 'Algorithm_QA', 'FP_confidence', 'Solar_Zenith', 'FP_Land_Type', 'FP_Gas_Flaring', 'FP_Peatland', 'FP_Peatfrac', 'FP_AdjWater', 'FP_AdjCloud']",ok,,https -C3365168551-LPCLOUD,VJ147MOD,VIIRS/JPSS1 FILDA-2 Fire Modified Combustion Efficiency Product 6-min L2 Swath 750m V002,LPCLOUD,2018-01-05T00:00:00.000Z,,-180.0,-90.0,180.0,90.0,https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/VJ147MOD.002/VJ147MOD.A2018005.0000.002.2024268173659/VJ147MOD.A2018005.0000.002.2024268173659.nc,"['DNB_observations', 'FP_MCE', 'FP_VEF', 'FP_Status', 'FP_Num_Fire', 'FP_I04_Mean', 'FP_I05_Mean', 'FP_BTD_Mean', 'FP_WinSize', 'FP_M13_Rad', 'FP_M13_Rad_Mean', 'FP_M13_Rad_MAD', 'FP_M13_Rad_Num', 'FP_M13_WinSize', 'FP_Power_QA', 'FP_M07_Rad', 'FP_M07_Rad_Mean', 'FP_M07_Rad_Num', 'FP_M08_Rad', 'FP_M08_Rad_Mean', 'FP_M08_Rad_Num', 'FP_M10_Rad', 'FP_M10_Rad_Mean', 'FP_M10_Rad_Num', 'FP_M11_Rad', 'FP_M11_Rad_Mean', 'FP_M11_Rad_Num', 'FP_M12_Rad', 'FP_M12_Rad_Mean', 'FP_M12_Rad_Num', 'FP_M14_Rad', 'FP_M14_Rad_Mean', 'FP_M14_Rad_Num', 'FP_M15_Rad', 'FP_M15_Rad_Mean', 'FP_M15_Rad_Num', 'FP_M16_Rad', 'FP_M16_Rad_Mean', 'FP_M16_Rad_Num', 'FP_I04_Rad', 'FP_I04_Rad_Mean', 'FP_I04_Rad_Num', 'FP_I05_Rad', 'FP_I05_Rad_Mean', 'FP_I05_Rad_Num', 'FP_BG_Temp', 'FP_Fire_Temp', 'FP_Fire_Frac', 'FP_Opt_Status', 'FP_DNB_POS', 'FP_Power', 'FP_VE', 'FP_Area', 'FP_Line', 'FP_Sample', 'FP_Latitude', 'FP_Longitude', 'FP_CM', 'FP_Bowtie', 'Solar_Zenith', 'Fire_mask', 'FP_confidence', 'Algorithm_QA', 'FP_Land_Type', 'FP_Gas_Flaring', 'FP_Peatland', 'FP_Peatfrac', 'FP_AdjWater', 'FP_AdjCloud', 'FP_SAA_flag', 'FP_T04_1', 'FP_T04_2', 'FP_T04_3', 'FP_T04_4', 'FP_T05_1', 'FP_T05_2', 'FP_T05_3', 'FP_T05_4', 'Sensor_Zenith', 'Sensor_Azimuth']",ok,,https -C2545314536-LPCLOUD,VNP14,VIIRS/NPP Thermal Anomalies/Fire 6-Min L2 Swath 750m V002,LPCLOUD,2012-01-17T00:00:00.000Z,,-180.0,-90.0,180.0,90.0,https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/VNP14.002/VNP14.A2012019.0000.002.2023121191601/VNP14.A2012019.0000.002.2023121191601.nc,"['CMG_night', 'FP_AdjCloud', 'FP_AdjWater', 'FP_CMG_col', 'FP_CMG_row', 'FP_MAD_DT', 'FP_MAD_R7', 'FP_MAD_T13', 'FP_MAD_T15', 'FP_MeanDT', 'FP_MeanR7', 'FP_MeanT13', 'FP_MeanT15', 'FP_NumValid', 'FP_R7', 'FP_RelAzAng', 'FP_SolZenAng', 'FP_T13', 'FP_T15', 'FP_ViewZenAng', 'FP_WinSize', 'FP_confidence', 'FP_land', 'FP_latitude', 'FP_line', 'FP_longitude', 'FP_power', 'FP_sample', 'algorithm QA', 'fire mask', 'qhist07', 'qhist11', 'qhist13', 'qhist15', 'qhist16']",ok,,https -C3365190240-LPCLOUD,VNP47IMG,VIIRS/NPP FILDA-2 Fire Modified Combustion Efficiency Product 6-min L2 Swath 375 V002,LPCLOUD,2012-01-19T00:00:00.000Z,,-180.0,-90.0,180.0,90.0,https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/VNP47IMG.002/VNP47IMG.A2012019.0000.002.2024264151118/VNP47IMG.A2012019.0000.002.2024264151118.nc,"['DNB_observations', 'FP_MCE', 'FP_VEF', 'FP_Status', 'FP_Num_Fire', 'FP_I04_Mean', 'FP_I05_Mean', 'FP_BTD_Mean', 'FP_WinSize', 'FP_M13_Rad', 'FP_M13_Rad_Mean', 'FP_M13_Rad_MAD', 'FP_M13_Rad_Num', 'FP_M13_WinSize', 'FP_Power_QA', 'FP_M07_Rad', 'FP_M07_Rad_Mean', 'FP_M07_Rad_Num', 'FP_M08_Rad', 'FP_M08_Rad_Mean', 'FP_M08_Rad_Num', 'FP_M10_Rad', 'FP_M10_Rad_Mean', 'FP_M10_Rad_Num', 'FP_M11_Rad', 'FP_M11_Rad_Mean', 'FP_M11_Rad_Num', 'FP_M12_Rad', 'FP_M12_Rad_Mean', 'FP_M12_Rad_Num', 'FP_M14_Rad', 'FP_M14_Rad_Mean', 'FP_M14_Rad_Num', 'FP_M15_Rad', 'FP_M15_Rad_Mean', 'FP_M15_Rad_Num', 'FP_M16_Rad', 'FP_M16_Rad_Mean', 'FP_M16_Rad_Num', 'FP_I04_Rad', 'FP_I04_Rad_Mean', 'FP_I04_Rad_Num', 'FP_I05_Rad', 'FP_I05_Rad_Mean', 'FP_I05_Rad_Num', 'FP_BG_Temp', 'FP_Fire_Temp', 'FP_Fire_Frac', 'FP_Opt_Status', 'FP_DNB_POS', 'FP_Power', 'FP_VE', 'FP_Area', 'FP_Line', 'FP_Sample', 'FP_Latitude', 'FP_Longitude', 'FP_IMG_BTD', 'FP_I04_BT', 'FP_I05_BT', 'FP_CM', 'FP_I04_MAD', 'FP_I05_MAD', 'FP_BTD_MAD', 'FP_Bowtie', 'FP_SAA_flag', 'Sensor_Zenith', 'Sensor_Azimuth', 'Fire_mask', 'Algorithm_QA', 'FP_confidence', 'Solar_Zenith', 'FP_Land_Type', 'FP_Gas_Flaring', 'FP_Peatland', 'FP_Peatfrac', 'FP_AdjWater', 'FP_AdjCloud']",ok,,https -C2859273114-LAADS,XAERDT_L2_ABI_G16,ABI/GOES-16 Dark Target Aerosol 10-Min L2 Full Disk 10 km,LAADS,2019-01-01T00:00:00.000Z,2023-01-02T00:00:00.000Z,-180.0,-90.0,180.0,90.0,https://data.laadsdaac.earthdatacloud.nasa.gov/prod-lads/XAERDT_L2_ABI_G16/XAERDT_L2_ABI_G16.A2019001.0000.001.2023248092315.nc,[],ok,,https -C2859228520-LAADS,XAERDT_L2_VIIRS_NOAA20,VIIRS/NOAA20 Dark Target Aerosol L2 6-Min Swath 6 km,LAADS,2019-01-01T00:00:00.000Z,2023-05-28T00:00:00.000Z,-180.0,-90.0,180.0,90.0,https://data.laadsdaac.earthdatacloud.nasa.gov/prod-lads/XAERDT_L2_VIIRS_NOAA20/XAERDT_L2_VIIRS_NOAA20.A2019001.0000.001.2023151200739.nc,[],ok,,https -C2859232902-LAADS,XAERDT_L2_VIIRS_SNPP,VIIRS/SNPP Dark Target Aerosol L2 6-Min Swath 6km,LAADS,2019-01-01T00:00:00.000Z,2023-05-28T00:00:00.000Z,-180.0,-90.0,180.0,90.0,https://data.laadsdaac.earthdatacloud.nasa.gov/prod-lads/XAERDT_L2_VIIRS_SNPP/XAERDT_L2_VIIRS_SNPP.A2019001.0012.001.2023150212003.nc,[],ok,,https -C2927907727-POCLOUD,CYGNSS_L2_SURFACE_FLUX_V3.2,CYGNSS Level 2 Ocean Surface Heat Flux Science Data Record Version 3.2,POCLOUD,2018-08-01T00:00:00.000Z,,-180.0,-39.8,180.0,39.8,https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/CYGNSS_L2_SURFACE_FLUX_V3.2/cyg.ddmi.s20180801-000000-e20180801-235959.l2.surface-flux.a32.d33.nc,[],open_failed,Failed to decode variable 'solar_time': unable to decode time units 'seconds since 00:00:00' with 'the default calendar'. Try opening your dataset with decode_times=False or installing cftime if it is not installed.,https -C2731035022-POCLOUD,G18-ABI-L2P-ACSPO-v2.90,GHRSST L2P NOAA/ACSPO GOES-18/ABI West America Region Sea Surface Temperature v2.90 dataset,POCLOUD,2022-06-07T00:00:00.000Z,,163.0,-60.0,-77.0,60.0,https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/G18-ABI-L2P-ACSPO-v2.90/20220607020000-STAR-L2P_GHRSST-SSTsubskin-ABI_G18-ACSPO_V2.90-v02.0-fv01.0.nc,"['sst_dtime', 'satellite_zenith_angle', 'sea_surface_temperature', 'brightness_temperature_08um6', 'brightness_temperature_10um4', 'brightness_temperature_11um2', 'brightness_temperature_12um3', 'sses_bias', 'sses_standard_deviation', 'dt_analysis', 'wind_speed', 'l2p_flags', 'quality_level', 'geostationary', 'sst_gradient_magnitude', 'sst_front_position']",ok,,https -C3380708978-OB_CLOUD,MODISA_L2_OC_NRT,"Aqua MODIS Level-2 Regional Ocean Color (OC) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0,https://obdaac-tea.earthdatacloud.nasa.gov/ob-cumulus-prod-public/AQUA_MODIS.20250330T012001.L2.OC.NRT.nc,[],ok,,https -C2036880657-POCLOUD,MUR25-JPL-L4-GLOB-v04.2,GHRSST Level 4 MUR 0.25deg Global Foundation Sea Surface Temperature Analysis (v4.2),POCLOUD,2002-08-31T21:00:00.000Z,,-180.0,-90.0,180.0,90.0,https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/MUR25-JPL-L4-GLOB-v04.2/20020901090000-JPL-L4_GHRSST-SSTfnd-MUR25-GLOB-v02.0-fv04.2.nc,"['analysed_sst', 'analysis_error', 'mask', 'sea_ice_fraction', 'sst_anomaly']",ok,,https -C2763264768-LPCLOUD,NASADEM_NUMNC,NASADEM Merged DEM Source Global 1 arc second nc V001,LPCLOUD,2000-02-11T00:00:00.000Z,2000-02-21T23:59:59.000Z,-180.0,-56.0,180.0,60.0,https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/NASADEM_NUMNC.001/NASADEM_NUMNC_n46e130/NASADEM_NUMNC_n46e130.nc,"['NASADEM_NUM', 'crs']",ok,,https -C2399557265-NSIDC_ECS,NSIDC-0051,Sea Ice Concentrations from Nimbus-7 SMMR and DMSP SSM/I-SSMIS Passive Microwave Data V002,NSIDC_ECS,1978-10-26T00:00:00.000Z,,-180.0,-90.0,180.0,90.0,https://n5eil01u.ecs.nsidc.org/DP4/PM/NSIDC-0051.002/1978.10.26/NSIDC0051_SEAICE_PS_N25km_19781026_v2.0.nc,"['crs', 'N07_ICECON']",ok,,https -C3177837840-NSIDC_CPRD,NSIDC-0051,Sea Ice Concentrations from Nimbus-7 SMMR and DMSP SSM/I-SSMIS Passive Microwave Data V002,NSIDC_CPRD,1978-10-26T00:00:00.000Z,,-180.0,-90.0,180.0,90.0,https://data.nsidc.earthdatacloud.nasa.gov/nsidc-cumulus-prod-protected/PM/NSIDC-0051/2/1978/10/26/NSIDC0051_SEAICE_PS_N25km_19781026_v2.0.nc,"['crs', 'N07_ICECON']",ok,,https -C2776464104-NSIDC_ECS,NSIDC-0630,Calibrated Enhanced-Resolution Passive Microwave Daily EASE-Grid 2.0 Brightness Temperature ESDR V002,NSIDC_ECS,1978-10-25T00:00:00.000Z,,-180.0,-90.0,180.0,90.0,https://n5eil01u.ecs.nsidc.org/DP4/PM/NSIDC-0630.002/2002.12.31/NSIDC0630_GRD_EASE2_S25km_F13_SSMI_M_85H_20030101_2509181454_v2.0.nc,"['crs', 'TB', 'TB_num_samples', 'TB_std_dev', 'Incidence_angle', 'TB_time']",ok,,https -C3177839163-NSIDC_CPRD,NSIDC-0630,Calibrated Enhanced-Resolution Passive Microwave Daily EASE-Grid 2.0 Brightness Temperature ESDR V002,NSIDC_CPRD,1978-10-25T00:00:00.000Z,,-180.0,-90.0,180.0,90.0,https://data.nsidc.earthdatacloud.nasa.gov/nsidc-cumulus-prod-protected/PM/NSIDC-0630/2/2002/12/31/NSIDC0630_GRD_EASE2_S25km_F13_SSMI_M_85V_20030101_2509181613_v2.0.nc,"['crs', 'TB', 'TB_num_samples', 'TB_std_dev', 'Incidence_angle', 'TB_time']",ok,,https -C3177839243-NSIDC_CPRD,NSIDC-0630,MEaSUREs Calibrated Enhanced-Resolution Passive Microwave Daily EASE-Grid 2.0 Brightness Temperature ESDR V001,NSIDC_CPRD,1978-10-25T00:00:00.000Z,,-180.0,-90.0,180.0,90.0,https://data.nsidc.earthdatacloud.nasa.gov/nsidc-cumulus-prod-protected/PM/NSIDC-0630/1/1978/10/25/NSIDC-0630-EASE2_S12.5km-NIMBUS7_SMMR-1978298-06V-M-SIR-JPL-v1.3.nc,"['crs', 'TB', 'TB_num_samples', 'Incidence_angle', 'TB_std_dev', 'TB_time']",ok,,https -C2036877535-POCLOUD,OSTIA-UKMO-L4-GLOB-v2.0,GHRSST Level 4 OSTIA Global Foundation Sea Surface Temperature Analysis (GDS version 2),POCLOUD,2006-12-31T00:00:00.000Z,,-180.0,-90.0,180.0,90.0,https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/OSTIA-UKMO-L4-GLOB-v2.0/20070101120000-UKMO-L4_GHRSST-SSTfnd-OSTIA-GLOB-v02.0-fv02.0.nc,"['analysed_sst', 'analysis_error', 'sea_ice_fraction', 'mask']",ok,,https -C3385049977-OB_CLOUD,PACE_OCI_L2_AOP_NRT,"PACE OCI Level-2 Regional Apparent Optical Properties - Near Real-time (NRT) Data, version 3.0",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0,https://obdaac-tea.earthdatacloud.nasa.gov/ob-cumulus-prod-public/PACE_OCI.20250101T000242.L2.OC_AOP.V3_0.NRT.nc,[],ok,,https -C3620139932-OB_CLOUD,PACE_OCI_L2_UVAI_UAA_NRT,"PACE OCI Level-2 Regional Aerosol Index, Unified Aerosol Algorithm (UAA) - Near Real-time (NRT) Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0,https://obdaac-tea.earthdatacloud.nasa.gov/ob-cumulus-prod-public/PACE_OCI.20250702T002640.L2.UVAI_UAA.V3_1.NRT.nc,[],ok,,https -C3620140222-OB_CLOUD,PACE_OCI_L3M_AER_UAA_NRT,"PACE OCI Level-3 Global Mapped Aerosol Optical Properties, Unified Aerosol Algorithm (UAA) Algorithm - Near Real-time (NRT) Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0,https://obdaac-tea.earthdatacloud.nasa.gov/ob-cumulus-prod-public/PACE_OCI.20250701.L3m.DAY.AER_UAA.V3_1.1deg.NRT.nc,"['Aerosol_Optical_Depth_354', 'Aerosol_Optical_Depth_388', 'Aerosol_Optical_Depth_480', 'Aerosol_Optical_Depth_550', 'Aerosol_Optical_Depth_670', 'Aerosol_Optical_Depth_870', 'Aerosol_Optical_Depth_1240', 'Aerosol_Optical_Depth_2200', 'Optical_Depth_Ratio_Small_Ocean_used', 'NUV_AerosolCorrCloudOpticalDepth', 'NUV_AerosolOpticalDepthOverCloud_354', 'NUV_AerosolOpticalDepthOverCloud_388', 'NUV_AerosolOpticalDepthOverCloud_550', 'NUV_AerosolIndex', 'NUV_CloudOpticalDepth']",ok,,https -C3385050643-OB_CLOUD,PACE_OCI_L3M_LANDVI,"PACE OCI Level-3 Global Mapped Land Vegetation Indices Data, version 3.0",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0,https://obdaac-tea.earthdatacloud.nasa.gov/ob-cumulus-prod-public/PACE_OCI.20240514.L3m.DAY.LANDVI.V3_0.0p1deg.nc,"['ndvi', 'evi', 'ndwi', 'ndii', 'cci', 'ndsi', 'pri', 'cire', 'car', 'mari', 'palette']",ok,,https -C3385050676-OB_CLOUD,PACE_OCI_L3M_RRS,"PACE OCI Level-3 Global Mapped Remote-Sensing Reflectance (RRS) Data, version 3.0",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0,https://obdaac-tea.earthdatacloud.nasa.gov/ob-cumulus-prod-public/PACE_OCI.20240514.L3m.DAY.RRS.V3_0.Rrs.0p1deg.nc,"['Rrs', 'palette']",ok,,https -C3261923657-LPCLOUD,SRTMGL1_NUMNC,NASA Shuttle Radar Topography Mission Global 1 arc second Number NetCDF V003,LPCLOUD,2000-02-11T00:00:00.000Z,2000-02-21T23:59:59.000Z,-180.0,-56.0,180.0,60.0,https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/SRTMGL1_NUMNC.003/N23E039.SRTMGL1_NUMNC/N23E039.SRTMGL1_NUMNC.nc,"['SRTMGL1_NUM', 'crs']",ok,,https -C2763266381-LPCLOUD,SRTMGL3_NC,NASA Shuttle Radar Topography Mission Global 3 arc second NetCDF V003,LPCLOUD,2000-02-11T00:00:00.000Z,2000-02-21T23:59:59.000Z,-180.0,-56.0,180.0,60.0,https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/SRTMGL3_NC.003/N01E036.SRTMGL3_NC/N01E036.SRTMGL3_NC.nc,"['SRTMGL3_DEM', 'crs']",ok,,https -C2799438306-POCLOUD,SWOT_L2_LR_SSH_2.0,"SWOT Level 2 KaRIn Low Rate Sea Surface Height Data Product, Version C",POCLOUD,2022-12-16T00:00:00.000Z,,-180.0,-90.0,180.0,90.0,https://archive.swot.podaac.earthdata.nasa.gov/podaac-swot-ops-cumulus-protected/SWOT_L2_LR_SSH_2.0/SWOT_L2_LR_SSH_Basic_475_026_20230330T191003_20230330T200109_PGC0_02.nc,"['time', 'time_tai', 'ssh_karin', 'ssh_karin_qual', 'ssh_karin_uncert', 'ssha_karin', 'ssha_karin_qual', 'ssh_karin_2', 'ssh_karin_2_qual', 'ssha_karin_2', 'ssha_karin_2_qual', 'num_pt_avg', 'distance_to_coast', 'heading_to_coast', 'ancillary_surface_classification_flag', 'dynamic_ice_flag', 'rain_flag', 'rad_surface_type_flag', 'mean_sea_surface_cnescls', 'mean_sea_surface_cnescls_uncert', 'geoid', 'internal_tide_hret', 'height_cor_xover', 'height_cor_xover_qual']",ok,,https -C3233945000-POCLOUD,SWOT_L2_LR_SSH_D,"SWOT Level 2 KaRIn Low Rate Sea Surface Height Data Product, Version D",POCLOUD,2022-12-16T00:00:00.000Z,,-180.0,-90.0,180.0,90.0,https://archive.swot.podaac.earthdata.nasa.gov/podaac-swot-ops-cumulus-protected/SWOT_L2_LR_SSH_D/SWOT_L2_LR_SSH_Expert_032_142_20250503T014515_20250503T023644_PIC2_01.nc,"['time', 'time_tai', 'ssh_karin', 'ssh_karin_qual', 'ssh_karin_uncert', 'ssha_karin', 'ssha_karin_qual', 'ssh_karin_2', 'ssh_karin_2_qual', 'ssha_karin_2', 'ssha_karin_2_qual', 'polarization_karin', 'swh_karin', 'swh_karin_qual', 'swh_karin_uncert', 'sig0_karin', 'sig0_karin_qual', 'sig0_karin_uncert', 'sig0_karin_2', 'sig0_karin_2_qual', 'wind_speed_karin', 'wind_speed_karin_qual', 'wind_speed_karin_2', 'wind_speed_karin_2_qual', 'num_pt_avg', 'swh_wind_speed_karin_source', 'swh_wind_speed_karin_source_2', 'swh_nadir_altimeter', 'swh_model', 'mean_wave_direction', 'mean_wave_period_t02', 'wind_speed_model_u', 'wind_speed_model_v', 'wind_speed_rad', 'distance_to_coast', 'heading_to_coast', 'ancillary_surface_classification_flag', 'dynamic_ice_flag', 'rain_flag', 'rad_surface_type_flag', 'sc_altitude', 'orbit_alt_rate', 'cross_track_angle', 'sc_roll', 'sc_pitch', 'sc_yaw', 'velocity_heading', 'orbit_qual', 'latitude_avg_ssh', 'longitude_avg_ssh', 'cross_track_distance', 'x_factor', 'sig0_cor_atmos_model', 'sig0_cor_atmos_rad', 'doppler_centroid', 'phase_bias_ref_surface', 'obp_ref_surface', 'rad_tmb_187', 'rad_tmb_238', 'rad_tmb_340', 'rad_water_vapor', 'rad_cloud_liquid_water', 'mean_sea_surface_cnescls', 'mean_sea_surface_cnescls_uncert', 'mean_sea_surface_dtu', 'mean_sea_surface_dtu_uncert', 'geoid', 'mean_dynamic_topography', 'mean_dynamic_topography_uncert', 'depth_or_elevation', 'solid_earth_tide', 'ocean_tide_fes', 'ocean_tide_got', 'load_tide_fes', 'load_tide_got', 'ocean_tide_eq', 'ocean_tide_non_eq', 'internal_tide_hret', 'internal_tide_sol2', 'pole_tide', 'dac', 'inv_bar_cor', 'model_dry_tropo_cor', 'model_wet_tropo_cor', 'rad_wet_tropo_cor', 'iono_cor_gim_ka', 'height_cor_xover', 'height_cor_xover_qual', 'rain_rate', 'ice_conc', 'sea_state_bias_cor', 'sea_state_bias_cor_2', 'swh_ssb_cor_source', 'swh_ssb_cor_source_2', 'wind_speed_ssb_cor_source', 'wind_speed_ssb_cor_source_2', 'volumetric_correlation', 'volumetric_correlation_uncert']",ok,,https -C2930725014-LARC_CLOUD,TEMPO_NO2_L2,TEMPO NO2 tropospheric and stratospheric columns V03 (PROVISIONAL),LARC_CLOUD,2023-08-01T00:00:00Z,,-170.0,10.0,-10.0,80.0,https://data.asdc.earthdata.nasa.gov/asdc-prod-protected/TEMPO/TEMPO_NO2_L2_V03/2023.08.02/TEMPO_NO2_L2_V03_20230802T151249Z_S001G01.nc,[],ok,,https -C2930764281-LARC_CLOUD,TEMPO_O3TOT_L3,TEMPO gridded ozone total column V03 (PROVISIONAL),LARC_CLOUD,2023-08-01T00:00:00.000Z,,-170.0,10.0,-10.0,80.0,https://data.asdc.earthdata.nasa.gov/asdc-prod-protected/TEMPO/TEMPO_O3TOT_L3_V03/2023.08.02/TEMPO_O3TOT_L3_V03_20230802T151249Z_S001.nc,['weight'],ok,,https -C3388381264-OB_CLOUD,VIIRSN_L2_OC,"Suomi-NPP VIIRS Level-2 Regional Ocean Color (OC) Data, version 2022.0",OB_CLOUD,2012-01-02T00:00:00Z,,-180.0,-90.0,180.0,90.0,https://obdaac-tea.earthdatacloud.nasa.gov/ob-cumulus-prod-public/SNPP_VIIRS.20120102T205401.L2.OC.nc,[],ok,,https -C3388381281-OB_CLOUD,VIIRSN_L2_OC_NRT,"Suomi-NPP VIIRS Level-2 Regional Ocean Color (OC) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2012-01-02T00:00:00Z,,-180.0,-90.0,180.0,90.0,https://obdaac-tea.earthdatacloud.nasa.gov/ob-cumulus-prod-public/SNPP_VIIRS.20250501T000000.L2.OC.NRT.nc,[],ok,,https -C2162185379-ORNL_CLOUD,ABoVE_Arctic_CAP_1658,"ABoVE: Atmospheric Profiles of CO, CO2 and CH4 Concentrations from Arctic-CAP, 2017",ORNL_CLOUD,2017-04-26T00:00:00.000Z,2017-11-05T23:59:59.999Z,-166.045,40.0387,-104.112,71.2874,https://data.ornldaac.earthdata.nasa.gov/protected/above/ABoVE_Arctic_CAP/data/ABoVE_2017_insitu_10sec.nc,"['time_bnds', 'time_decimal', 'time_components', 'flight_id', 'profile_id', 'CH4', 'CH4_unc', 'CH4_stdv', 'CH4_nvalue', 'CO', 'CO_unc', 'CO_stdv', 'CO_nvalue', 'CO2', 'CO2_unc', 'CO2_stdv', 'CO2_nvalue', 'H2O', 'H2O_unc', 'H2O_stdv', 'H2O_nvalue', 'P', 'P_unc', 'P_stdv', 'P_nvalue', 'RH', 'RH_unc', 'RH_stdv', 'RH_nvalue', 'T', 'T_unc', 'T_stdv', 'T_nvalue', 'u', 'u_unc', 'u_stdv', 'u_nvalue', 'v', 'v_unc', 'v_stdv', 'v_nvalue']",ok,,https -C3255116494-ORNL_CLOUD,ABoVE_Domain_Projected_LULC_2353,Land Use and Land Cover Change Projection in the ABoVE Domain,ORNL_CLOUD,2015-01-01T00:00:00.000Z,2100-12-31T23:59:59.999Z,-169.0,49.0,-81.0,80.0,https://data.ornldaac.earthdata.nasa.gov/protected/above/ABoVE_Domain_Projected_LULC/data/landuse.timeseries_ABOVE_025_SSP126_Demeter.nc,"['crs', 'time_bnds', 'land_mask', 'PCT_NAT_PFT', 'PCT_CROP']",ok,,https -C2170972048-ORNL_CLOUD,ABoVE_PBand_SAR_1657,ABoVE: Active Layer and Soil Moisture Properties from AirMOSS P-band SAR in Alaska,ORNL_CLOUD,2014-08-16T00:00:00.000Z,2017-10-10T23:59:59.999Z,-167.944,64.7127,-150.249,70.8774,https://data.ornldaac.earthdata.nasa.gov/protected/above/ABoVE_PBand_SAR/data/PolSAR_active_layer_prop_atqasu_140816_141009_01.nc4,"['alt', 'epsilon1_aug', 'epsilon1_oct', 'epsilon2', 'mv1_aug', 'mv1_oct', 'mv2', 'z1_aug', 'z1_oct', 'h', 'alt_uncertainty', 'epsilon1_aug_uncertainty', 'epsilon1_oct_uncertainty', 'epsilon2_uncertainty', 'mv1_aug_uncertainty', 'mv1_oct_uncertainty', 'mv2_uncertainty', 'z1_aug_uncertainty', 'z1_oct_uncertainty', 'h_uncertainty', 'crs']",ok,,https -C2600317177-ORNL_CLOUD,ABoVE_SnowModel_Data_2105,"Daily SnowModel Outputs Covering the ABoVE Core Domain, 3-km Resolution, 1980-2020",ORNL_CLOUD,1980-09-01T00:00:00.000Z,2020-08-31T23:59:59.999Z,-176.915,49.8038,-84.3282,75.8357,https://data.ornldaac.earthdata.nasa.gov/protected/above/ABoVE_SnowModel_Data/data/SnowModel_snow_depth_1980.nc4,"['time_bnds', 'crs', 'snod']",ok,,https -C2706335063-ORNL_CLOUD,ACTAMERICA_MFFLL_1649,"ACT-America: L2 Remotely Sensed Column-average CO2 by Airborne Lidar, Eastern USA",ORNL_CLOUD,2016-05-27T00:00:00.000Z,2018-05-20T23:59:59.999Z,-106.054,27.2303,-71.9109,49.1083,https://data.ornldaac.earthdata.nasa.gov/protected/actamerica/ACTAMERICA_MFFLL/data/summer2016/ACTAmerica-MFLL-lev2_C130_2016-05-27T145325_R2.nc,"['Amplitude_2nd_scatter', 'Amplitude_ref_ch1', 'Amplitude_ref_ch2', 'Amplitude_ref_ch3', 'Amplitude_sci_ch1', 'Amplitude_sci_ch2', 'Amplitude_sci_ch3', 'Calibration_coeff', 'Cloud_Ground_flag', 'Column_CO2', 'Data_quality_flag', 'Flag_2nd_scatter', 'GPS_Altitude', 'Ground_elevation', 'Mask', 'OD_bias_corr', 'OD_nadir', 'Pitch', 'Range_2nd_scatter', 'Range_nadir', 'Range_offset', 'Range_ref_ch1', 'Range_ref_ch2', 'Range_ref_ch3', 'Range_sci_ch1', 'Range_sci_ch2', 'Range_sci_ch3', 'Roll', 'Wavelength_ch1', 'Wavelength_ch2', 'Wavelength_ch3']",ok,,https -C2705731187-ORNL_CLOUD,ACTAMERICA_MFLL_L1_1817,"ACT-America: L1 DAOD Measurements by Airborne CO2 Lidar, Eastern USA",ORNL_CLOUD,2016-05-27T00:00:00.000Z,2018-05-20T23:59:59.999Z,-106.054,27.2303,-71.9109,49.1083,https://data.ornldaac.earthdata.nasa.gov/protected/actamerica/ACTAMERICA_MFLL_L1/data/summer2016/ACTAmerica-MFLL-lev1_C130_2016-05-27T145325_R2.nc,"['Amplitude_2nd_scatter', 'Amplitude_ref_ch1', 'Amplitude_ref_ch2', 'Amplitude_ref_ch3', 'Amplitude_sci_ch1', 'Amplitude_sci_ch2', 'Amplitude_sci_ch3', 'Calibration_coeff', 'Cloud_Ground_flag', 'Data_quality_flag', 'Flag_2nd_scatter', 'GPS_Altitude', 'Ground_elevation', 'Mask', 'OD_bias_corr', 'OD_nadir', 'Pitch', 'Range_2nd_scatter', 'Range_nadir', 'Range_offset', 'Range_ref_ch1', 'Range_ref_ch2', 'Range_ref_ch3', 'Range_sci_ch1', 'Range_sci_ch2', 'Range_sci_ch3', 'Roll', 'Wavelength_ch1', 'Wavelength_ch2', 'Wavelength_ch3']",ok,,https -C2705715010-ORNL_CLOUD,ACT_CASA_Ensemble_Prior_Fluxes_1675,"ACT-America: Gridded Ensembles of Surface Biogenic Carbon Fluxes, 2003-2019",ORNL_CLOUD,2003-01-01T00:00:00.000Z,2019-12-31T23:59:59.999Z,-176.0,0.5,-24.5,70.5,https://data.ornldaac.earthdata.nasa.gov/protected/actamerica/ACT_CASA_Ensemble_Prior_Fluxes/data/ConterminousUS/CASA_L2_Ensemble_Monthly_Biogenic_RECO_CONUS_2003.nc4,"['lambert_conformal_conic', 'Biogenic_RECO_Para01', 'Biogenic_RECO_Para02', 'Biogenic_RECO_Para03', 'Biogenic_RECO_Para04', 'Biogenic_RECO_Para05', 'Biogenic_RECO_Para06', 'Biogenic_RECO_Para07', 'Biogenic_RECO_Para08', 'Biogenic_RECO_Para09', 'Biogenic_RECO_Para10', 'Biogenic_RECO_Para11', 'Biogenic_RECO_Para12', 'Biogenic_RECO_Para13', 'Biogenic_RECO_Para14', 'Biogenic_RECO_Para15', 'Biogenic_RECO_Para16', 'Biogenic_RECO_Para17', 'Biogenic_RECO_Para18', 'Biogenic_RECO_Para19', 'Biogenic_RECO_Para20', 'Biogenic_RECO_Para21', 'Biogenic_RECO_Para22', 'Biogenic_RECO_Para23', 'Biogenic_RECO_Para24', 'Biogenic_RECO_Para25', 'Biogenic_RECO_Para26', 'Biogenic_RECO_Para27']",ok,,https -C3352415929-LAADS,AERDB_L2_AHI_H08,Himawari-08 AHI Deep Blue Aerosol L2,LAADS,2019-05-01T00:00:00.000Z,2020-04-30T23:59:00.000Z,-180.0,-90.0,180.0,90.0,https://data.laadsdaac.earthdatacloud.nasa.gov/prod-lads/AERDB_L2_AHI_H08/AERDB_L2_AHI_H08.A2019121.0000.001.2023230114253.nc,"['Aerosol_Optical_Thickness_550_Expected_Uncertainty_Land', 'Aerosol_Optical_Thickness_550_Expected_Uncertainty_Ocean', 'Aerosol_Optical_Thickness_550_Land', 'Aerosol_Optical_Thickness_550_Land_Best_Estimate', 'Aerosol_Optical_Thickness_550_Land_Ocean', 'Aerosol_Optical_Thickness_550_Land_Ocean_Best_Estimate', 'Aerosol_Optical_Thickness_550_Ocean', 'Aerosol_Optical_Thickness_550_Ocean_Best_Estimate', 'Aerosol_Optical_Thickness_550_STDV_Land', 'Aerosol_Optical_Thickness_550_STDV_Ocean', 'Aerosol_Optical_Thickness_QA_Flag_Land', 'Aerosol_Optical_Thickness_QA_Flag_Ocean', 'Aerosol_Type_Ocean', 'Algorithm_Flag_Land', 'Algorithm_Flag_Ocean', 'Angstrom_Exponent_Land', 'Angstrom_Exponent_Land_Best_Estimate', 'Angstrom_Exponent_Land_Ocean', 'Angstrom_Exponent_Land_Ocean_Best_Estimate', 'Angstrom_Exponent_Ocean', 'Angstrom_Exponent_Ocean_Best_Estimate', 'Cell_Average_Elevation_Land', 'Cell_Average_Elevation_Ocean', 'Fine_Mode_Fraction_550_Ocean', 'Fine_Mode_Fraction_550_Ocean_Best_Estimate', 'NDVI', 'Number_Of_Pixels_Used_Land', 'Number_Of_Pixels_Used_Ocean', 'Number_Valid_Pixels', 'Ocean_Sum_Squares', 'Precipitable_Water', 'Relative_Azimuth_Angle', 'Scattering_Angle', 'Solar_Zenith_Angle', 'Spectral_Aerosol_Optical_Thickness_Land', 'Spectral_Aerosol_Optical_Thickness_Ocean', 'Spectral_Surface_Reflectance', 'Spectral_TOA_Reflectance_Land', 'Spectral_TOA_Reflectance_Ocean', 'Total_Column_Ozone', 'Unsuitable_Pixel_Fraction_Land_Ocean', 'Viewing_Zenith_Angle', 'Wind_Direction', 'Wind_Speed']",ok,,https -C2251465126-POCLOUD,ALTIKA_SARAL_L2_OST_XOGDR,SARAL Near-Real-Time Value-added Operational Geophysical Data Record Sea Surface Height Anomaly,POCLOUD,2020-03-18T00:00:00.000Z,,-180.0,-82.0,180.0,82.0,https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/ALTIKA_SARAL_L2_OST_XOGDR/c138/SRL_OPRSSHA_2PfS138_0637_20200318_001517_20200318_015316.EUM.nc,"['surface_type', 'rad_surf_type', 'ecmwf_meteo_map_avail', 'trailing_edge_variation_flag', 'ice_flag', 'alt', 'range', 'model_dry_tropo_corr', 'rad_wet_tropo_corr', 'iono_corr_gim', 'sea_state_bias', 'swh', 'sig0', 'mean_sea_surface_sol1', 'mean_topography', 'bathymetry', 'inv_bar_corr', 'hf_fluctuations_corr', 'ocean_tide_sol2', 'solid_earth_tide', 'pole_tide', 'internal_tide', 'wind_speed_alt', 'rad_water_vapor', 'rad_liquid_water', 'ssha', 'alt_dyn', 'xover_corr', 'ssha_dyn']",ok,,https -C2596983413-POCLOUD,AMSR2-REMSS-L2P-v8.2,GHRSST Level 2P Global Subskin Sea Surface Temperature version 8.2 (v8.2) from the Advanced Microwave Scanning Radiometer 2 (AMSR2) by REMSS,POCLOUD,2012-07-02T19:00:44.000Z,,-180.0,-90.0,180.0,90.0,https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/AMSR2-REMSS-L2P-v8.2/20120702232149-REMSS-L2P_GHRSST-SSTsubskin-AMSR2-L2B_v8.2_r00675-v02.0-fv01.0.nc,"['sea_surface_temperature', 'sst_dtime', 'dt_analysis', 'sses_bias', 'sses_standard_deviation', 'l2p_flags', 'quality_level', 'wind_speed', 'diurnal_amplitude', 'cool_skin', 'water_vapor', 'cloud_liquid_water', 'rain_rate']",ok,,https -C2596986276-POCLOUD,AMSR2-REMSS-L2P_RT-v8.2,GHRSST Level 2P Global Near-Real-Time Subskin Sea Surface Temperature version 8.2 (v8.2) from the Advanced Microwave Scanning Radiometer 2 (AMSR2) on the GCOM-W satellite by REMSS,POCLOUD,2012-07-02T19:00:44.000Z,,-180.0,-90.0,180.0,90.0,https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/AMSR2-REMSS-L2P_RT-v8.2/20230111111900-REMSS-L2P_GHRSST-SSTsubskin-AMSR2-L2B_rt_r56661-v02.0-fv01.0.nc,"['sea_surface_temperature', 'sst_dtime', 'dt_analysis', 'sses_bias', 'sses_standard_deviation', 'l2p_flags', 'quality_level', 'wind_speed', 'diurnal_amplitude', 'cool_skin', 'water_vapor', 'cloud_liquid_water', 'rain_rate']",ok,,https -C2075141559-POCLOUD,ASCATB-L2-25km,MetOp-B ASCAT Level 2 25.0km Ocean Surface Wind Vectors in Full Orbit Swath,POCLOUD,2012-10-29T01:00:01.000Z,,-180.0,-89.6,180.0,89.6,https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/ASCATB-L2-25km/ascat_20121029_010001_metopb_00588_eps_o_250_2101_ovw.l2.nc,"['time', 'wvc_index', 'model_speed', 'model_dir', 'ice_prob', 'ice_age', 'wvc_quality_flag', 'wind_speed', 'wind_dir', 'bs_distance']",ok,,https -C2075141638-POCLOUD,ASCATC-L2-25km,MetOp-C ASCAT Level 2 25.0km Ocean Surface Wind Vectors in Full Orbit Swath,POCLOUD,2019-10-22T09:57:00.000Z,,-180.0,-89.6,180.0,89.6,https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/ASCATC-L2-25km/ascat_20191022_095700_metopc_04964_eps_o_250_3203_ovw.l2.nc,"['time', 'wvc_index', 'model_speed', 'model_dir', 'ice_prob', 'ice_age', 'wvc_quality_flag', 'wind_speed', 'wind_dir', 'bs_distance']",ok,,https -C2698465642-ORNL_CLOUD,ATom_Aerosol_Properties_V2_2111,"ATom: Comprehensive Aerosol Properties, 2016-2018, Version 2",ORNL_CLOUD,2016-07-29T00:00:00.000Z,2018-05-22T23:59:59.999Z,-180.0,-86.5,180.0,82.9313,https://data.ornldaac.earthdata.nasa.gov/protected/atom/ATom_Aerosol_Properties_V2/data/ATom_aerosol_profiles.nc,"['Abs_Angstrom_ambRH_UV_VIS', 'Abs_Angstrom_ambRH_VIS_IR', 'Alkali_salts_coarse', 'Alkali_salts_fine', 'Angstrom_ambRH_UV_VIS', 'Angstrom_ambRH_VIS_IR', 'BC_SP2', 'Dust_coarse', 'Dust_fine', 'End_Date_Time_UTC', 'Nitrate_fine', 'OA_coarse', 'OA_fine', 'RHw_DLH', 'Sea_Salt_coarse', 'Sea_Salt_fine', 'Start_Date_Time_UTC', 'Sulfate_coarse', 'Sulfate_fine', 'U', 'V', 'W', 'abs_BC', 'abs_BrC', 'ambient_pressure', 'ambient_temperature', 'carbon_monoxide', 'end_latitude', 'end_longitude', 'ext_BB_dry_ambPT', 'ext_H2O_ambRH', 'ext_SS_dry_ambPT', 'ext_alk_dry_ambPT', 'ext_alkali_salts_ambRH', 'ext_ambRH', 'ext_biomass_burning_ambRH', 'ext_dry_ambPT', 'ext_dust_ambRH', 'ext_dust_dry_ambPT', 'ext_eff_ambRH', 'ext_eff_dry', 'ext_elemental_carbon_ambRH', 'ext_met_dry_ambPT', 'ext_meteoric_ambRH', 'ext_sea_salt_ambRH', 'ext_sulfate_organic_ambRH', 'ext_sulfate_organic_dry_ambPT', 'max_ext_date_time_UTC', 'max_ext_latitude', 'max_ext_longitude', 'num_coarse', 'num_fine', 'ozone', 'sfc_coarse', 'sfc_fine', 'start_latitude', 'start_longitude', 'tau', 'tau_abs_BC', 'tau_abs_BrC', 'tau_alkali_salts', 'tau_biomass_burning', 'tau_combustion', 'tau_dry', 'tau_dry_alkali_salts', 'tau_dry_biomass_burning', 'tau_dry_combustion', 'tau_dry_dust', 'tau_dry_meteoric', 'tau_dry_sea_salt', 'tau_dry_sulfate_organic', 'tau_dust', 'tau_meteoric', 'tau_sea_salt', 'tau_sulfate_organic', 'theta', 'vol_coarse', 'vol_fine']",ok,,https -C2704885339-ORNL_CLOUD,ATom_CESM2_1878,"ATom: CAM-chem/CESM2 Model Outputs Along Flight Tracks, 2016-2018",ORNL_CLOUD,2016-07-29T00:00:00.000Z,2018-05-21T23:59:59.999Z,-180.0,-86.1768,180.0,82.9404,https://data.ornldaac.earthdata.nasa.gov/protected/atom/ATom_CESM2/data/CESM-FINN_DC8_20160729_R0.nc,"['lon', 'T_CESM', 'U_CESM', 'V_CESM', 'O3S_CESM', 'Z3_CESM', 'OMEGA_CESM', 'PM25_CESM', 'CO_CESM', 'E90_CESM', 'BR_CESM', 'BRCL_CESM', 'BRO_CESM', 'BROX_CESM', 'BROY_CESM', 'TBRY_CESM', 'BRONO2_CESM', 'CCL4_CESM', 'CF2CLBR_CESM', 'CF3BR_CESM', 'CFC11_CESM', 'CFC113_CESM', 'CFC12_CESM', 'CH2O_CESM', 'CH3BR_CESM', 'CHBR3_CESM', 'CH2BR2_CESM', 'CH3CCL3_CESM', 'CH3CL_CESM', 'CH3O2_CESM', 'CH3OOH_CESM', 'CH4_CESM', 'CL_CESM', 'CL2_CESM', 'CL2O2_CESM', 'CLO_CESM', 'CLOX_CESM', 'CLOY_CESM', 'TCLY_CESM', 'CLONO2_CESM', 'CO2_CESM', 'H2_CESM', 'H2O_CESM', 'H2O2_CESM', 'HBR_CESM', 'HCFC22_CESM', 'HCL_CESM', 'HNO3_CESM', 'HO2_CESM', 'HO2NO2_CESM', 'HOBR_CESM', 'HOCL_CESM', 'N2O_CESM', 'N2O5_CESM', 'NO_CESM', 'NO2_CESM', 'NO3_CESM', 'NOX_CESM', 'NOY_CESM', 'O_CESM', 'O1D_CESM', 'O3_CESM', 'OCLO_CESM', 'OH_CESM', 'C2H4_CESM', 'C2H6_CESM', 'C2H5O2_CESM', 'C2H5OOH_CESM', 'CH3CO3_CESM', 'CH3COOH_CESM', 'CH3CHO_CESM', 'CH3OH_CESM', 'C2H5OH_CESM', 'GLYALD_CESM', 'GLYOXAL_CESM', 'CH3COOOH_CESM', 'EO2_CESM', 'EO_CESM', 'EOOH_CESM', 'PAN_CESM', 'C3H6_CESM', 'C3H8_CESM', 'C3H7O2_CESM', 'C3H7OOH_CESM', 'CH3COCH3_CESM', 'PO2_CESM', 'POOH_CESM', 'HYAC_CESM', 'RO2_CESM', 'CH3COCHO_CESM', 'ROOH_CESM', 'BIGENE_CESM', 'BIGALK_CESM', 'MEK_CESM', 'ENEO2_CESM', 'MEKO2_CESM', 'MEKOOH_CESM', 'MCO3_CESM', 'MVK_CESM', 'MACR_CESM', 'MACRO2_CESM', 'MACROOH_CESM', 'MPAN_CESM', 'ISOP_CESM', 'ALKO2_CESM', 'ALKOOH_CESM', 'BIGALD_CESM', 'HYDRALD_CESM', 'ISOPNO3_CESM', 'XO2_CESM', 'XOOH_CESM', 'ISOPOOH_CESM', 'HCN_CESM', 'CH3CN_CESM', 'C2H2_CESM', 'HCOOH_CESM', 'HOCH2OO_CESM', 'TOLUENE_CESM', 'CRESOL_CESM', 'TOLO2_CESM', 'TOLOOH_CESM', 'BENZENE_CESM', 'XYLENES_CESM', 'PHENOL_CESM', 'BEPOMUC_CESM', 'BENZO2_CESM', 'PHENO2_CESM', 'PHENO_CESM', 'PHENOOH_CESM', 'C6H5O2_CESM', 'C6H5OOH_CESM', 'BENZOOH_CESM', 'BIGALD1_CESM', 'BIGALD2_CESM', 'BIGALD3_CESM', 'BIGALD4_CESM', 'MALO2_CESM', 'TEPOMUC_CESM', 'BZOO_CESM', 'BZOOH_CESM', 'BZALD_CESM', 'ACBZO2_CESM', 'DICARBO2_CESM', 'MDIALO2_CESM', 'PBZNIT_CESM', 'XYLOL_CESM', 'XYLOLO2_CESM', 'XYLOLOOH_CESM', 'XYLENO2_CESM', 'XYLENOOH_CESM', 'SVOC_CESM', 'IVOC_CESM', 'MTERP_CESM', 'BCARY_CESM', 'TERPO2_CESM', 'TERPOOH_CESM', 'TERPROD1_CESM', 'TERP2O2_CESM', 'TERPROD2_CESM', 'TERP2OOH_CESM', 'NTERPO2_CESM', 'ISOPAO2_CESM', 'ISOPBO2_CESM', 'HPALD_CESM', 'IEPOX_CESM', 'ONITR_CESM', 'NOA_CESM', 'ALKNIT_CESM', 'ISOPNITA_CESM', 'ISOPNITB_CESM', 'HONITR_CESM', 'ISOPNOOH_CESM', 'NC4CHO_CESM', 'NC4CH2OH_CESM', 'TERPNIT_CESM', 'NTERPOOH_CESM', 'SOAG0_CESM', 'SOAG1_CESM', 'SOAG2_CESM', 'SOAG3_CESM', 'SOAG4_CESM', 'SO2_CESM', 'DMS_CESM', 'NH3_CESM', 'NH4_CESM', 'bc_a1_CESM', 'bc_a4_CESM', 'dst_a1_CESM', 'dst_a2_CESM', 'dst_a3_CESM', 'ncl_a1_CESM', 'ncl_a2_CESM', 'ncl_a3_CESM', 'pom_a1_CESM', 'pom_a4_CESM', 'so4_a1_CESM', 'so4_a2_CESM', 'so4_a3_CESM', 'soa1_a1_CESM', 'soa2_a1_CESM', 'soa3_a1_CESM', 'soa4_a1_CESM', 'soa5_a1_CESM', 'soa1_a2_CESM', 'soa2_a2_CESM', 'soa3_a2_CESM', 'soa4_a2_CESM', 'soa5_a2_CESM', 'num_a1_CESM', 'num_a2_CESM', 'num_a4_CESM', 'jno3_b_CESM', 'jno3_a_CESM', 'jn2o5_a_CESM', 'jn2o5_b_CESM', 'jhno3_CESM', 'jho2no2_a_CESM', 'jho2no2_b_CESM', 'jch2o_a_CESM', 'jch2o_b_CESM', 'jch3cho_CESM', 'jch3ooh_CESM', 'jmacr_a_CESM', 'jmacr_b_CESM', 'jmvk_CESM', 'jacet_CESM', 'jglyoxal_CESM', 'jmgly_CESM', 'jcl2_CESM', 'jclo_CESM', 'jclono2_a_CESM', 'jbro_CESM', 'jhobr_CESM', 'jbrono2_a_CESM', 'jbrono2_b_CESM', 'jbrcl_CESM', 'jmek_CESM', 'PMID_CESM', 'second_of_day', 'date', 'lat', 'alt', 'obs_time']",ok,,https -C3237458908-ORNL_CLOUD,ATom_Clouds_Aerosols_2250,ATom: Development of Cloud Indicator Algorithm Using Airborne Observations from CAPS,ORNL_CLOUD,2016-07-01T00:00:00.000Z,2019-09-30T23:59:59.999Z,-180.0,-90.0,180.0,90.0,https://data.ornldaac.earthdata.nasa.gov/protected/atom/ATom_Clouds_Aerosols/data/dataset_Figure_5_6.nc,"['RHw', 'RHi', 'Altitude', 'Amb_Temperature', 'Cloudindicator', 'CA_Factor', 'CAS_dndlogDp_1_33', 'CIP_dndlogDp']",ok,,https -C2704875522-ORNL_CLOUD,ATom_GlobalModelInitiative_CTM_1897,ATom: Global Modeling Initiative (GMI) Chemical Transport Model (CTM) Output,ORNL_CLOUD,2016-07-29T00:00:00.000Z,2018-05-21T23:59:59.999Z,-180.0,-90.0,180.0,90.0,https://data.ornldaac.earthdata.nasa.gov/protected/atom/ATom_GlobalModelInitiative_CTM/data/GMI_DC8_20160729_R2.ict,[],open_failed,"b'90, 1001' is not the signature of a valid netCDF4 file",https -C2704959373-ORNL_CLOUD,ATom_Photolysis_Rates_1651,"ATom: Global Modeled and CAFS Measured Cloudy and Clear Sky Photolysis Rates, 2016",ORNL_CLOUD,2005-08-01T00:00:00.000Z,2017-08-31T23:59:59.999Z,-180.0,-90.0,180.0,90.0,https://data.ornldaac.earthdata.nasa.gov/protected/atom/ATom_Photolysis_Rates/data/Jstat_TPac_subsample.nc,"['X1a', 'X1b', 'X2a', 'X2b', 'X3a', 'X3b', 'X4a', 'X4b', 'JXs1a', 'JXs1b', 'JXs2a', 'JXs2b', 'JXs3a', 'JXs3b', 'JXs11a', 'JXs11b', 'JXs22a', 'JXs22b', 'JXs33a', 'JXs33b']",ok,,https -C2036881712-POCLOUD,AVHRR_OI-NCEI-L4-GLOB-v2.1,GHRSST Level 4 AVHRR_OI Global Blended Sea Surface Temperature Analysis (GDS2) from NCEI,POCLOUD,2016-01-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0,https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/AVHRR_OI-NCEI-L4-GLOB-v2.1/20160101120000-NCEI-L4_GHRSST-SSTblend-AVHRR_OI-GLOB-v02.0-fv02.1.nc,"['lat_bnds', 'lon_bnds', 'analysed_sst', 'analysis_error', 'mask', 'sea_ice_fraction']",ok,,https -C2274733329-ORNL_CLOUD,AirMOSS_L2_3_RZ_Soil_Moisture_1418,"AirMOSS: L2/3 Volumetric Soil Moisture Profiles Derived From Radar, 2012-2015",ORNL_CLOUD,2012-09-18T00:00:00.000Z,2015-09-29T23:59:59.999Z,-123.283,9.87958,-68.3196,54.1254,https://data.ornldaac.earthdata.nasa.gov/protected/airmoss/campaign/AirMOSS_L2_3_RZ_Soil_Moisture/data/L23RZSM_Metoli_12079_20120918_03.nc4,"['BROWSE_RZSM_0CM', 'BROWSE_RZSM_10CM', 'BROWSE_RZSM_30CM', 'COEFF1', 'COEFF2', 'COEFF3']",ok,,https -C2279583354-ORNL_CLOUD,AirMOSS_L2_Inground_Soil_Moist_1416,"AirMOSS: L2 Hourly In-Ground Soil Moisture at AirMOSS Sites, 2011-2015",ORNL_CLOUD,2011-09-01T00:00:00.000Z,2015-12-31T23:59:59.999Z,-121.558,19.5086,-72.1712,53.9169,https://data.ornldaac.earthdata.nasa.gov/protected/airmoss/campaign/AirMOSS_L2_Inground_Soil_Moist/data/L2IGSM_calibrated_DUKEFR_20110101_03.nc4,"['SP01', 'SP02', 'SP03']",ok,,https -C2279583671-ORNL_CLOUD,AirMOSS_L2_Precipitation_1417,"AirMOSS: L2 Hourly Precipitation at AirMOSS Sites, 2011-2015",ORNL_CLOUD,2011-09-01T00:00:00.000Z,2015-12-31T23:59:59.999Z,-121.558,19.5086,-72.1712,53.9169,https://data.ornldaac.earthdata.nasa.gov/protected/airmoss/campaign/AirMOSS_L2_Precipitation/data/L2PRECIP_calibrated_HARVRD_20110101_03.nc4,"['SP01', 'SP02', 'SP03']",ok,,https -C2262413649-ORNL_CLOUD,AirMOSS_L4_Daily_NEE_1422,"AirMOSS: L4 Daily Modeled Net Ecosystem Exchange (NEE), AirMOSS sites, 2012-2014",ORNL_CLOUD,2012-01-01T00:00:00.000Z,2014-10-30T23:59:59.999Z,-122.883,31.4912,-68.3359,45.7861,https://data.ornldaac.earthdata.nasa.gov/protected/airmoss/campaign/AirMOSS_L4_Daily_NEE/data/L4ANEE_AssmltdL23_Moisst_v1_daily.nc4,['NEE'],ok,,https -C2258632707-ORNL_CLOUD,AirMOSS_L4_RZ_Soil_Moisture_1421,"AirMOSS: L4 Modeled Volumetric Root Zone Soil Moisture, 2012-2015",ORNL_CLOUD,2012-09-21T00:00:00.000Z,2015-09-28T23:59:59.999Z,-123.283,19.1247,-68.1237,54.1254,https://data.ornldaac.earthdata.nasa.gov/protected/airmoss/campaign/AirMOSS_L4_RZ_Soil_Moisture/data/L4RZSM_Walnut_20120921_v5.nc4,"['browse', 'sm1', 'sm2', 'sm3']",ok,,https -C2274237497-ORNL_CLOUD,AirMOSS_L4_Regional_NEE_1423,"AirMOSS: L4 Modeled Net Ecosystem Exchange (NEE), Continental USA, 2012-2014",ORNL_CLOUD,2012-01-01T00:00:00.000Z,2014-10-31T23:59:59.999Z,-124.938,25.062,-66.937,53.062,https://data.ornldaac.earthdata.nasa.gov/protected/airmoss/campaign/AirMOSS_L4_Regional_NEE/data/L4BNEE_2012-01_v1.nc4,[],open_failed,"Failed to decode variable 'time': unable to decode time units 'months since 2010-01-01 00:00:00 UTC' with ""calendar 'standard'"". Try opening your dataset with decode_times=False or installing cftime if it is not installed.",https -C2515937777-ORNL_CLOUD,Biogenic_CO2flux_SIF_SMUrF_1899,"Urban Biogenic CO2 fluxes: GPP, Reco and NEE Estimates from SMUrF, 2010-2019",ORNL_CLOUD,2010-01-01T00:00:00.000Z,2019-12-31T23:59:59.999Z,-125.0,-40.0,155.0,60.0,https://data.ornldaac.earthdata.nasa.gov/protected/nacp/Biogenic_CO2flux_SIF_SMUrF/data/daily_mean_Reco_uncert_westernEurope_201001.nc4,"['time_bnds', 'Reco_mean', 'Reco_sd', 'crs']",ok,,https -C3170774861-ORNL_CLOUD,Boreal_Arctic_Wetland_CH4_2351,"Boreal Arctic Wetland Methane Emissions, 2002-2021",ORNL_CLOUD,2002-01-01T00:00:00.000Z,2021-12-30T23:59:59.999Z,-179.76,44.8744,179.75,89.7493,https://data.ornldaac.earthdata.nasa.gov/protected/cms/Boreal_Arctic_Wetland_CH4/data/FCH4_upscale_BorealArctic_weekly_2002-2021.nc,"['crs', 'time_bnds', 'FCH4_weekly_mean', 'FCH4_weekly_std', 'Boreal_Arctic_mask']",ok,,https -C3543139481-LPCLOUD,CAM5K30EM,Combined ASTER and MODIS Emissivity database over Land (CAMEL) Emissivity Monthly Global 0.05Deg V003,LPCLOUD,2000-03-01T00:00:00.000Z,2024-01-01T00:00:00.000Z,-180.0,-90.0,180.0,90.0,https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/CAM5K30EM.003/CAM5K30EM_emis_200003_V003/CAM5K30EM_emis_200003_V003.nc,"['bfemis_qflag', 'aster_qflag', 'camel_qflag', 'aster_ndvi', 'snow_fraction', 'camel_emis']",ok,,https -C2236316271-ORNL_CLOUD,CARVE_L1_FlightPath_1425,"CARVE: L1 Daily Flight Path Geolocation and Aircraft Position Data, Alaska, 2012-2015",ORNL_CLOUD,2012-05-23T00:00:00.000Z,2015-11-13T23:59:59.999Z,-168.111,58.8438,-131.754,71.5622,https://data.ornldaac.earthdata.nasa.gov/protected/carve/campaign/CARVE_L1_FlightPath/data/carve_DADS_L1_b23_20120523_20150621190727.nc,[],ok,,https -C2236316070-ORNL_CLOUD,CARVE_L2_AtmosGas_NOAA_1401,"CARVE: L2 Atmospheric CO2, CO and CH4 Concentrations, NOAA CRDS, Alaska, 2012-2015",ORNL_CLOUD,2012-05-23T00:00:00.000Z,2014-11-09T23:59:59.999Z,-168.111,60.2085,-131.755,71.5622,https://data.ornldaac.earthdata.nasa.gov/protected/carve/campaign/CARVE_L2_AtmosGas_NOAA/data/carve_AtmosISGA_L2_N_b23_20120523_20150713021129.nc,[],ok,,https -C2036881720-POCLOUD,CMC0.1deg-CMC-L4-GLOB-v3.0,GHRSST Level 4 CMC0.1deg Global Foundation Sea Surface Temperature Analysis (GDS version 2),POCLOUD,2016-01-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0,https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/CMC0.1deg-CMC-L4-GLOB-v3.0/20160101120000-CMC-L4_GHRSST-SSTfnd-CMC0.1deg-GLOB-v02.0-fv03.0.nc,"['analysed_sst', 'analysis_error', 'sea_ice_fraction', 'mask']",ok,,https -C2395540148-ORNL_CLOUD,CMS_Forest_Productivity_1221,"CMS: Forest Biomass and Productivity, 1-degree and 5-km, Conterminous US, 2005",ORNL_CLOUD,2005-01-01T00:00:00.000Z,2005-12-31T23:59:59.999Z,-129.0,21.0,-65.0,52.0,https://data.ornldaac.earthdata.nasa.gov/protected/cms/CMS_Forest_Productivity/data/npp_1deg.nc4,['npp'],ok,,https -C2395542240-ORNL_CLOUD,CMS_Global_Cropland_Carbon_1279,"CMS: Carbon Fluxes from Global Agricultural Production and Consumption, 2005-2011",ORNL_CLOUD,2005-01-01T00:00:00.000Z,2011-12-31T23:59:59.999Z,-180.0,-59.463,180.0,83.637,https://data.ornldaac.earthdata.nasa.gov/protected/cms/CMS_Global_Cropland_Carbon/data/NCE_2005_2011_MgC.nc4,[],open_failed,"Failed to decode variable 'time': unable to decode time units 'years since 2005-01-01 00:00:00' with ""calendar 'standard'"". Try opening your dataset with decode_times=False or installing cftime if it is not installed.",https -C2389022189-ORNL_CLOUD,CMS_Monthly_CO2_Gulf_1668,"Ocean Surface pCO2 and Air-Sea CO2 Flux in the Northern Gulf of America, 2006-2010",ORNL_CLOUD,2006-01-01T00:00:00.000Z,2011-01-01T23:59:59.999Z,-96.0,25.0,-86.0,32.0,https://data.ornldaac.earthdata.nasa.gov/protected/cms/CMS_Monthly_CO2_Gulf/data/pco2_co2_flux.nc,"['time_bnds', 'CO2_flux', 'PCO2', 'crs']",ok,,https -C2389082819-ORNL_CLOUD,CMS_SABGOM_Model_Simulations_1510,"CMS: Simulated Physical-Biogeochemical Data, SABGOM Model, Gulf of America, 2005-2010",ORNL_CLOUD,2005-01-01T00:00:00.000Z,2010-12-31T23:59:59.999Z,-100.433,13.1637,-68.1901,39.3735,https://data.ornldaac.earthdata.nasa.gov/protected/cms/CMS_SABGOM_Model_Simulations/data/sabgom_output_2005_rho.nc4,[],open_failed,"Failed to decode variable 'time': unable to decode time units 'months since 2005-01-01' with ""calendar 'standard'"". Try opening your dataset with decode_times=False or installing cftime if it is not installed.",https -C2389021661-ORNL_CLOUD,CMS_Simulated_SIF_NiwotRidge_1720,"CLM Simulated Solar-Induced Fluorescence, Niwot Ridge, Colorado, USA, 1998-2018",ORNL_CLOUD,1998-01-01T00:00:00.000Z,2019-01-01T23:59:59.999Z,-105.546,40.0329,-105.546,40.0329,https://data.ornldaac.earthdata.nasa.gov/protected/cms/CMS_Simulated_SIF_NiwotRidge/data/CLM_NPQ.nc,"['APAR', 'BTRAN', 'C13_NEE', 'DOWNREG', 'ER', 'FAN', 'FPG', 'FPSN', 'FSA', 'FSDS', 'FSIF', 'FXSAT', 'FYIELD', 'GB_MOL', 'GPP', 'NEE', 'PARIN', 'PARVEG', 'PBOT', 'PCO2', 'PYIELD', 'QBOT', 'QVEGT', 'RH', 'RH_LEAF', 'RSSHA', 'RSSUN', 'SABG', 'SABV', 'STOMATAL_COND', 'TBOT', 'TLAI', 'TV', 'area', 'mcdate', 'nstep', 'time_bounds']",ok,,https -C2390408273-ORNL_CLOUD,CMS_WRF_Model_Products_1338,"CMS: Hourly Carbon Dioxide Estimated Using the WRF Model, North America, 2010",ORNL_CLOUD,2010-01-01T00:00:00.000Z,2010-12-31T23:59:59.999Z,-151.0,13.0,-41.0,63.0,https://data.ornldaac.earthdata.nasa.gov/protected/cms/CMS_WRF_Model_Products/data/wrfout_d01_2010-01-01.nc4,"['TOTCO2', 'PRESSURE', 'GEOPOTENTIAL', 'TEMPERATURE', 'PSFC', 'Times', 'U', 'V']",ok,,https -C2251464384-POCLOUD,CYGNSS_L1_V2.1,CYGNSS Level 1 Science Data Record Version 2.1,POCLOUD,2017-03-18T00:00:00.000Z,,-180.0,-40.0,180.0,40.0,https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/CYGNSS_L1_V2.1/2017/077/cyg01.ddmi.s20170318-000000-e20170318-235959.l1.power-brcs.a21.d21.nc,"['spacecraft_id', 'spacecraft_num', 'ddm_source', 'ddm_time_type_selector', 'delay_resolution', 'dopp_resolution', 'ddm_timestamp_gps_week', 'ddm_timestamp_gps_sec', 'pvt_timestamp_utc', 'pvt_timestamp_gps_week', 'pvt_timestamp_gps_sec', 'att_timestamp_utc', 'att_timestamp_gps_week', 'att_timestamp_gps_sec', 'sc_pos_x', 'sc_pos_y', 'sc_pos_z', 'sc_vel_x', 'sc_vel_y', 'sc_vel_z', 'sc_pos_x_pvt', 'sc_pos_y_pvt', 'sc_pos_z_pvt', 'sc_vel_x_pvt', 'sc_vel_y_pvt', 'sc_vel_z_pvt', 'nst_att_status', 'sc_roll', 'sc_pitch', 'sc_yaw', 'sc_roll_att', 'sc_pitch_att', 'sc_yaw_att', 'sc_lat', 'sc_lon', 'sc_alt', 'zenith_sun_angle_az', 'zenith_sun_angle_decl', 'zenith_ant_bore_dir_x', 'zenith_ant_bore_dir_y', 'zenith_ant_bore_dir_z', 'rx_clk_bias', 'rx_clk_bias_rate', 'rx_clk_bias_pvt', 'rx_clk_bias_rate_pvt', 'lna_temp_nadir_starboard', 'lna_temp_nadir_port', 'lna_temp_zenith', 'ddm_end_time_offset', 'bit_ratio_hi_lo_starboard', 'bit_ratio_hi_lo_port', 'bit_null_offset_starboard', 'bit_null_offset_port', 'status_flags_one_hz', 'prn_code', 'sv_num', 'track_id', 'ddm_ant', 'zenith_code_phase', 'sp_ddmi_delay_correction', 'sp_ddmi_dopp_correction', 'add_range_to_sp', 'add_range_to_sp_pvt', 'sp_ddmi_dopp', 'sp_fsw_delay', 'sp_delay_error', 'sp_dopp_error', 'fsw_comp_delay_shift', 'fsw_comp_dopp_shift', 'prn_fig_of_merit', 'tx_clk_bias', 'sp_alt', 'sp_pos_x', 'sp_pos_y', 'sp_pos_z', 'sp_vel_x', 'sp_vel_y', 'sp_vel_z', 'sp_inc_angle', 'sp_theta_orbit', 'sp_az_orbit', 'sp_theta_body', 'sp_az_body', 'sp_rx_gain', 'gps_eirp', 'gps_tx_power_db_w', 'gps_ant_gain_db_i', 'gps_off_boresight_angle_deg', 'direct_signal_snr', 'ddm_snr', 'ddm_noise_floor', 'inst_gain', 'lna_noise_figure', 'rx_to_sp_range', 'tx_to_sp_range', 'tx_pos_x', 'tx_pos_y', 'tx_pos_z', 'tx_vel_x', 'tx_vel_y', 'tx_vel_z', 'bb_nearest', 'radiometric_antenna_temp', 'fresnel_coeff', 'ddm_nbrcs', 'ddm_les', 'nbrcs_scatter_area', 'les_scatter_area', 'brcs_ddm_peak_bin_delay_row', 'brcs_ddm_peak_bin_dopp_col', 'brcs_ddm_sp_bin_delay_row', 'brcs_ddm_sp_bin_dopp_col', 'ddm_brcs_uncert', 'quality_flags', 'raw_counts', 'power_digital', 'power_analog', 'brcs', 'eff_scatter']",ok,,https -C2646932894-POCLOUD,CYGNSS_L2_SURFACE_FLUX_CDR_V1.2,CYGNSS Level 2 Ocean Surface Heat Flux Climate Data Record Version 1.2,POCLOUD,2018-08-01T00:00:00.000Z,,-180.0,-38.0,180.0,38.0,https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/CYGNSS_L2_SURFACE_FLUX_CDR_V1.2/cyg.ddmi.s20180801-000000-e20180801-235959.l2.surface-flux-cdr.a12.d12.nc,"['spacecraft_id', 'spacecraft_num', 'antenna', 'prn_code', 'air_density', 'air_temperature', 'boundry_layer_height', 'dew_point_temperature', 'surface_pressure', 'surface_skin_temperature', 'lhf', 'shf', 'lhf_yslf', 'shf_yslf', 'lhf_uncertainty', 'shf_uncertainty', 'lhf_yslf_uncertainty', 'shf_yslf_uncertainty', 'cygnss_l2_sample_index', 'quality_flags']",ok,,https -C2247621105-POCLOUD,CYGNSS_L2_SURFACE_FLUX_V2.0,CYGNSS Level 2 Ocean Surface Heat Flux Science Data Record Version 2.0,POCLOUD,2018-08-01T00:00:00.000Z,,-180.0,-38.0,180.0,38.0,https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/CYGNSS_L2_SURFACE_FLUX_V2.0/cyg.ddmi.s20180801-000000-e20180801-235959.l2.surface-flux.a20.d20.nc,"['spacecraft_id', 'spacecraft_num', 'antenna', 'prn_code', 'air_density', 'air_temperature', 'boundry_layer_height', 'dew_point_temperature', 'surface_pressure', 'surface_skin_temperature', 'lhf', 'shf', 'lhf_yslf', 'shf_yslf', 'lhf_uncertainty', 'shf_uncertainty', 'lhf_yslf_uncertainty', 'shf_yslf_uncertainty', 'cygnss_l2_sample_index', 'quality_flags']",ok,,https -C2251464495-POCLOUD,CYGNSS_L2_V2.1,CYGNSS Level 2 Science Data Record Version 2.1,POCLOUD,2017-03-18T00:00:00.000Z,,-180.0,-40.0,180.0,40.0,https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/CYGNSS_L2_V2.1/2017/077/cyg.ddmi.s20170318-000000-e20170318-235959.l2.wind-mss.a21.d21.nc,"['ddm_source', 'spacecraft_id', 'spacecraft_num', 'prn_code', 'sv_num', 'antenna', 'sc_lat', 'sc_lon', 'sc_alt', 'wind_speed', 'fds_nbrcs_wind_speed', 'fds_les_wind_speed', 'yslf_nbrcs_wind_speed', 'yslf_les_wind_speed', 'yslf_nbrcs_wind_speed_uncertainty', 'yslf_les_wind_speed_uncertainty', 'wind_speed_uncertainty', 'azimuth_angle', 'mean_square_slope', 'mean_square_slope_uncertainty', 'incidence_angle', 'nbrcs_mean', 'les_mean', 'range_corr_gain', 'fresnel_coeff', 'num_ddms_utilized', 'sample_flags', 'fds_sample_flags', 'yslf_sample_flags', 'sum_neg_brcs_value_used_for_nbrcs_flags', 'ddm_obs_utilized_flag', 'ddm_sample_index', 'ddm_channel', 'ddm_les', 'ddm_nbrcs']",ok,,https -C2205620319-POCLOUD,CYGNSS_L2_V3.0,CYGNSS Level 2 Science Data Record Version 3.0,POCLOUD,2018-08-01T00:00:00.000Z,,-180.0,-40.0,180.0,40.0,https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/CYGNSS_L2_V3.0/2018/213/cyg.ddmi.s20180801-000000-e20180801-235959.l2.wind-mss.a30.d31.nc,"['ddm_source', 'spacecraft_id', 'spacecraft_num', 'prn_code', 'sv_num', 'antenna', 'sc_lat', 'sc_lon', 'sc_alt', 'wind_speed', 'fds_nbrcs_wind_speed', 'fds_les_wind_speed', 'yslf_nbrcs_high_wind_speed', 'yslf_wind_speed', 'yslf_wind_speed_uncertainty', 'wind_speed_uncertainty', 'azimuth_angle', 'sc_roll', 'commanded_sc_roll', 'mean_square_slope', 'mean_square_slope_uncertainty', 'incidence_angle', 'nbrcs_mean', 'les_mean', 'range_corr_gain', 'fresnel_coeff', 'num_ddms_utilized', 'sample_flags', 'fds_sample_flags', 'yslf_sample_flags', 'sum_neg_brcs_value_used_for_nbrcs_flags', 'ddm_obs_utilized_flag', 'ddm_num_averaged_l1', 'ddm_channel', 'ddm_les', 'ddm_nbrcs', 'ddm_sample_index', 'ddm_averaged_l1_utilized_flag']",ok,,https -C2832196001-POCLOUD,CYGNSS_L2_V3.2,CYGNSS Level 2 Science Data Record Version 3.2,POCLOUD,2018-08-01T00:00:00.000Z,,-180.0,-40.0,180.0,40.0,https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/CYGNSS_L2_V3.2/cyg.ddmi.s20180801-000000-e20180801-235959.l2.wind-mss.a32.d33.nc,"['ddm_source', 'spacecraft_id', 'spacecraft_num', 'prn_code', 'sv_num', 'antenna', 'sc_lat', 'sc_lon', 'sc_alt', 'wind_speed', 'fds_nbrcs_wind_speed', 'fds_les_wind_speed', 'preliminary_yslf_nbrcs_high_wind_speed', 'preliminary_yslf_wind_speed', 'preliminary_yslf_wind_speed_uncertainty', 'wind_speed_uncertainty', 'wind_speed_bias', 'azimuth_angle', 'sc_roll', 'commanded_sc_roll', 'mean_square_slope', 'mean_square_slope_uncertainty', 'incidence_angle', 'nbrcs_mean', 'les_mean', 'range_corr_gain', 'fresnel_coeff', 'bit_ratio_lo_hi_starboard', 'bit_ratio_lo_hi_port', 'bit_ratio_lo_hi_zenith', 'port_gain_setting', 'starboard_gain_setting', 'num_ddms_utilized', 'sample_flags', 'fds_sample_flags', 'yslf_sample_flags', 'mss_sample_flags', 'sum_neg_brcs_value_used_for_nbrcs_flags', 'ddm_obs_utilized_flag', 'ddm_num_averaged_l1', 'ddm_channel', 'ddm_les', 'ddm_nbrcs', 'swh', 'swh_swell_sum', 'swh_corr_method', 'ddm_sample_index', 'ddm_averaged_l1_utilized_flag']",ok,,https -C2205121698-POCLOUD,CYGNSS_L3_S1.0,CYGNSS Level 3 Storm Centric Grid Science Data Record Version 1.0,POCLOUD,2018-08-05T12:00:00.000Z,2021-12-31T23:59:59.999Z,-180.0,0.0,0.0,55.0,https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/CYGNSS_L3_S1.0/2018/cyg.ddmi.JOHN.ep.2018.12.l3.storm-grid-wind.best.6hr.a10.d11.nc,"['epoch_time', 'best_track_storm_center_lat', 'best_track_storm_center_lon', 'best_track_storm_status', 'best_track_max_sustained_wind_speed', 'best_track_r34_ne', 'best_track_r34_nw', 'best_track_r34_sw', 'best_track_r34_se', 'quality_status', 'storm_centric_wind_speed', 'wind_speed', 'wind_averaging_status', 'num_wind_speed_tracks', 'num_winds']",ok,,https -C2251464847-POCLOUD,CYGNSS_L3_V2.1,CYGNSS Level 3 Science Data Record Version 2.1,POCLOUD,2017-03-18T00:30:00.000Z,,-180.0,-40.0,180.0,40.0,https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/CYGNSS_L3_V2.1/2017/077/cyg.ddmi.s20170318-003000-e20170318-233000.l3.grid-wind.a10.d21.nc,"['wind_speed', 'wind_speed_uncertainty', 'num_wind_speed_samples', 'yslf_wind_speed', 'yslf_wind_speed_uncertainty', 'num_yslf_wind_speed_samples', 'mean_square_slope', 'mean_square_slope_uncertainty', 'num_mss_samples']",ok,,https -C2345896855-ORNL_CLOUD,C_Pools_Fluxes_CONUS_1837,"CMS: Terrestrial Carbon Stocks, Emissions, and Fluxes for Conterminous US, 2001-2016",ORNL_CLOUD,2001-01-01T00:00:00.000Z,2016-12-31T23:59:59.999Z,-130.0,25.0,-60.0,50.0,https://data.ornldaac.earthdata.nasa.gov/protected/cms/C_Pools_Fluxes_CONUS/data/conus_SoilC.nc4,"['soilC', 'soilC_uncertainty', 'crs', 'time_bnds']",ok,,https -C2036881727-POCLOUD,DMI_OI-DMI-L4-GLOB-v1.0,GHRSST Level 4 DMI_OI Global Foundation Sea Surface Temperature Analysis (GDS version 2),POCLOUD,2013-04-30T00:00:00.000Z,,-180.0,-90.0,180.0,90.0,https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/DMI_OI-DMI-L4-GLOB-v1.0/20130430000000-DMI-L4_GHRSST-SSTfnd-DMI_OI-GLOB-v02.0-fv01.0.nc,"['analysed_sst', 'analysis_error', 'mask', 'sea_ice_fraction']",ok,,https -C2170971503-ORNL_CLOUD,Dall_Sheep_Snowpack_1602,"ABoVE: Dall Sheep Response to Snow and Landscape Covariates, Alaska, 2005-2008",ORNL_CLOUD,2005-09-01T00:00:00.000Z,2008-08-31T23:59:59.999Z,-154.526,59.976,-153.033,61.0517,https://data.ornldaac.earthdata.nasa.gov/protected/above/Dall_Sheep_Snowpack/data/snow_depth_10000m_2005.nc4,"['SnowDepth_10km', 'albers_conical_equal_area', 'lat', 'lon', 'time_bnds']",ok,,https -C3104728587-ORNL_CLOUD,DeltaX_LandAccretionMap_WLD_2308,"Delta-X: Modeled Land Accretion Rate Maps, Wax Lake Delta, MRD, LA, USA, 2021",ORNL_CLOUD,2021-03-20T00:00:00.000Z,2021-08-27T23:59:59.999Z,-91.5784,29.3892,-91.3286,29.595,https://data.ornldaac.earthdata.nasa.gov/protected/deltax/DeltaX_LandAccretionMap_WLD/data/Delta-X_Land_Accretion_Rate_2021.nc,"['WLD_AccRate_FA21', 'WLD_AccRate_SP21', 'WLD_AccRate_Upscale', 'xcoor', 'ycoor']",ok,,https -C2389176598-ORNL_CLOUD,Disturbance_Biomass_Maps_1679,"Disturbance History and Forest Biomass from Landsat for Six US Sites, 1985-2014",ORNL_CLOUD,1984-01-01T00:00:00.000Z,2014-12-31T23:59:59.999Z,-123.235,32.2654,-68.4809,48.2886,https://data.ornldaac.earthdata.nasa.gov/protected/cms/Disturbance_Biomass_Maps/data/disturbance_OR.nc,"['startYear', 'endYear', 'duration', 'preBrightness', 'preGreenness', 'preWetness', 'postBrightness', 'postGreenness', 'postWetness', 'crs']",ok,,https -C2207986936-ORNL_CLOUD,ENVISAT_SCIAMACHY_SIF_1871,"L2 Solar-Induced Fluorescence (SIF) from SCIAMACHY, 2003-2012",ORNL_CLOUD,2003-01-01T00:00:00.000Z,2012-04-08T23:59:59.999Z,-180.0,-58.0,180.0,70.0,https://data.ornldaac.earthdata.nasa.gov/protected/sif-esdr/17-MEASURES-0032/ENVISAT_SCIAMACHY_SIF/data/NSIFv2.6.2.SCIA.20030101_v2.9.1_all.nc,"['SIF_740', 'Daily_Averaged_SIF', 'SIF_Uncertainty', 'SIF_Unadjusted', 'Cloud_Fraction', 'Quality_Flag', 'Surface_Pressure', 'SZA', 'VZA', 'RAz', 'Refl670', 'Refl780', 'Latitude_Corners', 'Longitude_Corners', 'Scan_Number', 'Residual', 'Iterations', 'Satellite_Height', 'Earth_Radius', 'Integration_Time']",ok,,https -C2764707175-ORNL_CLOUD,FluxSat_GPP_FPAR_1835,"Global MODIS and FLUXNET-derived Daily Gross Primary Production, V2",ORNL_CLOUD,2000-03-01T00:00:00.000Z,2020-08-01T23:59:59.999Z,-180.0,-90.0,180.0,90.0,https://data.ornldaac.earthdata.nasa.gov/protected/global_vegetation/FluxSat_GPP_FPAR/data/GPP_FluxSat_daily_v2_200003.nc4,"['BRDF_Quality', 'FPAR_LUE_constitutive', 'GPP', 'GPP_uncertainty', 'Percent_Inputs', 'time_bnds', 'crs']",ok,,https -C2731041317-POCLOUD,G18-ABI-L3C-ACSPO-v2.90,GHRSST L3C NOAA/ACSPO GOES-18/ABI West America Region Sea Surface Temperature v2.90 dataset,POCLOUD,2022-06-07T00:00:00.000Z,,163.0,-60.0,-77.0,60.0,https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/G18-ABI-L3C-ACSPO-v2.90/20220607020000-STAR-L3C_GHRSST-SSTsubskin-ABI_G18-ACSPO_V2.90-v02.0-fv01.0.nc,"['quality_level', 'l2p_flags', 'or_number_of_pixels', 'sea_surface_temperature', 'dt_analysis', 'satellite_zenith_angle', 'sses_bias', 'sses_standard_deviation', 'wind_speed', 'sst_dtime', 'crs', 'sst_gradient_magnitude', 'sst_front_position']",ok,,https -C2036881735-POCLOUD,GAMSSA_28km-ABOM-L4-GLOB-v01,GHRSST Level 4 GAMSSA_28km Global Foundation Sea Surface Temperature Analysis v1.0 dataset (GDS2),POCLOUD,2008-07-23T00:00:00.000Z,,-180.0,-90.0,180.0,90.0,https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/GAMSSA_28km-ABOM-L4-GLOB-v01/20080723120000-ABOM-L4_GHRSST-SSTfnd-GAMSSA_28km-GLOB-v02.0-fv01.0.nc,"['sea_ice_fraction', 'analysed_sst', 'analysis_error', 'mask', 'crs']",ok,,https -C2395504063-ORNL_CLOUD,GCAM_Land_Cover_2005-2095_1216,"CMS: Land Cover Projections (5.6-km) from GCAM v3.1 for Conterminous USA, 2005-2095",ORNL_CLOUD,2005-01-01T00:00:00.000Z,2095-12-31T23:59:59.999Z,-124.69,25.25,-67.09,49.35,https://data.ornldaac.earthdata.nasa.gov/protected/cms/GCAM_Land_Cover_2005-2095/data/GCAM_4p5_2005_2095.nc4,[],open_failed,"Failed to decode variable 'time': unable to decode time units 'years since 2005-01-01 00:00:00' with ""calendar 'standard'"". Try opening your dataset with decode_times=False or installing cftime if it is not installed.",https -C3558858528-OB_CLOUD,GOCI_L2_OC,"COMS GOCI Level-2 Regional Ocean Color (OC) Data, version 2014.0",OB_CLOUD,2010-06-26T00:00:00Z,2021-03-31T23:59:59Z,-180.0,-90.0,180.0,90.0,https://obdaac-tea.earthdatacloud.nasa.gov/ob-cumulus-prod-public/G2011091001641.L2_COMS_OC.nc,[],ok,,https -C2036877806-POCLOUD,GOES16-SST-OSISAF-L3C-v1.0,GHRSST L3C hourly America Region sub-skin Sea Surface Temperature v1.0 from ABI on GOES16 produced by OSISAF,POCLOUD,2017-12-14T14:30:00.000Z,,-135.0,-60.0,-15.0,60.0,https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/GOES16-SST-OSISAF-L3C-v1.0/2017/348/20171214180000-OSISAF-L3C_GHRSST-SSTsubskin-GOES16-ssteqc_goes16_20171214_180000-v02.0-fv01.0.nc,"['sea_surface_temperature', 'sst_dtime', 'sses_bias', 'sses_standard_deviation', 'dt_analysis', 'wind_speed', 'sea_ice_fraction', 'aerosol_dynamic_indicator', 'adi_dtime_from_sst', 'sources_of_adi', 'l2p_flags', 'quality_level', 'satellite_zenith_angle', 'solar_zenith_angle', 'or_latitude', 'or_longitude']",ok,,https -C2390701035-ORNL_CLOUD,GPP_CONUS_TROPOMI_1875,"CMS: Daily Gross Primary Productivity over CONUS from TROPOMI SIF, 2018-2021",ORNL_CLOUD,2018-02-15T00:00:00.000Z,2021-10-15T23:59:59.999Z,-125.002,23.9975,-64.9993,50.0,https://data.ornldaac.earthdata.nasa.gov/protected/cms/GPP_CONUS_TROPOMI/data/TROPOMI_20180215.nc4,"['crs', 'date', 'SIF', 'GPP', 'sigma']",ok,,https -C3293388915-ORNL_CLOUD,GPP_COS_Conductance_SoilFluxes_2324,"SiB4 Modeled 0.5-degree Carbonyl Sulfide Vegetation and Soil Fluxes, 2000-2020",ORNL_CLOUD,2000-01-01T00:00:00.000Z,2020-12-31T23:59:59.999Z,-180.0,53.0,180.0,90.0,https://data.ornldaac.earthdata.nasa.gov/protected/above/GPP_COS_Conductance_SoilFluxes/data/sib4-hourly-2000-01-01.nc4,"['time_bnds', 'crs', 'assim', 'cos_assim', 'cos_grnd', 'cosgm', 'cosgt', 'gsh2o', 'pco2c', 'pco2cas', 'pco2i', 'pco2s', 'pft_area', 'pft_names', 'resp_auto', 'resp_het']",ok,,https -C2036877754-POCLOUD,Geo_Polar_Blended-OSPO-L4-GLOB-v1.0,GHRSST Level 4 OSPO Global Foundation Sea Surface Temperature Analysis (GDS version 2),POCLOUD,2014-06-02T00:00:00.000Z,,-180.0,-90.0,180.0,90.0,https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/Geo_Polar_Blended-OSPO-L4-GLOB-v1.0/20140602000000-OSPO-L4_GHRSST-SSTfnd-Geo_Polar_Blended-GLOB-v02.0-fv01.0.nc,"['analysed_sst', 'analysis_error', 'sea_ice_fraction', 'mask']",ok,,https -C2036877745-POCLOUD,Geo_Polar_Blended_Night-OSPO-L4-GLOB-v1.0,GHRSST Level 4 OSPO Global Nighttime Foundation Sea Surface Temperature Analysis (GDS version 2),POCLOUD,2014-06-02T00:00:00.000Z,,-180.0,-90.0,180.0,90.0,https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/Geo_Polar_Blended_Night-OSPO-L4-GLOB-v1.0/20140602000000-OSPO-L4_GHRSST-SSTfnd-Geo_Polar_Blended_Night-GLOB-v02.0-fv01.0.nc,"['analysed_sst', 'analysis_error', 'sea_ice_fraction', 'mask']",ok,,https -C2840821292-ORNL_CLOUD,Global_Freshwater_CH4Emissions_2253,"Global Wetland Methane Emissions derived from FLUXNET and the UpCH4 Model, 2001-2018",ORNL_CLOUD,2001-01-01T00:00:00.000Z,2018-12-31T23:59:59.999Z,-180.0,-56.0,180.0,85.0,https://data.ornldaac.earthdata.nasa.gov/protected/cms/Global_Freshwater_CH4Emissions/data/upch4_v04_m1_mgCH4m2day_Aw.nc,"['time_bnds', 'time', 'crs', 'mean_ch4', 'sd_ch4', 'var_ch4']",ok,,https -C2764746271-ORNL_CLOUD,Global_Lakes_Methane_2008,"Global-Gridded Daily Methane Emissions Climatology from Lake Systems, 2003-2015",ORNL_CLOUD,2012-01-01T00:00:00.000Z,2012-12-31T23:59:59.999Z,-180.0,-90.0,180.0,90.0,https://data.ornldaac.earthdata.nasa.gov/protected/global_climate/Global_Lakes_Methane/data/Lake_CH4_Fall_Turnover_Emiss.nc,"['FallTurnover_TotalLakes', 'climatology_bounds', 'crs']",ok,,https -C2764742564-ORNL_CLOUD,Global_Monthly_GPP_1789,"Global Monthly GPP from an Improved Light Use Efficiency Model, 1982-2016",ORNL_CLOUD,1982-01-01T00:00:00.000Z,2017-01-01T23:59:59.999Z,-180.0,-90.0,180.0,90.0,https://data.ornldaac.earthdata.nasa.gov/protected/global_vegetation/Global_Monthly_GPP/data/gross_primary_productivity_monthly_1982-2016.nc4,"['time_bnds', 'GPP', 'crs']",ok,,https -C2515869951-ORNL_CLOUD,Global_Reservoirs_Methane_1918,Global-Gridded Daily Methane Emissions from Inland Dam-Reservoir Systems,ORNL_CLOUD,2002-01-01T00:00:00.000Z,2015-12-31T23:59:59.999Z,-180.0,-90.0,180.0,90.0,https://data.ornldaac.earthdata.nasa.gov/protected/nacp/Global_Reservoirs_Methane/data/reservoir_methane_emissions.nc,"['climatology_bounds', 'crs', 'time', 'emission_season', 'total_emission_rate', 'boreal_emission_rate', 'temperate_emission_rate', 'tropical_subtropical_emission_rate']",ok,,https -C2207986708-ORNL_CLOUD,Global_SIF_OCO2_MODIS_1863,"High Resolution Global Contiguous SIF Estimates from OCO-2 SIF and MODIS, Version 2",ORNL_CLOUD,2014-09-01T00:00:00.000Z,2020-07-31T23:59:59.999Z,-180.0,-90.0,180.0,90.0,https://data.ornldaac.earthdata.nasa.gov/protected/sif-esdr/17-MEASURES-0032/Global_SIF_OCO2_MODIS/data/sif_ann_201409a.nc,"['sif_ann', 'crs']",ok,,https -C2744808497-POCLOUD,H09-AHI-L2P-ACSPO-v2.90,GHRSST L2P NOAA/ACSPO Himawari-09 AHI Pacific Ocean Region Sea Surface Temperature v2.90 dataset,POCLOUD,2022-10-22T00:00:00.000Z,,80.0,-60.0,-160.0,60.0,https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/H09-AHI-L2P-ACSPO-v2.90/20221022180000-STAR-L2P_GHRSST-SSTsubskin-AHI_H09-ACSPO_V2.90-v02.0-fv01.0.nc,"['sst_dtime', 'satellite_zenith_angle', 'sea_surface_temperature', 'brightness_temperature_08um6', 'brightness_temperature_10um4', 'brightness_temperature_11um2', 'brightness_temperature_12um3', 'sses_bias', 'sses_standard_deviation', 'dt_analysis', 'wind_speed', 'l2p_flags', 'quality_level', 'geostationary', 'sst_gradient_magnitude', 'sst_front_position']",ok,,https -C2744809790-POCLOUD,H09-AHI-L3C-ACSPO-v2.90,GHRSST L3C NOAA/ACSPO Himawari-09 AHI Pacific Ocean Region Sea Surface Temperature v2.90 dataset,POCLOUD,2022-10-22T00:00:00.000Z,,80.0,-60.0,-160.0,60.0,https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/H09-AHI-L3C-ACSPO-v2.90/20221022180000-STAR-L3C_GHRSST-SSTsubskin-AHI_H09-ACSPO_V2.90-v02.0-fv01.0.nc,"['quality_level', 'l2p_flags', 'or_number_of_pixels', 'sea_surface_temperature', 'dt_analysis', 'satellite_zenith_angle', 'sses_bias', 'sses_standard_deviation', 'wind_speed', 'sst_dtime', 'crs', 'sst_gradient_magnitude', 'sst_front_position']",ok,,https -C2216863856-ORNL_CLOUD,HWSD_1247,Regridded Harmonized World Soil Database v1.2,ORNL_CLOUD,2000-01-01T00:00:00.000Z,2000-12-31T23:59:59.999Z,-180.0,-90.0,180.0,90.0,https://data.ornldaac.earthdata.nasa.gov/protected/global_soil/HWSD/data/T_PH_H2O.nc4,['T_PH_H2O'],ok,,https -C2517357574-ORNL_CLOUD,HighRes_ClimateData_Western_US_1682,"NACP: Climate Data Inputs (3-hourly) for Community Land Model, Western USA, 1979-2015",ORNL_CLOUD,1979-01-01T00:00:00.000Z,2016-01-01T23:59:59.999Z,-124.812,31.1875,-101.979,49.0208,https://data.ornldaac.earthdata.nasa.gov/protected/nacp/HighRes_ClimateData_Western_US/data/western_USA_wind_temp_humidity_3hr_1979-01.nc4,"['LONGXY', 'LATIXY', 'crs', 'huss', 'tas', 'time_bnds', 'wind_speed']",ok,,https -C2706327711-ORNL_CLOUD,Insitu_Tower_Greenhouse_Gas_1798,"ACT-America: L1 Raw, Uncalibrated In-Situ CO2, CO, and CH4 Mole Fractions from Towers",ORNL_CLOUD,2015-01-01T00:00:00.000Z,2019-12-31T23:59:59.999Z,-98.588,30.1951,-76.4188,44.0502,https://data.ornldaac.earthdata.nasa.gov/protected/actamerica/Insitu_Tower_Greenhouse_Gas/data/ACTAMERICA-PICARRO_Tower-L1_Mooresville_CFKADS2025_20150101_20160708.nc,"['sampling_height', 'FRAC_DAYS_SINCE_JAN1', 'ALARM_STATUS', 'CH4', 'CH4_dry', 'CO', 'CO2', 'CO2_dry', 'CavityPressure', 'CavityTemp', 'DasTemp', 'H2O', 'InletValve', 'OutletValve', 'h2o_pct', 'h2o_reported', 'solenoid_valves', 'species', 'b_h2o_pct']",ok,,https -C2036881956-POCLOUD,K10_SST-NAVO-L4-GLOB-v01,GHRSST Level 4 K10_SST Global 10 km Analyzed Sea Surface Temperature from Naval Oceanographic Office (NAVO) in GDS2.0,POCLOUD,2019-01-09T00:00:00.000Z,,-180.0,-90.0,180.0,90.0,https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/K10_SST-NAVO-L4-GLOB-v01/20190109000000-NAVO-L4_GHRSST-SST1m-K10_SST-GLOB-v02.0-fv01.0.nc,"['analysed_sst', 'analysis_error', 'sea_ice_fraction', 'mask']",ok,,https -C2954717391-ORNL_CLOUD,LAI_Africa_2325,"MODIS-derived Aggregate, Woody and Herbaceous Leaf Area Index for Africa, 2002-2022",ORNL_CLOUD,2002-07-05T00:00:00.000Z,2022-07-29T23:59:59.999Z,-21.2839,-40.02,63.8625,20.02,https://data.ornldaac.earthdata.nasa.gov/protected/global_vegetation/LAI_Africa/data/MCD15A2H.A2002185.h18v09.061.partitionedLAI.nc,"['aggregate', 'herbaceous', 'woody']",ok,,https -C2784898845-ORNL_CLOUD,Land_Use_Harmonization_V1_1248,"LUH1: Harmonized Global Land Use for Years 1500-2100, V1",ORNL_CLOUD,1500-01-01T00:00:00.000Z,2100-01-01T23:59:59.999Z,-180.0,-90.0,180.0,90.0,,,no_granules,, -C2764728966-ORNL_CLOUD,Land_Use_Harmonization_V2_1721,LUH2-ISIMIP2b Harmonized Global Land Use for the Years 2015-2100,ORNL_CLOUD,2015-01-01T00:00:00.000Z,2100-01-01T23:59:59.999Z,-180.0,-90.0,180.0,90.0,https://data.ornldaac.earthdata.nasa.gov/protected/global_vegetation/Land_Use_Harmonization_V2/data/RCP26_GFDL_management.nc4,"['time_bnds', 'fertl_c3ann', 'irrig_c3ann', 'crpbf_c3ann', 'fertl_c4ann', 'irrig_c4ann', 'crpbf_c4ann', 'fertl_c3per', 'irrig_c3per', 'crpbf_c3per', 'fertl_c4per', 'irrig_c4per', 'crpbf_c4per', 'fertl_c3nfx', 'irrig_c3nfx', 'crpbf_c3nfx', 'fharv_c3per', 'fharv_c4per', 'flood', 'rndwd', 'fulwd', 'combf', 'crpbf_total', 'crs']",ok,,https -C2704977536-ORNL_CLOUD,MFLL_CO2_Weighting_Functions_1891,"ACT-America: L2 Weighting Functions for Airborne Lidar Column-avg CO2, Eastern USA",ORNL_CLOUD,2016-05-27T00:00:00.000Z,2018-05-20T23:59:59.999Z,-106.053,27.2303,-71.9111,49.1081,https://data.ornldaac.earthdata.nasa.gov/protected/actamerica/MFLL_CO2_Weighting_Functions/data/ACTAmerica-MFLL-WeightingFn_C130_2016-05-27T145325_R0.nc,"['GPS_Altitude', 'Latitude', 'Longitude', 'Range_nadir', 'Weighting_Pressure']",ok,,https -C2704971204-ORNL_CLOUD,MFLL_XCO2_Range_10Hz_1892,"ACT-America: L2 Remotely Sensed Column-avg CO2 by Airborne Lidar, Lite, Eastern USA",ORNL_CLOUD,2016-05-27T00:00:00.000Z,2018-05-20T23:59:59.999Z,-106.054,27.2303,-71.9109,49.1083,https://data.ornldaac.earthdata.nasa.gov/protected/actamerica/MFLL_XCO2_Range_10Hz/data/ACTAmerica-MFLL-Lite-lev2_C130_2016-05-27T145325_R0.nc,"['Column_CO2', 'Data_quality_flag', 'GPS_Altitude', 'Latitude', 'Longitude', 'Range_nadir']",ok,,https -C2873769608-LARC_CLOUD,MIL2ASAF,MISR Level 2 FIRSTLOOK Aerosol parameters V002,LARC_CLOUD,1999-12-18T00:00:00.000Z,,-180.0,-90.0,180.0,90.0,https://data.asdc.earthdata.nasa.gov/asdc-prod-protected/MISR/MIL2ASAF.002/2017.11.01/MISR_AM1_AS_AEROSOL_FIRSTLOOK_P113_O095060_F13_0023.nc,[],ok,,https -C3380709124-OB_CLOUD,MODISA_L3m_CHL_NRT,"Aqua MODIS Level-3 Global Mapped Chlorophyll (CHL) - NRT Data, version 2022.0",OB_CLOUD,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0,https://obdaac-tea.earthdatacloud.nasa.gov/ob-cumulus-prod-public/AQUA_MODIS.20230101_20230131.L3m.MO.CHL.chlor_a.9km.NRT.nc,"['chlor_a', 'palette']",ok,,https -C3380709177-OB_CLOUD,MODISA_L3m_IOP,"Aqua MODIS Level-3 Global Mapped Inherent Optical Properties (IOP) Data, version 2022.0",OB_CLOUD,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0,https://obdaac-tea.earthdatacloud.nasa.gov/ob-cumulus-prod-public/AQUA_MODIS.20020704_20250228.L3m.CU.IOP.a_412.4km.nc,"['a_412', 'palette']",ok,,https -C3380709198-OB_CLOUD,MODISA_L3m_KD,"Aqua MODIS Level-3 Global Mapped Diffuse Attenuation Coefficient for Downwelling Irradiance (KD) Data, version 2022.0",OB_CLOUD,2002-07-04T00:00:00Z,,-180.0,-90.0,180.0,90.0,https://obdaac-tea.earthdatacloud.nasa.gov/ob-cumulus-prod-public/AQUA_MODIS.20020704_20250228.L3m.CU.KD.Kd_490.9km.nc,"['Kd_490', 'palette']",ok,,https -C3384236977-OB_CLOUD,MODIST_L2_OC_NRT,"Terra MODIS Level-2 Regional Ocean Color (OC) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2000-02-24T00:00:00Z,,-180.0,-90.0,180.0,90.0,https://obdaac-tea.earthdatacloud.nasa.gov/ob-cumulus-prod-public/TERRA_MODIS.20250327T122500.L2.OC.NRT.nc,[],ok,,https -C3384237428-OB_CLOUD,MODIST_L3m_CHL,"Terra MODIS Level-3 Global Mapped Chlorophyll (CHL) Data, version 2022.0",OB_CLOUD,2000-02-24T00:00:00Z,,-180.0,-90.0,180.0,90.0,https://obdaac-tea.earthdatacloud.nasa.gov/ob-cumulus-prod-public/TERRA_MODIS.20000224_20250228.L3m.CU.CHL.chlor_a.9km.nc,"['chlor_a', 'palette']",ok,,https -C1940473819-POCLOUD,MODIS_A-JPL-L2P-v2019.0,GHRSST Level 2P Global Sea Surface Skin Temperature from the Moderate Resolution Imaging Spectroradiometer (MODIS) on the NASA Aqua satellite (GDS2),POCLOUD,2002-07-04T00:00:00.000Z,,-180.0,-90.0,180.0,90.0,https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/MODIS_A-JPL-L2P-v2019.0/20020704000015-JPL-L2P_GHRSST-SSTskin-MODIS_A-N-v02.0-fv01.0.nc,"['sea_surface_temperature', 'sst_dtime', 'quality_level', 'sses_bias', 'sses_standard_deviation', 'l2p_flags', 'sea_surface_temperature_4um', 'quality_level_4um', 'sses_bias_4um', 'sses_standard_deviation_4um', 'wind_speed', 'dt_analysis']",ok,,https -C2036878045-POCLOUD,MW_IR_OI-REMSS-L4-GLOB-v5.0,GHRSST Level 4 MW_IR_OI Global Foundation Sea Surface Temperature analysis version 5.0 from REMSS,POCLOUD,2002-06-01T00:00:00.000Z,,-179.0,-90.0,180.0,90.0,https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/MW_IR_OI-REMSS-L4-GLOB-v5.0/20020601120000-REMSS-L4_GHRSST-SSTfnd-MW_IR_OI-GLOB-v02.0-fv05.0.nc,"['analysed_sst', 'analysis_error', 'sea_ice_fraction', 'mask']",ok,,https -C2205102254-POCLOUD,MW_IR_OI-REMSS-L4-GLOB-v5.1,GHRSST Level 4 MW_IR_OI Global Foundation Sea Surface Temperature analysis version 5.1 from REMSS,POCLOUD,2002-06-01T00:00:00.000Z,,-179.0,-90.0,180.0,90.0,https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/MW_IR_OI-REMSS-L4-GLOB-v5.1/20020601120000-REMSS-L4_GHRSST-SSTfnd-MW_IR_OI-GLOB-v02.0-fv05.1.nc,"['analysed_sst', 'analysis_error', 'sea_ice_fraction', 'mask']",ok,,https -C2036878052-POCLOUD,MW_OI-REMSS-L4-GLOB-v5.0,GHRSST Level 4 MW_OI Global Foundation Sea Surface Temperature analysis version 5.0 from REMSS,POCLOUD,1997-12-31T16:00:00.000Z,,-180.0,-90.0,180.0,90.0,https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/MW_OI-REMSS-L4-GLOB-v5.0/19980101120000-REMSS-L4_GHRSST-SSTfnd-MW_OI-GLOB-v02.0-fv05.0.nc,"['analysed_sst', 'analysis_error', 'sea_ice_fraction', 'mask']",ok,,https -C2205105895-POCLOUD,MW_OI-REMSS-L4-GLOB-v5.1,GHRSST Level 4 MW_OI Global Foundation Sea Surface Temperature analysis version 5.1 from REMSS,POCLOUD,1997-12-31T16:00:00.000Z,,-180.0,-90.0,180.0,90.0,https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/MW_OI-REMSS-L4-GLOB-v5.1/19980101120000-REMSS-L4_GHRSST-SSTfnd-MW_OI-GLOB-v02.0-fv05.1.nc,"['analysed_sst', 'analysis_error', 'sea_ice_fraction', 'mask']",ok,,https -C2764692443-ORNL_CLOUD,Mean_Seasonal_LAI_1653,"Global Monthly Mean Leaf Area Index Climatology, 1981-2015",ORNL_CLOUD,1981-08-01T00:00:00.000Z,2015-08-31T23:59:59.999Z,-180.0,-90.0,180.0,90.0,https://data.ornldaac.earthdata.nasa.gov/protected/global_vegetation/Mean_Seasonal_LAI/data/LAI_mean_monthly_1981-2015.nc4,"['LAI', 'climatology_bounds']",ok,,https -C2847115945-ORNL_CLOUD,MetOpA_GOME2_SIF_V2_2292,"L2 Daily Solar-Induced Fluorescence (SIF) from MetOp-A GOME-2, 2007-2018, V2",ORNL_CLOUD,2007-02-01T00:00:00.000Z,2018-02-01T23:59:59.999Z,-180.0,-89.7804,180.0,89.5996,https://data.ornldaac.earthdata.nasa.gov/protected/sif-esdr/17-MEASURES-0032/MetOpA_GOME2_SIF_V2/data/NSIFv2.6.2.GOME-2A.20070201_all.nc,"['SIF_740', 'Daily_Averaged_SIF', 'SIF_Uncertainty', 'SIF_Unadjusted', 'Cloud_Fraction', 'Quality_Flag', 'Surface_Pressure', 'SZA', 'VZA', 'SAz', 'VAz', 'Refl670', 'Refl780', 'Latitude_Corners', 'Longitude_Corners', 'Scan_Number', 'Residual', 'Iterations', 'Satellite_Height', 'Earth_Radius', 'Line_Number']",ok,,https -C2840822442-ORNL_CLOUD,MetOpB_GOME2_SIF_2182,"L2 Daily Solar-Induced Fluorescence (SIF) from MetOp-B GOME-2, 2013-2021",ORNL_CLOUD,2013-04-01T00:00:00.000Z,2021-06-07T23:59:59.999Z,-180.0,-89.7694,180.0,89.5944,https://data.ornldaac.earthdata.nasa.gov/protected/sif-esdr/17-MEASURES-0032/MetOpB_GOME2_SIF/data/NSIFv2.6.2.GOME-2B.20130401_all.nc,"['SIF_740', 'Daily_Averaged_SIF', 'SIF_Uncertainty', 'SIF_Unadjusted', 'Cloud_Fraction', 'Quality_Flag', 'Surface_Pressure', 'SZA', 'VZA', 'SAz', 'VAz', 'Refl670', 'Refl780', 'Latitude_Corners', 'Longitude_Corners', 'Scan_Number', 'Residual', 'Iterations', 'Satellite_Height', 'Earth_Radius', 'Line_Number']",ok,,https -C2434072484-ORNL_CLOUD,NACP_ACES_V2_1943,"Anthropogenic Carbon Emission System, 2012-2017, Version 2",ORNL_CLOUD,2012-01-01T00:00:00.000Z,2018-01-01T23:59:59.999Z,-128.267,23.0132,-65.3066,48.1089,https://data.ornldaac.earthdata.nasa.gov/protected/nacp/NACP_ACES_V2/data/aces_Elec_201201.nc4,"['crs', 'lat', 'lon', 'time_bnds', 'flux_co2']",ok,,https -C2517656499-ORNL_CLOUD,NACP_Forest_Conservation_1662,"NACP: Forest Carbon Stocks, Fluxes and Productivity Estimates, Western USA, 1979-2099",ORNL_CLOUD,1979-01-01T00:00:00.000Z,2099-12-31T23:59:59.999Z,-124.812,31.1875,-101.961,49.0351,https://data.ornldaac.earthdata.nasa.gov/protected/nacp/NACP_Forest_Conservation/data/IPSL_1979_2014_merge.nc,"['NPP', 'GPP', 'RH', 'RA', 'NEP', 'COL_FIRE_CLOSS', 'AGC', 'Stemc_alloc', 'NEE', 'BTRAN', 'burned_area_fraction']",ok,,https -C2552206090-ORNL_CLOUD,NACP_MsTMIP_Model_Driver_1220,NACP MsTMIP: Global and North American Driver Data for Multi-Model Intercomparison,ORNL_CLOUD,1700-01-01T00:00:00.000Z,2010-12-31T23:59:59.999Z,-178.75,-78.25,179.95,89.75,https://data.ornldaac.earthdata.nasa.gov/protected/nacp/NACP_MsTMIP_Model_Driver/data/mstmip_driver_global_hd_c4_rfrac_presentveg_v1.nc4,"['crs', 'lon_bnds', 'lat_bnds', 'C4_frac']",ok,,https -C2840815089-ORNL_CLOUD,NACP_PalEON_MIP_1779,"PalEON: Terrestrial Ecosystem Model Drivers for the Northeastern U.S., 0850-2010",ORNL_CLOUD,0850-01-01T00:00:00.000Z,2010-12-31T23:59:59.999Z,-100.001,35.0,-60.0,50.001,,,search_failed,date_from must be earlier than date_to., -C3309442935-POCLOUD,NASA_SSH_REF_SIMPLE_GRID_V1,NASA-SSH Simple Gridded Sea Surface Height from Standardized Reference Missions Only Version 1,POCLOUD,1992-10-25T00:00:00.000Z,,-180.0,-90.0,180.0,90.0,https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/NASA_SSH_REF_SIMPLE_GRID_V1/NASA-SSH_alt_ref_simple_grid_v1_19921102.nc,"['ssha', 'basin_flag', 'counts', 'time', 'basin_names_table']",ok,,https -C3085229833-POCLOUD,NEUROST_SSH-SST_L4_V2024.0,Daily NeurOST L4 Sea Surface Height and Surface Geostrophic Currents,POCLOUD,2010-01-01T00:00:00.000Z,,-180.0,-70.0,180.0,79.9,https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/NEUROST_SSH-SST_L4_V2024.0/NeurOST_SSH-SST_20100101_20240507.nc,"['sla', 'adt', 'ugosa', 'vgosa', 'sn', 'ss', 'zeta', 'ugos', 'vgos']",ok,,https -C3177782311-NSIDC_CPRD,NSIDC-0001,DMSP SSM/I-SSMIS Daily Polar Gridded Brightness Temperatures V006,NSIDC_CPRD,1987-07-09T00:00:00.000Z,,-180.0,-90.0,180.0,90.0,https://data.nsidc.earthdatacloud.nasa.gov/nsidc-cumulus-prod-protected/PM/NSIDC-0001/6/1987/07/09/NSIDC0001_TB_PS_N12.5km_19870709_v6.0.nc,['crs'],ok,,https -C2519306057-NSIDC_ECS,NSIDC-0080,Near-Real-Time DMSP SSM/I-SSMIS Daily Polar Gridded Brightness Temperatures V002,NSIDC_ECS,2023-01-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0,https://n5eil01u.ecs.nsidc.org/DP1/PM/NSIDC-0080.002/2023.01.01/NSIDC0080_TB_PS_N12.5km_20230101_v2.0.nc,['crs'],ok,,https -C3177838478-NSIDC_CPRD,NSIDC-0080,Near-Real-Time DMSP SSM/I-SSMIS Daily Polar Gridded Brightness Temperatures V002,NSIDC_CPRD,2023-01-01T00:00:00.000Z,,-180.0,-90.0,180.0,90.0,https://data.nsidc.earthdatacloud.nasa.gov/nsidc-cumulus-prod-protected/PM/NSIDC-0080/2/2023/01/01/NSIDC0080_TB_PS_N12.5km_20230101_v2.0.nc,['crs'],ok,,https -C3291000346-NSIDC_CPRD,NSIDC-0530,MEaSUREs Northern Hemisphere Terrestrial Snow Cover Extent Daily 25km EASE-Grid 2.0 V001,NSIDC_CPRD,1999-01-01T00:00:00.000Z,2012-12-31T23:59:59.999Z,-180.0,0.0,180.0,90.0,https://data.nsidc.earthdatacloud.nasa.gov/nsidc-cumulus-prod-protected/MEASURES/NSIDC-0530/1/1999/01/01/nhtsd25e2_19990101_v01r01.nc,"['merged_snow_cover_extent', 'ims_snow_cover_extent', 'passive_microwave_gap_filled_snow_cover_extent', 'modis_cloud_gap_filled_snow_cover_extent', 'coord_system']",ok,,https -C2240727916-ORNL_CLOUD,NorthSlope_NEE_TVPRM_1920,"ABoVE: TVPRM Simulated Net Ecosystem Exchange, Alaskan North Slope, 2008-2017",ORNL_CLOUD,2008-01-01T00:00:00.000Z,2017-12-31T23:59:59.999Z,-177.469,56.0895,-128.592,77.2626,https://data.ornldaac.earthdata.nasa.gov/protected/above/NorthSlope_NEE_TVPRM/data/TVPRM_IVO_BES_RasterCAVM_ERA5_GOME2_2008.nc4,"['time_bnds', 'NEE', 'lat', 'lon', 'crs']",ok,,https -C2036878059-POCLOUD,OISST_HR_NRT-GOS-L4-BLK-v2.0,Black Sea High Resolution SST L4 Analysis 0.0625 deg Resolution,POCLOUD,2007-12-31T19:00:00.000Z,,26.375,38.75,42.375,48.812,https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/OISST_HR_NRT-GOS-L4-BLK-v2.0/20080101000000-GOS-L4_GHRSST-SSTfnd-OISST_HR_NRT-BLK-v02.0-fv01.0.nc,"['analysed_sst', 'analysis_error', 'sea_ice_fraction', 'mask']",ok,,https -C2036878073-POCLOUD,OISST_HR_NRT-GOS-L4-MED-v2.0,Mediterranean Sea High Resolution SST L4 Analysis 1/16deg Resolution,POCLOUD,2007-12-31T19:00:00.000Z,,-18.125,30.25,36.25,46.0,https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/OISST_HR_NRT-GOS-L4-MED-v2.0/20080101000000-GOS-L4_GHRSST-SSTfnd-OISST_HR_NRT-MED-v02.0-fv01.0.nc,"['analysed_sst', 'analysis_error', 'sea_ice_fraction', 'mask']",ok,,https -C2036878081-POCLOUD,OISST_UHR_NRT-GOS-L4-BLK-v2.0,Black Sea Ultra High Resolution SST L4 Analysis 0.01 deg Resolution,POCLOUD,2007-12-31T19:00:00.000Z,,26.375,38.75,42.375,48.812,https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/OISST_UHR_NRT-GOS-L4-BLK-v2.0/20080101000000-GOS-L4_GHRSST-SSTfnd-OISST_UHR_NRT-BLK-v02.0-fv01.0.nc,"['analysed_sst', 'analysis_error', 'sea_ice_fraction', 'mask']",ok,,https -C2036878088-POCLOUD,OISST_UHR_NRT-GOS-L4-MED-v2.0,Mediterranean Sea Ultra High Resolution SST L4 Analysis 0.01 deg Resolution,POCLOUD,2007-12-31T19:00:00.000Z,,-18.125,30.25,36.25,46.0,https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/OISST_UHR_NRT-GOS-L4-MED-v2.0/20080101000000-GOS-L4_GHRSST-SSTfnd-OISST_UHR_NRT-MED-v02.0-fv01.0.nc,"['analysed_sst', 'analysis_error', 'sea_ice_fraction', 'mask']",ok,,https -C3406446219-OB_CLOUD,OLCIS3A_L2_EFR_OC,"Sentinel-3A OLCI Level-2 Regional Earth-observation Full Resolution (EFR) Ocean Color (OC) Data, version 2022.0",OB_CLOUD,2016-04-05T00:00:00Z,,-180.0,-90.0,180.0,90.0,https://obdaac-tea.earthdatacloud.nasa.gov/ob-cumulus-prod-public/S3A_OLCI_EFRNT.20160425T113330.L2.OC.nc,[],ok,,https -C3407754974-OB_CLOUD,OLCIS3B_L2_EFR_OC,"Sentinel-3B OLCI Level-2 Regional Earth-observation Full Resolution (EFR) Ocean Color (OC) Data, version 2022.0",OB_CLOUD,2018-05-14T00:00:00Z,,-180.0,-90.0,180.0,90.0,https://obdaac-tea.earthdatacloud.nasa.gov/ob-cumulus-prod-public/S3B_OLCI_EFRNT.20180514T235640.L2.OC.nc,[],ok,,https -C2102959417-POCLOUD,OSCAR_L4_OC_INTERIM_V2.0,Ocean Surface Current Analyses Real-time (OSCAR) Surface Currents - Interim 0.25 Degree (Version 2.0),POCLOUD,2020-01-01T00:00:00.000Z,,-180.0,-89.75,180.0,89.75,https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/OSCAR_L4_OC_INTERIM_V2.0/oscar_currents_interim_20200101.nc,"['u', 'v', 'ug', 'vg']",ok,,https -C3392966961-OB_CLOUD,PACE_OCI_L1C_SCI,"PACE OCI Level-1C Science Data, version 3",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0,https://obdaac-tea.earthdatacloud.nasa.gov/ob-cumulus-prod-public/PACE_OCI.20240305T000858.L1C.V3.5km.nc,[],ok,,https -C3620139326-OB_CLOUD,PACE_OCI_L2_AER_UAA_NRT,"PACE OCI Level-2 Regional Aerosol Optical Properties, Unified Aerosol Algorithm (UAA) Algorithm - Near Real-time (NRT) Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0,https://obdaac-tea.earthdatacloud.nasa.gov/ob-cumulus-prod-public/PACE_OCI.20250702T002640.L2.AER_UAA.V3_1.NRT.nc,[],ok,,https -C3620139587-OB_CLOUD,PACE_OCI_L2_AOP_NRT,"PACE OCI Level-2 Regional Apparent Optical Properties - Near Real-time (NRT) Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0,https://obdaac-tea.earthdatacloud.nasa.gov/ob-cumulus-prod-public/PACE_OCI.20250702T002640.L2.OC_AOP.V3_1.NRT.nc,[],ok,,https -C3385050002-OB_CLOUD,PACE_OCI_L2_BGC,"PACE OCI Level-2 Regional Ocean Biogeochemical Properties Data, version 3.0",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0,https://obdaac-tea.earthdatacloud.nasa.gov/ob-cumulus-prod-public/PACE_OCI.20240513T154033.L2.OC_BGC.V3_0.nc,[],ok,,https -C3620139643-OB_CLOUD,PACE_OCI_L2_BGC_NRT,"PACE OCI Level-2 Regional Ocean Biogeochemical Properties, Near Real-time (NRT) Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0,https://obdaac-tea.earthdatacloud.nasa.gov/ob-cumulus-prod-public/PACE_OCI.20250702T002640.L2.OC_BGC.V3_1.NRT.nc,[],ok,,https -C3385049989-OB_CLOUD,PACE_OCI_L2_BGC_NRT,"PACE OCI Level-2 Regional Ocean Biogeochemical Properties, Near Real-time (NRT) Data, version 3.0",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0,https://obdaac-tea.earthdatacloud.nasa.gov/ob-cumulus-prod-public/PACE_OCI.20250101T000242.L2.OC_BGC.V3_0.NRT.nc,[],ok,,https -C3385050020-OB_CLOUD,PACE_OCI_L2_CLOUD_MASK,"PACE OCI Level-2 Regional Cloud Mask Data, version 3.0",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0,https://obdaac-tea.earthdatacloud.nasa.gov/ob-cumulus-prod-public/PACE_OCI.20240627T060023.L2.CLDMASK.V3_0.nc,[],ok,,https -C3385050043-OB_CLOUD,PACE_OCI_L2_IOP,"PACE OCI Level-2 Regional Inherent Optical Properties (IOP) Data, version 3.0",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0,https://obdaac-tea.earthdatacloud.nasa.gov/ob-cumulus-prod-public/PACE_OCI.20240513T155033.L2.OC_IOP.V3_0.nc,[],ok,,https -C3620139865-OB_CLOUD,PACE_OCI_L2_SFREFL_NRT,"PACE OCI Level-2 Regional Surface Reflectance - Near Real-time (NRT) Data, version 3.1",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0,https://obdaac-tea.earthdatacloud.nasa.gov/ob-cumulus-prod-public/PACE_OCI.20250702T002640.L2.SFREFL.V3_1.NRT.nc,[],ok,,https -C3385050055-OB_CLOUD,PACE_OCI_L2_SFREFL_NRT,"PACE OCI Level-2 Regional Surface Reflectance - Near Real-time (NRT) Data, version 3.0",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0,https://obdaac-tea.earthdatacloud.nasa.gov/ob-cumulus-prod-public/PACE_OCI.20250101T000242.L2.SFREFL.V3_0.NRT.nc,[],ok,,https -C3385050418-OB_CLOUD,PACE_OCI_L3M_AVW,"PACE OCI Level-3 Global Mapped Apparent Visible Wavelength (AVW) Data, version 3.0",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0,https://obdaac-tea.earthdatacloud.nasa.gov/ob-cumulus-prod-public/PACE_OCI.20240514.L3m.DAY.AVW.V3_0.avw.0p1deg.nc,"['avw', 'palette']",ok,,https -C3385050568-OB_CLOUD,PACE_OCI_L3M_CHL,"PACE OCI Level-3 Global Mapped Chlorophyll (CHL) Data, version 3.0",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0,https://obdaac-tea.earthdatacloud.nasa.gov/ob-cumulus-prod-public/PACE_OCI.20240514.L3m.DAY.CHL.V3_0.chlor_a.0p1deg.nc,"['chlor_a', 'palette']",ok,,https -C3533827525-OB_CLOUD,PACE_OCI_L3M_MOANA,"PACE OCI Level-3 Regional Mapped Multi-Ordination ANAlysis (MOANA) Data, version 3.0",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0,https://obdaac-tea.earthdatacloud.nasa.gov/ob-cumulus-prod-public/PACE_OCI.20240514.L3m.DAY.MOANA.V3_0.4km.nc,"['prococcus_moana', 'syncoccus_moana', 'picoeuk_moana', 'palette']",ok,,https -C3385050690-OB_CLOUD,PACE_OCI_L3M_SFREFL,"PACE OCI Level-3 Global Mapped Surface Reflectance Data, version 3.0",OB_CLOUD,2024-03-05T00:00:00Z,,-180.0,-90.0,180.0,90.0,https://obdaac-tea.earthdatacloud.nasa.gov/ob-cumulus-prod-public/PACE_OCI.20240514.L3m.DAY.SFREFL.V3_0.rhos.0p1deg.nc,"['rhos', 'palette']",ok,,https -C3285304335-OB_CLOUD,PACE_SPEXONE_L1C_SCI,"PACE SPEXone Level-1C Science Data, version 3",OB_CLOUD,2024-02-23T00:00:00Z,,-180.0,-90.0,180.0,90.0,https://obdaac-tea.earthdatacloud.nasa.gov/ob-cumulus-prod-public/PACE_SPEXONE.20240223T192101.L1C.V3.5km.nc,[],ok,,https -C2254686682-ORNL_CLOUD,PermafrostThaw_CarbonEmissions_1872,"Projections of Permafrost Thaw and Carbon Release for RCP 4.5 and 8.5, 1901-2299",ORNL_CLOUD,1901-01-01T00:00:00.000Z,2300-12-31T23:59:59.999Z,-180.0,-90.0,180.0,90.0,https://data.ornldaac.earthdata.nasa.gov/protected/above/PermafrostThaw_CarbonEmissions/data/Domain_0.5x0.5.nc4,"['latmin', 'lonmin', 'delta_lat', 'delta_lon', 'RCN_reg']",ok,,https -C2036878103-POCLOUD,RAMSSA_09km-ABOM-L4-AUS-v01,GHRSST Level 4 RAMSSA_9km Australian Regional Foundation Sea Surface Temperature Analysis v1.0 dataset (GDS2),POCLOUD,2006-06-12T00:00:00.000Z,,60.0,-70.0,180.0,20.0,https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/RAMSSA_09km-ABOM-L4-AUS-v01/20060612120000-ABOM-L4_GHRSST-SSTfnd-RAMSSA_09km-AUS-v02.0-fv01.0.nc,"['sea_ice_fraction', 'analysed_sst', 'analysis_error', 'mask', 'crs']",ok,,https -C2270392799-POCLOUD,SEA_SURFACE_HEIGHT_ALT_GRIDS_L4_2SATS_5DAY_6THDEG_V_JPL2205,MEaSUREs Gridded Sea Surface Height Anomalies Version 2205,POCLOUD,1992-10-01T23:46:00.000Z,,-180.0,-80.0,180.0,80.0,https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/SEA_SURFACE_HEIGHT_ALT_GRIDS_L4_2SATS_5DAY_6THDEG_V_JPL2205/ssh_grids_v2205_1992101012.nc,"['Lon_bounds', 'Lat_bounds', 'Time_bounds', 'SLA', 'SLA_ERR']",ok,,https -C2345900038-ORNL_CLOUD,SIF_PAR_fPAR_US_Midwest_2018_1813,"High Resolution Land Cover-Specific Solar-Induced Fluorescence, Midwestern USA, 2018",ORNL_CLOUD,2018-05-02T00:00:00.000Z,2018-09-23T23:59:59.999Z,-110.021,34.9792,-77.9792,49.9375,https://data.ornldaac.earthdata.nasa.gov/protected/cms/SIF_PAR_fPAR_US_Midwest_2018/data/midwest_par_2018.nc,"['crs', 'par_cloud', 'par_cloud_uncrt', 'par_nocloud', 'par_nocloud_uncrt']",ok,,https -C2847119443-ORNL_CLOUD,SIF_SCIAMACHY_GOME2_Harmonized_2317,"Global High-Resolution Estimates of SIF from Fused SCIAMACHY and GOME-2, V2",ORNL_CLOUD,2003-01-01T00:00:00.000Z,2017-12-31T23:59:59.999Z,-180.0,-90.0,180.0,90.0,https://data.ornldaac.earthdata.nasa.gov/protected/sif-esdr/17-MEASURES-0032/SIF_SCIAMACHY_GOME2_Harmonized/data/sif005_200301.nc,"['EVI_Quality', 'SIF_740_daily_corr', 'SIF_740_daily_corr_SD', 'crs']",ok,,https -C2208422957-POCLOUD,SMAP_JPL_L3_SSS_CAP_8DAY-RUNNINGMEAN_V5,JPL SMAP Level 3 CAP Sea Surface Salinity Standard Mapped Image 8-Day Running Mean V5.0 Validated Dataset,POCLOUD,2015-04-30T12:00:00.000Z,,-180.0,-90.0,180.0,90.0,https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/SMAP_JPL_L3_SSS_CAP_8DAY-RUNNINGMEAN_V5/2015/120/SMAP_L3_SSS_20150504_8DAYS_V5.0.nc,"['smap_sss', 'anc_sss', 'anc_sst', 'smap_spd', 'smap_high_spd', 'weight', 'land_fraction', 'ice_fraction', 'smap_sss_uncertainty']",ok,,https -C2832221740-POCLOUD,SMAP_RSS_L2_SSS_V6,RSS SMAP Level 2C Sea Surface Salinity V6.0 Validated Dataset,POCLOUD,2015-04-01T00:43:12.000Z,,-180.0,-90.0,180.0,90.0,https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/SMAP_RSS_L2_SSS_V6/RSS_SMAP_SSS_L2C_r01670_20150525T173215_2015145_FNL_V06.0.nc,[],open_failed,"Failed to decode variable 'time': unable to decode time units 'seconds since 2000-1-1 0:0:0 0' with ""calendar 'standard'"". Try opening your dataset with decode_times=False or installing cftime if it is not installed.",https -C2832227567-POCLOUD,SMAP_RSS_L3_SSS_SMI_8DAY-RUNNINGMEAN_V6,RSS SMAP Level 3 Sea Surface Salinity Standard Mapped Image 8-Day Running Mean V6.0 Validated Dataset,POCLOUD,2015-03-27T12:00:00.000Z,,-180.0,-90.0,180.0,90.0,https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/SMAP_RSS_L3_SSS_SMI_8DAY-RUNNINGMEAN_V6/RSS_smap_SSS_L3_8day_running_2015_091_FNL_v06.0.nc,"['nobs', 'nobs_RF', 'nobs_40km', 'sss_smap', 'sss_smap_RF', 'sss_smap_unc', 'sss_smap_RF_unc', 'sss_smap_unc_comp', 'sss_smap_40km', 'sss_smap_40km_unc', 'sss_smap_40km_unc_comp', 'sss_ref', 'gland', 'fland', 'gice_est', 'surtep', 'winspd', 'sea_ice_zones', 'anc_sea_ice_flag']",ok,,https -C2763266390-LPCLOUD,SRTMGL3_NUMNC,NASA Shuttle Radar Topography Mission Global 3 arc second Number NetCDF V003,LPCLOUD,2000-02-11T00:00:00.000Z,2000-02-21T23:59:59.000Z,-180.0,-56.0,180.0,60.0,https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/SRTMGL3_NUMNC.003/S01E030.SRTMGL3_NUMNC/S01E030.SRTMGL3_NUMNC.nc,"['SRTMGL3_NUM', 'crs']",ok,,https -C2799438266-POCLOUD,SWOT_L2_HR_PIXC_2.0,"SWOT Level 2 Water Mask Pixel Cloud Data Product, Version C",POCLOUD,2022-12-16T00:00:00.000Z,,-180.0,-90.0,180.0,90.0,https://archive.swot.podaac.earthdata.nasa.gov/podaac-swot-ops-cumulus-protected/SWOT_L2_HR_PIXC_2.0/SWOT_L2_HR_PIXC_474_004_087L_20230329T004948_20230329T004949_PGC0_01.nc,[],ok,,https -C2799438313-POCLOUD,SWOT_L2_NALT_GDR_2.0,SWOT Level 2 Nadir Altimeter Geophysical Data Record with Waveforms,POCLOUD,2022-12-16T00:00:00.000Z,,-180.0,-77.6,180.0,77.6,https://archive.swot.podaac.earthdata.nasa.gov/podaac-swot-ops-cumulus-protected/SWOT_L2_NALT_GDR_2.0/SWOT_GPN_2PfP402_004_20230116_115007_20230116_124113.nc,[],ok,,https -C2143402571-ORNL_CLOUD,Sat_ActiveLayer_Thickness_Maps_1760,"ABoVE: Active Layer Thickness from Remote Sensing Permafrost Model, Alaska, 2001-2015",ORNL_CLOUD,2001-01-01T00:00:00.000Z,2015-12-31T23:59:59.999Z,-179.18,55.5667,-132.576,70.214,https://data.ornldaac.earthdata.nasa.gov/protected/above/Sat_ActiveLayer_Thickness_Maps/data/Alaska_active_layer_thickness_1km_2001-2015.nc4,"['ALT', 'ALT_mean', 'ALT_uncertainty', 'crs', 'lat', 'lon', 'time_bnds']",ok,,https -C2390248773-ORNL_CLOUD,SiB4_Global_HalfDegree_Daily_1849,"SiB4 Modeled Global 0.5-Degree Daily Carbon Fluxes and Pools, 2000-2018",ORNL_CLOUD,2000-01-01T00:00:00.000Z,2018-12-31T23:59:59.999Z,-180.0,-90.0,180.0,90.0,https://data.ornldaac.earthdata.nasa.gov/protected/cms/SiB4_Global_HalfDegree_Daily/data/Daily_Betas_GPP_RESP.nc4,"['pft_names', 'pft_area', 'beta_gpp', 'beta_resp', 'crs']",ok,,https -C2392085682-ORNL_CLOUD,SiB4_Global_HalfDegree_Hourly_1847,"SiB4 Modeled Global 0.5-Degree Hourly Carbon Fluxes and Productivity, 2000-2018",ORNL_CLOUD,2000-01-01T00:00:00.000Z,2018-12-31T23:59:59.999Z,-180.0,-90.0,180.0,90.0,https://data.ornldaac.earthdata.nasa.gov/protected/cms/SiB4_Global_HalfDegree_Hourly/data/Hourly_Betas_GPP_RESP.nc4,"['pft_names', 'pft_area', 'beta_gpp', 'beta_resp', 'crs']",ok,,https -C2345882961-ORNL_CLOUD,SiB4_Global_HalfDegree_Monthly_1848,"SiB4 Modeled Global 0.5-Degree Monthly Carbon Fluxes and Pools, 2000-2018",ORNL_CLOUD,2000-01-01T00:00:00.000Z,2018-12-31T23:59:59.999Z,-180.0,-90.0,180.0,90.0,https://data.ornldaac.earthdata.nasa.gov/protected/cms/SiB4_Global_HalfDegree_Monthly/data/sib4_0.5x0.5_monthly_2000.nc4,"['time_bnds', 'pft_names', 'pft_area', 'gpp', 'resp', 'cos_assim', 'cos_grnd', 'cos_flux', 'sif', 'aparkk', 'fpar', 'lai', 'lh', 'pawfrw', 'pawftop', 'pool_leaf', 'pool_froot', 'pool_croot', 'pool_wood', 'pool_prod', 'pool_cdb', 'pool_lmet', 'pool_lstr', 'pool_slit', 'pool_slow', 'pool_arm', 'rstfac1', 'rstfac2', 'rstfac3', 'rstfac4', 'sh', 'tc', 'td1', 'td2', 'td3', 'www_liq1', 'www_liq2', 'www_liq3', 'www_tot', 'fire_losspft_cdb', 'fire_losspft_leaf', 'fire_losspft_lmet', 'fire_losspft_lstr', 'fire_losspft_wood', 'resp_fireco2', 'crs']",ok,,https -C2143402490-ORNL_CLOUD,Snow_Cover_Extent_and_Depth_1757,"ABoVE: High Resolution Cloud-Free Snow Cover Extent and Snow Depth, Alaska, 2001-2017",ORNL_CLOUD,2001-01-01T00:00:00.000Z,2017-12-30T23:59:59.999Z,-179.18,55.5667,-132.576,71.4215,https://data.ornldaac.earthdata.nasa.gov/protected/above/Snow_Cover_Extent_and_Depth/data/Alaska_snow_extent_depth_2001-2017.nc4,"['maximum_snow_cover_extent', 'snow_depth', 'crs', 'time_bnds', 'lat', 'lon']",ok,,https -C2736724942-ORNL_CLOUD,SoilSCAPE_1339,"Soil Moisture Profiles and Temperature Data from SoilSCAPE Sites, USA",ORNL_CLOUD,2011-08-03T00:00:00.000Z,2019-12-14T23:59:59.999Z,-120.99,31.7355,-83.663,42.299,https://data.ornldaac.earthdata.nasa.gov/protected/eos_land_val/SoilSCAPE/data/soil_moist_20min_MatthaeiGardens_MI_n200.nc,"['physicalid', 'sensor', 'soil_moisture', 'moisture_flag']",ok,,https -C2736725173-ORNL_CLOUD,SoilSCAPE_V2_2049,"Soil Moisture Profiles and Temperature Data from SoilSCAPE Sites, Version 2",ORNL_CLOUD,2021-12-03T00:00:00.000Z,2023-02-03T23:59:59.999Z,-110.053,-36.7161,174.616,37.1954,https://data.ornldaac.earthdata.nasa.gov/protected/eos_land_val/SoilSCAPE_V2/data/soil_30min_CO_Z1_CO_n2002.nc,"['sensor', 'soil_moisture', 'soil_quality_flag', 'soil_quality_bit', 'temperature', 'temp_quality_flag', 'temp_quality_bit']",ok,,https -C3195527175-POCLOUD,TELLUS_GRAC-GRFO_MASCON_CRI_GRID_RL06.3_V4,"JPL GRACE and GRACE-FO Mascon Ocean, Ice, and Hydrology Equivalent Water Height Coastal Resolution Improvement (CRI) Filtered Release 06.3 Version 04",POCLOUD,2002-04-04T00:00:00.000Z,,-180.0,-90.0,180.0,90.0,https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-protected/TELLUS_GRAC-GRFO_MASCON_CRI_GRID_RL06.3_V4/GRCTellus.JPL.200204_202507.GLO.RL06.3M.MSCNv04CRI.nc,"['lwe_thickness', 'uncertainty', 'lat_bounds', 'lon_bounds', 'time_bounds', 'land_mask', 'scale_factor', 'mascon_ID', 'GAD']",ok,,https -C2930727817-LARC_CLOUD,TEMPO_CLDO4_L3,TEMPO gridded cloud fraction and pressure (O2-O2 dimer) V03 (PROVISIONAL),LARC_CLOUD,2023-08-01T00:00:00.000Z,,-170.0,10.0,-10.0,80.0,https://data.asdc.earthdata.nasa.gov/asdc-prod-protected/TEMPO/TEMPO_CLDO4_L3_V03/2023.08.02/TEMPO_CLDO4_L3_V03_20230802T151249Z_S001.nc,['weight'],ok,,https -C2930730944-LARC_CLOUD,TEMPO_HCHO_L2,TEMPO formaldehyde total column V03 (PROVISIONAL),LARC_CLOUD,2023-08-01T00:00:00.000Z,,-170.0,10.0,-10.0,80.0,https://data.asdc.earthdata.nasa.gov/asdc-prod-protected/TEMPO/TEMPO_HCHO_L2_V03/2023.08.02/TEMPO_HCHO_L2_V03_20230802T151249Z_S001G01.nc,[],ok,,https -C2764637520-ORNL_CLOUD,US_MODIS_NDVI_1299,"MODIS NDVI Data, Smoothed and Gap-filled, for the Conterminous US: 2000-2015",ORNL_CLOUD,2000-01-01T00:00:00.000Z,2015-12-31T23:59:59.999Z,-129.892,20.8458,-62.556,50.5562,https://data.ornldaac.earthdata.nasa.gov/protected/global_vegetation/US_MODIS_NDVI/data/MCD13.A2000.unaccum.nc4,"['lambert_azimuthal_equal_area', 'time_bnds', 'NDVI']",ok,,https -C2517700524-ORNL_CLOUD,US_MODIS_Veg_Parameters_1539,MODIS-derived Vegetation and Albedo Parameters for Agroecosystem-Climate Modeling,ORNL_CLOUD,2003-01-01T00:00:00.000Z,2010-12-31T23:59:59.999Z,-139.051,15.1525,-51.9489,49.1525,https://data.ornldaac.earthdata.nasa.gov/protected/nacp/US_MODIS_Veg_Parameters/data/leaf_stem_area_index_monthly_climatology_2003-2010.nc4,[],open_failed,"Failed to decode variable 'climatology_bounds': unable to decode time units 'months since 2003-01-01 00:00:00' with ""calendar 'standard'"". Try opening your dataset with decode_times=False or installing cftime if it is not installed.",https -C3396928893-OB_CLOUD,VIIRSJ1_L2_IOP,"NOAA-20 VIIRS Level-2 Regional Inherent Optical Properties (IOP) Data, version 2022.0",OB_CLOUD,2017-11-29T00:00:00Z,,-180.0,-90.0,180.0,90.0,https://obdaac-tea.earthdatacloud.nasa.gov/ob-cumulus-prod-public/JPSS1_VIIRS.20171129T213001.L2.IOP.nc,[],ok,,https -C3396928899-OB_CLOUD,VIIRSJ1_L2_OC,"NOAA-20 VIIRS Level-2 Regional Ocean Color (OC) Data, version 2022.0",OB_CLOUD,2017-11-29T00:00:00Z,,-180.0,-90.0,180.0,90.0,https://obdaac-tea.earthdatacloud.nasa.gov/ob-cumulus-prod-public/JPSS1_VIIRS.20171129T213001.L2.OC.nc,[],ok,,https -C3396928895-OB_CLOUD,VIIRSJ1_L2_OC_NRT,"NOAA-20 VIIRS Level-2 Regional Ocean Color (OC) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2017-11-29T00:00:00Z,,-180.0,-90.0,180.0,90.0,https://obdaac-tea.earthdatacloud.nasa.gov/ob-cumulus-prod-public/JPSS1_VIIRS.20240201T123601.L2.OC.NRT.nc,[],ok,,https -C3397023585-OB_CLOUD,VIIRSJ2_L2_OC_NRT,"NOAA-21 VIIRS Level-2 Regional Ocean Color (OC) - Near Real-time (NRT) Data, version 2022.0",OB_CLOUD,2022-11-10T00:00:00Z,,-180.0,-90.0,180.0,90.0,https://obdaac-tea.earthdatacloud.nasa.gov/ob-cumulus-prod-public/JPSS2_VIIRS.20250430T075401.L2.OC.NRT.nc,[],ok,,https -C2517350332-ORNL_CLOUD,Vulcan_V3_Annual_Emissions_1741,"Vulcan: High-Resolution Annual Fossil Fuel CO2 Emissions in USA, 2010-2015, Version 3",ORNL_CLOUD,2010-01-01T00:00:00.000Z,2016-01-01T23:59:59.999Z,-165.214,22.8582,-65.3082,73.7533,https://data.ornldaac.earthdata.nasa.gov/protected/nacp/Vulcan_V3_Annual_Emissions/data/Vulcan_v3_US_annual_1km_elec_prod_hi.nc4,"['time_bnds', 'carbon_emissions', 'crs']",ok,,https -C2516155224-ORNL_CLOUD,Vulcan_V3_Hourly_Emissions_1810,"Vulcan: High-Resolution Hourly Fossil Fuel CO2 Emissions in USA, 2010-2015, Version 3",ORNL_CLOUD,2010-01-01T00:00:00.000Z,2016-01-01T23:59:59.999Z,-165.214,22.8582,-65.3082,73.7533,https://data.ornldaac.earthdata.nasa.gov/protected/nacp/Vulcan_V3_Hourly_Emissions/data/Alaska/industrial.2010.hourly_UTC/Vulcan.v3.AK.hourly.1km.industrial.mn.2010.d001.nc4,"['time_bnds', 'carbon_emissions', 'crs']",ok,,https -C1681179895-LAADS,WATVP_L2_VIIRS_SNPP,VIIRS/SNPP Level-2 Water Vapor Products 6-min Swath 750m,LAADS,2012-05-01T00:06:00.000Z,2018-09-11T16:06:00.000Z,-180.0,-90.0,180.0,90.0,https://ladsweb.modaps.eosdis.nasa.gov/archive/allData/5110/WATVP_L2_VIIRS_SNPP/2012/122/WATVP_L2_VIIRS_SNPP.A2012122.0006.001.2019344211449.nc,[],open_failed,b'\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
concept_idshort_nameentry_titleprovider_idbegin_timeend_timewestsoutheastnorthlinksvariablesstatuserrorschemecompatiblecompat_errorstatus_code
75C3177839243-NSIDC_CPRDNSIDC-0630MEaSUREs Calibrated Enhanced-Resolution Passiv...NSIDC_CPRD1978-10-25T00:00:00.000ZNaN-180.0-90.0180.090.0https://data.nsidc.earthdatacloud.nasa.gov/nsi...['crs', 'TB', 'TB_num_samples', 'Incidence_ang...okNaNhttpsTrueNaNNaN
\n", - "" - ], - "text/plain": [ - " concept_id short_name \\\n", - "75 C3177839243-NSIDC_CPRD NSIDC-0630 \n", - "\n", - " entry_title provider_id \\\n", - "75 MEaSUREs Calibrated Enhanced-Resolution Passiv... NSIDC_CPRD \n", - "\n", - " begin_time end_time west south east north \\\n", - "75 1978-10-25T00:00:00.000Z NaN -180.0 -90.0 180.0 90.0 \n", - "\n", - " links \\\n", - "75 https://data.nsidc.earthdatacloud.nasa.gov/nsi... \n", - "\n", - " variables status error scheme \\\n", - "75 ['crs', 'TB', 'TB_num_samples', 'Incidence_ang... ok NaN https \n", - "\n", - " compatible compat_error status_code \n", - "75 True NaN NaN " - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "concept_id_to_find = \"C3177839243-NSIDC_CPRD\"\n", - "\n", - "matching_rows = df_read[df_read[\"concept_id\"] == concept_id_to_find]\n", - "matching_rows" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "208a0fdf", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
concept_idshort_nameentry_titleprovider_idbegin_timeend_timewestsoutheastnorthlinksvariablesstatuserrorschemecompatiblecompat_errorstatus_code
0C2105092163-LAADSVNP03IMGVIIRS/NPP Imagery Resolution Terrain Corrected...LAADS2012-01-19T00:00:00.000ZNaN-180.0-90.0180.090.0https://data.laadsdaac.earthdatacloud.nasa.gov...[]okNaNhttpsFalseNo variable foundNaN
1C2105091501-LAADSVNP02IMGVIIRS/NPP Imagery Resolution 6-Min L1B Swath 3...LAADS2012-01-19T00:00:00.000ZNaN-180.0-90.0180.090.0https://data.laadsdaac.earthdatacloud.nasa.gov...[]okNaNhttpsFalseNo variable foundNaN
2C1562021084-LAADSCLDMSK_L2_VIIRS_SNPPVIIRS/Suomi-NPP Cloud Mask 6-Min Swath 750 mLAADS2012-03-01T00:00:00.000ZNaN-180.0-90.0180.090.0https://data.laadsdaac.earthdatacloud.nasa.gov...[]okNaNhttpsFalseNo variable foundNaN
3C1964798938-LAADSCLDMSK_L2_VIIRS_NOAA20VIIRS/NOAA20 Cloud Mask and Spectral Test Resu...LAADS2012-03-01T00:00:00.000ZNaN-180.0-90.0180.090.0https://data.laadsdaac.earthdatacloud.nasa.gov...[]okNaNhttpsFalseNo variable foundNaN
4C1593392869-LAADSCLDMSK_L2_MODIS_AquaMODIS/Aqua Cloud Mask 5-Min Swath 1000 mLAADS2002-07-04T00:00:00.000ZNaN-180.0-90.0180.090.0https://data.laadsdaac.earthdatacloud.nasa.gov...[]okNaNhttpsFalseNo variable foundNaN
\n", - "
" - ], - "text/plain": [ - " concept_id short_name \\\n", - "0 C2105092163-LAADS VNP03IMG \n", - "1 C2105091501-LAADS VNP02IMG \n", - "2 C1562021084-LAADS CLDMSK_L2_VIIRS_SNPP \n", - "3 C1964798938-LAADS CLDMSK_L2_VIIRS_NOAA20 \n", - "4 C1593392869-LAADS CLDMSK_L2_MODIS_Aqua \n", - "\n", - " entry_title provider_id \\\n", - "0 VIIRS/NPP Imagery Resolution Terrain Corrected... LAADS \n", - "1 VIIRS/NPP Imagery Resolution 6-Min L1B Swath 3... LAADS \n", - "2 VIIRS/Suomi-NPP Cloud Mask 6-Min Swath 750 m LAADS \n", - "3 VIIRS/NOAA20 Cloud Mask and Spectral Test Resu... LAADS \n", - "4 MODIS/Aqua Cloud Mask 5-Min Swath 1000 m LAADS \n", - "\n", - " begin_time end_time west south east north \\\n", - "0 2012-01-19T00:00:00.000Z NaN -180.0 -90.0 180.0 90.0 \n", - "1 2012-01-19T00:00:00.000Z NaN -180.0 -90.0 180.0 90.0 \n", - "2 2012-03-01T00:00:00.000Z NaN -180.0 -90.0 180.0 90.0 \n", - "3 2012-03-01T00:00:00.000Z NaN -180.0 -90.0 180.0 90.0 \n", - "4 2002-07-04T00:00:00.000Z NaN -180.0 -90.0 180.0 90.0 \n", - "\n", - " links variables status error \\\n", - "0 https://data.laadsdaac.earthdatacloud.nasa.gov... [] ok NaN \n", - "1 https://data.laadsdaac.earthdatacloud.nasa.gov... [] ok NaN \n", - "2 https://data.laadsdaac.earthdatacloud.nasa.gov... [] ok NaN \n", - "3 https://data.laadsdaac.earthdatacloud.nasa.gov... [] ok NaN \n", - "4 https://data.laadsdaac.earthdatacloud.nasa.gov... [] ok NaN \n", - "\n", - " scheme compatible compat_error status_code \n", - "0 https False No variable found NaN \n", - "1 https False No variable found NaN \n", - "2 https False No variable found NaN \n", - "3 https False No variable found NaN \n", - "4 https False No variable found NaN " - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "incompatible_collections = df_read[~df_read[\"compatible\"]]\n", - "incompatible_collections.head()" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "a342267f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([ nan, 400., 500., 504.])" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df_read[\"status_code\"].unique()" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "f6bba110", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAACZIAAAbqCAYAAABRlxedAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAuIwAALiMBeKU/dgABAABJREFUeJzs3Xd41dX9B/BPSBhhIy5kuxcq4KjWKop771oXalVctWq1P2q14tZaK617r7q1blEciLhQBAeogOwlmzASEpLc3x9WqxXhfpPc3IT7ej1PHjE553zfSW7uvXDfOScvlUqlAgAAAAAAAAAAgJzVINsBAAAAAAAAAAAAyC5FMgAAAAAAAAAAgBynSAYAAAAAAAAAAJDjFMkAAAAAAAAAAABynCIZAAAAAAAAAABAjlMkAwAAAAAAAAAAyHGKZAAAAAAAAAAAADlOkQwAAAAAAAAAACDHKZIBAAAAAAAAAADkOEUyAAAAAAAAAACAHKdIBgAAAAAAAAAAkOMUyQAAAAAAAAAAAHKcIhkAAAAAAAAAAECOUyQDAAAAAAAAAADIcYpkAAAAAAAAAAAAOU6RDAAAAAAAAAAAIMcpkgEAAAAAAAAAAOQ4RTIAAAAAAAAAAIAcp0gGAAAAAAAAAACQ4xTJAAAAAAAAAAAAcpwiGQAAAAAAAAAAQI5TJAMAAAAAAAAAAMhximQAAAAAAAAAAAA5TpEMAAAAAAAAAAAgxymSAQAAAAAAAAAA5DhFMgAAAAAAAAAAgBynSAYAAAAAAAAAAJDjFMkAAAAAAAAAAABynCIZAAAAAAAAAABAjlMkAwCgVnTp0iXy8vLSeuvVq1e246Zt0qRJaX9eeXl50b9//7TXfuuttxKtff/992fs8wQAWN15Xvfz+vfvnyj/pEmT0l77xBNPTLR2Er169Up73S5duiT7ogAAAMBqSJEMAAAAAAAAAAAgxxVkOwAAAD/vxBNPjAceeCDbMRKZOHGi3+aHOmLy5MkxfPjwGD58eEyYMCGmTp0a06dPjyVLlkRJSUmUlZVF8+bNo1WrVtGyZctYc801Y/PNN4+tttrq+7dmzZpl+9NYbXTp0iUmT55cI2vl5eVFo0aNokmTJtG6deto27ZtdOrUKTbYYIPYaqutYrvttovNNtusRq5Vn1RUVMSXX34Zw4cPj5EjR8bkyZNjypQpMWvWrCguLo7i4uJIpVLRsmXLaNmyZbRq1SratWsX3bp1i27dusVWW20VW2yxReTn52f7UwEAatA333wTb7/9dnz88cfxxRdffP/8YPHixVFaWhoNGjSIpk2bRmFhYRQWFkbbtm2jffv20aFDh2jfvn107do1ttxyy9hkk02iYcOG2f50AAAAMkaRDAAAYDUydOjQ+Pe//x3PP/98TJgwYZXji4qKoqio6Pv/f+utt77/c+PGjWP33XePgw46KA488MBo37594jyTJk2Krl27Jp73naZNm8b06dOjdevWVV5jRQYNGhR77713led37tw50bFdNS2VSkVpaWmUlpZGUVFRTJ48OUaMGPGjMR06dIhDDjkkTjrppOjRo0eWkmZeWVlZPP/88/Hcc8/Fyy+/HPPnz1/lnHnz5sW8efMiIuKTTz6JgQMHfv+xtm3bxn777RcHHnhg7LPPPtGiRYuMZQcAMmfp0qVx//33x7/+9a/44IMPVjq2oqLiR8+LJ06cGMOHD//JuIYNG8Ymm2wSW2+9dey0007xq1/9KrbccsvEx64CAADUVYpkAACsFvr375/22G222SYOOeSQjGWB2lZaWhr33HNP3HLLLfHFF1/U6LoDBw6MgQMHxplnnhl77bVXnH/++bHXXnvV2DVWpbi4OO67774477zzanTdm266qUbXq4umTZsWN998c9x8882x5557xvXXXx9bb711tmPVmFmzZsU///nPuPvuu2P27Nk1tu68efPioYceioceeiiaNGkSxx13XJx77rmxxRZb1Ng1gJXzvI76YsCAAbFw4cK0xnbp0iVOPPHEjObhW8uXL49//vOfcdVVV8WCBQtqfO1Ro0bFqFGj4uGHH46IiNatW8dee+0Vjz/+eJXW/OSTT+LZZ59Ne/yJJ56Y87uAv/XWWz/6BZhVOffcc2v8F1MAAGB1pUgGAMBq4bLLLkt7bJ8+fbzgyGohlUrFww8/HBdffHGNHZm4smu9+uqr8eqrr8YWW2wRd911V+y4444ZveZ3brvttjj33HNrbKeHiRMnxssvv1wja9UXr732Wmy33XZx1VVXxYUXXpjtONWydOnS+Nvf/hZ/+9vfYsmSJRm91rJly+Luu++Ou+++O/baa6946KGHYu21187oNQHP66g/BgwYkPZzsF133VWRrBaMHz8+jjrqqJ/s1JpJCxcujDfeeKPK8z/55JNE93u9evVSJHvrrURfsxNPPFGRDAAA0tQg2wEAAABIbsaMGbHPPvvE8ccfn/ES2f8aPXp0DBs2rNauN27cuHj11VdrbL1bb701Kisra2y9+mL58uXxxz/+Mf7whz9kO0qVffDBB7HNNttE//79M14i+1+DBg2KGTNm1Oo1AYD0jRgxInbYYYdaLZEBAACsbhTJAAAA6pk333wzunXrFoMGDcp2lFpz880318g6JSUlcc8999TIWvXV3//+97jrrruyHSOxv/3tb7HzzjvH119/ne0oAEAdM378+Nhrr71i3rx52Y4CAABQrymSAQAA1CMPPvhg7LPPPjF//vxsR6lVAwcOjIkTJ1Z7nYcffjgWLFhQA4nqt/PPPz+++eabbMdIS2VlZZx11llx4YUXRkVFRbbjAAB1THl5eRx55JFKZAAAADVAkQwAAKCeePDBB+PEE0+M5cuXZztKrausrIxbb7212uvccsstNZCm/luyZElcf/312Y6Rlr59+9bI9x4AWD3ddNNNMXLkyGzHAAAAWC0UZDsAAAC5YdKkSdmOkBFdunSJVCqV7RjkgJdeeil++9vf5vTt7d57743LL788CgsLqzT/nXfeiU8++aRmQ9VjDz30UFx33XVRUFB3/2ngT3/6U9x9993ZjgHkCM/rfl7//v2jf//+2Y6R2FtvvZXtCGRYaWlp/PWvf812DAAAgNVG3f3XYgAAACLi2yLmcccdF+Xl5VVeo0GDBrHLLrvE3nvvHdtvv31suOGG0bZt22jSpEmUlpbGokWLYsqUKTFu3Lj4+OOP480334xPP/20Bj+L6ps/f348+uijcfLJJ1dp/k033VTDiTKrT58+cf/99//k/SUlJbFo0aL46quvYujQoXHvvfdW6djPOXPmxIcffhg77bRTDaStec8++2xce+211VqjsLAw9t9//9h9992je/fu0bVr12jVqlU0bNgwiouLY8GCBTFlypQYNWpUfPTRR/Haa6/F1KlTa+gzAAAy7YUXXkh8XHdeXl707t079tlnn+jRo0d07do12rRpE82aNYuysrJYsGBBzJ8/P2bPnh2fffZZjBw5MkaOHBlffvmlY7YBAIDVniIZAEAddv/996+wRJCu/v37x2WXXZZojl0YoG6prKyM3/zmN7Fw4cIqzc/Pz49TTjkl+vXrF126dFnhmKZNm0bTpk1j3XXXje233z6OPfbYiIiYNm1aPPTQQ3H33XfHhAkTqvgZ1KxbbrmlSkWymTNnxjPPPJOBRLWvsLAwCgsLY5111oldd901Lrzwwjj33HPj9ttvT7zW+++/XyeLZNOnT69yYTAiok2bNvHHP/4xzjzzzGjZsuUKx7Ro0SJatGgRnTp1ip133jlOP/30iIgYOXJk3H///fHggw9W+ecOAKgdSZ/fbb311vGvf/0rttxyyxV+vKCgIJo2bRrt27ePiIjevXt//7H58+fHwIED44UXXohXXnklioqKqh4cAACgjlIkAwAA0jJlypSYOHFiTJ06NRYuXBjFxcWRSqWiWbNm0aZNm+jatWtsttlm0aZNm2xHXa3cdddd8cEHH1Rp7oYbbhiPPfZY9OzZs0rzO3ToEH/605/ij3/8Yzz55JNx6aWXxtixY6u0Vk0ZMWJEvPfee4nLT7fffnssX748Q6myq3HjxnHrrbfGuHHj4o033kg0d9y4cRlKVT0XXHBBLFiwoEpz99lnn7jvvvti3XXXrdL87t27R/fu3eOKK66I2267La699lqFMlZb5eXlMXPmzJg+fXrMmDEjFi1aFCUlJVFSUhKlpaXRsGHDaNy4cbRu3TrWXnvt6NixY2y44YbRqFGjbEcHiIiId999N+2xXbp0ibfeeitat25dpWutscYaceyxx8axxx4b5eXl8cILL8Ttt98er732WpXWqy+Kiopi+vTpMX369Jg9e/b3jxMlJSVRWVkZTZo0icLCwlhrrbVinXXWiQ033DDWWWedbMemimbMmBETJkyIGTNmxPz582Pp0qVRVlYWBQUF0axZs2jatGm0adMmOnbsGJ06dYo111wz25EBAKhhimQAAMAKzZgxI5577rl46aWXYtiwYTF37txVzsnLy4tNNtkk9t577zjqqKPq5E5HEd/udvT000/H0KFDY9SoUTFr1qxYtGhRVFRURNOmTaNbt25VLm/VpEWLFsUll1xSpbm/+MUv4uWXX66RYl9+fn4cffTRcfjhh8ctt9xS5Uw15ZZbbkl021q+fHnceeedGUyUfXl5efHnP/85cZFs5syZGUpUde+991489thjVZp7xhlnxM033xwNGjSodo6WLVvG//3f/8Upp5wSl1xySZV2fFuVr7/+OoYOHRoff/xxfPXVVzFt2rSYM2dOFBcXR1lZWTRp0uT73QI7duwYm2++eWy77bax22671dkXaJcuXRovvPBCvPzyyzFy5MiYNm1aLFmyJJo1axbrrrtudO/ePXr37h1HHnlktGrVKtHaixcvjueeey4GDRoUI0aMiOnTp8eSJUuiTZs2sdZaa0XHjh2jd+/esd9++8UWW2yRoc+wahYuXBgvvfRSvPbaa/H555/HlClTYtGiRZGXlxetWrWKjTbaKLbbbrvYb7/9onfv3jVyG/6hVCoVY8aMiQ8//DBGjx4do0ePjlGjRsXUqVOjsrIy0Vr5+fmx6aabxi9/+cvYb7/9Yp999onGjRvXaF5W7qOPPooXX3wxhg0bFmPGjIl58+ZFcXHx9z9nW265Zey+++5xyCGHfL+rEqyOlixZEpMnT057/AUXXFDlEtn/KigoiEMPPTQOPfTQmDBhQpWfu9QlixYtimHDhsWnn376/WPFl19+GUuWLEm8Vps2bWKHHXaIXr16xWGHHRYbbbRRBhJTE2bOnBlPPvlkDBo0KD744IOYN29eovlNmzaNLbbYIrbZZpvYeuuto2fPntGzZ89o2LBhhhIDAJBxKQAAVluXXnppKiISvWVK586d086w6667/uw6u+66a+LPqbpvK8szceLERGtdeumlaX/NBg8enGjt++67L+21V+aDDz5IHXbYYamCgoJqf+26d++eevLJJ2skV018rceNG5f6zW9+k2rQoMFK57Zq1apGMlfX9ddfX6Wv+8Ybb5xauHBhxnJNmjQp9fbbb6c1Nun3LZ23Ro0apb755pu08z788MM1nqFz586Jv25J7gcjItWnT59E65eVlaUKCwsTXWOPPfZI/Hlk2v7771+l78nRRx+dqqyszFiuIUOGpCZPnlztdWbOnJm64oorUptuummVb395eXmp7bffPnXrrbemFi1aVAOfXfLHnP+9jy0pKUldfvnlqTXWWCOt+YWFhal+/fqlioqKVplt4cKFqYsuuijVvHnztPP96le/Sn300UfV/roked6xovuFmTNnps4444xU06ZN016nS5cuqTvuuCNVUVFR7fwvvfRS6sADD0y1bdu2xu8Hv3tr1apV6oILLkjNmDEjo1/fmnqrz8/rnnzyydQ222yT9hoFBQWpo446KjVu3LjE35v/lfTvFRMnTkx77T59+iRaO4nq/gxXNWNNvP0wz3333Ze69NJL03q74YYbEn2Nfs6sWbPSvuall16aeuedd2rkukmMHj060dd0xIgRtZ7xhzLxvLiq9yffWbZsWeqss85KbbPNNqv8O1J13nbaaafUM888k/hrlvS+s6beBg8e/LOZkqyT9Pl8bV7jiy++SB155JGp/Pz8Gv/6NW3aNLXHHnukrrzyytT06dOrlA8AgOyxIxkAABAREd98802cc8458eSTT9bYmiNHjowjjzwydt9997jrrrti/fXXr7G1k7rzzjvjvPPOi+Li4qxlSKKioiJuuummxPMKCgriX//6V+KdfpLo3LlzdO7cOSNrd+3aNSZPnrzSHXLKysrizjvvTHtntJtvvnmVYzbaaKM6e8xjuho2bBjrr79+jB49OtGcumTs2LHx8ssvJ57XqVOnuP322yMvLy8Dqb61yy67VGv+3Llz44orrojbb789ysrKqrVWKpWKDz/8MD788MO46KKLol+/fvH73/8+mjRpUq11q2rkyJHx61//OtHPUElJSVx77bXxxBNPxJNPPhk9evRY4bg33ngjTjzxxJg2bVqiTEOHDo3tt98+LrzwwrjuuusSza0pDzzwQPz+97+PoqKiRPMmTZoUffv2jbvvvjsee+yxaj12Dho0KF544YUqz09HUVFR/O1vf4s77rgjrrzyyjjnnHMyer1c9M0338QJJ5yQ+Pi88vLyeOKJJ+LZZ5+Na665Js4777yM3k+SOUVFRXHZZZelPb53796x9dZbV+uajz32WKJrHnbYYdW6XlUsWrQo0fjCwsIMJam/SkpK4pZbbsn4dd5777049NBDo1evXnHPPfdk9e+FRAwYMCD+7//+r9rPSX9OcXFxvP766/H666/HJptsEkcccURGrgMAQGbU7D75AABAvfTyyy9Ht27darRE9kNvvvlm9OzZM1566aWMrL8qf/7zn6Nv3771pkQW8W15YsqUKYnnXXzxxbHddttlIFHt6NSpUxxwwAGrHHfHHXdEeXn5KseNHDky3n///VWOO/PMM9PKV9clPa6ppo53qin3339/pFKpxPMeeOCBjJYnq+vf//53bLbZZvHPf/6zxl+wW7hwYfTr1y+6d+8eH3/8cY2unY4XX3wxdt555yoXMSdMmBC77rprvPfeez/52J133hl777134hLZd1KpVPz1r3+N0047LfHxjdWRSqXinHPOiRNPPDFxieyHPvroo+jZs2e8++67NZgucxYvXhy///3v4ze/+U1a98+kZ+TIkdGjR4/EJbIfKisriz/84Q9x3HHHxfLly2swHbXlpJNOiubNm6c9/q677qr2NZ944om0x/bo0SO22mqral8zqYqKikTjR44cmaEkpOutt96K7bbbLt5+++1sR8lZF198cZx33nkZK5EBAFD/KZIBAECOu+OOO+Kggw6KuXPnZvQ6CxcujIMPPjj+9a9/ZfQ6/+vaa6+Nq6++ulavWROefvrpxHNatWoVF1xwQQbS1K7f/e53qxwzffr0ePbZZ1c5Lp1d3Zo1axYnnXRSOtHqvJKSkkTj11tvvQwlqZqq3O579+4dvXr1qvkwNSCVSsVFF10Uhx9+eMbvY7/66qvYaaed4tFHH83odX7otddeiyOOOKLaJd0lS5bE/vvv/6Py7J133hl9+/ZNXBJYkbvuuituvPHGaq+TjlQqFaeeemqVdpRckYULF8Zee+0VH3zwQY2sVxsee+yx6NOnT7ZjrBY+/vjj6N27d8ycObNG1nvkkUfimGOOqdViJTWjZcuWccIJJ6Q9/uGHH078nOCHpk+fvsKC78/J1vOoNm3aJBp/1VVXxZIlSzKUhnTNnz8/9t9//xgxYkS2o+Schx9+OK666qpsxwAAoI5TJAMAgBx27733xumnn14jL9Sno6KiIvr06ZPxY7a+M3DgwPjzn/9cK9eqaVX5Gp100knRrFmzDKSpXXvssUdsuummqxy3qmN45s2bl1ap5vjjj6/Tu1kl8c033yQa37NnzwwlSW7s2LExduzYxPPSKR5my5lnnhnXXHNNrV2vrKwsjj322Lj77rszfq0JEybEr3/96ygtLa2R9RYuXPh9SWLQoEE1vkvgJZdcEl9//XWNrrkiV1xxRdxzzz01umZxcXEcdNBBVdqlMlseeeSRuO2227Ido16bNm1aHHDAAbFgwYIaXfepp56KP/3pTzW6JrXj7LPPTnvswoUL46mnnqrytZ566qm0dwht3LhxHHPMMVW+VnW0bds20fjRo0fHLrvsEh9++GGGEpGuJUuWxFFHHaXYV4sWLlwY559/frZjAABQDyiSAQBAjhoyZEicdtpptX7dysrK+M1vfhNffvllRq9TVFQUp5xySr3cdWPSpElV2n3kjDPOyECa7DjrrLNWOeatt96K0aNH/+zH77777li2bNkq10nywmxdNn369JgxY0aiOTvttFOG0iSXZOeT73To0CEOPPDADKSpvssuuyxuv/32Wr9uKpWK008/PeNHCT/00EM1XnAZMmRI3H333XHCCSfUeMG5pKQkLr744hpd83/NnDkz+vfvn5G158yZE8cdd1y9ekz705/+FPPmzct2jHrr8ssvT1wOTtf1118fgwYNysjaZM5mm20We+yxR9rjq3O8ZZLj7g866KBYY401qnyt6lhrrbUSH9M9cuTI2GGHHWKnnXaKAQMGxFdffZWZcKzS+PHj49prr812jJzxwAMPxOzZs7MdAwCAekCRDAAActCCBQviuOOOq7WdyP7X0qVL44QTTojy8vKMXeOOO+5IXKqpK4YNG5Z4TocOHWLjjTfOQJrs6NOnT7Ro0WKV426++eYVvr+ysjKt3XB69eoVW2yxReJ8ddH999+faPwuu+wSnTt3zkyYKqjK7b5Xr17RoEHd+6eNN954Iy6//PKsXf+73R+nT5+etQxVdeqpp8asWbMysvYzzzyT0WJTWVlZ2jv4VMXQoUPjzjvvzNj6Na2oqCgGDBiQ7Rj11vLlyzO2diqVir59+6ZVtqZuSbIL59ChQ2PMmDGJr1FfjrWMiGjQoEHssssuVZr7/vvvx3nnnRebbbZZrLXWWnHAAQdE//7946WXXsrY4xA/NWDAgFi0aFG2Y+SEZ599NtsRAACoJwqyHQAAAKh9/fv3j2nTpiWe17t37zj++OPjV7/6VayzzjoR8e3uWQMHDowbb7wxUXFr+PDhcdddd2VsF62SkpKMrFsbvvjii8RzdtxxxwwkyZ4WLVpEnz59frYo9p1//etfcd1110XLli1/9P4XXnghJk+evMrr1OVjEZP44osv4rrrrks0p67txLa63O6XLVsWv/3tb6u0c1SjRo1i9913jw022CDWWGONmD17dnz++efx/vvvJy4ozZs3L84+++x45plnEueoqm7dusWOO+4Y66yzTsybNy9ee+21GDduXI2s3bx589h3332ja9eukUqlYuTIkTF48OBEheiysrJ46KGH4txzz62RTOnq2bNndO/ePdZdd90oKiqKr7/+Ot58880qHQt68cUXx3HHHRfNmzevcp5mzZrFzjvvHFtuuWVsttlm35coWrRoES1atIjCwsJYtmxZLFmyJKZOnRrjxo2LoUOHxlNPPZV4J5N77rkn+vfvH/n5+VXOy3+1atUq9txzz+jYsWMUFhbGjBkzYujQoTF+/PjEa02aNCkGDBgQ/fr1y0BSMuWAAw6Irl27xsSJE9Maf/fdd8f111+f6BpPPvlk2o857du3j7322ivR+jVt7733jueff75aa8ydOzdeeumlH+3m2bFjx9h+++1jxx13jF133TV69OhRJ8vrmbLpppvGDjvs8P3jxPrrr//940SLFi0ilUpFSUlJzJs3LyZNmhTDhw+PQYMGxZtvvpnoOcvSpUvj4YcfXq12Vq6LysrK4p133kl7fIcOHeLkk0+O3XbbLTbccMNo27ZtNGrUKBYvXhxFRUWxcOHCGDt2bIwaNSpGjRoVH374YZX+fQEAgLpJkQwAgHrlt7/97QqPdLnkkkvSXqN79+5x2GGHpT2+Lu3YUxMmT54ct956a6I5bdq0iX/961+x3377/eRjW2yxRWyxxRZxxhlnRJ8+feLpp59Oe93LL788TjrppGjSpEmiPKu7dApQ/+sXv/hFBpJk11lnnRW33HLLSl+MWrJkSdx///1xzjnn/Oj9N9100yrX79ixYxx88MHVzplNy5Yti4cffjguvPDCWLx4cdrzdt111zjyyCMzmCy51eV2P2DAgMSfS35+fvzhD3+Iiy66KFq1avWTj0+ZMiXOPffcxKWwZ599Nt5+++0q79aSrk6dOsUDDzwQvXr1+tH7Kysr44orrqj2cY/nn39+XH755dGsWbMfvf/DDz+M/fbbL9EuY4MHD661IlmvXr3i1ltvjc022+wnHysqKoorrrgibrzxxkSlw3nz5sVdd90V5513XqIsbdq0ieOOOy7233//6NWrVzRu3Hil45s2bRpNmzaNtddeO3r27BlHH310/P3vf48bb7wxLrnkkrR3FJ05c2YMGzbsZ4/R9bwuPc2aNYtrrrkmTjvttBV+74YMGRJ9+/ZNvPvUgAED4txzz/U8LA2HH354bLjhhj95/w033BALFy5Ma40uXbrEb3/727SvuaIjGxs0aBBnnnlmXHjhhWmt8cADD8TVV18dDRs2TPu6SY61POGEE7JeFD3hhBPi4osvrvHjlqdOnRpTp079/u82bdu2jQMPPDCOOuqo2Guvvar0ebdp0yauuOKKn7x/5MiR8e9//zvtdU4++eTo2rVr2uN79OiR1rhf/epXcdRRR8X++++f1vqNGjWKVq1axfrrrx+77757/PGPf4xRo0bF8ccfH5988kna+Z555pmfLZJ17dp1hV+zN998MwYPHpz2Nf7whz8kOgY1yde3Ppg9e3baj9277757PPfccyssrbdu3Tpat24dnTt3jq233vpHf5/48ssv47XXXotBgwbFoEGDMrqzJgAAGZYCAGC1demll6YiItFbpnTu3DntDLvuumvi9ZN8jn369Kmxz2vixImJrn3ppZemvfbgwYMTrX3fffelte4FF1yQaN3mzZunPv3007TWLi8vT+21116J1r///vvTWjvp13pFb+3bt09dcMEFqTfeeCM1efLkVElJSWrp0qWpSZMmpV566aXUH//4x9Rmm22WatWqVVqZMmW33XZL/Lk9/fTTWc38c5J+3/7353+PPfZY5ZxNNtkkVVlZ+f2cL7/8Mq1rXXXVVT+6VpKcnTt3Tvy1SHI/GBGp7t27p6644oqfvP35z39OnX322ak999wz1apVq8S3lXXWWSc1YcKEqnw7M6aioiJVUFCQ+HOZN29etqP/SGlpaWrddddN9DkUFBSknn/++bTW//Of/5z4a3TAAQektXbSx5zv3jp06JCaOXPmStfee++9q7R2RKSuv/76la797LPPJlqvffv2aX09vrPrrrtWKfcJJ5zwo/uln/PYY4+l8vLyEq290UYbpZ3/pptuSt16662ppUuXJvq8V+Yf//hHoryXXXZZ4mskWX91fV733VvLli1TI0eOXOX6S5YsSW233XaJ1//Xv/6VVv6kf6+YOHFi2l+bPn36JFo7iSQ/w5l+bK/K33FWZP78+ammTZumfd0nn3wy7bWnTp2a6D5pzJgxNfI5Vddll11WpZ+vqr516NAhdfXVV6eKiopqJP99992X6PqDBw+ukeumUqnUokWLUieccEJqxIgRNbbmggULUl27dk3782ncuHGqtLQ00TUyeZ+0KkmuW9XHqJq+xvDhw9Neb9SoUVXK/ENz585N3XTTTaltt9029dRTT1V7PQAAalfu7MUMAABEZWVlPPjgg4nmDBgwILbaaqu0xubn58f9998fhYWFaa9/zz33JMpTFQ0aNIhLLrkkxo4dG9dff33svvvu0alTp2jSpEk0bdo0OnfuHPvtt19cd9118cUXX8Trr7+e8UwrU1RUlHhOmzZtMpAk+9I5fnHMmDE/+p6t6jjMiIjGjRvHqaeeWq1smTZy5Mi45JJLfvJ21VVXxc033xyvvfZa4ttK27Zt48UXX6xzuywsXbo07V0SvpOXl5doZ4na8Oyzz8Y333yTaM61114bBx54YFpjr7zyysS76L388ssxderURHOSePjhh2Pddddd6ZgTTzyxSmvvs88+ccEFF6x0zMEHH7zCXYJ+zvTp02PWrFlVypOu7bbbLu65557Iy8tb5dhf//rX8ac//SnR+uPGjYuPPvoorbFnn312nHHGGdG0adNE11iZs846K9q1a5f2+I8//rjGrp2LHnzwwdhmm21WOa5Zs2bx4osvJr5ffOSRR6oWjKxp06ZNHHvssWmPv+uuu9Ie+9RTT6V9LOEvf/nL2HjjjdNeO5P69esXO+ywQ61db9q0aXHRRRfFBhtsEHfccUfi46frkhYtWsQDDzwQ3bt3r7E1W7dunfaueRERpaWlMXr06Bq7Pj+V5Hl2kudVP6dt27Zx9tlnx0cffRSHHHJItdcDAKB2KZIBAEAOeffdd2P27Nlpj99ss83ipJNOSnSNdu3axXHHHZf2+Pfeey/RsWRJ5efnx4MPPhiXX3552i+kb7vtthnLk46SkpLEc1bXItmBBx4YXbp0WeW478pjixcvTqss+etf/zrWWmut6sarV3r06BHDhw/P+u17Rapym2/ZsmU0aFC3/lkjydG+EREbbbTRT45lXZUbbrgh0RFllZWV8dxzzyW6Rrr23nvvtI7NrOoRpFdeeWVa4/baa69E606bNq0qcdL297//PQoKCtIe/6c//SnWWWedRNcYOHBg0lg1Jj8/P9H9iHJA1e2xxx6JyqNrr712/PnPf050jcGDB0dpaWnSaGTZ7373u7THvv7662kfufzEE0+kvW7SvyNkUqNGjeKpp56K9u3b1+p1586dG6effnrsu+++aR9xmiuSFvs8VmRW27Zt0x47bNiwGr12to+/BQAgubr1L64AAEBGvfnmm4nG9+nTp0pFjf333z/tsRUVFYlzJdGvX79EuzasyFtvvRV5eXk1+jZp0qSfvV5VXtBt0aJFNT7DuqtBgwZxxhlnrHLciy++GJMnT477778/Fi9evMrx6ex0trpYe+2149Zbb40PP/wwrVJeNqwOt/lUKhWDBg1KNKdv376JSmERERtssEHst99+iea88sorican6+STT05rXOfOnRN/nltuuWX07NkzrbGbbbZZorWrsutjurp37x4777xzojnNmzePE044IdGcwYMHJxpf09ZYY420x86YMSODSVZvScpC3znllFOiUaNGaY8vKSmJDz74IPF1yK5u3brFrrvumtbYysrKtHYAnjp1atq3haZNm8ZRRx2V1tja0qFDhxg2bFjajx016dVXX41evXrFkiVLav3adVWSx4mIb3cMJXPWXnvttMcef/zxMWTIkAymAQCgrlMkAwCAHJLuUVjfOeCAA6p0nR49eiQaP3z48CpdZ1U22GCD+Mtf/pKRtTMpyQvA31mdX7j67W9/G02aNFnpmMrKyrj11lvj1ltvXeV622+/fWy33XY1Fa/O6tChQzz88MMxZcqUOOOMM+r0bgCrw21+7NixiXcjOfLII6t0raTzkt73p6OgoCD23nvvtMbm5eUl3nErSSE56Q40mSySHXHEEbUy75NPPqnSdb5TUlISb731Vtx4441x6qmnxl577RVbbrlltG/fPlq0aBGNGjVaaRn6gQceSHStdAq+/FiLFi3S/hn7odatW0fv3r0TzRk5cmTi65B9SYqG9913X1RUVKx0TJJjLY844og6V+iO+Pbx4O23347zzz8/cYG5uj799NPo06dPvT7m8n9NmDAhHn300ejXr18cddRRscMOO8QGG2wQa6yxRhQWFkZBQcHPPk4kPUY9ya7ZJNeyZcvYYost0ho7ZcqU6NWrV2y88cbRt2/fuOWWW2LQoEExadKk1er2DQDAz0t/n30AAKDe++qrr9Ie27Rp08S7vHxnzTXXTDR+1KhRVbrOqvTt27dKBZVsS/cIzh9asGBBBpLUDW3bto3f/OY3cd9996103I033hjLly9f5Xq5shvZtGnT4o9//GPMmDEjzjnnnDr9s1CV23xRUVFUVlbWmeMtP//880Tj11tvvejUqVOVrrXjjjsmGj979uyYNWtW4jLXymy44YbRqlWrtMe3adMm0ZGSSXaUadasWdpjIyKjpaak35vvdO/ePRo2bJjWfVhExMKFC2PGjBmx3nrrpX2NZcuWxRNPPBGPPPJIvPXWW7V6nGFxcXGdLJ3UZd27d4/GjRtXae4OO+yQ6PjTL774okrXIbsOOeSQ6NixY0ydOnWVY6dNmxavvPLKSku69fVYy//VtGnTuOGGG+L000+Piy66KJ599tkoLy+vlWv/+9//joceeijx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FT5OTJw4MUPJ65eq3A5q6zn6IYccEiNHjoz33nsvzjnnnOjatWtGrrN48eK48sorM7I2AACZoUgGAAA5orCwsEpH4ZEdBx54YOI59957b+JdSOqbdu3aVelFzLPOOisDabKvoKAgHn/88WjXrl2ied9880387W9/y1Cqqtlkk01io402SjzvpptuykCa5JKWP6uzM0MqlYoZM2YkmpP0NkJyZWVlMWfOnCrPnz59eqLx66yzzgrfP3r06Pjss88SrXXRRRfFV199Ff37949evXrFeuutt9JyUV0vSKwOqnMfUVO3JeqPww8/PO37+X//+98xf/78iPh2R9thw4alNe/oo4+u17+oUVXdunWLP/3pT4nnzZs3LwNpas4jjzySaPz6668fn3zySTz55JNx3HHHRbdu3aJVq1ZRUFCwwvEeJ75VlaPFp06dmoEkP2/HHXeMf/zjHzFhwoSYPHlyPP7449GvX7846KCDYvPNN6+Rnc3vvffeOvdLLAAA/DxFMgAAyCFJfst4k002+dmdSDLxVpf16tWrxj/fLl26rPSahx9+eOKcCxcujBtuuKGKn2X9cfbZZyca37p16zjuuOMylCb72rRpU6Uy1Y033hizZ8/OQKKqq8rt/vXXX4+33347A2mS6dy5c6Lxo0aNqvK1Jk6cGEuXLk00p1OnTlW+Humr6vd1+fLlMXbs2ERzOnTosML3Dx48ONE6xx9/fFx11VWJdnucO3duomuQXHXuI0aPHp1o/M/dlqg/GjZsGKeffnpaY0tLS+Ohhx6KiIgnnngi7Wus7sdarkxVfomhrv/95n+POF2ZRo0axYsvvhhbbrll2nM8Tnwr6fO1iIhPP/00A0nS06lTpzjqqKPimmuuieeeey5Gjx4dxcXFMWPGjBgyZEjccccdccoppyR+3Fi+fHmdeL4OAEB6FMkAACCHbLPNNmmPHTduXLWP6aLqevfuHR07dkw874orroiPP/44A4nqjp133jnRbfnEE09c7Y/1O/zww+OXv/xlojlLliypc7uS9enTJ/Ly8hLN+e6YvWzvcrDVVlslGj9jxoyYMmVKla71/vvvJxq/1lprVem4XJL74IMPqjRv5MiRiXZvad26day33nor/FjSEtHvf//7ROMjIj7//PPEc0hm5MiRVdrJJiLS3mHqO5tvvnmVrkPd0rdv32jUqFFaY+++++6ISP9Yy8022yx22GGHKmfLpMrKyoxfo3379onn1OUjY2fNmpWo6LXXXnvFZpttlugaq/PjRPPmzdMeu3DhwsTrDx06NPGcTMrLy4t27drFLrvsEqeddlrcddddMWXKlHjooYcS7Vb27rvvZjAlAAA1SZEMAIDVQoMG6T+1LS8vz2CSuu0Xv/hF2mMrKyvjqaeeymAaVqagoCDxzlsR3/6293HHHZfRUs3kyZPjnXfeydj66Uj3a5OXl7faHmv5v6666qrEc2677bY6dfTSpptuGvvss0/ieZMmTYozzzwzA4n+a+jQoSstfm288cbRunXrRGtW9T423Rf+v7P99ttX6TokV9Xv6dNPP51o/NZbb/2zH0t6rGHSEtGIESNi5syZieYk5XldxOLFi2PQoEGJ5xUVFcUbb7yRaE6ScjY/lp+fn/bYTN9W11lnnTjyyCPTGjtq1Kh47LHH4sMPP0xrfF3ejWy//faL22+/PaNHKSZ9rlRYWBitWrVKe3yS21FE9W9LmX6ciIh48cUXE89Jora/Zj/UsmXLtMcm/VoXFxfHc889lzRSrcvLy4vjjjsuLrzwwrTnZPq5AwAANUeRDACA1UK6v30fEXXuKLfatN9++yXa7efvf/97Rl+U+eKLL2Lq1KkZW7++69u3b7Rt2zbxvK+++ir222+/Kv0G/MosX748/vGPf8SWW24Zw4cPr9G1kzrmmGNijTXWWOW4ffbZJzbccMNaSJR9u+66a/zqV79KNGfJkiV17jjUiy66qErzHn744TjnnHNqfGeSefPmxZlnnhm77rprzJ8//2fH5eXlxZ577plo7aq88D1hwoQYOHBgojl77713ovFU3YgRI+K9995LNGfp0qXx4IMPJpqz2267/ezHiouLE62V9DZ4zTXXJBpfFZ7Xfevmm29OPOeee+6JsrKytMc3adIk0S8a8GN17bb6u9/9Lu2x6R6FmZ+fH8cff3xVI2XctGnT4owzzogNN9wwBgwYEEuWLKnxa7zyyiuJxic97jrJ7Sii+relTD9OfP755xkvktX21+yHkpQEp0+fnqiIePvtt2fkNpwpO+20U9pj69IvrwAAsHKKZAAArBaS7ALz0UcfxbJlyzIXpg5r37597LjjjmmPHzVqVPz5z3+u8RxvvvlmHHLIIbHlllvG+PHja3z91UWrVq3iiiuuqNLcd999N3bYYYcYOXJktXNUVFTE448/Ht26dYtzzz23Try4UVhYGCeffPIqx1VlV7f67JJLLkk85+abb44FCxZkIE3V7LzzznHUUUdVae5NN90UBx10UI28WLh48eK47rrrYqONNorbbrstUqnUKuccfvjhia4xbty4+Oc//5lozh/+8IdEJZG8vLw4+OCDE12D6jn//PMT7Xxy7bXXxjfffJPoGvvuu+/PfizpUb5Jim9PPvlkrexW6nndtwYNGhQvvPBC2uPnzJmTeHfK3XbbLdHRZPxYktvq+PHjY8aMGZkLExE77LBDbLfddmmNLSoqSmvcvvvuWy+OR54yZUqcd9550aFDh/jd734Xn332WY2sO2vWrLj00ksTzenevXui8Ul3NH377bcTjf9fmXycWLZsWZx00klpPW+qjtr+mv1Qhw4dEo1//vnn0xo3ffr0uPzyy6sSKS1XX311PP300zW6O9usWbPSHru6PlYDAKyOFMkAAFgtrLfeemmPXbhwYVxwwQWr7VFIq5L0+Lfrr78+zjvvvCgtLa3WdSdOnBhXXXVVbLLJJtG7d+947rnnMv4Cw+rgtNNOq/KxdGPHjo3tt98+zjrrrJg8eXLi+dOnT49rr702Ntlkkzj66KNjzJgxVcqRKWeffXb07dv3Z9/OPffclZYtVkd77rln7LDDDonmLF68OG688cYMJaqav/3tb4lfIPzOSy+9FJtttllcf/31sXjx4sTzP/nkkzj33HOjU6dO0a9fv0Qlu0MPPTTWXnvtRNfr169f2rt2XHLJJfHss88mWn/fffeNTp06JZpD9QwbNiz69u2b1mPcU089FVdffXWi9TfccMOVPi4kvQ1edtllaZUTBw4cWGvH23le91/HH398WoWY4uLiOOigg1a6c+KKHHPMMVWNRiS7rVZWVsbZZ5+deDeopJLsSpaOunys5YoUFRXFzTffHFtvvXV069YtLrvssvjkk0+q9PeOoUOHxo477pj4SL6kO8QmuR1FRDzwwAMxePDgRHN+KOnjxLBhw9IqQy1dujSOPPLI+Pjjj6saLW1Jv2Y33HBDfP755zVy7Z49eyYaf/HFF6+ycLVw4cLYd9990y54VsV7770XRxxxRHTp0iUuu+yy+OKLL6q1XllZWaKdM5Ps5AYAQHYVZDsAAADUhE022SRGjBiR9vhbbrklnn766dh1112jS5cu0bRp02jQ4Ke/Z9G1a9c49thjazJq1h111FHxl7/8JSZMmJD2nAEDBsQLL7wQ//d//xdHHHFEtGnTZpVzJk+eHB9//HEMGzYsBg4cWGP/cJ9r8vPz49FHH40ePXpU6YWF8vLyuPXWW+P222+PXr16xd577x3bb799bLDBBtG2bdto0qRJlJaWRlFRUUydOjXGjRsXw4cPj8GDB8cnn3xS859QDercuXPcfvvt2Y5R51xyySVxwAEHJJrzz3/+M/7whz/UmRd4OnbsGHfffXccccQRVZo/f/78+OMf/xj9+/ePAw44IHbffffo3r17dOnSJVq1ahUNGzaM4uLimD9/fkyZMiVGjx4dH330Ubz22msxZcqUKudu1KhRnHPOOXHxxRenPae8vDwOOeSQuOCCC+JPf/rTCr8HU6dOjfPOOy+efvrpxJkuuOCCxHOovnvvvTcmTZoUt956a2yyySY/+fiiRYviqquuihtuuCHxcayrOo6ua9euidb74IMP4oADDoi77757haXD+fPnx9VXXx0DBgyIioqKRGtXled1/1VUVBS//OUv49prr41TTz11hce5DR06NE477bT46quvEq291lprJd5JkR9b0c/3yjzzzDPRoUOH6NWrV2ywwQbRvHnzyM/P/8m4NdZYI/Evf3znqKOOigsuuKBGdudcc80148ADD6z2OtkyatSoGDVqVPTv3z/WXHPN2HnnnaN79+7RrVu36NKlS7Rv3z6aN28eTZo0iWXLlsXChQvj66+/jo8++iieffbZeOeddxJfsyo7gW600UbRoEGDtB8Pli1bFrvvvnv07NkzevbsGWuttdbP7iz43S7QP7TOOutEYWFhlJSUpJ3xN7/5Tdx8883Rp0+fFd6/Dho0KM4///wYPXp02mtWR9Kfvblz50b37t1jxx13jK222iratm37s8dj9unTJzp27PizayUtks2YMSN22223eOyxx2Krrbb6ycdfeeWVOP3006v0iz9VMX369Ojfv3/0798/unTpEvvtt1/stddesdVWW0WXLl0iLy9vlWt8+OGHcf7558fw4cPTvu76669fndgAANQiRTIAAFYLO+ywQzz66KOJ5nzzzTfx+OOPr3RM7969690LjqvSsGHDuOGGG+LQQw9NNG/8+PFx2mmnxVlnnRWbb755bLXVVrHmmmtGy5Yto7S0NBYsWBDz58+POXPmxGeffZZ4Rwx+3vrrrx8PPvhgHHbYYVV+Eb+ysjLefPPNePPNN2s4HXXN/vvvHz169EhUwigqKop//OMf8Ze//CWDyZI5/PDD44ILLoi//e1vVV6juLg4nnjiiXjiiSdqMNnKnX/++XHHHXfE1KlT055TUVER1113XQwYMCB233332HDDDaN169Yxd+7c+Pzzz+Pdd9+t0k4qBx54YOy2226J51Ez3nzzzdh0001ju+22i+7du8c666wTRUVF8fXXX8cbb7xRpZ0+11hjjTjttNNWOmbPPfdMfCz1a6+9Fuuvv37ssssusfXWW0erVq1i4cKF8cUXX8SQIUMSHadaEzyv+7ElS5bE2WefHRdffHHsueee0alTp2jcuHHMnDkz3nnnnRg3blyV1j333HOjsLCwhtPmlqS7gEZELFiwIJ555pmVjtlggw2qXCRr3LhxnHbaaXHllVdWaf4PHXvssdGwYcNqr1MXzJ07N5599tnEO3smdcABByTeLatJkyax1VZbJf4ljo8//niVu3916dLlJ0WygoKC2G233eLll19O+1rFxcVx8sknx1/+8pfYbbfdolOnTpFKpWLGjBkxePDgWitBfWejjTaKNdZYI9HfOSsqKuKdd95ZZUGwV69eKy2S7bLLLlFQUJBoJ8wvv/wyttlmm9hll12iR48eUVhYGDNmzIi33norJk2alPY6Ne270vutt94aERFNmzaNzTffPLp06RItW7b8/i3i28eiyZMnx0cffVSlX7z4xS9+UaPZAQDIHEUyAABWC/vss0+2I9QrhxxySBx77LHx8MMPJ567fPny+PTTT+PTTz/NQDJ+zkEHHRR33nln/Pa3v812FOqBiy++OA477LBEcwYMGBDnnXdetGjRIkOpkvvrX/8ac+fOjfvvvz/bUdJWWFgYd911V+y7776Jy1+lpaUxcODAGsnRpk2bRMcNkTkfffRRfPTRRzWy1hVXXLHKn9Ftt9021l133fjmm28SrV1RURGDBw+u1nFpNcXzuhVbuHBhPPnkkzWyVqdOneK8886rkbVy2W677RaNGzeu9hHwNe3000+Pa6+9ttpHvta3Yy2zLS8vL3GR9zv77LNPre4GfMABByQqkn1n2rRp8dBDD2UgUTJ5eXmx1157xWOPPVbr11577bVj//33j+eeey7RvFQqFUOGDIkhQ4ZkKFn1FRcXx/DhwxPtNJaO5s2bx5577lmjawIAkDk/3YMYAADqoU022aRKOwLksttvv32FR2tQd5188slxzz33REGB3wli5VZ0jNGqLFiwIG666aYMJaqavLy8uPvuu+PUU0/NdpRE9t5777jooouydv0GDRrEfffdt8JjCsmcTN8377TTTtG3b99VjsvLy4sLL7wwYzlat24du+++e8bWj/C8LiJ+9si1mpCXlxe333673chqQMuWLeOQQw7JdoyfaN++feJC+f/q3r17bL311jWUKDeceuqpVb7vOuGEE9I6UrCm9OnTJ9Zdd92MrV/d2186+vTpk/Fr/JxTTjkla9euj04++eQ69csqAACsnCIZAACrjcsuuyzbEeqV5s2bx6BBg2KTTTbJdhQSOPnkk+Oll16K1q1bZzsKdVhVd8S48cYbY+nSpRlIVHX5+flx5513xjXXXBMNGtSff8a48sors7aD4C233BIHH3xwVq6dy9q3b5+xAmHbtm3jkUceifz8/LTGn3XWWdG5c+eMZLnjjjtWeuRXTcn153V/+ctfMlbyOP/882PffffNyNq56OKLL66TJf/f/e531ZpvN7JkunfvHgMGDKjy/M022yx+/etf11ygVWjatGlceumlGVm7e/fucc0112Rk7R/aZ599Yscdd8z4dVZk//33z1ipOpu/jJAJ7dq1i7/85S/ZjgEAQAL1519gAQBgFfbee++0durgv9ZZZ5149913Y5dddsl2FBLYa6+94rPPPsv4jjDUb0cddVTioujcuXPjlltuyVCi6unXr18MGTIkunbtmu0oabvrrrsyujPU/2rYsGE8+OCDcfrpp9faNfmxK6+8Mk444YQaXbOwsDCef/75RMWwxo0bx9NPPx1Nmzat0SyXXXZZHHXUUTW65s/J9ed17du3j5deeinatGlTo+seeuih8de//rVG18x1W265ZVxxxRXZjvETO++8c2yzzTZVmtuoUaM45phjajbQamzrrbeOV155pdq7/P3jH/+olaLud/r27RtHH310ja7ZoUOHeOGFFzK6q+IP3XvvvdGqVataudYP5eXlxV133RXNmjWr0XXPO++8uOqqq2p0zWxq1qxZPP3009G2bdtsRwEAIAFFMgAAVis333xzXHjhhbV6LEh917Zt23j99dfj0ksvjYYNG9bqtbt16xbrrbderV5zddGxY8d4/fXX4/7776/VF5wiIjbffPPYfvvta/WaJNegQYMq7Whwww03RHFxcQYSVd/OO+8cn332WVx88cU1XpBZlT333DPx/VVeXl789a9/jccffzzWWGONDCX71sYbbxzvvPNOHH/88Rm9DiuXl5cX9913X42V+Vq1ahWvvPJK7LTTTonn9uzZMx555JFo3LhxjWTp169fre8okuvP63r06BGvv/56tGvXrkbW+/Wvfx2PP/54vdrdsb7o169f/P3vf6/159KrUtVdyQ4++OB6U/zYY489snpk3m9+85t4++23Y+211672WmuvvXYMGTIktt122xpItmrfPWb16tWrRtbr3LlzvP7669G+ffsaWS8dm266abz11luxwQYb1No1v7P++uvHk08+WSPHBOfn58df//rX+Pvf/14DyeqGdu3axWuvvZa1XeMAAKg6/2oAAMBqpaCgIP7617/Gq6++aremBBo2bBj9+/ePzz77LA4//PCMvmC77rrrxvnnnx8jR46Mzz77LDbeeOOMXWt1l5eXF3369ImxY8fGP//5z9h0000zer0999wzBg4cGKNGjapSqYHad8wxx8T666+faM7s2bPj9ttvz1Ci6mvevHlcccUV8fXXX8cf//jHWHPNNTN2rcaNG8fJJ58cn3/+eQwaNKjKLxIfddRR8eWXX8aZZ55Z4yWDli1bxpVXXhmffPKJgmcd0aBBg7jtttvirrvuqla5oWfPnjF8+PBq7Rp68MEHxzvvvFOtYy6bN28e99xzT60cU/a/PK/7tkz28ccfV+vzb9iwYVx33XXx6KOP1rmi0+rkvPPOi/feey8OPvjgtI+hzbRjjjmmSoWw+nSs5YABA2LOnDnx/PPPR58+fWp8F7+f061bt3jppZfikUceiZYtW9bYul27do133303rrnmmujUqVONrftzmjRpEoMGDYpzzjmnWuv07t07Pvjgg8S74daEbbbZJkaMGBH9+vWLtdZaq1avve+++8arr75areJlly5d4s0338z4Lrb77rtvbLHFFhm9RsS3pbjf/va38dlnnymRAQDUUwXZDgAAAJmw5557xp577hljx46N1157LYYPHx6fffZZzJ07NxYtWhSLFy+OioqKbMesczbddNN46qmn4uuvv4577rknnnjiiZgwYUK11mzcuHHstNNO0bt37+jdu3dst912debFtdVFkyZN4ne/+1387ne/iyFDhsTTTz8dL7zwQkyaNKla6zZq1Ch23XXXOPjgg+Oggw6q9Z3PVjfnnntuLFy4MO3xVT2O6ocKCgri7rvvjiFDhiSaV9u7fVVFu3bt4rrrrovLL788nn/++Xj22Wdj4MCBsWDBgmqt27p169h3333j4IMPjn333bfGXhxee+2145Zbbok///nPcdddd8UjjzwSY8eOrdJaeXl50bNnz+jTp0+ccMIJNfoCNjXnlFNOif322y/69+8fDz30UCxbtiyteZ07d45+/frFqaeeWiOPl9tuu218+umnMWDAgPjHP/6R9s9Iw4YN45hjjonLLrvsJ0W0hg0bJtrprLoF9Vx/XteuXbt444034rHHHourrroqRo0alda8/Pz8OPTQQ+Pqq6+OjTbaKMMpifj25+3ZZ5+NadOmxSuvvBLDhw+PkSNHxuzZs2PRokWxaNGiKC8vr7U8TZo0iVNOOSWuu+66tOest956sddee2UwVc1r3LhxHHjggXHggQdGeXl5fPzxx/Huu+/GO++8E++++27Mnj27Rq7Tpk2bOOCAA6JPnz7Ru3fvGllzRRo1ahT9+vWLCy+8MN588814//33Y/jw4TFu3LgoKiqKRYsWxdKlS2vseg0bNox//OMfcdhhh8Vll10WgwcPTnvuxhtvHBdddFGccMIJP7qvz8vLS/Q4Ud2Sa8uWLeOaa66J/v37x6uvvhrDhg2Ljz/+OCZMmPD9z15JSUm1rvFzfvWrX8W4cePiqquuiptvvjlKS0vTmteuXbv4/e9/H7///e+jSZMmGcn2Q2eddVacddZZMWPGjBg0aFAMHjw4PvrooxgzZkxUVlZWe/3OnTvH0UcfHX379q1XR9EDAPBTealUKpXtEAAAQN01ZsyYePfdd+OTTz6JMWPGxNSpU2P27NlRXFwcpaWl0bhx42jZsmW0aNEiWrZsGR07doxNN900Nt1009hss81iq622qpHjPkhu4sSJ8dFHH8WIESNi/PjxMXXq1JgxY0YsWbIkSkpKYvny5dGsWbNo2bJltGzZMtZcc83YfPPNo1u3brHllltG9+7ds3pUECRVUVERo0aNiuHDh8enn34akyZNiilTpsTs2bNj6dKlUVJSEqlUKlq0aBGtWrWKli1bRrt27WLLLbeMbt26Rbdu3WKrrbaKgoLa+b27cePGxZAhQ2LEiBHx1VdfxbRp02LOnDnf/3w2atQomjZtGuuuu2507NgxNt988+jZs2fsvvvuNXbUHSvXq1evtIuYnTt3/tkC7/z58+OFF16IN954Iz7//POYMmVKLF68OPLy8qJVq1ax4YYbxrbbbhv77bdf7LnnnhkrXC9evDgGDRoUb7zxRnz44Ycxa9asmDdvXlRUVESLFi2iQ4cOseWWW0avXr3iwAMPjHXWWScjOaieDz74IF566aUYNmxYjBkzJubPnx/FxcXRtGnTaNeuXWyxxRax2267xaGHHqoETkyZMiXWX3/9tMuW/fr1y8oOhJk0YcKEGDt2bHz99dcxfvz4GD9+fEyfPj0WL14cS5cujSVLlnxfzGrcuHE0b9481lprrVhvvfViww03jC222CJ23HHH2HrrrXPiF2I+++yzePXVV2Pw4MExfvz4mDt3bhQVFUVhYWG0adMmNtlkk+jZs2fsv//+8ctf/tJxuT8wf/78GDRo0Pe7OM+ZMyfmzJkTqVTq+8f7Hj16xL777ht77rlnndglcunSpTFy5Mj4/PPPY9KkSTFp0qSYPHlyzJkzJ5YuXRpLly6N4uLi78uB3/29sVOnTrHhhhvGNttsEzvttFNWdqMDACAzFMkAAAAAYAVqqkgGkE177rlnvP7662mN/eqrrxRCAAAAcphfFQEAAAAAgNVQZWVljB49Oq2xdhUCAABAkQwAAAAAAFZDb7zxRsycOTOtsSeddFKG0wAAAFDXKZIBAAAAAMBq6Oqrr05rXKtWreLoo4/OcBoAAADqOkUyAAAAAABYzVx11VXx1ltvpTX2xBNPjObNm2c2EAAAAHVeQbYDAAAAAAAA1bNs2bKYOXNmfPzxx3HvvffGwIED05rXoEGDOOusszKcDgAAgPpAkQwAAAAAAOqZvLy8Glnn+OOPj4022qhG1gIAAKB+c7QlAAAAAADkoCZNmsQVV1yR7RgAAADUEYpkAAAAAACQgy655JLo2LFjtmMAAABQRyiSAQAAAABAjtltt92iX79+2Y4BAABAHaJIBgAAAAAAOaRbt27x+OOPR4MGXiIAAADgv/wtEQAAAAAAcsSvfvWrePPNN2OttdbKdhQAAADqGEUyAAAAAABYzXXs2DFuueWWGDJkSKy55prZjgMAAEAdlJdKpVLZDgEAAAAAAKQvLy/vZz/WrFmzaN26dXTp0iW233776N27d+yzzz6Rn59fiwkBAACobwqyHQAAAAAAAEjG74gDAABQ0xxtCQAAAAAAAAAAkOMUyQAAAAAAAAAAAHKcIhkAAAAAAAAAAECOUyQDAAAAAAAAAADIcYpkAAAAAAAAAAAAOU6RDAAAAAAAAAAAIMcpkgEAAAAAAAAAAOQ4RTIAAAAAAAAAAIAcp0gGAAAAAAAAAACQ4xTJAAAAAAAAAAAAcpwiGQAAAAAAAAAAQI5TJAMAAAAAAAAAAMhximQAAAAAAAAAAAA5TpEMAAAAAAAAAAAgxymSAQAAAAAAAAAA5DhFMgAAAAAAAAAAgBynSAYAAAAAAAAAAJDjFMkAAAAAAAAAAABynCIZAAAAAAAAAABAjlMkAwAAAAAAAAAAyHGKZAAAAAAAAAAAADlOkQwAAAAAAAAAACDHKZIBAAAAAAAAAADkOEUyAAAAAAAAAACAHKdIBgAAAAAAAAAAkOMUyQAAAAAAAAAAAHKcIhkAAAAAAAAAAECOUyQDAAAAAAAAAADIcYpkAAAAAAAAAAAAOU6RDAAAAAAAAAAAIMcpkgEAAAAAAAAAAOQ4RTIAAAAAAAAAAIAcp0gGAAAAAAAAAACQ4xTJAAAAAAAAAAAAcpwiGQAAAAAAAAAAQI5TJAMAAAAAAAAAAMhximQAAAAAAAAAAAA5TpEMAAAAAAAAAAAgxymSAQAAAAAAAAAA5DhFMgAAAAAAAAAAgBynSAYAAAAAAAAAAJDjFMkAAAAAAAAAAABynCIZAAAAAAAAAABAjlMkAwAAAAAAAAAAyHGKZAAAAAAAAAAAADlOkQwAAAAAAAAAACDHKZIBAAAAAAAAAADkOEUyAAAAAAAAAACAHKdIBgAAAAAAAAAAkOMUyQAAAAAAAAAAAHKcIhkAAAAAAAAAAECOUyQDAAAAAAAAAADIcYpkAAAAAAAAAAAAOU6RDAAAAAAAAAAAIMcpkgEAAAAAAAAAAOQ4RTIAAAAAAAAAAIAcp0gGAAAAAAAAAACQ4xTJAAAAAAAAAAAAcpwiGQAAAAAAAAAAQI5TJAMAAAAAAAAAAMhximQAAAAAAAAAAAA5TpEMAAAAAAAAAAAgxymSAQAAAAAAAAAA5DhFMgAAAAAAAAAAgBynSAYAAAAAAAAAAJDjFMkAAAAAAAAAAABynCIZAAAAAAAAAABAjlMkAwAAAAAAAAAAyHGKZAAAAAAAAAAAADlOkQwAAAAAAAAAACDHKZIBAAAAAAAAAADkOEUyAAAAAAAAAACAHKdIBgAAAAAAAAAAkOMUyQAAAAAAAAAAAHKcIhkAAAAAAAAAAECOUyQDAAAAAAAAAADIcYpkAAAAAAAAAAAAOU6RDAAAAAAAAAAAIMcpkgEAAAAAAAAAAOQ4RTIAAAAAAAAAAIAcp0gGAAAAAAAAAACQ4xTJAAAAAAAAAAAAcpwiGQAAAAAAAAAAQI5TJAMAAAAAAAAAAMhximQAAAAAAAAAAAA5TpEMAAAAAAAAAAAgxymSAQAAAAAAAAAA5DhFMgAAAAAAAAAAgBynSAYAAAAAAAAAAJDjFMkAAAAAAAAAAABynCIZAAAAAAAAAABAjlMkAwAAAAAAAAAAyHGKZAAAAAAAAAAAADlOkQwAAAAAAAAAACDHKZIBAAAAAAAAAADkOEUyAAAAAAAAAACAHKdIBgAAAAAAAAAAkOMUyQAAAAAAAAAAAHKcIhkAAAAAAAAAAECOUyQDAAAAAAAAAADIcYpkAAAAAAAAAAAAOU6RDAAAAAAAAAAAIMcpkgEAAAAAAAAAAOQ4RTIAAAAAAAAAAIAcp0gGAAAAAAAAAACQ4xTJAAAAAAAAAAAAcpwiGQAAAAAAAAAAQI5TJAMAAAAAAAAAAMhximQAAAAAAAAAAAA5TpEMAAAAAAAAAAAgxymSAQAAAAAAAAAA5DhFMgAAAAAAAAAAgBynSAYAAAAAAAAAAJDjFMkAAAAAAAAAAABynCIZAAAAAAAAAABAjlMkAwAAAAAAAAAAyHGKZAAAAAAAAAAAADlOkQwAAAAAAAAAACDHKZIBAAAAAAAAAADkOEUyAAAAAAAAAACAHKdIBgAAAAAAAAAAkOMUyQAAAAAAAAAAAHKcIhkAAAAAAAAAAECOUyQDAAAAAAAAAADIcYpkAAAAAAAAAAAAOU6RDAAAAAAAAAAAIMcpkgEAAAAAAAAAAOQ4RTIAAAAAAAAAAIAcp0gGAAAAAAAAAACQ4xTJAAAAAAAAAAAAcpwiGQAAAAAAAAAAQI5TJAMAAAAAAAAAAMhximQAAAAAAAAAAAA5TpEMAAAAAAAAAAAgxymSAQAAAAAAAAAA5DhFMgAAAAAAAAAAgBynSAYAAAAAAAAAAJDjFMkAAAAAAAAAAABynCIZAAAA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OrMiGJIBQInyaEsAAAAAACpRobEpCs0tMfKgwR8b0T+9jZGKxeKf//e4cePi2muvjQkTJkQ+n3/Jtfvuu2/8+7//e1x66aVx5JFH9rupUCjEuHHj4pZbbokZM2ZEbW1tj9ePGDEijjrqqPjQhz4Un/zkJ+MDH/hAn++Vz+fjoYceiltvvTVmzJgRzc3NPV7/yle+Mv7pn/4pTjnllPjIRz7S5/tERFx44YVx0UUXdfv6V7/61Rg9enRERCxdujR++tOfxuOPPx6FQuEl177pTW+Kc889N77+9a/v8Xs4fvz4uPDCC+O5557r9q/jzDPPjDPOOCP222+/PvV/7Wtfi9tuu63b12+99db42te+FhERK1eujAsvvDAeeuihyGQyL7l21KhR8U//9E9xwQUXxD//8z/36f4REQ0NDTF58uSYPn16zJkzJ5YuXRoNDQ19fv/rX//6+MQnPhFf//rX413velev1+/taLC36ydPnhwnnHDCC752xBFHxMaNG7t9z/r16+OII47Yq449KRQKcfPNN8evf/3rWLVq1R6vee1rXxtf/epX49xzz40DDjhgwPfsrx07dsT1118fjz32WCxevHiPvwb+ZL/99ot/+Id/iO985zvx6U9/uuSGcOXEjxwAlKDdrZ3R2pVLnQEAAAAAAEMit8mpZOWmoaEhPvnJT8ZJJ50U48eP3+OILCIim83GmDFj4thjj41HHnmkX/e6995748gjj4x///d/j0ceeaTXEVnEH8duK1asiOuuuy7+5V/+pc/3evDBB+PII4+Mz372s/Hkk0/2OiKLiKirq4uHH344TjzxxDj22GNj6tSpfb5fX11//fVx3HHHxdixY7sd0Kxfvz6++c1vxsknnxwdHR1//no2m41vf/vbceKJJ3Y7IvvTX8fPfvazOP7442PHjh2D2n/NNdfEMcccE/fee+8eR2QRfxzwTZ48OT7wgQ/Ed77znchms3367Lvuuis+9alPxVVXXRXTp0/fqxFZRMTmzZvjmmuuieOOOy4++9nP9unnVyXYsmVL/OM//mOccsop3Y7IIiK2b98ev/zlL+Poo4+OadOmDWPhH7W2tsZpp50WRxxxRPziF7+ImpqaHkdkEREdHR0xceLE+NznPhdvf/vbY+LEicNUW3kMyQCgBDmNDAAAAACASpbbuCV1Anth69at8b73vS8efvjhPr+ns7MzPv3pT8eMGTP6/J6Wlpb4yle+El/4whdi7dq1/Unts66urjjttNPiM5/5TKxbt67fn7No0aL44Ac/GJdccskLTm4biMsvvzy+973v9XlYNXbs2Pj85z8fERG5XC4+8YlPxM0339zn+9XU1MRHPvKRbgdfe+ucc86JH/zgB33uLxaLcdNNN8VnPvOZPr9nsDzwwANx7LHHxqZNm4b1vsNt/fr18b73vS9mzZrV5/ds2rQpTjzxxJg8efIQlr3QokWL4j3veU/ccMMN0dXV1a/PWLVqVfzrv/5r/OIXvxjkuupgSAYAJWhDnSEZAAAAAACVK791W+oE9sKHPvShWL58+V6/L5/Px9e//vU+jYM6OzvjYx/7WNxxxx39SdwrxWIxvvjFL8YNN9wwKJ+Xz+fj3HPPjR//+McD/qxnn302fvKTn+z1+8aOHRu33nprnHnmmTFu3Li9fv+iRYvi0ksv3ev3vdhNN90Ul19+eb/e++ijj8b3v//9ATfsre3bt8e//du/veBUt0rS0dERH/vYx/o1lmtvb4+Pf/zjsWbNmiEoe6GlS5fG+9///h5PS+urQqEQ5513Xo+PkWXPDMkAoARtdCIZAAAAAAAVLLdtcB+jx9BasWJFv9+7evXqGDt2bI/XFIvF+I//+I+YPn16v++zN372s5/FQw89NOif+6tf/SpuvfXWAX3G+vXr+32y2ZlnnhnXXnttv+993XXX9fsUqD+ZOXPmgN5/4403xvjx4wf0Gf2xZMmSuPHGG4f9vsNh165dA/o13NbWFl//+td7fbzkQOzatSv+7d/+rU+Plt0bF154YTzwwAOD+pmVbp/UAQDAS22ob02dAAAAAAAAQya/bWfqBPph1KhR8alPfSo+/OEPxyGHHBIrVqyIG264IbZt6/mEuTvuuCM+9alPdfv6Aw88EGPGjOn1/iNGjIgTTjghPvjBD8Yb3/jGOOCAA6K+vj5Wr14d06ZNi1mzZvU6wlq2bFmfTsx6+9vfHl/4whfiyCOPjEKhEMuWLYs777wzNmzY0OP7zjjjjDj55JPjFa94Ra/36M0JJ5wQn/3sZ+PVr351rFq1Kq6++urYubP7XzuNjY0v+PPjjjsuvvzlL8cb3vCG2LJlS1x33XU9nixVV1cXTz75ZJx88skDbo+IeN/73hef+tSn4g1veEO0tLTEzJkz46677or29vYe3/fDH/4wli1bFiNGjOj1HiNHjoxjjz023vnOd8ZRRx0Vr3nNa+KAAw6I/fffP7q6umL37t2xevXqmDBhQixevLjHz/rVr34V3//+92PUqFEv+Pp73vOeF/z5vHnzevycF1//YgceeGCPrw+lgw8+OL785S/H3/7t38b+++8f69ati/vuuy/mz5/f4/umT58e999//58foTrYzjnnnNi4cWOP17zhDW+Iz3/+8/GmN70pXv3qV0dDQ0PMnDkz7r333mhra+v2fT/84Q/jpJNOiv3222+wsyuSIRkAlCCPtgQAAAAAoJLltzuRrNwccsgh8cQTT8Txxx//gq+fdtpp8f73vz+WLVvW7Xtnz57d7Wu5XC7OPffcXu//N3/zN3H77bfHscce2+0169ati2uuuSZ++9vfdnvN+eef3+vJSmeddVZcdtllsc8+L5xU/PSnP41vf/vbcdddd3X73qamprjiiivisssu6/Eevbn00ktf8ojLk08+Od75zndGPp/v9f2nnHJKXH/99S8YRX35y1+OY445psfh33PPPTfgIdmIESPit7/9bZx66qkv+PrXvva1OOecc+Jf//VfY+3atd2+f8WKFTFhwoT48Ic/vMfXR40aFR/5yEfiG9/4Rnz4wx/u82hvzJgx8cUvfjEymcweX9+2bVvU1NTEu9/97hd8fe7cuS/4894Gbi++vlQcd9xxMW7cuHjta1/7gq+fffbZ8Ytf/CLOP//8Ht9/7bXXDsmQbOXKlXH77bd3+/o+++wT1157bXz7299+ycjvG9/4RlxwwQVx0kknxaJFi/b4/m3btsX1118fZ5111qB2VyqPtgSAEpPNF2JrY/ereQAAAAAAKHeFuvooDvARegyvu++++yUjsoiIQw89NC655JIe37tjx45uT9IaP358rF69usf3v+td74qZM2f2OCKLiHjzm98cV199dbcnT9XW1vb6SMuTTz45fvWrX71kRBYRsd9++8Vtt932kqHRi910000Degzgxz72sZeMyCIi3va2t8X73//+Xt//zne+8yUjsog/fq9OOeWUHt9bU1Ozd7F7cMYZZ7xkRPYnb37zm+ORRx7Z44/vXxo9enS3r5166qnx1FNPxWc/+9m9OvntU5/6VLddfzJt2rQ+f145OfDAA+Pxxx9/yYgs4o/DuPPOO6/XkdjMmTN7/bXaH7/73e96HEdefPHFceqpp77k5/OfvP71r4+HHnooRo7sfgLV0/iTFzIkA4ASs7mhNfK9HLsMAAAAAADlLr/d4y3Lxb/8y7/ERz/60W5ff9/73tfrZ9TV1e3x608++WSP7xsxYkTcddddccABB/R6jz856qij9vj1CRMm9Proy95GcaNGjYoLL7ywx2vq6upiwYIFPV7Tkx/96Efdvvaud72r1/f/13/9V7ejm96+V919n/rqZS97Wa8nzL3zne+MT3/60z1e09Ogqy+PvOzO3/zN3/T4+ooVK/r92aXs1FNPjcMPP7zHa3r7eR0xNEO78ePHd/vay1/+8jj99NN7/Yy3vOUtPX5va2pqenwsLP+PIRkAlJgN9R5rCQAAAABA5ctt83jLcvGFL3yhx9cPO+yw+Ku/+qser2lsbNzj1ydOnNjj+0488cQ4+uije7ymryZPntzj60cffXSf7nXiiSf2Omzr7V7dOfjgg+Mf//Efu319TydKvdhJJ53U7Wu9jYm6+z711b/8y7/06ZSwT3ziEz2+vnnz5ti6dWuvn5PL5WLKlClx/vnnx2c/+9k47rjj4nWve10ccsghse+++8aIESNe8Me3vvWtHj+voaGh13uWo0996lO9XnPUUUfF29/+9h6vmTVr1mAlRcQfTytcvnx5t693dnbGAQcc8JLv457+WLhwYbefUywWY86cOYPaXql6PisQABh2Wxo81hIAAAAAgMqX325IVi7+7u/+rtdrDjzwwOjq4XGlmUxmj1/fuHFjj5/74Q9/uNd799WmTZt6fP0973lPnz5n3333jWOOOSaee+65ft+rO+94xzu6PU0s4o8/zj157WtfG6961au6fX2//fbr8f3dfZ/66rjjjuvTdX05WW3z5s3xute9bo+vNTY2xpVXXhnXX3/9gMdvf6m+vn7QPqtUjBw5steT2P7kXe96V4/Drs2bNw9WVkT0/ut/MO3atWvY7lXODMkAoMRsazIkAwAAAACg8uW3ecxYuXjjG9/Y6zW9nUi2J21tbdHR0dHjNW9961v3+nO7s3v37h5f78tpX329tra2ts+ftTef29uP8978NQyFvt6/L9d1N+qaO3dunHTSSUPyqMKBDulK0SGHHNLrgPBPevu+DPbQrr+/Tkr9XuXMkAwASsy2pvbUCQAAAAAAMOScSFY+ejsFK+KPpx7trb6cJNWXe/dVU1NTj6/vv//+ff6s3h5t2du9+tvQ249zb11Dra8/hn25rqWl5SVfW716dZxwwgnR1uZghr7am5/XvV27p+/JQPT310l/9DZa5Y/2/u/kAMCQ2tro//gCAAAAAFD5ctsMycpFX0Zi/RmSHXLIIb1e09zcvNef252DDz64x9fb2/v+m/17GzL1dq/u9OfHcTDfP1B9/THsy3V7GhGecsopRmR7aW9+Xvd27WAOOyP6/+uEoWNIBgAlZluzE8kAAAAAAKh8TiTjgAMO6PWRe2vXrh20+73qVa/q8fXt27f3+bN6u/awww7r82dVkr7+GPblukMPPfQFf7569eqYPHlyj+854ogj4tprr42lS5dGa2trFAqFKBaLf/7j1ltv7VNfJWlsbIzOzs4+Xdvb9+XF35OB6u3XyZve9KYXfP8G8seFF144qO2VypAMAEpIQ3tXtGdyqTMAAAAAAGDIFVtao9DSmjqDxN74xjf2+PrTTz89aPd6wxve0OPr8+bN69PnZLPZWLJkSY/XvP71r+9zVyVZsGBBn65buHBhr9e8+Mfwqaee6vX6+fPnx/e+9704+uij44ADDogRI0a84Jq6uro+9VWSQqEQNTU1fbq2t+/LYP+87u3zNmzYELt27RrUe9IzQzIAKCFbmxzFCwAAAABA9XAqGR/84Ad7fH38+PGxbNmyQbnXBz7wgR5fX7ZsWSxfvrzXzxk/fny0tvY8guztXpVq8uTJ0djY2Ot1Dz/8cI+vv/71r4/Xve51L/ja5s2be3zPZz7zmXjFK17R4zVTpkzpta03vT0+NJ/PD/geg+2hhx7q9ZqVK1f2+vP/+OOPH6ykiIg4/PDD46ijjur29WKxGKNHjx7QPTo7O/fqtMFqZ0gGACVkW6PHWgIAAAAAUD3y2wzJqt1HP/rRHl8vFovxpS99Kdra+v6b8VeuXLnHr3/oQx96yQlVL3buuef2+Ho+n4+LLrqox2sOPfTQePe7391zZIXq6uqKSy+9tMdrli5dGg8++GCP17z//e9/ydd6G6j1dtrY1KlTY9y4cT1e0xcHHnhgj69v2LBhwPcYbL/73e96HVP15dGP//iP/zhIRf/PRz7ykR5fv+SSS2L16tV7/bnt7e1x1VVXxZvf/OYYP358f/OqjiEZAJSQbU4kAwAAAACgiuR27EydQGIf+chH4q1vfWuP1yxcuDDe9773xaJFi3q8btu2bfHTn/40jj322D2+fthhh8UnP/nJHj/joYceip/85Cd7PFWqs7MzvvGNb8TcuXN7/IzvfOc7vZ5aVcmuvPLKuOmmm/b42rp16+L//t//G7lcrsfP+OpXv/qSr/V22thDDz3U7SNHJ06cGJ/85CejWCz2+Bl98cpXvrLH188777xoaWkZ8H0GU3Nzc3z84x+PnTtf+vfcYrEYv/jFL+Lee+/t8TOOP/74OPLIIwe97dvf/naPv16am5vjhBNO6NMYrFAoxOTJk+Ob3/xmHH744XHmmWc6jWwv7ZM6AAD4f7Y1OZEMAAAAAIDq4UQy9tlnn7jkkkvic5/7XI/X1dTUxLve9a74wAc+EB/84AfjiCOOiP333z8aGhpi3bp1MWPGjJg2bVqvA6WLLrooHn744SgUCt1e88tf/jLGjh0bX/jCF+LII4+MQqEQy5YtizvvvDPWr1/f4+cffPDBcfbZZ/d4TaUrFovxne98J26//fb49Kc/Ha9//eujpaUlZs6cGXfeeWe0t/f838OOOuqo+PCHP/ySr7/jHe/o8X0tLS3xd3/3d/GVr3wl3vve98ahhx4a27Zti8cff3xQT6Q65phjYt26dd2+fs8998SYMWPiTW96U/yv//W/XvDaF7/4xTjzzDMHrWVvzJs3L972trfFl7/85fi7v/u72G+//WLdunVx7733xvz583t9//e///0h6XrnO98ZX/rSl+KOO+7o9ppt27bFiSeeGMcee2yceOKJcfTRR8dBBx0U7e3tUVdXF1u2bIk5c+bE3LlzS27EV24MyQCghGx1IhkAAAAAAFUkv2t36gRKwGc+85m477774qGHHurxumKxGJMmTYpJkyb1+17veMc74sc//nFcdtllPV63bNmyOO+88/b686+66qo49NBD+5tXUaZPnx7Tp0/f6/ddddVVe3wE6Uc/+tHYd999I5vNdvvejo6OuPHGG+PGG2/c4+ujRo3a42lze+Of//mf49FHH+3xmkwms8dHrA7FoyH3RmNjY1x77bV7/b5/+Id/6HXsORC//OUvY9KkSbF169Yer6upqYmampoh68CjLQGgpGxrNCQDAAAAAKB6FGrrUidQAkaMGBF33XVXvO997xuW+11yySXxiU98YtA/9+yzz46vf/3rg/655eSf/umfBvT+b33rW/HRj350j68ddthhccopp/T7s/fff/8466yz+v3+P/nyl78cL3/5ywf8OcPlVa96VbzlLW/p9/v333//uPXWW4f0ca2HH354jBs3Lg488MAhuwd9Y0gGACVke7NHWwIAAAAAUD3ytU4k449e/vKXx5NPPhn/8R//MeT3GjFiRNxzzz1x6qmnDsrnjRo1Ki6++OK4/PLLB+XzytnXv/71OPfcc/v13pNOOimuv/76Hq+55JJL4phjjtnrzx41alTce++98ba3va1fbX/pVa96VVl9rw844IB44okn4vDDD9/r9+63334xduzYOPLII4eg7IWOPfbYmDJlyrDci+4ZkgFAiahr64yO7MCO0gUAAAAAgHJSaGiI4gAfM0flOPDAA+OOO+6Ie+65Z0AnKPXFX/3VX8UNN9wQ999/f7zpTW/q9+ccc8wxMWHChDj33HP3+DjGanTxxRfHtddeGy972cv6/J5vfOMbMWbMmF7fc9BBB8X48ePj7//+7/v82QcffHCMHTs2Pv7xj/f5Pb05/fTT45prrimbk8mOPPLImDlzZrz3ve/t83v++q//Op588sn44Ac/OIRlL/Tud7875s+fH6effnrsv//+A/68Y445Jq644oo46aSTBqGuOhiSAUCJ2NbkNDIAAAAAAKpMvhCF+sbUFZSYz3/+87Fq1ap49NFH4+STT45XvepVfXrf//7f/ztOO+20mDhxYp/v9ZnPfCZWr14d9913X5x44olx0EEH9fqeQw89NE4++eR44oknYtGiRXHCCSf0+X7V4nvf+14sWrQoPve5z8W+++67x2tGjhwZJ5xwQkyaNCn+8Ic/9Hl49trXvjaeffbZ+M1vfhNvfOMbu71uv/32i29+85uxdOnS+NjHPtavv46efP/7348tW7bEVVddFZ/4xCfiLW95Sxx88MExatSoQb/XYHjjG98Ys2bNiuuvv77HoearX/3q+NGPfhTLli2Lf/7nfx7Gwj864IAD4je/+U1s3rw5Lr/88vj7v//7Pv/ceMUrXhEf//jH46qrroqlS5fGokWL4uyzz+7z30OIGFEsFoupIwCAiPHLNsePHp2dOgMAAIbEjz98bHzxvf87dUZZyq5eF7u/+p+pMwAAYMi88g/XxMveflTqDErcqlWrYvny5VFfXx8NDQ3R3t4e++23Xxx66KHxpje9Kd7xjnfEYYcdNuD75PP5WLRoUaxdu/bP94r443js0EMPjbe97W1x9NFHV+3pY1/72tfitttu6/b1W2+9Nb72ta+94GstLS0xY8aMWL16dTQ3N8fBBx8cr3vd6+L444+P17zmNQPqKRaLsXTp0pg7d27U1tZGNpuNQw45JN72trfF8ccfH/vtt9+APr+SLV26NObPnx/btm2LiIjXvOY18da3vjWOP/74GDmytM6l6urqivnz58fmzZujoaEhGhoaolgsxoEHHhgHHXRQvOENb4i3ve1tA/75RMQ+qQMAgD9yIhkAAAAAANWoUFsX8fbUFZS6I488Mo488sghv8+oUaPiuOOOi+OOO27I71UtDjzwwDjxxBPj/2fvvqOjqtq3Ad9T0nsnAdIooYfeIQEEAamCiIgUQdAXRfwhihVQwQaWF2miGAQEUXqvCSX0DqEECDUhpPc+M98ffPASZubMmZKclPtay7XM2fvs/UzKJGTuPLt3794WX1smk6FJkyZo0qSJxdeu6ho3bozGjRtLXYYoNjY26NChAzp06CB1KVVexYoQEhERVWPxmblSl0BEREREREREREREVO5UySlSl0BERERgkIyIiKjCeJidL3UJRERERERERERERETlTpWcKnUJREREBAbJiIiIKowkBsmIiIiIiIiIiIiIqBpSsyMZERFRhcAgGRERUQWRklMgdQlEREREREREREREROWOHcmIiIgqBgbJiIiIKgCVWoO0PAbJiIiIiIiIiIiIiKj6UacwSEZERFQRMEhGRERUAaTmFkCtkboKIiIiIiIiIiIiIqLyp+LRlkRERBUCg2REREQVQHJOvtQlEBERERERERERERFJQpObB3Uef09OREQkNQbJiIiIKoDkHB5rSURERERERERERETVl5pdyYiIiCTHIBkREVEFkJzNv7QiIiIiIiIiIiIioupLlZIqdQlEJEJERAQ0Go3e/8aMGSN1iURkBgbJiIiIKoDkXHYkIyIiIiIiIiIiIqLqS52SJnUJRERE1R6DZERERBVAcjaDZERERERERERERERUfanSM6QugYiIqNpjkIyIiKgCSGFHMiIiIiIiIiIiIiKqxtQMkhEREUmOQTIiIqIKICk7X+oSiIiIiIiIiIiIiIgkwyAZERGR9BgkIyIiqgCScxgkIyIiIiIiIiIiIqLqi0EyIiIi6TFIRkREJDGVWoP0vEKp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OoJ5EydOxOLFiyWoioio6uvVqxf27Nmjdd3JyQnXrl2r0EcDKw1PISIiorKQX6SSugQiIiIiIiIiIqJqo/hCDIovxJTdBmo1iq/EovhKbNntQVRdFBUBDJKZLTQ0FBMmTNAZGFu2bBmmT5+OwMDA8i+MiKgKi46O1hkiA4BPP/20QofIAAbJiIiIJFOkYmtuIiIiIiIiIiIiIqJnaQrZwc9SFi1ahEWLFkldBhFRtdGpUydU5sMh5VIXQEREVF0VM0hGRERERERERERERKRFU1gkdQlERETVEoNkREREEilRM0hGRERERERERERERPQsdiQjIiKSBoNkREREEmFHMiIiIiIiIiIiIiIiHUpUUldARERULTFIRkREJBEGyYiIiIiIiIiIiIiItGl4ogcREZEkGCQjIiKSSAmDZERERERERERERERE2tTsSEZERCQFBsmIiIgkUsy/qCIiIiIiIiIiIiIi0qbWSF0BERFRtcQgGRERkUTYkYyIiIiIiIiIiIiISBuPtiQiIpIGg2REREQSKWaQjIiIiIiIiIiIiIhIG39/TkREJAkGyYiIiCTCIBkRERERERERERERkQ4a/v6ciIhICgySERERSaRErZG6BCIiIiIiIiIiIiKiiodHWxIREUmCQTIiIiKJsCMZEREREREREREREZE2DX9/TkREJAkGyYiIiCTCIBkRERERERERERERkQ482pKIiEgSDJIRERFJQK3RQKXh0ZZERERERERERERERFr4h9hERESSYJCMiIhIAiX8RzARERERERERERERkW5q/g6diIhICgySERERSYDHWhIRERERERERERER6aZR80QPIiIiKTBIRkREJIFi/jUVEREREREREREREZFu/B06ERGRJBgkIyIikkCJin9NRURERERERERERESkk1oldQVERETVEoNkREREEtCAQTIiIiIiIhJHZm0ldQlEREREROWLR1sSERFJgkEyIiIiIiIiIiKiCkzhVwNQ8Nd4RERERFR9aHi0JRERkST4GygiIiIJyCCTugQiIiIiIqokZFZWUNT0k7oMIiIiIqJyI5PzZWwiIiIp8DswERGRBGTMkRERERERkRGUgbWlLoGIiIiIqPywIy8REZEk+B2YiIhIAsyRERERERGRMZSBAVKXQERERERUftiRjIiISBL8DkxERCQFtiQjIiIiIiIj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iIiIiIgk93r7ELzbranUZVRamsJCJPYYBFjoaHAiIiIiIil4/RMBZU1fqcsgIiKqthgkI6pgTA2SEVHlFB2XiP/8fVjqMoiIiIiIJBdW1xf/famT1GVUaklDR0OVkCh1GUREREREJvPZuxFyezupyyAiIqq2zGtTRERERGZx4dGWREREREQAgFup2VKXUOkpAwOkLoGIiIiIyHTW1gyRERERSYxBMiIiIgm52fGoUCIiIiIiAIjPyEVhiUrqMio1ZZC/1CUQEREREZlM7uYidQlERETVHoNkREREEnJlRzIiIiIiIgCASqPBbXYlM4sykEEyIiIiIqq8FG6uUpdARERU7TFIRkREJCEHGytYKfjtmIiIiIgIAOJSs6QuoVJjkIyIiIiIKjO5KzuSERERSY2vXBMREUmMXcmIiIiIiB6JS2FHMnMwSEZERERElZnc1VXqEoiIiKo9BsmIiIgk5mpnI3UJREREREQVQlwKO5KZQ+5gD7m3l9RlEBERERGZRO7GjmRERERSY5CMiIhIYm72DJIREREREQEMklmCMohdyYiIiIiocpK7uUpdAhERUbXHIBkREZHE3B0YJCMiIiIiAoC76TkoVqmlLqNSs+LxlkRERERUScld2ZGMiIhIakqpCyCi0gIDA6HRaKQug4jKkTs7khERERERAQBK1BrcTc9BHU9nqUuptJRBAVKXQERERERkEgbJiIiIpMeOZERERBLj0ZZERERERP/D4y3NowyoLXUJREREREQm4dGWRERE0mOQjIiISGLsSEZERERE9D8MkpmHHcmIiIiIqLJSeHpIXQIREVG1xyAZERGRxNwdGCQjIiIiInosLjVb6hIqNbmzE+TublKXQURERERkHLkccg93qasgIiKq9hgkIyIikpi7va3UJRARERERVRjsSGY+ZZC/1CUQERERERlF7u4KmVIhdRlERETVHoNkREREEmNHMiIiIiKi/7mTlg2VWiN1GZWaMpDHWxIRERFR5aLw8pS6BCIiIgKDZERERJLzsGeQjIiIiIjoscISNe5n5EhdRqWmDKwtdQlEREREREaRe3lIXQIREREBUEpdgCFvvfUWFi9erHXdysoKsbGxCAwMNGndrKwsnDhxAg8ePEBqaipyc3Nhb28PPz8/NGrUCE2aNIFMJjOzemE3btzApUuXcPfuXeTk5EAul8PFxQVBQUFo2bIlvL29y2RfjUaDu3fvIiYmBg8ePEBOTg5ycnJgZWUFJycnuLi4oG7dumjYsCGcnJzKpIbyEBERgbFjx+odDwsLQ1RUVPkVRFRJ3L59G/Xr10dxcbHW2FtvvYWFCxdKUFXV5mBjBTsrBfKLVVKXQkRERERUIcSlZCPAvfL+TkJq7EhGRERERJWNwstL6hKIiIgIFTxIdv78eSxdulTn2NixY40OkeXl5WHp0qVYuXIlzp49C5VK/wv2Hh4eGDJkCN555x00adLEqH2ExMfHY/78+Vi9ejXu3r0rOLdFixYYPXo03njjDdjb25u1r0ajwZYtW7B27Vps3boVmZmZou4LDQ3FkCFDMGrUKAQE8JeQRNVBYGAgxowZo/P599dff8Wbb76JZs2aSVBZ1ebtZIc7aey6QEREREQEALdSs9ANflKXUWkpg/ylLoGIiIiIyCgKdiQjIiKqEGQajUYjdRH6hIWF4eDBg1rXrayscOPGDfj7i/+l2JIlS/DJJ58gNTXVqBrkcjlef/11zJs3D87Ozkbd+7SSkhLMmTMHX3/9NQoKCoy6t0aNGvjll18wZMgQk/aOjo7G5MmTcebMGZPuBwAbGxtMmjQJX375pdmhtvJS2TuSRURE4Pbt23rHx4wZY3JHPipbUVFRgp9b4eHhCA8PL7d6THH37l3UrVtXZ1eyiv61U1m98dcBnLiTLHUZREREREQVQr8m/pjdv63UZVRqiX1egiYzS+oyiIiIiIhEcflsGuz7PCd1GURERNVehe1Itm3bNp0hMgB4+eWXRYfI8vLy8MYbb+Cvv/4yqQ61Wo3ffvsNhw4dwo4dOxAUFGT0GpmZmRg8eDAiIyNNqiExMRFDhw7F+++/j++++86oIzf/+usvjBkzRmcYxBiFhYX44YcfEB0dja1bt8LT09Os9ciwiIgIHDhwQO94eHg4g2QVVFRUFGbNmiU4p6IHyfz9/TFs2DCsWrVKa+zAgQPYsWMH+vTpI0FlVZe3k53UJRARERERVRhxKdlSl1DpKQP9UXz+ktRlEBERERGJovDma49EREQVgVzqAnTRaDT4/PPP9Y6/9957otZRq9UYMWKEySGyp127dg3dunVDQkKCUfcVFBTghRdeMDlE9rS5c+figw8+ED3/xIkTGDVqlNkhsqcdP34cI0eOtNh6RFRxTZ06Ve/YZ599Vo6VVA8MkhERERER/c+tVHbSMpcysLbUJRARERERiabw5NGWREREFUGFDJJt3rxZ7zGMnTp1QsuWLUWt8+mnn2LTpk0Wq+vOnTt47bXXjLrnww8/RHR0tMVqmDt3LjZs2CBq7oQJE6BSqSy292O7du3CP//8Y/F1iahiadGiBTp37qxz7PTp09iyZUs5V1S1+TBIRkRERET0RH6xCvEZuVKXUalZBQZIXQIRERERkWhyL3YkIyIiqggqZJBs3rx5esdef/11UWvcvHkTc+fOFZxjbW2NcePGYfny5fj333/xzTffoFGjRoL37N+/H8uWLRNVw6lTp/DLL78IzvHw8MAHH3yAv/76C3/88Qdef/112NjYCN4zefJk5OTkCM45d+4czp8/b7DG1q1bY86cOVizZg2WLFmCSZMmwc7OcJjhzz//NDiHiCq/sWPH6h374YcfyrGSqo8dyYiIiIiISruVyuMtzaEM8pe6BCIiIiIiUWQO9pDb83fkREREFYFS6gKedfr0aRw6dEjnmIODA4YNGyZqnVmzZgke6ejs7Ix9+/ahdevWpa5PnToVr776KtauXav33vfffx/Dhg2Do6OjYA3/+c9/oFar9Y43bNgQ+/btg6+v75NrY8aMwfjx49G7d29kZek+xuH+/fv48ssv8e233+pde9++fYK1AcDXX3+NDz/8EDKZrNT1Dz74AD169MCNGzf03muJozqJqOIbNmwYJk+ejNxc7U4AUVFROHfuHJo3b17+hVVBDJIREREREZUWl5KFznVqSF1GpaUMZJCMiIiIiCoHhbeX1CUQERHR/1fhOpItWbJE71jfvn0NhrcAoLi42ODxjzNmzNAKkQGAUqnE0qVL4empv31qeno6/v77b8H1T548iZMnT+odl8vlWLFiRakQ2WMdOnTAV199Jbj+b7/9hqKiIr3j8fHxgvc3b94c06dP1wqRAYC/v7/Bbm65ubnIzMwUnENElZ+joyP69Omjd1zoOZuMw6MtiYiIiIhKi0vR/Qd2JI7C2wsyB3upyyAiIiIiMkju5SF1CURERPT/VaiOZAUFBYKdwAYPHixqncOHDwse/SiXyzF69Gi9487OznjppZewaNEivXN+//13jBs3Tu94RESEYI1hYWFo1aqV3vE33ngDH3/8sd7HkZaWhs2bN2Po0KE6xw0dfdmtWzfB8fDwcMFxAMjP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vTo7O+Mf/uEfjjl+m+2/p3K5HGeccUacccYZT/rrhw8fjvHx8fjCF74Q73znO486Xtq7d2984QtfiOuuu+6nf21gYCBaW1uP+u/Avn374utf//rTvmdRjY2NxdjY2NP++g9+8IP48pe/HB/4wAeOeT3r5z73uWkPyQ4cOHDMceaRrtllZgzJAADg6cYnHjYkyyEbcbUlAAC1x5AMAGpPzVxteaxTvPbv3x///u//Pm8tjz76aLzhDW845sfccsstR32sXC4/adxyJH/0R390zMd/MpI5luuvv/6If72//9gvrP7rv/5r7N+//5gfE3H8E9Hm4iq75ubm414N+rnPfe64X+ehhx6Kv/qrv5pRw7e//e1jPn7aaacdc0QW8ePhVl7HG04ePHhw2l/reH9PF1xwwXFPUJuNv6fpKJVKMTY2Fi9/+cuP+2v91OtnK5VKbN++/Zif84lPfCJX38GDB485Mv1Jx/G+xlxatGhRXH311fFXf/VXx/z39HjX9z7R8X7fONpVv5y4vvaWaGuqmZ03AADUhPGJh1MnFFo2NBgxjz+gCQAA02FIBgC1p2aGZJs3bz7m48cbNR3JdMZST7Vv37646aab4hvf+MZRP2bJkiVx4403HvPrvPCFLzzm43/7t38b//iP/3jUx++5555jnizW19cXl19++REfO96VlHv37o1Pf/rTx/yY/fv3x6c+9aljfsx0r8g8Ucc7qe1LX/pSfOlLXzrmx7z3ve+Nxx9/fEbf/3jXAh7vZK4f/ehH8YEPfGBG3/uJOjs7j/n4vffeO+2vlffv6d/+7d/iN37jN6b9/Z7qH/7hH2b067Fq1apjPn6k7uOdsPXxj388vvzlL59wy/79++MTn/hErF69+rhjtNn8tYuI+L//9//GxMTECX1ORERra2sMDQ0d9fETOWXueL8HH+/3cE7M0m6nkgEAwBPtmjQky6NUrUZl2dy8jgMAADOVLfUcFQBqTc0MyU455ZRYuHDhUR//p3/6pxP+mr/1W78VZ599dnzyk5885jWTP/HVr341tm/fHp/97GeP+XF33nlntLS0HPNjzjzzzGOe0HP48OG4+eab43vf+97THvvbv/3beMc73nHMr/+iF70ompubj/jY2rVrY2Bg4Jif/5rXvOaoY5p9+/bFrbfeetxT4M4///xjPj5TN99883E/5nnPe95Rhy2f+tSn4v3vf/+Mv39vb+8xH7/vvvuOOrLbvXt3XHDBBfGDH/xgxt//J453stzdd98d991337S+1vH+nr785S/HX/7lXx7xsX/+53+OCy+88LhXph7Lm9/85hgcHIxXvepV8fnPf37aX+t4g7wjDbauv/766OjoOOrnHDhwIC699NL49Kc/HYcPHz5uwz/+4z/G7bffHsuWLYtbb701vvnNbx73c473a/dHf/RH8Td/8zfH/To/8Yd/+IexdOnSuOaaa+J3f/d340c/+tG0Pu8LX/jCMa94Pd7g7YmONXxdtGhRrFmzZtpfi+NzvSUAADzZ7omp1AmFVx1ZnjoBAACeJFu+LHUCAPAUNXN3VqlUiosuuih++7d/+4iPH+8EqiM5fPhwfOUrX4mvfOUrUalUYsuWLXH66afHmjVroq+vL5qamuKBBx6If/u3f4svfvGLxxxK/MQznvGMuPXWW6f1/X/lV34ltm7dGocOHTri4//v//2/WL9+fbzkJS+JDRs2xL59++JLX/pSfPrTn459+/Yd9esuXbo03vrWtx718XK5HJdffnl88pOfPOrHPPTQQ7F9+/a4/PLL48ILL4wlS5bE448/Ht/4xjfi05/+9HFPTCqXy3HZZZcd82Nmat26dXHeeecd89f8P/7jP+KMM86I5z3vebFjx47o7u6O733ve/FHf/RHM77S8ifWrl173I+55ZZb4r//9/8eF110USxZsiQeeuih+NKXvhSf+cxnZnwS2lOtX7/+mI//y7/8S4yOjsbw8HD09vZGufxfu9BVq1Y96dS54/09HThwIC6++OK47rrr4pxzzolFixbFD3/4w/jCF74Qn/vc52blKsb7778/Pvaxj8XHPvaxaG5ujk2bNsXq1atj1apVMTAwEF1dXdHc3BxTU1PxzW9+M/70T/80vva1rx3za46MjDztry1cuDBe+9rXxl133XXUz3v44YfjhhtuiLe//e1x+eWXx7p166K3tzf27dsXk5OT8f3vfz+++tWvxj/+4z9Oa4T6VMf7tdu7d2+cd955sXDhwhgcHHzaVZh//dd//bQx3L59++Kzn/1sfPazn41SqRRr166NtWvXxurVq2NwcDA6Ozujvb09Hnvssfj2t78dX/ziF+Mv/uIvjvr7T8SR//kdzbGuNr344oujVCpN+2txfEO9hmQAAPBE//HwI/HIvgOugc8hG10e8aUTP6EbAADmRKUSlaVLUlcAAE9ROjydI3nmyWc/+9m45pprjvhYlmUxOTkZXV1d0/56v/7rvx4veclLZisvhoaG4qtf/eoxT057qle96lXxsY99bNYaIn78z+k5z3nOMT9m165dsXbt2lkbNT3VK17xirjnnnvm5GtH/Ph0uK1bt87KgOlozjvvvKOOYzZu3HjMk5yOp1KpHLf9eP/q/fM//3Ns2rRpRt9/w4YNT+o/cOBALFmyZEbXI/7E8f6ehoeHjzpA3Llz51FPPJupUqkU9957byxf/vSfqN6zZ09s27btmFfU5vG2t70t3v72tx/18QMHDsSiRYtmNEKLiHjggQeip6fnp///ne98Z9xxxx0z+lrH8lu/9VvHvab3Jz0DAwNHHaX9wR/8QTz3uc+d7byG9pmvfTPe8z+/njoDAABqyqdf+IxYt6QvdUZhPfo/vxgPvv29qTMAACAiIipDS2Ph730idQYA8BQ1c7VlRMRll10W3d3dR3zswIED8ed//ufzXPRfBgcH4y//8i9PaEQW8eOr+bZs2TJrHbfffvtxR2QREWNjY3HnnXfO2vd9otHR0XjnO985J1/7J84444x4wxvekOtr5Pnn/pa3vCXX9z7WyGi6Nm7ceMzrUU9ElmW5/nmWy+Xc/0xm2w033HDEEVlEREdHR/z5n/95DA4OznPVj2VZFrfcckuS7z1dK1eunPb468/+7M+OOiLr6emZs9MJG9mynqNfzwoAAI1qfOLh1AmFlo0MpU4AAICfyoY9PwWAWlRTQ7KWlpa49tprj/r4H//xH89jzX/ZvHlz/MM//EOcfPLJJ/y5ra2t8fnPfz62b9+eu+M1r3lN3H333dP++Ne//vXHvAJzJkZGRuKLX/xi9PXN/U8A33nnnXHTTTfN6HNvv/32ePnLXz7j7/2c5zwnbr755hl97utf//q44YYbZvy9n+hXf/VXo6mpaVa+1s/8zM/Ezp07Z/S5H/3oR2PHjh2z0jEbNmzYEB/96EeP+TFDQ0Pxt3/7t7M65DwRd9xxR4yOjib53sfT19cXv/u7vxutra3T+vjPfe5zR33smmuuiZaWllkq4yeW9bjaEgAAnmp8Yip1QqFlw0MR5Zp6KRAAgAaWLV+WOgEAOIKae/XoWOOfP/uzP4u9e/fOW0tPT0+8733vi6985SuxbNnMn8z09PTE//pf/yvuuOOOaG5uPuHPX7RoUfze7/1e3H333VEqlU7oc9/xjnfE5z//+RmN4J6oXC7HbbfdFl//+tdjeHg419c6ke/5yU9+Ml73utdFeZovdFYqlXj3u98dH/rQh3J//49//OPx4he/eNofXy6X484774z3ve99ub/3T5xxxhnxP/7H/4ilS5fm/lrVajX+8A//8IROj2pubo7f+I3fiNtuuy3X9x4YGMj1+T9RLpfjpptuir/7u7876umFT7RixYr4u7/7u3jHO97xpKsiZ2psbCze+ta3xq233nrcj+3u7o4vfvGLcdZZZ+X+vr29vdP+d+B4tm3bFn//938/7WtTp6am4vOf//xRH88z2OToBrvbonxiv90DAEDdcyJZPqXm5qgsWZQ6AwAAIsKJZABQq2puSLZp06ajnt61Z8+e+IM/+INpf63rrrsufud3fide8IIXHPUKvKeqVCqxbdu2+MhHPhLf+ta34vWvf31kWTbt73k01Wo17rzzzvj3f//3+Pmf//lpDdM2bNgQd999d+zateuYJ7Udz0UXXRT/8i//Ep/73Ofi2muvnfagplwux9q1a+Md73hH/Pu//3t87GMfm9Z4ZzaVy+X44Ac/GH//938fF1988VF/LSqVSlx55ZXxta99Ld74xjfOyveuVqvx8Y9/PP7kT/7kmKdalcvluOiii+IrX/lK3HHHHbPyvZ9ox44dMT4+Hr/zO78TN910U6xbty76+/tndFJZZ2dn/Mmf/El86lOfilNOOeWoH1etVuOaa66Jr3/96/GiF70oT35ERHzmM5+J8fHx+LVf+7W48cYbY82aNSc0jBobG4vbb789/s//+T/xqU99Kjo6pn/tX5Zl8da3vjW+853vxD333BM7duyItra2aX1uR0dH7Ny5M97znvfEP/3TP8U3v/nNeMc73hFDQ9P7j5vh4eH48pe/HF/84hfjla98ZWzZsiUWLlx4wid4vfKVr4wf/ehH8fu///tx2223xebNm09olNrf3x/XX399/MVf/EV85StfOaFh6e/93u/FI488csTHtm/fPu1BGiemKavEgo7pnRgHAACNYnzSkCyvbGR6r48BAMBccyIZANSm0uHDhw+njniqP/3TP41nP/vZR3zs3HPPjb/5m7+Z0df94Q9/GP/6r/8a3/rWt2JycjL27t0bBw4ciLa2thgY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AAAAAAAAADknJAMAAAAAAAAAAMg5IRkAAAAAAAAAAEDOCckAAAAAAAAAAAByTkgGAAAAAAAAAACQc0IyAAAAAAAAAACAnBOSAQAAAAAAAAAA5JyQDAAAAAAAAAAAIOeEZAAAAAAAAAAAADknJAMAAAAAAAAAAMg5IRkAAAAAAAAAAEDOCckAAAAAAAAAAAByTkgGAAAAAAAAAACQc0IyAAAAAAAAAACAnBOSAQAAAAAAAAAA5JyQDAAAAAAAAAAAIOeEZAAAAAAAAAAAADknJAMAAAAAAAAAAMg5IRkAAAAAAAAAAEDOCckAAAAAAAAAAAByTkgGAAAAAAAAAACQc0IyAAAAAAAAAACAnBOSAQAAAAAAAAAA5JyQDAAAAAAAAAAAIOeEZAAAAAAAAAAAADknJAMAAAAAAAAAAMg5IRkAAAAAAAAAAEDOCckAAAAAAAAAAAByTkgGAAAAAAAAAACQc0IyAAAAAAAAAACAnBOSAQAAAAAAAAAA5JyQDAAAAAAAAAAAIOeEZAAAAAAAAAAAADknJAMAAAAAAAAAAMg5IRkAAAAAAAAAAEDOCckAAAAAAAAAAAByTkgGAAAAAAAAAACQc0IyAAAAAAAAAACAnBOSAQAAAAAAAAAA5JyQDAAAAAAAAAAAIOeEZAAAAAAAAAAAADknJAMAAAAAAAAAAMg5IRkAAAAAAAAAAEDOCckAAAAAAAAAAAByTkgGAAAAAAAAAACQc0IyAAAAAAAAAACAnBOSAQAAAAAAAAAA5JyQDAAAAAAAAAAAIOf+f3SdsTI58W7uAAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Compatibility Summary:\n", - "compatible\n", - "True 908\n", - "False 819\n", - "Name: count, dtype: int64\n" - ] - } - ], - "source": [ - "compatibility_counts = df_read[\"compatible\"].value_counts()\n", - "\n", - "colors = [\"#2E86AB\", \"#E63946\"] # Blue and Red-Orange\n", - "\n", - "plt.figure(figsize=(8, 6), dpi=300)\n", - "\n", - "# Create labels\n", - "labels = [\n", - " f\"{'Compatible' if x else 'Incompatible'}\\n({compatibility_counts[x]} datasets)\"\n", - " for x in compatibility_counts.index\n", - "]\n", - "\n", - "# Create the pie chart\n", - "wedges, texts, autotexts = plt.pie(\n", - " compatibility_counts.values,\n", - " labels=labels,\n", - " autopct=\"%1.1f%%\",\n", - " startangle=90,\n", - " colors=colors,\n", - " explode=(0.05, 0.05),\n", - " textprops={\"fontsize\": 11, \"weight\": \"bold\"},\n", - " wedgeprops={\"edgecolor\": \"white\", \"linewidth\": 2},\n", - ")\n", - "\n", - "for autotext in autotexts:\n", - " autotext.set_color(\"white\")\n", - " autotext.set_fontsize(12)\n", - " autotext.set_weight(\"bold\")\n", - "\n", - "plt.title(\"Titiler-CMR Compatibility Status\", fontsize=16, fontweight=\"bold\", pad=20)\n", - "\n", - "plt.axis(\"equal\")\n", - "\n", - "plt.tight_layout()\n", - "plt.show()\n", - "\n", - "print(\"\\nCompatibility Summary:\")\n", - "print(compatibility_counts)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "fcefc327", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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MpmUK1cu5c6dWyVLlpS/v79y587t6FSfKLNmzdLOnTut6lumTBktXrxYNWvWtKp/sWLF9MEHH2jYsGH69ddfNWrUKJ08edKqWLayb98+/fPPP6pfv76hfjNmzFBiYqKdsnIsd3d3TZs2TadOndLGjRsN9T116pSdsgKAjC0uLk5hYWEKCwvT1atXFRMTo7i4OMXFxSkxMVHu7u7Knj278uTJowIFCqhkyZLy8/OTszNrxsBxYmNjdeLECV28ePH+fnv37l25u7vLw8NDxYoVU6lSpVSuXDn2VQA2ky1bNuXPn1/58+eXJNWtW1e9evWS9L/PE99++63mz5+vmJgYq+LfunVL7733nhYvXmyrlO0uPDxcZ8+e1aVLl3Tz5k3dvn1bCQkJ9w/kzpUrl7y9veXr6ytfX18VLFjQJkX5AAAAAICsjUJzAAAAAECGcvnyZf35559atWqVdu3apRs3bqTax8nJSeXLl1fz5s31wgsvGC4GTi9hYWFaunSptm7dqsOHD+vatWuKjo5WUlKScubMqSpVqlhd3G1L0dHRGjlypFV9n3rqKa1evdomhf8uLi566aWX1KlTJ02dOtXqnGxl6tSphvatxMREff/993bMyPGcnJz00UcfGS40v3Llip0yyhouXryo5cuXa/PmzTpy5IiuXLmimJgYeXl5qUCBAipcuLAaN26sli1bqlatWuleXHL48GHt2LFD+/fv16lTpxQWFqbr168rLi5Od+/eVfbs2e8XwZQsWVJlypSRv7+/GjRooKpVq8rFxcUueZlMJgUHB2vHjh3at2+fzpw5o0uXLikiIkJxcXFKSkpSjhw55OHhoaJFi6p48eKqWrWqateurcDAQOXKlcsueaXVlStX9Ntvv2njxo06dOiQrl+/rrt378rb21vFixdXrVq11K5dO7Vo0ULZshn7OjgsLEy//PKL/v77bx08eFDh4eFKSEhQvnz5VKBAAZUtW1YtWrRQixYtVKRIETvdQ+uEhoZq+fLl2rJli44ePaqrV6/qzp07cnNzU968eVWhQgU9/fTTat++vapWrWrz8RMTE7Vv3z7t27dPR44cuX8JDw83HCt79uyqXr26GjZsqPbt26tevXoUjaWjxMREbdy4UWvWrNH+/ft1+vRpRUZGKjExUZ6envLz81PVqlXVvHlztWvXLsO+VhiRnJysoKAgrVixQhs3btTRo0eVlJSUaj8vLy/Vr19fHTt2VKdOnZQnT550yBZpdfv2ba1cuVLr1q3TwYMHdenSJUVFRSkhIUGurq4qVqyY1q5dq7Jly9oth5s3b2rZsmXatGmTQkJCdOXKFUVFRenevXtyd3eXn5+f9u7dKw8PD6viP6lzAEkKCQnR77//rt27d+vo0aO6deuW7ty5I5PJJB8fH/Xs2VPffvuto9O0ubJly2rq1KkaN26cXn/9dS1dutSqOEuWLNHgwYPVoEEDG2doGxEREVq6dKn++usv/fPPP4Y/R7m5ucnf31/VqlVT1apVVb16ddWtW1c5cuSwU8YZn8lk0s6dO7Vs2TLt3btXJ06cUGRkpO7cuSMnJyflzZtX77//vt577z1Hp2qVyMhIrVq1SuvXr9ehQ4d04cIFRUdHy8nJSd7e3ipbtqxq166tVq1aqUmTJhwgBkn/+9wXFBSkvXv36ujRo7p48aKuXbt2/zO8u7u7cuTIoQIFCsjX11cVKlRQzZo1FRgYmKHPMhoeHn5/Pnvo0CFdunRJt2/floeHh/Lnz69ChQqpQYMGatmyperXr2/48zIAAECWYgIAAAAAGxs1apRJkqGLvfj5+VmcQ2Bg4GPjBAYGGr5Pab2klM+5c+cMxRo1apTFj9nmzZsNxZ47d67FsVOyc+dOU8eOHU3ZsmVL82NXvXp106+//mqTvGzxWJ86dcrUtWtXk7Ozc4p9vb29bZJzWn355ZdWPe7lypUzRUZG2i2v0NBQ099//21RW6P/N0subm5upqtXr1qc708//WTzHPz8/Aw/bkZeByWZevbsaSh+QkKCKUeOHIbGaNq0qeH7YW9z5841/P84d+6cxfFt8Vpy4MABU/v27VN9LfnvpXLlyqa1a9fa7oF6jAMHDpgGDRpkKlq0aJr2cQ8PD1P79u1NCxYssNnrSUhIiOmNN94wFSxY0Oq83N3dTa1btzYtW7bMdO/ePZvkZXS+tHnzZrP+YWFhpt69e5tcXV0t6l+0aFHTrFmzTElJSanmdurUKdPLL79s8b7m7Oxs6tWrlyksLCzNj0taX6/27t1ratOmjcnJycniOPXq1TNt3LgxzbmbTCbT119/bWrUqJHh10Ujl5IlS5omTZpkiouLM5yfvXJK6ZLSPNToa++Dz4OUGH2OPfiafvfuXdPnn39uKlKkiMUxvL29TcOGDTNFRUUZ/t88yMjnD2vmB48SExNj+uKLL0wlSpRI8/89Z86cpoEDB5ouX75sk9zszd7zJUfn/KjPlpGRkaYPPvjA5OHhkWr//fv3PzKHtD5mV65cMQ0YMMDk5uaWav+IiAjDj1FGnQPY4rVv48aNpnr16qXat3379jbJ2Sij36Gk9P2HJaZOnWrRfvSoS8uWLQ2NZavvmVJy8eJF02uvvWZyd3e3et993MXNzc3UsGFD04gRI0wnTpx45Pj2+DxtySWl75fS+r5uMplMv/32m6lSpUqp9n3rrbcemUPPnj0N5WBEWt/3/309zZkzp8VxSpQoYZo5c6ZFnw9SYs/5nK3HMPqdp60uKd1ne+5XKYmIiDB9++23pho1aqTpvlWuXNn0+eefm8LDw22Wm5HxHzW/OHPmjKlHjx6G3hf8/PxMixYtstl9AAAAeNJwiCoAAAAAwKGuXr2qF154QU899ZR+//133bt3L80x9+/fry5duqhJkyY6e/asDbK03vfff6+qVatq0aJFSk5OdmgulkhKStLkyZMN98uWLZt+/PFHeXt72yGr//Hz81PDhg3tErtkyZKpruSVkJBgaIXyKVOmpNrGnitDphdXV1eVKlXKcB9YLj4+Xm+99ZZq1KihP//809BryeHDh9W8eXN1795diYmJNs9tx44datq0qapVq6YpU6YoLCwsTfHu3LmjP//8Uz169NAzzzyTpliHDx9WmzZtFBAQoGnTpunatWtWx4qPj9eqVavUoUMH+fv767fffktTbmn1888/y9/fX3PnzrX4/xoWFqbXXntNLVq0SHFV7e+++04BAQH6+eefLd7XkpOTNW/ePJUtW9bqFUXTKjExUe+++65q166tlStXymQyWdx3x44datKkiXr27KmYmJg05TF//nz9/fffiouLS1OclJw7d05vvfWWKlWqZPiMErDM7t27VblyZb3//vu6fPmyxf2ioqL0xRdfqHz58lq/fr0dM7S9n376SWXKlNGwYcMUGhqa5nixsbGaOnWqKlSoYNXcEva1fft2Va1aVZ999pnu3LnjkBz+/PNPVa5cWdOnT1dCQoJNYz/Jc4D4+HgNHDhQTZo00Y4dOxyaS0byxhtvaNGiRVadGeevv/7SiRMn7JCVdX755Rf5+/tr1qxZio+Pt3n8hIQEbd26VZ988omWL19u8/gZUWRkpLp0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f/+9mjRpkqZ88X/8/PwUGBioIkWKKDExUZcuXdL69et169Ytw7GWLFmiIUOG6KmnnrJDppYLCwvT6NGjDffLkyeP+vXrp1atWql8+fLy8fHRzZs3FRwcrAULFujXX381FO/NN99UixYt5O7ubjgXGJcRPqPYI4esMgfICP+/zKZx48aGV9E9c+aMnbJJnZEDxfLkyaM+ffqoadOmKleunAoWLCh3d3fFxMQoKipKkZGROnv2rA4dOqTDhw9r7969On36tB2zz5iy4vOmZs2aql69ugoVKqSoqCidPn1amzZtsurgzBEjRqh79+7y8PCwQ6ZIDyaTSX379rXqueDi4qKnn35a/v7+yp8/v27evKkTJ05oy5YthhfviI+PV9++fRUcHCwnJyfDuVjD2dlZDRs2VKVKlZQnTx5dvnxZf/31l1ULg8yePVtt27a1Q5YAAACZC4XmAAAAAGCBvn37qmnTpg9tHzlypMUxqlevro4dO1rc/klb8ff8+fOaNm2aoT65c+fWjz/+qFatWj10W6VKlVSpUiUNGDBAPXv21NKlSy2OO3bsWPXu3VvZs2c3lM+TzppTvju6WMoeBg4cqKlTp6ZYkHjnzh3NmzdPb775ptn2yZMnpxrf19dX7du3T3OejnT37l399NNPGjp0qG7fvm1xv8DAQHXp0sWOmT25+vfvr08++UR58+Y123737l19+OGH+uabbwzF27x5s8VtT548qUmTJhmK/y9/f399/PHHat++vXLkyJHiGEuXLtX06dN18eJFQ2O89957hlcRzZ07tyZOnKju3bvL1dX1odt37Nihfv36GS6uHzNmjHr27CkfHx9D/Yxq1KiR5s2bp5IlS5ptj46OVrdu3bRy5UqrY+fKlUuTJ09Wz5495exsfkLMH374Qa+//rqhgu1NmzalS6G5k5OT+vXr98jniSSdPXtWgwYN0po1awzFXbt2rfbv36/q1asb6lemTBm98soratWqlWrWrJlqUcW/RedFixZVgwYN9Prrr+vGjRt68803tWjRIovHXbVqlRISEuTm5vbI28eNG/fQtnPnzmnOnDkWj9GxY0dDj0ejRo0sbptRlChRQtOnT1fz5s0f+t8lJiZq4cKFeueddxQVFWUo7meffebwlbzHjBmj2NhYQ326dOmiH3744aED7AoVKqQ2bdqoTZs2WrdunTp37mzx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GwAAAAAAAHLJ1ccNaOwtsJX5+te/HhdccEHce++95W1z586N/fffP84+++w4+eSTo1+/ftGmTZv49NNP48UXX4x77rknpkyZktTZbrvtYuTIkZHJZKpdb8cdd4z/+I//iNdee628bdiwYfHAAw/EQQcdFJ06dYqCgjRmeOWVV0aHDh3Kr7/3ve/FTTfdFMuXL0/GvPDCC3HhhRfGAQccEIWFhbF48eJ4//334/HHH4+RI0dGcXFxREQMGjQoZsyYEXPnzq39P1gjmTVrVvzXf/3XZtXo1q1bjU+cbyry8/Nj5MiRsc8++ySh8VtvvTX+9re/xYUXXhhHHHFE7LjjjrFq1aqYNm1aPProozFixIjYuHFjUusHP/hBDB48eIvsu6SkJMaMGRNjxoyJDh06xNe//vU46KCDYt99943u3btHhw4dIpPJxJIlS2Lq1Knx7LPPxogRI2LVqlVJneHDh2+R/dbFfffdVyFI/S/vvfdehbZbbrmlynD2oEGDYtCgQVWu1bZt2/j5z38eZ599dtJ+//33l78OBg0aFD179ozWrVvHkiVL4p133olRo0bFI488UuEp5L169arxPspkMnHnnXfG0UcfXX5mRJRlPXbbbbc4//zzY/DgwbHbbrtF27ZtY/ny5fH+++/HM888EyNGjIjVq1cn9Tp06BA/+9nPql2TlKA5AADbrIULF8Z9991XZX+HDh1i6NChW3BHAAAAAAAAwLbul7/8ZRQVFcUTTzxR3rZhw4a47777qv3/m//Svn37ePrpp6NXr15ZrXf99dfHoEGDoqSkpLxt6tSpMXXq1ErHX3DBBUnQvLCwMO6555447bTTknHPP/98PP/889Wuveuuu8bIkSPjoIMOymqvTcXHH38ct9xyy2bV2HvvvXMmaB4R0bt37xg9enR84xvfiM8//7y8/f3334/vf//7WdU4+eST49Zbb22oLVZr6dKlMXLkyBg5cmSt5l166aVNOjfw8MMPx8svv5z1+C9+iGVTLVu2rDZoHhFx1llnxYcffljhqfQff/xxDB8+POtQfufOneO5555LzpKqHHnkkfGb3/wmzj///CgtLS1vX7RoUdx0001ZPyG/VatW8fTTT8euu+6a1XjKVP9xJQAA2EqtXr06hg0bVuFPdH3RlVdeGa1atdqCuwIAAAAAAAC2dS1atIg///nPccUVV0SzZs1qNXePPfaIV199Nf7zP/8z6zkDBw6Mhx56KNq2bVvbrZY79dRT41e/+lWFp59XZ//9949XXnklunbtWud12bIGDhwYL7/8cvTv379W85o3bx7Dhw+PRx55JJo3b95Au6t83bpq3bp13HrrrXH77bfX4462DjfeeGP88Y9/rPLJ6DUZOHBgvPPOO9GvX7+s53zve9+L5557Lrp161anNffee++YOHFifPWrX63T/G2ZoDkAANucNWvWxI9//OMKfz7ui04++eQaP6kLAAAAAAAA0BAymUzccsstMWXKlDjjjDOqfepvXl5e7L///vG73/0u3n333dhzzz1rvd7pp58ec+bMibvuuitOOOGE6NOnT3To0KFWwfGLL744Xn/99Tj66KMjLy+vynF9+vSJX//61/HGG29E9+7da71XGtc+++wTkyZNivvuuy/222+/av9bd+zYMc4666yYMmVK3HTTTdWObQizZs2KUaNGxXnnnRf9+/fPav0ePXrE5ZdfHtOnT48f//jHW2CXuen000+PDz/8MP7nf/4n+vbtW+P4li1bxnHHHRfPPfdcvPjii9GjR49ar3n00UfH9OnT45577ol99923xv+ezZo1i8MPPzwee+yxmDhxYq0/IEGZvNIvPkceaFTz58+PIUOGVNo3evToOn8aBwCaqokTJ8YFF1xQZX9DfP9bvnx5XHLJJfH+++9XOearX/1q3HrrrZGfn7/Z6z3zzDNx3XXXVdk/ceLEzV4DAAAAAACAipYtWxZDhw5N2p5++ukoLCxsnA3BZiguLo4333wzZs6cGUVFRbFmzZro3LlzdO3aNQ4++ODo0qVLY28xsXDhwnj11Vdj3rx58fnnn0erVq2iR48ese+++0afPn0ae3vUo88++yzGjx8fn332WSxatChatWoVXbp0id69e8cBBxwQmUzTeR7y559/HtOmTYsPP/wwioqKYuXKlZGfnx/bbbdddO/ePfbaa6/YZZddGnubOWnRokXx5ptvxrx582LZsmWxbt262G677aJDhw7Rt2/f2GeffWr9Fxpqsnz58njzzTdj7ty5sWzZsli9enW0a9cuCgsLY7fddov99ttvi/wV+639/Ub2HzcCAIAct3Dhwrj44otj1qxZVY456KCD4pZbbqmXkDkAAAAAAABAfcjPz4+DDz44Dj744MbeSla6dOkSJ554YmNvgy2ga9euVT5ctanZbrvt4sADD4wDDzywsbey1encuXMcc8wxW3TN9u3b+0v1W0DT+agIAAA0oLlz58Y555xTbcj80EMPjdtvvz2aN2++BXcGAAAAAAAAAABNj6A5AABbvWnTpsW5554bn376aZVjjjrqqLjtttuiRYsWW3BnAAAAAAAAAADQNBU09gYAAKAhvf3223HppZfGqlWrqhzz7W9/Oy6//PLIZHwOEwAAAAAAAAAAIgTNAQDYir388ssxfPjwWLduXZVjzjvvvDjvvPO24K4AAAAAAAAAAKDpEzQHAGCrNGbMmLjhhhuiuLi40v5MJhNXXHFFfOtb39rCOwMAAAAAAAAAgKZP0BwAgK3Oww8/HHfccUeUlpZW2t+8efO4/vrrY9CgQVt4ZwAAAAAAAAAAkBsEzQEA2Kr85je/iQceeKDK/jZt2sStt94aBxxwwBbcFQAAAAAAAAAA5BZBcwAAGtSaNWvipZdeqrRv9uzZ1c4dO3ZsFBYWVto3cODAaNWqVdJ29913x4MPPlhtzaFDh0ZRUVH89a9/rXbcFx100EHRqVOnKvsXL14c48ePr7Rv0qRJ1daubh/HHntsdhsEAAAAAAAAAIB6JmgOAECDWrp0afz0pz+t09zbb7+9yr7Ro0dXCJrXFOqOiHj44YdrvY9777232qD57Nmz6/w1VjdP0BwAAAAAAAAAgMaSaewNAAAAAAAAAAAAAADQtAiaAwAAAAAAAAAAAACQEDQHAAAAAAAAAAAAACAhaA4AAAAAAAAAAAAAQKKgsTcAAMDWrVu3bjFx4sQtstZ99923RdbZ1P7777/FvkYAAAAAAAAAANgSPNEcAAAAAAAAAAAAAICEoDkAAAAAAAAAAAAAAAlBcwAAAAAAAAAAAAAAEoLmAAAAAAAAAAAAAAAkBM0BAAAAAAAAAAAAAEgImgMAAAAAAAAAAAAAkBA0BwAAAAAAAAAAAAAgIWgOAAAAAAAAAAAAAEBC0BwAAAAAAAAAAAAAgERBY28AAAAAAAAAAABgS1i2bFljbwEA2Ips7e8tBM0BAAAAAAAAAIBtwplnntnYWwAAyBmZxt4AAAAAAAAAAAAAAABNi6A5AAAAAAAAAAAAAAAJQXMAAAAAAAAAAAAAABIFjb0BAABq7/rrr4/Ro0dXaL/kkkviu9/9biPsiK3ZwoUL4xvf+EasX78+aS8sLIwnn3wy2rVr10g7AwAAAAAAqNp2220XTz/9dGNvAwDYxmy33XaNvYV6I2gOAJBjpk2bFmPGjKnQ3qFDh/jWt75V57olJSUxa9asmD17dhQVFcXq1aujoKAgWrZsGdtvv3107949dtlll2jRosXmbJ9qfPzxx/Hee+/FkiVLYuPGjVFYWBi777579OvXL/Lz8+tUc/LkyfHaa6+VX+fl5cV3v/vdaNWqVdY1unTpEkOHDo3HH388aV+2bFncf//9cdlll9VpbwAAAAAAAA0pk8lEYWFhY28DACBnCZoDAOSYO+64I0pKSiq0n3baabUKD//L5MmT44knnoixY8fG559/Xu3YgoKC2H333ePggw+OQYMGRd++fWu93qaeeeaZuO6666odc9xxx8W111672WvVl2uvvbbSsP8XXXPNNXH88cdnVW/s2LHx29/+Nj744INK+zt16hTf/e5345RTTomCguzfwm/cuDGuvfbamD17dnnbMcccU6fXyZlnnhmjRo2K4uLipP3Pf/5znHTSSdGjR49a1wQAAAAAAAAAoOnKNPYGAADI3ptvvhlvvfVWhfaWLVvGN7/5zVrVWrhwYQwbNizOPPPMGD16dI0h84iy4PLUqVNjxIgRcdttt9VqvcosWrQo7rjjjs2usyX94x//qDFkXhu33357DBs2rMqQeUTE4sWL45e//GVcfPHFsXLlyqxrP/LII0nIvE2bNnHJJZfUaZ877LBDHHnkkRXaN27cGL/73e/qVBMAAAAAAAAAgKZL0BwAIIfcf//9lbYfe+yxsd1222VdZ+LEifGd73wnxo4dW087q5tbbrklq4B7U7Fq1aq46aab6q3eH/7wh3j44YezHj9x4sS4+uqro7S0tMaxixYtqhAAP/fcc6Nz58613ue/nHrqqZW2P/fcczF37tw61wUAAAAAAAAAoOkRNAcAyBGTJk2Kt99+u9K+2jzNfMKECXHJJZfE8uXL62trdfL888/HSy+91Kh7qK1f/epXsWDBgnqptWjRorj33nsrtHfu3DlOOumkOO2002KnnXaq0P/qq6/Gyy+/XGP9O++8M1atWlV+3atXr/jOd76zWXveY489Yvfdd6/QXlxcHH/84x83qzYAAAAAAAAAAE2LoDkAQI545JFHKm3fbbfdol+/flnVWLRoUVx11VWxbt26Gse2atUqunbtGp06dYpmzZrVaq81WbZsWfziF7+o15oN7e23344nnnii3uo9+eSTsX79+qSte/fu8dhjj8UVV1wRl156aTz66KOx5557Vpj72GOPVVv73Xffjeeeey5pGzZsWBQUFGz2vr/+9a9X2v7cc8/l1NPpAQAAAAAAAACo3uYnTQAAaHCLFy+Ov//975X2DR48OOs6119/fbVPMt95553j1FNPja985SvRvXv38vaSkpKYO3duvP/++zFu3Lh47bXXst98JW677bZYsmTJZtXYktauXRs33nhjlJaW1lvNCRMmVGg766yzon379uXXLVq0iPPPPz8uvvjiZNw///nPWLduXbRo0aJCjeLi4vj5z3+etA0cODAOPvjgetn34MGD484776zwb7F27dp45pln4rTTTquXdQAAAAAAAAAAaFyC5gAAOeB///d/o7i4uNK+ww8/POsa48aNq7L/xBNPjGHDhlX69PJMJhO9evWKXr16xXHHHRdr1qyJKVOmZLXupl577bUKT9uOiGjdunWsXr26TjUb2r333htz585N2jZ3vx999FGFtgMOOKBC2/777x+ZTCZKSkrK29avXx+ffvpp9OrVq8L4v/zlLzFjxozy6xYtWsRll11W531uqnPnzrHHHnvEe++9V6Hvr3/9q6A5AAAAAAAAAMBWItPYGwAAoGaVBbMjyp5AXlnYuDKPPvpolX2DBg2Kq666qtKQeWVatWoVX/7yl7Ma+0UrV66Mm2++udL1+/XrV+t6W8L7778fjzzySIX2H/zgB5tV9/PPP6/Qtv3221doKygoiA4dOmQ1f9myZfHb3/42aTvrrLNixx133IydVnTYYYdV2j59+vSYPXt2va4FAAAAAAAAAEDjEDQHAGjiFi1aFFOnTq20r7InYFdm2rRpMWnSpEr7WrZsGcOGDavz/mrjzjvvjIULFyZthYWFccUVV2yR9Wtrw4YNcf3111d4mvx+++0X3/rWtzardosWLSq0VfWE9FWrVlVoa968eYW2u+++Owmgd+/ePc4444zN2GXl9t9//yr7XnnllXpfDwAAAAAAAACALU/QHACgiXvjjTeitLS00r599903qxovvPBClX0DBw6Mzp0712lvtfHmm2/Gk08+WaF92LBh0bFjxwZfvy5+//vfx6xZs5K2li1bxk9/+tPIy8vbrNqVfc1z586t0FZUVBRr166t0L7pf7MpU6bE6NGjk7ZLL7200kD75vrSl74ULVu2rLTvjTfeqPf1AAAAAAAAAADY8goaewMAAFTvrbfeqrJvwIABWdWo6mnmERGHHnpoRERMnDgxnn/++Xj33XejqKgoVq9eHe3bt49OnTrF3nvvHYceemgceuihdQpYr127Nm688cYK7YcddlgMHjy41vW2hA8++CBGjBhRof3CCy+MHj16bHb9vfbaKz7++OOk7amnnoq99947aRs1alSFuTvuuGMSNC8tLY1bbrklSkpKytsOOeSQOPzwwzd7n5UpKCiIPn36VPq6+uc//xkbN26MggI/agAAAAAAAAAA5DLpDwCAJm7q1KmVtrds2TK6d+9e4/zi4uIqa0RElJSUxBlnnBFTpkyp0Ld48eJYvHhxzJgxIx5//PHo3bt3XHrppXHwwQdn/wVExK9//euYN29e0tauXbsYPnx4repsKcXFxXH99dfHxo0bk/a99torvvOd79TLGoMGDYpnn302aRszZkz07NkzTjjhhGjWrFk8//zz8dBDD1U694uefvrpmDx5cvl1s2bN4sc//nG97LMqvXv3rjRovn79+vjwww+jX79+Dbo+AAAAAAAAAAANS9AcAKAJ27hxY8yePbvSvp133jkymUyNNT755JNYs2ZNlf3XXntt8iTs6sycOTN++MMfxkUXXRRnnXVWVnMmTZoUjz32WIX2Sy+9NHkqd1Pyxz/+sUI4v3nz5vHTn/40q3/zbPzHf/xH9O/fPwn4l5aWxt133x133313lfPatGkTp512Wvn1ihUr4te//nUy5tRTT42ePXvWyz6rsssuu1TZN2PGDEFzAAAAAAAAAIAcVz8pGQAAGsSCBQuiuLi40r6uXbtmVePzzz+vtj/bkPkXx999992Vhsc3tX79+rj++usrrPGVr3wlhgwZUqt1t5Q5c+bE/fffX6H9vPPOi169etXbOnl5eXHzzTdHYWFh1nPy8/PjuuuuSwL6v/nNb2Lp0qXl1126dIlzzjmn3vZZlS5dulTZ9+mnnzb4+gAAAAAAAAAANCxPNAcAaMIWLFhQZV+2TwOvKWheV7fffnvsvffe1T65+v777485c+YkbW3atImf/OQnDbKnzVVaWho33HBDrFu3Lmn/0pe+FN/97nfrfb0ePXrEgw8+GFdeeWVMnz692rEdO3aM6667Lr7yla+Ut33wwQfxxBNPJON++MMfRuvWrcuvN27cGM8++2y88sorMW3atFi2bFkUFBREp06dYq+99oqjjz46qZmt7bffvsq+6l63AAAAAAAAAADkBkFzAIAmbMWKFVX2tWnTZrNrfFF+fn4cddRRsc8++0Qmk4kZM2bEmDFjYu3atZWOLy4ujnvuuSfuuuuuSvunTZsWf/jDHyq0/+AHP4gddtghqz1taY899lj885//TNoKCgrimmuuifz8/AZZs0ePHjFy5Mh46aWX4u9//3u89957sWTJkiguLo727dvH7rvvHv/xH/8RQ4YMiZYtWyZzf/GLXyRPvN9vv/1i8ODB5ddTpkyJq666KubNm5fMW7duXaxatSrmzp0bY8aMiQMOOCBuvvnm6NChQ9b7/mKYfVPZvuYAAAAAAAAAAGi6BM0BAJqwqkLeEREtWrTIqkZeXl6NYwoKCuLuu++O/fffP2k/5ZRT4pxzzonly5dXOm/cuHHxySefRI8ePZL2jRs3xvXXX5+EoCMi9t9//zjxxBOz2veWNn/+/Pj1r39dof3ss8+O3XbbrUHXzsvLiyOOOCKOOOKIrOf87W9/i7fffrv8Oj8/P6644ory60mTJsVFF11U7WvoX9588804++yz46GHHor27dtntf6mofcvWrNmTVY1AAAAAAAAAABoujKNvQEAAOqmtLQ0q3Ft27atccwJJ5xQIWQeEdGrV68477zzqp37xhtvVGh78MEHY8aMGUlby5Yt47//+7+zCr43hhtvvLFCQHr33XePc845p5F2VLXVq1fHnXfembR961vfKg/Er169OoYPH55VyPxfPvnkk7jxxhuzHp/t6w8AAAAAAAAAgNwkaA4A0IRV99Ty9evXZ1WjTZs2NY456qijquw7+uijq507ffr05HrhwoXxwAMPVBj3/e9/v8KTz5uKF154ISZMmJC05efnx09/+tMoKGh6fwTo/vvvj6KiovLrDh06xAUXXFB+/eSTT8aCBQuSOfn5+XH55ZfHyy+/HH/729/im9/8ZoW6L730UoX/nlVZt25dlX3VPe0cAAAAAAAAAIDc0PRSMwAAlGvXrl2VfatWrcqqRocOHWocs+uuu1bZV1hYGJ06dYrFixdX2r906dIK1xs2bEja2rdvH+3atYu//vWvVa6zZMmSKvvmzZtXYe6xxx5b5fjaWrhwYYW2AQMGxOzZs2P27Nl1qjlp0qTIz88vv+7YsWMcfPDBdd7jv8yZMyceeeSRpO373/9+8lqp7N/59NNPj5NPPjkiyj58cNVVV8UHH3wQ7733XjLu2Wefjb59+9a4j+pef9W9bgEAAAAAAAAAyA2C5gAATdgOO+xQZd+iRYuyqrHTTjtFq1atYs2aNVWOqSkY3LZt2yqD5mvXrq1xD8uXL49rr722xnFVeeedd+Kdd95J2uozaF6ZSZMmxaRJk+o8/8knn4wnn3yy/Hq//farl6D5rbfeGhs3biy/HjBgQAwdOrT8euXKlfHBBx9UmPeNb3wjuc7Ly4shQ4ZUCJq/++67We2jutdfda9bAAAAAAAAAAByQ6axNwAAQNW6du0amUzlb9k+++yzrGpkMpno06dPtWM2fQL5pr4YbN5UYWFhVvtg8/3973+PN954o/w6Ly8vLr/88sjLyytv++yzz6KkpCSZ17p169hpp50q1KvsdbFgwYKs9lLd62/HHXfMqgYAAAAAAAAAAE2XoDkAQBPWvHnz6NWrV6V9c+fOjdLS0qzq7LnnntX2L1y4sMq+4uLiap9e3bFjx6z2wOZZu3Zt3HHHHUnbkCFDYo899kjaVqxYUWFuVU+sb9++fYW2zz//PKv9zJkzp8q+vn37ZlUDAAAAAAAAAICmq6CxNwAAQPX69esXs2bNqtC+du3amDdvXvTo0aPGGoMHD46RI0dW2f/222/HzjvvXGnf5MmTY926dVXO3WuvvWpcf0s6/vjj49NPP62073vf+16cf/75W3hH9eOhhx5Kvq527drFxRdfXGFcy5YtK7RV9UT6yp5k36JFi6z2M3PmzErbmzVrFr17986qBgAAAAAAAAAATZcnmgMANHH77bdflX1TpkzJqka/fv1it912q7L/kUceqTKM/NBDD1U5Lz8/Pw488MCs9kDdzZs3L/7whz8kbeeff3506NChwtjCwsIKbUuXLo21a9dWaK8skF9ZzU1t3Lgxpk+fXmnfnnvuGc2aNauxBgAAAAAAAAAATZsnmgMANHFf+cpXqux755134mtf+1pWdc4888y4+uqrK+2bOXNmXHbZZXH55ZfHTjvtFBERixcvjnvuuSdefvnlKmsee+yxsd122yVtffv2jYkTJ2a1py8677zz4u23366077jjjotrr7221jWzdeqpp8app55a63n7779/lX3XXHNNHH/88ZuzrXK33XZb8lT53XffPb797W9XOnaHHXaIjh07xpIlS8rbSkpKYsKECXHYYYclY8ePH19h/pe+9KUa9zNlypQqn3J/yCGH1DgfAAAAAAAAAICmT9AcAKCJ69q1a/Tp0ydmzJhRoa82ge5jjjkmnnnmmZgwYUKl/ePGjYsTTjghOnXqFJlMJhYtWhSlpaVV1mvRokV873vfy3p96mbcuHHxyiuvJG2XX3555OfnVznnkEMOiTFjxiRt9957bxxwwAHRqlWriIj46KOP4qmnnqp0bk2qe9199atfrXE+AAAAAAAAAABNX6axNwAAQM2OOeaYSttnz54dn3zySdZ1hg8fHu3bt692zOLFi6OoqKjakHlExNVXXx3dunXLem1qb8OGDXHrrbcmbUcffXTst99+1c475ZRTKrTNmDEjTjnllPjlL38ZP/vZz+Kss86KVatWJWM6deoURx99dI372jT4/i99+vSJ3r171zgfAAAAAAAAAICmT9AcACAHDB48uMonWI8dOzbrOj169Ihf/vKXNYbNq5PJZOJHP/pRDB48uM41yM7IkSNj7ty55detW7eOH/3oRzXO69evX5x66qkV2ufNmxcjR46MJ554IlasWFGh/yc/+Uk0b9682tqLFi2KyZMnV9p37LHH1rg3AAAAAAAAAAByg6A5AEAO2H777ePwww+vtO+vf/1rrWrtueeeMWLEiNhjjz1qvY/OnTvHXXfdFaeffnqt51I7n332Wfz+979P2v7P//k/sf3222c1/4c//GGVT8LfVCaTicsvvzwOO+ywGsf+7W9/q/Rp9y1btozjjz8+q/UAAAAAAAAAAGj6BM0BAHLEd77znUrbZ8yYER988EGtau28884xYsSIuPnmm2PfffeNvLy8Ksfm5eVFnz594sorr4ynn346Dj744FqtRd388pe/jDVr1pRf77zzznHaaadlPb+goCBuuOGGuOaaa6Jbt25Vjttrr73it7/9bZx88slZ1R0zZkyl7cccc8xmPSkfAAAAAAAAAICmJa+0sscRAo1i/vz5MWTIkEr7Ro8eXW1IDIBtw7nnnhvvvvtuhfZvf/vbceWVV9a57vLly2Py5MnxySefxMqVKyOTyURhYWF07tw59thjjygsLKz7pqm1VatWxZ/+9KfkyeGHHnponZ5CHxFRWloa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zzzzTHlbfn5+PPzww3H00UfXut6uu+6afHpkzZo1UVRUVKsac+fOTa779etX630AAAAAAAAAAAAAwNZA0JwtrrS0NM4777x49NFHy9vy8vLid7/7XZx44ol1qtmsWbPo3bt30jZlypSs569bty5mzZqVtAmaAwAAAAAAAAAAALCtEjRni7v00kvjgQceSNruuuuuOOusszar7j777JNcjxs3Luu5b731Vqxbt678escdd4wuXbps1n4AAAAAAAAAAAAAIFcJmrNFXX311XHnnXcmbTfffHNcfPHFm137uOOOS66ff/75rOduOvb444/f7P0AAAAAAAAAAAAAQK4SNGeL+cUvfhE33nhj0nbVVVfFVVddVS/1jz322CgoKCi/Hjt2bMyaNavGeaWlpfHggw8mbUOHDq2XPQEAAAAAAAAAAABALhI0Z4v47W9/G1dccUXSdvHFF8fNN99cb2t07NgxvvGNb5Rfl5aWxrXXXlvjvN///vcxZ86c8uuePXvGoEGD6m1fAAAAAAAAAAAAAJBrBM1pcA8//HBcdNFFSdvZZ58dd911V72vdd1110Um8++X9R//+Md45JFHqhw/ZcqUGDZsWNJ29dVXR/Pmzet9bwAAAAAAAAAAAACQKwoaewM0vtdffz3WrFlTof2f//xncr127dp44YUXKq3RrVu36N+/f4X2F154Ic4888woKSkpb+vXr1+cfPLJ8eKLL9Zqnx06dIgvf/nL1Y7p379/nHvuuXHfffeVt51++ukxderUuPTSS6NDhw4REbFhw4b405/+FJdddlksW7asfOxee+0VZ555Zq32BQAAAAAAAAAAAABbG0Fz4rTTTouPPvqoxnGfffZZHHXUUZX2nXnmmfHggw9WaH/ttddi48aNSdu0adNi8ODBtd7nf/7nf8bYsWNrHHfHHXfE22+/HRMnToyIiJKSkrjhhhvilltuiV122SVatGgRs2bNipUrVybzOnfuHI8//ngUFLgtAAAAAAAAAAAAANi2ZRp7A1DfWrduHf/3//7fOOKII5L29evXx/Tp02PSpEkVQua9evWKv//979GnT58tuVUAAAAAAAAAAAAAaJIEzdkqdezYMZ5//vm47777Yrfddqt23PDhw+O9996LPffccwvuEAAAAAAAAAAAAACarrzS0tLSxt4ENLT33nsv3n777fj000+juLg4OnXqFHvssUccdNBB0axZs8beXrn58+fHkCFDKu0bPXp0dOvWbQvviC2laMW65PrCkW/F3CWrG2k3AABQf3bu2Dp+c/qXk7bt27VopN0AAAAAAAAAkK2Cxt4AbAl77rmnJ5YDAAAAAAAAAAAAQJYyjb0BAAAAAAAAAAAAAACaFkFzAAAAAAAAAAAAAAASguYAAAAAAAAAAAAAACQEzQEAAAAAAAAAAAAASAiaAwAAAAAAAAAAAACQEDQHAAAAAAAAAAAAACAhaA4AAAAAAAAAAAAAQELQHAAAAAAAAAAAAACAhKA5AAAAAAAAAAAAAAAJQXMAAAAAAAAAAAAAABKC5gAAAAAAAAAAAAAAJATNAQAAAAAAAAAAAABICJoDAAAAAAAAAAAAAJAQNAcAAAAAAAAAAAAAICFoDgAAAAAAAAAAAABAQtAcAAAAAAAAAAAAAICEoDkAAAAAAAAAAAAAAAlBcwAAAAAAAAAAAAAAEoLmAAAAAAAAAAAAAAAkBM0BAAAAAAAAAAAAAEgImgMAAAAAAAAAAAAAkBA0BwAAAAAAAAAAAAAgIWgOAAAAAAAAAAAAAEBC0BwAAAAAAAAAAAAAgISgOQAAAAAAAAAAAAAACUFzAAAAAAAAAAAAAAASguYAAAAAAAAAAAAAACQEzQEAAAAAAAAAAAAASAiaAwAAAAAAAAAAAACQEDQHAAAAAAAAAAAAACAhaA4AAAAAAAAAAAAAQELQHAAAAAAAAAAAAACAhKA5AAAAAAAAAAAAAAAJQXMAAAAAAAAAAAAAABKC5gAAAAAAAAAAAAAAJATNAQAAAAAAAAAAAABICJoDAAAAAAAAAAAAAJAQNAcAAAAAAAAAAAAAICFoDgAAAAAAAAAAAABAQtAcAAAAAAAAAAAAAICEoDkAAAAAAAAAAAAAAAlBcwAAAAAAAAAAAAAAEoLmAAAAAAAAAAAAAAAkBM0BAAAAAAAAAAAAAEgImgMAAAAAAAAAAAAAkBA0BwAAAAAAAAAAAAAgIWgOAAAAAAAAAAAAAEBC0BwAAAAAAAAAAAAAgISgOQAAAAAAAAAAAAAACUFzAAAAAAAAAAAAAAASguYAAAAAAAAAAAAAACQEzQEAAAAAAAAAAAAASAiaAwAAAAAAAAAAAACQEDQHAAAAAAAAAAAAACAhaA4AAAAAAAAAAAAAQELQHAAAAAAAAAAAAACAhKA5AAAAAAAAAAAAAAAJQXMAAAAAAAAAAAAAABKC5gAAAAAAAAAAAAAAJATNAQAAAAAAAAAAAABICJoDAAAAAAAAAAAAAJAQNAcAAAAAAAAAAAAAICFoDgAAAAAAAAAAAABAQtAcAAAAAAAAAAAAAICEoDkAAAAAAAAAAAAAAAlBcwAAAAAAAAAAAAAAEoLmAAAAAAAAAAAAAAAkBM0BAAAAAAAAAAAAAEgImgMAAAAAAAAAAAAAkBA0BwAAAAAAAAAAAAAgIWgOAAAAAAAAAAAAAEBC0BwAAAAAAAAAAAAAgISgOQAAAAAAAAAAAAAACUFzAAAAAAAAAAAAAAASguYAAAAAAAAAAAAAACQEzQEAAAAAAAAAAAAASAiaAwAAAAAAAAAAAACQEDQHAAAAAAAAAAAAACAhaA4AAAAAAAAAAAAAQELQHAAAAAAAAAAAAACAhKA5AAAAAAAAAAAAAAAJQXMAAAAAAAAAAAAAABKC5gAAAAAAAAAAAAAAJATNAQAAAAAAAAAAAABICJoDAAAAAAAAAAAAAJAQNAcAAAAAAAAAAAAAICFoDgAAAAAAAAAAAABAQtAcAAAAAAAAAAAAAICEoDkAAAAAAAAAAAAAAAlBcwAAAAAAAAAAAAAAEoLmAAAAAAAAAAAAAAAkBM0BAAAAAAAAAAAAAEgImgMAAAAAAAAAAAAAkBA0BwAAAAAAAAAAAAAgIWgOAAAAAAAAAAAAAEBC0BwAAAAAAAAAAAAAgISgOQAAAAAAAAAAAAAACUFzAAAAAAAAAAAAAAASguYAAAAAAAAAAAAAACQEzQEAAAAAAAAAAAAASAiaAwAAAAAAAAAAAACQEDQHAAAAAAAAAAAAACAhaA4AAAAAAAAAAAAAQELQHAAAAAAAAAAAAACAhKA5AAAAAAAAAAAAAAAJQXMAAAAAAAAAAAAAABKC5gAAAAAAAAAAAAAAJATNAQAAAAAAAAAAAABICJoDAAAAAAAAAAAAAJAQNAcAAAAAAAAAAAAAICFoDgAAAAAAAAAAAABAQtAcAAAAAAAAAAAAAICEoDkAAAAAAAAAAAAAAAlBcwAAAAAAAAAAAAAAEoLmAAAAAAAAAAAAAAAkBM0BAAAAAAAAAAAAAEgImgMAAAAAAAAAAAAAkBA0BwAAAAAAAAAAAAAgIWgOAAAAAAAAAAAAAEBC0BwAAAAA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Qw45JDp37lx+PWvWrBg7dmxWa226p6FDh2Y1DwAAAAAAAAAAAAC2RoLmNLhTTjkl2rRpU379yiuvxN///vdq55SWlsZ1112XtJ199tmRyVT9ks1kMnHWWWclbdddd12NTzV/8cUX49VXXy2/bteuXZx00knVzgEAAAAAAAAAAACArZmgOQ2uS5cucfHFFydt5557bsyfP7/KOT/72c/ilVdeKb9u3759XH755TWudeWVV0bbtm3Lr19++eW45ZZbqhw/b968OPfcc5O2Sy65JHkyOgAAAAAAAAAAAABsawoaewM0vtdffz3WrFlTof2f//xncr127dp44YUXKq3RrVu36N+/f5VrXHHFFfHQQw/FggULIiJi9uzZccghh8Rdd90Vxx9/fOTl5UVExCeffBI33nhj/Pa3v03m/+QnP4mOHTvW+LV07tw5hg8fHsOHDy9vu+qqq2Lu3Lnx3//939GtW7eIiCgpKYnRo0fHJZdcEnPnzk2+jh//+Mc1rgMAAAAAAAAAAAAAW7O80tLS0sbeBI2rV69e8dFHH21WjTPPPDMefPDBase88sorcfTRR8fatWuT9sLCwthll11i2bJlMXfu3CguLk76hw4dGk8++WR5GL0mJSUlMXTo0BgzZkzSnp+fHz179oz27dvH7NmzY9myZUl/q1at4vnnn49DDz00q3Uawvz582PIkCGV9o0ePbo8KM/Wp2jFuuT6wpFvxdwlqxtpNwAAUH927tg6fnP6l5O27du1aKTdAAAAAAAAAJCtTGNvgG3HYYcdFs8++2yFJ5MvW7Ys3nnnnZg9e3aFkPmpp54ajz32WNYh84iITCYTjz/+eJxyyilJe3FxccyaNSveeeedCiHzTp06xV//+tdGDZkDAAAAAAAAAAAAQFMhaM4WdcQRR8SUKVPiwgsvjNatW1c5bt99940nnngi/vSnP0WLFrV/0l3Lli3jkUceib/85S+xzz77VDmuTZs2cdFFF8WUKVPi8MMPr/U6AAAAAAAAAAAAALA1KmjsDdD45syZs0XX69q1a9xzzz1x2223xbhx42Lq1KmxbNmyaN68eXTv3j0OOuig2G233eplrRNPPDFOPPHE+PDDD2P8+PExb968WL9+fRQWFsaXvvSlOPTQQ6Nly5b1shYAAAAAAAAAAAAAbC0EzWk0rVq1iiOPPDKOPPLIBl9rt912q7fwOgAAAAAAAAAAAABs7TKNvQEAAAAAAAAAAAAAAJoWQXMAAAAAAAAAAAAAABKC5gAAAAAAAAAAAAAAJATNAQAAAAAAAAAAAABICJoDAAAAAAAAAAAAAJAQNAcAAAAAAAAAAAAAICFoDgAAAAAAAAAAAABAQtAcAAAAAAAAAAAAAICEoDkAAAAAAAAAAAAAAAlBcwAAAAAAAAAAAAAAEoLmAAAAAAAAAAAAAAAkBM0BAAAAAAAAAAAAAEgImgMAAAAAAAAAAAAAkBA0BwAAAAAAAAAAAAAgIWgOAAAAAAAAAAAAAEBC0BwAAAAAAAAAAAAAgISgOQAAAAAAAAAAAAAACUFzAAAAAAAAAAAAAAASguYAAAAAAAAAAAAAACQEzQEAAAAAAAAAAAAASAiaAwAAAAAAAAAAAACQEDQHAAAAAAAAAAAAACAhaA4AAAAAAAAAAAAAQELQHAAAAAAAAAAAAACAhKA5AAAAAAAAAAAAAAAJQXMAAAAAAAAAAAAAABKC5gAAAAAAAAAAAAAAJATNAQAAAAAAAAAAAABICJoDAAAAAAAAAAAAAJAQNAcAAAAAAAAAAAAAICFoDgAAAAAAAAAAAABAQtAcAAAAAAAAAAAAAICEoDkAAAAAAAAAAAAAAAlBcwAAAAAAAAAAAAAAEoLmAAAAAAAAAAAAAAAkBM0BAAAAAAAAAAAAAEgImgMAAAAAAAAAAAAAkBA0BwAAAAAAAAAAAAAgIWgOAAAAAAAAAAAAAEBC0BwAAAAAAAAAAAAAgISgOQAAAAAAAAAAAAAACUFzAAAAAAAAAAAAAAASguYAAAAAAAAAAAAAACQEzQEAAAAAAAAAAAAASAiaAwAAAAAAAAAAAACQEDQHAAAAAAAAAAAAACAhaA4AAAAAAAAAAAAAQELQHAAAAAAAAAAAAACAhKA5AAAAAAAAAAAAAAAJQXMAAAAAAAAAAAAAABKC5gAAAAAAAAAAAAAAJATNAQAAAAAAAAAAAABICJoDAAAAAAAAAAAAAJAQNAcAAAAAAAAAAAAAICFoDgAAAAAAAAAAAABAQtAcAAAAAAAAAAAAAICEoDkAAAAAAAAAAAAAAAlBcwAAAAAAAAAAAAAAEoLmAAAAAAAAAAAAAAAkBM0BAAAAAAAAAAAAAEgImgMAAAAAAAAAAAAAkBA0BwAAAAAAAAAAAAAgIWgOAAAAAAAAAAAAAEBC0BwAAAAAAAAAAAAAgISgOQAAAAAAAAAAAAAACUFzAAAAAAAAAAAAAAASguYAAAAAAAAAAAAAACQEzQEAAAAAAAAAAAAASAiaAwAAAAAAAAAAAACQEDQHAAAAAAAAAAAAACAhaA4AAAAAAAAAAAAAQELQHAAAAAAAAAAAAACAhKA5AAAAAAAAAAAAAAAJQXMAAAAAAAAAAAAAABKC5gAAAAAAAAAAAAAAJATNAQAAAAAAAAAAAABICJoDAAAAAAAAAAAAAJAQNAcAAAAAAAAAAAAAICFoDgAAAAAAAAAAAABAQtAcAAAAAAAAAAAAAICEoDkAAAAAAAAAAAAAAAlBcwAAAAAAAAAAAAAAEoLmAAAAAAAAAAAAAAAkBM0BAAAAAAAAAAAAAEgImgMAAAAAAAAAAAAAkBA0BwAAAAAAAAAAAAAgIWgOAAAAAAAAAAAAAEBC0BwAAAAAAAAAAAAAgISgOQAAAAAAAAAAAAAACUFzAAAAAAAAAAAAAAASguYAAAAAAAAAAAAAACQEzQEAAAAAAAAAAAAASAiaAwAAAAAAAAAAAACQEDQHAAAAAAAAAAAAACAhaA4AAAAAAAAAAAAAQELQHAAAAAAAAAAAAACAhKA5AAAAAAAAAAAAAAAJQXMAAAAAAAAAAAAAABKC5gAAAAAAAAAAAAAAJATNAQAAAAAAAAAAAABICJoDAAAAAAAAAAAAAJAQNAcAAAAAAAAAAAAAICFoDgAAAAAAAAAAAABAQtAcAAAAAAAAAAAAAICEoDkAAAAAAAAAAAAAAAlBcwAAAAAAAAAAAAAAEoLmAAAAAAAAAAAAAAAkBM0BAAAAAAAAAAAAAEgImgMAAAAAAAAAAAAAkBA0BwAAAAAAAAAAAAAgIWgOAAAAAAAAAAAAAEBC0BwAAAAAAAAAAAAAgISgOQAAAAAAAAAAAAAACUFzAAAAAAAAAAAAAAASguYAAAAAAAAAAAAAACQEzQEAAAAAAAAAAAAASAiaAwAAAAAAAAAAAACQEDQHAAAAAAAAAAAAACAhaA4AAAAAAAAAAAAAQELQHAAAAAAAAAAAAACAhKA5AAAAAAAAAAAAAAAJQXMAAAAAAAAAAAAAABKC5gAAAAAAAAAAAAAAJATNAQAAAAAAAAAAAABICJoDAAAAAAAAAAAAAJAQNAcAAAAAAAAAAAAAICFoDgAAAAAAAAAAAABAQtAcAAAAAAAAAAAAAICEoDkAAAAAAAAAAAAAAAlBcwAAAAAAAAAAAAAAEoLmAAAAAAAAAAAAAAAkBM0BAAAAAAAAAAAAAEgImgMAAAAAAAAAAAAAkBA0BwAAAAAAAAAAAAAgIWgOAAAAAAAAAAAAAEBC0BwAAAAAAAAAAAAAgISgOQAAAAAAAAAAAAAACUFzAAAAAAAAAAAAAAASguYAAAAAAAAAAAAAACQEzQEAAAAAAAAAAAAASAiaAwAAAAAAAAAAAACQEDQHAAAAAAAAAAAAACAhaA4AAAAAAAAAAAAAQELQHAAAAAAAAAAAAACAhKA5AAAAAAAAAAAAAAAJQXMAAAAAAAAAAAAAABKC5gAAAAAAAAAAAAAAJATNAQAAAAAAAAAAAABICJoDAAAAAAAAAAAAAJAQNAcAAAAAAAAAAAAAICFoDgAAAAAAAAAAAABAQtAcAAAAAAAAAAAAAICEoDkAAAAAAAD8P/buO0yq8uwf+D27C0vvLYIIooIgoqjw2rAr9jdGY/QXS8RILNHEoIk1YiwxarBETWJssUSjIYotdrE3rBFEURAF6bDSYXfn9wcvK8PObF9mZ/l8rosLzvOccz/3yJ6H3fG7ZwEAAACAFILmAAAAAAAAAAAAAACkEDQHAAAAAAAAAAAAACBFQbYbYOO2cuXKeO+992LSpEmxcOHCWL58ebRp0ya6dOkSgwcPji222CISiUSt1ykuLo4333wz/vvf/8b8+fMjPz8/vve978UOO+wQAwYMqINXAgAAAAAAAAAAAACNh6A5WTFhwoQYM2ZMPPTQQ7Fy5cqM53Xv3j1GjBgRZ511VnTo0KHa6yxZsiR+//vfxy233BILFixIe07fvn3j17/+dZx44ol1EmoHAAAAAAAAAAAAgFyXl+0G2LiUlpbGb37zmxgyZEjce++9FYbMIyJmzJgRl156afTv3z/+85//VGutjz76KLbddtu4/PLLM4bMIyImT54cJ510Uhx44IFRVFRUrTUAAAAAAAAAAAAAoDESNGeDGjlyZFx11VVRWlqaMt6iRYsYOHBgDBkyJPr06VPuyeKzZ8+Oww8/PJ588skqrTN58uTYe++9Y+rUqSnjrVq1im233Ta23HLLaNKkScrcU089FQceeGCsWLGiBq8MAAAAAAAAAAAAABoPQXM2mIceeij+9re/pYz1798/Hn/88SgqKooPP/ww3nzzzZgyZUrMnj07Ro8eHU2bNi07d9WqVXHCCSfEwoULK1ynuLg4jjrqqJg3b17ZWIcOHeKuu+6KBQsWxAcffBCffvppzJo1Ky644ILIy/vuNnj99dfj3HPPraNXDAAAAAAAAAAAAAC5SdCcDWb06NEpxzvuuGO89dZbcdBBB0VBQUHKXOfOnePiiy+OJ598MmVu7ty58ec//7nCdW6//fb46KOPyo7bt28fL7/8chx//PEpTzHv0KFDXHbZZXH33XenXH/LLbfEZ599Vu3XBwAAAAAAAAAAAACNhaA5G8QXX3wR//3vf1PGbr755mjZsmWF1+29994xYsSIlLFHH3004/mrVq2Kyy67LGXsmmuuif79+2e85thjj40f//jHZcfFxcVxySWXVNgXAAAAAAAAAAAAADRmguZsEJMnT0457tGjR+y0005VuvYHP/hByvGUKVMynvvUU0/FV199VXbcq1ev+MlPflLpGpdcckkkEomy4wcffDCKioqq1B8AAAAAAAAAAAAANDaC5mwQCxYsSDnedNNNq3xtz549U44XLVqU8dxHHnkk5fgnP/lJSoA8kz59+sQee+xRdrx69ep44oknqtwjAAAAAAAAAAAAADQmguZsEG3btk05Xr58eZWvXf/cTp06ZTz38ccfTznef//9q7zOfvvtl3L82GOPVflaAAAAAAAAAAAAAGhMBM3ZILbbbruU40mTJsXSpUurdO1bb72VcjxkyJC0582ePTtmzZpVdlxYWBiDBw+uco+77rpryvH7779f5WsBAAAAAAAAAAAAoDERNGeD6NGjR+yyyy5lxytXrowbbrih0utWrlwZ1113XcrYiBEj0p47adKklOMtttgimjZtWuUe+/fvn3I8ZcqUKC4urvL1AAAAAAAAAAAAANBYCJqzwVx11VWRl/fdh9zFF18cd911V8bzFy1aFEceeWRKgPzQQw+NQw89NO35kydPTjnedNNNq9Vf586do1mzZmXHq1atiqlTp1arBgAAAAAAAAAAAAA0BgXZboCNx2677RZ/+tOf4vTTT49kMhnFxcVx4oknxk033RRHHHFE9O3bN5o3bx7z5s2LN998M+67775YsGBB2fX77bdf/OMf/8hYf86cOSnHPXr0qHaPm2yySXzxxRcpNbfccstq16kPxcXF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AAAAAAAAgIaqINsNRETk5eXFoEGD4o033igLmieTybI/T58+PUaMGBF33313na77wQcfxKhRozI+zTwiYocddqjTNcls8uTJ8cEHH8TXX38dy5Yti+bNm0fXrl1jq622ikGDBkVhYWGNa69YsSJee+21+OSTT2LhwoXRtGnT6NGjRwwdOjQ233zzOnwVAAAAAAAAAAAAAJD7GkTQPCJi3333jTfeeCNlbG3YPJlMxn333RedO3eOP/7xj3Wy3qeffhoHHXRQLF68uGyNiNQnqjdt2jSGDRtWJ+uR3uLFi+PGG2+Mv/3tbzF16tSM5zVt2jSGDBkSRx55ZJx11llVrj937twYPXp03HnnnbF06dK05+ywww5x0UUXxeGHH17t/gEAAAAAAAAAAACgMcrLdgNrHXzwwWnH1w2bX3/99bH33nvHzJkza7XWbbfdFjvssEN88803KSHz9dfcc889o3nz5rVai8wee+yx2HLLLeOCCy6oMGQeEbFq1ap45ZVX4sorr6xy/RdffDH69+8fN910U8aQeUTEhAkT4n//93/jhBNOiFWrVlW5PgAAAAAAAAAAAAA0Vg0maD506NDo27dvRKQ+VTwiNWw+fvz46Nu3b5xxxhkxefLkKtdfvXp13HPPPbHTTjvFKaecEkuXLi23zvqOP/746r8QqmTMmDFx2GGHxezZs1PGmzVrFptvvnkMGTIkBg4cGJ06dapR/VdeeSUOOuigmDdvXsp4u3btYvvtt49evXpFfn5+ytzf//73OOaYY8p94wEAAAAAAAAAAAAAbGwKst3AukaOHBlnn3122gD4umHzpUuXxi233BK33HJLbL755rHLLrvE4MGDo1OnTtG+ffsoLCyMoqKiWLhwYUydOjVee+21ePvtt2PZsmVlIeK1a6wbKl533U6dOsUPfvCDen7FG6fbbrstzj777JSxAw88MM4888zYa6+9orCwMGVu5syZ8fzzz8fDDz8cb731VqX1Fy5cGEcffXQsX768bGyzzTaL66+/Pg477LCyv+evv/46LrvssvjLX/5Sdt7YsWNjzJgx5foDAAAAAAAAAAAAgI1JItmAHt+8YsWK6NOnT8yaNSsiIu2TpSsLiGeS7vz1668NsicSibj66quFjevBlClTYuDAgbFixYqIiGjSpEncddddccwxx1Tp+oULF0b79u0rPOf888+PK6+8suy4d+/e8corr8Qmm2yS9vwrrrgiLrjggrLjtm3bxtSpUytdpz7MnDkzDjvssLRz48aNy/gayH1zF69MOT71ngkxfcGyLHUDAAB1p2eHFnHLj3dIGevcujDD2QAAAAAAAAA0FHnZbmBdzZo1i0svvTRtwHytdZ9IvvZXMpms9Fe689e1bli9d+/ecfrpp9fPi9zInXLKKWUh84iIe++9t8oh84ioNPw9d+7cuPHGG1PGbr311goD2uedd14MGzas7LioqCiuueaaKvcEAAAAAAAAAAAAAI1NgwqaR0SMGDEi9tlnn7JweDrrBsgjUkPnmX6te9361p3Py8uLv/3tb1FY6Olqde2RRx6JF154oez4qKOOiqOOOqpO17j//vtjyZIlZcfDhg2LffbZp8JrEolE/Pa3v00Zu/322yv8hgcAAAAAAAAAAAAAaMwaXNA8IuKee+4pewJ1prD5WlV5mnmmgPn6dRKJRFx00UWx55571tVLYR1//etfU47XD3fXhUceeSTleMSIEVW6bq+99orevXuXHc+aNSveeOONOu0NAAAAAAAAAAAAAHJFgwyad+3aNR599NFo06ZNRFQeNq+NdWsfe+yx9RJ+JmLGjBnx1FNPlR1vt912MWDAgDpdY8mSJfHSSy+ljO2///5VujaRSMS+++6bMvbYY4/VWW8AAAAAAAAAAAAAkEsaZNA8ImL77bePZ599Njp06BARa4LAdR04X1svmUzGcccdF3fddVed1uc7//nPf6KkpKTseK+99qrzNT7++ONYvXp12XHv3r2jW7duVb5+1113TTl+//3366o1AAAAAAAAAAAAAMgpDTZoHhGxww47xFtvvRXbbbddJJPJiKibwPnaGslkMvLy8uKqq66Ku+66K/LyGvR/jpz29ttvpxwPGjSo7M/vvfdenHnmmTFo0KBo3759tGjRInr16hX77bdfXHPNNTFjxowqrTFp0qSU4/79+1erx/XPX78eAAAAAAAAAAAAAGwsGnyyunfv3vHGG2/EpZdeGs2aNSsXOK8seL7+eWsD5slkMoYMGRJvvfVWnHPOORvq5Wy01g+ab7755rFkyZIYMWJEDB48OG688cb48MMPY9GiRbF8+fL48ssv49lnn41zzjknttxyyzj//PNTnrMdEl0AAQAASURBVFaezuTJk1OON91002r1uP75X375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dyxatCimT58eJSUlKdcefvjhMWrUqDp6tQAAAAAAAAAAAACQmzzRnA3u17/+ddxwww3RpEmTlPFZs2bFO++8E5MmTSoXMu/bt2+8/vrrMXDgwCqtMWzYsHj88cfLPZl80aJF8d5778XUqVPLhcyPPfbYeOCBB1KeuA4AAAAAAAAAAAAAGyNBc7Li5z//eXz44Ydx9NFHlwucr6t3795x/fXXx4cffhhbbrlltdbYe++9Y+LEiXHqqadGixYtMp63/fbbx7/+9a+49957o7CwsFprAAAAAAAAAAAAAEBjVJDtBth49evXL+6///749ttv47XXXovPPvssioqKolWrVtG1a9cYPHhw9O3bt1ZrdO3aNW6++ea49tpr47XXXotJkybFokWLomnTptG9e/cYOnRobLHFFnX0igAAAAAAAAAAAACgcRA0J+vatGkTw4cPj+HDh9fbGs2bN4999tkn9tlnn3pbAwAAAAAAAAAAAAAai7xsNwAAAAAAAAAAAAAAQMPiieYAAAAAAECjUVxcHJ9++mlMnz495s2bFytWrIgmTZpE8+bNo0uXLtG9e/fo3bt3FBT4XyQAAAAAABXxLioAAAAAAFCvHn300Rg9enSF5xxyyCFxySWX1HiNN998Mx5++OF45ZVXYvny5RWeW1hYGH379o1ddtkl9t9//+jZs2eN1wUAAAAAaKwEzQEAAAAAgHozb968GDNmTL3Vnzp1alxxxRXx3nvvVfmalStXxocffhgffvhhfP3117UKuAMAAAAANFaC5gAAAAAAQL256qqr4ttvv62X2s8880xccsklsXLlynqpDwAAAACwMcvLdgMAAAAAAEDj9Mwzz8QLL7xQL7WfeOKJuOCCC4TMAQAAAADqiSeaAwAAAAAAdW7RokVx9dVX10vtzz77LH73u99FaWlppee2bNkyWrduHatWrYpvv/02iouL66UnAAAAAIDGRtAcAAAAAACoc9dee20sWLCgzuuuXr06Lr744li9enXGc7beeuv40Y9+FEOHDo1OnTqVjRcXF8e0adPi/fffj9deey3eeOONOu8PAAAAAKCxEDQHAAAAAADq1CuvvBJPPvlkufEWLVrEsmXLalX73nvvjc8++yzj/M9+9rMYMWJEJBKJcnMFBQWxxRZbxBZbbBFHHnlkFBUVxfTp02vVDwAAAABAY5WX7QYAAAAAAIDGY8mSJXHFFVeUG993332jX79+tapdUlISDz74YMb54447Lk4++eS0IfN02rZtGwMHDqxVTwAAAAAAjZWgOQAAAAAAUGeuv/76mDNnTspYu3bt4txzz6117fHjx8fs2bPTznXu3DlGjhxZ6zUAAAAAAFhD0BwAAAAAAKgTb7/9dvz73/8uNz5q1Kjo0KFDres/++yzGecOPfTQaNasWa3XAAAAAABgjYJsNwAAAAAAAOS+FStWxGWXXVZufNiwYTF8+PA6WeOjjz7KOLfrrrtGaWlpvPTSSzF+/Pj48MMPY/78+bFy5cpo27ZtdOnSJQYPHhy777577LDDDnXSDwAAAABAYyZoDgAAAAAA1NpNN90UM2bMSBlr3bp1nH/++XVSf968efHNN99knC8qKoojjzwypk+fnvbaefPmxcSJE+Oee+6JQYMGxahRo2Lrrbeuk94AAAAAABqjvGw3AAAAAAAA5LYPP/wwHnjggXLjv/zlL6NTp051ssaUKVMqnB81alTakHk6H3zwQZx88snx+OOP10VrAAAAAACNkqA5AAAAAABQY6tWrYpLL700SktLU8Z33nnnOOyww+psnaKiogrn11+/MitXroxLLrkkxo8fX5u2AAAAAAAaLUFzAAAAAACgxm699daYNm1ayljLli3jggsuqNN1Fi9eXKf1IiKSyWRcfPHFMWfOnDqvDQAAAACQ6wqy3QAAAAAAAJCbPvnkk/j73/9ebvznP/95dOvWrU7XqmrQvLCwMA466KDYeuuto7S0ND788MN46qmnoqSkJO35S5cujdtvvz1+85vf1GW7AAAAAAA5T9AcAAAAAACotuLi4rj00kvLBbh33HHH+MEPflDn6yUSiUrPad26ddx6662xxRZblI0deeSRccQRR8Rpp50Wq1atSnvduHHj4he/+EU0a9aszvoFAAAAAMh1edluAAAAAAAAyD133nlnfPrppyljzZo1iwsvvLBKofDqatWqVaXnnHTSSSkh87W22267+OEPf5jxulWrVsW7775bq/4AAAAAABobQXMAAAAAAKBa5syZE7fddlu58dNPPz169OhRL2u2bNmy0nP222+/jHP7779/hdd+8skn1e4JAAAAAKAxK8h2AwAAAAAAQG5ZuHBhrF69OmWsbdu20bp163jiiScyXrdgwYKMczNmzCh37UEHHVT25/bt21fYU4sWLaJbt24Z5/v06VPh9QsXLqxwHgAAAABgYyNoDgAAAAAA1FpRUVFccsklNb7+vffei/feey9lbN2g+ZZbblnh9a1bt65wvrCwMJo2bRqrVq1KO79ixYoqdgoAAAAAsHHIy3YDAAAAAAAAlenYsWN06dIl4/z6T1hPp7i4OONcu3btatIWAAAAAECjJWgOAAAAAADkhG222SbjXFFRUaxcuTLj/Jw5c6K0tDTjfMeOHWvVGwAAAABAYyNoDgAAAAAA5IThw4dnnCspKYkPPvgg4/y7775bYe1tt922xn0BAAAAADRGguYAAAAAAEBO2H333aNt27YZ5+++++6048XFxXHvvfdmvK5du3bRr1+/WvcHAAAAANCYFGS7AQAAAAAAILf07ds33nnnnWpfd8opp2R8svghhxwSl1xySYXXN2nSJI499ti45ZZb0s6//vrr8dvf/jbOOOOM6Ny5c0REzJgxI6655pqYNGlSxro//OEPIy/Ps3kAAAAAANYlaA4AAAAAAOSM448/Pp566qn44osv0s4//vjj8cQTT0SnTp2itLQ05s+fX2G99u3bx7HHHlsfrQIAAAAA5DSP5wAAAAAAAHJGkyZN4uKLL46mTZtmPCeZTMbcuXMrDZkXFBTE73//+2jVqlVdtwkAAAAAkPMEzQEAAAAAgJyyzTbbxJVXXhmFhYU1rlFYWBijR4+OHXbYoQ47AwAAAABoPATNAQAAAACAnLPHHnvErbfeGptttlm1r+3Zs2fcdtttccABB9RDZwAAAAAAjUNBthsAAAAAAACoif79+8cDDzwQ48aNi7Fjx8Ynn3yS8dz8/Pzo379//PCHP4z9998/8vPzN2CnAAAAAAC5R9AcAAAAAADYIP7617/Wec2CgoI44ogj4ogjjoh58+bFxIkTY+bMmbF06dJo2rRptG3bNrp06RLbbLNNtGrVqs7XBwAAAABorATNAQAAAACARqFTp04xbNiwbLcBAAAAANAo5GW7AQAAAAAAAAAAAAAAGhZBcwAAAAAAAAAAAAAAUgiaAwAAAAAAAAAAAACQQtAcAAAAAAAAAAAAAIAUguYAAAAAAAAAAAAAAKQQNAcAAAAAAAAAAAAAIIWgOQAAAAAAAAAAAAAAKQTNAQAAAAAAAAAAAABIIWgOAAAAAAAAAAAAAEAKQXMAAAAAAAAAAAAAAFIImgMAAAAAAAAAAAAAkELQHAAAAAAAAAAAAACAFILmAAAAAAAAAAAAAACkEDQHAAAAAAAAAAAAACBFQbYbAAAAAACAxurSSy+NcePGlRs/66yz4rjjjstCRzRmH3/8cZxwwgnlxnv16hX3339/FBT430IAAAAAQNV5RxEAAAAAAOrBJ598Eo899li58fbt28eRRx5Z5TorVqyIGTNmxIwZM2Lu3LmxfPnyWLFiRTRr1ixat24dXbp0ia233jratWtXh92TSTKZjM8//zwmTZoUCxcujIg1f6dbb711bLHFFjWu+8Ybb8QHH3xQdlxYWBjHH3985OVV/YfTDhgwIHbdddd49dVXU8anTZsWDz30UPzoRz+qcX8AAAAAwMZH0BwAAAAAAOrBmDFjorS0tNz4//t//y+aN2+e8brFixfHa6+9Fu+88058/PHH8fnnn0dJSUml6/Xq1SsOPfTQOOyww6J9+/a16j2dv/zlL3HrrbdWeM5Pf/rTGDlyZJ2vnc6OO+5YZ7XOOeecOProoys9b9y4cXHbbbfFjBkz0s537949RowYEYcddli11v/222/joosuKguuR0ScdNJJ1QqZr3XyySeXC5pHRNx6661x8MEHR+vWratdEwAAAADYOFX/HUoAAAAAAKBCb7/9dkyYMKHceLNmzeKII47IeN31118f++67b1xwwQXx73//Oz799NMqhcwj1jy1+sYbb4zvf//78fDDD9e09bSmTJkSd9xxR53WzCXFxcVx3nnnxaWXXpoxZB4RMWPGjLj00kvjvPPOi+Li4irXv+WWW1JC5t26dYuTTjqpRr0OHDgwBg4cWG68qKgo7rvvvhrVBAAAAAA2ToLmAAAAAABQxzI9+fuggw6KNm3aZLxuxowZVQ6WZ7JkyZK47LLL4uqrr65VnbVKSkri0ksvrVZwurG59tpr45lnnqny+c8880z88Y9/rNK5n376aYwdOzZl7Be/+EU0a9asWj2u65hjjkk7/o9//CMWL15c47oAAAAAwMZF0BwAAAAAAOrQhx9+GO+++27auYqeZl7XHnjggbjzzjtrXeeee+6JiRMn1r6hHPXJJ5/Egw8+WG68R48e8f/+3/+Lo48+Ojp16lRu/p///GdMnjy50vpXX311yjcXDBkyJPbdd99a9bz33ntHu3btyo0vWbIkHnrooVrVBgAAAAA2HoLmAAAAAABQh/7xj3+kHd9iiy2iX79+Na6bSCSiffv20alTp8jPz6/SNbfeemt88803NV7zyy+/jL/+9a81vr4xeOCBB8qNDRw4MB544IH45S9/Geecc0488MAD0b179ypdu64nnngi3nvvvbLj/Pz8GDVqVK17LigoiAMOOCDt3EMPPbRRP50eAAAAAKi6gmw3AAAAAAAAjcX8+fPj+eefTzs3fPjwatfr2rVrHHDAAbHbbrvFwIEDo0mTJhGx5snUL7zwQtx0000xb968jNevXLkyxo4dG6effnq1104mk3HZZZfFypUrq31tNv3kJz+J3r17V+uaAQMGZJx76623yo2NHDkyCgsLy47btm0bJ554Ylx++eUp57399tsZ6y5dujRuuOGGlLGjjz46Nt9886q2XaEDDzwwbdB99uzZ8fLLL8dee+1VJ+sAAAAAAI2XoDkAAAAAANSRp59+OkpKStLO7bnnnlWus/nmm8eJJ54Y+++/fxQUlH8rv1WrVnHooYfGzjvvHCeddFLMnDkzY62XXnqpRkHzf/7znylP245Y88TtgoKCBh0+Hzp0aOy44451UmvFihUxe/bslLG8vLy09XfaaadyY998802sWrUqmjZtWm7u1ltvTfkmgY4dO8Ypp5xSB12vMWDAgOjUqVPab0R44oknBM0BAAAAgErlZbsBAAAAAABoLJ588sm04z179oxevXpVen3r1q3jV7/6Vdx3331x0EEHpQ2Zr6tTp05x3nnnVXjOtGnTIplMVrr2ur755pu46aabyo0fe+yx0aFDh2rVymWLFy8uN9a+ffu0fy+dO3dOW+Pbb78tNzZt2rS4//77U8Z+/vOfR6tWrWrYaXmJRCJ23333tHOvvvpq2tcGAAAAALAuQXMAAAAAAKgD8+bNi0mTJqWdS/e063TOP//8OOaYYyoNmK/rf/7nf6J9+/YZ50tKSmLRokVVrhcRcfnll8eyZctSxjbbbLP42c9+Vq06uS7dk8jX/++y1tKlS6tc4+qrr47i4uKy42233TYOPvjgGnaZWaYnu69atSreeOONOl8PAAAAAGhcBM0BAAAAAKAOvPHGGxmfHL799ttXqUZ+fn61100kEtGjR48Kz6nOE83HjRtXLoScl5cXF110URQWFla7v1zWunXrckHx5cuXx9y5c8ud+9VXX5Uba9q0abRu3Tpl7Lnnnos333yz7DgvLy/OPffcSCQSddT1dyr6uHv99dfrfD0AAAAAoHGp+iNRAAAAAACAjCZMmJBxbsCAAfW69pIlSzLOFRYWRtu2batUZ968eTFmzJhy4z/84Q9ju+22q2l7G9Q///nP+Nvf/hbTp0+PoqKiSCQS0bZt22jfvn30798/Bg0aFHvuuWe0bNmy0lp5eXmxzTbbxLvvvpsy/u9//ztOOeWUcmPr22abbVIC5CtWrIjrrrsu5Zzvf//70a9fv2q8wqrr0qVLdO7cOW0wvqKPVwAAAACACEFzAAAAAACoE5MmTUo73qxZs+jevXu9rbt48eKYMWNGxvl+/fpV+UnpV155ZSxevDhlrHv37nH66afXqscN6fnnny83tmLFipg9e3Z88sknMXbs2GjVqlV8//vfj5NPPrnSwPk+++xTLmh+5513RpcuXWK//faLkpKS+Pe//x2PP/54uWv33XfflOM77rgjvvnmm7Ljtm3bxqmnnlqdl1dtffr0SRs0nzFjRnz77bfRpk2bel0fAAAAAMhdedluAAAAAAAAcl1xcXFMnTo17VzPnj0jL6/+3o5/9NFHY9WqVRnn99tvvyrVefrpp2P8+PEpY4lEIi688MJo3rx5rXpsaJYsWRJ33313/PjHP45PPvmkwnMPP/zw6Nq1a8rYqlWr4rLLLos99tgj9t5777jxxhsjmUymnNO1a9c47LDDyo6//vrruPvuu1POOfXUU6Ndu3a1ezGV6N27d8a5Tz/9tF7XBgAAAABym6A5AAAAAADU0qxZs6KkpCTt3Poh5bo0Z86c+Otf/5pxvn379nH44YdXWmfRokVx9dVXlxv//ve/HzvttFOtemzIvvrqqzj11FMzfpNAxJon0l911VVRWFhY5bqFhYVx1VVXRbNmzcrGrr322pRvCOjbt28cccQRNWu8Grp06ZJxbubMmfW+PgAAAACQuwqy3QAAAAAAAOS6WbNmZZzr1KlTvay5bNmyGDVqVCxZsiTjOb/+9a+r9DTyq6++OhYuXJgy1rVr1zjrrLNq3WdDt3jx4vjFL34RDzzwQEowfF3bbLNN3HrrrXHeeefFjBkzKqzXvXv3+P3vfx9bb7112dgrr7wSL7/8ctlxIpGIc889N+VJ98uXL49HHnkkXn311fj8889j0aJF0bRp0+jSpUtsv/32cfDBB8e2225b7dfXuXPnjHMVfdwCAAAAAAiaAwAAAABALS1evDjjXMuWLet8veXLl8evfvWrmDhxYsZzjj766Nh3330rrfXSSy/FU089VW78ggsuqJfe60NhYWFss802sdVWW8X3vve9aNWqVaxYsSK++uqrePXVV2P69OkVXj9jxoz45z//Gccff3zGc/r37x//+te/4j//+U+MHz8+Jk2aVBbOb9++fWy99daxxx57xPDhw6Og4Lv//bJ69eq49tprU2oddNBBMWjQoLLjV199NUaPHh0LFixIOW/VqlWxZMmS+OKLL+Jf//pX7L///nHxxRdnDMSnU9E3GlT0cQsAAAAAIGgOAAAAAAC1tGLFioxzhYWFdbpWUVFRnHXWWfHf//434zm77757nH322ZXWWrJkSfz+978vN37IIYfELrvsUqs+61thYWHsueeeceCBB8aOO+6YMXx99tlnx2OPPRZ/+MMfYvny5Rnr3XvvvXHcccdFIpHIeE5BQUEccsghccghh1S5z7vvvju++uqrsuOWLVvGz3/+87Lj559/Ps4777woKSmptNbTTz8d33zzTfzlL3+Jpk2bVmn9ikLpFX3cAgAAAAAImgMAAAAAQD1KJpN1VmvOnDlxxhlnxBdffJHxnKFDh8ZVV10V+fn5ldYbM2ZMzJkzJ2WsU6dOVQqpZ9uTTz4Zbdq0qfS8RCIRhx56aHTo0CHOOuusjOfNnz8/Jk+eHP369auzHmfNmhV33HFHythPf/rT6NSpU9n86NGjqxQyX+ujjz6KP/3pT1X+O6rLjz8AAAAAYOOSl+0GAAAAAAAg11X01PJVq1bVyRrTp0+PESNGVBgy33XXXeOPf/xjlZ52PXHixHjkkUfKjf/mN7+pUoA726rb46677hq77757hee8//77teiovOuuuy7lKeqbb755/OhHPyo7vueee2Lp0qUp17Ro0SIuu+yyeOWVV2LcuHGx5557lqv70EMPxbx586rUw8qVKzPOVfS0cwAAAAAATzQHAAAAAIBaat26dca59YPENfHJJ5/EmWeeGQsWLMh4zn777Re/+93voqCgam/9r/8k84iInj17xrJly+KJJ57IeN26wen1TZkyJeXaFi1apA1KZ8see+wRL7/8csb5+fPn19lab7/9djz77LMpY6NGjSr7+0kmk/Hkk0+Wu+7MM8+M4cOHR0TEJptsEldccUX84Ac/iG+++absnFWrVsWzzz6bElrPZNmyZRnnWrVqVaXXAgAAAABsnATNAQAAAACglrp165ZxrqpPns7k3XffjV/+8pcVBtaPOuqoOOeccyIvr3Y/yHT69Olx8cUX1/j6F154IV544YWy4+9973sNKmjetWvXCucXLVpUJ+sUFxfH1VdfnTK2zz77xJAhQ8qOv/jiiygqKko5p0mTJnHwwQenjDVt2jSGDx8ed9xxR8r4+++/X6Wg+dy5czPOVfRxCwAAAAAgaA4AAAAAALXUtWvXyMvLi9LS0nJzs2fPrnHd8ePHx/nnnx8rV67MeM4pp5wSp5xySo3X2JhU9N8xIqJZs2Z1ss79998fX3zxRUrdX/7ylynnrPuE8rU23XTTaN68ebnxvn37lhtLd3066Z5cv9Ymm2xSpRoAAAAAwMapdo82AQAAAAAAomnTptGrV6+0c9OnT49kMlntmo899lice+65GcPReXl58Zvf/EbIvBomTpxY4XzHjh1rvca8efPi1ltvTRk78cQTyz09fPHixeWubdOmTdqa6cbTXZ/O1KlTM85ttdVWVaoBAAAAAGycPNEcAAAAAADqQL9+/VKeYr3WihUrYsaMGdGjR48q17rvvvtizJgxGQPqTZs2jUsvvTT23XffGvebbTvuuGPGud/+9rdx6KGHpp2bPn16jB8/Po4++uho2rRplddbvnx5jBs3rsJzevfuXeV6mdx4442xdOnSsuMePXrE8ccfX+68wsLCcmPFxcVpa65evbpK16fz+eefpx3fZJNNom3btlWqAQAAAABsnDzRHAAAAAAA6sDgwYMzzlX2JO113XLLLfHHP/4xY8i8ZcuWcf311+d0yLw2li9fHtdff30cccQR8dBDD8WyZcsqvWblypVx/vnnx7x58zKeU1hYGEOHDq1Vbx988EE88cQTKWNnn3122kB8+/bty4198803aeumG093/fpmz56d8TVX9PEKAAAAABDhieYAAAAAAFAndt5554xz7733Xuy///6V1vjTn/4Ud955Z4XnHH744TF37txygeaKDB06NDp27Jgytueee8Y777xT5RprHXrooRkD0T/96U9j5MiR1a5ZE7NmzYrf//73ceONN8Z+++0X//M//xODBw+ODh06lJ3z7bffxquvvhq33357TJ06tcJ6++yzTzRr1qzG/ZSWlsYf/vCHlG8Q2HXXXWPYsGFpz99qq60iPz8/SkpKysbmz58fU6ZMiS222CLl3DfffLPc9VtvvXWlPb333nsZ5yr6eAUAAAAAiBA0BwAAAACAOtG1a9fYaqut4tNPPy03V9VA94cffljpOffdd1+1e/vzn/9cLmjeWCxdujQefvjhePjhhyNizZPJ27dvH6tWrYqFCxdmfDL8upo1axann356rfoYO3ZsTJ48uey4SZMmMWrUqIznt2zZMgYNGhTvvvtuyvj1118fY8aMiYKCNf8L5/3334+XXnqp3PVVCYpPmDAh7XiTJk0EzQEAAACASgmaAwAAAABAHTnwwAPTBs2nTp0aX3/9dfTo0SMLXW1cVq5cGbNmzary+YlEIi644ILo2rVrjddctGhR3HLLLSljP/7xj2PTTTet8Lpjjz22XND89ddfjx//+Mex6667xoIFC+Lpp59Oeep5RETfvn1jxx13rLB2MpmMl19+Oe3cLrvsEm3atKnwegAAAACAvGw3AAAAAAAAjcXw4cMjPz8/7dyLL764YZuhUgUFBXHeeefFgQceWKs6N910UxQVFZUdd+3aNU466aRKr9tzzz1jr732Kjc+ZcqUuOuuu+LRRx+NlStXpsw1adIkLrzwwkprf/zxxzFv3ry0cwcddFCl1wMAAAAACJoDAAAAAEAd6dy5c+y5555p55544okN20wj1bFjx9hll10yBvqrasstt4w777wzjjjiiFrVmTRpUjzyyCMpY2eddVY0b968StdfcsklMWTIkCqdW1hYGJdffnlsvfXWlZ6b6eOta9eusccee1RpPQAAAABg41aQ7QYAAAAAAKAxOeaYY+K5554rN/7pp5/GZ599FltuuWUWumo8OnXqFDfccEMsWLAgXnzxxXj77bdjwoQJsWDBgkqvbdmyZQwZMiSOOOKI+J//+Z9IJBK16iWZTMYf/vCHKC0tLRvbcccdY//9969yjZYtW8YNN9wQ999/f/z9739P+zoSiUTsvPPOceaZZ8YWW2xRac3Vq1fHU089lXbuyCOPjIIC/3sIAAAAAKhcIplMJrPdBLDGzJkz47DDDks7N27cuNhkk002cEdsKHMXp/7421PvmRDTFyzLUjcAAFB3enZoEbf8eIeUsc6tC7PUDQBsOCeffHK8//775caPOuqo+PWvf73hG9oIzJ07N6ZPnx7ffPNNLFmy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3r3jtddei8MPPzzlSeU9evSIP//5z3H55ZenXH/ppZfGwoULa7w+AAAAAAAAAAAAADQGguZk1fLly+Pkk0+OZDIZERE///nPY6eddqpRrblz58aNN96YMnbrrbfGJptskvGa8847L4YNG1Z2XFRUFNdcc02N1gcAAAAAAAAAAACAxkLQnKy66KKL4vPPP4+IiJ49e8Zll11W41r3339/LFmypOx42LBhsc8++1R4TSKRKPcE9dtvv70s+A4AAAAAAAAAAAAAGyNBc7Lm7bffjuuuu67s+KabbopWrVrVuN4jjzyScjxixIgqXbfXXntF7969y45nzZoVb7zxRo37AAAAAAAAAAAAAIBcJ2hOVqxevTpGjBgRJSUlERFx1FFHxSGHHFLjekuWLImXXnopZWz//fev0rWJRCL23XfflLHHHnusxr0AAAAAAAAAAAAAQK4TNCcrrrzyyvjoo48iIqJdu3Zxww031Krexx9/HKtXry477t27d3Tr1q3K1++6664px++//36t+gEAAAAAAAAAgP/P3n3HSVXe+wP/zmwBpEszIIolAURjuZZEg53YiERjSfFGY48xltiuJZYkxtjLLzFeu4klaiwx9orkapTYchUQlSJSBJbe2TK/P7g7cHZnlu2N99uX++J5nnO+51nYOTtnzmeeAQBoywTNaXbjx4+PK6+8Mtu++uqr6xQKz2XChAmJ9jbbbFOn/atuX7UeAAAAAAAAAAAAAGxIBM1pVhUVFXHCCSfE6tWrIyJi+PDhcdJJJzW47sSJExPtgQMH1mn/qtt//vnnsXLlygbPCwAAAAAAAAAAAADaosKWngAblltuuSXeeuutiIgoLi6O22+/PVKpVIPrzpkzJ9HedNNN67R/v379orCwMMrKyiJiTSB+3rx5MWDAgAbPrbGUlZVl51cb6XQ60unc7yWpS5261C0vL49MJlOvuqlUKgoKCjaYuvn2BQCADUHV58vl5eWuNVqwbkVFRVRUVNSrbkREYWHul5daa92CgoKcr0Xkq1v9763qv0Hm//5PRa5XODI596mL5q27pmpbq7v2q7qtrW7+yq21bnt5LDtHrFt37Vd1W1td54j2VndN1bZWd+1XdTNRrXaOa7dqVV1rZNX1WqOhdTOZTM5/k9rKdx3eVHUjmu4epXufbbNua30sO0es4Ryx/rpt7THX1uq21sey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detW477Tpk2LV199tVkD3y1xzIb44osv6hwyr6qkpCTOOeecuP/++9e77csvv5x3hfpcPv300zjvvPNi9erV69125cqVcdNNNyX6Dj/88Pja175Wq2PlctRRR0VBQUG1/vfeey/eeeedetcFgMYkaA4AAAAAAAAAAGxQ/vd//zfee++9nGPrW82c5nfTTTfFCy+8kHd81apVce2111br79q1axx22GHx4x//OGcofPz48fHYY4+t9/h33313fPnll9l2jx494qc//WktZ59b3759Y4899sg5lmulcwBoCYLmAAAAAAAAAADABuWhhx7K2b/11lvHkCFDmnk2G550Oh29evWKXr16RSqVqtU+N9xwQyxbtizn2EsvvRTz5s1L9HXr1i3uv//+uPjii+OMM86I+++/P/bZZ59q+/7lL3+p8bjTp0+vtqL6z372s/Wuel8bI0eOzNn/9ttvx9SpUxtcHwAaStAcAAAAAAAAAADYYMybNy9effXVnGMHHnhgvet27tw5dtlllxgxYkS9a7SFY9bX5ptvHieddFL8+c9/jjfffDNeeOGFeOGFF+Kll16Kc845Jzp37lzj/vPmzcu7qvnYsWOr9X3ve9+LAQMGZNvpdDp+9rOfVQu2z5gxI2bOnJn3uNddd12sXr06295mm21i1KhRNc61toYPHx5dunSp1p/JZOKvf/1roxwDABqisKUnAAAAAAAAAAAA0FxefPHFKC8vzzm2995716pGQUFBfO1rX4ttt902tt122xg2bFhsscUWkU6n45133omXXnqpEWfccsdsDF//+tfjuOOOi+HDh+dcvbxHjx7xgx/8IHbbbbc48cQTY/HixXlr/eMf/4jDDz+8Wv/nn39erW/XXXet1jdo0KDo27dvzJ49u9r+/fv3z3m8//mf/8m2U6lUnH/++ZFON876rkVFRbH77rvHiy++WG3shRdeiLPOOisKC0X8AGg5fgsBAAAAAAAAAAAbjOeeey5n/2abbRaDBg2qVY3hw4fH8OHDG3FWrfOYDdG7d+/41a9+FQcffHCttt9yyy3jZz/7WVx11VV5t5k8eXLO/iVLllTr69OnT85t+/TpUy1ovmjRomrbrV69Oq6//vpE38iRI2PbbbfNO7/62HPPPXMGzRcsWBBvv/127LHHHo16PACoi8Z5axUAAAAAAAAAAEArV1JSEhMmTMg5tssuuzTzbNq36667rtYh80oHHHBAFBQU5B2fN29ezv7i4uJqfcuWLcu5ba7+Dh06VOv785//HNOnT8+2u3TpEj//+c/zzq2+dt5557xj//jHPxr9eABQF4LmAAAAAAAAAADABuGtt96KTCaTc2zHHXds5tm0bzUFxvPp0qVL9OjRI+94vn+7jTfeuFrfF198Ua2vtLQ0vvzyy2r9vXr1SrS//PLLuOeeexJ9p5xySs7jNFTv3r1j4MCBOcf++c9/NvrxAKAuBM0BAAAAAAAAAIANwrvvvpt3bNiwYc04E/LJtxJ5RETfvn1z9m+//fbV+p544olqfc8//3ysWLEi0VdcXByDBw9O9N14442xcuXKbHurrbaKI488ssZ5N0S+n70ZM2bkDMYDQHMRNAcAAAAAAAAAADYIEyZMyNnfsWPHGDBgQDPPhqqmTJmSCHhXte222+bs32+//ar1vfvuu3H99ddHSUlJrFq1KkaPHh033XRTte2GDx8eHTp0yLbHjh0br7zySmKb8847LwoLC2v5XdTdVlttlXcs388sADSHpvvtBwAAAAAAAAAA0EqUlZXFlClTco5tttlmkU5bs7OlPf744zWOjxgxImf/1ltvHfvuu2+8+uqrif6HHnooHnroobz1CgoK4vjjj8+2y8rK4rrrrqt2zJ133nl9U2+QLbbYIu/YJ598Evvss0+THh8A8vHsCAAAAAAAAAAAaPe+/PLLKC8vzznWr1+/Zp4NVU2cODEeeeSRvONbbbVVDB8+PO/4xRdfHJtuummdjnn22WfH4MGDs+2//OUvMXny5Gy7U6dOcdZZZ9WpZn307ds379jMmTOb/PgAkI8VzQEAAAAAAAAAgHbvyy+/zDvWu3fvZpwJVZWUlMT555+f940ABQUFcckll0Qqlcpbo3v37nHPPffExRdfHGPHjq3xeJ07d47zzjsvRo4cmZjDHXfckdju+OOPT7wJIZPJxCuvvBKvvvpqjBs3LubPnx+ZTCY23njjGDZsWOy7776x//771zjPXPr06ZN3rKafWwBoaoLmAAAAAAAAAABAu7dkyZK8Y507d27GmbCu+fPnx+mnnx4zZszIu83Pf/7z2G677dZbq2fPnnHrrbfG2LFj4/nnn48PPvgg5s2bF6tWrYru3bvHFltsEd/4xjfisMMOi+7duyf2veWWW2LZsmXZ9mabbRbHHHNMtj19+vS44IILYuLEidWOO3PmzJg5c2a89NJLcc8998Q111xTp9XVO3XqlHespp9bAGhqguYAAAAAAAAAAEC7t3LlyrxjHTp0aMaZUGnmzJlx+umnx7Rp0/Juc8QRRyQC37Wx6667xq677lrr7f/973/Hc889l+j7xS9+EUVFRRGxJmR+3HHHxcKFC9db65NPPonjjjsu7r333lqHzTt27Jh3rKafWwBoaumWngAAAAAAAAAAAEBLymQyLT2FDc6kSZPihBNOqDFkPnLkyLjggguadB4VFRVxzTXXJH4Ghg8fHt/61rey4xdeeGGtQuaVFi5cGBdeeGFUVFQ09nQBoFkJmgMAAAAAAAAAAO1eTauWr169uhlnwocffhgnn3xyzJ07N+82hx12WFx66aWRSqWadC6PPfZYTJw4MdsuLi6Oc845J9t+/fXXY8KECdX2O/HEE+Pll1+OV199NU4++eRq4xMmTIgxY8bUag41rVpe02rnANDUBM0BAAAAAAAAAIB2r2vXrnnHli1b1owz2bC99dZbcdppp8WiRYvybvOjH/0oLr744kinmzbetnDhwrjtttsSff/5n/8Zm266abb97LPPVttvxIgRceqpp0aPHj2iW7ducfLJJ8eIESOqbffMM8/Uah7Lly/PO9alS5da1QCApiBoDgAAAAAAAAAAtHubbLJJ3rGSkpJmnMmG66WXXoqzzz47VqxYkXeb008/Pc4+++xmmc8f/vCHROB9k002iZ/85CeJbd5///1q+333u9+t1jdq1KhqfR988EGt5lHTyu41/dwCQFMrbOkJAAAAAAAAAAAANLV+/fpFOp2OioqKamOzZ89ugRltWB577LG4+uqrc/79R0QUFBTERRddlDOw3RTGjx8ff/vb3xJ9Z511VnTs2DHbXrFiRSxcuLDavoMHD65V34IFC2LlypWJmrnMmTMn71j//v1r3BcAmpIVzQEAAAAAAAAAgHavuLg4Bg0alHNs2rRpkclkmndCG5C77747rrrqqrwh8w4dOsQ111zTbCHzTCYT11xzTWI+u+66a+y///6J7ZYsWZJz/65du1br69atW85t89VY15QpU/KOfe1rX1vv/gDQVKxoDgAAAAAAAAAAbBCGDBkSkydPrta/cuXKmDFjRmy66aYtMKvW6+STT4733nsv59jIkSPj8ssvr3H/TCYTN954Yzz44IN5t+nSpUvceOONseOOOzZkqnXy97//PT766KNsu7CwMM4777xq23Xo0CHn/mVlZVFQUJDoKy0tzbltvhrrmjRpUt6xoUOHrnd/AGgqVjQHAAAAAAAAAAA2CDvttFPesfHjxzfjTNq/8vLyuOKKK2oMmffu3TvuuOOOZg2ZL126NH7/+98n+o4++ujYYostqm3btWvXaoHyiIhZs2ZV6/vyyy+r9RUWFuZc/byqcePG5ezv379/fOUrX1nv/gDQVKxoDgAAAAAAAAAAbBC++c1v5h17//3349vf/nat6qxYsSJee+21nGNTpkypcd/Ro0dHjx49co7ts88+0alTp1ZzzIb45S9/GS+++GLe8YKCgjjiiCPi008/jU8//bTWdRs639tuuy3mz5+fbffq1StOPvnknNum0+kYMmRItSD4W2+9FYMGDarWV9WQIUMilUrVOJ+SkpKYPn16zrFvfOMbNe4LAE1N0BwAAAAAAAAAANgg9OvXL772ta/FJ598Um3snXfeqXWdBQsWxKWXXlqvOdxwww15x5566qm8IeqWOGZDfPjhhzWOl5eXx2233Vbnug2Z72effRaPPvpoou+MM86Izp07591n9913rxY0/9Of/hQjRoyIXr16RcSaf5s///nP1fat6Y0NlWr6udtzzz3Xuz8ANCVBcwAAAAAAAAAAYINx0EEH5QyaT5kyJaZPnx6bbrppC8yK5nDNNddEeXl5tv31r389Dj744Br3+d73vhf33XdfrF69Ots3Z86c+OEPfxgjRoyIVCoVL730UpSUlCT269ChQxxxxBHrndPrr7+es79Hjx5WNAegxaVbegIAAAAAAAAAAADN5cADD4yCgoKcY6NHj27eydBsnn/++Xjvvfey7XQ6Heeff36kUqka9+vdu3ecccYZ1frnzZsXf/nLX+Khhx6qFjKPWLNSeuWK5/mUlpbGm2++mXPs29/+dhQWWkcWgJYlaA4AAAAAAAAAAGww+vTpE3vvvXfOsWeffbZ5J0OzWL58edxyyy2JvsMOOyyGDBlSq/2///3vx49//ONaH+/HP/5xHH300evdbsyYMbFs2bKcY0ceeWStjwcATUXQHAAAAAAAAAAA2KD84Ac/yNn/ySefxKefftrMs6Gp3XnnnTFnzpxsu3v37nHaaafVqcYZZ5wR119/fWy99dZ5t9lyyy3juuuuy7kCei5PP/10zv5vfOMbscUWW9RpfgDQFHy2BgAAAAAAAAAAsEHZYYcdYocddogPPvig2tjjjz8eF1xwQY379+/fP955550mml3rOebtt99e733//ve/N+JM6q+8vDy6du0aJ510UrZv++23j+7du9e51l577RV77bVXTJ06NT766KOYN29eRERsvPHGse2229YpHD579ux48803c44de+yxdZ4bADQFQXMAAAAAAAAAAGCDc/LJJ+dc1fqZZ56J0047Lbp27doCs6KxFRQUxE9+8pNGrTlo0KAYNGhQg2o8+uijUV5eXq1/p512il122aVBtQGgsaRbegIAAAAAAAAAAADNbdddd42ddtqpWv/y5cvj8ccfb4EZsaFYsWJFPPHEEznHTj311GaeDQDkJ2gOAAAAAAAAAABskH7xi19EOl09QvXAAw/EypUrW2BGbAgeffTRWLRoUbX+ffbZJ+ebHwCgpQiaAwAAAAAAAAAAG6QhQ4bEyJEjq/XPnz8/Hn300RaYEe3dypUr4/7776/WX1RUFGeeeWYLzAgA8its6QkAAAAAAAAAAAC0lEsvvTQuvfTSlp4GG4iOHTvGiy++2NLTAIBasaI5AAAAAAAAAAAAAAAJguYAAAAAAAAAAAAAACQImgMAAAAAAAAAAAAAkCBoDgAAAAAAAAAAAABAgqA5AAAAAAAAAAAAAAAJguYAAAAAAAAAAAAAACQImgMAAAAAAAAAAAAAkCBoDgAAAAAAAAAAAABAgqA5AAAAAAAAAAAAAAAJguYAAAAAAAAAAAAAACQImgMAAAAAAAAAAAAAkCBoDgAAAAAAAAAAAABAgqA5AAAAAAAAAAAAAAAJguYAAAAAAAAAAAAAACQImgMAAAAAAAAAAAAAkCBoDgAAAAAAAAAAAABAgqA5AAAAAAAAAAAAAAAJguYAAAAAAAAAAAAAACQImgMAAAAAAAAAAAAAkFDY0hNgw5PJZGLq1Knx4YcfxvTp02PhwoXRoUOH6NmzZ3z1q1+NXXbZJTp27Niox1yyZEm88cYb8cknn8TixYujU6dOsfnmm8fuu+8e/fv3b9RjAQAAAAAAAAAAAEBbJ2hOs1iwYEE8+eST8fzzz8err74aJSUlebctKiqKQw45JM4666zYa6+9GnTcKVOmxKWXXhqPPPJIrF69utp4KpWKvfbaK6644orYc889G3QsAAAAAAAAAAAAAGgv0i09Adq/n/3sZ7HJJpvE8ccfH4888kiNIfOIiNLS0njyySdj7733jmOPPTYWL15cr+M+8sgjse2228b999+fM2QesWZ19dGjR8fee+8d//Vf/xWZTKZexwIAAAAAAAAAAACA9sSK5jS5t99+O2fQu6CgIL7yla9Ev379orS0ND7//PNYtGhRYps//elP8fHHH8crr7wSXbp0qfUxH3300fjBD34QFRUVif4+ffrEwIEDY86cOTFjxoxssDyTycTVV18dq1atihtvvLEe3yUAAAAAAAAAAAAAtB9WNKdZ9ejRI0477bR45plnYsGCBfHFF1/EO++8E//+979j3rx58dprr8Xw4cMT+4wdOzaOO+64Wh9j0qRJ8ZOf/CQRMt9+++3j1VdfjTlz5sS7774bX3zxRUyYMCEOP/zwxL433XRTPP744w36HgEAAAAAAAAAAACgrRM0p1kMGjQo7rzzzpg5c2b84Q9/iIMPPji6du2a2KagoCD23nvveO211+Lkk09OjD322GPx2muv1epYv/zlL2PZsmXZ9i677BJjxoyJffbZJ7Hd4MGD469//Wu1Y51//vlRVlZWl28PAAAAAAAAAAAAANoVQXOa3BVXXBETJ06ME044ITp16rTe7QsKCuLWW2+NnXfeOdF/5513rnffcePGxcMPP5xtFxcXx3333RfdunXLuX0qlYqbb745vvrVr2b7Jk2aFPfcc896jwUAAAAAAAAAAAAA7VVhS0+A9u+QQw6p8z4FBQVx/vnnx1FHHZXte+GFF9a739133x0VFRXZ9ve///0YOnRojft07Ngx/uu//itOOOGEbN+dd94ZJ510Up3nDQAAAAAAAEDLKllR0tJTAACAZtG7U++WngLtnBXNabWGDx+eaM+bNy+WL19e4z5PPfVUor1ueLwmRx99dHTu3Dnb/te//hUzZ86s5UwBAAAAAAAAAAAAoH0RNKfV6tmzZ7W+RYsW5d1+4sSJ8dlnn2XbnTt3jt13371Wx6q6bSaTiWeeeaYOswUAAAAAAAAAAACA9kPQnFZrxowZ1fp69eqVd/sPPvgg0d51112jsLCw1sfbY489aqwHAAAAAAAAAAAAABuK2qdwoZn94x//SLQ333zzKC4uzrv9hAkTEu1tttmmTserun3VegAAAAAAAAC0PdeMvSZmL5/d0tMAAIAG6bdRvzh/1/NbehpsYATNabXuvvvuRPvggw+ucfuJEycm2gMHDqzT8apuX7UeAAAAAAAAAG3P7OWz44slX7T0NAAAANocQXNapWeffTbGjBmT6DvuuONq3GfOnDmJ9qabblqnYw4YMCDRnjt3bp32b2plZWVRVlZW6+3T6XSk0+m8teqrprrl5eWRyWTqVTeVSkVBQcEGUzffvgAAsCGo+ny5vLzctUYL1q2oqIiKiop61Y2IKCzM/fJSa61bUFAQqVSq1nWr/71V/TfI/N//qahetXLr+v27rdG8dddUbWt1135Vt7XVzV+5tdZtL49l54h16679qm5rq+sc0d7qrqna1uqu/apuJqrVznHtVq2qa42sul5rNLRuJpPJ+W9SW/muw5uqbkTT3aMsKytb7723zP/9V1X+R8ba/epD3aatu77a6qrbHHUbUlvdpq27vtrqqtscdRtSW92mrbu+2m2tbkTu+2614Vqj5erW955fvuvZpiZoTqszf/78OOWUUxJ93/3ud2PXXXetcb+lS5cm2p07d67TcatuX1paGqtWrYoOHTrUqU5Vc+bMqXVovabtPv3001iwYEGtjztgwIDo3bt3zrGJEyfW+yTYr1+/2GSTTXKOffbZZ7Fy5cp61e3du3e1sH+lqVOnVvv3ra3u3bvHoEGDco598cUXsWjRonrV7dKlS2y11VY5x7788ssoKSnJu2+HDh1y7LvuL47cTw4qKiqivKJ+v2xTkarxhdP61o2IKCosytmfyVREWQOeHOSvm4my8vr/Ei8sKMz7JKkp6kZElJaVNqBuQaRSuZ90NKRuQbqgxidJ9X2C21R10+l0FKTzB64qMvV7kT6dStcY5GqSuhXl9b6p0FSPZeeItZwj1nCO+L+6zhFNWjfCOWJ9dSPaxzlizd9Nptp265o0aVL06NHDtUY07FqjJh07dozBgwfnHJszZ07Mnl2/jw8vLCyMYcOG5RybP39+zJgxo151IyK23377nP2LFy+Ozz//vN51hw0blvO8tnz58pg0aVKiL9f1W2GVX1dl5WURZWX/VzN3lKshL0QW5D1HNLRu/nNEw144LYiCvOeI8qhvMKrm3/dl9X4TRlPVTaXSUVjjm0bq+fs+lYrCgny/lxvwPKKJ6kakoqjGIFfTPI9oyM2KfI/lNTdBGvD73jkiIpwjKjlHZCs7R6ynrnPEunWdI9bUbcJzRHlZ9ee6Oa7dVq1alehzrbFWXa416mLw4MHRsWPHav2rVq1q0Cc0b7XVVtGlS5dq/eXl5TFu3Lh61918882jR48eOccaUreme59Tpkypfo1e9ee5tCzKSqufo9IF+R/LZWUNPEfkeSyXlZdFpqLx65aXN+D3fTr/OaJBdVP5X1ssryiPivLGr1tR0bDf90VFuZ9HNLRuYVFhzpBYJtOw38uFhTW8ZtkUdSOT87FUWwUFNby22ER1y8vqv3iDc8QazhFrOUesp65zRJZzRCPUdY7IyneOiIiITO2u3XJxrbFGW8pZ5ruebWqC5rQqFRUVccwxx8T06dOzfd27d49bbrllvftWDQfkOgnWpFOnTjlrNjRofuutt8YVV1xRq22Li4tju+22a9DxAAAAAAAAAAAAAKChcr9VB1rIeeedF88991yi77//+79j4MCB69236js8iouL63TsXIHyFStW1KkGAAAAAAAAAAAAALQHgua0GrfcckvccMMNib7zzz8/jj766FrtX3UF89WrV9fp+Lk+LqKuq6IDAAAAAAAAAAAAQHuQymQymZaeBDz44INxzDHHxLo/jscdd1zcfffdkUqlalVjt912i7Fjx2bbTzzxRHz3u9+t9Rzmz58fvXr1SvStWLGiwWHzOXPmxNy5c2u17dy5c+Pcc8/NOfb4449H//79a33cdDod6XTu95KUlZXVuk5d6paXl0d9TympVCoKCgo2mLpV9y1ZmnxjxE/vfzemzV9er7kBAEBrstnGG8Ufj/mPRF/vLslPoCovL3et0YJ1KyoqoqKiol51IyIKCwvbVN2CgoKcrzXkq1vt723ZnGT74R9HLJgSEanI9QpGZp2v9dO8dddUbWt1135Vt7XVzV+5tdZtL49l54h16679qm5rq+sc0d7qrqna1uqu/brB1+05KOLoPyUHOvdNNMvLy6tXda2RVddrjYbWzWQyOf9NaivfdXhT1Y1ounuUZWVl1X4O562cl2j/YvQv4oslX1TbN/8jY436nn/Ubdq666utrrrNUbchtdVt2rrrq62uus1RtyG11W3auuur3drrDuw6MK7f+/rEeK+OycxjbZ/Pu9Zoubr1veeX73q2qbXMUWEdTz/9dBx77LGJB87hhx8ed955Z61D5hERXbp0SbSXLVtWp3lU3b6wsLBRVjTv27dv9O3bd/0bRsTMmTPzjhUWFjbaiaKpTjj5XkhUFwAAWFfVa731XaO0tefuba1uTS90qZtL1dcqUjn6qm5d+9c3aqup6q6p2tbqrv2qrrrqNm3dNVXbWt21X9VVV92mrbumaluru/arujme19bx2q2qln/u3r7rplKpJrnn11R1I5ruHmVt6qb+77+6anvnNXXVVbe56jZlbXXVVbft123K2uqqW612A6/dctVzrdG0ddtavrDxr2ihDl577bU48sgjE+/8GDFiRDz00EN1fjBVDXNPnz69TvvPmDEj0e7Tp0+d9gcAAAAAAAAAAACA9kLQnBbz9ttvx6GHHhorV67M9u2+++7xxBNPRHFxcQ175jZ48OBEe9q0aXXav+r2Q4YMqfMcAAAAAAAAAAAAAKA9EDSnRfzv//5vHHTQQbF06dJs34477hjPPvtsdO7cuV41qwbDx48fX6f9J0yYUGM9AAAAAAAAAAAAANhQCJrT7CZOnBgjRoyIBQsWZPuGDh0aL7zwQnTv3r3edXfYYYdE+1//+leUlZXVev833nijxnoAAAAAAAAAAAAAsKEQNKdZff7557H//vvHnDlzsn1bbLFFvPTSS9GnT58G1R4yZEhstdVW2fayZcvizTffrNW+y5Yti3/+85/ZdiqVipEjRzZoPgAAAAAAAAAAAADQVgma02xmzZoV++23X0yfPj3bN2DAgHjllVdiwIABjXKMQw89NNG+6667arXfww8/HEuXLs22d9555+jfv3+jzAkAAAAAAAAAAAAA2hpBc5rF/PnzY8SIETFp0qRsX58+feKll16KLbbYotGOc/zxx0cqlcq2//KXv8SECRNq3GflypXxu9/9LtF3wgknNNqcAAAAAAAAAAAAAKCtETSnyS1ZsiQOPPDAGDduXLavR48e8eKLL8bQoUMb9VjbbrttHHXUUdn26tWr49hjj43Fixfn3D6TycRZZ50Vn376abZvyy23jOOPP75R5wUAAAAAAAAAAAAAbUlhS0+A9u/QQw+Nf/3rX4m+X/ziF1FSUhIvv/xynWr9x3/8R/Ts2bPGbX7zm9/E3//+91i+fHlERPzrX/+KPffcM2666abYe++9s9t98sknceGFF8bjjz+e2P93v/tdFBUV1WleAAAAAAAAAAAAANCeCJrT5EaPHl2t79JLL61Xrddeey0RFs9l6623jrvuuit++MMfRiaTiYiIf//737HPPvtEnz59YrPNNos5c+bE9OnTs+OVfv7zn8eRRx5Zr7kBAAAAAAAAAAAAQHshaE679P3vfz8ymUyccMIJsWLFimz/3LlzY+7cuTn3Offcc+Oaa65prikCAAAAAAAAAAAAQKuVbukJQFP5wQ9+EB999FH88Ic/jKKiorzb7bnnnjF69Oi49tprI5VKNeMMAQAAAAAAAAAAAKB1sqI5TS6TybTYsbfccst44IEH4o9//GP8z//8T3z66aexZMmS6NixY2y22Waxxx57xIABA1psfgAAAAAAAAAAAADQGgmas0Ho1q1bHHzwwS09DQAAAAAAAAAAAABoE9ItPQEAAAAAAAAAAAAAAFoXQXMAAAAAAAAAAAAAABIEzQEAAAAAAAAAAAAASBA0BwAAAAAAAAAAAAAgQdAcAAAAAAAAAAAAAIAEQXMAAAAAAAAAAAAAABIEzQEAAAAAAAAAAAAASBA0BwAAAAAAAAAAAAAgQdAcAAAAAAAAAAAAAIAEQXMAAAAAAAAAAAAAABIEzQEAAAAAAAAAAAAASBA0BwAAAAAAAAAAAAAgQdAcAAAAAAAAAAAAAIAEQXMAAAAAAAAAAAAAABIEzQEAAAAAAAAAAAAASBA0BwAAAAAAAAAAAAAgQdAcAAAAAAAAAAAAAIAEQXMAAAAAAAAAAAAAABIEzQEAAAAAAAAAAAAASBA0BwAAAAAAAAAAAAAgQdAcAAAAAAAAAAAAAIAEQXMAAAAAAAAAAAAAABIEzQEAAAAAAAAAAAAASBA0BwAAAAAAAAAAAAAgQdAcAAAAAAAAAAAAAIAEQXMAAAAAAAAAAAAAABIEzQEAAAAAAAAAAAAASBA0BwAAAAAAAAAAAAAgQdAcAAAAAAAAAAAAAIAEQXMAAAAAAAAAAAAAABIEzQEAAAAAAAAAAAAASBA0BwAAAAAAAAAAAAAgQdAcAAAAAAAAAAAAAIAEQXMAAAAAAAAAAAAAABIEzQEAAAAAAAAAAAAASBA0BwAAAAAAAAAAAAAgQdAcAAAAAAAAAAAAAIAEQXMAAAAAAAAAAAAAABIEzQEAAAAAAAAAAAAASBA0BwAAAAAAAAAAAAAgQdAcAAAAAAAAAAAAAIAEQXMAAAAAAAAAAAAAABIEzQEAAAAAAAAAAAAASBA0BwAAAAAAAAAAAAAgQdAcAAAAAAAAAAAAAIAEQXMAAAAAAAAAAAAAABIEzQEAAAAAAAAAAAAASBA0BwAAAAAAAAAAAAAgQdAcAAAAAAAAAAAAAIAEQXMAAAAAAAAAAAAAABIEzQEAAAAAAAAAAAAASBA0BwAAAAAAAAAAAAAgQdAcAAAAAAAAAAAAAIAEQXMAAAAAAAAAAAAAABIEzQEAAAAAAAAAAAAASBA0BwAAAAAAAAAAAAAgQdAcAAAAAAAAAAAAAIAEQXMAAAAAAAAAAAAAABIEzQEAAAAAAAAAAAAASBA0BwAAAAAAAAAAAAAgQdAcAAAAAAAAAAAAAIAEQXMAAAAAAAAAAAAAABIEzQEAAAAAAAAAAAAASBA0BwAAAAAAAAAAAAAgQdAcAAAAAAAAAAAAAIAEQXMAAAAAAAAAAAAAABIEzQEAAAAAAAAAAAAASBA0BwAAAAAAAAAAAAAgQdAcAAAAAAAAAAAAAIAEQXMAAAAAAAAAAAAAABIEzQEAAAAAAAAAAAAASBA0BwAAAAAAAAAAAAAgQdAcAAAAAAAAAAAAAIAEQXMAAAAAAAAAAAAAABIEzQEAAAAAAAAAAAAASBA0BwAAAAAAAAAAAAAgQdAcAAAAAAAAAAAAAIAEQXMAAAAAAAAAAAAAABIEzQEAAAAAAAAAAAAASBA0BwAAAAAAAAAAAAAgQdAcAAAAAAAAAAAAAIAEQXMAAAAAAAAAAAAAABIEzQEAAAAAAAAAAAAASBA0BwAAAAAAAAAAAAAgQdAcAAAAAAAAAAAAAIAEQXMAAAAAAAAAAAAAABIEzQEAAAAAAAAAAAAASBA0BwAAAAAAAAAAAAAgQdAcAAAAAAAAAAAAAIAEQXMAAAAAAAAAAAAAABIEzQEAAAAAAAAAAAAASBA0BwAAAAAAAAAAAAAgQdAcAAAAAAAAAAAAAIAEQXMAAAAAAAAAAAAAABIEzQEAAAAAAAAAAAAASBA0BwAAAAAAAAAAAAAgQdAcAAAAAAAAAAAAAIAEQXMAAAAAAAAAAAAAABIEzQEAAAAAAAAAAAAASBA0BwAAAAAAAAAAAAAgQdAcAAAAAAAAAAAAAIAEQXMAAAAAAAAAAAAAABIEzQEAAAAAAAAAAAAASBA0BwAAAAAAAAAAAAAgQdAcAAAAAAAAAAAAAIAEQXMAAAAAAAAAAAAAABIEzQEAAAAA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vhcnnnhibLLJJsLmAAAAjez111+PK6+8Ml5++eWIyH3dVnmNVjWEUFhYGKWlpdGpU6c48MAD49hjj41DDz00sR8AAACNY+zYsXHdddfFX//614iIbGC88n5b1ftulUH0yvbw4cPjxBNPjEMOOSQ23nhj990AgDoTNAcAoNGMGTMmLrvssnj99dcjIrIvZuVSNbRQuXJeJpOJ7t27xw477BB33HFHbL311l70AgAAaCRvvfVWXHTRRTF69OiIiOzqd+ten60bNI+Iav3pdDq7cl7//v3j0ksvjRNOOCGxDQAAAA0zZsyYuPzyy7PXb5VvEq4a9ap6zRaRvO82cODA2GeffeLXv/51DBw40H03AKBOBM0BAGgU7733XlxwwQXxyiuvRMTasEJEVAso5HoKWvmR7OuuwjBgwIB48cUXY+jQocIKAAAADTR16tQ466yz4qmnnoqI5Ep4leHxSpXXX+tew617XZZKpbLXfBtttFFceeWVceaZZ1bbDgAAgLp755134sILL8x53y2fqm8gXve+W2FhYey2225x3333xZZbbilsDgDUmmcMAAA02OLFi+P6669PvNi1bhChcsWEiEj8uWqwfN1gelFRUcyYMSO+9a1vxRtvvJE3oA4AAEDt3HrrrTlD5plMJrp06RKDBg2K3XbbLbbffvtsf0VFRRQWFlZb5byioiJSqVSkUqlYvnx5nH322XHVVVdFRP43GAMAALB+8+bNi+uuuy7vfbd1761VXcU833238vLyeOONN2LkyJHxySefZFc8BwBYHyuaAwDQYNdee21ccMEFEVE9rDB48OAYOnRo7LffflFaWhpPP/10TJs2LT777LPsR66v+zHt674gVlRUFKtXr44ePXrE3/72txg+fLgVFgAAAOrhscceiyOPPDIi1n7cesSaUMI3vvGN+OlPfxqjRo2Kbt26RUTEgw8+GKNHj44777wz5z6VUqlUFBQURFlZWURE3HDDDXHWWWdlt7OyOQAAQN389re/jUsuuSQiqt9322qrrWLQoEGx5557xvLly+PZZ5+N2bNnx5w5c9Z7363yk6z69esXo0ePjsGDB7vvBgCsl6A5AAAN8tZbb8XIkSNj/vz51YIH3/zmN+OXv/xlDB8+PDp37hwREUuWLImJEyfGtddeG48++mj2Ra6qqyxUvuhVWFgYpaWl0bNnzxgzZkwMGzbMi14AAAC1VFFREatWrYpTTjklHnjggWwovPJabMiQIXHDDTfEvvvuG8XFxVFaWhpFRUUREbF06dL429/+FieffHKsWLEiIiLxMezrhsgr63bo0CFuueWWOOmkk5r/mwUAAGjjXn/99TjkkENi+fLlOe+7XXjhhbHXXntF165dIyKipKQk+ybhF198sdqbffPdd/vqV78azz33XGy55ZbuuwEANfIsAQCAeqn8OL133303li5dml0FIWLNi1W9evWK0047LfbZZ5/o3Llz9iPXu3btGjvvvHM8/PDD8ctf/jK+8pWvZOut+yJWZei8tLQ0iouLY8GCBfHtb387Pv30Ux/nBwAAUEvpdDrmz58fzz//fGQymSgvL8+uchcRsdtuu8Vee+0VxcXFEbHmk6UqgwhdunSJH/3oR/HCCy/Etttumx1LpVLZoHrl/+Xl5ZFOp2PVqlVx+eWXx+OPP95i3zMAAEBbU3nf65///GeUlpZGOp3OfnJURET//v3jjDPOiBEjRkTXrl2z99169+4dRxxxRDz55JNxyimnJK7T1g2dV17nlZaWRkFBQXz66adxzDHHxLRp07KLQQEA5CJoDgBAvaTT6SgtLY277rorVq9enXixqqKiIjbZZJP4zne+Ex06dIiISAQZKgPpV1xxRVx22WWx8847Z/sLCgqqrbZQuaLerFmz4thjj42ZM2d60QsAAKCW3nrrrSgpKcmGyde9lho5cmR06tQpe50WEdXCCN/61rfivvvui/322y822mijqKioyIbN11VZd/bs2XHXXXfFuHHjmvLbAgAAaDfS6XSsWLEi7rnnnigtLY2I5CdKDRw4MA466KCc990ymUx07Ngx/vjHP8avfvWr6N+/f0SsXeSp6idTVV7TjR07Ni644IIoKSmpdn0HAFBJ0BwAgHpbvnx5zJs3L4qKirIrLVS+ELXddttFt27dYvXq1dX2KygoyG5/0kknxUUXXRT77rtvRER2FbxKlfUqP9r9ww8/jD/84Q+xdOlSL3oBAADUwsSJEyNizZt4K8PglcHy2bNnR8Sa67RcKq+7dtxxx7j22mvjoIMOiq5duybC5utem1V+AtVrr70Wzz77bESENwkDAADUQklJSSxYsCCKi4uz11GV98y++c1vRrdu3RKrnFdKpVLZa7xLLrkkLrnkkhgyZEhERPbaLZeKiooYM2ZMPPHEE9lwOwBAVYLmAADU2+TJk+OLL77IhsYrP4ovIuLjjz+OlStXZlfMq6oyfBAR8d3vfjfOPffcOOSQQyKi+srm64YSli1bFk899VS89957EbH2owQBAABIqryWWrx4cUQkw+QFBQWRTqfj008/jYjIGVaoatiwYfGb3/wmvvOd70SXLl0SgYV1P569oKAgVq5cGVdccUW8++67kUqlhM0BAADW45NPPomSkpIoLy/PXkNV3gf78MMPo7S0NAoLC3Puu+4iT6eeemqcf/75seOOO2ZrVF3ZPGJNQH3WrFlx7733xqxZsxLHAwCoJGgOAEC9VQYRKioqEqGBdDodJSUlMX78+IiIxEewryudTmf3O/DAA+Oss86Kgw8+OLvPuuOVH+eXSqVi3LhxcfPNN2drAAAAkF9lwLwyWFD5UekVFRVx//33x+effx6FhYW1CoMPHjw4LrnkkjjggANio402qvbpVhFrrhGLiopi+fLlcdVVV8WSJUt8IhUAAMB6VN53W/feWKU5c+bEkiVLIiJ/GHzdRZ6OO+64OOecc2KHHXbI7rPum4DXve/2z3/+My6//PJsDQCAdXl2AABAvW200UZRVFQUxcXFiY9Lr6ioiOnTp8ftt98eEWtCDfkCC+u+qLXffvvF6aefHvvtt19ErA2br1u3sv3UU0/FX/7yl6b+FgEAANqsymupTTbZJCIiSktLE9dmRUVFMW/evLjkkkti0aJFtQ6DDxkyJC6//PLYa6+9oqioKLEaXuWq5pUBiXHjxsWMGTMiIqxqDgAAUIPKkHdRUVHivlvEmhXNb7jhhux2+a6v1g2b//CHP4wzzjgjhg4dGhFrw+a57ru99NJLMWbMmCb73gCAtkvQHACAett8882jV69esWrVqkR/5Wp5d999d9x5550RETV+VPq6YwceeGCcfvrpscsuu0REclWGylX3KvvHjh3buN8QAABAOzR48OBIpVJRUFCQ+Kj0yjD4mDFj4rHHHovVq1fXuuawYcPiN7/5TTawUHkduG4QIpVKxcSJE7NvQraqOQAAQH5Dhw6Nrl27Jt4knMlkstdbDz30UDz11FMRUfP1VdWVzc8444zo379/te0q77tlMpmYMWNGvPXWW439LQEA7YCgOQAA9VJeXh5FRUWx5ZZbRsTaVcszmUx2RYTy8vJ44IEHsisg1PSi17ph81GjRsVJJ52UfdFr3SBE5Uf5ZTKZ+O///u/45JNPmvLbBAAAaPN22223GDRoULWPYa/0xRdfxJ133hljx46t06rjO+64Y/z+97+PTp06RVlZWRQWFib2r1wZb/LkyY3zjQAAALRTFRUVsdFGG8XGG28cFRUViU8LrgyNT506NR555JH4+OOP11tv3bD5KaecEj/96U8TYxFr77tVBtlvvvnm+PLLLxv1+wIA2j5BcwAA6qWgoCA6dOgQhxxySERElJWVZT9ub90w+JgxY+Kee+6JiRMnrrfmuiuWn3jiiXHSSSdFRHK1hog1L6gVFhZGUVFRlJSUNMF3BwAA0D5UfhT617/+9YiIKCwszI5lMplswOCtt96K3/72tzF16tRa185kMvGtb30r7rrrroiIKC0trXbtlslk4vXXX49JkyY1wncDAADQPqXT6dh4441j1KhRERHZe22V99sqg+cPPfRQ3H///bFw4cJa1ay873bxxRfHqaeeml0wqvKNwRFrFpdKp9NRWloaS5cubbLvEQBomwTNAQBokJ122il69OiReEGq6otef/rTn+Lee++NWbNmrbfeui96XXbZZXHUUUclVkmvrF9RURGLFy+Op59+OiKqr8gHAADAmmusrl27xoknnhgRa8Lglddv6167RUQ8//zzce6558bcuXNrVbvyGm3UqFFx2mmnRcTalfYi1r5puKKiIlavXt2Y3xYAAEC7tN1222X/XPW+WOWnSF111VVx//33R3l5+XrrpdPp7HY33XRTHHDAAdmVzCtrV/5fUlISzz33XES47wYArCVoDgBAgxxwwAGx7777Zleqi1j7UXvrvuh1zTXXxJ133hnz5s1bb811X/S66KKLYujQoYkXvNZ9catyZYXKF9sAAACobr/99osjjzwyItaGwdf9GPbKsPkTTzwRP//5z2PRokW1rt2pU6fYZ599squlV30T8pIlS+KLL75otO8FAACgvTrhhBNi//33z3nfrby8PIqKiiKTycSZZ54Z9913X61qVi4MVVxcHKeddlr0798/Mb5u8LxypXT33QCASoLmAAD8//buOzyK6n/7+L0tCYEEJBTpvXcpAQEpolQVvgIq0vSnUhREsYCiYkUsgDSRIoIiRURFKSooIIIFARFR6b0FQigJJFvm+YNnht0UskBCSHi/ritXyOyZM2dW8Mo5c+/n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PtbPafEPmxcoUEBut5t5GwAAAAD8f0WLFlX58uWtnYNtNpuSkpK0evVqvfXWW1YF8eSVxs1j6VU2nz9/vm666Sb169dPUmDY3Jw7SlK7du1ShM1tNluqHxJm/gYAADILv2UAAABkI4ZhaOfOndq+fbsVXjC3Tbfb7Tp16pROnTpltU2N3W6Xx+NR/vz5tXjxYjVr1izNKnU+n09Op1OSNHLkSKsqwsUq2plh8169ekk6v61gz549CSsAAAAAuK6YAQL/nahMv/32m6SLh8H9z3n77bf17LPPWv0mr2xuhh/sdru++eYbvf/+++mOr2zZsnr00UetuVuXLl2YtwEAAAC47pmB74oVK0qSVUFckvbs2aO8efNq2rRpuu+++6z2/vM+c4cp/7B5165dJUkul0tz5861fp41a5YGDRpkXediYfPWrVtLOj8n7NGjB/M3AABw1fCbBgAAQDZis9mUK1cuuVwuSYEVzX0+nzZt2qSVK1dabdPidDrl9XqVP39+LViwQLfcckuKhShzEcvj8VjXe/vtt7Vt27Z0x1mnTh09/vjj6tChg+6991599NFH1hhZ7AIAAACQk5lztDNnzgQc9/+Q8M8//6wvv/wy3b7MELkkjRgxIkVlc//wgVndPCkpST///HNQYy1TpoweeeQRzZo1S3PnzpXEvA0AAADA9c38YO/tt99u7dornZ+f/frrr9q5c6fy5Mmj999/P82wuXnMnAPOnz9fvXv31sKFC61zXC6X4uPjNXnyZD3++OMB1zav5x82HzBggG666Sbdd999VDIHAABXFb9tAAAAZDNOp1N2u92qimAuNJmVxydNmqQ9e/ak249ZGeGGG27QggULFB0dLa/Xa/UjXQirm5X4du/ere3bt0tKf4v32rVra9y4cVYVdBa7AAAAAFxPqlatKrvdHhA2MMPgsbGxWrx4sU6ePGm9lhb/YMPbb7+tAQMGSDo/T7Pb7da8zaxoLkmffvqpFi5cGNQ4K1SoYAUdmLcBAAAAwHmFChWy5nDS+TnXyZMndfDgQUlSZGSkJk2aFBA2T233KTNsPnPmTHXs2FGSFBISYlUvP3funKZOnarRo0enGEPysPm0adM0a9YsSczfAADA1cNvHAAAANmIYRiKiIhQiRIlJF0Igpvb8EnS77//ruXLl6cbBJcuhM3z58+vb775RpUqVZLb7U41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P//8M+iQuSQVLFhQAwYM0N9//60vvvhClSpVupyhAgAAAAAAADkSFc0BAAAAAAAAANeswoULa8qUKbr11luDar9kyRJ16NAhk0clbd26Nd0299133xVdI1euXOrRo4d69Oghr9d7RX1dTUlJSdq3b58OHjyogwcPKjY2VufOndPZs2fl8/kUGhqqyMhIFS5cWGXLllWFChWUK1eurB52jhYfH6///vtP27dvV1xcnM6cOaOEhAS5XC6Fh4crb968KlGihIoXL65SpUopJCQkq4esDRs26MMPPwy6/bvvvqsnn3zysq9ns9nUsWNHdejQQW+//XaG7Izg8Xi0adMmHThwQLGxsYqNjdXZs2eVL18+5c+fX1FRUapWrZqKFi16xddKT2xsrH799Vdt375dp06dUkhIiAoWLKiqVauqbt26l/SBmMySlJSkzZs3a9euXTp48KDi4+Pl8XgUHh6uggULqmzZsqpTp47Cw8OzeqgAAAAAAADXDYLmAAAAAAAAAIBrWsuWLVWqVCnt2bMn3ba7d+/O9PHEx8crISEh3XaRkZEZds2LhUBXrFihFi1aXHKfe/bsCapSeq9evfTRRx+l+trp06f166+/as2aNdq4caO2bNmiHTt2yOPxBD0Op9Op2rVrq127durWrdslVZQuXbp0UH8vkgv2/TJ3FPA3fPhwvfzyy5d1bmqC/e/3448/qnnz5kH1KUl///235syZoy+//FJ///130ONxOp2qVKmSatasqXr16qlJkya66aab5HRe3UdKb775ZtBj7t69+xWFzP05nU4NHTr0ss+PiYnR1KlT9cMPP2jt2rWKj49P95xy5cqpSZMm6tKli9q1a5ehOxgsXrxYo0eP1g8//CCfz5dqm3z58qlbt2566qmnVKZMmQy7djBiYmL08ccf66uvvtIvv/yipKSki7Z3Op1q2LChunbtql69emXo/2cBAAAAAACQEkFzAAAAAAAAAMA1r1atWkEFio8cOZLpY4mLiwuq3cqVK1W5cuXMHUwW+vfff1WtWrU0w6vB8ng8WrdundatW6dXX31Vd955p9555x2VL18+g0Z6fdm/f7+GDBmiTz/9NOigtj+Px6O///5bf//9t2bPni1Jyp07tz7++GN16tQpo4ebqqNHj+rzzz8Pqm2xYsU0YcKETB5R+nbt2qWRI0dqxowZOnfu3CWd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L5ydL18+Pfroo0H3V7BgQd13332aOXOmDh8+rFmzZqly5cpXOsygxMfHB932hhtuyMSRpC4pKSnFBxzSMmLEiFRD5qZixYpp6dKlQf3bSUhI0LRp09J8fdKkSUGNqWfPnhoxYkSKkLmpZMmS+vbbbzPsvU1KStKECRPSbVe4cGEtX748RcjcX61atfTNN9+ku9PDqVOnNH369EseKwAAAAAAAFIiaA4AAAAAAAAAyPbat2+vTp06XfXrfvjhh3r++edls9ky7RqffPKJunbtKp/Pl2nXuBwFChRQ/fr1r6gPl8ule++9N912a9asuaLr5HShoaEXfT0hIUHnzp27rL7Dw8PVrVs3NWnS5LLOv1Qejyfotundd2ZYvnx5UNXMK1asqCeffDLddvnz59frr78e1LXT+vDNkSNHtHnz5nTPDwsL09tvv51uuxtvvFHDhg0LakzpWbZsWVBV6t94442gAve1atVSr1690m03Z86coMYHAAAAAACAiyNoDgAAAAAAAADI1po2bZploUKbzabXXntNP/30kxo2bJhp11m0aJFGjBiRaf1npSJFiqTbZt++fVdhJNlXwYIFL/p6UlKSevfurbi4uKszoCsQHh4edNuTJ09m4khS98MPPwTV7oEHHpDT6Qyq7T333KPIyMh0261bt05nzpxJcTzYD2K0b99ehQoVCqptjx49gh7/xSxZsiTdNpGRkerWrVvQfd55553ptvn99991/PjxoPsEAAAAAABA6giaAwAAAAAAAACyrY4dO2rx4sXKkydPlo6jcePGWrt2rZYtW6b77rtPYWFhGX6Nt99++5oPCu/YsUPTpk3TgAED1KZNG1WtWlWFCxdWrly55HQ6ZbPZUnw9+OCD6fZ75syZS6p0fb0JprL8vHnzVKRIEbVq1UpPPfWUJk2apO+//167d+++pqrlBxO4NgVTWTyjrV+/Pqh2rVu3DrrPsLAwNWvWLN12Xq9XGzZsSHF83bp1QV2nZcuWQY+pYMGCql69etDt0/Lrr7+m2+bmm2++pP9nlitXLt02hmHot99+C7pPAAAAAAAApO7KSxEAAAAAAAAAAHCVlShRQu+99546deqU1UMJcOutt+rWW29VfHy8Vq1apeXLl2vVqlXauHGj3G73FfV98uRJzZkzR3379s2g0WaM+Ph4TZ06VVOnTtXmzZsz7TonTpxI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fv369fXuu+9meDDYbrdrxIgRGdJXxYoV9cILL2RIXya73a7PPvsswwPsyb3zzjuqXr36ZZ8fGRmpr7/+Wq1bt87AUWWeUqVK6bnnnsvqYahr167aunWrnnvuOeXJkyfD+8+VK5d69+6tkiVLptu2du3a+uWXX1SrVq0MH4fD4dCrr76q6dOnX9K/4ejoaM2fP/+KwuaVKlXSsmXLlC9fvsvuI7m8efPq+++/V/HixTOsTwAAAAAAAGQ+guYAAAAAAAAAAFyigQMH6s8//9S+ffs0adIkde3aVaVKlcqQvqtVq6YxY8Zo+/bt6tKlyxWP85tvvlHp0qUzZGymu+66S48//vgV9VGoUCEtWrQoU8LC5cqV08aNG3XHHXdkWgXu3Llza+XKlbr55psv+dx69erpt99+02233ZYJI8t4UVFRmjdvniIiIrJ6KJKkfPny6fXXX9eBAwf0/vvvq3HjxnI4HJfdX1hYmG677TaNHz9eBw8e1PTp05U/f/6gzq1YsaJ++eUXPfrooxm2g0CZMmW0bNkyDRs27LL+/rZv314rVqxQmTJlLuvcNWvWqFixYpd8bnrKlCmjX375RfXq1cvwvgEAAAAAAJA5Mn7PTAAAAAAAAADAdeuVV17RoEGD0m134403Zv5groLixYurT58+6tOnjyTp6NGj+u233/Tvv/9q165d2r17t/bu3atTp04pPj5e8fHxSkxMlMvlUu7cuVWgQAGVKFFCFStWVL169dSsWTOVL18+Q8fYrl077dixQ99//72+/fZbrV+/Xrt27dLJkyd15swZeb3ey+p31KhRcrvdmjhx4iWfW7ZsWS1atEjly5fX6tWrL+v66SlSpIgWLlyoHTt2aN68eVq3bp02b96s2NhYnTp1SklJSVd8jfz582vlypWaOnWqXnvtNR04cOCi7atUqaLBgwfrgQcekN2ePWoB1apVS/PmzVPFihWzeigpREZGqm/fvurbt69OnDihlStXav369dq8ebP27t2rgwcP6vTp0zp79qwcDociIiIUERGhQoUKqXLlyqpatapq166tW265Rbly5brscYSFhWn8+PF65plnNGbMGE2dOlWnT5++5H7q1q2rp556Sl26dLmi4Lx0vrL5X3/9pTFjxmjcuHE6cuTIRdvXqVNHzz33nDp37nxF101PsWLFtGbNGo0cOVJvvvmm4uPjM7T/4sWL65577rmi3QYAAAAAAABwgc0wDCOrBwEAAAAAAAAA2dnu3bv10UcfpdsuX758QYWwM0pcXJzGjBkTVNvhw4dn6liQc82bN09DhgzRrl270m3rcrn0f//3fxo5cqQiIyMlSR999JEeeOCBdM/dtWtXhldmz0g+n0/r16/XDz/8oP379+vYsWPyer3Knz+/KleurGbNmql27dqZdv2//vpLy5Yt07Jly7R69WqdOnXqsvuy2WyqW7euBg0apG7dumVaVficKjExUb///rt++uknrVmzRvv371dsbKxOnDihs2fPKl++fMqfP7+ioqJUrVo1NW3aVE2bNr2sCuTBcLvdWr16tdasWaPt27fr9OnTcrlcKlCggKpWrarmzZurSpUqmXLtizl69KjGjRunGTNmaN++fZfVh81mU82aNdWiRQvdddddatasGX9fAQAAAAAAMhBBcwAAAAAAAAAAcEU8Ho+++uorLV26VGvXrtWRI0cUFxenkJAQFSpUSNWqVVPLli11zz33qFixYgHnxsXFaf/+/eleo1KlSnK5XJl1CzmKYRjatm2b1q9fr02bNlmV9Q8cOKDTp08rISFBiYmJypUrl3Lnzq3IyEiVKVNGlStXVo0aNdS2bVsVL148q28D1wnDMLR+/Xr9+OOP2rBhg7Zu3aoDBw4oLi5OiYmJCgkJCahGX6lSJVWqVEnVqlVT48aNFRUVldW3AAAAAAAAkGMRNAcAAAAAAAAAAAAAAAAAAAAABLBn9QAAAAAAAAAAAAAAAAAAAAAAANcWguYAAAAAAAAAAAAAAAAAAAAAgAAEzQEAAAAAAAAAAAAAAAAAAAAAAQiaAwAAAAAAAAAAAAAAAAAAAAACEDQHAAAAAAAAAAAAAAAAAAAAAAQgaA4AAAAAAAAAAAAAAAAAAAAACEDQHAAAAAAAAAAAAAAAAAAAAAAQgKB7yppGAAACdUlEQVQ5AAAAAAAAAAAAAAAAAAAAACAAQXMAAAAAAAAAAAAAAAAAAAAAQACC5gAAAAAAAAAAAAAAAAAAAACAAATNAQAAAAAAAAAAAAAAAAAAAAABCJoDAAAAAAAAAAAAAAAAAAAAAAIQNAcAAAAAAAAAAAAAAAAAAAAABCBoDgAAAAAAAAAAAAAAAAAAAAAIQNAcAAAAAAAAAAAAAAAAAAAAABCAoDkAAAAAAAAAAAAAAAAAAAAAIABBcwAAAAAAAAAAAAAAAAAAAABAAILmAAAAAAAAAAAAAAAAAAAAAIAABM0BAAAAAAAAAAAAAAAAAAAAAAEImgMAAAAAAAAAAAAAAAAAAAAAAhA0BwAAAAAAAAAAAAAAAAAAAAAEIGgOAAAAAAAAAAAAAAAAAAAAAAhA0BwAAAAAAAAAAAAAAAAAAAAAEICgOQAAAAAAAAAAAAAAAAAAAAAgAEFzAAAAAAAAAAAAAAAAAAAAAEAAguYAAAAAAAAAAAAAAAAAAAAAgAAEzQEAAAAAAAAAAAAAAAAAAAAAAQiaAwAAAAAAAAAAAAAAAAAAAAACEDQHAAAAAAAAAAAAAAAAAAAAAAQgaA4AAAAAAAAAAAAAAAAAAAAACEDQHAAAAAAAAAAAAAAAAAAAAAAQgKA5AAAAAAAAAAAAAAAAAAAAACAAQXMAAAAAAAAAAAAAAAAAAAAAQACC5gAAAAAAAAAAAAAAAAAAAACAAATNAQAAAAAAAAAAAAAAAAAAAAABCJoDAAAAAAAAAAAAAAAAAAAAAAIQNAcAAAAAAAAAAAAAAAAAAAAABCBoDgAAAAAAAAAAAAAAAAAAAAAI8P8ATBSgE5qtIS4AAAAASUVORK5CYII=", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Error Distribution:\n", - "status_code\n", - "500.0 121\n", - "400.0 46\n", - "504.0 21\n", - "Name: count, dtype: int64\n", - "\n", - "Total Errors: 188\n" - ] - } - ], - "source": [ - "error_df = df_read[df_read[\"status_code\"].notna()]\n", - "status_counts = error_df[\"status_code\"].value_counts()\n", - "total_errors = sum(status_counts.values)\n", - "\n", - "colors = [\n", - " \"#1f77b4\",\n", - " \"#ff7f0e\",\n", - " \"#2ca02c\",\n", - " \"#d62728\",\n", - " \"#9467bd\",\n", - " \"#8c564b\",\n", - " \"#e377c2\",\n", - " \"#7f7f7f\",\n", - " \"#bcbd22\",\n", - " \"#17becf\",\n", - "]\n", - "\n", - "fig, ax = plt.subplots(figsize=(10, 6), dpi=300, facecolor=\"white\")\n", - "\n", - "bars = ax.bar(\n", - " range(len(status_counts)),\n", - " status_counts.values,\n", - " color=[colors[i % len(colors)] for i in range(len(status_counts))],\n", - " edgecolor=\"white\",\n", - " linewidth=2,\n", - " alpha=0.9,\n", - ")\n", - "\n", - "ax.set_xticks(range(len(status_counts)))\n", - "ax.set_xticklabels(\n", - " status_counts.index, rotation=45, ha=\"right\", fontsize=11, fontweight=\"bold\"\n", - ")\n", - "\n", - "ax.set_ylabel(\"Count\", fontsize=13, fontweight=\"bold\", labelpad=10)\n", - "ax.set_xlabel(\"HTTP Status Code\", fontsize=13, fontweight=\"bold\", labelpad=10)\n", - "\n", - "ax.set_title(\n", - " \"Titiler-CMR Incompatible Error Distribution\",\n", - " fontsize=16,\n", - " fontweight=\"bold\",\n", - " pad=20,\n", - ")\n", - "\n", - "for spine in [\"top\", \"right\"]:\n", - " ax.spines[spine].set_visible(False)\n", - "\n", - "for spine in [\"left\", \"bottom\"]:\n", - " ax.spines[spine].set_edgecolor(\"#333333\")\n", - " ax.spines[spine].set_linewidth(1.5)\n", - "\n", - "ax.grid(axis=\"y\", alpha=0.3, linestyle=\"--\", linewidth=1, color=\"#666666\")\n", - "ax.set_axisbelow(True)\n", - "\n", - "legend = ax.legend(\n", - " [f\"Total Errors: {total_errors}\"],\n", - " loc=\"upper right\",\n", - " fontsize=11,\n", - " frameon=True,\n", - " shadow=False,\n", - " fancybox=False,\n", - " edgecolor=\"#333333\",\n", - " facecolor=\"white\",\n", - " framealpha=0.95,\n", - ")\n", - "\n", - "for i, (bar, v) in enumerate(zip(bars, status_counts.values)):\n", - " height = bar.get_height()\n", - " percentage = (v / total_errors) * 100\n", - "\n", - " ax.text(\n", - " bar.get_x() + bar.get_width() / 2.0,\n", - " height + max(status_counts.values) * 0.02,\n", - " f\"{v}\\n({percentage:.1f}%)\",\n", - " ha=\"center\",\n", - " va=\"bottom\",\n", - " fontsize=10,\n", - " fontweight=\"bold\",\n", - " color=\"#333333\",\n", - " )\n", - "\n", - "ax.set_ylim(0, max(status_counts.values) * 1.15)\n", - "\n", - "plt.tight_layout()\n", - "plt.show()\n", - "\n", - "print(\"\\nError Distribution:\")\n", - "print(status_counts)\n", - "print(f\"\\nTotal Errors: {total_errors}\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "21f51e33", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "datacube-guide", - "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.13.5" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/docs/visualization/titiler/titiler-cmr/test-netcdf4-datasets.ipynb b/docs/visualization/titiler/titiler-cmr/test-netcdf4-datasets.ipynb deleted file mode 100644 index 12f1dc3..0000000 --- a/docs/visualization/titiler/titiler-cmr/test-netcdf4-datasets.ipynb +++ /dev/null @@ -1,206 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "b2b96830-5abd-447b-9d3e-7610e4c2d0d8", - "metadata": {}, - "source": [ - "# Testing NetCDF-4 collections\n", - "\n", - "In the previous step, we created a csv file that includes the collection ids and variable names for each collection. In this step, we will run a compatibility check to see if the variables are compatible with TiTiler-CMR." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "2105efe7-6e6c-4d1c-a713-b0ceabd40ae7", - "metadata": {}, - "outputs": [], - "source": [ - "import ast\n", - "import random\n", - "from datetime import datetime as dt, UTC, timedelta\n", - "import pandas as pd\n", - "from datacube_benchmark.titiler import DatasetParams, check_titiler_cmr_compatibility" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "aba83d5d", - "metadata": {}, - "outputs": [], - "source": [ - "df_read = pd.read_csv(\"output/cmr_collections_netcdf4_updated_saved_all.csv\")\n", - "\n", - "\n", - "df_read = df_read.dropna(subset=[\"variables\"]).copy()\n", - "df_read.head()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "9305bf0c-d5a8-4ed2-8a2d-8c56b7f54000", - "metadata": {}, - "outputs": [], - "source": [ - "import re\n", - "\n", - "\n", - "def extract_status_code(error):\n", - " if pd.isna(error) or error is None:\n", - " return None\n", - " match = re.search(r\"(?=3.12" -dependencies = [ - "arro3-core>=0.5.1", - "dask>=2025.5.1", - "geojson-pydantic>=2.0.0", - "earthaccess~=0.11.0", - "h5netcdf~=1.1.0", - "hdf5plugin>=5.1.0", - "httpx>=0.28.1", - "morecantile>=6.2.0", - "numcodecs>=0.16.1", - "obstore>=0.6.0", - "pint>=0.24.4", - "psutil>=7.0.0", - "pyarrow>=20.0.0", - "rich>=14.0.0", - "s3fs>=0.4.2", - "xarray>=2025.6.1", - "zarr>=3.0.8", -] - -[project.scripts] -datacube-benchmark = "datacube_benchmark:main" - -[build-system] -requires = ["hatchling"] -build-backend = "hatchling.build" - -[tool.numpydoc_validation] -# See https://numpydoc.readthedocs.io/en/latest/validation.html#built-in-validation-checks for list of checks -checks = [ - "GL06", - "GL07", - # Currently broken; see https://github.com/numpy/numpydoc/issues/573 - # "GL09", - "GL10", - "SS02", - "SS04", - "PR02", - "PR03", - "PR05", - "PR06", -] diff --git a/packages/datacube-benchmark/src/datacube_benchmark/__init__.py b/packages/datacube-benchmark/src/datacube_benchmark/__init__.py deleted file mode 100644 index 49e32b7..0000000 --- a/packages/datacube-benchmark/src/datacube_benchmark/__init__.py +++ /dev/null @@ -1,32 +0,0 @@ -from .create import ( - create_empty_dataarray, - create_zarr_store, - create_or_open_zarr_array, - create_or_open_zarr_store, -) -from .create import Quantity -from .config import Config -from .query import benchmark_zarr_array, benchmark_access_patterns -from .open import benchmark_dataset_open - -import numpy as np - -__all__ = [ - "Config", - "create_empty_dataarray", - "create_zarr_store", - "create_or_open_zarr_array", - "create_or_open_zarr_store", - "benchmark_zarr_array", - "benchmark_access_patterns", - "benchmark_dataset_open", -] - - -def main() -> None: - da = create_empty_dataarray() - array_size = Quantity(da.nbytes, "bytes") - chunk_size = Quantity(np.prod(da.data.chunksize) * da.dtype.itemsize, "bytes") - print(da) - print(f"Array size: {array_size.to('GB')}") - print(f"Chunk size: {chunk_size.to('MB')}") diff --git a/packages/datacube-benchmark/src/datacube_benchmark/chunks.py b/packages/datacube-benchmark/src/datacube_benchmark/chunks.py deleted file mode 100644 index ff8e70f..0000000 --- a/packages/datacube-benchmark/src/datacube_benchmark/chunks.py +++ /dev/null @@ -1,115 +0,0 @@ -from __future__ import annotations - -from typing import Literal, TYPE_CHECKING -import numpy as np -from .types import TARGET_SHAPES - -if TYPE_CHECKING: - from pint import Quantity - - -def calculate_thickness( - slice_size: Quantity, - target_size: Quantity, - method: Literal["nearest", "over", "under"] = "over", -) -> int: - """Calculate the thickness of a pancake chunk based on slice size and target chunk size. - Parameters - ---------- - slice_size : Quantity - The size of the slice of the dataset. - target_chunk_size : Quantity - The target size of the chunk. - method : Literal["nearest", "over", "under"] - The method to use for calculating the thickness. Options are: - - "nearest": Round to the nearest multiple of slice size. - - "over": Round up to the next multiple of slice size. - - "under": Round down to the previous multiple of slice size. - Returns - ------- - int - The number of slices to include in a chunk. - """ - if method == "nearest": - chunk_thickness = round(target_size / slice_size) - elif method == "over": - chunk_thickness = (target_size // slice_size) + 1 - elif method == "under": - chunk_thickness = target_size // slice_size - else: - raise ValueError("Method must be one of 'nearest', 'over', or 'under'.") - if chunk_thickness <= 0: - chunk_thickness = 1 # Ensure at least one slice per chunk - return int(chunk_thickness) - - -def get_slice_size( - array_shape: tuple[int, ...], - item_size: Quantity, - target_chunk_shape: TARGET_SHAPES = "dumpling", -) -> Quantity: - """Calculate the size of a slice based on the shape of the array and the item size. - - Parameters - ---------- - array_shape : tuple(int, ...) - The shape of the array. - item_size : Quantity - The size of each item in the array. - target_chunk_shape : target_chunk_shapeS - The target shape of the chunk. - - Returns - ------- - Quantity - The size of a slice in the specified chunk shape. - """ - if target_chunk_shape == "pancake": - return item_size * array_shape[1] * array_shape[2] - elif target_chunk_shape == "churro": - return item_size * array_shape[0] - elif target_chunk_shape == "dumpling": - return item_size - else: - raise ValueError( - f"Unrecognized chunk shape. Got {target_chunk_shape}, expected one of {TARGET_SHAPES}" - ) - - -def find_chunk_shape( - array_shape: tuple[int, ...], - item_size: Quantity, - target_chunk_size: Quantity, - target_chunk_shape: TARGET_SHAPES = "dumpling", -) -> tuple[int, ...]: - """Find a reasonable chunk shape based on the array shape, item size, and target chunk size. - Parameters - ---------- - array_shape : tuple(int, ...) - The shape of the array. - item_size : Quantity - The size of each item in the array. - target_chunk_size : Quantity - The target size of the chunk. - target_chunk_shape : TARGET_SHAPES - The target shape of the chunk. Options are "pancake", "churro", or "dumpling". - Returns - ------- - tuple(int, ...) - A reasonable chunk shape based on the input parameters. - """ - slice_size = get_slice_size(array_shape, item_size, target_chunk_shape) - chunk_thickness = calculate_thickness(slice_size, target_chunk_size) - - if target_chunk_shape == "pancake": - return (chunk_thickness, array_shape[1], array_shape[2]) - elif target_chunk_shape == "churro": - chunk_width = np.ceil(np.sqrt(chunk_thickness)) - return (array_shape[0], chunk_width, chunk_width) - elif target_chunk_shape == "dumpling": - chunk_width = np.ceil(np.cbrt(chunk_thickness)) - return (chunk_width, chunk_width, chunk_width) - else: - raise ValueError( - f"Unrecognized chunk shape. Got {target_chunk_shape}, expected one of {TARGET_SHAPES}" - ) diff --git a/packages/datacube-benchmark/src/datacube_benchmark/config.py b/packages/datacube-benchmark/src/datacube_benchmark/config.py deleted file mode 100644 index b2afe84..0000000 --- a/packages/datacube-benchmark/src/datacube_benchmark/config.py +++ /dev/null @@ -1,16 +0,0 @@ -from dataclasses import dataclass -import zarr - - -@dataclass -class Config: - create_data = True - compressor = zarr.codecs.BloscCodec( - cname="zstd", clevel=3, shuffle=zarr.codecs.BloscShuffle.shuffle - ) - target_array_size = "25 MB" - data_var = "data" - num_samples = 1 - warmup_samples = 0 - credential_provider = None - zarr_concurrency = 128 diff --git a/packages/datacube-benchmark/src/datacube_benchmark/create.py b/packages/datacube-benchmark/src/datacube_benchmark/create.py deleted file mode 100644 index 0e2998b..0000000 --- a/packages/datacube-benchmark/src/datacube_benchmark/create.py +++ /dev/null @@ -1,354 +0,0 @@ -from __future__ import annotations -import warnings -from typing import TYPE_CHECKING, Literal, Any, Hashable -from dask import array as da -import numpy as np -import xarray as xr -from pint import UnitRegistry, Quantity -from .defaults import ( - default_longitude_coords, - default_latitude_coords, - default_time_coords, - default_data_attrs, - default_data_name, -) -from .chunks import calculate_thickness, find_chunk_shape -from .utils import validate_object_store_contains_zarr -from .config import Config -import obstore as obs -import zarr - -if TYPE_CHECKING: - from pint import Quantity - from .types import TARGET_SHAPES - from numcodecs.abc import Codec - from zarr.abc.codec import BytesBytesCodec - -ureg = UnitRegistry() - - -def _write_using_obstore( - ds: xr.Dataset, - object_store: obs.store.ObjectStore, - compressor: Codec | BytesBytesCodec | None = None, - chunked_coords: bool = False, - consolidated_metadata: bool = True, -) -> zarr.storage.ObjectStore: - zarr_store = zarr.storage.ObjectStore( - store=object_store, - read_only=False, - ) - encoding: dict[Hashable, Any] = { - var: {"compressors": compressor} for var in ds.data_vars - } - if chunked_coords: - for coord in ds.coords: - encoding[coord] = {"chunks": 1} - ds.to_zarr( - store=zarr_store, - mode="w", - encoding=encoding, - consolidated=consolidated_metadata, - ) # type: ignore[call-overload] - return zarr_store - - -def create_zarr_store( - object_store: obs.store.ObjectStore, - target_array_size: str | Quantity = "1 GB", - target_spatial_resolution: str | Quantity = ".5 degrees", - target_chunk_size: str | Quantity = "10 MB", - target_chunk_shape: TARGET_SHAPES = "dumpling", - compressor: Codec | BytesBytesCodec | None = None, - dtype: np.dtype = np.dtype("float32"), - fill_method: Literal["random", "zeros", "ones", "arange"] = "arange", - chunked_coords: bool = False, - consolidated_metadata: bool = True, -) -> zarr.storage.ObjectStore: - """ - Create a Zarr store in the specified object store with an empty dataset. - - Parameters - ---------- - object_store - The object store to write the Zarr dataset to. - target_array_size - The size of the [xarray.DataArray][], can be a string or a [pint.Quantity][]. - String must be convertible to a [pint.Quantity][]. - target_spatial_resolution - The spatial resolution of the [xarray.DataArray][], can be a string or a [pint.Quantity][]. - String must be convertible to a [pint.Quantity][]. - target_chunk_size - The size of the chunks in the [xarray.DataArray][], can be a string or a [pint.Quantity][]. - String must be convertible to a [pint.Quantity][]. - target_chunk_shape - The shape of the [xarray.DataArray][], default is "dumpling". - compressor - The compressor to use for the Zarr store, default is None (no compression). - dtype - The data type of the [xarray.DataArray][], default is np.dtype("float32"). - fill_method - The method to use for filling the Zarr array. Options are: - - - `"random"`: Fill with random values. - - `"zeros"`: Fill with zeros. - - `"ones"`: Fill with ones. - - `"arange"`: Fill with a range of values. - chunked_coords - Whether coords are chunked or not. Chunk size would be (1,). - consolidated_metadata - Whether to consolidate the Zarr metadata. - - Returns - ------- - zarr.storage.ObjectStore - A Zarr store with the specified parameters. - """ - warnings.filterwarnings( - "ignore", - message="Object at .* is not recognized as a component of a Zarr hierarchy", - category=UserWarning, - ) - warnings.filterwarnings( - "ignore", - message="Consolidated metadata is currently not part in the Zarr format 3 specification. *", - category=UserWarning, - ) - validate_object_store_contains_zarr(object_store=object_store) - ds = create_empty_dataset( - target_array_size=target_array_size, - target_spatial_resolution=target_spatial_resolution, - target_chunk_size=target_chunk_size, - target_chunk_shape=target_chunk_shape, - dtype=dtype, - ) - zarr_store = _write_using_obstore( - ds=ds, - object_store=object_store, - compressor=compressor, - chunked_coords=chunked_coords, - consolidated_metadata=consolidated_metadata, - ) - arr = zarr.open_array(store=zarr_store, zarr_version=3, path="data") - fill_zarr_array(arr=arr, method=fill_method) - return zarr_store - - -def fill_zarr_array( - arr=zarr.Array, method=Literal["random", "zeros", "ones", "arange"] -) -> None: - """ - Fill a Zarr array with specified data. - - Parameters - ---------- - arr - The Zarr array to fill. - method - The method to use for filling the array. Options are: - - - `"random"`: Fill with random values. - - `"zeros"`: Fill with zeros. - - `"ones"`: Fill with ones. - - `"arange"`: Fill with a range of values. - - Returns - ------- - None - The function modifies the Zarr array in place. - """ - if method == "random": - arr[:] = np.random.random(arr.shape) - elif method == "zeros": - arr[:] = 0 - elif method == "ones": - arr[:] = 1 - elif method == "arange": - arr[:] = np.arange(np.prod(arr.shape)).reshape(arr.shape) - else: - raise ValueError( - "Method must be one of 'random', 'zeros', 'ones', or 'arange'." - ) - - -def create_empty_dataset( - target_array_size: str | Quantity = "1 GB", - target_spatial_resolution: str | Quantity = ".5 degrees", - target_chunk_size: str | Quantity = "10 MB", - target_chunk_shape: TARGET_SHAPES = "dumpling", - dtype: np.dtype = np.dtype("float32"), - name: str = "data", -) -> xr.Dataset: - """ - Create an empty [xarray.Dataset][] with specified size, shape, and dtype. - - Parameters - ---------- - target_array_size - The size of the [xarray.DataArray][], can be a string or a [pint.Quantity][]. - String must be convertible to a [pint.Quantity][]. - target_spatial_resolution - The spatial resolution of the [xarray.DataArray][], can be a string or a [pint.Quantity][]. - String must be convertible to a [pint.Quantity][]. - target_chunk_size - The size of the chunks in the [xarray.DataArray][], can be a string or a [pint.Quantity][]. - String must be convertible to a [pint.Quantity][]. - target_chunk_shape - The shape of the [xarray.DataArray][], default is "dumpling". - dtype - The data type of the [xarray.DataArray][], default is np.dtype("float32") - name - The name of the [xarray.DataArray][] within the [xarray.Dataset], default is "data". - - Returns - ------- - xr.Dataset - A [xarray.Dataset][] with the specified parameters. - """ - da = create_empty_dataarray( - target_array_size=target_array_size, - target_spatial_resolution=target_spatial_resolution, - target_chunk_size=target_chunk_size, - target_chunk_shape=target_chunk_shape, - dtype=dtype, - ) - return da.to_dataset(name="data") - - -def create_empty_dataarray( - target_array_size: str | Quantity = "1 GB", - target_spatial_resolution: str | Quantity = ".5 degrees", - target_chunk_size: str | Quantity = "10 MB", - target_chunk_shape: TARGET_SHAPES = "dumpling", - dtype: np.dtype = np.dtype("float32"), -) -> xr.DataArray: - """ - Create an empty [xarray.DataArray][] with specified size, shape, and dtype. - - Parameters - ---------- - target_array_size - The size of the [xarray.DataArray][], can be a string or a [pint.Quantity][]. - String must be convertible to a [pint.Quantity][]. - target_spatial_resolution - The spatial resolution of the [xarray.DataArray][], can be a string or a [pint.Quantity][]. - String must be convertible to a [pint.Quantity][]. - target_chunk_size - The size of the chunks in the [xarray.DataArray][], can be a string or a [pint.Quantity][]. - String must be convertible to a [pint.Quantity][]. - target_chunk_shape - The shape of the [xarray.DataArray][], default is "dumpling". - dtype - The data type of the [xarray.DataArray][], default is np.dtype("float32") - - Returns - ------- - xr.DataArray - An empty [xarray.DataArray][] with the specified parameters. - """ - spatial_res: float = ( - ( - Quantity(target_spatial_resolution) - if isinstance(target_spatial_resolution, str) - else target_spatial_resolution - ) - .to("degrees") - .magnitude - ) - target_size = ( - Quantity(target_array_size) - if isinstance(target_array_size, str) - else target_array_size - ) - if isinstance(target_chunk_size, str): - target_chunk_size = Quantity(target_chunk_size) - longitude_coords = default_longitude_coords(spatial_res) - latitude_coords = default_latitude_coords(spatial_res) - item_size = Quantity(dtype.itemsize, "bytes") - slice_size = ( - item_size * len(longitude_coords["data"]) * len(latitude_coords["data"]) - ) - number_of_timesteps = calculate_thickness( - slice_size=slice_size, - target_size=target_size, - method="over", - ) - time_coords = default_time_coords(number_of_timesteps) - chunk_shape = find_chunk_shape( - array_shape=( - len(time_coords["data"]), - len(latitude_coords["data"]), - len(longitude_coords["data"]), - ), - item_size=item_size, - target_chunk_size=target_chunk_size, - target_chunk_shape=target_chunk_shape, - ) - data = da.empty( - shape=( - len(time_coords["data"]), - len(latitude_coords["data"]), - len(longitude_coords["data"]), - ), - dtype=dtype, - chunks=chunk_shape, - ) - return xr.DataArray.from_dict( - { - "coords": { - "time": time_coords, - "longitude": longitude_coords, - "latitude": latitude_coords, - }, - "attrs": default_data_attrs, - "dims": ["time", "latitude", "longitude"], - "data": data, - "name": default_data_name, - } - ) - - -def create_or_open_zarr_store( - url: str, - *, - target_chunk_size: str, - config: Config, - chunked_coords: bool = False, - consolidated_metadata: bool = True, -) -> zarr.abc.store.Store: - """ - Either create or open a zarr array with the specified target chunk size - """ - obstore_kwargs: dict[str, Any] = ( - {"credential_provider": config.credential_provider} - if config.credential_provider - else {} - ) - object_store = obs.store.from_url(url, **obstore_kwargs) - if config.create_data: - zarr_store = create_zarr_store( - object_store, - compressor=config.compressor, - target_chunk_size=target_chunk_size, - target_array_size=config.target_array_size, - chunked_coords=chunked_coords, - consolidated_metadata=consolidated_metadata, - ) - else: - zarr_store = zarr.storage.ObjectStore(object_store, read_only=True) - return zarr_store - - -def create_or_open_zarr_array( - url: str, *, target_chunk_size: str, config: Config -) -> zarr.Array: - """ - Either create or open a zarr array with the specified target chunk size - """ - zarr_store = create_or_open_zarr_store( - url, - target_chunk_size=target_chunk_size, - config=config, - ) - - return zarr.open_array(zarr_store, zarr_version=3, path=config.data_var) diff --git a/packages/datacube-benchmark/src/datacube_benchmark/defaults.py b/packages/datacube-benchmark/src/datacube_benchmark/defaults.py deleted file mode 100644 index 98b4126..0000000 --- a/packages/datacube-benchmark/src/datacube_benchmark/defaults.py +++ /dev/null @@ -1,99 +0,0 @@ -import numpy as np - -default_resolution = (0.25, 0.25) # degrees -default_timesteps = 365 -default_data_name = "psl" -default_data_attrs = { - "long_name": "mean sea level pressure", - "standard_name": "air_pressure_at_sea_level", - "units": "hPa", - "grid_mapping": "crs", -} -default_crs = { - "attrs": { - "grid_mapping_name": "latitude_longitude", - "longitude_of_prime_meridian": 0.0, - "semi_major_axis": 6378137.0, - "inverse_flattening": 298.257223563, - } -} - - -def default_time_coords( - timesteps: int = default_timesteps, - start_date: str = "1990-01-01 00:00:00", -) -> dict: - """ - Create a default time coordinate dictionary. - - Parameters - ---------- - timesteps : int - Number of timesteps, default is 365. - start_date : str - Start date in the format 'YYYY-MM-DD HH:MM:SS', default is '1990-01-01 00:00:00'. - - Returns - ------- - dict - A dictionary representing the time coordinate. - """ - return { - "data": np.arange(timesteps, dtype=np.int32), - "dims": "time", - "attrs": {"standard_name": "time", "units": f"days since {start_date}"}, - } - - -def default_longitude_coords( - resolution: float = default_resolution[1], -) -> dict: - """ - Create a default longitude coordinate dictionary. - - Parameters - ---------- - resolution : float - Longitude resolution in degrees, default is 0.25. - - Returns - ------- - dict - A dictionary representing the longitude coordinate. - """ - return { - "data": np.arange(-180, 180, resolution, dtype=np.float32), - "dims": "longitude", - "attrs": { - "long_name": "longitude", - "standard_name": "longitude", - "units": "degrees_east", - }, - } - - -def default_latitude_coords( - resolution: float = default_resolution[0], -) -> dict: - """ - Create a default latitude coordinate dictionary. - - Parameters - ---------- - resolution : float - Latitude resolution, default is 0.25. - - Returns - ------- - dict - A dictionary representing the latitude coordinate. - """ - return { - "data": np.arange(-90, 90, resolution, dtype=np.float32), - "dims": "latitude", - "attrs": { - "long_name": "latitude", - "standard_name": "latitude", - "units": "degrees_north", - }, - } diff --git a/packages/datacube-benchmark/src/datacube_benchmark/open.py b/packages/datacube-benchmark/src/datacube_benchmark/open.py deleted file mode 100644 index 35519e6..0000000 --- a/packages/datacube-benchmark/src/datacube_benchmark/open.py +++ /dev/null @@ -1,97 +0,0 @@ -import xarray as xr -import zarr -import pandas as pd -import numpy as np -import time -from typing import List -from pint import Quantity - - -def _measure_xarray_open_dataset( - zarr_store: zarr.abc.store.Store, - num_samples: int = 10, - warmup_samples: int = 10, -) -> List[float]: - """ - Measure time performance for opening the dataset contained in a Zarr store. - - Parameters - ---------- - zarr_store - The zarr store to test - num_samples - Number of random access operations to perform - warmup_samples - Number of warmup operations (not included in timing) - - Returns - ------- - results - A list of access times for opening the dataset. - """ - # Warmup phase - not timed - for i in range(warmup_samples): - ds = xr.open_dataset( - zarr_store, # type: ignore - engine="zarr", - zarr_format=3, - ) - ds.close() - del ds - - # Actual timing phase - times = [] - for i in range(num_samples): - start_time = time.perf_counter() - ds = xr.open_dataset( - zarr_store, # type: ignore - engine="zarr", - zarr_format=3, - ) - end_time = time.perf_counter() - times.append(end_time - start_time) - ds.close - del ds - - return times - - -def benchmark_dataset_open( - zarr_store: zarr.abc.store.Store, num_samples: int = 10, warmup_samples: int = 10 -) -> pd.DataFrame: - """ - Benchmark all three access patterns and return combined results. - - Parameters - ---------- - zarr_store - The zarr store to benchmark - num_samples - Number of random access operations to perform for each pattern - warmup_samples - Number of warmup operations (not included in timing) - - Returns - ------- - pd.DataFrame - [pandas.DataFrame][] with results for each access pattern - """ - times = _measure_xarray_open_dataset(zarr_store, num_samples, warmup_samples) - - stats = { - "mean_time": Quantity(np.mean(times), "seconds"), - "median_time": Quantity(np.median(times), "seconds"), - "std_time": Quantity(np.std(times), "seconds"), - "min_time": Quantity(np.min(times), "seconds"), - "max_time": Quantity(np.max(times), "seconds"), - "total_samples": num_samples, - "zarr_store": str(zarr_store), - } - stats["zarr_concurrency"] = zarr.config.get("async.concurrency") - - return pd.DataFrame.from_dict(stats, orient="index") - - -__all__ = [ - "benchmark_dataset_open", -] diff --git a/packages/datacube-benchmark/src/datacube_benchmark/query.py b/packages/datacube-benchmark/src/datacube_benchmark/query.py deleted file mode 100644 index ffb8a78..0000000 --- a/packages/datacube-benchmark/src/datacube_benchmark/query.py +++ /dev/null @@ -1,190 +0,0 @@ -import zarr -import pandas as pd -import numpy as np -import time -import random -from typing import List, Literal -from .utils import array_storage_size -from pint import Quantity - - -def _measure_zarr_random_access_performance( - zarr_array: zarr.Array, - access_pattern: Literal["point", "time_series", "spatial_slice", "full"] = "point", - num_samples: int = 10, - warmup_samples: int = 10, -) -> List[float]: - """ - Measure time performance for loading random data values from a zarr array. - - Parameters - ---------- - zarr_array - The zarr array to test - access_pattern - Type of access pattern: "point", "time_series", or "spatial_slice" - num_samples - Number of random access operations to perform - warmup_samples - Number of warmup operations (not included in timing) - - Returns - ------- - results - A list of access times for each random access operation. - """ - - # Get array dimensions - shape = zarr_array.shape - - if len(shape) < 3 and access_pattern in ["time_series", "spatial_slice"]: - raise ValueError( - f"Array must be at least 3D for {access_pattern} access pattern" - ) - - # Generate random indices for all samples (warmup + actual) - total_samples = warmup_samples + num_samples - random_indices = [] - - idx: tuple[int | slice, ...] - for _ in range(total_samples): - if access_pattern == "point": - # Generate random index for each dimension - idx = tuple(random.randint(0, dim - 1) for dim in shape) - elif access_pattern == "time_series": - # Generate (:, random_y, random_z) for 3D+ arrays - fixed_indices = [random.randint(0, dim - 1) for dim in shape[1:]] - idx = (slice(None), *fixed_indices) - elif access_pattern == "spatial_slice": - # Generate (random_x, :, :) for 3D+ arrays - random_first = random.randint(0, shape[0] - 1) - idx = (random_first, slice(None), slice(None)) - # For arrays with more than 3 dimensions, fix the remaining dimensions - if len(shape) > 3: - remaining_indices = [random.randint(0, dim - 1) for dim in shape[3:]] - idx = idx + tuple(remaining_indices) - elif access_pattern == "full": - idx = tuple(slice(None) for _ in shape) - - random_indices.append(idx) - - # Warmup phase - not timed - for i in range(warmup_samples): - _ = zarr_array[random_indices[i]] - - # Actual timing phase - times = [] - for i in range(warmup_samples, total_samples): - start_time = time.perf_counter() - value = zarr_array[random_indices[i]] - end_time = time.perf_counter() - times.append(end_time - start_time) - del value - - return times - - -def benchmark_zarr_array( - zarr_array: zarr.Array, - access_pattern: Literal["point", "time_series", "spatial_slice", "full"] = "point", - num_samples: int = 10, - warmup_samples: int = 10, -) -> dict: - """ - Comprehensive benchmark of zarr array random access performance. - - Returns detailed statistics about the performance. - - Parameters - ---------- - zarr_array - The zarr array to benchmark - access_pattern - Type of access pattern: "point", "time_series", "spatial_slice", "full" - num_samples - Number of random access operations to perform - warmup_samples - Number of warmup operations (not included in timing) - - Returns - ------- - dict - A dictionary containing performance statistics including mean, median, std deviation, min, max access times - and details about the zarr array such as shape, dtype, and size. - """ - - times = _measure_zarr_random_access_performance( - zarr_array, access_pattern, num_samples, warmup_samples - ) - - stats = { - "mean_time": Quantity(np.mean(times), "seconds"), - "median_time": Quantity(np.median(times), "seconds"), - "std_time": Quantity(np.std(times), "seconds"), - "min_time": Quantity(np.min(times), "seconds"), - "max_time": Quantity(np.max(times), "seconds"), - "total_samples": num_samples, - "access_pattern": access_pattern, - "array_shape": zarr_array.shape, - "chunk_shape": zarr_array.chunks, - "chunk_size": Quantity( - np.prod(zarr_array.chunks) * zarr_array.dtype.itemsize, "bytes" - ).to("MB"), - "nchunks": zarr_array.nchunks, - "shard_shape": getattr( - zarr_array, "shards", None - ), # Handle case where shards might not exist - "array_dtype": zarr_array.dtype, - "array_size_memory": Quantity(zarr_array.nbytes, "bytes").to("GB"), - "array_size_storage": Quantity(array_storage_size(zarr_array), "bytes").to( - "GB" - ), - "array_compressors": zarr_array.compressors, - } - stats["compression_ratio"] = ( - f'{(stats["array_size_memory"] / stats["array_size_storage"]).magnitude:.2f}:1' # type: ignore[operator] - ) - stats["zarr_concurrency"] = zarr.config.get("async.concurrency") - - return stats - - -# Convenience function to benchmark all access patterns -def benchmark_access_patterns( - zarr_array: zarr.Array, num_samples: int = 10, warmup_samples: int = 10 -) -> pd.DataFrame: - """ - Benchmark all three access patterns and return combined results. - - Parameters - ---------- - zarr_array - The zarr array to benchmark - num_samples - Number of random access operations to perform for each pattern - warmup_samples - Number of warmup operations (not included in timing) - - Returns - ------- - pd.DataFrame - [pandas.DataFrame][] with results for each access pattern - """ - - results = {} - access_pattern = ["point", "time_series", "spatial_slice", "full"] - - for pattern in access_pattern: - results[pattern] = benchmark_zarr_array( - zarr_array, - access_pattern=pattern, # type: ignore[arg-type] - num_samples=num_samples, - warmup_samples=warmup_samples, - ) - return pd.DataFrame.from_dict(results, orient="index") - - -__all__ = [ - "benchmark_zarr_array", - "benchmark_access_patterns", -] diff --git a/packages/datacube-benchmark/src/datacube_benchmark/titiler/__init__.py b/packages/datacube-benchmark/src/datacube_benchmark/titiler/__init__.py deleted file mode 100644 index 2e62902..0000000 --- a/packages/datacube-benchmark/src/datacube_benchmark/titiler/__init__.py +++ /dev/null @@ -1,31 +0,0 @@ -from .utils import ( - get_surrounding_tiles, - fetch_tile, - get_tileset_tiles, - create_bbox_feature, - BaseBenchmarker, -) -from .config import DatasetParams -from .cmr.benchmark import ( - check_titiler_cmr_compatibility, - benchmark_viewport, - benchmark_tileset, - benchmark_statistics, - tiling_benchmark_summary, - TiTilerCMRBenchmarker, -) - -__all__ = [ - "TiTilerCMRBenchmarker", - "benchmark_viewport", - "benchmark_tileset", - "benchmark_statistics", - "tiling_benchmark_summary", - "get_surrounding_tiles", - "get_tileset_tiles", - "fetch_tile", - "create_bbox_feature", - "DatasetParams", - "BaseBenchmarker", - "check_titiler_cmr_compatibility", -] diff --git a/packages/datacube-benchmark/src/datacube_benchmark/titiler/cmr/__init__.py b/packages/datacube-benchmark/src/datacube_benchmark/titiler/cmr/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/packages/datacube-benchmark/src/datacube_benchmark/titiler/cmr/benchmark.py b/packages/datacube-benchmark/src/datacube_benchmark/titiler/cmr/benchmark.py deleted file mode 100644 index 243d4b1..0000000 --- a/packages/datacube-benchmark/src/datacube_benchmark/titiler/cmr/benchmark.py +++ /dev/null @@ -1,1026 +0,0 @@ -""" -Unified benchmarking for TiTiler-CMR. - -This module provides an async, extensible toolkit to measure TiTiler-CMR -performance across common scenarios: - -- **Viewport**: request a window of tiles around a lon/lat at multiple zooms -- **Tileset**: enumerate all tiles intersecting a bbox (with optional caps) -- **Statistics**: call `/timeseries/statistics` for a geometry and time range - -""" - -from __future__ import annotations - -import asyncio -import time -from asyncio import BoundedSemaphore -from typing import Any, Callable, Dict, List, Optional, Tuple, Union -import random - -import httpx -import morecantile -import pandas as pd -import psutil -from geojson_pydantic import Feature - -from datacube_benchmark.titiler import ( - BaseBenchmarker, - DatasetParams, - create_bbox_feature, - fetch_tile, - get_surrounding_tiles, - get_tileset_tiles, -) - -# --------------------------------------- -# top level benchmarking compatibility check -# --------------------------------------- - - -async def check_titiler_cmr_compatibility( - endpoint: str, - dataset: DatasetParams, - *, - timeout_s: float = 30.0, - max_connections: int = 10, - max_connections_per_host: int = 10, - raise_on_incompatible: bool = False, - bounds_fraction: float = 0.05, - **kwargs: Any, -) -> Dict[str, Any]: - """ - Call TiTiler-CMR `/compatibility` and return timing + details. - - Parameters - ---------- - endpoint : str - Base URL of the TiTiler-CMR deployment. - dataset : DatasetParams - Dataset configuration (concept_id, backend, datetime_range, etc.). - timeout_s : float, optional - Request timeout (default: 30s). - raise_on_incompatible : bool, optional - If True, raise RuntimeError when compatible == False. - bounds_fraction : float, optional - Fraction of total dataset area to use for random bounds compatibility check - (default: 0.05 = 5% of area). Only used when geometry is not provided. - - Returns - ------- - Dict[str, Any] - { - success, compatible, elapsed_s, status_code, url, - details (server payload), error (if any) - } - """ - benchmarker = TiTilerCMRBenchmarker( - endpoint=endpoint, - timeout_s=timeout_s, - max_connections=max_connections, - max_connections_per_host=max_connections_per_host, - ) - result = await benchmarker.check_compatibility( - dataset, bounds_fraction=bounds_fraction, **kwargs - ) - if raise_on_incompatible and result.get("success") and not result.get("compatible"): - reasons = result.get("details", {}).get("reasons") or result.get( - "details", {} - ).get("messages") - raise RuntimeError(f"Dataset not compatible: {reasons or 'no reason provided'}") - return result - - -# --------------------------------------- -# top level public API -# --------------------------------------- - - -async def benchmark_viewport( - endpoint: str, - dataset: DatasetParams, - lng: float, - lat: float, - *, - viewport_width: int = 5, - viewport_height: int = 5, - tms_id: str = "WebMercatorQuad", - tile_format: str = "png", - tile_scale: int = 1, - min_zoom: int = 7, - max_zoom: int = 10, - timeout_s: float = 30.0, - max_connections: int = 32, - max_connections_per_host: int = 32, - max_concurrent: int = 32, - **kwargs: Any, -) -> pd.DataFrame: - """ - Benchmark tile rendering for a *viewport* centered at (lng, lat). - This is a high-level convenience wrapper around - ``TiTilerCMRBenchmarker.benchmark_tiles``. It builds a tiling strategy that - selects a (viewport_width × viewport_height) neighborhood of tiles around - the center tile at each zoom in ``[min_zoom, max_zoom]``, then measures - latency, status, and size for each tile request across all timesteps. - - Parameters - ---------- - endpoint : str - Base URL of the TiTiler-CMR deployment. - dataset : DatasetParams - Dataset and query parameters (concept_id, backend, datetime_range, kwargs). - lng : float - Center longitude of the viewport. - lat : float - Center latitude of the viewport. - viewport_width : int, optional - Number of tiles in the X direction (default: 5). - viewport_height : int, optional - Number of tiles in the Y direction (default: 5). - tms_id : str, optional - Tile matrix set ID (default: "WebMercatorQuad"). - tile_format : str, optional - Tile format (default: "png"). - tile_scale : int, optional - Tile scale factor (default: 1). - min_zoom : int, optional - Minimum zoom level (default: 7). - max_zoom : int, optional - Maximum zoom level (default: 10). - timeout_s : float, optional - Request timeout in seconds (default: 30.0). - max_connections : int, optional - Maximum total concurrent connections (default: 20). - max_connections_per_host : int, optional - Maximum concurrent connections per host (default: 20). - **kwargs : Any - Additional query parameters for the API. - - Returns - ------- - pd.DataFrame - Results for each tile request, including status, latency, and size. - """ - benchmarker = TiTilerCMRBenchmarker( - endpoint=endpoint, - tms_id=tms_id, - tile_format=tile_format, - tile_scale=tile_scale, - min_zoom=min_zoom, - max_zoom=max_zoom, - timeout_s=timeout_s, - max_connections=max_connections, - max_connections_per_host=max_connections_per_host, - max_concurrent=max_concurrent, - ) - - def viewport_strategy( - zoom: int, tms: morecantile.TileMatrixSet, _tilejson_info: Dict[str, Any] - ) -> List[Tuple[int, int]]: - center = tms.tile(lng=lng, lat=lat, zoom=zoom) - return get_surrounding_tiles( - center_x=center.x, - center_y=center.y, - zoom=zoom, - width=viewport_width, - height=viewport_height, - ) - - return await benchmarker.benchmark_tiles( - dataset, viewport_strategy, warmup_per_zoom=1, **kwargs - ) - - -async def benchmark_tileset( - endpoint: str, - dataset: DatasetParams, - *, - bounds: List[float], - max_tiles_per_zoom: Optional[int] = 100, - tms_id: str = "WebMercatorQuad", - tile_format: str = "png", - tile_scale: int = 1, - min_zoom: int = 7, - max_zoom: int = 10, - timeout_s: float = 30.0, - max_connections: int = 32, - max_connections_per_host: int = 32, - max_concurrent: int = 32, - **kwargs: Any, -) -> pd.DataFrame: - """ - Benchmark tile rendering for a *full tileset* over given bounds. - This wrapper enumerates all tiles intersecting the supplied `bounds` (or the - bounds from TileJSON if omitted) for each zoom level in ``[min_zoom, max_zoom]``. - Optionally caps the number of tiles per zoom to avoid overly large runs. - - Parameters - ---------- - endpoint : str - Base URL of the TiTiler-CMR deployment. - dataset : DatasetParams - Dataset and query parameters (concept_id, backend, datetime_range, kwargs). - bounds : list of float, optional - Bounding box [min_lon, min_lat, max_lon, max_lat] to cover. - max_tiles_per_zoom : int, optional - If set, limits the number of tiles per zoom level to this count. - tms_id : str, optional - Tile matrix set ID (default: "WebMercatorQuad"). - tile_format : str, optional - Tile image format (e.g., "png", "jpg", "webp"). (default: "png"). - tile_scale : int, optional - Tile scale factor (default: 1). - min_zoom : int, optional - Minimum zoom level (default: 7). - max_zoom : int, optional - Maximum zoom level (default: 10). - timeout_s : float, optional - Request timeout in seconds (default: 30.0). - max_connections : int, optional - Maximum total concurrent connections (default: 20). - max_connections_per_host : int, optional - Maximum concurrent connections per host (default: 20). - **kwargs : Any - Additional query parameters for the API. - - Returns - ------- - pd.DataFrame - Results for each tile request, including status, latency, and size. - """ - benchmarker = TiTilerCMRBenchmarker( - endpoint=endpoint, - tms_id=tms_id, - tile_format=tile_format, - tile_scale=tile_scale, - min_zoom=min_zoom, - max_zoom=max_zoom, - timeout_s=timeout_s, - max_connections=max_connections, - max_connections_per_host=max_connections_per_host, - max_concurrent=max_concurrent, - ) - - def tileset_strategy( - zoom: int, tms: morecantile.TileMatrixSet, tilejson_info: Dict[str, Any] - ) -> List[Tuple[int, int]]: - b = bounds or tilejson_info.get("bounds") - if not b: - raise ValueError("No bounds provided and none available in TileJSON.") - tiles = get_tileset_tiles(bounds=b, zoom=zoom, tms=tms) - if max_tiles_per_zoom is not None and len(tiles) > max_tiles_per_zoom: - tiles = tiles[:max_tiles_per_zoom] - return tiles - - return await benchmarker.benchmark_tiles( - dataset, tileset_strategy, warmup_per_zoom=1, **kwargs - ) - - -async def benchmark_statistics( - endpoint: str, - dataset: DatasetParams, - geometry: Optional[Union[Feature, Dict[str, Any]]] = None, - *, - timeout_s: float = 300.0, - max_connections: int = 10, - max_connections_per_host: int = 10, - **kwargs: Any, -) -> Dict[str, Any]: - """ - Benchmark the `/timeseries/statistics` endpoint for a geometry. - This high-level helper delegates to ``TiTilerCMRBenchmarker.benchmark_statistics``. - If `geometry` is omitted, the TileJSON bounds for the dataset/time range are - used to construct a bounding box feature. The result includes timing, - HTTP status, and the statistics payload keyed by timestep. - Parameters - ---------- - endpoint : str - Base URL of the TiTiler-CMR deployment. - dataset : DatasetParams - Dataset configuration. - geometry : Union[Feature, Dict[str, Any]], optional - GeoJSON Feature or geometry to analyze. If None, uses bounds from tilejson. - timeout_s : float, optional - Request timeout in seconds (default: 300.0). - max_connections : int, optional - Maximum total concurrent connections (default: 10). - max_connections_per_host : int, optional - Maximum concurrent connections per host (default: 10). - **kwargs : Any - Additional query parameters for the API. - - Returns - ------- - Dict[str, Any] - Statistics result with timing, memory, and metadata. - - """ - benchmarker = TiTilerCMRBenchmarker( - endpoint=endpoint, - timeout_s=timeout_s, - max_connections=max_connections, - max_connections_per_host=max_connections_per_host, - ) - return await benchmarker.benchmark_statistics(dataset, geometry, **kwargs) - - -class TiTilerCMRBenchmarker(BaseBenchmarker): - """ - Main benchmarking utility for TiTiler-CMR. - Supports benchmarking of tile rendering and statistics endpoints - across different strategies (viewport, tileset, custom). - """ - - def __init__( - self, - endpoint: str, - *, - tms_id: str = "WebMercatorQuad", - tile_format: str = "png", - tile_scale: int = 1, - min_zoom: int = 7, - max_zoom: int = 10, - max_concurrent: int = 32, - **base_kwargs: Any, - ): - super().__init__(endpoint, **base_kwargs) - self.tms_id = tms_id - self.tile_format = tile_format - self.tile_scale = tile_scale - self.min_zoom = min_zoom - self.max_zoom = max_zoom - self.max_concurrent = max_concurrent - - async def benchmark_tiles( - self, - dataset: DatasetParams, - tiling_strategy: Callable, - warmup_per_zoom: int = 1, - **kwargs: Any, - ) -> pd.DataFrame: - """ - Benchmark tile rendering performance for TiTiler-CMR. - It can be adopted for a viewport or whole tileset generation at a zoom level. - - Parameters - ---------- - dataset : DatasetParams - Dataset and query parameters (concept_id, backend, datetime_range, kwargs). - tiling_strategy : Callable - Function that returns tiles for a given zoom level. - Signature: (zoom, tms, tilejson_info) -> List[Tuple[int, int]] - warmup_per_zoom : int, optional - Number of warmup tiles to fetch per zoom level before timing. - Default is 1. - **kwargs : Any - Additional query parameters for the API. - - Returns - ------- - pd.DataFrame - Results for each tile request, including status, latency, and size. - """ - self._log_header("Tile Benchmark", dataset) - - tile_params = list( - dataset.to_query_params( - tile_format=self.tile_format, tile_scale=self.tile_scale, **kwargs - ) - ) - print(f"Query params: {len(tile_params)} parameters") - for k, v in tile_params: - print(f" {k}: {v}") - - async with self._create_http_client() as client: - tilejson_info = await self._get_tilejson_info(client, tile_params) - tiles_endpoints = tilejson_info["tiles_endpoints"] - tms = morecantile.tms.get(self.tms_id) - - # --- 1. Discover all tiles across all zoom levels --- - jobs = [] - per_zoom_tiles = {} - for zoom in range(self.min_zoom, self.max_zoom + 1): - tiles = tiling_strategy(zoom, tms, tilejson_info) - per_zoom_tiles[zoom] = tiles - for x, y in tiles: - jobs.append((zoom, x, y)) - - # --- 2. Set up global concurrency controls --- - sem = BoundedSemaphore(self.max_concurrent) - proc = psutil.Process() - jitter_ms = 5 - - async def _fetch_one_tile(z, x, y): - # Small jitter to de-synchronize requests - await asyncio.sleep((hash((z, x, y)) % jitter_ms) * 0.001) - - async with sem: - try: - return await fetch_tile( - client=client, - tiles_endpoints=tiles_endpoints, - z=z, - x=x, - y=y, - timeout_s=self.timeout_s, - proc=proc, - ) - except Exception as ex: - return [ - { - "zoom": z, - "x": x, - "y": y, - "is_error": True, - "ok": False, - "status_code": None, - "error_text": f"{type(ex).__name__}: {ex}", - } - ] - - # --- 3. Run warmup requests (bypassing semaphore) --- - warmed_tiles = set() - if warmup_per_zoom > 0: - for zoom, tiles in per_zoom_tiles.items(): - for x, y in tiles[:warmup_per_zoom]: - if (zoom, x, y) not in warmed_tiles: - try: - await fetch_tile( - client=client, - tiles_endpoints=tiles_endpoints, - z=zoom, - x=x, - y=y, - timeout_s=self.timeout_s, - proc=proc, - ) - warmed_tiles.add((zoom, x, y)) - except Exception: - pass # Ignore warmup failures - - # --- 4. Create and run main benchmark tasks --- - tasks_to_run = [ - asyncio.create_task(_fetch_one_tile(z, x, y)) for z, x, y in jobs - ] - - run_started_at = time.perf_counter() - all_rows = [] - for future in asyncio.as_completed(tasks_to_run): - result = await future - if isinstance(result, list): - all_rows.extend(result) - - run_elapsed = time.perf_counter() - run_started_at - print(f"Total execution time: {run_elapsed:.3f}s") - - # Add total elapsed time to each record - for r in all_rows: - r["total_run_elapsed_s"] = run_elapsed - - return self._process_results(all_rows) - - async def check_compatibility( - self, - dataset: DatasetParams, - geometry: Optional[Union[Feature, Dict[str, Any]]] = None, - bounds_fraction: float = 0.05, - **kwargs: Any, - ) -> Dict[str, Any]: - """ - Check dataset compatibility with TiTiler-CMR `/compatibility` endpoint. - - Parameters - ---------- - dataset : DatasetParams - Dataset configuration. - geometry : Union[Feature, Dict[str, Any]], optional - GeoJSON Feature or geometry for statistics test. - bounds_fraction : float, optional - Fraction of dataset area to use for random bounds when geometry is None - (default: 0.05 = 5% of area). - **kwargs : Any - Additional query parameters. - - Returns - ------- - Dict[str, Any] - Compatibility result with timing and metadata. - """ - self._log_header("Compatibility Check", dataset) - - issue_detected = False - tilejson_info: Dict[str, Any] = {} - n_timesteps: int = 0 - stats_result: Dict[str, Any] = {"success": False, "statistics": {}} - - try: - async with self._create_http_client() as client: - # Build params WITHOUT tile-format/scale extras for this preflight - tile_params = list(dataset.to_query_params(**kwargs)) - - # 1) TileJSON — discover tiles (timesteps/granules) and bounds - tilejson_info = await self._get_tilejson_info(client, tile_params) - tiles_endpoints = tilejson_info.get("tiles_endpoints", []) - n_timesteps = len(tiles_endpoints) - print(f"Found {n_timesteps} timesteps/granules from TileJSON") - - # 2) Geometry fallback from bounds - if geometry is None: - bounds = tilejson_info.get("bounds") - if not bounds: - raise ValueError( - "No geometry provided and no bounds available from TileJSON" - ) - geometry = create_bbox_feature(*bounds) - random_bounds = generate_random_bounds_within( - bounds, fraction=bounds_fraction - ) # 5% of area - geometry = create_bbox_feature(*random_bounds) - print( - f"Using random bounds for compatibility check: {random_bounds}" - ) - - # 3) Run a small statistics preview to ensure server-side flow works - stats_result = await self._fetch_statistics( - client=client, - dataset=dataset, - geometry=geometry, - **kwargs, - ) - - except httpx.HTTPStatusError as ex: - response = ex.response - status_code = response.status_code - error_text = response.text - print(f"HTTP {status_code} error during compatibility check") - issue_detected = True - stats_result = { - "success": False, - "elapsed_s": 0, - "status_code": status_code, - "n_timesteps": 0, - "url": str(response.request.url), - "statistics": {}, - "error": f"HTTP {status_code}: {error_text}", - } - - except Exception as ex: - print(f"Compatibility check failed: {ex}") - issue_detected = True - stats_result = {"success": False, "error": str(ex)} - - if stats_result.get("success"): - print(f"Statistics returned {len(stats_result['statistics'])} timesteps") - compatibility_status = "compatible" - - else: - print(f"Statistics request failed: {stats_result.get('error')}") - issue_detected = True - - compatibility_status = ( - "compatible" - if (n_timesteps > 0 and not issue_detected) - else "issues_detected" - ) - - return { - "concept_id": dataset.concept_id, - "backend": dataset.backend, - "n_timesteps": n_timesteps, - "tilejson_bounds": tilejson_info.get("bounds"), - "statistics": ( - self._statistics_to_dataframe(stats_result.get("statistics", {})) - if stats_result.get("success") - else pd.DataFrame() - ), - "compatibility": compatibility_status, - "success": compatibility_status == "compatible", - "compatible": compatibility_status == "compatible", - "error": stats_result.get("error") if issue_detected else None, - } - - async def benchmark_statistics( - self, - dataset: DatasetParams, - geometry: Optional[Union[Feature, Dict[str, Any]]] = None, - **kwargs: Any, - ) -> Dict[str, Any]: - """ - Benchmark statistics endpoint performance with timing and memory metrics. - - Parameters - ---------- - dataset : DatasetParams - Dataset configuration. - geometry : Union[Feature, Dict[str, Any]], optional - GeoJSON Feature or geometry to analyze. If None, uses bounds from tilejson. - **kwargs : Any - Additional query parameters. - - Returns - ------- - Dict[str, Any] - Statistics result with timing, memory, and metadata. - """ - self._log_header("Statistics Benchmark", dataset) - async with self._create_http_client() as client: - if geometry is None: - raise ValueError("No geometry provided!") - return await self._fetch_statistics( - client=client, dataset=dataset, geometry=geometry, **kwargs - ) - - async def _fetch_statistics( - self, - client: httpx.AsyncClient, - dataset: DatasetParams, - geometry: Union[Feature, Dict[str, Any]], - **kwargs: Any, - ) -> Dict[str, Any]: - """ - Posts the provided GeoJSON Feature or raw geometry to the TiTiler-CMR - `/timeseries/statistics` endpoint and returns per-timestep summary - statistics for pixels intersecting the geometry. - - Parameters - ---------- - client : httpx.AsyncClient - HTTP client for requests. - dataset : DatasetParams - Dataset configuration. - geometry : Union[Feature, Dict[str, Any]] - GeoJSON Feature or geometry. - **kwargs : Any - Additional query parameters. - - Returns - ------- - Dict[str, Any] - Statistics result and metadata and timing. - """ - url = f"{self.endpoint.rstrip('/')}/timeseries/statistics" - tile_params = dict(dataset.to_query_params(**kwargs)) - - if hasattr(geometry, "model_dump"): - geojson_body = geometry.model_dump(exclude_none=True) - elif isinstance(geometry, dict): - geojson_body = geometry - else: - raise ValueError("geometry must be a GeoJSON Feature or dict") - - try: - data, elapsed, status = await self._request_json( - client, - method="POST", - url=url, - params=tile_params, - json_payload=geojson_body, - timeout_s=self.timeout_s, - ) - - stats = data.get("properties", {}).get("statistics", {}) - return { - "success": True, - "elapsed_s": elapsed, - "status_code": status, - "n_timesteps": len(stats) if isinstance(stats, dict) else 0, - "url": url, - "statistics": stats, - "error": None, - } - except Exception as ex: - return { - "success": False, - "elapsed_s": 0, - "status_code": None, - "n_timesteps": 0, - "url": url, - "statistics": {}, - "error": f"{type(ex).__name__}: {ex}", - } - - async def _get_tilejson_info( - self, client: httpx.AsyncClient, params: List[Tuple[str, str]] - ) -> Dict[str, Any]: - """ - Query TiTiler-CMR TileJSON and return parsed tiles endpoints, and bounds. - - Parameters - ---------- - client : httpx.AsyncClient - HTTP client for requests. - params : list of tuple - Query parameters for the request. - - Returns - ------- - dict - Dictionary with entries, tilejson, tile endpoints, and bounds. - """ - url = f"{self.endpoint.rstrip('/')}/{self.tms_id}/tilejson.json" - ts_json, _, _ = await self._request_json( - client, - method="GET", - url=url, - params=dict(params), - timeout_s=self.timeout_s, - ) - tiles_endpoints = ts_json.get("tiles", []) - - if not tiles_endpoints: - raise RuntimeError("No tile endpoints found in TileJSON response") - - bounds = ts_json.get("bounds") - return { - "tilejson": ts_json, - "tiles_endpoints": tiles_endpoints, - "bounds": bounds, - } - - async def _request_json( - self, - client: httpx.AsyncClient, - *, - method: str, - url: str, - timeout_s: float, - params: Optional[Dict[str, Any]] = None, - json_payload: Optional[Dict[str, Any]] = None, - ) -> Tuple[Dict[str, Any], float, int]: - """ - Unified JSON request helper for GET/POST with consistent error handling. - Returns - ------- - (payload, elapsed_s, status_code) - """ - t0 = time.perf_counter() - try: - if method.upper() == "GET": - response = await client.get(url, params=params or {}, timeout=timeout_s) - elif method.upper() == "POST": - response = await client.post( - url, params=params or {}, json=json_payload, timeout=timeout_s - ) - else: - raise ValueError(f"Unsupported HTTP method: {method!r}") - response.raise_for_status() - elapsed = time.perf_counter() - t0 - data = response.json() - return data if isinstance(data, dict) else {}, elapsed, response.status_code - except httpx.HTTPStatusError as ex: - response = ex.response - elapsed = time.perf_counter() - t0 - print("~~~~~~~~~~~~~~~~ ERROR JSON REQUEST ~~~~~~~~~~~~~~~~") - print(f"URL: {response.request.url}") - print(f"Error: {response.status_code} {response.reason_phrase}") - print(f"Body: {response.text}") - raise - - @staticmethod - def _statistics_to_dataframe(stats: Dict[str, Any]) -> pd.DataFrame: - """ - Flatten TiTiler-CMR statistics dict into a DataFrame, assuming - inner and outer timestamps match. Histogram arrays are dropped. - Output columns: - - timestamp (ISO8601 string) - - scalar metrics (min, max, mean, count, sum, std, median, majority, - minority, unique, valid_percent, masked_pixels, valid_pixels, - percentile_2, percentile_98) - """ - rows: List[Dict[str, Any]] = [] - if not isinstance(stats, dict): - return pd.DataFrame() - for _, inner in stats.items(): - if not isinstance(inner, dict) or not inner: - continue - inner_ts, metrics = next(iter(inner.items())) - if not isinstance(metrics, dict): - continue - row: Dict[str, Any] = {"timestamp": inner_ts} - for k, v in metrics.items(): - if k == "histogram": - continue - row[k] = v - rows.append(row) - df = pd.DataFrame(rows) - for col in df.columns: - if col != "timestamp": - df[col] = pd.to_numeric(df[col]) - if not df.empty and "timestamp" in df.columns: - df = df.sort_values("timestamp") - return df.reset_index(drop=True) - - -def generate_random_bounds_within( - parent_bounds: List[float], fraction: float = 0.1 -) -> List[float]: - """ - Generate random bounds within parent bounds. - - Parameters - ---------- - parent_bounds : List[float] - Parent bounding box [min_lon, min_lat, max_lon, max_lat] - fraction : float, optional - Approximate fraction of parent area to cover (default: 0.1 = 10%) - - Returns - ------- - List[float] - Random bounding box [min_lon, min_lat, max_lon, max_lat] within parent - """ - min_lon, min_lat, max_lon, max_lat = parent_bounds - - # Calculate dimensions - lon_range = max_lon - min_lon - lat_range = max_lat - min_lat - - # Calculate size of random box (square root to get linear dimension from area fraction) - scale = fraction**0.5 - random_lon_size = lon_range * scale - random_lat_size = lat_range * scale - - # Generate random center point with enough margin for the box - margin_lon = random_lon_size / 2 - margin_lat = random_lat_size / 2 - - center_lon = random.uniform(min_lon + margin_lon, max_lon - margin_lon) - center_lat = random.uniform(min_lat + margin_lat, max_lat - margin_lat) - - # Create random bounds around the center - random_bounds = [ - center_lon - margin_lon, # min_lon - center_lat - margin_lat, # min_lat - center_lon + margin_lon, # max_lon - center_lat + margin_lat, # max_lat - ] - - return random_bounds - - -def tiling_benchmark_summary(df): - """ - Compute and (optionally) print summary statistics for tile benchmark results. - Groups by zoom level and reports: - - n_tiles - - ok_pct, no_data_pct, error_pct - - median_latency_s, p95_latency_s - - Parameters - ---------- - df : pandas.DataFrame - Raw per-tile results with at least ``zoom`` ``ok``, and ``response_time_sec``. - - Returns - ------- - pandas.DataFrame - Summary statistics by zoom level (count, median, p95, etc.). - """ - for col in ["response_time_sec"]: - if col not in df.columns: - raise KeyError( - f"Required column '{col}' not found. Available columns: {list(df.columns)}" - ) - df[col] = pd.to_numeric(df[col], errors="coerce") - - summary = ( - df.groupby(["zoom"], dropna=False) - .apply( - lambda g: pd.Series( - { - "n_tiles": int(len(g)), - "ok_pct": 100.0 * (g["ok"].sum() / len(g)) if len(g) else 0.0, - "no_data_pct": 100.0 * (g["no_data"].sum() / len(g)) - if len(g) - else 0.0, - "error_pct": 100.0 * (g["is_error"].sum() / len(g)) - if len(g) - else 0.0, - "median_latency_s": g["response_time_sec"].median(), - "p95_latency_s": g["response_time_sec"].quantile(0.95), - } - ), - include_groups=False, - ) - .reset_index() - .sort_values(["zoom"]) - ) - return summary - - -__all__ = [ - "check_titiler_cmr_compatibility", - "benchmark_viewport", - "benchmark_tileset", - "benchmark_statistics", - "tiling_benchmark_summary", - "TiTilerCMRBenchmarker", -] - - -if __name__ == "__main__": - - async def main(): - """Example usage of the unified TiTiler-CMR benchmarking system.""" - endpoint = "https://staging.openveda.cloud/api/titiler-cmr" - - ds_xarray = DatasetParams( - concept_id="C2723754864-GES_DISC", - backend="xarray", - datetime_range="2022-03-01T00:00:01Z/2022-03-01T23:59:59Z", - variable="precipitation", - step="P1D", - temporal_mode="point", - ) - - ds_hls = DatasetParams( - concept_id="C2036881735-POCLOUD", - backend="rasterio", - datetime_range="2024-10-01T00:00:01Z/2024-10-10T00:00:01Z", - bands=["B04", "B03", "B02"], - bands_regex="B[0-9][0-9]", - step="P1D", - temporal_mode="point", - ) - - print("\n=== Example 1: Viewport Tile Benchmarking [Xarray]===") - df_viewport = await benchmark_viewport( - endpoint=endpoint, - dataset=ds_xarray, - lng=-95.0, - lat=29.0, - viewport_width=4, - viewport_height=4, - min_zoom=5, - max_zoom=18, - timeout_s=60.0, - max_concurrent=32, - ) - - print(f"Viewport results: {len(df_viewport)} tile requests") - print(df_viewport.head()) - print(tiling_benchmark_summary(df_viewport)) - - print("\n=== Example 2: Viewport Tile Benchmarking [RasterIO]===") - df_viewport2 = await benchmark_viewport( - endpoint=endpoint, - dataset=ds_hls, - lng=29, - lat=25.0, - viewport_width=4, - viewport_height=4, - min_zoom=7, - max_zoom=18, - timeout_s=60.0, - max_concurrent=32, - ) - print(f"Viewport results: {len(df_viewport2)} tile requests") - print(df_viewport2.head()) - print(tiling_benchmark_summary(df_viewport2)) - - print("\n=== Example 3: Tileset Tile Benchmarking ===") - gulf_bounds = [-98.676, 18.857, -95.623, 31.097] - df_tileset = await benchmark_tileset( - endpoint=endpoint, - dataset=ds_hls, - bounds=gulf_bounds, - max_tiles_per_zoom=25, - min_zoom=7, - max_zoom=18, - timeout_s=60.0, - max_concurrent=32, - ) - - print(f"Tileset results: {len(df_tileset)} tile requests") - print(tiling_benchmark_summary(df_tileset)) - - print("\n=== Example 4: Statistics Benchmarking ===") - gulf_geometry = create_bbox_feature(-98.676, 18.857, -81.623, 31.097) - stats_result = await benchmark_statistics( - endpoint=endpoint, - dataset=ds_xarray, - geometry=gulf_geometry, - timeout_s=300.0, - ) - print("Statistics result:") - print(f" Success: {stats_result['success']}") - print(f" Elapsed: {stats_result['elapsed_s']:.2f}s") - print(f" Timesteps: {stats_result['n_timesteps']}") - print( - f" Statistics keys: {list(stats_result.get('statistics', {}).keys())[:3]}..." - ) - - print("\n=== Example 5: Compatibility Test ===") - - result = await check_titiler_cmr_compatibility( - endpoint=endpoint, - dataset=ds_xarray, - bounds_fraction=0.01, - ) - - print("Compatibility result:") - print(f"{result}") - print(result["compatibility"]) - - asyncio.run(main()) diff --git a/packages/datacube-benchmark/src/datacube_benchmark/titiler/config.py b/packages/datacube-benchmark/src/datacube_benchmark/titiler/config.py deleted file mode 100644 index 25290ae..0000000 --- a/packages/datacube-benchmark/src/datacube_benchmark/titiler/config.py +++ /dev/null @@ -1,120 +0,0 @@ -from dataclasses import dataclass -from typing import Any, Dict, List, Sequence, Tuple - - -# ------------------------------ -# Dataclasses -# ------------------------------ -from typing import Optional - - -@dataclass -class DatasetParams: - """ - Encapsulates parameters for requesting tiles from TiTiler-CMR. - - Required: - concept_id (str): CMR concept ID for the dataset. - backend (str): Backend type, e.g., "xarray" or "rasterio". - datetime_range (str): ISO8601 interval, e.g., "2024-10-01T00:00:00Z/2024-10-10T00:00:00Z". - - Optional (backend-dependent): - variable (str): For xarray backend, the variable name. - bands (Sequence[str]): For rasterio backend, list of bands. - bands_regex (str): For rasterio backend, regex for band selection. - rescale (str): Rescale range for visualization. - colormap_name (str): Colormap name for visualization. - resampling (str): Resampling method. - step (str): Temporal stepping, e.g., "P1D". - temporal_mode (str): Temporal aggregation mode, e.g., "point". - minzoom (int): Minimum zoom level. - maxzoom (int): Maximum zoom level. - tile_format (str): Output tile format. - tile_scale (int): Tile scaling factor. - **others**: Extend as needed. - - Raises: - ValueError: If required backend-specific fields are missing. - """ - - concept_id: str - backend: str - datetime_range: str - - # Xarray - variable: Optional[str] = None - - # Rasterio - bands: Optional[Sequence[str]] = None - bands_regex: Optional[str] = None - - # Common optional params - rescale: Optional[str] = None - colormap_name: Optional[str] = None - resampling: Optional[str] = None - step: Optional[str] = None - temporal_mode: Optional[str] = None - minzoom: Optional[int] = None - maxzoom: Optional[int] = None - tile_format: Optional[str] = None - tile_scale: Optional[int] = None - - def to_query_params(self, **extra_kwargs: Any) -> List[Tuple[str, str]]: - """ - Convert dataset parameters into query parameters for TiTiler-CMR. - - Combines required fields and all additional keyword arguments, filtering - out None values and converting types as needed. - - Raises: - ValueError: If required backend-specific fields are missing. - """ - params: List[Tuple[str, str]] = [ - ("concept_id", self.concept_id), - ("backend", self.backend), - ("datetime", self.datetime_range), - ] - - # Backend-specific validation - if self.backend == "xarray": - if not self.variable: - raise ValueError("For backend='xarray', 'variable' must be provided.") - elif self.backend == "rasterio": - if not (self.bands and self.bands_regex): - raise ValueError( - "For backend='rasterio', 'bands' and 'bands_regex' must be provided." - ) - - # Collect from dataclass fields - all_kwargs: Dict[str, Any] = { - "variable": self.variable, - "bands": self.bands, - "bands_regex": self.bands_regex, - "rescale": self.rescale, - "colormap_name": self.colormap_name, - "resampling": self.resampling, - "step": self.step, - "temporal_mode": self.temporal_mode, - "minzoom": self.minzoom, - "maxzoom": self.maxzoom, - "tile_format": self.tile_format, - "tile_scale": self.tile_scale, - } - all_kwargs.update(extra_kwargs) - - for k, v in all_kwargs.items(): - if v is None: - continue - if isinstance(v, bool): - params.append((k, "true" if v else "false")) - elif isinstance(v, (int, float)): - params.append((k, str(v))) - elif isinstance(v, (list, tuple, set)): - for item in v: - if item is not None: - params.append((k, str(item))) - elif isinstance(v, str): - params.append((k, v)) - else: - print(f"Unexpected type for param '{k}': {type(v)}. Value: {v}") - return params diff --git a/packages/datacube-benchmark/src/datacube_benchmark/titiler/utils.py b/packages/datacube-benchmark/src/datacube_benchmark/titiler/utils.py deleted file mode 100644 index faf16fe..0000000 --- a/packages/datacube-benchmark/src/datacube_benchmark/titiler/utils.py +++ /dev/null @@ -1,365 +0,0 @@ -""" -Utilities for working with XYZ/WebMercator tiles and async tile fetching. -These are reusable helper functions for map tiling that are independent of any specific -benchmarking or rendering workflow. They are primarily exercised by -TiTiler-CMR benchmarking code, but are also applicable to other contexts where -tile math and asynchronous HTTP fetching are needed. -""" - -from __future__ import annotations - -import time -from typing import Any, Dict, List, Optional, Tuple - -import httpx -import morecantile -import psutil -import pandas as pd -from geojson_pydantic import Feature, Polygon - -from .config import DatasetParams - - -def get_surrounding_tiles( - center_x: int, - center_y: int, - zoom: int, - width: int, - height: int, -) -> list[tuple[int, int]]: - """ - Get a list of surrounding tile coordinates for a viewport around (center_x, center_y). - This function builds a `width × height` viewport centered on the given tile at the specified zoom level. - from https://github.com/developmentseed/titiler-cmr/blob/develop/tests/test_hls_benchmark.py - - Parameters - ---------- - center_x : int - X index of the center tile. - center_y : int - Y index of the center tile. - zoom : int - WebMercator zoom level. - width : int - Viewport width in tiles. - height : int - Viewport height in tiles. - - Returns - ------- - list of tuple of int - List of (x, y) tile indices covering the viewport (row-major order). - """ - if width <= 0 or height <= 0: - raise ValueError("width and height must be > 0") - - tiles: list[tuple[int, int]] = [] - offset_x = width // 2 - offset_y = height // 2 - max_tile = _max_tile_index(zoom) - - for y_pos in range(center_y - offset_y, center_y + offset_y + 1): - for x_pos in range(center_x - offset_x, center_x + offset_x + 1): - x_valid = max(0, min(x_pos, max_tile)) - y_valid = max(0, min(y_pos, max_tile)) - tiles.append((x_valid, y_valid)) - return tiles - - -def get_tileset_tiles( - bounds: List[float], zoom: int, tms: morecantile.TileMatrixSet -) -> List[Tuple[int, int]]: - """ - Get all tiles for a complete zoom level within bounds. - - Parameters - ---------- - bounds : List[float] - Bounding box [minx, miny, maxx, maxy] in CRS coordinates - zoom : int - Zoom level - tms : morecantile.TileMatrixSet - Tile matrix set - - Returns - ------- - List[Tuple[int, int]] - List of (x, y) tile coordinates - """ - minx, miny, maxx, maxy = bounds - - # Get tile bounds for the bbox - ul_tile = tms.tile(minx, maxy, zoom) - lr_tile = tms.tile(maxx, miny, zoom) - - tiles = [ - (x, y) - for x in range(min(ul_tile.x, lr_tile.x), max(ul_tile.x, lr_tile.x) + 1) - for y in range(min(ul_tile.y, lr_tile.y), max(ul_tile.y, lr_tile.y) + 1) - ] - - return tiles - - -async def fetch_tile( - client: httpx.AsyncClient, - *, - tiles_endpoints: List[str], - z: int, - x: int, - y: int, - timeout_s: float = 30.0, - proc: Optional[psutil.Process] = None, -) -> List[Dict[str, Any]]: - """ - For a single (z,x,y), iterate over all tiles endpoints, GET the tile, print status, - and return one record per request. - - Parameters - ---------- - client : httpx.AsyncClient - The HTTP client to use for requests. - tiles_endpoints : list of str - URL templates containing {z}, {x}, and {y}. - z, x, y : int - Tile coordinates. - timeout_s : float - Per-request timeout (seconds). - proc : psutil.Process, optional - Process to sample RSS. - - Returns - ------- - List[Dict[str, Any]] - One dictionary per endpoint with fields: - zoom/z/x/y, timestep_index, url, status_code, ok, no_data, is_error, - ttfb_sec, transfer_time_sec, response_time_sec, - response_size_bytes, content_type, error_text, rss_delta, - sched_delay_sec (if started_at provided) - """ - rows: List[Dict[str, Any]] = [] - - for i, tmpl in enumerate(tiles_endpoints): - tile_url = tmpl.format(z=z, x=x, y=y) - t0 = time.perf_counter() - try: - resp = await client.get(tile_url, timeout=timeout_s) - total = time.perf_counter() - t0 - - status_code = resp.status_code - ctype = resp.headers.get("content-type") - size = len(resp.content) - is_ok = status_code == 200 - is_no_data = status_code == 204 - is_error = not (200 <= status_code < 300) - - resp.raise_for_status() - - rows.append( - { - "zoom": z, - "x": x, - "y": y, - "status_code": status_code, - "ok": is_ok, - "no_data": is_no_data, - "is_error": is_error, - "response_time_sec": total, - "content_type": ctype, - "response_size_bytes": size, - "url": tile_url, - "error_text": None, - } - ) - - except httpx.HTTPStatusError as ex: - response = ex.response - status_code = response.status_code - error_text = response.text - print("~~~~~~~~~~~~~~~~ ERROR FETCHING TILE ~~~~~~~~~~~~~~~~") - print(f"URL: {response.request.url}") - print(f"Error: {response.status_code}") # <-- status + reason phrase - print(f": {response.text}") - rows.append( - { - "zoom": z, - "x": x, - "y": y, - "status_code": status_code, - "ok": False, - "no_data": False, - "is_error": True, - "response_time_sec": float("nan"), - "response_size_bytes": 0, - "content_type": None, - "url": tile_url, - "error_text": error_text, - } - ) - - return rows - - -def create_bbox_feature(minx: float, miny: float, maxx: float, maxy: float) -> Feature: - """ - Create a GeoJSON Feature from bounding box coordinates. - - Parameters - ---------- - minx, miny, maxx, maxy : float - Bounding box coordinates. - - Returns - ------- - Feature - GeoJSON Feature representing the bounding box. - """ - return Feature( - type="Feature", - geometry=Polygon.from_bounds(minx, miny, maxx, maxy), - properties={}, - ) - - -def _max_tile_index(z: int) -> int: - """ - Compute the maximum valid XYZ tile index for a given zoom level. - - At zoom level `z`, the map is subdivided into 2**z tiles along each axis - (x and y). The valid tile indices therefore range from 0 to (2**z - 1). - This helper returns the maximum valid index for both axes. - - Parameters - ---------- - z : int - Zoom level (must be greater than or equal to 0). - - Returns - ------- - int - The maximum valid tile index at zoom ``z`` - (i.e., ``2**z - 1``). - - Raises - ------ - ValueError - If `z` is negative. - """ - if z < 0: - raise ValueError("zoom must be >= 0") - return (1 << z) - 1 - - -# Base benchmarker with shared functionality -class BaseBenchmarker: - """ - Base class for TiTiler benchmarking infrastructure. - - Provides system info, HTTP client setup, and result processing utilities - for derived benchmarker classes. - """ - - def __init__( - self, - endpoint: str, - *, - timeout_s: float = 30.0, - max_connections: int = 20, - max_connections_per_host: int = 20, - ): - self.endpoint = endpoint - self.timeout_s = timeout_s - self.max_connections = max_connections - self.max_connections_per_host = max_connections_per_host - self._system_info = self._get_system_info() - - def _create_http_client(self) -> httpx.AsyncClient: - """Create configured HTTP client.""" - limits = httpx.Limits( - max_connections=self.max_connections, - max_keepalive_connections=self.max_connections_per_host, - ) - return httpx.AsyncClient(limits=limits, timeout=self.timeout_s) - - def _get_system_info(self) -> str: - """Get system information string.""" - return ( - f"{psutil.cpu_count(logical=False)} physical / " - f"{psutil.cpu_count(logical=True)} logical cores | " - f"RAM: {self._fmt_bytes(psutil.virtual_memory().total)}" - ) - - @staticmethod - def _fmt_bytes(n: int | float) -> str: - """ - Convert bytes into a human-readable string (KiB, MiB, GiB...). - """ - n = float(n) - - sign = "-" if n < 0 else "" - n = abs(n) - units = ["B", "KiB", "MiB", "GiB", "TiB", "PiB"] - i = 0 - while n >= 1024 and i < len(units) - 1: - n /= 1024.0 - i += 1 - - return f"{sign}{n:.2f} {units[i]}" - - def _process_results(self, results: List[Any]) -> pd.DataFrame: - """ - Designed for post-processing the output of ``asyncio.gather`` used in - tile benchmarking. Handles dicts, lists of dicts, and exceptions, - flattening them into rows and optionally sorting by tiling dimensions. - - Parameters - ---------- - results : List[Any] - List of results from ``asyncio.gather``, which may include - dictionaries, lists of dictionaries, or exceptions. - - Returns - ------- - pd.DataFrame - A DataFrame containing all successful results, sorted by - available tiling dimensions (z, y, x, timestep_index, ....) - """ - all_rows = [] - - for result in results: - if isinstance(result, Exception): - print(f"Task error: {result}") - continue - if isinstance(result, list): - all_rows.extend(result) - elif isinstance(result, dict): - all_rows.append(result) - - df = pd.DataFrame(all_rows) - - if df.empty: - print("Warning: No successful results") - return df - - sort_cols = [ - col for col in ["z", "y", "x", "timestep_index"] if col in df.columns - ] - if sort_cols: - df = df.sort_values(sort_cols).reset_index(drop=True) - - return df - - def _log_header(self, benchmark_name: str, dataset: DatasetParams) -> None: - """ - Log standardized benchmark header with system and dataset information. - - Parameters - ---------- - benchmark_name : str - Name of the benchmark being executed. - dataset : DatasetParams - Dataset configuration being benchmarked. - """ - print(f"=== TiTiler-CMR {benchmark_name} ===") - print(f"Client: {self._system_info}") - print(f"Dataset: {dataset.concept_id} ({dataset.backend})") diff --git a/packages/datacube-benchmark/src/datacube_benchmark/types.py b/packages/datacube-benchmark/src/datacube_benchmark/types.py deleted file mode 100644 index 80676b7..0000000 --- a/packages/datacube-benchmark/src/datacube_benchmark/types.py +++ /dev/null @@ -1,5 +0,0 @@ -from typing import Literal - -TARGET_SHAPES = Literal["pancake", "dumpling", "churro"] - -__all__ = ["TARGET_SHAPES"] diff --git a/packages/datacube-benchmark/src/datacube_benchmark/utils.py b/packages/datacube-benchmark/src/datacube_benchmark/utils.py deleted file mode 100644 index aeb3981..0000000 --- a/packages/datacube-benchmark/src/datacube_benchmark/utils.py +++ /dev/null @@ -1,59 +0,0 @@ -import obstore as obs -import pyarrow as pa -import re -from zarr import Array - - -def validate_object_store_contains_zarr(object_store: obs.store.ObjectStore) -> None: - """ - Validate that all keys in the object store match the Zarr structure. - """ - zarr_json_pattern = r"^.*zarr\.json$" - chunk_pattern = r"^.*/c/\d+(?:/\d+)*$" - combined_pattern = f"({zarr_json_pattern})|({chunk_pattern})" - - stream = object_store.list(return_arrow=True) - paths = stream.collect().column("path").to_pylist() - invalid_paths = [] - - for path in paths: - if not re.match(combined_pattern, path): - invalid_paths.append(path) - if invalid_paths: - raise ValueError( - f"Invalid paths found under {object_store}'s prefix: {invalid_paths}. " - "All paths must match the Zarr structure." - ) - - -def array_storage_size(array: Array) -> int: - """ - Calculate the total storage size of a Zarr array by summing the sizes of its chunks. - """ - chunk_pattern = r"^.*/c/\d+(?:/\d+)*$" - stream = array.store.store.list(return_arrow=True, prefix=array.path) # type: ignore[attr-defined] - df = pa.record_batch(stream.collect()).to_pandas() - df = df[df["path"].str.match(chunk_pattern)] - return df["size"].sum() - - -def number_of_objects( - object_store: obs.store.ObjectStore, -) -> int: - """ - Count the number of objects in the object store with the given prefix. - - Parameters - ---------- - object_store - The object store to count objects in. - - Returns - ------- - int - The number of objects with the given prefix. - """ - return len(object_store.list().collect()) - - -__all__ = ["number_of_objects"] diff --git a/pyproject.toml b/pyproject.toml index a980cbe..a75aeb6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,6 @@ description = "Add your description here" readme = "README.md" requires-python = ">=3.13" dependencies = [ - "datacube-benchmark", "hvplot>=0.11.3", "matplotlib>=3.10.3", ] @@ -58,6 +57,3 @@ dev-dependencies = [ "ruff>=0.12.0", "ipywidgets>=8.1.7", ] - -[tool.mypy] -files = ["packages/datacube-benchmark/src/datacube_benchmark"] diff --git a/uv.lock b/uv.lock index 4352eaf..1fde69b 100644 --- a/uv.lock +++ b/uv.lock @@ -2,30 +2,6 @@ version = 1 revision = 1 requires-python = ">=3.13" -[manifest] -members = [ - "datacube-benchmark", - "datacube-guide", -] - -[[package]] -name = "aiobotocore" -version = "2.23.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "aiohttp" }, - { name = "aioitertools" }, - { name = "botocore" }, - { name = "jmespath" }, - { name = "multidict" }, - { name = "python-dateutil" }, - { name = "wrapt" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/f6/1d/babe191fa10a7ecda6c6832c08231536c60cc33b4cddfb3b72133505673e/aiobotocore-2.23.1.tar.gz", hash = "sha256:a59f2a78629b97d52f10936b79c73de64e481a8c44a62c1871f088df6c1afc4f", size = 115869 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/92/d9/25a697a959a7149c93efa4d849421aa5f22bcb82350ac89b4284b0b88aa8/aiobotocore-2.23.1-py3-none-any.whl", hash = "sha256:d81c54d2eae2406ea9a473fea518fed580cf37bc4fc51ce43ba81546e5305114", size = 84219 }, -] - [[package]] name = "aiohappyeyeballs" version = "2.6.1" @@ -81,15 +57,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/1a/99/84ba7273339d0f3dfa57901b846489d2e5c2cd731470167757f1935fffbd/aiohttp_retry-2.9.1-py3-none-any.whl", hash = "sha256:66d2759d1921838256a05a3f80ad7e724936f083e35be5abb5e16eed6be6dc54", size = 9981 }, ] -[[package]] -name = "aioitertools" -version = "0.12.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/06/de/38491a84ab323b47c7f86e94d2830e748780525f7a10c8600b67ead7e9ea/aioitertools-0.12.0.tar.gz", hash = "sha256:c2a9055b4fbb7705f561b9d86053e8af5d10cc845d22c32008c43490b2d8dd6b", size = 19369 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/85/13/58b70a580de00893223d61de8fea167877a3aed97d4a5e1405c9159ef925/aioitertools-0.12.0-py3-none-any.whl", hash = "sha256:fc1f5fac3d737354de8831cbba3eb04f79dd649d8f3afb4c5b114925e662a796", size = 24345 }, -] - [[package]] name = "aiosignal" version = "1.3.2" @@ -120,19 +87,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/89/03/a851e84fcbb85214dc637b6378121ef9a0dd61b4c65264675d8a5c9b1ae7/antlr4_python3_runtime-4.13.2-py3-none-any.whl", hash = "sha256:fe3835eb8d33daece0e799090eda89719dbccee7aa39ef94eed3818cafa5a7e8", size = 144462 }, ] -[[package]] -name = "anyio" -version = "4.10.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "idna" }, - { name = "sniffio" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/f1/b4/636b3b65173d3ce9a38ef5f0522789614e590dab6a8d505340a4efe4c567/anyio-4.10.0.tar.gz", hash = "sha256:3f3fae35c96039744587aa5b8371e7e8e603c0702999535961dd336026973ba6", size = 213252 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/6f/12/e5e0282d673bb9746bacfb6e2dba8719989d3660cdb2ea79aee9a9651afb/anyio-4.10.0-py3-none-any.whl", hash = "sha256:60e474ac86736bbfd6f210f7a61218939c318f43f9972497381f1c5e930ed3d1", size = 107213 }, -] - [[package]] name = "appnope" version = "0.1.4" @@ -142,26 +96,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/81/29/5ecc3a15d5a33e31b26c11426c45c501e439cb865d0bff96315d86443b78/appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c", size = 4321 }, ] -[[package]] -name = "arro3-core" -version = "0.5.1" -source = { registry = "https://pypi.org/simple" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ce/3f/52336dca7f4784b778d458f7071e5746db33825cb57509fd35196522e5df/arro3_core-0.5.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:bb7fba3c4324db78615b5440ac51f46022ce7674489d96f8916491c117102e47", size = 2438140 }, - { url = "https://files.pythonhosted.org/packages/b0/02/32d2c8fa81b33e587b9b6be0a71a0e46523f50f1b20d1903b0fb3f1d9cad/arro3_core-0.5.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:39bad825cb042f22be5f5ab019844541398a3393d154e3675013b4ebb825b3b9", size = 2145410 }, - { url = "https://files.pythonhosted.org/packages/d1/72/4632d4240f2d10de16050314263932c80a7bfabab22688e3dcdc1505a0d6/arro3_core-0.5.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c6520a6cc6e22fe2f8064dc8e4f93961e05fb9a486c921f71a5ef49843c27d24", size = 2591203 }, - { url = "https://files.pythonhosted.org/packages/03/c6/8fd3fcf7a1ccfaeb62827457785293a5ad1a8bf44623903d7e5d99212cb5/arro3_core-0.5.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:63e9e96c034177721b8d5af36d4deff3e93411a24b009b4565e08711cddbbc75", size = 2636665 }, - { url = "https://files.pythonhosted.org/packages/6a/84/f5df7ed0eeb1fdaa3cd4d19fb829dca791c3b5108e5f5350a50ff34da914/arro3_core-0.5.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:639083eb1712bd39540761a25ab786ba9cb51e0710bb77b21499a2914ba076d4", size = 2883496 }, - { url = "https://files.pythonhosted.org/packages/b4/e1/6ab0dd6f362f95ef855d2ba7aacf55c9dd08c55a3d8c5339eafa20f3e0f3/arro3_core-0.5.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c4876a3c34bd54d970c498e2f61bfb7e36306934fd6acbfa5de497f093972bf0", size = 2536753 }, - { url = "https://files.pythonhosted.org/packages/53/20/b0d9bd9b6ccac1c53abb29961046364fb1fba84e9ebd3726ff996bb07b53/arro3_core-0.5.1-cp313-cp313-manylinux_2_24_aarch64.whl", hash = "sha256:a4b93fcc5464bd2b638402b56032a1d3cecb78d668d0aa1035d2ee7ee7487abb", size = 2286389 }, - { url = "https://files.pythonhosted.org/packages/49/21/8338d0a2ede9128dc46f44601b584ec3544f9ee2d43c841307d563e8cdfa/arro3_core-0.5.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8effd284a02b2a685736eb0365528842992a770a3bf544ece4ccc0ed9a7bf703", size = 2721899 }, - { url = "https://files.pythonhosted.org/packages/67/96/f90db955ed8b8d422d09b15e3b1f759a02e4700021f2e4ac68dd5cedca51/arro3_core-0.5.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cbc512e90647176528ea09ac18a5d27a47a0ac05755b7924ffcb89923dbf6e38", size = 2431834 }, - { url = "https://files.pythonhosted.org/packages/88/f3/c58d9769d46b13f6d51ff5998885396ef224eb384a0ebda236ef26a833a7/arro3_core-0.5.1-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:d4d0141a6b7f5744750cc4066f564cfd509df6857704a2a9a29946a7c2f08f2b", size = 2866047 }, - { url = "https://files.pythonhosted.org/packages/7c/7a/af901793fa426e8b86194654820c3612001b165b25f3bd7adde8d9e7bef4/arro3_core-0.5.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:f8c14b496f93906125baccef75703f0ea1c91608c201296bc21a1e916e5eb42c", size = 2792693 }, - { url = "https://files.pythonhosted.org/packages/2e/97/651eb8358d64d2bf5353db3d31ae6cb06529a07d2be699aa6a27434c6811/arro3_core-0.5.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:40e9db9564f22286310c5304884468b98d4eeb628f71c22f27d527e4219ae247", size = 2706150 }, - { url = "https://files.pythonhosted.org/packages/f3/af/0d591453490941e7cd2524ccac0398824eabafa745d0a25a758b1de2e361/arro3_core-0.5.1-cp313-cp313-win_amd64.whl", hash = "sha256:bb0b13975c5394cb6a9887495aaf06cad8993893f99911c8aa2b827cd55dd6a8", size = 2612300 }, -] - [[package]] name = "asttokens" version = "3.0.0" @@ -348,15 +282,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ec/b7/37d9f1a633e72250408cb7d53d8915561ac6108b5c3a1973eb8f53ce2990/botocore-1.38.41-py3-none-any.whl", hash = "sha256:06069a06f1352accb1f6c9505d6e323753627112be80a9d2e057c6d9c9779ffd", size = 13690225 }, ] -[[package]] -name = "bounded-pool-executor" -version = "0.0.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/23/f1/e34501c1228415e9fbcac8cb9c81098900e78331b30eeee1816176324bab/bounded_pool_executor-0.0.3.tar.gz", hash = "sha256:e092221bc38ade555e1064831f9ed800580fa34a4b6d8e9dd3cd961549627f6e", size = 2238 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/bc/23/72ecfe284a1da711257ff310b29c6667d0187a608322d58bf1c7a927c7b2/bounded_pool_executor-0.0.3-py3-none-any.whl", hash = "sha256:6f164d64919db1e6a5c187cce281f62bc559a5fed4ce064942e650c227aef190", size = 3371 }, -] - [[package]] name = "cairocffi" version = "1.7.1" @@ -468,15 +393,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/85/32/10bb5764d90a8eee674e9dc6f4db6a0ab47c8c4d0d83c27f7c39ac415a4d/click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b", size = 102215 }, ] -[[package]] -name = "cloudpickle" -version = "3.1.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/52/39/069100b84d7418bc358d81669d5748efb14b9cceacd2f9c75f550424132f/cloudpickle-3.1.1.tar.gz", hash = "sha256:b216fa8ae4019d5482a8ac3c95d8f6346115d8835911fd4aefd1a445e4242c64", size = 22113 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7e/e8/64c37fadfc2816a7701fa8a6ed8d87327c7d54eacfbfb6edab14a2f2be75/cloudpickle-3.1.1-py3-none-any.whl", hash = "sha256:c8c5a44295039331ee9dad40ba100a9c7297b6f988e50e87ccdf3765a668350e", size = 20992 }, -] - [[package]] name = "colorama" version = "0.4.6" @@ -538,36 +454,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b0/e6/6000d0094e8a5e32ad62591c8609e269febb6e4db83a1c75ff8868b42731/contourpy-1.3.2-cp313-cp313t-win_amd64.whl", hash = "sha256:78e9253c3de756b3f6a5174d024c4835acd59eb3f8e2ca13e775dbffe1558f69", size = 238214 }, ] -[[package]] -name = "crc32c" -version = "2.7.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/7f/4c/4e40cc26347ac8254d3f25b9f94710b8e8df24ee4dddc1ba41907a88a94d/crc32c-2.7.1.tar.gz", hash = "sha256:f91b144a21eef834d64178e01982bb9179c354b3e9e5f4c803b0e5096384968c", size = 45712 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/bf/98/1a6d60d5b3b5edc8382777b64100343cb4aa6a7e172fae4a6cfcb8ebbbd9/crc32c-2.7.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:24949bffb06fc411cc18188d33357923cb935273642164d0bb37a5f375654169", size = 49567 }, - { url = "https://files.pythonhosted.org/packages/4f/56/0dd652d4e950e6348bbf16b964b3325e4ad8220470774128fc0b0dd069cb/crc32c-2.7.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2d5d326e7e118d4fa60187770d86b66af2fdfc63ce9eeb265f0d3e7d49bebe0b", size = 37018 }, - { url = "https://files.pythonhosted.org/packages/47/02/2bd65fdef10139b6a802d83a7f966b7750fe5ffb1042f7cbe5dbb6403869/crc32c-2.7.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ba110df60c64c8e2d77a9425b982a520ccdb7abe42f06604f4d98a45bb1fff62", size = 35374 }, - { url = "https://files.pythonhosted.org/packages/a9/0d/3e797d1ed92d357a6a4c5b41cea15a538b27a8fdf18c7863747eb50b73ad/crc32c-2.7.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c277f9d16a3283e064d54854af0976b72abaa89824955579b2b3f37444f89aae", size = 54641 }, - { url = "https://files.pythonhosted.org/packages/a7/d3/4ddeef755caaa75680c559562b6c71f5910fee4c4f3a2eb5ea8b57f0e48c/crc32c-2.7.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:881af0478a01331244e27197356929edbdeaef6a9f81b5c6bacfea18d2139289", size = 52338 }, - { url = "https://files.pythonhosted.org/packages/01/cf/32f019be5de9f6e180926a50ee5f08648e686c7d9a59f2c5d0806a77b1c7/crc32c-2.7.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:724d5ff4d29ff093a983ae656be3307093706d850ea2a233bf29fcacc335d945", size = 53447 }, - { url = "https://files.pythonhosted.org/packages/b2/8b/92f3f62f3bafe8f7ab4af7bfb7246dc683fd11ec0d6dfb73f91e09079f69/crc32c-2.7.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b2416c4d88696ac322632555c0f81ab35e15f154bc96055da6cf110d642dbc10", size = 54484 }, - { url = "https://files.pythonhosted.org/packages/98/b2/113a50f8781f76af5ac65ffdb907e72bddbe974de8e02247f0d58bc48040/crc32c-2.7.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:60254251b88ec9b9795215f0f9ec015a6b5eef8b2c5fba1267c672d83c78fc02", size = 52703 }, - { url = "https://files.pythonhosted.org/packages/b4/6c/309229e9acda8cf36a8ff4061d70b54d905f79b7037e16883ce6590a24ab/crc32c-2.7.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:edefc0e46f3c37372183f70338e5bdee42f6789b62fcd36ec53aa933e9dfbeaf", size = 53367 }, - { url = "https://files.pythonhosted.org/packages/b5/2a/6c6324d920396e1bd9f3efbe8753da071be0ca52bd22d6c82d446b8d6975/crc32c-2.7.1-cp313-cp313-win32.whl", hash = "sha256:813af8111218970fe2adb833c5e5239f091b9c9e76f03b4dd91aaba86e99b499", size = 38377 }, - { url = "https://files.pythonhosted.org/packages/db/a0/f01ccfab538db07ef3f6b4ede46357ff147a81dd4f3c59ca6a34c791a549/crc32c-2.7.1-cp313-cp313-win_amd64.whl", hash = "sha256:7d9ede7be8e4ec1c9e90aaf6884decbeef10e3473e6ddac032706d710cab5888", size = 39803 }, - { url = "https://files.pythonhosted.org/packages/1b/80/61dcae7568b33acfde70c9d651c7d891c0c578c39cc049107c1cf61f1367/crc32c-2.7.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:db9ac92294284b22521356715784b91cc9094eee42a5282ab281b872510d1831", size = 49386 }, - { url = "https://files.pythonhosted.org/packages/1e/f1/80f17c089799ab2b4c247443bdd101d6ceda30c46d7f193e16b5ca29c5a0/crc32c-2.7.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:8fcd7f2f29a30dc92af64a9ee3d38bde0c82bd20ad939999427aac94bbd87373", size = 36937 }, - { url = "https://files.pythonhosted.org/packages/63/42/5fcfc71a3de493d920fd2590843762a2749981ea56b802b380e5df82309d/crc32c-2.7.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5c056ef043393085523e149276a7ce0cb534b872e04f3e20d74d9a94a75c0ad7", size = 35292 }, - { url = "https://files.pythonhosted.org/packages/03/de/fef962e898a953558fe1c55141644553e84ef4190693a31244c59a0856c7/crc32c-2.7.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:03a92551a343702629af91f78d205801219692b6909f8fa126b830e332bfb0e0", size = 54223 }, - { url = "https://files.pythonhosted.org/packages/21/14/fceca1a6f45c0a1814fe8602a65657b75c27425162445925ba87438cad6b/crc32c-2.7.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fb9424ec1a8ca54763155a703e763bcede82e6569fe94762614bb2de1412d4e1", size = 51588 }, - { url = "https://files.pythonhosted.org/packages/13/3b/13d40a7dfbf9ef05c84a0da45544ee72080dca4ce090679e5105689984bd/crc32c-2.7.1-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88732070f6175530db04e0bb36880ac45c33d49f8ac43fa0e50cfb1830049d23", size = 52678 }, - { url = "https://files.pythonhosted.org/packages/36/09/65ffc4fb9fa60ff6714eeb50a92284a4525e5943f0b040b572c0c76368c1/crc32c-2.7.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:57a20dfc27995f568f64775eea2bbb58ae269f1a1144561df5e4a4955f79db32", size = 53847 }, - { url = "https://files.pythonhosted.org/packages/24/71/938e926085b7288da052db7c84416f3ce25e71baf7ab5b63824c7bcb6f22/crc32c-2.7.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:f7186d098bfd2cff25eac6880b7c7ad80431b90610036131c1c7dd0eab42a332", size = 51860 }, - { url = "https://files.pythonhosted.org/packages/3c/d8/4526d5380189d6f2fa27256c204100f30214fe402f47cf6e9fb9a91ab890/crc32c-2.7.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:55a77e29a265418fa34bef15bd0f2c60afae5348988aaf35ed163b4bbf93cf37", size = 52508 }, - { url = "https://files.pythonhosted.org/packages/19/30/15f7e35176488b77e5b88751947d321d603fccac273099ace27c7b2d50a6/crc32c-2.7.1-cp313-cp313t-win32.whl", hash = "sha256:ae38a4b6aa361595d81cab441405fbee905c72273e80a1c010fb878ae77ac769", size = 38319 }, - { url = "https://files.pythonhosted.org/packages/19/c4/0b3eee04dac195f4730d102d7a9fbea894ae7a32ce075f84336df96a385d/crc32c-2.7.1-cp313-cp313t-win_amd64.whl", hash = "sha256:eee2a43b663feb6c79a6c1c6e5eae339c2b72cfac31ee54ec0209fa736cf7ee5", size = 39781 }, -] - [[package]] name = "cryptography" version = "45.0.4" @@ -625,75 +511,11 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl", hash = "sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30", size = 8321 }, ] -[[package]] -name = "dask" -version = "2025.5.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "click" }, - { name = "cloudpickle" }, - { name = "fsspec" }, - { name = "packaging" }, - { name = "partd" }, - { name = "pyyaml" }, - { name = "toolz" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/3d/29/05feb8e2531c46d763547c66b7f5deb39b53d99b3be1b4ddddbd1cec6567/dask-2025.5.1.tar.gz", hash = "sha256:979d9536549de0e463f4cab8a8c66c3a2ef55791cd740d07d9bf58fab1d1076a", size = 10969324 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/38/30/53b0844a7a4c6b041b111b24ca15cc9b8661a86fe1f6aaeb2d0d7f0fb1f2/dask-2025.5.1-py3-none-any.whl", hash = "sha256:3b85fdaa5f6f989dde49da6008415b1ae996985ebdfb1e40de2c997d9010371d", size = 1474226 }, -] - -[[package]] -name = "datacube-benchmark" -version = "0.1.0" -source = { editable = "packages/datacube-benchmark" } -dependencies = [ - { name = "arro3-core" }, - { name = "dask" }, - { name = "earthaccess" }, - { name = "geojson-pydantic" }, - { name = "h5netcdf" }, - { name = "hdf5plugin" }, - { name = "httpx" }, - { name = "morecantile" }, - { name = "numcodecs" }, - { name = "obstore" }, - { name = "pint" }, - { name = "psutil" }, - { name = "pyarrow" }, - { name = "rich" }, - { name = "s3fs" }, - { name = "xarray" }, - { name = "zarr" }, -] - -[package.metadata] -requires-dist = [ - { name = "arro3-core", specifier = ">=0.5.1" }, - { name = "dask", specifier = ">=2025.5.1" }, - { name = "earthaccess", specifier = "~=0.11.0" }, - { name = "geojson-pydantic", specifier = ">=2.0.0" }, - { name = "h5netcdf", specifier = "~=1.1.0" }, - { name = "hdf5plugin", specifier = ">=5.1.0" }, - { name = "httpx", specifier = ">=0.28.1" }, - { name = "morecantile", specifier = ">=6.2.0" }, - { name = "numcodecs", specifier = ">=0.16.1" }, - { name = "obstore", specifier = ">=0.6.0" }, - { name = "pint", specifier = ">=0.24.4" }, - { name = "psutil", specifier = ">=7.0.0" }, - { name = "pyarrow", specifier = ">=20.0.0" }, - { name = "rich", specifier = ">=14.0.0" }, - { name = "s3fs", specifier = ">=0.4.2" }, - { name = "xarray", specifier = ">=2025.6.1" }, - { name = "zarr", git = "https://github.com/zarr-developers/zarr-python" }, -] - [[package]] name = "datacube-guide" version = "0.1.0" source = { virtual = "." } dependencies = [ - { name = "datacube-benchmark" }, { name = "hvplot" }, { name = "matplotlib" }, ] @@ -726,7 +548,6 @@ dev = [ [package.metadata] requires-dist = [ - { name = "datacube-benchmark", editable = "packages/datacube-benchmark" }, { name = "hvplot", specifier = ">=0.11.3" }, { name = "matplotlib", specifier = ">=3.10.3" }, ] @@ -802,39 +623,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/e3/26/57c6fb270950d476074c087527a558ccb6f4436657314bfb6cdf484114c4/docker-7.1.0-py3-none-any.whl", hash = "sha256:c96b93b7f0a746f9e77d325bcfb87422a3d8bd4f03136ae8a85b37f1898d5fc0", size = 147774 }, ] -[[package]] -name = "donfig" -version = "0.8.1.post1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyyaml" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/25/71/80cc718ff6d7abfbabacb1f57aaa42e9c1552bfdd01e64ddd704e4a03638/donfig-0.8.1.post1.tar.gz", hash = "sha256:3bef3413a4c1c601b585e8d297256d0c1470ea012afa6e8461dc28bfb7c23f52", size = 19506 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/0c/d5/c5db1ea3394c6e1732fb3286b3bd878b59507a8f77d32a2cebda7d7b7cd4/donfig-0.8.1.post1-py3-none-any.whl", hash = "sha256:2a3175ce74a06109ff9307d90a230f81215cbac9a751f4d1c6194644b8204f9d", size = 21592 }, -] - -[[package]] -name = "earthaccess" -version = "0.11.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "fsspec" }, - { name = "importlib-resources" }, - { name = "multimethod" }, - { name = "numpy" }, - { name = "pqdm" }, - { name = "python-cmr" }, - { name = "requests" }, - { name = "s3fs" }, - { name = "tinynetrc" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/bf/fd/ba1208bd4497c4d7415a3006cecdd432c109d0ef1a80235e2c633102a1f2/earthaccess-0.11.0.tar.gz", hash = "sha256:1d07f0d9fa700339750e263f4a9a6d977dd8291afc94d25633d15420bc869418", size = 6099358 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/fb/ce/06c227460fda7e049099b11ef150af0a23a41357fc8f487175d20336970e/earthaccess-0.11.0-py3-none-any.whl", hash = "sha256:1a4d95fdac2c8b29ff44e7a29d7bb4fb12a7d9f77d1000f233658309f3d1c210", size = 59396 }, -] - [[package]] name = "executing" version = "2.2.0" @@ -883,30 +671,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/17/f8/01bf35a3afd734345528f98d0353f2a978a476528ad4d7e78b70c4d149dd/flask_cors-6.0.1-py3-none-any.whl", hash = "sha256:c7b2cbfb1a31aa0d2e5341eea03a6805349f7a61647daee1a15c46bbe981494c", size = 13244 }, ] -[[package]] -name = "flexcache" -version = "0.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/55/b0/8a21e330561c65653d010ef112bf38f60890051d244ede197ddaa08e50c1/flexcache-0.3.tar.gz", hash = "sha256:18743bd5a0621bfe2cf8d519e4c3bfdf57a269c15d1ced3fb4b64e0ff4600656", size = 15816 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/27/cd/c883e1a7c447479d6e13985565080e3fea88ab5a107c21684c813dba1875/flexcache-0.3-py3-none-any.whl", hash = "sha256:d43c9fea82336af6e0115e308d9d33a185390b8346a017564611f1466dcd2e32", size = 13263 }, -] - -[[package]] -name = "flexparser" -version = "0.4" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/82/99/b4de7e39e8eaf8207ba1a8fa2241dd98b2ba72ae6e16960d8351736d8702/flexparser-0.4.tar.gz", hash = "sha256:266d98905595be2ccc5da964fe0a2c3526fbbffdc45b65b3146d75db992ef6b2", size = 31799 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/fe/5e/3be305568fe5f34448807976dc82fc151d76c3e0e03958f34770286278c1/flexparser-0.4-py3-none-any.whl", hash = "sha256:3738b456192dcb3e15620f324c447721023c0293f6af9955b481e91d00179846", size = 27625 }, -] - [[package]] name = "fonttools" version = "4.58.4" @@ -976,18 +740,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/47/71/70db47e4f6ce3e5c37a607355f80da8860a33226be640226ac52cb05ef2e/fsspec-2025.9.0-py3-none-any.whl", hash = "sha256:530dc2a2af60a414a832059574df4a6e10cce927f6f4a78209390fe38955cfb7", size = 199289 }, ] -[[package]] -name = "geojson-pydantic" -version = "2.0.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pydantic" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/02/8e/283745fd586aeaadc226919fdaff87b75b266195d7678197f761a1735791/geojson_pydantic-2.0.0.tar.gz", hash = "sha256:b62e8b44502dd1ad518b5f739035a81924a76f980cbdb3a4e8916ef913be242e", size = 9243 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ba/e1/2926925dfc37287661f755937df99dff399d3aea2163e11cfd08ca6af3b2/geojson_pydantic-2.0.0-py3-none-any.whl", hash = "sha256:fd75876768a1dcab30dd04c478773191e0c19d678ef74580a9bad7c4576bfe98", size = 8712 }, -] - [[package]] name = "ghp-import" version = "2.1.0" @@ -1021,60 +773,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/58/c6/5c20af38c2a57c15d87f7f38bee77d63c1d2a3689f74fefaf35915dd12b2/griffe-1.7.3-py3-none-any.whl", hash = "sha256:c6b3ee30c2f0f17f30bcdef5068d6ab7a2a4f1b8bf1a3e74b56fffd21e1c5f75", size = 129303 }, ] -[[package]] -name = "h11" -version = "0.16.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/01/ee/02a2c011bdab74c6fb3c75474d40b3052059d95df7e73351460c8588d963/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1", size = 101250 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515 }, -] - -[[package]] -name = "h5netcdf" -version = "1.1.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "h5py" }, - { name = "packaging" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/0d/ef/51d8de1a4450164575e281dbc7bb32a90b78444ba0a37093d6dc8c862ea1/h5netcdf-1.1.0.tar.gz", hash = "sha256:932c3b573bed7370ebfc9e802cd60f1a4da5236efb11b36eeff897324d76bf56", size = 56385 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e2/7a/709f1d5eaabeb64948ff11cf840d1cb5ae2797ddcd10c9f725e40fd74691/h5netcdf-1.1.0-py2.py3-none-any.whl", hash = "sha256:338e65212cee129e4508a49994f230a3083910fbf20454bb57aa1ca99687ad34", size = 26112 }, -] - -[[package]] -name = "h5py" -version = "3.14.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "numpy" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/5d/57/dfb3c5c3f1bf5f5ef2e59a22dec4ff1f3d7408b55bfcefcfb0ea69ef21c6/h5py-3.14.0.tar.gz", hash = "sha256:2372116b2e0d5d3e5e705b7f663f7c8d96fa79a4052d250484ef91d24d6a08f4", size = 424323 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/6c/c2/7efe82d09ca10afd77cd7c286e42342d520c049a8c43650194928bcc635c/h5py-3.14.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:aa4b7bbce683379b7bf80aaba68e17e23396100336a8d500206520052be2f812", size = 3289245 }, - { url = "https://files.pythonhosted.org/packages/4f/31/f570fab1239b0d9441024b92b6ad03bb414ffa69101a985e4c83d37608bd/h5py-3.14.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ef9603a501a04fcd0ba28dd8f0995303d26a77a980a1f9474b3417543d4c6174", size = 2807335 }, - { url = "https://files.pythonhosted.org/packages/0d/ce/3a21d87896bc7e3e9255e0ad5583ae31ae9e6b4b00e0bcb2a67e2b6acdbc/h5py-3.14.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8cbaf6910fa3983c46172666b0b8da7b7bd90d764399ca983236f2400436eeb", size = 4700675 }, - { url = "https://files.pythonhosted.org/packages/e7/ec/86f59025306dcc6deee5fda54d980d077075b8d9889aac80f158bd585f1b/h5py-3.14.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d90e6445ab7c146d7f7981b11895d70bc1dd91278a4f9f9028bc0c95e4a53f13", size = 4921632 }, - { url = "https://files.pythonhosted.org/packages/3f/6d/0084ed0b78d4fd3e7530c32491f2884140d9b06365dac8a08de726421d4a/h5py-3.14.0-cp313-cp313-win_amd64.whl", hash = "sha256:ae18e3de237a7a830adb76aaa68ad438d85fe6e19e0d99944a3ce46b772c69b3", size = 2852929 }, -] - -[[package]] -name = "hdf5plugin" -version = "5.1.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "h5py" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/cf/77/136d49eff653001caf08fbb43cf90b9985f2126f257dd89fc4a768f1ac9f/hdf5plugin-5.1.0.tar.gz", hash = "sha256:cf78f1426b5868128b9ec6c498b70d6734e1dc8007a8ed1e7282954ab421b3fa", size = 65674335 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f2/c2/2ea8edb2b69b3aee3ba7021744f9b6ad93cd89b4bbaae4e4aac41fb75318/hdf5plugin-5.1.0-py3-none-macosx_10_13_universal2.whl", hash = "sha256:6f88bdc3ebf1d7393557d6c70811552f76f8fdd275988a7d2c904633f1a21a1d", size = 13335707 }, - { url = "https://files.pythonhosted.org/packages/4a/66/9abd90121e29ecee137a7d31c92aea33736278a72a6d1f61009c8cc7dcc9/hdf5plugin-5.1.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0151f844e5f7de0e26cc2de275a339f6936c825fee915cbd54318e22a913c00a", size = 43842855 }, - { url = "https://files.pythonhosted.org/packages/f6/7b/5f0c587d0c0fa6e42468eb5196927be7f91d91ee781a7a654d4204fe7716/hdf5plugin-5.1.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b613e16d376d3b37fd2d76893e356c402100bd68a02abbe960a98e8257ca8758", size = 46010074 }, - { url = "https://files.pythonhosted.org/packages/ba/db/8d85bd3f5b9ee894518f9d9ed1019fd8b7014340beca512dfb76d5632ec9/hdf5plugin-5.1.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6da81b0b168f271b0cf995a12c28cf01b381587fed21f25fd91b2c90d5108425", size = 45876035 }, - { url = "https://files.pythonhosted.org/packages/43/fb/7f85e84f35792e9ee20c557bf5fe2ac180cca73beae411a1d91898fcc4b5/hdf5plugin-5.1.0-py3-none-win_amd64.whl", hash = "sha256:6be3409554bde676db0f1ab46a27e87ea73d7974f359f354a738c812618261d1", size = 3359510 }, -] - [[package]] name = "holoviews" version = "1.21.0" @@ -1094,34 +792,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/30/75/d451b9a0ab3a9c0b2c7d1d3cf0bcf797ccac420f3479476f9867e1737d39/holoviews-1.21.0-py3-none-any.whl", hash = "sha256:74f3c01f35b9e8e2a8d6eb457a7ef05727de2a2a56509d59d7dc0d0409bc91c0", size = 5911622 }, ] -[[package]] -name = "httpcore" -version = "1.0.9" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "certifi" }, - { name = "h11" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/06/94/82699a10bca87a5556c9c59b5963f2d039dbd239f25bc2a63907a05a14cb/httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8", size = 85484 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55", size = 78784 }, -] - -[[package]] -name = "httpx" -version = "0.28.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "anyio" }, - { name = "certifi" }, - { name = "httpcore" }, - { name = "idna" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", size = 141406 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517 }, -] - [[package]] name = "hvplot" version = "0.11.3" @@ -1507,15 +1177,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/04/1e/b832de447dee8b582cac175871d2f6c3d5077cc56d5575cadba1fd1cccfa/linkify_it_py-2.0.3-py3-none-any.whl", hash = "sha256:6bcbc417b0ac14323382aef5c5192c0075bf8a9d6b41820a2b66371eac6b6d79", size = 19820 }, ] -[[package]] -name = "locket" -version = "1.0.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/2f/83/97b29fe05cb6ae28d2dbd30b81e2e402a3eed5f460c26e9eaa5895ceacf5/locket-1.0.0.tar.gz", hash = "sha256:5c0d4c052a8bbbf750e056a8e65ccd309086f4f0f18a2eac306a8dfa4112a632", size = 4350 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/db/bc/83e112abc66cd466c6b83f99118035867cecd41802f8d044638aa78a106e/locket-1.0.0-py2.py3-none-any.whl", hash = "sha256:b6c819a722f7b6bd955b80781788e4a66a55628b858d347536b7e81325a3a5e3", size = 4398 }, -] - [[package]] name = "markdown" version = "3.8.2" @@ -1832,20 +1493,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/3b/dd/a24ee3de56954bfafb6ede7cd63c2413bb842cc48eb45e41c43a05a33074/mkdocstrings_python-1.16.12-py3-none-any.whl", hash = "sha256:22ded3a63b3d823d57457a70ff9860d5a4de9e8b1e482876fc9baabaf6f5f374", size = 124287 }, ] -[[package]] -name = "morecantile" -version = "6.2.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "attrs" }, - { name = "pydantic" }, - { name = "pyproj" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/90/72/2d0e1f1e936538004581f792f8a2377831761fd12e4ed0a665abf768fc60/morecantile-6.2.0.tar.gz", hash = "sha256:65c7150ea68bbe16ee6f75f3f171ac1ae51ab26e7a77c92a768048f40f916412", size = 46317 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/09/6c/6ca6ed6b93c9879e6a804515169faefcd99e02114ef113598de9b71d27be/morecantile-6.2.0-py3-none-any.whl", hash = "sha256:a3cc8f85c6afcddb6c2ec933ad692557f96e89689730dbbd4350bdcf6ac52be0", size = 49473 }, -] - [[package]] name = "moto" version = "5.1.6" @@ -1968,15 +1615,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/44/d8/45e8fc9892a7386d074941429e033adb4640e59ff0780d96a8cf46fe788e/multidict-6.5.0-py3-none-any.whl", hash = "sha256:5634b35f225977605385f56153bd95a7133faffc0ffe12ad26e10517537e8dfc", size = 12181 }, ] -[[package]] -name = "multimethod" -version = "2.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/55/14/34e8c84ba4f1ab1186dc07426e0e84be71d3336cc57e8d076ee14331d50e/multimethod-2.0.tar.gz", hash = "sha256:c628b6d2e7d61fbe58484dd884d990901e8314faf58af062e72b65e3423cb109", size = 16065 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/84/42/a285fc4b89b3a249538954779cd4082a85bf35dc7d0a9c93e48e146e3dc7/multimethod-2.0-py3-none-any.whl", hash = "sha256:45aa231dc9dbb7f980c0f2ad8179e2c2b72a8cd5c7d7534337be66dde29d35be", size = 9836 }, -] - [[package]] name = "mypy" version = "1.16.1" @@ -2088,28 +1726,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl", hash = "sha256:0030d386a9a06dee3565298b4a734b68589749a544acbb6c412dc9e2489ec6ec", size = 2034406 }, ] -[[package]] -name = "numcodecs" -version = "0.16.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "numpy" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/00/35/49da850ce5371da3930d099da364a73ce9ae4fc64075e521674b48f4804d/numcodecs-0.16.1.tar.gz", hash = "sha256:c47f20d656454568c6b4697ce02081e6bbb512f198738c6a56fafe8029c97fb1", size = 6268134 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/5e/1e/73ffb1074f03d52cb1c4f4deaba26a2008ca45262f3622ed26dbec7a7362/numcodecs-0.16.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2ad8ee940315f59188accfc3f2d39726a4ca0d76b49bf8d0018e121f01c49028", size = 1659453 }, - { url = "https://files.pythonhosted.org/packages/42/72/5affb1ce92b7a6becee17921de7c6b521a48fa61fc3d36d9f1eea2cf83f5/numcodecs-0.16.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:179ca7bf3525a0f7379df7767d87dd495253de44597cb7e511198b28b09da633", size = 1143932 }, - { url = "https://files.pythonhosted.org/packages/e3/f1/b092679d84c67c6ed62e4df5781d89bbb089f24a0df4187cbab9db51cf6b/numcodecs-0.16.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6e2babbb50bf348ae982818d5560af330eab0dcd925fb0e49509785ad57d11db", size = 8187716 }, - { url = "https://files.pythonhosted.org/packages/a8/e8/86e7741adb43261aff409b53c53c8bac2797bfca055d64dd65dc731d5141/numcodecs-0.16.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a4b29d8d3284b72bfad4fb83d672a17f497ae86ee1ef8087bac7222b620d3d91", size = 8728650 }, - { url = "https://files.pythonhosted.org/packages/21/03/87c5c217232aa3515d350728c6dcefca252fa582246100ef68a51fbda456/numcodecs-0.16.1-cp313-cp313-win_amd64.whl", hash = "sha256:06489635f43e1a959aea73cb830d78cf3adb07ac5f34daccb92091e4d9ac6b07", size = 785553 }, -] - -[package.optional-dependencies] -crc32c = [ - { name = "crc32c" }, -] - [[package]] name = "numpy" version = "2.3.1" @@ -2140,26 +1756,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/d4/ca/af82bf0fad4c3e573c6930ed743b5308492ff19917c7caaf2f9b6f9e2e98/numpy-2.3.1-cp313-cp313t-win_arm64.whl", hash = "sha256:eccb9a159db9aed60800187bc47a6d3451553f0e1b08b068d8b277ddfbb9b244", size = 10260376 }, ] -[[package]] -name = "obstore" -version = "0.6.0" -source = { registry = "https://pypi.org/simple" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/42/b5/c2c90680adc3b0b3504e13cb7625e3a0fc10cda6eb40327982fdc8461b49/obstore-0.6.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:49a2a8eb340a9f1d827ed16000e1f16775166e2291646c6d339dd5549461b4f5", size = 3549577 }, - { url = "https://files.pythonhosted.org/packages/d9/4a/4e9e7b11f2f0174c29614173155c8af382f8df4a0cf3fc497d07db6f6014/obstore-0.6.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:127853549da668ab89ee8d7ccb4e671faf7781e879d05deb8ca635a5ca12d929", size = 3299999 }, - { url = "https://files.pythonhosted.org/packages/c1/ea/e88079bfe991f273b22fa6bf085cfe072a90fc1162b4b5fc66ab6555ca64/obstore-0.6.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:52080174fc48e4b1ba8860b6a2b0d7937d903b133e42c3a3784adc744ffce9ad", size = 3443750 }, - { url = "https://files.pythonhosted.org/packages/c9/b9/8d702fb26820bef0a4c095e8b83930eec8d14e7b01c68f5213a4361e6152/obstore-0.6.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea887fb0d995e500db7398288684f7fd08088f204e376afb6c9b57b0e2037f7c", size = 3572210 }, - { url = "https://files.pythonhosted.org/packages/80/48/be234b8f24be81522801514b9bbe68bb90ea8f8d9e2af9c8370f14ec04dd/obstore-0.6.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bfba02d8259d4415cddfa7091b0a4f964678f54b17752374b416995c2354a8bb", size = 3770956 }, - { url = "https://files.pythonhosted.org/packages/bc/62/07954937e39b9fb022cc810cab63bcbaa4d47b708f814152b14d06dedaa1/obstore-0.6.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fc2864ef21b157f9c543b2cfb3bd77b2734adfeb91b3b2875604a2f1bb51af35", size = 4650804 }, - { url = "https://files.pythonhosted.org/packages/05/9e/9a45bc0c7ca3f587516ae97be70135b2a5da80e33c316e9e1e3f6777123e/obstore-0.6.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:adf294b232927697297d7142649444e8ed74284b8d6a8b4bbba1d4b5ed726854", size = 3674650 }, - { url = "https://files.pythonhosted.org/packages/31/22/1f309fa9e4acc2270bf335c38b188e3839488c1c62e6ae9e51e7efd41c5b/obstore-0.6.0-cp313-cp313-manylinux_2_24_aarch64.whl", hash = "sha256:044d4b125a5cd63fd3fe8772d7ada7dc19b61b5763ec3d7f757a77425cab80bb", size = 3478362 }, - { url = "https://files.pythonhosted.org/packages/27/d7/68b8aabac54fd4277a88093f68658d6ab2b17a6e718429f7c77a6c1a4d54/obstore-0.6.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:fead1c226d8c4dfcaaec8441d9cf713cd46ce774561a7f12f512c60cbb319ccf", size = 3637940 }, - { url = "https://files.pythonhosted.org/packages/df/40/ed7d0024096e7eb0610cd82b716e9a234eeafaab8395d0c2c7791ee8fdc1/obstore-0.6.0-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:6bd2f93287240d6812abcfb65207b81e6fd53e1aa641d4aa638053a2e34d991d", size = 3668000 }, - { url = "https://files.pythonhosted.org/packages/20/8c/45d0f483f26774ac7dccbf28a684b97ea694862d7c29512e854bb7237391/obstore-0.6.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:8d6f7d607599ff9e019433736b940497f320f5cac0956a1ff360b15deed8af1f", size = 3650840 }, - { url = "https://files.pythonhosted.org/packages/bc/57/018c53c8e8f42cba8e41a8d1bab16efd1891791ba1d586ba7c6c3a4bc0cb/obstore-0.6.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:40e659ed0b1b4db447dd41b1b47f06f7ca2df1df119200ce815f7aa64616d083", size = 3846072 }, - { url = "https://files.pythonhosted.org/packages/a7/54/969edfbb288b58e096e3089d02535a83715617e62255fb83909989434b00/obstore-0.6.0-cp313-cp313-win_amd64.whl", hash = "sha256:bec5e38903ea6e8f24a327c07db45b3d3ce8979a98170e6097636bb5dfc07f75", size = 3925354 }, -] - [[package]] name = "openapi-schema-validator" version = "0.6.3" @@ -2285,19 +1881,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/c6/ac/dac4a63f978e4dcb3c6d3a78c4d8e0192a113d288502a1216950c41b1027/parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18", size = 103650 }, ] -[[package]] -name = "partd" -version = "1.4.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "locket" }, - { name = "toolz" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/b2/3a/3f06f34820a31257ddcabdfafc2672c5816be79c7e353b02c1f318daa7d4/partd-1.4.2.tar.gz", hash = "sha256:d022c33afbdc8405c226621b015e8067888173d85f7f5ecebb3cafed9a20f02c", size = 21029 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/71/e7/40fb618334dcdf7c5a316c0e7343c5cd82d3d866edc100d98e29bc945ecd/partd-1.4.2-py3-none-any.whl", hash = "sha256:978e4ac767ec4ba5b86c6eaa52e5a2a3bc748a2ca839e8cc798f1cc6ce6efb0f", size = 18905 }, -] - [[package]] name = "pathable" version = "0.4.4" @@ -2347,21 +1930,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/48/2c/2e0a52890f269435eee38b21c8218e102c621fe8d8df8b9dd06fabf879ba/pillow-10.4.0-cp313-cp313-win_arm64.whl", hash = "sha256:5b001114dd152cfd6b23befeb28d7aee43553e2402c9f159807bf55f33af8a8d", size = 2243375 }, ] -[[package]] -name = "pint" -version = "0.24.4" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "flexcache" }, - { name = "flexparser" }, - { name = "platformdirs" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/20/bb/52b15ddf7b7706ed591134a895dbf6e41c8348171fb635e655e0a4bbb0ea/pint-0.24.4.tar.gz", hash = "sha256:35275439b574837a6cd3020a5a4a73645eb125ce4152a73a2f126bf164b91b80", size = 342225 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/16/bd2f5904557265882108dc2e04f18abc05ab0c2b7082ae9430091daf1d5c/Pint-0.24.4-py3-none-any.whl", hash = "sha256:aa54926c8772159fcf65f82cc0d34de6768c151b32ad1deb0331291c38fe7659", size = 302029 }, -] - [[package]] name = "pip" version = "25.1.1" @@ -2398,20 +1966,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/a3/58/35da89ee790598a0700ea49b2a66594140f44dec458c07e8e3d4979137fc/ply-3.11-py2.py3-none-any.whl", hash = "sha256:096f9b8350b65ebd2fd1346b12452efe5b9607f7482813ffca50c22722a807ce", size = 49567 }, ] -[[package]] -name = "pqdm" -version = "0.2.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "bounded-pool-executor" }, - { name = "tqdm" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/fb/dd/1b2ae6551a32bf8ae26b90c6e191a889bee5050bf23c88021761fbca03d1/pqdm-0.2.0.tar.gz", hash = "sha256:d99d01fe498d327b440ebfe08c14c84e0dc9ecce6172ef9a31f96bb1aaf4e9e3", size = 13899 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/9e/b7/720988acdc9b5805cd1ef311aa75d6fd1c5438b87f4add1ec8d11f78d63b/pqdm-0.2.0-py2.py3-none-any.whl", hash = "sha256:0da33a22ebee349a047abf8ef7fd00d85403638101d5e374b421a74188231b62", size = 6765 }, -] - [[package]] name = "prompt-toolkit" version = "3.0.51" @@ -2507,32 +2061,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/97/84/0e410c20bbe9a504fc56e97908f13261c2b313d16cbb3b738556166f044a/py_partiql_parser-0.6.1-py2.py3-none-any.whl", hash = "sha256:ff6a48067bff23c37e9044021bf1d949c83e195490c17e020715e927fe5b2456", size = 23520 }, ] -[[package]] -name = "pyarrow" -version = "20.0.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a2/ee/a7810cb9f3d6e9238e61d312076a9859bf3668fd21c69744de9532383912/pyarrow-20.0.0.tar.gz", hash = "sha256:febc4a913592573c8d5805091a6c2b5064c8bd6e002131f01061797d91c783c1", size = 1125187 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/9b/aa/daa413b81446d20d4dad2944110dcf4cf4f4179ef7f685dd5a6d7570dc8e/pyarrow-20.0.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:a15532e77b94c61efadde86d10957950392999503b3616b2ffcef7621a002893", size = 30798501 }, - { url = "https://files.pythonhosted.org/packages/ff/75/2303d1caa410925de902d32ac215dc80a7ce7dd8dfe95358c165f2adf107/pyarrow-20.0.0-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:dd43f58037443af715f34f1322c782ec463a3c8a94a85fdb2d987ceb5658e061", size = 32277895 }, - { url = "https://files.pythonhosted.org/packages/92/41/fe18c7c0b38b20811b73d1bdd54b1fccba0dab0e51d2048878042d84afa8/pyarrow-20.0.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa0d288143a8585806e3cc7c39566407aab646fb9ece164609dac1cfff45f6ae", size = 41327322 }, - { url = "https://files.pythonhosted.org/packages/da/ab/7dbf3d11db67c72dbf36ae63dcbc9f30b866c153b3a22ef728523943eee6/pyarrow-20.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b6953f0114f8d6f3d905d98e987d0924dabce59c3cda380bdfaa25a6201563b4", size = 42411441 }, - { url = "https://files.pythonhosted.org/packages/90/c3/0c7da7b6dac863af75b64e2f827e4742161128c350bfe7955b426484e226/pyarrow-20.0.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:991f85b48a8a5e839b2128590ce07611fae48a904cae6cab1f089c5955b57eb5", size = 40677027 }, - { url = "https://files.pythonhosted.org/packages/be/27/43a47fa0ff9053ab5203bb3faeec435d43c0d8bfa40179bfd076cdbd4e1c/pyarrow-20.0.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:97c8dc984ed09cb07d618d57d8d4b67a5100a30c3818c2fb0b04599f0da2de7b", size = 42281473 }, - { url = "https://files.pythonhosted.org/packages/bc/0b/d56c63b078876da81bbb9ba695a596eabee9b085555ed12bf6eb3b7cab0e/pyarrow-20.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9b71daf534f4745818f96c214dbc1e6124d7daf059167330b610fc69b6f3d3e3", size = 42893897 }, - { url = "https://files.pythonhosted.org/packages/92/ac/7d4bd020ba9145f354012838692d48300c1b8fe5634bfda886abcada67ed/pyarrow-20.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e8b88758f9303fa5a83d6c90e176714b2fd3852e776fc2d7e42a22dd6c2fb368", size = 44543847 }, - { url = "https://files.pythonhosted.org/packages/9d/07/290f4abf9ca702c5df7b47739c1b2c83588641ddfa2cc75e34a301d42e55/pyarrow-20.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:30b3051b7975801c1e1d387e17c588d8ab05ced9b1e14eec57915f79869b5031", size = 25653219 }, - { url = "https://files.pythonhosted.org/packages/95/df/720bb17704b10bd69dde086e1400b8eefb8f58df3f8ac9cff6c425bf57f1/pyarrow-20.0.0-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:ca151afa4f9b7bc45bcc791eb9a89e90a9eb2772767d0b1e5389609c7d03db63", size = 30853957 }, - { url = "https://files.pythonhosted.org/packages/d9/72/0d5f875efc31baef742ba55a00a25213a19ea64d7176e0fe001c5d8b6e9a/pyarrow-20.0.0-cp313-cp313t-macosx_12_0_x86_64.whl", hash = "sha256:4680f01ecd86e0dd63e39eb5cd59ef9ff24a9d166db328679e36c108dc993d4c", size = 32247972 }, - { url = "https://files.pythonhosted.org/packages/d5/bc/e48b4fa544d2eea72f7844180eb77f83f2030b84c8dad860f199f94307ed/pyarrow-20.0.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f4c8534e2ff059765647aa69b75d6543f9fef59e2cd4c6d18015192565d2b70", size = 41256434 }, - { url = "https://files.pythonhosted.org/packages/c3/01/974043a29874aa2cf4f87fb07fd108828fc7362300265a2a64a94965e35b/pyarrow-20.0.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3e1f8a47f4b4ae4c69c4d702cfbdfe4d41e18e5c7ef6f1bb1c50918c1e81c57b", size = 42353648 }, - { url = "https://files.pythonhosted.org/packages/68/95/cc0d3634cde9ca69b0e51cbe830d8915ea32dda2157560dda27ff3b3337b/pyarrow-20.0.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:a1f60dc14658efaa927f8214734f6a01a806d7690be4b3232ba526836d216122", size = 40619853 }, - { url = "https://files.pythonhosted.org/packages/29/c2/3ad40e07e96a3e74e7ed7cc8285aadfa84eb848a798c98ec0ad009eb6bcc/pyarrow-20.0.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:204a846dca751428991346976b914d6d2a82ae5b8316a6ed99789ebf976551e6", size = 42241743 }, - { url = "https://files.pythonhosted.org/packages/eb/cb/65fa110b483339add6a9bc7b6373614166b14e20375d4daa73483755f830/pyarrow-20.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:f3b117b922af5e4c6b9a9115825726cac7d8b1421c37c2b5e24fbacc8930612c", size = 42839441 }, - { url = "https://files.pythonhosted.org/packages/98/7b/f30b1954589243207d7a0fbc9997401044bf9a033eec78f6cb50da3f304a/pyarrow-20.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:e724a3fd23ae5b9c010e7be857f4405ed5e679db5c93e66204db1a69f733936a", size = 44503279 }, - { url = "https://files.pythonhosted.org/packages/37/40/ad395740cd641869a13bcf60851296c89624662575621968dcfafabaa7f6/pyarrow-20.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:82f1ee5133bd8f49d31be1299dc07f585136679666b502540db854968576faf9", size = 25944982 }, -] - [[package]] name = "pycparser" version = "2.22" @@ -2642,53 +2170,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/05/e7/df2285f3d08fee213f2d041540fa4fc9ca6c2d44cf36d3a035bf2a8d2bcc/pyparsing-3.2.3-py3-none-any.whl", hash = "sha256:a749938e02d6fd0b59b356ca504a24982314bb090c383e3cf201c95ef7e2bfcf", size = 111120 }, ] -[[package]] -name = "pyproj" -version = "3.7.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "certifi" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/04/90/67bd7260b4ea9b8b20b4f58afef6c223ecb3abf368eb4ec5bc2cdef81b49/pyproj-3.7.2.tar.gz", hash = "sha256:39a0cf1ecc7e282d1d30f36594ebd55c9fae1fda8a2622cee5d100430628f88c", size = 226279 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/be/14/faf1b90d267cea68d7e70662e7f88cefdb1bc890bd596c74b959e0517a72/pyproj-3.7.2-cp313-cp313-macosx_13_0_x86_64.whl", hash = "sha256:19466e529b1b15eeefdf8ff26b06fa745856c044f2f77bf0edbae94078c1dfa1", size = 6214580 }, - { url = "https://files.pythonhosted.org/packages/35/48/da9a45b184d375f62667f62eba0ca68569b0bd980a0bb7ffcc1d50440520/pyproj-3.7.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:c79b9b84c4a626c5dc324c0d666be0bfcebd99f7538d66e8898c2444221b3da7", size = 4615388 }, - { url = "https://files.pythonhosted.org/packages/5e/e7/d2b459a4a64bca328b712c1b544e109df88e5c800f7c143cfbc404d39bfb/pyproj-3.7.2-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:ceecf374cacca317bc09e165db38ac548ee3cad07c3609442bd70311c59c21aa", size = 9628455 }, - { url = "https://files.pythonhosted.org/packages/f8/85/c2b1706e51942de19076eff082f8495e57d5151364e78b5bef4af4a1d94a/pyproj-3.7.2-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:5141a538ffdbe4bfd157421828bb2e07123a90a7a2d6f30fa1462abcfb5ce681", size = 9514269 }, - { url = "https://files.pythonhosted.org/packages/34/38/07a9b89ae7467872f9a476883a5bad9e4f4d1219d31060f0f2b282276cbe/pyproj-3.7.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f000841e98ea99acbb7b8ca168d67773b0191de95187228a16110245c5d954d5", size = 10808437 }, - { url = "https://files.pythonhosted.org/packages/12/56/fda1daeabbd39dec5b07f67233d09f31facb762587b498e6fc4572be9837/pyproj-3.7.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8115faf2597f281a42ab608ceac346b4eb1383d3b45ab474fd37341c4bf82a67", size = 10745540 }, - { url = "https://files.pythonhosted.org/packages/0d/90/c793182cbba65a39a11db2ac6b479fe76c59e6509ae75e5744c344a0da9d/pyproj-3.7.2-cp313-cp313-win32.whl", hash = "sha256:f18c0579dd6be00b970cb1a6719197fceecc407515bab37da0066f0184aafdf3", size = 5896506 }, - { url = "https://files.pythonhosted.org/packages/be/0f/747974129cf0d800906f81cd25efd098c96509026e454d4b66868779ab04/pyproj-3.7.2-cp313-cp313-win_amd64.whl", hash = "sha256:bb41c29d5f60854b1075853fe80c58950b398d4ebb404eb532536ac8d2834ed7", size = 6310195 }, - { url = "https://files.pythonhosted.org/packages/82/64/fc7598a53172c4931ec6edf5228280663063150625d3f6423b4c20f9daff/pyproj-3.7.2-cp313-cp313-win_arm64.whl", hash = "sha256:2b617d573be4118c11cd96b8891a0b7f65778fa7733ed8ecdb297a447d439100", size = 6230748 }, - { url = "https://files.pythonhosted.org/packages/aa/f0/611dd5cddb0d277f94b7af12981f56e1441bf8d22695065d4f0df5218498/pyproj-3.7.2-cp313-cp313t-macosx_13_0_x86_64.whl", hash = "sha256:d27b48f0e81beeaa2b4d60c516c3a1cfbb0c7ff6ef71256d8e9c07792f735279", size = 6241729 }, - { url = "https://files.pythonhosted.org/packages/15/93/40bd4a6c523ff9965e480870611aed7eda5aa2c6128c6537345a2b77b542/pyproj-3.7.2-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:55a3610d75023c7b1c6e583e48ef8f62918e85a2ae81300569d9f104d6684bb6", size = 4652497 }, - { url = "https://files.pythonhosted.org/packages/1b/ae/7150ead53c117880b35e0d37960d3138fe640a235feb9605cb9386f50bb0/pyproj-3.7.2-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:8d7349182fa622696787cc9e195508d2a41a64765da9b8a6bee846702b9e6220", size = 9942610 }, - { url = "https://files.pythonhosted.org/packages/d8/17/7a4a7eafecf2b46ab64e5c08176c20ceb5844b503eaa551bf12ccac77322/pyproj-3.7.2-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:d230b186eb876ed4f29a7c5ee310144c3a0e44e89e55f65fb3607e13f6db337c", size = 9692390 }, - { url = "https://files.pythonhosted.org/packages/c3/55/ae18f040f6410f0ea547a21ada7ef3e26e6c82befa125b303b02759c0e9d/pyproj-3.7.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:237499c7862c578d0369e2b8ac56eec550e391a025ff70e2af8417139dabb41c", size = 11047596 }, - { url = "https://files.pythonhosted.org/packages/e6/2e/d3fff4d2909473f26ae799f9dda04caa322c417a51ff3b25763f7d03b233/pyproj-3.7.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8c225f5978abd506fd9a78eaaf794435e823c9156091cabaab5374efb29d7f69", size = 10896975 }, - { url = "https://files.pythonhosted.org/packages/f2/bc/8fc7d3963d87057b7b51ebe68c1e7c51c23129eee5072ba6b86558544a46/pyproj-3.7.2-cp313-cp313t-win32.whl", hash = "sha256:2da731876d27639ff9d2d81c151f6ab90a1546455fabd93368e753047be344a2", size = 5953057 }, - { url = "https://files.pythonhosted.org/packages/cc/27/ea9809966cc47d2d51e6d5ae631ea895f7c7c7b9b3c29718f900a8f7d197/pyproj-3.7.2-cp313-cp313t-win_amd64.whl", hash = "sha256:f54d91ae18dd23b6c0ab48126d446820e725419da10617d86a1b69ada6d881d3", size = 6375414 }, - { url = "https://files.pythonhosted.org/packages/5b/f8/1ef0129fba9a555c658e22af68989f35e7ba7b9136f25758809efec0cd6e/pyproj-3.7.2-cp313-cp313t-win_arm64.whl", hash = "sha256:fc52ba896cfc3214dc9f9ca3c0677a623e8fdd096b257c14a31e719d21ff3fdd", size = 6262501 }, - { url = "https://files.pythonhosted.org/packages/42/17/c2b050d3f5b71b6edd0d96ae16c990fdc42a5f1366464a5c2772146de33a/pyproj-3.7.2-cp314-cp314-macosx_13_0_x86_64.whl", hash = "sha256:2aaa328605ace41db050d06bac1adc11f01b71fe95c18661497763116c3a0f02", size = 6214541 }, - { url = "https://files.pythonhosted.org/packages/03/68/68ada9c8aea96ded09a66cfd9bf87aa6db8c2edebe93f5bf9b66b0143fbc/pyproj-3.7.2-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:35dccbce8201313c596a970fde90e33605248b66272595c061b511c8100ccc08", size = 4617456 }, - { url = "https://files.pythonhosted.org/packages/81/e4/4c50ceca7d0e937977866b02cb64e6ccf4df979a5871e521f9e255df6073/pyproj-3.7.2-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:25b0b7cb0042444c29a164b993c45c1b8013d6c48baa61dc1160d834a277e83b", size = 9615590 }, - { url = "https://files.pythonhosted.org/packages/05/1e/ada6fb15a1d75b5bd9b554355a69a798c55a7dcc93b8d41596265c1772e3/pyproj-3.7.2-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:85def3a6388e9ba51f964619aa002a9d2098e77c6454ff47773bb68871024281", size = 9474960 }, - { url = "https://files.pythonhosted.org/packages/51/07/9d48ad0a8db36e16f842f2c8a694c1d9d7dcf9137264846bef77585a71f3/pyproj-3.7.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:b1bccefec3875ab81eabf49059e2b2ea77362c178b66fd3528c3e4df242f1516", size = 10799478 }, - { url = "https://files.pythonhosted.org/packages/85/cf/2f812b529079f72f51ff2d6456b7fef06c01735e5cfd62d54ffb2b548028/pyproj-3.7.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d5371ca114d6990b675247355a801925814eca53e6c4b2f1b5c0a956336ee36e", size = 10710030 }, - { url = "https://files.pythonhosted.org/packages/99/9b/4626a19e1f03eba4c0e77b91a6cf0f73aa9cb5d51a22ee385c22812bcc2c/pyproj-3.7.2-cp314-cp314-win32.whl", hash = "sha256:77f066626030f41be543274f5ac79f2a511fe89860ecd0914f22131b40a0ec25", size = 5991181 }, - { url = "https://files.pythonhosted.org/packages/04/b2/5a6610554306a83a563080c2cf2c57565563eadd280e15388efa00fb5b33/pyproj-3.7.2-cp314-cp314-win_amd64.whl", hash = "sha256:5a964da1696b8522806f4276ab04ccfff8f9eb95133a92a25900697609d40112", size = 6434721 }, - { url = "https://files.pythonhosted.org/packages/ae/ce/6c910ea2e1c74ef673c5d48c482564b8a7824a44c4e35cca2e765b68cfcc/pyproj-3.7.2-cp314-cp314-win_arm64.whl", hash = "sha256:e258ab4dbd3cf627809067c0ba8f9884ea76c8e5999d039fb37a1619c6c3e1f6", size = 6363821 }, - { url = "https://files.pythonhosted.org/packages/e4/e4/5532f6f7491812ba782a2177fe9de73fd8e2912b59f46a1d056b84b9b8f2/pyproj-3.7.2-cp314-cp314t-macosx_13_0_x86_64.whl", hash = "sha256:bbbac2f930c6d266f70ec75df35ef851d96fdb3701c674f42fd23a9314573b37", size = 6241773 }, - { url = "https://files.pythonhosted.org/packages/20/1f/0938c3f2bbbef1789132d1726d9b0e662f10cfc22522743937f421ad664e/pyproj-3.7.2-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:b7544e0a3d6339dc9151e9c8f3ea62a936ab7cc446a806ec448bbe86aebb979b", size = 4652537 }, - { url = "https://files.pythonhosted.org/packages/c7/a8/488b1ed47d25972f33874f91f09ca8f2227902f05f63a2b80dc73e7b1c97/pyproj-3.7.2-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:f7f5133dca4c703e8acadf6f30bc567d39a42c6af321e7f81975c2518f3ed357", size = 9940864 }, - { url = "https://files.pythonhosted.org/packages/c7/cc/7f4c895d0cb98e47b6a85a6d79eaca03eb266129eed2f845125c09cf31ff/pyproj-3.7.2-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:5aff3343038d7426aa5076f07feb88065f50e0502d1b0d7c22ddfdd2c75a3f81", size = 9688868 }, - { url = "https://files.pythonhosted.org/packages/b2/b7/c7e306b8bb0f071d9825b753ee4920f066c40fbfcce9372c4f3cfb2fc4ed/pyproj-3.7.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:b0552178c61f2ac1c820d087e8ba6e62b29442debddbb09d51c4bf8acc84d888", size = 11045910 }, - { url = "https://files.pythonhosted.org/packages/42/fb/538a4d2df695980e2dde5c04d965fbdd1fe8c20a3194dc4aaa3952a4d1be/pyproj-3.7.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:47d87db2d2c436c5fd0409b34d70bb6cdb875cca2ebe7a9d1c442367b0ab8d59", size = 10895724 }, - { url = "https://files.pythonhosted.org/packages/e8/8b/a3f0618b03957de9db5489a04558a8826f43906628bb0b766033aa3b5548/pyproj-3.7.2-cp314-cp314t-win32.whl", hash = "sha256:c9b6f1d8ad3e80a0ee0903a778b6ece7dca1d1d40f6d114ae01bc8ddbad971aa", size = 6056848 }, - { url = "https://files.pythonhosted.org/packages/bc/56/413240dd5149dd3291eda55aa55a659da4431244a2fd1319d0ae89407cfb/pyproj-3.7.2-cp314-cp314t-win_amd64.whl", hash = "sha256:1914e29e27933ba6f9822663ee0600f169014a2859f851c054c88cf5ea8a333c", size = 6517676 }, - { url = "https://files.pythonhosted.org/packages/15/73/a7141a1a0559bf1a7aa42a11c879ceb19f02f5c6c371c6d57fd86cefd4d1/pyproj-3.7.2-cp314-cp314t-win_arm64.whl", hash = "sha256:d9d25bae416a24397e0d85739f84d323b55f6511e45a522dd7d7eae70d10c7e4", size = 6391844 }, -] - [[package]] name = "pytest" version = "8.4.1" @@ -2737,20 +2218,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/de/84/6c9af99c416e52286fbf6df91a2ae19ef4da5d6f2dab626f8ff1a61280b5/pytest_mypy_plugins-3.2.0-py3-none-any.whl", hash = "sha256:46e24e8d9eaeabcddd0a5dc5fb089c021903d5952e0c9d8af79383db99b9ffae", size = 20627 }, ] -[[package]] -name = "python-cmr" -version = "0.13.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "python-dateutil" }, - { name = "requests" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/5d/04/fbe29a33172fc093d998600c8ee14bfb82e6b4b2ce3d08da1afc04ff5fce/python_cmr-0.13.0.tar.gz", hash = "sha256:ac671d9696979427ee1f98104bf1dbe2ae547f8e0cc9f63ae5efcc6d1f436c6d", size = 17175 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/79/e2/5fa011e34bf81a3d47fb45e3a2ff86baabbc2853439285205bd14b245922/python_cmr-0.13.0-py3-none-any.whl", hash = "sha256:4c71f15ae662f58d0220f533abb662c14937c91f93f66976ef533f369d0f5cd7", size = 14897 }, -] - [[package]] name = "python-dateutil" version = "2.9.0.post0" @@ -2930,19 +2397,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/7b/44/4e421b96b67b2daff264473f7465db72fbdf36a07e05494f50300cc7b0c6/rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa", size = 3490 }, ] -[[package]] -name = "rich" -version = "14.0.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "markdown-it-py" }, - { name = "pygments" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/a1/53/830aa4c3066a8ab0ae9a9955976fb770fe9c6102117c8ec4ab3ea62d89e8/rich-14.0.0.tar.gz", hash = "sha256:82f1bc23a6a21ebca4ae0c45af9bdbc492ed20231dcb63f297d6d1021a9d5725", size = 224078 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/0d/9b/63f4c7ebc259242c89b3acafdb37b41d1185c07ff0011164674e9076b491/rich-14.0.0-py3-none-any.whl", hash = "sha256:1c9491e1951aac09caffd42f448ee3d04e58923ffe14993f6e83068dc395d7e0", size = 243229 }, -] - [[package]] name = "rpds-py" version = "0.25.1" @@ -3003,20 +2457,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/d0/33/4d3e79e4a84533d6cd526bfb42c020a23256ae5e4265d858bd1287831f7d/ruff-0.12.0-py3-none-win_arm64.whl", hash = "sha256:8cd24580405ad8c1cc64d61725bca091d6b6da7eb3d36f72cc605467069d7e8b", size = 10724946 }, ] -[[package]] -name = "s3fs" -version = "2025.9.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "aiobotocore" }, - { name = "aiohttp" }, - { name = "fsspec" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/ee/f3/8e6371436666aedfd16e63ff68a51b8a8fcf5f33a0eee33c35e0b2476b27/s3fs-2025.9.0.tar.gz", hash = "sha256:6d44257ef19ea64968d0720744c4af7a063a05f5c1be0e17ce943bef7302bc30", size = 77823 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/37/b3/ca7d58ca25b1bb6df57e6cbd0ca8d6437a4b9ce1cd35adc8a6b2949c113b/s3fs-2025.9.0-py3-none-any.whl", hash = "sha256:c33c93d48f66ed440dbaf6600be149cdf8beae4b6f8f0201a209c5801aeb7e30", size = 30319 }, -] - [[package]] name = "s3transfer" version = "0.13.0" @@ -3047,15 +2487,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050 }, ] -[[package]] -name = "sniffio" -version = "1.3.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235 }, -] - [[package]] name = "soupsieve" version = "2.7" @@ -3103,15 +2534,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/e6/34/ebdc18bae6aa14fbee1a08b63c015c72b64868ff7dae68808ab500c492e2/tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289", size = 26610 }, ] -[[package]] -name = "tinynetrc" -version = "1.3.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/87/8f/6df2414a8f38b08836726986437f7612983f25c6dc3c55c66f4850a3d795/tinynetrc-1.3.1.tar.gz", hash = "sha256:2b9a256d2e630643b8f0985f5e826ccf0bf3716e07e596a4f67feab363d254df", size = 5484 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/eb/0b/633691d7cea5129afa622869485d1985b038df1d3597a35848731d106762/tinynetrc-1.3.1-py2.py3-none-any.whl", hash = "sha256:46c7820e5f49c9434d2c4cd74de8a06edbbd45e63a8a2980a90b8a43db8facf7", size = 3949 }, -] - [[package]] name = "tomlkit" version = "0.13.3" @@ -3121,15 +2543,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/bd/75/8539d011f6be8e29f339c42e633aae3cb73bffa95dd0f9adec09b9c58e85/tomlkit-0.13.3-py3-none-any.whl", hash = "sha256:c89c649d79ee40629a9fda55f8ace8c6a1b42deb912b2a8fd8d942ddadb606b0", size = 38901 }, ] -[[package]] -name = "toolz" -version = "1.0.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8a/0b/d80dfa675bf592f636d1ea0b835eab4ec8df6e9415d8cfd766df54456123/toolz-1.0.0.tar.gz", hash = "sha256:2c86e3d9a04798ac556793bced838816296a2f085017664e4995cb40a1047a02", size = 66790 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/03/98/eb27cc78ad3af8e302c9d8ff4977f5026676e130d28dd7578132a457170c/toolz-1.0.0-py3-none-any.whl", hash = "sha256:292c8f1c4e7516bf9086f8850935c799a874039c8bcf959d47b600e4c44a6236", size = 56383 }, -] - [[package]] name = "tornado" version = "6.5.1" @@ -3318,20 +2731,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/2d/82/f56956041adef78f849db6b289b282e72b55ab8045a75abad81898c28d19/wrapt-1.17.2-py3-none-any.whl", hash = "sha256:b18f2d1533a71f069c7f82d524a52599053d4c7166e9dd374ae2136b7f40f7c8", size = 23594 }, ] -[[package]] -name = "xarray" -version = "2025.6.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "numpy" }, - { name = "packaging" }, - { name = "pandas" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/19/ec/e50d833518f10b0c24feb184b209bb6856f25b919ba8c1f89678b930b1cd/xarray-2025.6.1.tar.gz", hash = "sha256:a84f3f07544634a130d7dc615ae44175419f4c77957a7255161ed99c69c7c8b0", size = 3003185 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/82/8a/6b50c1dd2260d407c1a499d47cf829f59f07007e0dcebafdabb24d1d26a5/xarray-2025.6.1-py3-none-any.whl", hash = "sha256:8b988b47f67a383bdc3b04c5db475cd165e580134c1f1943d52aee4a9c97651b", size = 1314739 }, -] - [[package]] name = "xmltodict" version = "0.14.2" @@ -3398,18 +2797,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b4/2d/2345fce04cfd4bee161bf1e7d9cdc702e3e16109021035dbb24db654a622/yarl-1.20.1-py3-none-any.whl", hash = "sha256:83b8eb083fe4683c6115795d9fc1cfaf2cbbefb19b3a1cb68f6527460f483a77", size = 46542 }, ] -[[package]] -name = "zarr" -version = "3.0.9.dev41+g27615fd0d" -source = { git = "https://github.com/zarr-developers/zarr-python#27615fd0d20d189b22aac0477ea05b5eca93137f" } -dependencies = [ - { name = "donfig" }, - { name = "numcodecs", extra = ["crc32c"] }, - { name = "numpy" }, - { name = "packaging" }, - { name = "typing-extensions" }, -] - [[package]] name = "zipp" version = "3.23.0" From 59167eaa631d237a0704730748628986ab157d6a Mon Sep 17 00:00:00 2001 From: Aimee Barciauskas Date: Tue, 9 Dec 2025 09:31:45 -0800 Subject: [PATCH 3/8] Remove obsolete API docs and packages references --- docs/api-reference/datacube-benchmark.md | 13 ------------- docs/api-reference/titiler-benchmark.md | 17 ----------------- mkdocs.yml | 1 - pyproject.toml | 3 --- 4 files changed, 34 deletions(-) delete mode 100644 docs/api-reference/datacube-benchmark.md delete mode 100644 docs/api-reference/titiler-benchmark.md diff --git a/docs/api-reference/datacube-benchmark.md b/docs/api-reference/datacube-benchmark.md deleted file mode 100644 index 4b17fbe..0000000 --- a/docs/api-reference/datacube-benchmark.md +++ /dev/null @@ -1,13 +0,0 @@ -# Datacube access - -::: datacube_benchmark.utils.array_storage_size - -::: datacube_benchmark.create_empty_dataarray - -::: datacube_benchmark.create_zarr_store - -::: datacube_benchmark.benchmark_zarr_array - -::: datacube_benchmark.benchmark_access_patterns - -::: datacube_benchmark.types.TARGET_SHAPES diff --git a/docs/api-reference/titiler-benchmark.md b/docs/api-reference/titiler-benchmark.md deleted file mode 100644 index fc0e75f..0000000 --- a/docs/api-reference/titiler-benchmark.md +++ /dev/null @@ -1,17 +0,0 @@ -# Dynamic tiling - -::: datacube_benchmark.titiler.check_titiler_cmr_compatibility - -::: datacube_benchmark.titiler.tiling_benchmark_summary - -::: datacube_benchmark.titiler.TiTilerCMRBenchmarker - -::: datacube_benchmark.titiler.DatasetParams - -::: datacube_benchmark.titiler.get_surrounding_tiles - -::: datacube_benchmark.titiler.fetch_tile - -::: datacube_benchmark.titiler.get_tileset_tiles - -::: datacube_benchmark.titiler.create_bbox_feature diff --git a/mkdocs.yml b/mkdocs.yml index ddeb4a8..569d7e4 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -42,7 +42,6 @@ nav: - "api-reference/titiler/titiler-multidim.md" watch: - - packages - docs - mkdocs.yml - pyproject.toml diff --git a/pyproject.toml b/pyproject.toml index a75aeb6..ba79968 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -13,9 +13,6 @@ dependencies = [ datacube_benchmark = { workspace = true } zarr = { git = "https://github.com/zarr-developers/zarr-python" } -[tool.uv.workspace] -members = ["packages/*"] - [tool.numpydoc_validation] # See https://numpydoc.readthedocs.io/en/latest/validation.html#built-in-validation-checks for list of checks checks = [ From 6bffa0d599983ccb2652abe5fef1e9fa0e4c550d Mon Sep 17 00:00:00 2001 From: Aimee Barciauskas Date: Tue, 9 Dec 2025 09:34:35 -0800 Subject: [PATCH 4/8] Remove benchmarking section of navigation --- mkdocs.yml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/mkdocs.yml b/mkdocs.yml index 569d7e4..d90ab22 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -31,11 +31,6 @@ nav: - Overview: "visualization/overview.md" - Titiler: - Ecosystem overview: "visualization/titiler/overview.md" - - - API Reference: - - Benchmarking: - - "api-reference/titiler-benchmark.md" - - Titiler: - "api-reference/titiler/index.md" - "api-reference/titiler/titiler-core.md" - "api-reference/titiler/titiler-cmr.md" From 72ad0dbf922c5579ff655cd43131d3d00d8ba861 Mon Sep 17 00:00:00 2001 From: Aimee Barciauskas Date: Fri, 12 Dec 2025 14:11:47 -0800 Subject: [PATCH 5/8] Add back datacube_benchmark package --- docs/worst-practices/tiny-chunks.ipynb | 566 ++++++++++++++- mkdocs.yml | 16 + packages/datacube-benchmark/README.md | 1 + packages/datacube-benchmark/pyproject.toml | 51 ++ .../src/datacube_benchmark/__init__.py | 32 + .../src/datacube_benchmark/chunks.py | 115 ++++ .../src/datacube_benchmark/config.py | 16 + .../src/datacube_benchmark/create.py | 354 ++++++++++ .../src/datacube_benchmark/defaults.py | 99 +++ .../src/datacube_benchmark/open.py | 97 +++ .../src/datacube_benchmark/query.py | 190 ++++++ .../src/datacube_benchmark/types.py | 5 + .../src/datacube_benchmark/utils.py | 59 ++ pyproject.toml | 7 + uv.lock | 644 +++++++++++++++++- 15 files changed, 2235 insertions(+), 17 deletions(-) create mode 100644 packages/datacube-benchmark/README.md create mode 100644 packages/datacube-benchmark/pyproject.toml create mode 100644 packages/datacube-benchmark/src/datacube_benchmark/__init__.py create mode 100644 packages/datacube-benchmark/src/datacube_benchmark/chunks.py create mode 100644 packages/datacube-benchmark/src/datacube_benchmark/config.py create mode 100644 packages/datacube-benchmark/src/datacube_benchmark/create.py create mode 100644 packages/datacube-benchmark/src/datacube_benchmark/defaults.py create mode 100644 packages/datacube-benchmark/src/datacube_benchmark/open.py create mode 100644 packages/datacube-benchmark/src/datacube_benchmark/query.py create mode 100644 packages/datacube-benchmark/src/datacube_benchmark/types.py create mode 100644 packages/datacube-benchmark/src/datacube_benchmark/utils.py diff --git a/docs/worst-practices/tiny-chunks.ipynb b/docs/worst-practices/tiny-chunks.ipynb index cface31..5e604e6 100644 --- a/docs/worst-practices/tiny-chunks.ipynb +++ b/docs/worst-practices/tiny-chunks.ipynb @@ -57,16 +57,517 @@ }, { "data": { - "application/javascript": "(function(root) {\n function now() {\n return new Date();\n }\n\n const force = true;\n const py_version = '3.7.3'.replace('rc', '-rc.').replace('.dev', '-dev.');\n const reloading = false;\n const Bokeh = root.Bokeh;\n\n // Set a timeout for this load but only if we are not already initializing\n if (typeof (root._bokeh_timeout) === \"undefined\" || (force || !root._bokeh_is_initializing)) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks;\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, js_modules, js_exports, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n if (js_modules == null) js_modules = [];\n if (js_exports == null) js_exports = {};\n\n root._bokeh_onload_callbacks.push(callback);\n\n if (root._bokeh_is_loading > 0) {\n // Don't load bokeh if it is still initializing\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n } else if (js_urls.length === 0 && js_modules.length === 0 && Object.keys(js_exports).length === 0) {\n // There is nothing to load\n run_callbacks();\n return null;\n }\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n window._bokeh_on_load = on_load\n\n function on_error(e) {\n const src_el = e.srcElement\n console.error(\"failed to load \" + (src_el.href || src_el.src));\n }\n\n const skip = [];\n if (window.requirejs) {\n window.requirejs.config({'packages': {}, 'paths': {}, 'shim': {}});\n root._bokeh_is_loading = css_urls.length + 0;\n } else {\n root._bokeh_is_loading = css_urls.length + js_urls.length + js_modules.length + Object.keys(js_exports).length;\n }\n\n const existing_stylesheets = []\n const links = document.getElementsByTagName('link')\n for (let i = 0; i < links.length; i++) {\n const link = links[i]\n if (link.href != null) {\n existing_stylesheets.push(link.href)\n }\n }\n for (let i = 0; i < css_urls.length; i++) {\n const url = css_urls[i];\n const escaped = encodeURI(url)\n if (existing_stylesheets.indexOf(escaped) !== -1) {\n on_load()\n continue;\n }\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error;\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n } var existing_scripts = []\n const scripts = document.getElementsByTagName('script')\n for (let i = 0; i < scripts.length; i++) {\n var script = scripts[i]\n if (script.src != null) {\n existing_scripts.push(script.src)\n }\n }\n for (let i = 0; i < js_urls.length; i++) {\n const url = js_urls[i];\n const escaped = encodeURI(url)\n if (skip.indexOf(escaped) !== -1 || existing_scripts.indexOf(escaped) !== -1) {\n if (!window.requirejs) {\n on_load();\n }\n continue;\n }\n const element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error;\n element.async = false;\n element.src = url;\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n for (let i = 0; i < js_modules.length; i++) {\n const url = js_modules[i];\n const escaped = encodeURI(url)\n if (skip.indexOf(escaped) !== -1 || existing_scripts.indexOf(escaped) !== -1) {\n if (!window.requirejs) {\n on_load();\n }\n continue;\n }\n var element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error;\n element.async = false;\n element.src = url;\n element.type = \"module\";\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n for (const name in js_exports) {\n const url = js_exports[name];\n const escaped = encodeURI(url)\n if (skip.indexOf(escaped) >= 0 || root[name] != null) {\n if (!window.requirejs) {\n on_load();\n }\n continue;\n }\n var element = document.createElement('script');\n element.onerror = on_error;\n element.async = false;\n element.type = \"module\";\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n element.textContent = `\n import ${name} from \"${url}\"\n window.${name} = ${name}\n window._bokeh_on_load()\n `\n document.head.appendChild(element);\n }\n if (!js_urls.length && !js_modules.length) {\n on_load()\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n const js_urls = [\"https://cdn.holoviz.org/panel/1.7.1/dist/bundled/reactiveesm/es-module-shims@^1.10.0/dist/es-module-shims.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-3.7.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.7.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.7.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.7.3.min.js\", \"https://cdn.holoviz.org/panel/1.7.1/dist/panel.min.js\"];\n const js_modules = [];\n const js_exports = {};\n const css_urls = [];\n const inline_js = [ function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\nfunction(Bokeh) {} // ensure no trailing comma for IE\n ];\n\n function run_inline_js() {\n if ((root.Bokeh !== undefined) || (force === true)) {\n for (let i = 0; i < inline_js.length; i++) {\n try {\n inline_js[i].call(root, root.Bokeh);\n } catch(e) {\n if (!reloading) {\n throw e;\n }\n }\n }\n // Cache old bokeh versions\n if (Bokeh != undefined && !reloading) {\n var NewBokeh = root.Bokeh;\n if (Bokeh.versions === undefined) {\n Bokeh.versions = new Map();\n }\n if (NewBokeh.version !== Bokeh.version) {\n Bokeh.versions.set(NewBokeh.version, NewBokeh)\n }\n root.Bokeh = Bokeh;\n }\n } else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n }\n root._bokeh_is_initializing = false\n }\n\n function load_or_wait() {\n // Implement a backoff loop that tries to ensure we do not load multiple\n // versions of Bokeh and its dependencies at the same time.\n // In recent versions we use the root._bokeh_is_initializing flag\n // to determine whether there is an ongoing attempt to initialize\n // bokeh, however for backward compatibility we also try to ensure\n // that we do not start loading a newer (Panel>=1.0 and Bokeh>3) version\n // before older versions are fully initialized.\n if (root._bokeh_is_initializing && Date.now() > root._bokeh_timeout) {\n // If the timeout and bokeh was not successfully loaded we reset\n // everything and try loading again\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_is_initializing = false;\n root._bokeh_onload_callbacks = undefined;\n root._bokeh_is_loading = 0\n console.log(\"Bokeh: BokehJS was loaded multiple times but one version failed to initialize.\");\n load_or_wait();\n } else if (root._bokeh_is_initializing || (typeof root._bokeh_is_initializing === \"undefined\" && root._bokeh_onload_callbacks !== undefined)) {\n setTimeout(load_or_wait, 100);\n } else {\n root._bokeh_is_initializing = true\n root._bokeh_onload_callbacks = []\n const bokeh_loaded = root.Bokeh != null && (root.Bokeh.version === py_version || (root.Bokeh.versions !== undefined && root.Bokeh.versions.has(py_version)));\n if (!reloading && !bokeh_loaded) {\n if (root.Bokeh) {\n root.Bokeh = undefined;\n }\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n }\n load_libs(css_urls, js_urls, js_modules, js_exports, function() {\n console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n run_inline_js();\n });\n }\n }\n // Give older versions of the autoload script a head-start to ensure\n // they initialize before we start loading newer version.\n setTimeout(load_or_wait, 100)\n}(window));", - "application/vnd.holoviews_load.v0+json": "" + "application/javascript": [ + "(function(root) {\n", + " function now() {\n", + " return new Date();\n", + " }\n", + "\n", + " const force = true;\n", + " const py_version = '3.7.3'.replace('rc', '-rc.').replace('.dev', '-dev.');\n", + " const reloading = false;\n", + " const Bokeh = root.Bokeh;\n", + "\n", + " // Set a timeout for this load but only if we are not already initializing\n", + " if (typeof (root._bokeh_timeout) === \"undefined\" || (force || !root._bokeh_is_initializing)) {\n", + " root._bokeh_timeout = Date.now() + 5000;\n", + " root._bokeh_failed_load = false;\n", + " }\n", + "\n", + " function run_callbacks() {\n", + " try {\n", + " root._bokeh_onload_callbacks.forEach(function(callback) {\n", + " if (callback != null)\n", + " callback();\n", + " });\n", + " } finally {\n", + " delete root._bokeh_onload_callbacks;\n", + " }\n", + " console.debug(\"Bokeh: all callbacks have finished\");\n", + " }\n", + "\n", + " function load_libs(css_urls, js_urls, js_modules, js_exports, callback) {\n", + " if (css_urls == null) css_urls = [];\n", + " if (js_urls == null) js_urls = [];\n", + " if (js_modules == null) js_modules = [];\n", + " if (js_exports == null) js_exports = {};\n", + "\n", + " root._bokeh_onload_callbacks.push(callback);\n", + "\n", + " if (root._bokeh_is_loading > 0) {\n", + " // Don't load bokeh if it is still initializing\n", + " console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n", + " return null;\n", + " } else if (js_urls.length === 0 && js_modules.length === 0 && Object.keys(js_exports).length === 0) {\n", + " // There is nothing to load\n", + " run_callbacks();\n", + " return null;\n", + " }\n", + "\n", + " function on_load() {\n", + " root._bokeh_is_loading--;\n", + " if (root._bokeh_is_loading === 0) {\n", + " console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n", + " run_callbacks()\n", + " }\n", + " }\n", + " window._bokeh_on_load = on_load\n", + "\n", + " function on_error(e) {\n", + " const src_el = e.srcElement\n", + " console.error(\"failed to load \" + (src_el.href || src_el.src));\n", + " }\n", + "\n", + " const skip = [];\n", + " if (window.requirejs) {\n", + " window.requirejs.config({'packages': {}, 'paths': {}, 'shim': {}});\n", + " root._bokeh_is_loading = css_urls.length + 0;\n", + " } else {\n", + " root._bokeh_is_loading = css_urls.length + js_urls.length + js_modules.length + Object.keys(js_exports).length;\n", + " }\n", + "\n", + " const existing_stylesheets = []\n", + " const links = document.getElementsByTagName('link')\n", + " for (let i = 0; i < links.length; i++) {\n", + " const link = links[i]\n", + " if (link.href != null) {\n", + " existing_stylesheets.push(link.href)\n", + " }\n", + " }\n", + " for (let i = 0; i < css_urls.length; i++) {\n", + " const url = css_urls[i];\n", + " const escaped = encodeURI(url)\n", + " if (existing_stylesheets.indexOf(escaped) !== -1) {\n", + " on_load()\n", + " continue;\n", + " }\n", + " const element = document.createElement(\"link\");\n", + " element.onload = on_load;\n", + " element.onerror = on_error;\n", + " element.rel = \"stylesheet\";\n", + " element.type = \"text/css\";\n", + " element.href = url;\n", + " console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n", + " document.body.appendChild(element);\n", + " } var existing_scripts = []\n", + " const scripts = document.getElementsByTagName('script')\n", + " for (let i = 0; i < scripts.length; i++) {\n", + " var script = scripts[i]\n", + " if (script.src != null) {\n", + " existing_scripts.push(script.src)\n", + " }\n", + " }\n", + " for (let i = 0; i < js_urls.length; i++) {\n", + " const url = js_urls[i];\n", + " const escaped = encodeURI(url)\n", + " if (skip.indexOf(escaped) !== -1 || existing_scripts.indexOf(escaped) !== -1) {\n", + " if (!window.requirejs) {\n", + " on_load();\n", + " }\n", + " continue;\n", + " }\n", + " const element = document.createElement('script');\n", + " element.onload = on_load;\n", + " element.onerror = on_error;\n", + " element.async = false;\n", + " element.src = url;\n", + " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", + " document.head.appendChild(element);\n", + " }\n", + " for (let i = 0; i < js_modules.length; i++) {\n", + " const url = js_modules[i];\n", + " const escaped = encodeURI(url)\n", + " if (skip.indexOf(escaped) !== -1 || existing_scripts.indexOf(escaped) !== -1) {\n", + " if (!window.requirejs) {\n", + " on_load();\n", + " }\n", + " continue;\n", + " }\n", + " var element = document.createElement('script');\n", + " element.onload = on_load;\n", + " element.onerror = on_error;\n", + " element.async = false;\n", + " element.src = url;\n", + " element.type = \"module\";\n", + " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", + " document.head.appendChild(element);\n", + " }\n", + " for (const name in js_exports) {\n", + " const url = js_exports[name];\n", + " const escaped = encodeURI(url)\n", + " if (skip.indexOf(escaped) >= 0 || root[name] != null) {\n", + " if (!window.requirejs) {\n", + " on_load();\n", + " }\n", + " continue;\n", + " }\n", + " var element = document.createElement('script');\n", + " element.onerror = on_error;\n", + " element.async = false;\n", + " element.type = \"module\";\n", + " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", + " element.textContent = `\n", + " import ${name} from \"${url}\"\n", + " window.${name} = ${name}\n", + " window._bokeh_on_load()\n", + " `\n", + " document.head.appendChild(element);\n", + " }\n", + " if (!js_urls.length && !js_modules.length) {\n", + " on_load()\n", + " }\n", + " };\n", + "\n", + " function inject_raw_css(css) {\n", + " const element = document.createElement(\"style\");\n", + " element.appendChild(document.createTextNode(css));\n", + " document.body.appendChild(element);\n", + " }\n", + "\n", + " const js_urls = [\"https://cdn.holoviz.org/panel/1.7.1/dist/bundled/reactiveesm/es-module-shims@^1.10.0/dist/es-module-shims.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-3.7.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.7.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.7.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.7.3.min.js\", \"https://cdn.holoviz.org/panel/1.7.1/dist/panel.min.js\"];\n", + " const js_modules = [];\n", + " const js_exports = {};\n", + " const css_urls = [];\n", + " const inline_js = [ function(Bokeh) {\n", + " Bokeh.set_log_level(\"info\");\n", + " },\n", + "function(Bokeh) {} // ensure no trailing comma for IE\n", + " ];\n", + "\n", + " function run_inline_js() {\n", + " if ((root.Bokeh !== undefined) || (force === true)) {\n", + " for (let i = 0; i < inline_js.length; i++) {\n", + " try {\n", + " inline_js[i].call(root, root.Bokeh);\n", + " } catch(e) {\n", + " if (!reloading) {\n", + " throw e;\n", + " }\n", + " }\n", + " }\n", + " // Cache old bokeh versions\n", + " if (Bokeh != undefined && !reloading) {\n", + " var NewBokeh = root.Bokeh;\n", + " if (Bokeh.versions === undefined) {\n", + " Bokeh.versions = new Map();\n", + " }\n", + " if (NewBokeh.version !== Bokeh.version) {\n", + " Bokeh.versions.set(NewBokeh.version, NewBokeh)\n", + " }\n", + " root.Bokeh = Bokeh;\n", + " }\n", + " } else if (Date.now() < root._bokeh_timeout) {\n", + " setTimeout(run_inline_js, 100);\n", + " } else if (!root._bokeh_failed_load) {\n", + " console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n", + " root._bokeh_failed_load = true;\n", + " }\n", + " root._bokeh_is_initializing = false\n", + " }\n", + "\n", + " function load_or_wait() {\n", + " // Implement a backoff loop that tries to ensure we do not load multiple\n", + " // versions of Bokeh and its dependencies at the same time.\n", + " // In recent versions we use the root._bokeh_is_initializing flag\n", + " // to determine whether there is an ongoing attempt to initialize\n", + " // bokeh, however for backward compatibility we also try to ensure\n", + " // that we do not start loading a newer (Panel>=1.0 and Bokeh>3) version\n", + " // before older versions are fully initialized.\n", + " if (root._bokeh_is_initializing && Date.now() > root._bokeh_timeout) {\n", + " // If the timeout and bokeh was not successfully loaded we reset\n", + " // everything and try loading again\n", + " root._bokeh_timeout = Date.now() + 5000;\n", + " root._bokeh_is_initializing = false;\n", + " root._bokeh_onload_callbacks = undefined;\n", + " root._bokeh_is_loading = 0\n", + " console.log(\"Bokeh: BokehJS was loaded multiple times but one version failed to initialize.\");\n", + " load_or_wait();\n", + " } else if (root._bokeh_is_initializing || (typeof root._bokeh_is_initializing === \"undefined\" && root._bokeh_onload_callbacks !== undefined)) {\n", + " setTimeout(load_or_wait, 100);\n", + " } else {\n", + " root._bokeh_is_initializing = true\n", + " root._bokeh_onload_callbacks = []\n", + " const bokeh_loaded = root.Bokeh != null && (root.Bokeh.version === py_version || (root.Bokeh.versions !== undefined && root.Bokeh.versions.has(py_version)));\n", + " if (!reloading && !bokeh_loaded) {\n", + " if (root.Bokeh) {\n", + " root.Bokeh = undefined;\n", + " }\n", + " console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n", + " }\n", + " load_libs(css_urls, js_urls, js_modules, js_exports, function() {\n", + " console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n", + " run_inline_js();\n", + " });\n", + " }\n", + " }\n", + " // Give older versions of the autoload script a head-start to ensure\n", + " // they initialize before we start loading newer version.\n", + " setTimeout(load_or_wait, 100)\n", + "}(window));" + ], + "application/vnd.holoviews_load.v0+json": "(function(root) {\n function now() {\n return new Date();\n }\n\n const force = true;\n const py_version = '3.7.3'.replace('rc', '-rc.').replace('.dev', '-dev.');\n const reloading = false;\n const Bokeh = root.Bokeh;\n\n // Set a timeout for this load but only if we are not already initializing\n if (typeof (root._bokeh_timeout) === \"undefined\" || (force || !root._bokeh_is_initializing)) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks;\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, js_modules, js_exports, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n if (js_modules == null) js_modules = [];\n if (js_exports == null) js_exports = {};\n\n root._bokeh_onload_callbacks.push(callback);\n\n if (root._bokeh_is_loading > 0) {\n // Don't load bokeh if it is still initializing\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n } else if (js_urls.length === 0 && js_modules.length === 0 && Object.keys(js_exports).length === 0) {\n // There is nothing to load\n run_callbacks();\n return null;\n }\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n window._bokeh_on_load = on_load\n\n function on_error(e) {\n const src_el = e.srcElement\n console.error(\"failed to load \" + (src_el.href || src_el.src));\n }\n\n const skip = [];\n if (window.requirejs) {\n window.requirejs.config({'packages': {}, 'paths': {}, 'shim': {}});\n root._bokeh_is_loading = css_urls.length + 0;\n } else {\n root._bokeh_is_loading = css_urls.length + js_urls.length + js_modules.length + Object.keys(js_exports).length;\n }\n\n const existing_stylesheets = []\n const links = document.getElementsByTagName('link')\n for (let i = 0; i < links.length; i++) {\n const link = links[i]\n if (link.href != null) {\n existing_stylesheets.push(link.href)\n }\n }\n for (let i = 0; i < css_urls.length; i++) {\n const url = css_urls[i];\n const escaped = encodeURI(url)\n if (existing_stylesheets.indexOf(escaped) !== -1) {\n on_load()\n continue;\n }\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error;\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n } var existing_scripts = []\n const scripts = document.getElementsByTagName('script')\n for (let i = 0; i < scripts.length; i++) {\n var script = scripts[i]\n if (script.src != null) {\n existing_scripts.push(script.src)\n }\n }\n for (let i = 0; i < js_urls.length; i++) {\n const url = js_urls[i];\n const escaped = encodeURI(url)\n if (skip.indexOf(escaped) !== -1 || existing_scripts.indexOf(escaped) !== -1) {\n if (!window.requirejs) {\n on_load();\n }\n continue;\n }\n const element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error;\n element.async = false;\n element.src = url;\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n for (let i = 0; i < js_modules.length; i++) {\n const url = js_modules[i];\n const escaped = encodeURI(url)\n if (skip.indexOf(escaped) !== -1 || existing_scripts.indexOf(escaped) !== -1) {\n if (!window.requirejs) {\n on_load();\n }\n continue;\n }\n var element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error;\n element.async = false;\n element.src = url;\n element.type = \"module\";\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n for (const name in js_exports) {\n const url = js_exports[name];\n const escaped = encodeURI(url)\n if (skip.indexOf(escaped) >= 0 || root[name] != null) {\n if (!window.requirejs) {\n on_load();\n }\n continue;\n }\n var element = document.createElement('script');\n element.onerror = on_error;\n element.async = false;\n element.type = \"module\";\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n element.textContent = `\n import ${name} from \"${url}\"\n window.${name} = ${name}\n window._bokeh_on_load()\n `\n document.head.appendChild(element);\n }\n if (!js_urls.length && !js_modules.length) {\n on_load()\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n const js_urls = [\"https://cdn.holoviz.org/panel/1.7.1/dist/bundled/reactiveesm/es-module-shims@^1.10.0/dist/es-module-shims.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-3.7.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.7.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.7.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.7.3.min.js\", \"https://cdn.holoviz.org/panel/1.7.1/dist/panel.min.js\"];\n const js_modules = [];\n const js_exports = {};\n const css_urls = [];\n const inline_js = [ function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\nfunction(Bokeh) {} // ensure no trailing comma for IE\n ];\n\n function run_inline_js() {\n if ((root.Bokeh !== undefined) || (force === true)) {\n for (let i = 0; i < inline_js.length; i++) {\n try {\n inline_js[i].call(root, root.Bokeh);\n } catch(e) {\n if (!reloading) {\n throw e;\n }\n }\n }\n // Cache old bokeh versions\n if (Bokeh != undefined && !reloading) {\n var NewBokeh = root.Bokeh;\n if (Bokeh.versions === undefined) {\n Bokeh.versions = new Map();\n }\n if (NewBokeh.version !== Bokeh.version) {\n Bokeh.versions.set(NewBokeh.version, NewBokeh)\n }\n root.Bokeh = Bokeh;\n }\n } else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n }\n root._bokeh_is_initializing = false\n }\n\n function load_or_wait() {\n // Implement a backoff loop that tries to ensure we do not load multiple\n // versions of Bokeh and its dependencies at the same time.\n // In recent versions we use the root._bokeh_is_initializing flag\n // to determine whether there is an ongoing attempt to initialize\n // bokeh, however for backward compatibility we also try to ensure\n // that we do not start loading a newer (Panel>=1.0 and Bokeh>3) version\n // before older versions are fully initialized.\n if (root._bokeh_is_initializing && Date.now() > root._bokeh_timeout) {\n // If the timeout and bokeh was not successfully loaded we reset\n // everything and try loading again\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_is_initializing = false;\n root._bokeh_onload_callbacks = undefined;\n root._bokeh_is_loading = 0\n console.log(\"Bokeh: BokehJS was loaded multiple times but one version failed to initialize.\");\n load_or_wait();\n } else if (root._bokeh_is_initializing || (typeof root._bokeh_is_initializing === \"undefined\" && root._bokeh_onload_callbacks !== undefined)) {\n setTimeout(load_or_wait, 100);\n } else {\n root._bokeh_is_initializing = true\n root._bokeh_onload_callbacks = []\n const bokeh_loaded = root.Bokeh != null && (root.Bokeh.version === py_version || (root.Bokeh.versions !== undefined && root.Bokeh.versions.has(py_version)));\n if (!reloading && !bokeh_loaded) {\n if (root.Bokeh) {\n root.Bokeh = undefined;\n }\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n }\n load_libs(css_urls, js_urls, js_modules, js_exports, function() {\n console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n run_inline_js();\n });\n }\n }\n // Give older versions of the autoload script a head-start to ensure\n // they initialize before we start loading newer version.\n setTimeout(load_or_wait, 100)\n}(window));" }, "metadata": {}, "output_type": "display_data" }, { "data": { - "application/javascript": "\nif ((window.PyViz === undefined) || (window.PyViz instanceof HTMLElement)) {\n window.PyViz = {comms: {}, comm_status:{}, kernels:{}, receivers: {}, plot_index: []}\n}\n\n\n function JupyterCommManager() {\n }\n\n JupyterCommManager.prototype.register_target = function(plot_id, comm_id, msg_handler) {\n if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n comm_manager.register_target(comm_id, function(comm) {\n comm.on_msg(msg_handler);\n });\n } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n window.PyViz.kernels[plot_id].registerCommTarget(comm_id, function(comm) {\n comm.onMsg = msg_handler;\n });\n } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n google.colab.kernel.comms.registerTarget(comm_id, (comm) => {\n var messages = comm.messages[Symbol.asyncIterator]();\n function processIteratorResult(result) {\n var message = result.value;\n var content = {data: message.data, comm_id};\n var buffers = []\n for (var buffer of message.buffers || []) {\n buffers.push(new DataView(buffer))\n }\n var metadata = message.metadata || {};\n var msg = {content, buffers, metadata}\n msg_handler(msg);\n return messages.next().then(processIteratorResult);\n }\n return messages.next().then(processIteratorResult);\n })\n }\n }\n\n JupyterCommManager.prototype.get_client_comm = function(plot_id, comm_id, msg_handler) {\n if (comm_id in window.PyViz.comms) {\n return window.PyViz.comms[comm_id];\n } else if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n var comm = comm_manager.new_comm(comm_id, {}, {}, {}, comm_id);\n if (msg_handler) {\n comm.on_msg(msg_handler);\n }\n } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n var comm = window.PyViz.kernels[plot_id].connectToComm(comm_id);\n let retries = 0;\n const open = () => {\n if (comm.active) {\n comm.open();\n } else if (retries > 3) {\n console.warn('Comm target never activated')\n } else {\n retries += 1\n setTimeout(open, 500)\n }\n }\n if (comm.active) {\n comm.open();\n } else {\n setTimeout(open, 500)\n }\n if (msg_handler) {\n comm.onMsg = msg_handler;\n }\n } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n var comm_promise = google.colab.kernel.comms.open(comm_id)\n comm_promise.then((comm) => {\n window.PyViz.comms[comm_id] = comm;\n if (msg_handler) {\n var messages = comm.messages[Symbol.asyncIterator]();\n function processIteratorResult(result) {\n var message = result.value;\n var content = {data: message.data};\n var metadata = message.metadata || {comm_id};\n var msg = {content, metadata}\n msg_handler(msg);\n return messages.next().then(processIteratorResult);\n }\n return messages.next().then(processIteratorResult);\n }\n })\n var sendClosure = (data, metadata, buffers, disposeOnDone) => {\n return comm_promise.then((comm) => {\n comm.send(data, metadata, buffers, disposeOnDone);\n });\n };\n var comm = {\n send: sendClosure\n };\n }\n window.PyViz.comms[comm_id] = comm;\n return comm;\n }\n window.PyViz.comm_manager = new JupyterCommManager();\n \n\n\nvar JS_MIME_TYPE = 'application/javascript';\nvar HTML_MIME_TYPE = 'text/html';\nvar EXEC_MIME_TYPE = 'application/vnd.holoviews_exec.v0+json';\nvar CLASS_NAME = 'output';\n\n/**\n * Render data to the DOM node\n */\nfunction render(props, node) {\n var div = document.createElement(\"div\");\n var script = document.createElement(\"script\");\n node.appendChild(div);\n node.appendChild(script);\n}\n\n/**\n * Handle when a new output is added\n */\nfunction handle_add_output(event, handle) {\n var output_area = handle.output_area;\n var output = handle.output;\n if ((output.data == undefined) || (!output.data.hasOwnProperty(EXEC_MIME_TYPE))) {\n return\n }\n var id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n var toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n if (id !== undefined) {\n var nchildren = toinsert.length;\n var html_node = toinsert[nchildren-1].children[0];\n html_node.innerHTML = output.data[HTML_MIME_TYPE];\n var scripts = [];\n var nodelist = html_node.querySelectorAll(\"script\");\n for (var i in nodelist) {\n if (nodelist.hasOwnProperty(i)) {\n scripts.push(nodelist[i])\n }\n }\n\n scripts.forEach( function (oldScript) {\n var newScript = document.createElement(\"script\");\n var attrs = [];\n var nodemap = oldScript.attributes;\n for (var j in nodemap) {\n if (nodemap.hasOwnProperty(j)) {\n attrs.push(nodemap[j])\n }\n }\n attrs.forEach(function(attr) { newScript.setAttribute(attr.name, attr.value) });\n newScript.appendChild(document.createTextNode(oldScript.innerHTML));\n oldScript.parentNode.replaceChild(newScript, oldScript);\n });\n if (JS_MIME_TYPE in output.data) {\n toinsert[nchildren-1].children[1].textContent = output.data[JS_MIME_TYPE];\n }\n output_area._hv_plot_id = id;\n if ((window.Bokeh !== undefined) && (id in Bokeh.index)) {\n window.PyViz.plot_index[id] = Bokeh.index[id];\n } else {\n window.PyViz.plot_index[id] = null;\n }\n } else if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n var bk_div = document.createElement(\"div\");\n bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n var script_attrs = bk_div.children[0].attributes;\n for (var i = 0; i < script_attrs.length; i++) {\n toinsert[toinsert.length - 1].childNodes[1].setAttribute(script_attrs[i].name, script_attrs[i].value);\n }\n // store reference to server id on output_area\n output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n }\n}\n\n/**\n * Handle when an output is cleared or removed\n */\nfunction handle_clear_output(event, handle) {\n var id = handle.cell.output_area._hv_plot_id;\n var server_id = handle.cell.output_area._bokeh_server_id;\n if (((id === undefined) || !(id in PyViz.plot_index)) && (server_id !== undefined)) { return; }\n var comm = window.PyViz.comm_manager.get_client_comm(\"hv-extension-comm\", \"hv-extension-comm\", function () {});\n if (server_id !== null) {\n comm.send({event_type: 'server_delete', 'id': server_id});\n return;\n } else if (comm !== null) {\n comm.send({event_type: 'delete', 'id': id});\n }\n delete PyViz.plot_index[id];\n if ((window.Bokeh !== undefined) & (id in window.Bokeh.index)) {\n var doc = window.Bokeh.index[id].model.document\n doc.clear();\n const i = window.Bokeh.documents.indexOf(doc);\n if (i > -1) {\n window.Bokeh.documents.splice(i, 1);\n }\n }\n}\n\n/**\n * Handle kernel restart event\n */\nfunction handle_kernel_cleanup(event, handle) {\n delete PyViz.comms[\"hv-extension-comm\"];\n window.PyViz.plot_index = {}\n}\n\n/**\n * Handle update_display_data messages\n */\nfunction handle_update_output(event, handle) {\n handle_clear_output(event, {cell: {output_area: handle.output_area}})\n handle_add_output(event, handle)\n}\n\nfunction register_renderer(events, OutputArea) {\n function append_mime(data, metadata, element) {\n // create a DOM node to render to\n var toinsert = this.create_output_subarea(\n metadata,\n CLASS_NAME,\n EXEC_MIME_TYPE\n );\n this.keyboard_manager.register_events(toinsert);\n // Render to node\n var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n render(props, toinsert[0]);\n element.append(toinsert);\n return toinsert\n }\n\n events.on('output_added.OutputArea', handle_add_output);\n events.on('output_updated.OutputArea', handle_update_output);\n events.on('clear_output.CodeCell', handle_clear_output);\n events.on('delete.Cell', handle_clear_output);\n events.on('kernel_ready.Kernel', handle_kernel_cleanup);\n\n OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n safe: true,\n index: 0\n });\n}\n\nif (window.Jupyter !== undefined) {\n try {\n var events = require('base/js/events');\n var OutputArea = require('notebook/js/outputarea').OutputArea;\n if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n register_renderer(events, OutputArea);\n }\n } catch(err) {\n }\n}\n", - "application/vnd.holoviews_load.v0+json": "" + "application/javascript": [ + "\n", + "if ((window.PyViz === undefined) || (window.PyViz instanceof HTMLElement)) {\n", + " window.PyViz = {comms: {}, comm_status:{}, kernels:{}, receivers: {}, plot_index: []}\n", + "}\n", + "\n", + "\n", + " function JupyterCommManager() {\n", + " }\n", + "\n", + " JupyterCommManager.prototype.register_target = function(plot_id, comm_id, msg_handler) {\n", + " if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n", + " var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n", + " comm_manager.register_target(comm_id, function(comm) {\n", + " comm.on_msg(msg_handler);\n", + " });\n", + " } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n", + " window.PyViz.kernels[plot_id].registerCommTarget(comm_id, function(comm) {\n", + " comm.onMsg = msg_handler;\n", + " });\n", + " } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n", + " google.colab.kernel.comms.registerTarget(comm_id, (comm) => {\n", + " var messages = comm.messages[Symbol.asyncIterator]();\n", + " function processIteratorResult(result) {\n", + " var message = result.value;\n", + " var content = {data: message.data, comm_id};\n", + " var buffers = []\n", + " for (var buffer of message.buffers || []) {\n", + " buffers.push(new DataView(buffer))\n", + " }\n", + " var metadata = message.metadata || {};\n", + " var msg = {content, buffers, metadata}\n", + " msg_handler(msg);\n", + " return messages.next().then(processIteratorResult);\n", + " }\n", + " return messages.next().then(processIteratorResult);\n", + " })\n", + " }\n", + " }\n", + "\n", + " JupyterCommManager.prototype.get_client_comm = function(plot_id, comm_id, msg_handler) {\n", + " if (comm_id in window.PyViz.comms) {\n", + " return window.PyViz.comms[comm_id];\n", + " } else if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n", + " var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n", + " var comm = comm_manager.new_comm(comm_id, {}, {}, {}, comm_id);\n", + " if (msg_handler) {\n", + " comm.on_msg(msg_handler);\n", + " }\n", + " } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n", + " var comm = window.PyViz.kernels[plot_id].connectToComm(comm_id);\n", + " let retries = 0;\n", + " const open = () => {\n", + " if (comm.active) {\n", + " comm.open();\n", + " } else if (retries > 3) {\n", + " console.warn('Comm target never activated')\n", + " } else {\n", + " retries += 1\n", + " setTimeout(open, 500)\n", + " }\n", + " }\n", + " if (comm.active) {\n", + " comm.open();\n", + " } else {\n", + " setTimeout(open, 500)\n", + " }\n", + " if (msg_handler) {\n", + " comm.onMsg = msg_handler;\n", + " }\n", + " } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n", + " var comm_promise = google.colab.kernel.comms.open(comm_id)\n", + " comm_promise.then((comm) => {\n", + " window.PyViz.comms[comm_id] = comm;\n", + " if (msg_handler) {\n", + " var messages = comm.messages[Symbol.asyncIterator]();\n", + " function processIteratorResult(result) {\n", + " var message = result.value;\n", + " var content = {data: message.data};\n", + " var metadata = message.metadata || {comm_id};\n", + " var msg = {content, metadata}\n", + " msg_handler(msg);\n", + " return messages.next().then(processIteratorResult);\n", + " }\n", + " return messages.next().then(processIteratorResult);\n", + " }\n", + " })\n", + " var sendClosure = (data, metadata, buffers, disposeOnDone) => {\n", + " return comm_promise.then((comm) => {\n", + " comm.send(data, metadata, buffers, disposeOnDone);\n", + " });\n", + " };\n", + " var comm = {\n", + " send: sendClosure\n", + " };\n", + " }\n", + " window.PyViz.comms[comm_id] = comm;\n", + " return comm;\n", + " }\n", + " window.PyViz.comm_manager = new JupyterCommManager();\n", + " \n", + "\n", + "\n", + "var JS_MIME_TYPE = 'application/javascript';\n", + "var HTML_MIME_TYPE = 'text/html';\n", + "var EXEC_MIME_TYPE = 'application/vnd.holoviews_exec.v0+json';\n", + "var CLASS_NAME = 'output';\n", + "\n", + "/**\n", + " * Render data to the DOM node\n", + " */\n", + "function render(props, node) {\n", + " var div = document.createElement(\"div\");\n", + " var script = document.createElement(\"script\");\n", + " node.appendChild(div);\n", + " node.appendChild(script);\n", + "}\n", + "\n", + "/**\n", + " * Handle when a new output is added\n", + " */\n", + "function handle_add_output(event, handle) {\n", + " var output_area = handle.output_area;\n", + " var output = handle.output;\n", + " if ((output.data == undefined) || (!output.data.hasOwnProperty(EXEC_MIME_TYPE))) {\n", + " return\n", + " }\n", + " var id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n", + " var toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n", + " if (id !== undefined) {\n", + " var nchildren = toinsert.length;\n", + " var html_node = toinsert[nchildren-1].children[0];\n", + " html_node.innerHTML = output.data[HTML_MIME_TYPE];\n", + " var scripts = [];\n", + " var nodelist = html_node.querySelectorAll(\"script\");\n", + " for (var i in nodelist) {\n", + " if (nodelist.hasOwnProperty(i)) {\n", + " scripts.push(nodelist[i])\n", + " }\n", + " }\n", + "\n", + " scripts.forEach( function (oldScript) {\n", + " var newScript = document.createElement(\"script\");\n", + " var attrs = [];\n", + " var nodemap = oldScript.attributes;\n", + " for (var j in nodemap) {\n", + " if (nodemap.hasOwnProperty(j)) {\n", + " attrs.push(nodemap[j])\n", + " }\n", + " }\n", + " attrs.forEach(function(attr) { newScript.setAttribute(attr.name, attr.value) });\n", + " newScript.appendChild(document.createTextNode(oldScript.innerHTML));\n", + " oldScript.parentNode.replaceChild(newScript, oldScript);\n", + " });\n", + " if (JS_MIME_TYPE in output.data) {\n", + " toinsert[nchildren-1].children[1].textContent = output.data[JS_MIME_TYPE];\n", + " }\n", + " output_area._hv_plot_id = id;\n", + " if ((window.Bokeh !== undefined) && (id in Bokeh.index)) {\n", + " window.PyViz.plot_index[id] = Bokeh.index[id];\n", + " } else {\n", + " window.PyViz.plot_index[id] = null;\n", + " }\n", + " } else if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n", + " var bk_div = document.createElement(\"div\");\n", + " bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n", + " var script_attrs = bk_div.children[0].attributes;\n", + " for (var i = 0; i < script_attrs.length; i++) {\n", + " toinsert[toinsert.length - 1].childNodes[1].setAttribute(script_attrs[i].name, script_attrs[i].value);\n", + " }\n", + " // store reference to server id on output_area\n", + " output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n", + " }\n", + "}\n", + "\n", + "/**\n", + " * Handle when an output is cleared or removed\n", + " */\n", + "function handle_clear_output(event, handle) {\n", + " var id = handle.cell.output_area._hv_plot_id;\n", + " var server_id = handle.cell.output_area._bokeh_server_id;\n", + " if (((id === undefined) || !(id in PyViz.plot_index)) && (server_id !== undefined)) { return; }\n", + " var comm = window.PyViz.comm_manager.get_client_comm(\"hv-extension-comm\", \"hv-extension-comm\", function () {});\n", + " if (server_id !== null) {\n", + " comm.send({event_type: 'server_delete', 'id': server_id});\n", + " return;\n", + " } else if (comm !== null) {\n", + " comm.send({event_type: 'delete', 'id': id});\n", + " }\n", + " delete PyViz.plot_index[id];\n", + " if ((window.Bokeh !== undefined) & (id in window.Bokeh.index)) {\n", + " var doc = window.Bokeh.index[id].model.document\n", + " doc.clear();\n", + " const i = window.Bokeh.documents.indexOf(doc);\n", + " if (i > -1) {\n", + " window.Bokeh.documents.splice(i, 1);\n", + " }\n", + " }\n", + "}\n", + "\n", + "/**\n", + " * Handle kernel restart event\n", + " */\n", + "function handle_kernel_cleanup(event, handle) {\n", + " delete PyViz.comms[\"hv-extension-comm\"];\n", + " window.PyViz.plot_index = {}\n", + "}\n", + "\n", + "/**\n", + " * Handle update_display_data messages\n", + " */\n", + "function handle_update_output(event, handle) {\n", + " handle_clear_output(event, {cell: {output_area: handle.output_area}})\n", + " handle_add_output(event, handle)\n", + "}\n", + "\n", + "function register_renderer(events, OutputArea) {\n", + " function append_mime(data, metadata, element) {\n", + " // create a DOM node to render to\n", + " var toinsert = this.create_output_subarea(\n", + " metadata,\n", + " CLASS_NAME,\n", + " EXEC_MIME_TYPE\n", + " );\n", + " this.keyboard_manager.register_events(toinsert);\n", + " // Render to node\n", + " var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n", + " render(props, toinsert[0]);\n", + " element.append(toinsert);\n", + " return toinsert\n", + " }\n", + "\n", + " events.on('output_added.OutputArea', handle_add_output);\n", + " events.on('output_updated.OutputArea', handle_update_output);\n", + " events.on('clear_output.CodeCell', handle_clear_output);\n", + " events.on('delete.Cell', handle_clear_output);\n", + " events.on('kernel_ready.Kernel', handle_kernel_cleanup);\n", + "\n", + " OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n", + " safe: true,\n", + " index: 0\n", + " });\n", + "}\n", + "\n", + "if (window.Jupyter !== undefined) {\n", + " try {\n", + " var events = require('base/js/events');\n", + " var OutputArea = require('notebook/js/outputarea').OutputArea;\n", + " if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n", + " register_renderer(events, OutputArea);\n", + " }\n", + " } catch(err) {\n", + " }\n", + "}\n" + ], + "application/vnd.holoviews_load.v0+json": "\nif ((window.PyViz === undefined) || (window.PyViz instanceof HTMLElement)) {\n window.PyViz = {comms: {}, comm_status:{}, kernels:{}, receivers: {}, plot_index: []}\n}\n\n\n function JupyterCommManager() {\n }\n\n JupyterCommManager.prototype.register_target = function(plot_id, comm_id, msg_handler) {\n if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n comm_manager.register_target(comm_id, function(comm) {\n comm.on_msg(msg_handler);\n });\n } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n window.PyViz.kernels[plot_id].registerCommTarget(comm_id, function(comm) {\n comm.onMsg = msg_handler;\n });\n } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n google.colab.kernel.comms.registerTarget(comm_id, (comm) => {\n var messages = comm.messages[Symbol.asyncIterator]();\n function processIteratorResult(result) {\n var message = result.value;\n var content = {data: message.data, comm_id};\n var buffers = []\n for (var buffer of message.buffers || []) {\n buffers.push(new DataView(buffer))\n }\n var metadata = message.metadata || {};\n var msg = {content, buffers, metadata}\n msg_handler(msg);\n return messages.next().then(processIteratorResult);\n }\n return messages.next().then(processIteratorResult);\n })\n }\n }\n\n JupyterCommManager.prototype.get_client_comm = function(plot_id, comm_id, msg_handler) {\n if (comm_id in window.PyViz.comms) {\n return window.PyViz.comms[comm_id];\n } else if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n var comm = comm_manager.new_comm(comm_id, {}, {}, {}, comm_id);\n if (msg_handler) {\n comm.on_msg(msg_handler);\n }\n } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n var comm = window.PyViz.kernels[plot_id].connectToComm(comm_id);\n let retries = 0;\n const open = () => {\n if (comm.active) {\n comm.open();\n } else if (retries > 3) {\n console.warn('Comm target never activated')\n } else {\n retries += 1\n setTimeout(open, 500)\n }\n }\n if (comm.active) {\n comm.open();\n } else {\n setTimeout(open, 500)\n }\n if (msg_handler) {\n comm.onMsg = msg_handler;\n }\n } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n var comm_promise = google.colab.kernel.comms.open(comm_id)\n comm_promise.then((comm) => {\n window.PyViz.comms[comm_id] = comm;\n if (msg_handler) {\n var messages = comm.messages[Symbol.asyncIterator]();\n function processIteratorResult(result) {\n var message = result.value;\n var content = {data: message.data};\n var metadata = message.metadata || {comm_id};\n var msg = {content, metadata}\n msg_handler(msg);\n return messages.next().then(processIteratorResult);\n }\n return messages.next().then(processIteratorResult);\n }\n })\n var sendClosure = (data, metadata, buffers, disposeOnDone) => {\n return comm_promise.then((comm) => {\n comm.send(data, metadata, buffers, disposeOnDone);\n });\n };\n var comm = {\n send: sendClosure\n };\n }\n window.PyViz.comms[comm_id] = comm;\n return comm;\n }\n window.PyViz.comm_manager = new JupyterCommManager();\n \n\n\nvar JS_MIME_TYPE = 'application/javascript';\nvar HTML_MIME_TYPE = 'text/html';\nvar EXEC_MIME_TYPE = 'application/vnd.holoviews_exec.v0+json';\nvar CLASS_NAME = 'output';\n\n/**\n * Render data to the DOM node\n */\nfunction render(props, node) {\n var div = document.createElement(\"div\");\n var script = document.createElement(\"script\");\n node.appendChild(div);\n node.appendChild(script);\n}\n\n/**\n * Handle when a new output is added\n */\nfunction handle_add_output(event, handle) {\n var output_area = handle.output_area;\n var output = handle.output;\n if ((output.data == undefined) || (!output.data.hasOwnProperty(EXEC_MIME_TYPE))) {\n return\n }\n var id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n var toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n if (id !== undefined) {\n var nchildren = toinsert.length;\n var html_node = toinsert[nchildren-1].children[0];\n html_node.innerHTML = output.data[HTML_MIME_TYPE];\n var scripts = [];\n var nodelist = html_node.querySelectorAll(\"script\");\n for (var i in nodelist) {\n if (nodelist.hasOwnProperty(i)) {\n scripts.push(nodelist[i])\n }\n }\n\n scripts.forEach( function (oldScript) {\n var newScript = document.createElement(\"script\");\n var attrs = [];\n var nodemap = oldScript.attributes;\n for (var j in nodemap) {\n if (nodemap.hasOwnProperty(j)) {\n attrs.push(nodemap[j])\n }\n }\n attrs.forEach(function(attr) { newScript.setAttribute(attr.name, attr.value) });\n newScript.appendChild(document.createTextNode(oldScript.innerHTML));\n oldScript.parentNode.replaceChild(newScript, oldScript);\n });\n if (JS_MIME_TYPE in output.data) {\n toinsert[nchildren-1].children[1].textContent = output.data[JS_MIME_TYPE];\n }\n output_area._hv_plot_id = id;\n if ((window.Bokeh !== undefined) && (id in Bokeh.index)) {\n window.PyViz.plot_index[id] = Bokeh.index[id];\n } else {\n window.PyViz.plot_index[id] = null;\n }\n } else if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n var bk_div = document.createElement(\"div\");\n bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n var script_attrs = bk_div.children[0].attributes;\n for (var i = 0; i < script_attrs.length; i++) {\n toinsert[toinsert.length - 1].childNodes[1].setAttribute(script_attrs[i].name, script_attrs[i].value);\n }\n // store reference to server id on output_area\n output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n }\n}\n\n/**\n * Handle when an output is cleared or removed\n */\nfunction handle_clear_output(event, handle) {\n var id = handle.cell.output_area._hv_plot_id;\n var server_id = handle.cell.output_area._bokeh_server_id;\n if (((id === undefined) || !(id in PyViz.plot_index)) && (server_id !== undefined)) { return; }\n var comm = window.PyViz.comm_manager.get_client_comm(\"hv-extension-comm\", \"hv-extension-comm\", function () {});\n if (server_id !== null) {\n comm.send({event_type: 'server_delete', 'id': server_id});\n return;\n } else if (comm !== null) {\n comm.send({event_type: 'delete', 'id': id});\n }\n delete PyViz.plot_index[id];\n if ((window.Bokeh !== undefined) & (id in window.Bokeh.index)) {\n var doc = window.Bokeh.index[id].model.document\n doc.clear();\n const i = window.Bokeh.documents.indexOf(doc);\n if (i > -1) {\n window.Bokeh.documents.splice(i, 1);\n }\n }\n}\n\n/**\n * Handle kernel restart event\n */\nfunction handle_kernel_cleanup(event, handle) {\n delete PyViz.comms[\"hv-extension-comm\"];\n window.PyViz.plot_index = {}\n}\n\n/**\n * Handle update_display_data messages\n */\nfunction handle_update_output(event, handle) {\n handle_clear_output(event, {cell: {output_area: handle.output_area}})\n handle_add_output(event, handle)\n}\n\nfunction register_renderer(events, OutputArea) {\n function append_mime(data, metadata, element) {\n // create a DOM node to render to\n var toinsert = this.create_output_subarea(\n metadata,\n CLASS_NAME,\n EXEC_MIME_TYPE\n );\n this.keyboard_manager.register_events(toinsert);\n // Render to node\n var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n render(props, toinsert[0]);\n element.append(toinsert);\n return toinsert\n }\n\n events.on('output_added.OutputArea', handle_add_output);\n events.on('output_updated.OutputArea', handle_update_output);\n events.on('clear_output.CodeCell', handle_clear_output);\n events.on('delete.Cell', handle_clear_output);\n events.on('kernel_ready.Kernel', handle_kernel_cleanup);\n\n OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n safe: true,\n index: 0\n });\n}\n\nif (window.Jupyter !== undefined) {\n try {\n var events = require('base/js/events');\n var OutputArea = require('notebook/js/outputarea').OutputArea;\n if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n register_renderer(events, OutputArea);\n }\n } catch(err) {\n }\n}\n" }, "metadata": {}, "output_type": "display_data" @@ -75,12 +576,12 @@ "data": { "application/vnd.holoviews_exec.v0+json": "", "text/html": [ - "
\n", - "
\n", + "
\n", + "
\n", "
\n", "