diff --git a/pr-preview/pr-46/cog_transformation/casagfed-carbonflux-monthgrid-v3.html b/pr-preview/pr-46/cog_transformation/casagfed-carbonflux-monthgrid-v3.html new file mode 100644 index 00000000..156cfcc4 --- /dev/null +++ b/pr-preview/pr-46/cog_transformation/casagfed-carbonflux-monthgrid-v3.html @@ -0,0 +1,1008 @@ + + + + + + + + + + + + +U.S. Greenhouse Gas Center Documentation - CASA-GFED3 Land Carbon Flux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + +
+ + + +
+ +
+
+

CASA-GFED3 Land Carbon Flux

+
+ +
+
+ Documentation of data transformation +
+
+ + +
+ +
+
Author
+
+

Vishal Gaur

+
+
+ +
+
Published
+
+

August 30, 2023

+
+
+ + +
+ + +
+ +

Code used to transform CASA-GFED3 Land Carbon Flux data from netcdf to Cloud Optimized Geotiff.

+
+
import os
+import xarray
+import re
+import pandas as pd
+import json
+import tempfile
+import boto3
+
+
+
session = boto3.session.Session()
+s3_client = session.client("s3")
+bucket_name = "ghgc-data-store-dev"
+date_fmt = "%Y%m"
+
+files_processed = pd.DataFrame(columns=["file_name", "COGs_created"])
+for name in os.listdir("geoscarb"):
+    xds = xarray.open_dataset(
+        f"geoscarb/{name}",
+        engine="netcdf4",
+    )
+    xds = xds.assign_coords(
+        longitude=(((xds.longitude + 180) % 360) - 180)
+    ).sortby("longitude")
+    variable = [var for var in xds.data_vars]
+
+    for time_increment in range(0, len(xds.time)):
+        for var in variable[:-1]:
+            filename = name.split("/ ")[-1]
+            filename_elements = re.split("[_ .]", filename)
+            data = getattr(xds.isel(time=time_increment), var)
+            data = data.isel(latitude=slice(None, None, -1))
+            data.rio.set_spatial_dims("longitude", "latitude", inplace=True)
+            data.rio.write_crs("epsg:4326", inplace=True)
+
+            date = data.time.dt.strftime(date_fmt).item(0)
+            # # insert date of generated COG into filename
+            filename_elements.pop()
+            filename_elements[-1] = date
+            filename_elements.insert(2, var)
+            cog_filename = "_".join(filename_elements)
+            # # add extension
+            cog_filename = f"{cog_filename}.tif"
+
+            with tempfile.NamedTemporaryFile() as temp_file:
+                data.rio.to_raster(
+                    temp_file.name,
+                    driver="COG",
+                )
+                s3_client.upload_file(
+                    Filename=temp_file.name,
+                    Bucket=bucket_name,
+                    Key=f"GEOS-Carbs/{cog_filename}",
+                )
+
+            files_processed = files_processed._append(
+                {"file_name": name, "COGs_created": cog_filename},
+                ignore_index=True,
+            )
+
+            print(f"Generated and saved COG: {cog_filename}")
+
+with tempfile.NamedTemporaryFile(mode="w+") as fp:
+    json.dump(xds.attrs, fp)
+    json.dump({"data_dimensions": dict(xds.dims)}, fp)
+    json.dump({"data_variables": list(xds.data_vars)}, fp)
+    fp.flush()
+
+    s3_client.upload_file(
+        Filename=fp.name,
+        Bucket=bucket_name,
+        Key="GEOS-Carbs/metadata.json",
+    )
+files_processed.to_csv(
+    f"s3://{bucket_name}/GEOS-Carbs/files_converted.csv",
+)
+print("Done generating COGs")
+
+ + + + Back to top
+ + +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-46/cog_transformation/eccodarwin-co2flux-monthgrid-v5.html b/pr-preview/pr-46/cog_transformation/eccodarwin-co2flux-monthgrid-v5.html new file mode 100644 index 00000000..862551ad --- /dev/null +++ b/pr-preview/pr-46/cog_transformation/eccodarwin-co2flux-monthgrid-v5.html @@ -0,0 +1,1027 @@ + + + + + + + + + + + + +U.S. Greenhouse Gas Center Documentation - Air-Sea CO₂ Flux, ECCO-Darwin Model v5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + +
+ + + +
+ +
+
+

Air-Sea CO₂ Flux, ECCO-Darwin Model v5

+
+ +
+
+ Documentation of data transformation +
+
+ + +
+ +
+
Author
+
+

Vishal Gaur

+
+
+ +
+
Published
+
+

August 31, 2023

+
+
+ + +
+ + +
+ +

This script was used to transform the Air-Sea CO₂ Flux, ECCO-Darwin Mode dataset from netCDF to Cloud Optimized GeoTIFF (COG) format for display in the Greenhouse Gas (GHG) Center.

+
+
import os
+import xarray
+import re
+import pandas as pd
+import json
+import tempfile
+import boto3
+import rasterio
+from datetime import datetime
+from dateutil.relativedelta import relativedelta
+
+
+
session = boto3.session.Session()
+s3_client = session.client("s3")
+
+bucket_name = (
+    "ghgc-data-store-dev"  # S3 bucket where the COGs are stored after transformation
+)
+FOLDER_NAME = "ecco-darwin"
+s3_fol_name = "ecco_darwin"
+
+# Reading the raw netCDF files from local machine
+files_processed = pd.DataFrame(
+    columns=["file_name", "COGs_created"]
+)  # A dataframe to keep track of the files that we have transformed into COGs
+for name in os.listdir(FOLDER_NAME):
+    xds = xarray.open_dataset(
+        f"{FOLDER_NAME}/{name}",
+        engine="netcdf4",
+    )
+    xds = xds.rename({"y": "latitude", "x": "longitude"})
+    xds = xds.assign_coords(longitude=((xds.longitude / 1440) * 360) - 180).sortby(
+        "longitude"
+    )
+    xds = xds.assign_coords(latitude=((xds.latitude / 721) * 180) - 90).sortby(
+        "latitude"
+    )
+
+    variable = [var for var in xds.data_vars]
+
+    for time_increment in xds.time.values:
+        for var in variable[2:]:
+            filename = name.split("/ ")[-1]
+            filename_elements = re.split("[_ .]", filename)
+            data = xds[var]
+
+            data = data.reindex(latitude=list(reversed(data.latitude)))
+            data.rio.set_spatial_dims("longitude", "latitude", inplace=True)
+            data.rio.write_crs("epsg:4326", inplace=True)
+
+            # generate COG
+            COG_PROFILE = {"driver": "COG", "compress": "DEFLATE"}
+
+            filename_elements.pop()
+            filename_elements[-1] = filename_elements[-2] + filename_elements[-1]
+            filename_elements.pop(-2)
+            # # insert date of generated COG into filename
+            cog_filename = "_".join(filename_elements)
+            # # add extension
+            cog_filename = f"{cog_filename}.tif"
+
+            with tempfile.NamedTemporaryFile() as temp_file:
+                data.rio.to_raster(temp_file.name, **COG_PROFILE)
+                s3_client.upload_file(
+                    Filename=temp_file.name,
+                    Bucket=bucket_name,
+                    Key=f"{s3_fol_name}/{cog_filename}",
+                )
+
+            files_processed = files_processed._append(
+                {"file_name": name, "COGs_created": cog_filename},
+                ignore_index=True,
+            )
+            del data
+
+            print(f"Generated and saved COG: {cog_filename}")
+
+# Generate the json file with the metadata that is present in the netCDF files.
+with tempfile.NamedTemporaryFile(mode="w+") as fp:
+    json.dump(xds.attrs, fp)
+    json.dump({"data_dimensions": dict(xds.dims)}, fp)
+    json.dump({"data_variables": list(xds.data_vars)}, fp)
+    fp.flush()
+
+    s3_client.upload_file(
+        Filename=fp.name,
+        Bucket=bucket_name,
+        Key="s3_fol_name/metadata.json",
+    )
+
+# A csv file to store the names of all the files converted.
+files_processed.to_csv(
+    f"s3://{bucket_name}/{s3_fol_name}/files_converted.csv",
+)
+print("Done generating COGs")
+
+ + + + Back to top
+ + +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-46/cog_transformation/emit-ch4plume-v1.html b/pr-preview/pr-46/cog_transformation/emit-ch4plume-v1.html new file mode 100644 index 00000000..d41c9f61 --- /dev/null +++ b/pr-preview/pr-46/cog_transformation/emit-ch4plume-v1.html @@ -0,0 +1,974 @@ + + + + + + + + + + + + +U.S. Greenhouse Gas Center Documentation - EMIT Methane Point Source Plume Complexes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + +
+ + + +
+ +
+
+

EMIT Methane Point Source Plume Complexes

+
+ +
+
+ Documentation of data transformation +
+
+ + +
+ +
+
Author
+
+

Vishal Gaur

+
+
+ +
+
Published
+
+

August 31, 2023

+
+
+ + +
+ + +
+ +

This script was used to read the EMIT Methane Point Source Plume Complexes dataset provided in Cloud Optimized GeoTIFF (COG) format for display in the Greenhouse Gas (GHG) Center.

+
+
import re
+import pandas as pd
+import json
+import tempfile
+import boto3
+
+
+
session_ghgc = boto3.session.Session(profile_name="ghg_user")
+s3_client_ghgc = session_ghgc.client("s3")
+session_veda_smce = boto3.session.Session()
+s3_client_veda_smce = session_veda_smce.client("s3")
+
+# Since the plume emissions were already COGs, we just had to transform their naming convention to be stored in the STAC collection.
+SOURCE_BUCKET_NAME = "ghgc-data-staging-uah"
+TARGET_BUCKET_NAME = "ghgc-data-store-dev"
+
+
+keys = []
+resp = s3_client_ghgc.list_objects_v2(Bucket=SOURCE_BUCKET_NAME)
+for obj in resp["Contents"]:
+    if "l3" in obj["Key"]:
+        keys.append(obj["Key"])
+
+for key in keys:
+    s3_obj = s3_client_ghgc.get_object(Bucket=SOURCE_BUCKET_NAME, Key=key)[
+        "Body"
+    ]
+    filename = key.split("/")[-1]
+    filename_elements = re.split("[_ .]", filename)
+
+    date = re.search("t\d\d\d\d\d\d\d\dt", key).group(0)
+    filename_elements.insert(-1, date[1:-1])
+    filename_elements.pop()
+
+    cog_filename = "_".join(filename_elements)
+    # # add extension
+    cog_filename = f"{cog_filename}.tif"
+    s3_client_veda_smce.upload_fileobj(
+        Fileobj=s3_obj,
+        Bucket=TARGET_BUCKET_NAME,
+        Key=f"plum_data/{cog_filename}",
+    )
+
+ + + + Back to top
+ + +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-46/cog_transformation/epa-ch4emission-grid-v2express.html b/pr-preview/pr-46/cog_transformation/epa-ch4emission-grid-v2express.html new file mode 100644 index 00000000..89829b6c --- /dev/null +++ b/pr-preview/pr-46/cog_transformation/epa-ch4emission-grid-v2express.html @@ -0,0 +1,1286 @@ + + + + + + + + + + + + +U.S. Greenhouse Gas Center Documentation - Gridded Anthropogenic Methane Emissions Inventory + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + +
+ + + +
+ +
+
+

Gridded Anthropogenic Methane Emissions Inventory

+
+ +
+
+ Documentation of data transformation +
+
+ + +
+ +
+
Author
+
+

Vishal Gaur

+
+
+ +
+
Published
+
+

August 31, 2023

+
+
+ + +
+ + +
+ +

This script was used to transform the Gridded Anthropogenic Methane Emissions Inventory monthly dataset from netCDF to Cloud Optimized GeoTIFF (COG) format for display in the Greenhouse Gas (GHG) Center.

+
+
import os
+import xarray
+import re
+import pandas as pd
+import json
+import tempfile
+import boto3
+from datetime import datetime
+import numpy as np
+
+from dotenv import load_dotenv
+
+load_dotenv()
+
+
True
+
+
+
+
# session = boto3.session.Session()
+session = boto3.Session(
+    aws_access_key_id=os.environ.get("AWS_ACCESS_KEY_ID"),
+    aws_secret_access_key=os.environ.get("AWS_SECRET_ACCESS_KEY"),
+    aws_session_token=os.environ.get("AWS_SESSION_TOKEN"),
+)
+s3_client = session.client("s3")
+bucket_name = "ghgc-data-store-dev" # S3 bucket where the COGs are stored after transformation
+FOLDER_NAME = "../data/epa_emissions_express_extension"
+s3_folder_name = "epa_express_extension_Tg_km2_yr"
+# raw gridded data [molec/cm2/s] * 1/6.022x10^23 [molec/mol] * 16.04x10^-6 [ Mg/mol] * 366 [days/yr] * 1x10^10 [cm2/km2]
+
+files_processed = pd.DataFrame(columns=["file_name", "COGs_created"])   # A dataframe to keep track of the files that we have transformed into COGs
+
+# Reading the raw netCDF files from local machine
+for name in os.listdir(FOLDER_NAME):
+    xds = xarray.open_dataset(f"{FOLDER_NAME}/{name}", engine="netcdf4")
+    xds = xds.assign_coords(lon=(((xds.lon + 180) % 360) - 180)).sortby("lon")
+    variable = [var for var in xds.data_vars]
+    filename = name.split("/ ")[-1]
+    filename_elements = re.split("[_ .]", filename)
+    start_time = datetime(int(filename_elements[-2]), 1, 1)
+
+    for time_increment in range(0, len(xds.time)):
+        for var in variable:
+            filename = name.split("/ ")[-1]
+            filename_elements = re.split("[_ .]", filename)
+            data = getattr(xds.isel(time=time_increment), var)
+            data.values[data.values==0] = np.nan
+            # data = data*((1/(6.022*pow(10,23)))*(16.04*pow(10,-6))*366*pow(10,10))
+            data = data*(9.74*pow(10,-11))
+            data.values[data.values<=np.nanpercentile(data.values, 50)] = np.nan
+            data = data.fillna(-9999)
+            data = data.isel(lat=slice(None, None, -1))
+            data.rio.set_spatial_dims("lon", "lat", inplace=True)
+            data.rio.write_crs("epsg:4326", inplace=True)
+
+            # # insert date of generated COG into filename
+            filename_elements.pop()
+            filename_elements[-1] = start_time.strftime("%Y")
+            filename_elements.insert(2, var)
+            cog_filename = "_".join(filename_elements)
+            # # add extension
+            cog_filename = f"{cog_filename}.tif"
+
+            with tempfile.NamedTemporaryFile() as temp_file:
+                data.rio.to_raster(
+                    temp_file.name,
+                    driver="COG",
+                )
+                s3_client.upload_file(
+                    Filename=temp_file.name,
+                    Bucket=bucket_name,
+                    Key=f"{s3_folder_name}/{cog_filename}",
+                )
+
+            files_processed = files_processed._append(
+                {"file_name": name, "COGs_created": cog_filename},
+                ignore_index=True,
+            )
+
+            print(f"Generated and saved COG: {cog_filename}")
+
+# Generate the json file with the metadata that is present in the netCDF files.
+with tempfile.NamedTemporaryFile(mode="w+") as fp:
+    json.dump(xds.attrs, fp)
+    json.dump({"data_dimensions": dict(xds.dims)}, fp)
+    json.dump({"data_variables": list(xds.data_vars)}, fp)
+    fp.flush()
+
+    s3_client.upload_file(
+        Filename=fp.name,
+        Bucket=bucket_name,
+        Key=f"{s3_folder_name}/metadata.json",
+    )
+
+# creating the csv file with the names of files transformed.
+files_processed.to_csv(
+    f"s3://{bucket_name}/{s3_folder_name}/files_converted.csv",
+)
+print("Done generating COGs")
+
+
Generated and saved COG: Express_Extension_emi_ch4_1A_Combustion_Mobile_Gridded_GHGI_Methane_v2_2015.tif
+Generated and saved COG: Express_Extension_emi_ch4_1A_Combustion_Stationary_Gridded_GHGI_Methane_v2_2015.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B1a_Abandoned_Coal_Gridded_GHGI_Methane_v2_2015.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B1a_Surface_Coal_Gridded_GHGI_Methane_v2_2015.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B1a_Underground_Coal_Gridded_GHGI_Methane_v2_2015.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Exploration_Gridded_GHGI_Methane_v2_2015.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Production_Gridded_GHGI_Methane_v2_2015.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Refining_Gridded_GHGI_Methane_v2_2015.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Transport_Gridded_GHGI_Methane_v2_2015.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2ab_Abandoned_Oil_Gas_Gridded_GHGI_Methane_v2_2015.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Distribution_Gridded_GHGI_Methane_v2_2015.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Exploration_Gridded_GHGI_Methane_v2_2015.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Processing_Gridded_GHGI_Methane_v2_2015.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Production_Gridded_GHGI_Methane_v2_2015.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_TransmissionStorage_Gridded_GHGI_Methane_v2_2015.tif
+Generated and saved COG: Express_Extension_emi_ch4_2B8_Industry_Petrochemical_Gridded_GHGI_Methane_v2_2015.tif
+Generated and saved COG: Express_Extension_emi_ch4_2C2_Industry_Ferroalloy_Gridded_GHGI_Methane_v2_2015.tif
+Generated and saved COG: Express_Extension_emi_ch4_3A_Enteric_Fermentation_Gridded_GHGI_Methane_v2_2015.tif
+Generated and saved COG: Express_Extension_emi_ch4_3B_Manure_Management_Gridded_GHGI_Methane_v2_2015.tif
+Generated and saved COG: Express_Extension_emi_ch4_3C_Rice_Cultivation_Gridded_GHGI_Methane_v2_2015.tif
+Generated and saved COG: Express_Extension_emi_ch4_3F_Field_Burning_Gridded_GHGI_Methane_v2_2015.tif
+Generated and saved COG: Express_Extension_emi_ch4_5A1_Landfills_Industrial_Gridded_GHGI_Methane_v2_2015.tif
+Generated and saved COG: Express_Extension_emi_ch4_5A1_Landfills_MSW_Gridded_GHGI_Methane_v2_2015.tif
+Generated and saved COG: Express_Extension_emi_ch4_5B1_Composting_Gridded_GHGI_Methane_v2_2015.tif
+Generated and saved COG: Express_Extension_emi_ch4_5D_Wastewater_Treatment_Domestic_Gridded_GHGI_Methane_v2_2015.tif
+Generated and saved COG: Express_Extension_emi_ch4_5D_Wastewater_Treatment_Industrial_Gridded_GHGI_Methane_v2_2015.tif
+Generated and saved COG: Express_Extension_emi_ch4_Supp_1B2b_PostMeter_Gridded_GHGI_Methane_v2_2015.tif
+Generated and saved COG: Express_Extension_grid_cell_area_Gridded_GHGI_Methane_v2_2015.tif
+Generated and saved COG: Express_Extension_emi_ch4_1A_Combustion_Mobile_Gridded_GHGI_Methane_v2_2020.tif
+Generated and saved COG: Express_Extension_emi_ch4_1A_Combustion_Stationary_Gridded_GHGI_Methane_v2_2020.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B1a_Abandoned_Coal_Gridded_GHGI_Methane_v2_2020.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B1a_Surface_Coal_Gridded_GHGI_Methane_v2_2020.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B1a_Underground_Coal_Gridded_GHGI_Methane_v2_2020.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Exploration_Gridded_GHGI_Methane_v2_2020.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Production_Gridded_GHGI_Methane_v2_2020.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Refining_Gridded_GHGI_Methane_v2_2020.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Transport_Gridded_GHGI_Methane_v2_2020.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2ab_Abandoned_Oil_Gas_Gridded_GHGI_Methane_v2_2020.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Distribution_Gridded_GHGI_Methane_v2_2020.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Exploration_Gridded_GHGI_Methane_v2_2020.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Processing_Gridded_GHGI_Methane_v2_2020.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Production_Gridded_GHGI_Methane_v2_2020.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_TransmissionStorage_Gridded_GHGI_Methane_v2_2020.tif
+Generated and saved COG: Express_Extension_emi_ch4_2B8_Industry_Petrochemical_Gridded_GHGI_Methane_v2_2020.tif
+Generated and saved COG: Express_Extension_emi_ch4_2C2_Industry_Ferroalloy_Gridded_GHGI_Methane_v2_2020.tif
+Generated and saved COG: Express_Extension_emi_ch4_3A_Enteric_Fermentation_Gridded_GHGI_Methane_v2_2020.tif
+Generated and saved COG: Express_Extension_emi_ch4_3B_Manure_Management_Gridded_GHGI_Methane_v2_2020.tif
+Generated and saved COG: Express_Extension_emi_ch4_3C_Rice_Cultivation_Gridded_GHGI_Methane_v2_2020.tif
+Generated and saved COG: Express_Extension_emi_ch4_3F_Field_Burning_Gridded_GHGI_Methane_v2_2020.tif
+Generated and saved COG: Express_Extension_emi_ch4_5A1_Landfills_Industrial_Gridded_GHGI_Methane_v2_2020.tif
+Generated and saved COG: Express_Extension_emi_ch4_5A1_Landfills_MSW_Gridded_GHGI_Methane_v2_2020.tif
+Generated and saved COG: Express_Extension_emi_ch4_5B1_Composting_Gridded_GHGI_Methane_v2_2020.tif
+Generated and saved COG: Express_Extension_emi_ch4_5D_Wastewater_Treatment_Domestic_Gridded_GHGI_Methane_v2_2020.tif
+Generated and saved COG: Express_Extension_emi_ch4_5D_Wastewater_Treatment_Industrial_Gridded_GHGI_Methane_v2_2020.tif
+Generated and saved COG: Express_Extension_emi_ch4_Supp_1B2b_PostMeter_Gridded_GHGI_Methane_v2_2020.tif
+Generated and saved COG: Express_Extension_grid_cell_area_Gridded_GHGI_Methane_v2_2020.tif
+Generated and saved COG: Express_Extension_emi_ch4_1A_Combustion_Mobile_Gridded_GHGI_Methane_v2_2014.tif
+Generated and saved COG: Express_Extension_emi_ch4_1A_Combustion_Stationary_Gridded_GHGI_Methane_v2_2014.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B1a_Abandoned_Coal_Gridded_GHGI_Methane_v2_2014.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B1a_Surface_Coal_Gridded_GHGI_Methane_v2_2014.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B1a_Underground_Coal_Gridded_GHGI_Methane_v2_2014.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Exploration_Gridded_GHGI_Methane_v2_2014.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Production_Gridded_GHGI_Methane_v2_2014.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Refining_Gridded_GHGI_Methane_v2_2014.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Transport_Gridded_GHGI_Methane_v2_2014.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2ab_Abandoned_Oil_Gas_Gridded_GHGI_Methane_v2_2014.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Distribution_Gridded_GHGI_Methane_v2_2014.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Exploration_Gridded_GHGI_Methane_v2_2014.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Processing_Gridded_GHGI_Methane_v2_2014.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Production_Gridded_GHGI_Methane_v2_2014.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_TransmissionStorage_Gridded_GHGI_Methane_v2_2014.tif
+Generated and saved COG: Express_Extension_emi_ch4_2B8_Industry_Petrochemical_Gridded_GHGI_Methane_v2_2014.tif
+Generated and saved COG: Express_Extension_emi_ch4_2C2_Industry_Ferroalloy_Gridded_GHGI_Methane_v2_2014.tif
+Generated and saved COG: Express_Extension_emi_ch4_3A_Enteric_Fermentation_Gridded_GHGI_Methane_v2_2014.tif
+Generated and saved COG: Express_Extension_emi_ch4_3B_Manure_Management_Gridded_GHGI_Methane_v2_2014.tif
+Generated and saved COG: Express_Extension_emi_ch4_3C_Rice_Cultivation_Gridded_GHGI_Methane_v2_2014.tif
+Generated and saved COG: Express_Extension_emi_ch4_3F_Field_Burning_Gridded_GHGI_Methane_v2_2014.tif
+Generated and saved COG: Express_Extension_emi_ch4_5A1_Landfills_Industrial_Gridded_GHGI_Methane_v2_2014.tif
+Generated and saved COG: Express_Extension_emi_ch4_5A1_Landfills_MSW_Gridded_GHGI_Methane_v2_2014.tif
+Generated and saved COG: Express_Extension_emi_ch4_5B1_Composting_Gridded_GHGI_Methane_v2_2014.tif
+Generated and saved COG: Express_Extension_emi_ch4_5D_Wastewater_Treatment_Domestic_Gridded_GHGI_Methane_v2_2014.tif
+Generated and saved COG: Express_Extension_emi_ch4_5D_Wastewater_Treatment_Industrial_Gridded_GHGI_Methane_v2_2014.tif
+Generated and saved COG: Express_Extension_emi_ch4_Supp_1B2b_PostMeter_Gridded_GHGI_Methane_v2_2014.tif
+Generated and saved COG: Express_Extension_grid_cell_area_Gridded_GHGI_Methane_v2_2014.tif
+Generated and saved COG: Express_Extension_emi_ch4_1A_Combustion_Mobile_Gridded_GHGI_Methane_v2_2013.tif
+Generated and saved COG: Express_Extension_emi_ch4_1A_Combustion_Stationary_Gridded_GHGI_Methane_v2_2013.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B1a_Abandoned_Coal_Gridded_GHGI_Methane_v2_2013.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B1a_Surface_Coal_Gridded_GHGI_Methane_v2_2013.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B1a_Underground_Coal_Gridded_GHGI_Methane_v2_2013.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Exploration_Gridded_GHGI_Methane_v2_2013.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Production_Gridded_GHGI_Methane_v2_2013.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Refining_Gridded_GHGI_Methane_v2_2013.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Transport_Gridded_GHGI_Methane_v2_2013.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2ab_Abandoned_Oil_Gas_Gridded_GHGI_Methane_v2_2013.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Distribution_Gridded_GHGI_Methane_v2_2013.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Exploration_Gridded_GHGI_Methane_v2_2013.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Processing_Gridded_GHGI_Methane_v2_2013.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Production_Gridded_GHGI_Methane_v2_2013.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_TransmissionStorage_Gridded_GHGI_Methane_v2_2013.tif
+Generated and saved COG: Express_Extension_emi_ch4_2B8_Industry_Petrochemical_Gridded_GHGI_Methane_v2_2013.tif
+Generated and saved COG: Express_Extension_emi_ch4_2C2_Industry_Ferroalloy_Gridded_GHGI_Methane_v2_2013.tif
+Generated and saved COG: Express_Extension_emi_ch4_3A_Enteric_Fermentation_Gridded_GHGI_Methane_v2_2013.tif
+Generated and saved COG: Express_Extension_emi_ch4_3B_Manure_Management_Gridded_GHGI_Methane_v2_2013.tif
+Generated and saved COG: Express_Extension_emi_ch4_3C_Rice_Cultivation_Gridded_GHGI_Methane_v2_2013.tif
+Generated and saved COG: Express_Extension_emi_ch4_3F_Field_Burning_Gridded_GHGI_Methane_v2_2013.tif
+Generated and saved COG: Express_Extension_emi_ch4_5A1_Landfills_Industrial_Gridded_GHGI_Methane_v2_2013.tif
+Generated and saved COG: Express_Extension_emi_ch4_5A1_Landfills_MSW_Gridded_GHGI_Methane_v2_2013.tif
+Generated and saved COG: Express_Extension_emi_ch4_5B1_Composting_Gridded_GHGI_Methane_v2_2013.tif
+Generated and saved COG: Express_Extension_emi_ch4_5D_Wastewater_Treatment_Domestic_Gridded_GHGI_Methane_v2_2013.tif
+Generated and saved COG: Express_Extension_emi_ch4_5D_Wastewater_Treatment_Industrial_Gridded_GHGI_Methane_v2_2013.tif
+Generated and saved COG: Express_Extension_emi_ch4_Supp_1B2b_PostMeter_Gridded_GHGI_Methane_v2_2013.tif
+Generated and saved COG: Express_Extension_grid_cell_area_Gridded_GHGI_Methane_v2_2013.tif
+Generated and saved COG: Express_Extension_emi_ch4_1A_Combustion_Mobile_Gridded_GHGI_Methane_v2_2017.tif
+Generated and saved COG: Express_Extension_emi_ch4_1A_Combustion_Stationary_Gridded_GHGI_Methane_v2_2017.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B1a_Abandoned_Coal_Gridded_GHGI_Methane_v2_2017.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B1a_Surface_Coal_Gridded_GHGI_Methane_v2_2017.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B1a_Underground_Coal_Gridded_GHGI_Methane_v2_2017.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Exploration_Gridded_GHGI_Methane_v2_2017.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Production_Gridded_GHGI_Methane_v2_2017.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Refining_Gridded_GHGI_Methane_v2_2017.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Transport_Gridded_GHGI_Methane_v2_2017.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2ab_Abandoned_Oil_Gas_Gridded_GHGI_Methane_v2_2017.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Distribution_Gridded_GHGI_Methane_v2_2017.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Exploration_Gridded_GHGI_Methane_v2_2017.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Processing_Gridded_GHGI_Methane_v2_2017.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Production_Gridded_GHGI_Methane_v2_2017.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_TransmissionStorage_Gridded_GHGI_Methane_v2_2017.tif
+Generated and saved COG: Express_Extension_emi_ch4_2B8_Industry_Petrochemical_Gridded_GHGI_Methane_v2_2017.tif
+Generated and saved COG: Express_Extension_emi_ch4_2C2_Industry_Ferroalloy_Gridded_GHGI_Methane_v2_2017.tif
+Generated and saved COG: Express_Extension_emi_ch4_3A_Enteric_Fermentation_Gridded_GHGI_Methane_v2_2017.tif
+Generated and saved COG: Express_Extension_emi_ch4_3B_Manure_Management_Gridded_GHGI_Methane_v2_2017.tif
+Generated and saved COG: Express_Extension_emi_ch4_3C_Rice_Cultivation_Gridded_GHGI_Methane_v2_2017.tif
+Generated and saved COG: Express_Extension_emi_ch4_3F_Field_Burning_Gridded_GHGI_Methane_v2_2017.tif
+Generated and saved COG: Express_Extension_emi_ch4_5A1_Landfills_Industrial_Gridded_GHGI_Methane_v2_2017.tif
+Generated and saved COG: Express_Extension_emi_ch4_5A1_Landfills_MSW_Gridded_GHGI_Methane_v2_2017.tif
+Generated and saved COG: Express_Extension_emi_ch4_5B1_Composting_Gridded_GHGI_Methane_v2_2017.tif
+Generated and saved COG: Express_Extension_emi_ch4_5D_Wastewater_Treatment_Domestic_Gridded_GHGI_Methane_v2_2017.tif
+Generated and saved COG: Express_Extension_emi_ch4_5D_Wastewater_Treatment_Industrial_Gridded_GHGI_Methane_v2_2017.tif
+Generated and saved COG: Express_Extension_emi_ch4_Supp_1B2b_PostMeter_Gridded_GHGI_Methane_v2_2017.tif
+Generated and saved COG: Express_Extension_grid_cell_area_Gridded_GHGI_Methane_v2_2017.tif
+Generated and saved COG: Express_Extension_emi_ch4_1A_Combustion_Mobile_Gridded_GHGI_Methane_v2_2016.tif
+Generated and saved COG: Express_Extension_emi_ch4_1A_Combustion_Stationary_Gridded_GHGI_Methane_v2_2016.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B1a_Abandoned_Coal_Gridded_GHGI_Methane_v2_2016.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B1a_Surface_Coal_Gridded_GHGI_Methane_v2_2016.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B1a_Underground_Coal_Gridded_GHGI_Methane_v2_2016.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Exploration_Gridded_GHGI_Methane_v2_2016.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Production_Gridded_GHGI_Methane_v2_2016.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Refining_Gridded_GHGI_Methane_v2_2016.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Transport_Gridded_GHGI_Methane_v2_2016.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2ab_Abandoned_Oil_Gas_Gridded_GHGI_Methane_v2_2016.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Distribution_Gridded_GHGI_Methane_v2_2016.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Exploration_Gridded_GHGI_Methane_v2_2016.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Processing_Gridded_GHGI_Methane_v2_2016.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Production_Gridded_GHGI_Methane_v2_2016.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_TransmissionStorage_Gridded_GHGI_Methane_v2_2016.tif
+Generated and saved COG: Express_Extension_emi_ch4_2B8_Industry_Petrochemical_Gridded_GHGI_Methane_v2_2016.tif
+Generated and saved COG: Express_Extension_emi_ch4_2C2_Industry_Ferroalloy_Gridded_GHGI_Methane_v2_2016.tif
+Generated and saved COG: Express_Extension_emi_ch4_3A_Enteric_Fermentation_Gridded_GHGI_Methane_v2_2016.tif
+Generated and saved COG: Express_Extension_emi_ch4_3B_Manure_Management_Gridded_GHGI_Methane_v2_2016.tif
+Generated and saved COG: Express_Extension_emi_ch4_3C_Rice_Cultivation_Gridded_GHGI_Methane_v2_2016.tif
+Generated and saved COG: Express_Extension_emi_ch4_3F_Field_Burning_Gridded_GHGI_Methane_v2_2016.tif
+Generated and saved COG: Express_Extension_emi_ch4_5A1_Landfills_Industrial_Gridded_GHGI_Methane_v2_2016.tif
+Generated and saved COG: Express_Extension_emi_ch4_5A1_Landfills_MSW_Gridded_GHGI_Methane_v2_2016.tif
+Generated and saved COG: Express_Extension_emi_ch4_5B1_Composting_Gridded_GHGI_Methane_v2_2016.tif
+Generated and saved COG: Express_Extension_emi_ch4_5D_Wastewater_Treatment_Domestic_Gridded_GHGI_Methane_v2_2016.tif
+Generated and saved COG: Express_Extension_emi_ch4_5D_Wastewater_Treatment_Industrial_Gridded_GHGI_Methane_v2_2016.tif
+Generated and saved COG: Express_Extension_emi_ch4_Supp_1B2b_PostMeter_Gridded_GHGI_Methane_v2_2016.tif
+Generated and saved COG: Express_Extension_grid_cell_area_Gridded_GHGI_Methane_v2_2016.tif
+Generated and saved COG: Express_Extension_emi_ch4_1A_Combustion_Mobile_Gridded_GHGI_Methane_v2_2012.tif
+Generated and saved COG: Express_Extension_emi_ch4_1A_Combustion_Stationary_Gridded_GHGI_Methane_v2_2012.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B1a_Abandoned_Coal_Gridded_GHGI_Methane_v2_2012.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B1a_Surface_Coal_Gridded_GHGI_Methane_v2_2012.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B1a_Underground_Coal_Gridded_GHGI_Methane_v2_2012.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Exploration_Gridded_GHGI_Methane_v2_2012.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Production_Gridded_GHGI_Methane_v2_2012.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Refining_Gridded_GHGI_Methane_v2_2012.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Transport_Gridded_GHGI_Methane_v2_2012.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2ab_Abandoned_Oil_Gas_Gridded_GHGI_Methane_v2_2012.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Distribution_Gridded_GHGI_Methane_v2_2012.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Exploration_Gridded_GHGI_Methane_v2_2012.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Processing_Gridded_GHGI_Methane_v2_2012.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Production_Gridded_GHGI_Methane_v2_2012.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_TransmissionStorage_Gridded_GHGI_Methane_v2_2012.tif
+Generated and saved COG: Express_Extension_emi_ch4_2B8_Industry_Petrochemical_Gridded_GHGI_Methane_v2_2012.tif
+Generated and saved COG: Express_Extension_emi_ch4_2C2_Industry_Ferroalloy_Gridded_GHGI_Methane_v2_2012.tif
+Generated and saved COG: Express_Extension_emi_ch4_3A_Enteric_Fermentation_Gridded_GHGI_Methane_v2_2012.tif
+Generated and saved COG: Express_Extension_emi_ch4_3B_Manure_Management_Gridded_GHGI_Methane_v2_2012.tif
+Generated and saved COG: Express_Extension_emi_ch4_3C_Rice_Cultivation_Gridded_GHGI_Methane_v2_2012.tif
+Generated and saved COG: Express_Extension_emi_ch4_3F_Field_Burning_Gridded_GHGI_Methane_v2_2012.tif
+Generated and saved COG: Express_Extension_emi_ch4_5A1_Landfills_Industrial_Gridded_GHGI_Methane_v2_2012.tif
+Generated and saved COG: Express_Extension_emi_ch4_5A1_Landfills_MSW_Gridded_GHGI_Methane_v2_2012.tif
+Generated and saved COG: Express_Extension_emi_ch4_5B1_Composting_Gridded_GHGI_Methane_v2_2012.tif
+Generated and saved COG: Express_Extension_emi_ch4_5D_Wastewater_Treatment_Domestic_Gridded_GHGI_Methane_v2_2012.tif
+Generated and saved COG: Express_Extension_emi_ch4_5D_Wastewater_Treatment_Industrial_Gridded_GHGI_Methane_v2_2012.tif
+Generated and saved COG: Express_Extension_emi_ch4_Supp_1B2b_PostMeter_Gridded_GHGI_Methane_v2_2012.tif
+Generated and saved COG: Express_Extension_grid_cell_area_Gridded_GHGI_Methane_v2_2012.tif
+Generated and saved COG: Express_Extension_emi_ch4_1A_Combustion_Mobile_Gridded_GHGI_Methane_v2_2019.tif
+Generated and saved COG: Express_Extension_emi_ch4_1A_Combustion_Stationary_Gridded_GHGI_Methane_v2_2019.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B1a_Abandoned_Coal_Gridded_GHGI_Methane_v2_2019.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B1a_Surface_Coal_Gridded_GHGI_Methane_v2_2019.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B1a_Underground_Coal_Gridded_GHGI_Methane_v2_2019.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Exploration_Gridded_GHGI_Methane_v2_2019.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Production_Gridded_GHGI_Methane_v2_2019.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Refining_Gridded_GHGI_Methane_v2_2019.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Transport_Gridded_GHGI_Methane_v2_2019.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2ab_Abandoned_Oil_Gas_Gridded_GHGI_Methane_v2_2019.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Distribution_Gridded_GHGI_Methane_v2_2019.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Exploration_Gridded_GHGI_Methane_v2_2019.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Processing_Gridded_GHGI_Methane_v2_2019.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Production_Gridded_GHGI_Methane_v2_2019.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_TransmissionStorage_Gridded_GHGI_Methane_v2_2019.tif
+Generated and saved COG: Express_Extension_emi_ch4_2B8_Industry_Petrochemical_Gridded_GHGI_Methane_v2_2019.tif
+Generated and saved COG: Express_Extension_emi_ch4_2C2_Industry_Ferroalloy_Gridded_GHGI_Methane_v2_2019.tif
+Generated and saved COG: Express_Extension_emi_ch4_3A_Enteric_Fermentation_Gridded_GHGI_Methane_v2_2019.tif
+Generated and saved COG: Express_Extension_emi_ch4_3B_Manure_Management_Gridded_GHGI_Methane_v2_2019.tif
+Generated and saved COG: Express_Extension_emi_ch4_3C_Rice_Cultivation_Gridded_GHGI_Methane_v2_2019.tif
+Generated and saved COG: Express_Extension_emi_ch4_3F_Field_Burning_Gridded_GHGI_Methane_v2_2019.tif
+Generated and saved COG: Express_Extension_emi_ch4_5A1_Landfills_Industrial_Gridded_GHGI_Methane_v2_2019.tif
+Generated and saved COG: Express_Extension_emi_ch4_5A1_Landfills_MSW_Gridded_GHGI_Methane_v2_2019.tif
+Generated and saved COG: Express_Extension_emi_ch4_5B1_Composting_Gridded_GHGI_Methane_v2_2019.tif
+Generated and saved COG: Express_Extension_emi_ch4_5D_Wastewater_Treatment_Domestic_Gridded_GHGI_Methane_v2_2019.tif
+Generated and saved COG: Express_Extension_emi_ch4_5D_Wastewater_Treatment_Industrial_Gridded_GHGI_Methane_v2_2019.tif
+Generated and saved COG: Express_Extension_emi_ch4_Supp_1B2b_PostMeter_Gridded_GHGI_Methane_v2_2019.tif
+Generated and saved COG: Express_Extension_grid_cell_area_Gridded_GHGI_Methane_v2_2019.tif
+Generated and saved COG: Express_Extension_emi_ch4_1A_Combustion_Mobile_Gridded_GHGI_Methane_v2_2018.tif
+Generated and saved COG: Express_Extension_emi_ch4_1A_Combustion_Stationary_Gridded_GHGI_Methane_v2_2018.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B1a_Abandoned_Coal_Gridded_GHGI_Methane_v2_2018.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B1a_Surface_Coal_Gridded_GHGI_Methane_v2_2018.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B1a_Underground_Coal_Gridded_GHGI_Methane_v2_2018.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Exploration_Gridded_GHGI_Methane_v2_2018.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Production_Gridded_GHGI_Methane_v2_2018.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Refining_Gridded_GHGI_Methane_v2_2018.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Transport_Gridded_GHGI_Methane_v2_2018.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2ab_Abandoned_Oil_Gas_Gridded_GHGI_Methane_v2_2018.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Distribution_Gridded_GHGI_Methane_v2_2018.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Exploration_Gridded_GHGI_Methane_v2_2018.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Processing_Gridded_GHGI_Methane_v2_2018.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Production_Gridded_GHGI_Methane_v2_2018.tif
+Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_TransmissionStorage_Gridded_GHGI_Methane_v2_2018.tif
+Generated and saved COG: Express_Extension_emi_ch4_2B8_Industry_Petrochemical_Gridded_GHGI_Methane_v2_2018.tif
+Generated and saved COG: Express_Extension_emi_ch4_2C2_Industry_Ferroalloy_Gridded_GHGI_Methane_v2_2018.tif
+Generated and saved COG: Express_Extension_emi_ch4_3A_Enteric_Fermentation_Gridded_GHGI_Methane_v2_2018.tif
+Generated and saved COG: Express_Extension_emi_ch4_3B_Manure_Management_Gridded_GHGI_Methane_v2_2018.tif
+Generated and saved COG: Express_Extension_emi_ch4_3C_Rice_Cultivation_Gridded_GHGI_Methane_v2_2018.tif
+Generated and saved COG: Express_Extension_emi_ch4_3F_Field_Burning_Gridded_GHGI_Methane_v2_2018.tif
+Generated and saved COG: Express_Extension_emi_ch4_5A1_Landfills_Industrial_Gridded_GHGI_Methane_v2_2018.tif
+Generated and saved COG: Express_Extension_emi_ch4_5A1_Landfills_MSW_Gridded_GHGI_Methane_v2_2018.tif
+Generated and saved COG: Express_Extension_emi_ch4_5B1_Composting_Gridded_GHGI_Methane_v2_2018.tif
+Generated and saved COG: Express_Extension_emi_ch4_5D_Wastewater_Treatment_Domestic_Gridded_GHGI_Methane_v2_2018.tif
+Generated and saved COG: Express_Extension_emi_ch4_5D_Wastewater_Treatment_Industrial_Gridded_GHGI_Methane_v2_2018.tif
+Generated and saved COG: Express_Extension_emi_ch4_Supp_1B2b_PostMeter_Gridded_GHGI_Methane_v2_2018.tif
+Generated and saved COG: Express_Extension_grid_cell_area_Gridded_GHGI_Methane_v2_2018.tif
+Done generating COGs
+
+
+ + + + Back to top
+ + +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-46/cog_transformation/epa-ch4emission-grid-v2express_layers_update.html b/pr-preview/pr-46/cog_transformation/epa-ch4emission-grid-v2express_layers_update.html new file mode 100644 index 00000000..a0c9a41d --- /dev/null +++ b/pr-preview/pr-46/cog_transformation/epa-ch4emission-grid-v2express_layers_update.html @@ -0,0 +1,1080 @@ + + + + + + + + + + + + +U.S. Greenhouse Gas Center Documentation - Gridded Anthropogenic Methane Emissions Inventory + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + +
+ + + +
+ +
+
+

Gridded Anthropogenic Methane Emissions Inventory

+
+ +
+
+ Documentation of data transformation +
+
+ + +
+ +
+
Author
+
+

Vishal Gaur

+
+
+ +
+
Published
+
+

August 31, 2023

+
+
+ + +
+ + +
+ +

This script was used to add concatenated layers and transform Gridded Anthropogenic Methane Emissions Inventory dataset from netCDF to Cloud Optimized GeoTIFF (COG) format for display in the Greenhouse Gas (GHG) Center.

+
+
import os
+import xarray
+import re
+import pandas as pd
+import json
+import tempfile
+import boto3
+from datetime import datetime
+import numpy as np
+
+from dotenv import load_dotenv
+
+load_dotenv()
+
+
True
+
+
+
+
# session = boto3.session.Session()
+session = boto3.Session(
+    aws_access_key_id=os.environ.get("AWS_ACCESS_KEY_ID"),
+    aws_secret_access_key=os.environ.get("AWS_SECRET_ACCESS_KEY"),
+    aws_session_token=os.environ.get("AWS_SESSION_TOKEN"),
+)
+s3_client = session.client("s3")
+bucket_name = (
+    "ghgc-data-store-dev"  # S3 bucket where the COGs are stored after transformation
+)
+FOLDER_NAME = "../data/epa_emissions_express_extension"
+s3_folder_name = "epa_express_extension_Tg_km2_yr"
+
+files_processed = pd.DataFrame(
+    columns=["file_name", "COGs_created"]
+)  # A dataframe to keep track of the files that we have transformed into COGs
+
+# Reading the raw netCDF files from local machine
+for name in os.listdir(FOLDER_NAME):
+    xds = xarray.open_dataset(f"{FOLDER_NAME}/{name}", engine="netcdf4")
+    xds = xds.assign_coords(lon=(((xds.lon + 180) % 360) - 180)).sortby("lon")
+    variable = [var for var in xds.data_vars]
+    new_variables = {
+        "all-variables": variable[:-1],
+        "agriculture": variable[17:21],
+        "natural-gas-systems": variable[10:15] + [variable[26]],
+        "petroleum-systems": variable[5:9],
+        "waste": variable[21:26],
+        "coal-mines": variable[2:5],
+        "other": variable[:2] + [variable[9]] + variable[15:17],
+    }
+    filename = name.split("/ ")[-1]
+    filename_elements = re.split("[_ .]", filename)
+    start_time = datetime(int(filename_elements[-2]), 1, 1)
+
+    for time_increment in range(0, len(xds.time)):
+        for key, value in new_variables.items():
+            data = np.zeros(dtype=np.float32, shape=(len(xds.lat), len(xds.lon)))
+            filename = name.split("/ ")[-1]
+            filename_elements = re.split("[_ .]", filename)
+            for var in value:
+                data = data + getattr(xds.isel(time=time_increment), var)
+            # data = np.round(data / pow(10, 9), 2)
+            data.values[data.values==0] = np.nan
+            # data = data*((1/(6.022*pow(10,23)))*(16.04*pow(10,-6))*366*pow(10,10))
+            data = data*(9.74*pow(10,-11))
+            data.values[data.values<=np.nanpercentile(data.values, 50)] = np.nan
+            data = data.fillna(-9999)
+            data = data.isel(lat=slice(None, None, -1))
+            data.rio.set_spatial_dims("lon", "lat", inplace=True)
+            data.rio.write_crs("epsg:4326", inplace=True)
+
+            # # insert date of generated COG into filename
+            filename_elements.pop()
+            filename_elements[-1] = start_time.strftime("%Y")
+            filename_elements.insert(2, key)
+            cog_filename = "_".join(filename_elements)
+            # # add extension
+            cog_filename = f"{cog_filename}.tif"
+
+            with tempfile.NamedTemporaryFile() as temp_file:
+                data.rio.to_raster(
+                    temp_file.name,
+                    driver="COG",
+                )
+                s3_client.upload_file(
+                    Filename=temp_file.name,
+                    Bucket=bucket_name,
+                    Key=f"{s3_folder_name}/{cog_filename}",
+                )
+
+                files_processed = files_processed._append(
+                    {"file_name": name, "COGs_created": cog_filename},
+                    ignore_index=True,
+                )
+
+                print(f"Generated and saved COG: {cog_filename}")
+print("Done generating COGs")
+
+
Generated and saved COG: Express_Extension_all-variables_Gridded_GHGI_Methane_v2_2015.tif
+Generated and saved COG: Express_Extension_agriculture_Gridded_GHGI_Methane_v2_2015.tif
+Generated and saved COG: Express_Extension_natural-gas-systems_Gridded_GHGI_Methane_v2_2015.tif
+Generated and saved COG: Express_Extension_petroleum-systems_Gridded_GHGI_Methane_v2_2015.tif
+Generated and saved COG: Express_Extension_waste_Gridded_GHGI_Methane_v2_2015.tif
+Generated and saved COG: Express_Extension_coal-mines_Gridded_GHGI_Methane_v2_2015.tif
+Generated and saved COG: Express_Extension_other_Gridded_GHGI_Methane_v2_2015.tif
+Generated and saved COG: Express_Extension_all-variables_Gridded_GHGI_Methane_v2_2020.tif
+Generated and saved COG: Express_Extension_agriculture_Gridded_GHGI_Methane_v2_2020.tif
+Generated and saved COG: Express_Extension_natural-gas-systems_Gridded_GHGI_Methane_v2_2020.tif
+Generated and saved COG: Express_Extension_petroleum-systems_Gridded_GHGI_Methane_v2_2020.tif
+Generated and saved COG: Express_Extension_waste_Gridded_GHGI_Methane_v2_2020.tif
+Generated and saved COG: Express_Extension_coal-mines_Gridded_GHGI_Methane_v2_2020.tif
+Generated and saved COG: Express_Extension_other_Gridded_GHGI_Methane_v2_2020.tif
+Generated and saved COG: Express_Extension_all-variables_Gridded_GHGI_Methane_v2_2014.tif
+Generated and saved COG: Express_Extension_agriculture_Gridded_GHGI_Methane_v2_2014.tif
+Generated and saved COG: Express_Extension_natural-gas-systems_Gridded_GHGI_Methane_v2_2014.tif
+Generated and saved COG: Express_Extension_petroleum-systems_Gridded_GHGI_Methane_v2_2014.tif
+Generated and saved COG: Express_Extension_waste_Gridded_GHGI_Methane_v2_2014.tif
+Generated and saved COG: Express_Extension_coal-mines_Gridded_GHGI_Methane_v2_2014.tif
+Generated and saved COG: Express_Extension_other_Gridded_GHGI_Methane_v2_2014.tif
+Generated and saved COG: Express_Extension_all-variables_Gridded_GHGI_Methane_v2_2013.tif
+Generated and saved COG: Express_Extension_agriculture_Gridded_GHGI_Methane_v2_2013.tif
+Generated and saved COG: Express_Extension_natural-gas-systems_Gridded_GHGI_Methane_v2_2013.tif
+Generated and saved COG: Express_Extension_petroleum-systems_Gridded_GHGI_Methane_v2_2013.tif
+Generated and saved COG: Express_Extension_waste_Gridded_GHGI_Methane_v2_2013.tif
+Generated and saved COG: Express_Extension_coal-mines_Gridded_GHGI_Methane_v2_2013.tif
+Generated and saved COG: Express_Extension_other_Gridded_GHGI_Methane_v2_2013.tif
+Generated and saved COG: Express_Extension_all-variables_Gridded_GHGI_Methane_v2_2017.tif
+Generated and saved COG: Express_Extension_agriculture_Gridded_GHGI_Methane_v2_2017.tif
+Generated and saved COG: Express_Extension_natural-gas-systems_Gridded_GHGI_Methane_v2_2017.tif
+Generated and saved COG: Express_Extension_petroleum-systems_Gridded_GHGI_Methane_v2_2017.tif
+Generated and saved COG: Express_Extension_waste_Gridded_GHGI_Methane_v2_2017.tif
+Generated and saved COG: Express_Extension_coal-mines_Gridded_GHGI_Methane_v2_2017.tif
+Generated and saved COG: Express_Extension_other_Gridded_GHGI_Methane_v2_2017.tif
+Generated and saved COG: Express_Extension_all-variables_Gridded_GHGI_Methane_v2_2016.tif
+Generated and saved COG: Express_Extension_agriculture_Gridded_GHGI_Methane_v2_2016.tif
+Generated and saved COG: Express_Extension_natural-gas-systems_Gridded_GHGI_Methane_v2_2016.tif
+Generated and saved COG: Express_Extension_petroleum-systems_Gridded_GHGI_Methane_v2_2016.tif
+Generated and saved COG: Express_Extension_waste_Gridded_GHGI_Methane_v2_2016.tif
+Generated and saved COG: Express_Extension_coal-mines_Gridded_GHGI_Methane_v2_2016.tif
+Generated and saved COG: Express_Extension_other_Gridded_GHGI_Methane_v2_2016.tif
+Generated and saved COG: Express_Extension_all-variables_Gridded_GHGI_Methane_v2_2012.tif
+Generated and saved COG: Express_Extension_agriculture_Gridded_GHGI_Methane_v2_2012.tif
+Generated and saved COG: Express_Extension_natural-gas-systems_Gridded_GHGI_Methane_v2_2012.tif
+Generated and saved COG: Express_Extension_petroleum-systems_Gridded_GHGI_Methane_v2_2012.tif
+Generated and saved COG: Express_Extension_waste_Gridded_GHGI_Methane_v2_2012.tif
+Generated and saved COG: Express_Extension_coal-mines_Gridded_GHGI_Methane_v2_2012.tif
+Generated and saved COG: Express_Extension_other_Gridded_GHGI_Methane_v2_2012.tif
+Generated and saved COG: Express_Extension_all-variables_Gridded_GHGI_Methane_v2_2019.tif
+Generated and saved COG: Express_Extension_agriculture_Gridded_GHGI_Methane_v2_2019.tif
+Generated and saved COG: Express_Extension_natural-gas-systems_Gridded_GHGI_Methane_v2_2019.tif
+Generated and saved COG: Express_Extension_petroleum-systems_Gridded_GHGI_Methane_v2_2019.tif
+Generated and saved COG: Express_Extension_waste_Gridded_GHGI_Methane_v2_2019.tif
+Generated and saved COG: Express_Extension_coal-mines_Gridded_GHGI_Methane_v2_2019.tif
+Generated and saved COG: Express_Extension_other_Gridded_GHGI_Methane_v2_2019.tif
+Generated and saved COG: Express_Extension_all-variables_Gridded_GHGI_Methane_v2_2018.tif
+Generated and saved COG: Express_Extension_agriculture_Gridded_GHGI_Methane_v2_2018.tif
+Generated and saved COG: Express_Extension_natural-gas-systems_Gridded_GHGI_Methane_v2_2018.tif
+Generated and saved COG: Express_Extension_petroleum-systems_Gridded_GHGI_Methane_v2_2018.tif
+Generated and saved COG: Express_Extension_waste_Gridded_GHGI_Methane_v2_2018.tif
+Generated and saved COG: Express_Extension_coal-mines_Gridded_GHGI_Methane_v2_2018.tif
+Generated and saved COG: Express_Extension_other_Gridded_GHGI_Methane_v2_2018.tif
+Done generating COGs
+
+
+ + + + Back to top
+ +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-46/cog_transformation/epa-ch4emission-monthgrid-v2.html b/pr-preview/pr-46/cog_transformation/epa-ch4emission-monthgrid-v2.html new file mode 100644 index 00000000..28619534 --- /dev/null +++ b/pr-preview/pr-46/cog_transformation/epa-ch4emission-monthgrid-v2.html @@ -0,0 +1,1018 @@ + + + + + + + + + + + + +U.S. Greenhouse Gas Center Documentation - Gridded Anthropogenic Methane Emissions Inventory + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + +
+ + + +
+ +
+
+

Gridded Anthropogenic Methane Emissions Inventory

+
+ +
+
+ Documentation of data transformation +
+
+ + +
+ +
+
Author
+
+

Vishal Gaur

+
+
+ +
+
Published
+
+

August 31, 2023

+
+
+ + +
+ + +
+ +

This script was used to transform the Gridded Anthropogenic Methane Emissions Inventory dataset from netCDF to Cloud Optimized GeoTIFF (COG) format for display in the Greenhouse Gas (GHG) Center.

+
+
import os
+import xarray
+import re
+import pandas as pd
+import json
+import tempfile
+import boto3
+from datetime import datetime
+from dateutil.relativedelta import relativedelta
+
+
+
session = boto3.session.Session()
+s3_client = session.client("s3")
+bucket_name = (
+    "ghgc-data-store-dev"  # S3 bucket where the COGs are stored after transformation
+)
+FOLDER_NAME = "epa_emissions/monthly_scale"
+s3_folder_name = "epa-emissions-monthly-scale-factors"
+
+files_processed = pd.DataFrame(
+    columns=["file_name", "COGs_created"]
+)  # A dataframe to keep track of the files that we have transformed into COGs
+
+# Reading the raw netCDF files from local machine
+for name in os.listdir(FOLDER_NAME):
+    xds = xarray.open_dataset(f"{FOLDER_NAME}/{name}", engine="netcdf4")
+    xds = xds.assign_coords(lon=(((xds.lon + 180) % 360) - 180)).sortby("lon")
+    variable = [var for var in xds.data_vars]
+    filename = name.split("/ ")[-1]
+    filename_elements = re.split("[_ .]", filename)
+    start_time = datetime(int(filename_elements[-2]), 1, 1)
+
+    for time_increment in range(0, len(xds.time)):
+        for var in variable:
+            filename = name.split("/ ")[-1]
+            filename_elements = re.split("[_ .]", filename)
+            data = getattr(xds.isel(time=time_increment), var)
+            data = data.isel(lat=slice(None, None, -1))
+            data.rio.set_spatial_dims("lon", "lat", inplace=True)
+            data.rio.write_crs("epsg:4326", inplace=True)
+            date = start_time + relativedelta(months=+time_increment)
+
+            # # insert date of generated COG into filename
+            filename_elements.pop()
+            filename_elements[-1] = date.strftime("%Y%m")
+            filename_elements.insert(2, var)
+            cog_filename = "_".join(filename_elements)
+            # # add extension
+            cog_filename = f"{cog_filename}.tif"
+
+            with tempfile.NamedTemporaryFile() as temp_file:
+                data.rio.to_raster(
+                    temp_file.name,
+                    driver="COG",
+                )
+                s3_client.upload_file(
+                    Filename=temp_file.name,
+                    Bucket=bucket_name,
+                    Key=f"{s3_folder_name}/{cog_filename}",
+                )
+
+            files_processed = files_processed._append(
+                {"file_name": name, "COGs_created": cog_filename},
+                ignore_index=True,
+            )
+
+            print(f"Generated and saved COG: {cog_filename}")
+
+# Generate the json file with the metadata that is present in the netCDF files.
+with tempfile.NamedTemporaryFile(mode="w+") as fp:
+    json.dump(xds.attrs, fp)
+    json.dump({"data_dimensions": dict(xds.dims)}, fp)
+    json.dump({"data_variables": list(xds.data_vars)}, fp)
+    fp.flush()
+
+    s3_client.upload_file(
+        Filename=fp.name,
+        Bucket=bucket_name,
+        Key=f"{s3_folder_name}/metadata.json",
+    )
+
+# creating the csv file with the names of files transformed.
+files_processed.to_csv(
+    f"s3://{bucket_name}/{s3_folder_name}/files_converted.csv",
+)
+print("Done generating COGs")
+
+ + + + Back to top
+ + +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-46/cog_transformation/gosat-based-ch4budget-yeargrid-v1.html b/pr-preview/pr-46/cog_transformation/gosat-based-ch4budget-yeargrid-v1.html new file mode 100644 index 00000000..813ae92e --- /dev/null +++ b/pr-preview/pr-46/cog_transformation/gosat-based-ch4budget-yeargrid-v1.html @@ -0,0 +1,1023 @@ + + + + + + + + + + + + +U.S. Greenhouse Gas Center Documentation - GOSAT-based Top-down Methane Budgets + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + +
+ + + +
+ +
+
+

GOSAT-based Top-down Methane Budgets

+
+ +
+
+ Documentation of data transformation +
+
+ + +
+ +
+
Author
+
+

Vishal Gaur

+
+
+ +
+
Published
+
+

August 31, 2023

+
+
+ + +
+ + +
+ +

This script was used to transform the GOSAT-based Top-down Methane Budgets dataset from netCDF to Cloud Optimized GeoTIFF (COG) format for display in the Greenhouse Gas (GHG) Center.

+
+
import os
+import xarray
+import re
+import pandas as pd
+import json
+import tempfile
+import boto3
+import rasterio
+from datetime import datetime
+from dateutil.relativedelta import relativedelta
+
+
+
session = boto3.session.Session()
+s3_client = session.client("s3")
+bucket_name = (
+    "ghgc-data-store-dev"  # S3 bucket where the COGs are stored after transformation
+)
+year_ = datetime(2019, 1, 1)
+folder_name = "new_data/CH4-inverse-flux"
+
+COG_PROFILE = {"driver": "COG", "compress": "DEFLATE"}
+
+files_processed = pd.DataFrame(
+    columns=["file_name", "COGs_created"]
+)  # A dataframe to keep track of the files that we have transformed into COGs
+
+# Reading the raw netCDF files from local machine
+for name in os.listdir(folder_name):
+    ds = xarray.open_dataset(
+        f"{folder_name}/{name}",
+        engine="netcdf4",
+    )
+
+    ds = ds.rename({"dimy": "lat", "dimx": "lon"})
+    # assign coords from dimensions
+    ds = ds.assign_coords(lon=(((ds.lon + 180) % 360) - 180)).sortby("lon")
+    ds = ds.assign_coords(lat=((ds.lat / 180) * 180) - 90).sortby("lat")
+
+    variable = [var for var in ds.data_vars]
+
+    for var in variable[2:]:
+        filename = name.split("/ ")[-1]
+        filename_elements = re.split("[_ .]", filename)
+        data = ds[var]
+        filename_elements.pop()
+        filename_elements.insert(2, var)
+        cog_filename = "_".join(filename_elements)
+        # # add extension
+        cog_filename = f"{cog_filename}.tif"
+
+        data = data.reindex(lat=list(reversed(data.lat)))
+
+        data.rio.set_spatial_dims("lon", "lat")
+        data.rio.write_crs("epsg:4326", inplace=True)
+
+        # generate COG
+        COG_PROFILE = {"driver": "COG", "compress": "DEFLATE"}
+
+        with tempfile.NamedTemporaryFile() as temp_file:
+            data.rio.to_raster(temp_file.name, **COG_PROFILE)
+            s3_client.upload_file(
+                Filename=temp_file.name,
+                Bucket=bucket_name,
+                Key=f"ch4_inverse_flux/{cog_filename}",
+            )
+
+        files_processed = files_processed._append(
+            {"file_name": name, "COGs_created": cog_filename},
+            ignore_index=True,
+        )
+
+        print(f"Generated and saved COG: {cog_filename}")
+
+# Generate the json file with the metadata that is present in the netCDF files.
+with tempfile.NamedTemporaryFile(mode="w+") as fp:
+    json.dump(ds.attrs, fp)
+    json.dump({"data_dimensions": dict(ds.dims)}, fp)
+    json.dump({"data_variables": list(ds.data_vars)}, fp)
+    fp.flush()
+
+    s3_client.upload_file(
+        Filename=fp.name,
+        Bucket=bucket_name,
+        Key="ch4_inverse_flux/metadata.json",
+    )
+
+# creating the csv file with the names of files transformed.
+files_processed.to_csv(
+    f"s3://{bucket_name}/ch4_inverse_flux/files_converted.csv",
+)
+print("Done generating COGs")
+
+ + + + Back to top
+ + +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-46/cog_transformation/lpjwsl-wetlandch4-daygrid-v1.html b/pr-preview/pr-46/cog_transformation/lpjwsl-wetlandch4-daygrid-v1.html new file mode 100644 index 00000000..08153959 --- /dev/null +++ b/pr-preview/pr-46/cog_transformation/lpjwsl-wetlandch4-daygrid-v1.html @@ -0,0 +1,1022 @@ + + + + + + + + + + + + +U.S. Greenhouse Gas Center Documentation - Wetland Methane Emissions, LPJ-wsl Model + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + +
+ + + +
+ +
+
+

Wetland Methane Emissions, LPJ-wsl Model

+
+ +
+
+ Documentation of data transformation +
+
+ + +
+ +
+
Author
+
+

Vishal Gaur

+
+
+ +
+
Published
+
+

August 31, 2023

+
+
+ + +
+ + +
+ +

This script was used to transform the Wetland Methane Emissions, LPJ-wsl Model dataset from netCDF to Cloud Optimized GeoTIFF (COG) format for display in the Greenhouse Gas (GHG) Center.

+
+
import os
+import xarray
+import re
+import pandas as pd
+import json
+import tempfile
+import boto3
+from datetime import datetime, timedelta
+
+
+
session = boto3.session.Session()
+s3_client = session.client("s3")
+bucket_name = (
+    "ghgc-data-store-dev"  # S3 bucket where the COGs are stored after transformation
+)
+FOLDER_NAME = "NASA_GSFC_ch4_wetlands_daily"
+directory = "ch4_wetlands_daily"
+
+files_processed = pd.DataFrame(
+    columns=["file_name", "COGs_created"]
+)  # A dataframe to keep track of the files that we have transformed into COGs
+
+# Reading the raw netCDF files from local machine
+for name in os.listdir(directory):
+    xds = xarray.open_dataset(
+        f"{directory}/{name}", engine="netcdf4", decode_times=False
+    )
+    xds = xds.assign_coords(longitude=(((xds.longitude + 180) % 360) - 180)).sortby(
+        "longitude"
+    )
+    variable = [var for var in xds.data_vars]
+    filename = name.split("/ ")[-1]
+    filename_elements = re.split("[_ .]", filename)
+    start_time = datetime(int(filename_elements[-2]), 1, 1)
+
+    for time_increment in range(0, len(xds.time)):
+        for var in variable:
+            filename = name.split("/ ")[-1]
+            filename_elements = re.split("[_ .]", filename)
+            data = getattr(xds.isel(time=time_increment), var)
+            data = data.isel(latitude=slice(None, None, -1))
+            data = data * 1000
+            data.rio.set_spatial_dims("longitude", "latitude", inplace=True)
+            data.rio.write_crs("epsg:4326", inplace=True)
+            date = start_time + timedelta(hours=data.time.item(0))
+
+            # # insert date of generated COG into filename
+            filename_elements.pop()
+            filename_elements[-1] = date.strftime("%Y%m%d")
+            filename_elements.insert(2, var)
+            cog_filename = "_".join(filename_elements)
+            # # add extension
+            cog_filename = f"{cog_filename}.tif"
+
+            with tempfile.NamedTemporaryFile() as temp_file:
+                data.rio.to_raster(
+                    temp_file.name,
+                    driver="COG",
+                )
+                s3_client.upload_file(
+                    Filename=temp_file.name,
+                    Bucket=bucket_name,
+                    Key=f"{FOLDER_NAME}/{cog_filename}",
+                )
+
+            files_processed = files_processed._append(
+                {"file_name": name, "COGs_created": cog_filename},
+                ignore_index=True,
+            )
+
+            print(f"Generated and saved COG: {cog_filename}")
+
+# Generate the json file with the metadata that is present in the netCDF files.
+with tempfile.NamedTemporaryFile(mode="w+") as fp:
+    json.dump(xds.attrs, fp)
+    json.dump({"data_dimensions": dict(xds.dims)}, fp)
+    json.dump({"data_variables": list(xds.data_vars)}, fp)
+    fp.flush()
+
+    s3_client.upload_file(
+        Filename=fp.name,
+        Bucket=bucket_name,
+        Key=f"{FOLDER_NAME}/metadata.json",
+    )
+
+# creating the csv file with the names of files transformed.
+files_processed.to_csv(
+    f"s3://{bucket_name}/{FOLDER_NAME}/files_converted.csv",
+)
+print("Done generating COGs")
+
+ + + + Back to top
+ + +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-46/cog_transformation/lpjwsl-wetlandch4-monthgrid-v1.html b/pr-preview/pr-46/cog_transformation/lpjwsl-wetlandch4-monthgrid-v1.html new file mode 100644 index 00000000..50fb1fbc --- /dev/null +++ b/pr-preview/pr-46/cog_transformation/lpjwsl-wetlandch4-monthgrid-v1.html @@ -0,0 +1,1024 @@ + + + + + + + + + + + + +U.S. Greenhouse Gas Center Documentation - Wetland Methane Emissions, LPJ-wsl Model + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + +
+ + + +
+ +
+
+

Wetland Methane Emissions, LPJ-wsl Model

+
+ +
+
+ Documentation of data transformation +
+
+ + +
+ +
+
Author
+
+

Vishal Gaur

+
+
+ +
+
Published
+
+

August 31, 2023

+
+
+ + +
+ + +
+ +

This script was used to transform the Wetland Methane Emissions, LPJ-wsl Model dataset from netCDF to Cloud Optimized GeoTIFF (COG) format for display in the Greenhouse Gas (GHG) Center.

+
+
import os
+import xarray
+import re
+import pandas as pd
+import json
+import tempfile
+import boto3
+
+
+
session = boto3.session.Session()
+s3_client = session.client("s3")
+bucket_name = (
+    "ghgc-data-store-dev"  # S3 bucket where the COGs are stored after transformation
+)
+FOLDER_NAME = "NASA_GSFC_ch4_wetlands_monthly"
+directory = "ch4_wetlands_monthly"
+
+files_processed = pd.DataFrame(
+    columns=["file_name", "COGs_created"]
+)  # A dataframe to keep track of the files that we have transformed into COGs
+
+# Reading the raw netCDF files from local machine
+for name in os.listdir(directory):
+    xds = xarray.open_dataset(
+        f"{directory}/{name}", engine="netcdf4", decode_times=False
+    )
+    xds = xds.assign_coords(longitude=(((xds.longitude + 180) % 360) - 180)).sortby(
+        "longitude"
+    )
+    variable = [var for var in xds.data_vars]
+    filename = name.split("/ ")[-1]
+    filename_elements = re.split("[_ .]", filename)
+
+    for time_increment in range(0, len(xds.time)):
+        for var in variable:
+            filename = name.split("/ ")[-1]
+            filename_elements = re.split("[_ .]", filename)
+            data = getattr(xds.isel(time=time_increment), var)
+            data = data.isel(latitude=slice(None, None, -1))
+            data = data * 1000
+            data.rio.set_spatial_dims("longitude", "latitude", inplace=True)
+            data.rio.write_crs("epsg:4326", inplace=True)
+
+            date = (
+                f"0{int((data.time.item(0)/732)+1)}"
+                if len(str(int((data.time.item(0) / 732) + 1))) == 1
+                else f"{int((data.time.item(0)/732)+1)}"
+            )
+            # # insert date of generated COG into filename
+            filename_elements.pop()
+            filename_elements[-1] = filename_elements[-1] + date
+            filename_elements.insert(2, var)
+            cog_filename = "_".join(filename_elements)
+            # # add extension
+            cog_filename = f"{cog_filename}.tif"
+
+            with tempfile.NamedTemporaryFile() as temp_file:
+                data.rio.to_raster(
+                    temp_file.name,
+                    driver="COG",
+                )
+                s3_client.upload_file(
+                    Filename=temp_file.name,
+                    Bucket=bucket_name,
+                    Key=f"{FOLDER_NAME}/{cog_filename}",
+                )
+
+            files_processed = files_processed._append(
+                {"file_name": name, "COGs_created": cog_filename},
+                ignore_index=True,
+            )
+
+            print(f"Generated and saved COG: {cog_filename}")
+
+# Generate the json file with the metadata that is present in the netCDF files.
+with tempfile.NamedTemporaryFile(mode="w+") as fp:
+    json.dump(xds.attrs, fp)
+    json.dump({"data_dimensions": dict(xds.dims)}, fp)
+    json.dump({"data_variables": list(xds.data_vars)}, fp)
+    fp.flush()
+
+    s3_client.upload_file(
+        Filename=fp.name,
+        Bucket=bucket_name,
+        Key=f"{FOLDER_NAME}/metadata.json",
+    )
+
+# creating the csv file with the names of files transformed.
+files_processed.to_csv(
+    f"s3://{bucket_name}/{FOLDER_NAME}/files_converted.csv",
+)
+print("Done generating COGs")
+
+ + + + Back to top
+ + +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-46/cog_transformation/oco2-mip-co2budget-yeargrid-v1.html b/pr-preview/pr-46/cog_transformation/oco2-mip-co2budget-yeargrid-v1.html new file mode 100644 index 00000000..1dd9a1cb --- /dev/null +++ b/pr-preview/pr-46/cog_transformation/oco2-mip-co2budget-yeargrid-v1.html @@ -0,0 +1,1016 @@ + + + + + + + + + + + + +U.S. Greenhouse Gas Center Documentation - OCO-2 MIP Top-Down CO₂ Budgets + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + +
+ + + +
+ +
+
+

OCO-2 MIP Top-Down CO₂ Budgets

+
+ +
+
+ Documentation of data transformation +
+
+ + +
+ +
+
Author
+
+

Vishal Gaur

+
+
+ +
+
Published
+
+

August 31, 2023

+
+
+ + +
+ + +
+ +

This script was used to transform the OCO-2 MIP Top-Down CO₂ Budgets dataset from netCDF to Cloud Optimized GeoTIFF (COG) format for display in the Greenhouse Gas (GHG) Center.

+
+
import os
+import xarray
+import re
+import pandas as pd
+import json
+import tempfile
+import boto3
+import rasterio
+from datetime import datetime
+from dateutil.relativedelta import relativedelta
+
+
+
session = boto3.session.Session()
+s3_client = session.client("s3")
+bucket_name = "ghgc-data-store-dev" # S3 bucket where the COGs are to be stored
+year_ = datetime(2015, 1, 1)    # Initialize the starting date time of the dataset.
+
+COG_PROFILE = {"driver": "COG", "compress": "DEFLATE"}
+
+# Reading the raw netCDF files from local machine
+files_processed = pd.DataFrame(columns=["file_name", "COGs_created"])   # A dataframe to keep track of the files that are converted into COGs
+for name in os.listdir("new_data"):
+    ds = xarray.open_dataset(
+        f"new_data/{name}",
+        engine="netcdf4",
+    )
+    ds = ds.rename({"latitude": "lat", "longitude": "lon"})
+    # assign coords from dimensions
+    ds = ds.assign_coords(lon=(((ds.lon + 180) % 360) - 180)).sortby("lon")
+    ds = ds.assign_coords(lat=list(ds.lat))
+
+    variable = [var for var in ds.data_vars]
+
+    for time_increment in range(0, len(ds.year)):
+        for var in variable[2:]:
+            filename = name.split("/ ")[-1]
+            filename_elements = re.split("[_ .]", filename)
+            try:
+                data = ds[var].sel(year=time_increment)
+                date = year_ + relativedelta(years=+time_increment)
+                filename_elements[-1] = date.strftime("%Y")
+                # # insert date of generated COG into filename
+                filename_elements.insert(2, var)
+                cog_filename = "_".join(filename_elements)
+                # # add extension
+                cog_filename = f"{cog_filename}.tif"
+            except KeyError:
+                data = ds[var]
+                date = year_ + relativedelta(years=+(len(ds.year) - 1))
+                filename_elements.pop()
+                filename_elements.append(year_.strftime("%Y"))
+                filename_elements.append(date.strftime("%Y"))
+                filename_elements.insert(2, var)
+                cog_filename = "_".join(filename_elements)
+                # # add extension
+                cog_filename = f"{cog_filename}.tif"
+
+            data = data.reindex(lat=list(reversed(data.lat)))
+
+            data.rio.set_spatial_dims("lon", "lat")
+            data.rio.write_crs("epsg:4326", inplace=True)
+
+            # generate COG
+            COG_PROFILE = {"driver": "COG", "compress": "DEFLATE"}
+            with tempfile.NamedTemporaryFile() as temp_file:
+                data.rio.to_raster(temp_file.name, **COG_PROFILE)
+                s3_client.upload_file(
+                    Filename=temp_file.name,
+                    Bucket=bucket_name,
+                    Key=f"ceos_co2_flux/{cog_filename}",
+                )
+
+            files_processed = files_processed._append(
+                {"file_name": name, "COGs_created": cog_filename},
+                ignore_index=True,
+            )
+
+            print(f"Generated and saved COG: {cog_filename}")
+
+# creating the csv file with the names of files transformed.
+files_processed.to_csv(
+    f"s3://{bucket_name}/ceos_co2_flux/files_converted.csv",
+)
+print("Done generating COGs")
+
+ + + + Back to top
+ + +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-46/cog_transformation/oco2geos-co2-daygrid-v10r.html b/pr-preview/pr-46/cog_transformation/oco2geos-co2-daygrid-v10r.html new file mode 100644 index 00000000..a76ca9c9 --- /dev/null +++ b/pr-preview/pr-46/cog_transformation/oco2geos-co2-daygrid-v10r.html @@ -0,0 +1,1020 @@ + + + + + + + + + + + + +U.S. Greenhouse Gas Center Documentation - OCO-2 GEOS Column CO₂ Concentrations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + +
+ + + +
+ +
+
+

OCO-2 GEOS Column CO₂ Concentrations

+
+ +
+
+ Documentation of data transformation +
+
+ + +
+ +
+
Author
+
+

Vishal Gaur

+
+
+ +
+
Published
+
+

August 31, 2023

+
+
+ + +
+ + +
+ +

This script was used to transform the OCO-2 GEOS Column CO₂ Concentrations dataset from netCDF to Cloud Optimized GeoTIFF (COG) format for display in the Greenhouse Gas (GHG) Center.

+
+
import xarray
+import re
+import pandas as pd
+import json
+import tempfile
+import boto3
+import os
+
+
+
session = boto3.Session()
+s3_client = session.client("s3")
+bucket_name = (
+    "ghgc-data-store-dev"  # S3 bucket where the COGs are stored after transformation
+)
+FOLDER_NAME = "earth_data/geos_oco2"
+s3_folder_name = "geos-oco2"
+
+error_files = []
+count = 0
+files_processed = pd.DataFrame(
+    columns=["file_name", "COGs_created"]
+)  # A dataframe to keep track of the files that we have transformed into COGs
+
+# Reading the raw netCDF files from local machine
+for name in os.listdir(FOLDER_NAME):
+    try:
+        xds = xarray.open_dataset(f"{FOLDER_NAME}/{name}", engine="netcdf4")
+        xds = xds.assign_coords(lon=(((xds.lon + 180) % 360) - 180)).sortby("lon")
+        variable = [var for var in xds.data_vars]
+        filename = name.split("/ ")[-1]
+        filename_elements = re.split("[_ .]", filename)
+
+        for time_increment in range(0, len(xds.time)):
+            for var in variable:
+                filename = name.split("/ ")[-1]
+                filename_elements = re.split("[_ .]", filename)
+                data = getattr(xds.isel(time=time_increment), var)
+                data = data.isel(lat=slice(None, None, -1))
+                data.rio.set_spatial_dims("lon", "lat", inplace=True)
+                data.rio.write_crs("epsg:4326", inplace=True)
+
+                # # insert date of generated COG into filename
+                filename_elements[-1] = filename_elements[-3]
+                filename_elements.insert(2, var)
+                filename_elements.pop(-3)
+                cog_filename = "_".join(filename_elements)
+                # # add extension
+                cog_filename = f"{cog_filename}.tif"
+
+                with tempfile.NamedTemporaryFile() as temp_file:
+                    data.rio.to_raster(
+                        temp_file.name,
+                        driver="COG",
+                    )
+                    s3_client.upload_file(
+                        Filename=temp_file.name,
+                        Bucket=bucket_name,
+                        Key=f"{s3_folder_name}/{cog_filename}",
+                    )
+
+                files_processed = files_processed._append(
+                    {"file_name": name, "COGs_created": cog_filename},
+                    ignore_index=True,
+                )
+        count += 1
+        print(f"Generated and saved COG: {cog_filename}")
+    except OSError:
+        error_files.append(name)
+        pass
+
+# Generate the json file with the metadata that is present in the netCDF files.
+with tempfile.NamedTemporaryFile(mode="w+") as fp:
+    json.dump(xds.attrs, fp)
+    json.dump({"data_dimensions": dict(xds.dims)}, fp)
+    json.dump({"data_variables": list(xds.data_vars)}, fp)
+    fp.flush()
+
+    s3_client.upload_file(
+        Filename=fp.name,
+        Bucket=bucket_name,
+        Key=f"{s3_folder_name}/metadata.json",
+    )
+
+# creating the csv file with the names of files transformed.
+files_processed.to_csv(
+    f"s3://{bucket_name}/{s3_folder_name}/files_converted.csv",
+)
+print("Done generating COGs")
+
+ + + + Back to top
+ + +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-46/cog_transformation/odiac-ffco2-monthgrid-v2022.html b/pr-preview/pr-46/cog_transformation/odiac-ffco2-monthgrid-v2022.html new file mode 100644 index 00000000..d6847e4a --- /dev/null +++ b/pr-preview/pr-46/cog_transformation/odiac-ffco2-monthgrid-v2022.html @@ -0,0 +1,992 @@ + + + + + + + + + + + + +U.S. Greenhouse Gas Center Documentation - ODIAC Fossil Fuel CO₂ Emissions + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + +
+ + + +
+ +
+
+

ODIAC Fossil Fuel CO₂ Emissions

+
+ +
+
+ Documentation of data transformation +
+
+ + +
+ +
+
Author
+
+

Vishal Gaur

+
+
+ +
+
Published
+
+

August 31, 2023

+
+
+ + +
+ + +
+ +

This script was used to transform the ODIAC Fossil Fuel CO₂ Emissions dataset from GeoTIFF to Cloud Optimized GeoTIFF (COG) format for display in the Greenhouse Gas (GHG) Center.

+
+
import os
+import xarray
+import re
+import pandas as pd
+
+import tempfile
+import boto3
+
+
+
session = boto3.session.Session()
+s3_client = session.client("s3")
+bucket_name = "ghgc-data-store-dev" # S3 bucket where the COGs are stored after transformation
+
+fold_names = os.listdir("ODIAC")
+
+files_processed = pd.DataFrame(columns=["file_name", "COGs_created"])   # A dataframe to keep track of the files that we have transformed into COGs
+
+# Reading the raw netCDF files from local machine
+for fol_ in fold_names:
+    for name in os.listdir(f"ODIAC/{fol_}"):
+        xds = xarray.open_dataarray(f"ODIAC/{fol_}/{name}")
+
+        filename = name.split("/ ")[-1]
+        filename_elements = re.split("[_ .]", filename)
+        # # insert date of generated COG into filename
+        filename_elements.pop()
+        filename_elements[-1] = fol_ + filename_elements[-1][-2:]
+
+        xds.rio.set_spatial_dims("x", "y", inplace=True)
+        xds.rio.write_nodata(-9999, inplace=True)
+        xds.rio.write_crs("epsg:4326", inplace=True)
+
+        cog_filename = "_".join(filename_elements)
+        # # add extension
+        cog_filename = f"{cog_filename}.tif"
+
+        with tempfile.NamedTemporaryFile() as temp_file:
+            xds.rio.to_raster(
+                temp_file.name,
+                driver="COG",
+            )
+            s3_client.upload_file(
+                Filename=temp_file.name,
+                Bucket=bucket_name,
+                Key=f"ODIAC_geotiffs_COGs/{cog_filename}",
+            )
+
+        files_processed = files_processed._append(
+            {"file_name": name, "COGs_created": cog_filename},
+            ignore_index=True,
+        )
+
+        print(f"Generated and saved COG: {cog_filename}")
+
+
+# creating the csv file with the names of files transformed.
+files_processed.to_csv(
+    f"s3://{bucket_name}/ODIAC_COGs/files_converted.csv",
+)
+print("Done generating COGs")
+
+ + + + Back to top
+ + +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-46/cog_transformation/sedac-popdensity-yeargrid5yr-v4.11.html b/pr-preview/pr-46/cog_transformation/sedac-popdensity-yeargrid5yr-v4.11.html new file mode 100644 index 00000000..171d715a --- /dev/null +++ b/pr-preview/pr-46/cog_transformation/sedac-popdensity-yeargrid5yr-v4.11.html @@ -0,0 +1,993 @@ + + + + + + + + + + + + +U.S. Greenhouse Gas Center Documentation - SEDAC Gridded World Population Data + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + +
+ + + +
+ +
+
+

SEDAC Gridded World Population Data

+
+ +
+
+ Documentation of data transformation +
+
+ + +
+ +
+
Author
+
+

Vishal Gaur

+
+
+ +
+
Published
+
+

August 31, 2023

+
+
+ + +
+ + +
+ +

This script was used to transform SEDAC Gridded World Population Data from netCDF to Cloud Optimized GeoTIFF (COG) format for display in the Greenhouse Gas (GHG) Center.

+
+
import os
+import xarray
+import re
+import pandas as pd
+
+import tempfile
+import boto3
+
+
+
session = boto3.session.Session()
+s3_client = session.client("s3")
+bucket_name = (
+    "ghgc-data-store-dev"  # S3 bucket where the COGs are stored after transformation
+)
+
+fold_names = os.listdir("gpw")
+
+files_processed = pd.DataFrame(
+    columns=["file_name", "COGs_created"]
+)  # A dataframe to keep track of the files that we have transformed into COGs
+
+# Reading the raw netCDF files from local machine
+for fol_ in fold_names:
+    for name in os.listdir(f"gpw/{fol_}"):
+        if name.endswith(".tif"):
+            xds = xarray.open_dataarray(f"gpw/{fol_}/{name}")
+
+            filename = name.split("/ ")[-1]
+            filename_elements = re.split("[_ .]", filename)
+            # # insert date of generated COG into filename
+            filename_elements.pop()
+            filename_elements.append(filename_elements[-3])
+
+            xds.rio.set_spatial_dims("x", "y", inplace=True)
+            xds.rio.write_crs("epsg:4326", inplace=True)
+
+            cog_filename = "_".join(filename_elements)
+            # # add extension
+            cog_filename = f"{cog_filename}.tif"
+
+            with tempfile.NamedTemporaryFile() as temp_file:
+                xds.rio.to_raster(temp_file.name, driver="COG")
+                s3_client.upload_file(
+                    Filename=temp_file.name,
+                    Bucket=bucket_name,
+                    Key=f"gridded_population_cog/{cog_filename}",
+                )
+
+            files_processed = files_processed._append(
+                {"file_name": name, "COGs_created": cog_filename},
+                ignore_index=True,
+            )
+
+            print(f"Generated and saved COG: {cog_filename}")
+
+
+# creating the csv file with the names of files transformed.
+files_processed.to_csv(
+    f"s3://{bucket_name}/gridded_population_cog/files_converted.csv",
+)
+print("Done generating COGs")
+
+ + + + Back to top
+ + +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-46/cog_transformation/tm54dvar-ch4flux-monthgrid-v1.html b/pr-preview/pr-46/cog_transformation/tm54dvar-ch4flux-monthgrid-v1.html new file mode 100644 index 00000000..fe74d16e --- /dev/null +++ b/pr-preview/pr-46/cog_transformation/tm54dvar-ch4flux-monthgrid-v1.html @@ -0,0 +1,1014 @@ + + + + + + + + + + + + +U.S. Greenhouse Gas Center Documentation - TM5-4DVar Isotopic CH₄ Inverse Fluxes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + +
+ + + +
+ +
+
+

TM5-4DVar Isotopic CH₄ Inverse Fluxes

+
+ +
+
+ Documentation of data transformation +
+
+ + +
+ +
+
Author
+
+

Vishal Gaur

+
+
+ +
+
Published
+
+

August 31, 2023

+
+
+ + +
+ + +
+ +

This script was used to transform the TM5-4DVar Isotopic CH₄ Inverse Fluxes dataset from netCDF to Cloud Optimized GeoTIFF (COG) format for display in the Greenhouse Gas (GHG) Center.

+
+
import os
+import xarray
+import re
+import pandas as pd
+import json
+import tempfile
+import boto3
+from datetime import datetime
+
+
+
session = boto3.session.Session()
+s3_client = session.client("s3")
+bucket_name = (
+    "ghgc-data-store-dev"  # S3 bucket where the COGs are stored after transformation
+)
+FOLDER_NAME = "tm5-ch4-inverse-flux"
+
+files_processed = pd.DataFrame(
+    columns=["file_name", "COGs_created"]
+)  # A dataframe to keep track of the files that we have transformed into COGs
+
+# Reading the raw netCDF files from local machine
+for name in os.listdir(FOLDER_NAME):
+    xds = xarray.open_dataset(f"{FOLDER_NAME}/{name}", engine="netcdf4")
+    xds = xds.rename({"latitude": "lat", "longitude": "lon"})
+    xds = xds.assign_coords(lon=(((xds.lon + 180) % 360) - 180)).sortby("lon")
+    variable = [var for var in xds.data_vars if "global" not in var]
+
+    for time_increment in range(0, len(xds.months)):
+        filename = name.split("/ ")[-1]
+        filename_elements = re.split("[_ .]", filename)
+        start_time = datetime(int(filename_elements[-2]), time_increment + 1, 1)
+        for var in variable:
+            data = getattr(xds.isel(months=time_increment), var)
+            data = data.isel(lat=slice(None, None, -1))
+            data.rio.set_spatial_dims("lon", "lat", inplace=True)
+            data.rio.write_crs("epsg:4326", inplace=True)
+
+            # # insert date of generated COG into filename
+            filename_elements.pop()
+            filename_elements[-1] = start_time.strftime("%Y%m")
+            filename_elements.insert(2, var)
+            cog_filename = "_".join(filename_elements)
+            # # add extension
+            cog_filename = f"{cog_filename}.tif"
+
+            with tempfile.NamedTemporaryFile() as temp_file:
+                data.rio.to_raster(
+                    temp_file.name,
+                    driver="COG",
+                )
+                s3_client.upload_file(
+                    Filename=temp_file.name,
+                    Bucket=bucket_name,
+                    Key=f"{FOLDER_NAME}/{cog_filename}",
+                )
+
+            files_processed = files_processed._append(
+                {"file_name": name, "COGs_created": cog_filename},
+                ignore_index=True,
+            )
+
+            print(f"Generated and saved COG: {cog_filename}")
+
+# Generate the json file with the metadata that is present in the netCDF files.
+with tempfile.NamedTemporaryFile(mode="w+") as fp:
+    json.dump(xds.attrs, fp)
+    json.dump({"data_dimensions": dict(xds.dims)}, fp)
+    json.dump({"data_variables": list(xds.data_vars)}, fp)
+    fp.flush()
+
+    s3_client.upload_file(
+        Filename=fp.name,
+        Bucket=bucket_name,
+        Key=f"{FOLDER_NAME}/metadata.json",
+    )
+
+# creating the csv file with the names of files transformed.
+files_processed.to_csv(
+    f"s3://{bucket_name}/{FOLDER_NAME}/files_converted.csv",
+)
+print("Done generating COGs")
+
+ + + + Back to top
+ + +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-46/data_workflow/casagfed-carbonflux-monthgrid-v3_Data_Flow.html b/pr-preview/pr-46/data_workflow/casagfed-carbonflux-monthgrid-v3_Data_Flow.html new file mode 100644 index 00000000..73d3ac4a --- /dev/null +++ b/pr-preview/pr-46/data_workflow/casagfed-carbonflux-monthgrid-v3_Data_Flow.html @@ -0,0 +1,875 @@ + + + + + + + + + +U.S. Greenhouse Gas Center Documentation – casagfed-carbonflux-monthgrid-v3_data_flow + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + +
+ + + +
+ + + +
+

CASA-GFED3 Land Carbon Flux - Data Workflow

+
+
+

+
Data Flow Diagram Extending From Acquisition/Creation to User Delivery
+
+
+ + +
+ + Back to top
+ + +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-46/data_workflow/eccodarwin-co2flux-monthgrid-v5_Data_Flow.html b/pr-preview/pr-46/data_workflow/eccodarwin-co2flux-monthgrid-v5_Data_Flow.html new file mode 100644 index 00000000..de2148e3 --- /dev/null +++ b/pr-preview/pr-46/data_workflow/eccodarwin-co2flux-monthgrid-v5_Data_Flow.html @@ -0,0 +1,875 @@ + + + + + + + + + +U.S. Greenhouse Gas Center Documentation – eccodarwin-co2flux-monthgrid-v5_data_flow + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + +
+ + + +
+ + + +
+

Air-Sea CO₂ Flux, ECCO-Darwin Model v5

+
+
+

+
Data Flow Diagram Extending From Acquisition/Creation to User Delivery
+
+
+ + +
+ + Back to top
+ + +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-46/data_workflow/emit-ch4plume-v1_Data_Flow.html b/pr-preview/pr-46/data_workflow/emit-ch4plume-v1_Data_Flow.html new file mode 100644 index 00000000..b014485c --- /dev/null +++ b/pr-preview/pr-46/data_workflow/emit-ch4plume-v1_Data_Flow.html @@ -0,0 +1,875 @@ + + + + + + + + + +U.S. Greenhouse Gas Center Documentation – emit-ch4plume-v1_data_flow + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + +
+ + + +
+ + + +
+

EMIT methane point source plume complexes

+
+
+

+
Data Flow Diagram Extending From Acquisition/Creation to User Delivery
+
+
+ + +
+ + Back to top
+ + +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-46/data_workflow/epa-ch4emission-grid-v2express_Data_Flow.html b/pr-preview/pr-46/data_workflow/epa-ch4emission-grid-v2express_Data_Flow.html new file mode 100644 index 00000000..22959516 --- /dev/null +++ b/pr-preview/pr-46/data_workflow/epa-ch4emission-grid-v2express_Data_Flow.html @@ -0,0 +1,875 @@ + + + + + + + + + +U.S. Greenhouse Gas Center Documentation – epa-ch4emission-grid-v2express_data_flow + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + +
+ + + +
+ + + +
+

Gridded Anthropogenic Methane Emissions Inventory

+
+
+

+
Data Flow Diagram Extending From Acquisition/Creation to User Delivery
+
+
+ + +
+ + Back to top
+ + +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-46/data_workflow/gosat-based-ch4budget-yeargrid-v1_Data_Flow.html b/pr-preview/pr-46/data_workflow/gosat-based-ch4budget-yeargrid-v1_Data_Flow.html new file mode 100644 index 00000000..8466916c --- /dev/null +++ b/pr-preview/pr-46/data_workflow/gosat-based-ch4budget-yeargrid-v1_Data_Flow.html @@ -0,0 +1,875 @@ + + + + + + + + + +U.S. Greenhouse Gas Center Documentation – gosat-based-ch4budget-yeargrid-v1_data_flow + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + +
+ + + +
+ + + +
+

GOSAT-based Top-down Total and Natural Methane Emissions

+
+
+

+
Data Flow Diagram Extending From Acquisition/Creation to User Delivery
+
+
+ + +
+ + Back to top
+ + +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-46/data_workflow/lpjwsl-wetlandch4-grid-v1_Data_Flow.html b/pr-preview/pr-46/data_workflow/lpjwsl-wetlandch4-grid-v1_Data_Flow.html new file mode 100644 index 00000000..73f3f4cf --- /dev/null +++ b/pr-preview/pr-46/data_workflow/lpjwsl-wetlandch4-grid-v1_Data_Flow.html @@ -0,0 +1,875 @@ + + + + + + + + + +U.S. Greenhouse Gas Center Documentation – lpjwsl-wetlandch4-grid-v1_data_flow + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + +
+ + + +
+ + + +
+

Wetland Methane Emissions, LPJ-wsl Model

+
+
+

+
Data Flow Diagram Extending From Acquisition/Creation to User Delivery
+
+
+ + +
+ + Back to top
+ + +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-46/data_workflow/media/casagfed-carbonflux-monthgrid-v3_Data_Flow.png b/pr-preview/pr-46/data_workflow/media/casagfed-carbonflux-monthgrid-v3_Data_Flow.png new file mode 100644 index 00000000..e7dace57 Binary files /dev/null and b/pr-preview/pr-46/data_workflow/media/casagfed-carbonflux-monthgrid-v3_Data_Flow.png differ diff --git a/pr-preview/pr-46/data_workflow/media/eccodarwin-co2flux-monthgrid-v5_Data_Flow.png b/pr-preview/pr-46/data_workflow/media/eccodarwin-co2flux-monthgrid-v5_Data_Flow.png new file mode 100644 index 00000000..ce75fd43 Binary files /dev/null and b/pr-preview/pr-46/data_workflow/media/eccodarwin-co2flux-monthgrid-v5_Data_Flow.png differ diff --git a/pr-preview/pr-46/data_workflow/media/emit-ch4plume-v1_Data_Flow.png b/pr-preview/pr-46/data_workflow/media/emit-ch4plume-v1_Data_Flow.png new file mode 100644 index 00000000..ec0fa657 Binary files /dev/null and b/pr-preview/pr-46/data_workflow/media/emit-ch4plume-v1_Data_Flow.png differ diff --git a/pr-preview/pr-46/data_workflow/media/epa-ch4emission-grid-v2express_Data_Flow.png b/pr-preview/pr-46/data_workflow/media/epa-ch4emission-grid-v2express_Data_Flow.png new file mode 100644 index 00000000..bf2f7726 Binary files /dev/null and b/pr-preview/pr-46/data_workflow/media/epa-ch4emission-grid-v2express_Data_Flow.png differ diff --git a/pr-preview/pr-46/data_workflow/media/gosat-based-ch4budget-yeargrid-v1_Data_Flow.png b/pr-preview/pr-46/data_workflow/media/gosat-based-ch4budget-yeargrid-v1_Data_Flow.png new file mode 100644 index 00000000..e50e3f8b Binary files /dev/null and b/pr-preview/pr-46/data_workflow/media/gosat-based-ch4budget-yeargrid-v1_Data_Flow.png differ diff --git a/pr-preview/pr-46/data_workflow/media/lpjwsl-wetlandch4-grid-v1_Data_Flow.png b/pr-preview/pr-46/data_workflow/media/lpjwsl-wetlandch4-grid-v1_Data_Flow.png new file mode 100644 index 00000000..06a95324 Binary files /dev/null and b/pr-preview/pr-46/data_workflow/media/lpjwsl-wetlandch4-grid-v1_Data_Flow.png differ diff --git a/pr-preview/pr-46/data_workflow/media/noaa-insitu_Data_Flow.png b/pr-preview/pr-46/data_workflow/media/noaa-insitu_Data_Flow.png new file mode 100644 index 00000000..f225ba0e Binary files /dev/null and b/pr-preview/pr-46/data_workflow/media/noaa-insitu_Data_Flow.png differ diff --git a/pr-preview/pr-46/data_workflow/media/oco2-mip-co2budget-yeargrid-v1_Data_Flow.png b/pr-preview/pr-46/data_workflow/media/oco2-mip-co2budget-yeargrid-v1_Data_Flow.png new file mode 100644 index 00000000..0bf2c894 Binary files /dev/null and b/pr-preview/pr-46/data_workflow/media/oco2-mip-co2budget-yeargrid-v1_Data_Flow.png differ diff --git a/pr-preview/pr-46/data_workflow/media/oco2geos-co2-daygrid-v10r_Data_Flow.png b/pr-preview/pr-46/data_workflow/media/oco2geos-co2-daygrid-v10r_Data_Flow.png new file mode 100644 index 00000000..224cb665 Binary files /dev/null and b/pr-preview/pr-46/data_workflow/media/oco2geos-co2-daygrid-v10r_Data_Flow.png differ diff --git a/pr-preview/pr-46/data_workflow/media/odiac-ffco2-monthgrid-v2022_Data_Flow.png b/pr-preview/pr-46/data_workflow/media/odiac-ffco2-monthgrid-v2022_Data_Flow.png new file mode 100644 index 00000000..b96b28a3 Binary files /dev/null and b/pr-preview/pr-46/data_workflow/media/odiac-ffco2-monthgrid-v2022_Data_Flow.png differ diff --git a/pr-preview/pr-46/data_workflow/media/sedac-popdensity-yeargrid5yr-v4.11_Data_Flow.png b/pr-preview/pr-46/data_workflow/media/sedac-popdensity-yeargrid5yr-v4.11_Data_Flow.png new file mode 100644 index 00000000..010639c3 Binary files /dev/null and b/pr-preview/pr-46/data_workflow/media/sedac-popdensity-yeargrid5yr-v4.11_Data_Flow.png differ diff --git a/pr-preview/pr-46/data_workflow/media/tm54dvar-ch4flux-monthgrid-v1_Data_Flow.png b/pr-preview/pr-46/data_workflow/media/tm54dvar-ch4flux-monthgrid-v1_Data_Flow.png new file mode 100644 index 00000000..f49e79ec Binary files /dev/null and b/pr-preview/pr-46/data_workflow/media/tm54dvar-ch4flux-monthgrid-v1_Data_Flow.png differ diff --git a/pr-preview/pr-46/data_workflow/noaa-insitu_Data_Flow.html b/pr-preview/pr-46/data_workflow/noaa-insitu_Data_Flow.html new file mode 100644 index 00000000..285478dc --- /dev/null +++ b/pr-preview/pr-46/data_workflow/noaa-insitu_Data_Flow.html @@ -0,0 +1,871 @@ + + + + + + + + + +U.S. Greenhouse Gas Center Documentation – noaa-insitu_data_flow + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + +
+ + + +
+ + + +
+

Atmospheric Carbon Dioxide Concentrations from the NOAA Global Monitoring Laboratory

+
+
+

+
Data Flow Diagram Extending From Acquisition/Creation to User Delivery
+
+
+ + +
+ + Back to top
+ + +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-46/data_workflow/oco2-mip-co2budget-yeargrid-v1_Data_Flow.html b/pr-preview/pr-46/data_workflow/oco2-mip-co2budget-yeargrid-v1_Data_Flow.html new file mode 100644 index 00000000..12996eec --- /dev/null +++ b/pr-preview/pr-46/data_workflow/oco2-mip-co2budget-yeargrid-v1_Data_Flow.html @@ -0,0 +1,875 @@ + + + + + + + + + +U.S. Greenhouse Gas Center Documentation – oco2-mip-co2budget-yeargrid-v1_data_flow + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + +
+ + + +
+ + + +
+

OCO-2 MIP Top-Down CO₂ Budgets

+
+
+

+
Data Flow Diagram Extending From Acquisition/Creation to User Delivery
+
+
+ + +
+ + Back to top
+ + +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-46/data_workflow/oco2geos-co2-daygrid-v10r_Data_Flow.html b/pr-preview/pr-46/data_workflow/oco2geos-co2-daygrid-v10r_Data_Flow.html new file mode 100644 index 00000000..bdba8471 --- /dev/null +++ b/pr-preview/pr-46/data_workflow/oco2geos-co2-daygrid-v10r_Data_Flow.html @@ -0,0 +1,875 @@ + + + + + + + + + +U.S. Greenhouse Gas Center Documentation – oco2geos-co2-daygrid-v10r_data_flow + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + +
+ + + +
+ + + +
+

OCO-2 GEOS Column CO₂ Concentrations

+
+
+

+
Data Flow Diagram Extending From Acquisition/Creation to User Delivery
+
+
+ + +
+ + Back to top
+ + +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-46/data_workflow/odiac-ffco2-monthgrid-v2022_Data_Flow.html b/pr-preview/pr-46/data_workflow/odiac-ffco2-monthgrid-v2022_Data_Flow.html new file mode 100644 index 00000000..1f5ee3b1 --- /dev/null +++ b/pr-preview/pr-46/data_workflow/odiac-ffco2-monthgrid-v2022_Data_Flow.html @@ -0,0 +1,875 @@ + + + + + + + + + +U.S. Greenhouse Gas Center Documentation – odiac-ffco2-monthgrid-v2022_data_flow + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + +
+ + + +
+ + + +
+

ODIAC Fossil Fuel CO₂ Emissions

+
+
+

+
Data Flow Diagram Extending From Acquisition/Creation to User Delivery
+
+
+ + +
+ + Back to top
+ + +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-46/data_workflow/sedac-popdensity-yeargrid5yr-v4.11_Data_Flow.html b/pr-preview/pr-46/data_workflow/sedac-popdensity-yeargrid5yr-v4.11_Data_Flow.html new file mode 100644 index 00000000..c382993b --- /dev/null +++ b/pr-preview/pr-46/data_workflow/sedac-popdensity-yeargrid5yr-v4.11_Data_Flow.html @@ -0,0 +1,875 @@ + + + + + + + + + +U.S. Greenhouse Gas Center Documentation – sedac-popdensity-yeargrid5yr-v4.11_data_flow + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + +
+ + + +
+ + + +
+

SEDAC Gridded World Population Data

+
+
+

+
Data Flow Diagram Extending From Acquisition/Creation to User Delivery
+
+
+ + +
+ + Back to top
+ + +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-46/data_workflow/tm54dvar-ch4flux-monthgrid-v1_Data_Flow.html b/pr-preview/pr-46/data_workflow/tm54dvar-ch4flux-monthgrid-v1_Data_Flow.html new file mode 100644 index 00000000..776c4a4e --- /dev/null +++ b/pr-preview/pr-46/data_workflow/tm54dvar-ch4flux-monthgrid-v1_Data_Flow.html @@ -0,0 +1,875 @@ + + + + + + + + + +U.S. Greenhouse Gas Center Documentation – tm54dvar-ch4flux-monthgrid-v1_data_flow + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + +
+ + + +
+ + + +
+

TM5-4DVar Isotopic CH₄ Inverse Fluxes

+
+
+

+
Data Flow Diagram Extending From Acquisition/Creation to User Delivery
+
+
+ + +
+ + Back to top
+ + +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-46/index.html b/pr-preview/pr-46/index.html new file mode 100644 index 00000000..cd5cfa72 --- /dev/null +++ b/pr-preview/pr-46/index.html @@ -0,0 +1,898 @@ + + + + + + + + + +U.S. Greenhouse Gas Center Documentation - U.S. Greenhouse Gas Center: Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + +
+ + + +
+ +
+
+

U.S. Greenhouse Gas Center: Documentation

+

Resources for the US GHG Center

+
+ + + +
+ + + + +
+ + +
+ +
+

Welcome

+

The U.S. Greenhouse Gas (GHG) Center provides a cloud-based system for exploring and analyzing U.S. government and other curated greenhouse gas datasets.

+

On this site, you can find the technical documentation of the services the center provides, how to load the datasets, and how the datasets were transformed from their source formats (eg. NetCDF, HDF, etc.) into cloud-optimized formats that enable efficient data access and visualization.

+
+
+

Contents

+
    +
  1. Services provided for accessing and analyzing the GHG Center datasets, such as a JupyterHub environment for interactive computing.
  2. +
  3. Dataset usage examples, e.g. for the LPJ-wsl modelled Wetland Methane Emissions dataset, showing how to load the dataset in Python, for example in JupyterHub.
  4. +
  5. Dataset transformation scripts, e.g. for the CASA-GFED3 Land Carbon Flux dataset.
  6. +
  7. Data processing and verification reports, e.g. for the CEOS CH₄ budget yearly dataset.
  8. +
+
+
+

Contact

+

For technical and usage questions, please contact us at veda@uah.edu or via the Feedback forms at ghg.center.

+ + +
+ + Back to top
+ + +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-46/logo/ghgc-logo-light.svg b/pr-preview/pr-46/logo/ghgc-logo-light.svg new file mode 100644 index 00000000..7e995fb9 --- /dev/null +++ b/pr-preview/pr-46/logo/ghgc-logo-light.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/pr-preview/pr-46/processing_and_verification_reports/casagfed-carbonflux-monthgrid-v3_Processing and Verification Report.html b/pr-preview/pr-46/processing_and_verification_reports/casagfed-carbonflux-monthgrid-v3_Processing and Verification Report.html new file mode 100644 index 00000000..b4d12a16 --- /dev/null +++ b/pr-preview/pr-46/processing_and_verification_reports/casagfed-carbonflux-monthgrid-v3_Processing and Verification Report.html @@ -0,0 +1,888 @@ + + + + + + + + + + +U.S. Greenhouse Gas Center Documentation - CASA-GFED3 Land Carbon Flux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + +
+ + + +
+ +
+
+

CASA-GFED3 Land Carbon Flux

+
+ +
+
+ Global, monthly 0.5 degree resolution carbon fluxes from Net Primary Production (NPP), heterotrophic respiration (Rh), wildfire emissions (FIRE), and fuel wood burning emissions (FUEL) derived from the CASA-GFED model, version 3 +
+
+ + +
+ + + + +
+ + +
+ + + +

+This browser does not support PDFs. Please download the PDF to view it: Download PDF. +

+ +
+ + + + Back to top
+ + +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-46/processing_and_verification_reports/eccodarwin-co2flux-monthgrid-v5_Processing and Verification Report.html b/pr-preview/pr-46/processing_and_verification_reports/eccodarwin-co2flux-monthgrid-v5_Processing and Verification Report.html new file mode 100644 index 00000000..d599a41d --- /dev/null +++ b/pr-preview/pr-46/processing_and_verification_reports/eccodarwin-co2flux-monthgrid-v5_Processing and Verification Report.html @@ -0,0 +1,888 @@ + + + + + + + + + + +U.S. Greenhouse Gas Center Documentation - Air-Sea CO₂ Flux, ECCO-Darwin Model v5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + +
+ + + +
+ +
+
+

Air-Sea CO₂ Flux, ECCO-Darwin Model v5

+
+ +
+
+ Global, monthly average air-sea CO₂ flux at ~1/3° resolution from 2020 to 2022 +
+
+ + +
+ + + + +
+ + +
+ + + +

+This browser does not support PDFs. Please download the PDF to view it: Download PDF. +

+ +
+ + + + Back to top
+ + +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-46/processing_and_verification_reports/emit-ch4plume-v1_Processing and Verification Report.html b/pr-preview/pr-46/processing_and_verification_reports/emit-ch4plume-v1_Processing and Verification Report.html new file mode 100644 index 00000000..e462fcd7 --- /dev/null +++ b/pr-preview/pr-46/processing_and_verification_reports/emit-ch4plume-v1_Processing and Verification Report.html @@ -0,0 +1,888 @@ + + + + + + + + + + +U.S. Greenhouse Gas Center Documentation - EMIT Methane Point Source Plume Complexes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + +
+ + + +
+ +
+
+

EMIT Methane Point Source Plume Complexes

+
+ +
+
+ Methane point source plume complexes measured by the EMIT imaging spectrometer on the International Space Station (ISS) +
+
+ + +
+ + + + +
+ + +
+ + + +

+This browser does not support PDFs. Please download the PDF to view it: Download PDF. +

+ +
+ + + + Back to top
+ + +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-46/processing_and_verification_reports/epa-ch4emission-grid-v2express_Processing and Verification Report.html b/pr-preview/pr-46/processing_and_verification_reports/epa-ch4emission-grid-v2express_Processing and Verification Report.html new file mode 100644 index 00000000..03d054d8 --- /dev/null +++ b/pr-preview/pr-46/processing_and_verification_reports/epa-ch4emission-grid-v2express_Processing and Verification Report.html @@ -0,0 +1,888 @@ + + + + + + + + + + +U.S. Greenhouse Gas Center Documentation - Gridded Anthropogenic Methane Emissions Inventory + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + +
+ + + +
+ +
+
+

Gridded Anthropogenic Methane Emissions Inventory

+
+ +
+
+ Spatially disaggregated 0.1°x 0.1° annual maps of U.S. anthropogenic methane emissions, consistent with the U.S. Inventory of Greenhouse Gas Emissions and Sinks +
+
+ + +
+ + + + +
+ + +
+ + + +

+This browser does not support PDFs. Please download the PDF to view it: Download PDF. +

+ +
+ + + + Back to top
+ + +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-46/processing_and_verification_reports/gosat-based-ch4budget-yeargrid-v1_Processing and Verification Report.html b/pr-preview/pr-46/processing_and_verification_reports/gosat-based-ch4budget-yeargrid-v1_Processing and Verification Report.html new file mode 100644 index 00000000..e6f2c9cc --- /dev/null +++ b/pr-preview/pr-46/processing_and_verification_reports/gosat-based-ch4budget-yeargrid-v1_Processing and Verification Report.html @@ -0,0 +1,888 @@ + + + + + + + + + + +U.S. Greenhouse Gas Center Documentation - GOSAT-based Top-down Total and Natural Methane Emissions + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + +
+ + + +
+ +
+
+

GOSAT-based Top-down Total and Natural Methane Emissions

+
+ +
+
+ Annual methane emissions gridded globally at 1° resolution for 2019, versionr +
+
+ + +
+ + + + +
+ + +
+ + + +

+This browser does not support PDFs. Please download the PDF to view it: Download PDF. +

+ +
+ + + + Back to top
+ + +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-46/processing_and_verification_reports/lpjwsl-wetlandch4-grid-v1_Processing and Verification Report.html b/pr-preview/pr-46/processing_and_verification_reports/lpjwsl-wetlandch4-grid-v1_Processing and Verification Report.html new file mode 100644 index 00000000..60b17537 --- /dev/null +++ b/pr-preview/pr-46/processing_and_verification_reports/lpjwsl-wetlandch4-grid-v1_Processing and Verification Report.html @@ -0,0 +1,888 @@ + + + + + + + + + + +U.S. Greenhouse Gas Center Documentation - Wetland Methane Emissions, LPJ-wsl Model + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + +
+ + + +
+ +
+
+

Wetland Methane Emissions, LPJ-wsl Model

+
+ +
+
+ Global, daily and monthly 0.5 degree resolution estimates of wetland methane emissions from the LPJ-wsl model, version 1 +
+
+ + +
+ + + + +
+ + +
+ + + +

+This browser does not support PDFs. Please download the PDF to view it: Download PDF. +

+ +
+ + + + Back to top
+ + +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-46/processing_and_verification_reports/oco2-mip-co2budget-yeargrid-v1_Processing and Verification Report.html b/pr-preview/pr-46/processing_and_verification_reports/oco2-mip-co2budget-yeargrid-v1_Processing and Verification Report.html new file mode 100644 index 00000000..77013d8a --- /dev/null +++ b/pr-preview/pr-46/processing_and_verification_reports/oco2-mip-co2budget-yeargrid-v1_Processing and Verification Report.html @@ -0,0 +1,888 @@ + + + + + + + + + + +U.S. Greenhouse Gas Center Documentation - OCO-2 MIP Top-Down CO₂ Budgets + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + +
+ + + +
+ +
+
+

OCO-2 MIP Top-Down CO₂ Budgets

+
+ +
+
+ Global, 1 degree resolution pilot top-down budgets of carbon dioxide emissions at 5 year intervals and national scales, version 1 +
+
+ + +
+ + + + +
+ + +
+ + + +

+This browser does not support PDFs. Please download the PDF to view it: Download PDF. +

+ +
+ + + + Back to top
+ + +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-46/processing_and_verification_reports/oco2geos-co2-daygrid-v10r_Processing and Verification Report.html b/pr-preview/pr-46/processing_and_verification_reports/oco2geos-co2-daygrid-v10r_Processing and Verification Report.html new file mode 100644 index 00000000..ea698158 --- /dev/null +++ b/pr-preview/pr-46/processing_and_verification_reports/oco2geos-co2-daygrid-v10r_Processing and Verification Report.html @@ -0,0 +1,888 @@ + + + + + + + + + + +U.S. Greenhouse Gas Center Documentation - OCO-2 GEOS Column CO₂ Concentrations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + +
+ + + +
+ +
+
+

OCO-2 GEOS Column CO₂ Concentrations

+
+ +
+
+ Daily, global 0.5 x 0.625 degree column CO₂ concentrations derived from OCO-2 satellite data, version 10r +
+
+ + +
+ + + + +
+ + +
+ + + +

+This browser does not support PDFs. Please download the PDF to view it: Download PDF. +

+ +
+ + + + Back to top
+ + +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-46/processing_and_verification_reports/odiac-ffco2-monthgrid-v2022_Processing and Verification Report.html b/pr-preview/pr-46/processing_and_verification_reports/odiac-ffco2-monthgrid-v2022_Processing and Verification Report.html new file mode 100644 index 00000000..93927a3e --- /dev/null +++ b/pr-preview/pr-46/processing_and_verification_reports/odiac-ffco2-monthgrid-v2022_Processing and Verification Report.html @@ -0,0 +1,888 @@ + + + + + + + + + + +U.S. Greenhouse Gas Center Documentation - ODIAC Fossil Fuel CO₂ Emissions + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + +
+ + + +
+ +
+
+

ODIAC Fossil Fuel CO₂ Emissions

+
+ +
+
+ Global, monthly 1 km resolution dataset of fossil fuel carbon dioxide emissions, version 2022 +
+
+ + +
+ + + + +
+ + +
+ + + +

+This browser does not support PDFs. Please download the PDF to view it: Download PDF. +

+ +
+ + + + Back to top
+ + +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-46/processing_and_verification_reports/reports/casagfed-carbonflux-monthgrid-v3_Processing and Verification Report.pdf b/pr-preview/pr-46/processing_and_verification_reports/reports/casagfed-carbonflux-monthgrid-v3_Processing and Verification Report.pdf new file mode 100644 index 00000000..3fe8560b Binary files /dev/null and b/pr-preview/pr-46/processing_and_verification_reports/reports/casagfed-carbonflux-monthgrid-v3_Processing and Verification Report.pdf differ diff --git a/pr-preview/pr-46/processing_and_verification_reports/reports/eccodarwin-co2flux-monthgrid-v5_Processing and Verification Report.pdf b/pr-preview/pr-46/processing_and_verification_reports/reports/eccodarwin-co2flux-monthgrid-v5_Processing and Verification Report.pdf new file mode 100644 index 00000000..f7020c88 Binary files /dev/null and b/pr-preview/pr-46/processing_and_verification_reports/reports/eccodarwin-co2flux-monthgrid-v5_Processing and Verification Report.pdf differ diff --git a/pr-preview/pr-46/processing_and_verification_reports/reports/emit-ch4plume-v1_Processing and Verification Report.pdf b/pr-preview/pr-46/processing_and_verification_reports/reports/emit-ch4plume-v1_Processing and Verification Report.pdf new file mode 100644 index 00000000..b046eec4 Binary files /dev/null and b/pr-preview/pr-46/processing_and_verification_reports/reports/emit-ch4plume-v1_Processing and Verification Report.pdf differ diff --git a/pr-preview/pr-46/processing_and_verification_reports/reports/epa-ch4emission-grid-v2express_Processing and Verification Report.pdf b/pr-preview/pr-46/processing_and_verification_reports/reports/epa-ch4emission-grid-v2express_Processing and Verification Report.pdf new file mode 100644 index 00000000..ec5b9dab Binary files /dev/null and b/pr-preview/pr-46/processing_and_verification_reports/reports/epa-ch4emission-grid-v2express_Processing and Verification Report.pdf differ diff --git a/pr-preview/pr-46/processing_and_verification_reports/reports/gosat-based-ch4budget-yeargrid-v1_Processing and Verification Report.pdf b/pr-preview/pr-46/processing_and_verification_reports/reports/gosat-based-ch4budget-yeargrid-v1_Processing and Verification Report.pdf new file mode 100644 index 00000000..554dcc2c Binary files /dev/null and b/pr-preview/pr-46/processing_and_verification_reports/reports/gosat-based-ch4budget-yeargrid-v1_Processing and Verification Report.pdf differ diff --git a/pr-preview/pr-46/processing_and_verification_reports/reports/lpjwsl-wetlandch4-grid-v1_Processing and Verification Report.pdf b/pr-preview/pr-46/processing_and_verification_reports/reports/lpjwsl-wetlandch4-grid-v1_Processing and Verification Report.pdf new file mode 100644 index 00000000..9f7ac060 Binary files /dev/null and b/pr-preview/pr-46/processing_and_verification_reports/reports/lpjwsl-wetlandch4-grid-v1_Processing and Verification Report.pdf differ diff --git a/pr-preview/pr-46/processing_and_verification_reports/reports/oco2-mip-co2budget-yeargrid-v1_Processing and Verification Report.pdf b/pr-preview/pr-46/processing_and_verification_reports/reports/oco2-mip-co2budget-yeargrid-v1_Processing and Verification Report.pdf new file mode 100644 index 00000000..1ec2bddf Binary files /dev/null and b/pr-preview/pr-46/processing_and_verification_reports/reports/oco2-mip-co2budget-yeargrid-v1_Processing and Verification Report.pdf differ diff --git a/pr-preview/pr-46/processing_and_verification_reports/reports/oco2geos-co2-daygrid-v10r_Processing and Verification Report.pdf b/pr-preview/pr-46/processing_and_verification_reports/reports/oco2geos-co2-daygrid-v10r_Processing and Verification Report.pdf new file mode 100644 index 00000000..e69e8ffe Binary files /dev/null and b/pr-preview/pr-46/processing_and_verification_reports/reports/oco2geos-co2-daygrid-v10r_Processing and Verification Report.pdf differ diff --git a/pr-preview/pr-46/processing_and_verification_reports/reports/odiac-ffco2-monthgrid-v2022_Processing and Verification Report.pdf b/pr-preview/pr-46/processing_and_verification_reports/reports/odiac-ffco2-monthgrid-v2022_Processing and Verification Report.pdf new file mode 100644 index 00000000..2a4bff40 Binary files /dev/null and b/pr-preview/pr-46/processing_and_verification_reports/reports/odiac-ffco2-monthgrid-v2022_Processing and Verification Report.pdf differ diff --git a/pr-preview/pr-46/processing_and_verification_reports/reports/sedac-popdensity-yeargrid5yr-v4.11_Processing and Verification Report.pdf b/pr-preview/pr-46/processing_and_verification_reports/reports/sedac-popdensity-yeargrid5yr-v4.11_Processing and Verification Report.pdf new file mode 100644 index 00000000..4769238c Binary files /dev/null and b/pr-preview/pr-46/processing_and_verification_reports/reports/sedac-popdensity-yeargrid5yr-v4.11_Processing and Verification Report.pdf differ diff --git a/pr-preview/pr-46/processing_and_verification_reports/reports/tm54dvar-ch4flux-monthgrid-v1_Processing and Verification Report.pdf b/pr-preview/pr-46/processing_and_verification_reports/reports/tm54dvar-ch4flux-monthgrid-v1_Processing and Verification Report.pdf new file mode 100644 index 00000000..84c6b8c4 Binary files /dev/null and b/pr-preview/pr-46/processing_and_verification_reports/reports/tm54dvar-ch4flux-monthgrid-v1_Processing and Verification Report.pdf differ diff --git a/pr-preview/pr-46/processing_and_verification_reports/sedac-popdensity-yeargrid5yr-v4.11_Processing and Verification Report.html b/pr-preview/pr-46/processing_and_verification_reports/sedac-popdensity-yeargrid5yr-v4.11_Processing and Verification Report.html new file mode 100644 index 00000000..be512ac8 --- /dev/null +++ b/pr-preview/pr-46/processing_and_verification_reports/sedac-popdensity-yeargrid5yr-v4.11_Processing and Verification Report.html @@ -0,0 +1,888 @@ + + + + + + + + + + +U.S. Greenhouse Gas Center Documentation - SEDAC Gridded World Population Density + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + +
+ + + +
+ +
+
+

SEDAC Gridded World Population Density

+
+ +
+
+ Global, 1 km resolution human population density estimates based on national censuses and population registers, version 4.11 +
+
+ + +
+ + + + +
+ + +
+ + + +

+This browser does not support PDFs. Please download the PDF to view it: Download PDF. +

+ +
+ + + + Back to top
+ + +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-46/processing_and_verification_reports/tm54dvar-ch4flux-monthgrid-v1_Processing and Verification Report.html b/pr-preview/pr-46/processing_and_verification_reports/tm54dvar-ch4flux-monthgrid-v1_Processing and Verification Report.html new file mode 100644 index 00000000..3b36330f --- /dev/null +++ b/pr-preview/pr-46/processing_and_verification_reports/tm54dvar-ch4flux-monthgrid-v1_Processing and Verification Report.html @@ -0,0 +1,888 @@ + + + + + + + + + + +U.S. Greenhouse Gas Center Documentation - TM5-4DVar Isotopic CH₄ Inverse Fluxes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + +
+ + + +
+ +
+
+

TM5-4DVar Isotopic CH₄ Inverse Fluxes

+
+ +
+
+ Global, monthly 1 degree resolution methane emission estimates from microbial, fossil and pyrogenic sources derived using inverse modeling, version 1 +
+
+ + +
+ + + + +
+ + +
+ + + +

+This browser does not support PDFs. Please download the PDF to view it: Download PDF. +

+ +
+ + + + Back to top
+ + +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-46/robots.txt b/pr-preview/pr-46/robots.txt new file mode 100644 index 00000000..f44e6a84 --- /dev/null +++ b/pr-preview/pr-46/robots.txt @@ -0,0 +1 @@ +Sitemap: https://us-ghg-center.github.io/ghgc-docs/sitemap.xml diff --git a/pr-preview/pr-46/search.json b/pr-preview/pr-46/search.json new file mode 100644 index 00000000..4f621536 --- /dev/null +++ b/pr-preview/pr-46/search.json @@ -0,0 +1,1024 @@ +[ + { + "objectID": "user_data_notebooks/emit-ch4plume-v1_User_Notebook.html", + "href": "user_data_notebooks/emit-ch4plume-v1_User_Notebook.html", + "title": "EMIT Methane Point Source Plume Complexes", + "section": "", + "text": "Identify available dates and temporal frequency of observations for the given collection using the GHGC API /stac endpoint. The collection processed in this notebook is the Earth Surface Mineral Dust Source Investigation (EMIT) methane emission plumes data product.\nPass the STAC item into the raster API /stac/tilejson.json endpoint.\nUsing folium.Map, visualize the plumes.\nAfter the visualization, perform zonal statistics for a given polygon." + }, + { + "objectID": "user_data_notebooks/emit-ch4plume-v1_User_Notebook.html#approach", + "href": "user_data_notebooks/emit-ch4plume-v1_User_Notebook.html#approach", + "title": "EMIT Methane Point Source Plume Complexes", + "section": "", + "text": "Identify available dates and temporal frequency of observations for the given collection using the GHGC API /stac endpoint. The collection processed in this notebook is the Earth Surface Mineral Dust Source Investigation (EMIT) methane emission plumes data product.\nPass the STAC item into the raster API /stac/tilejson.json endpoint.\nUsing folium.Map, visualize the plumes.\nAfter the visualization, perform zonal statistics for a given polygon." + }, + { + "objectID": "user_data_notebooks/emit-ch4plume-v1_User_Notebook.html#about-the-data", + "href": "user_data_notebooks/emit-ch4plume-v1_User_Notebook.html#about-the-data", + "title": "EMIT Methane Point Source Plume Complexes", + "section": "About the Data", + "text": "About the Data\nThe EMIT instrument builds upon NASA’s long history of developing advanced imaging spectrometers for new science and applications. EMIT launched to the International Space Station (ISS) on July 14, 2022. The data shows high-confidence research grade methane plumes from point source emitters - updated as they are identified - in keeping with JPL Open Science and Open Data policy." + }, + { + "objectID": "user_data_notebooks/emit-ch4plume-v1_User_Notebook.html#querying-the-stac-api", + "href": "user_data_notebooks/emit-ch4plume-v1_User_Notebook.html#querying-the-stac-api", + "title": "EMIT Methane Point Source Plume Complexes", + "section": "Querying the STAC API", + "text": "Querying the STAC API\n\nimport requests\nfrom folium import Map, TileLayer\nfrom pystac_client import Client\n\n\n# Provide STAC and RASTER API endpoints\nSTAC_API_URL = \"http://ghg.center/api/stac\"\nRASTER_API_URL = \"https://ghg.center/api/raster\"\n\n#Please use the collection name similar to the one used in STAC collection.\n\n# Name of the collection for methane emission plumes. \ncollection_name = \"emit-ch4plume-v1\"\n\n\n# Fetching the collection from STAC collections using appropriate endpoint.\ncollection = requests.get(f\"{STAC_API_URL}/collections/{collection_name}\").json()\ncollection\n\n{'id': 'emit-ch4plume-v1',\n 'type': 'Collection',\n 'links': [{'rel': 'items',\n 'type': 'application/geo+json',\n 'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/collections/emit-ch4plume-v1/items'},\n {'rel': 'parent',\n 'type': 'application/json',\n 'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/'},\n {'rel': 'root',\n 'type': 'application/json',\n 'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/'},\n {'rel': 'self',\n 'type': 'application/json',\n 'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/collections/emit-ch4plume-v1'}],\n 'title': 'Methane Point Source Plume Complexes',\n 'assets': None,\n 'extent': {'spatial': {'bbox': [[-118.65756225585938,\n -38.788387298583984,\n 151.0906524658203,\n 50.24619674682617]]},\n 'temporal': {'interval': [['2022-08-10T06:49:57+00:00',\n '2023-07-29T10:06:30+00:00']]}},\n 'license': 'CC0-1.0',\n 'keywords': None,\n 'providers': None,\n 'summaries': {'datetime': ['2022-08-10T06:49:57Z',\n '2022-08-10T06:50:21Z',\n '2022-08-10T06:51:32Z',\n '2022-08-11T04:26:30Z',\n '2022-08-14T05:14:12Z',\n '2022-08-15T04:28:26Z',\n '2022-08-15T04:28:38Z',\n '2022-08-15T07:46:45Z',\n '2022-08-15T14:08:23Z',\n '2022-08-16T03:44:09Z',\n '2022-08-16T10:10:35Z',\n '2022-08-16T10:10:58Z',\n '2022-08-16T11:45:05Z',\n '2022-08-17T04:32:35Z',\n '2022-08-17T09:20:38Z',\n '2022-08-18T03:42:31Z',\n '2022-08-18T07:01:05Z',\n '2022-08-18T08:35:06Z',\n '2022-08-18T11:44:40Z',\n '2022-08-19T09:22:31Z',\n '2022-08-19T12:30:47Z',\n '2022-08-20T05:28:04Z',\n '2022-08-20T08:33:24Z',\n '2022-08-22T06:57:13Z',\n '2022-08-22T10:06:53Z',\n '2022-08-23T07:45:04Z',\n '2022-08-26T06:54:35Z',\n '2022-08-26T08:29:15Z',\n '2022-08-26T17:46:42Z',\n '2022-08-27T06:07:30Z',\n '2022-08-27T06:07:53Z',\n '2022-08-27T07:40:30Z',\n '2022-08-27T10:49:27Z',\n '2022-08-28T05:18:53Z',\n '2022-08-28T05:19:05Z',\n '2022-08-28T05:19:17Z',\n '2022-08-28T05:19:29Z',\n '2022-08-28T05:19:41Z',\n '2022-08-28T06:53:00Z',\n '2022-08-28T06:53:24Z',\n '2022-08-28T06:55:50Z',\n '2022-08-28T08:28:47Z',\n '2022-08-29T06:06:27Z',\n '2022-08-29T06:09:13Z',\n '2022-08-29T16:55:53Z',\n '2022-08-30T06:52:44Z',\n '2022-08-31T06:07:02Z',\n '2022-09-01T03:43:18Z',\n '2022-09-01T05:17:09Z',\n '2022-09-01T05:17:20Z',\n '2022-09-01T05:19:20Z',\n '2022-09-01T08:25:25Z',\n '2022-09-03T05:19:24Z',\n '2022-09-03T06:52:42Z',\n '2022-09-03T08:25:37Z',\n '2022-09-09T07:02:54Z',\n '2022-09-09T07:03:06Z',\n '2023-01-07T14:38:18Z',\n '2023-01-11T13:01:07Z',\n '2023-01-11T13:02:18Z',\n '2023-01-19T04:02:23Z',\n '2023-01-21T16:18:34Z',\n '2023-01-22T15:31:51Z',\n '2023-01-23T08:53:11Z',\n '2023-01-25T00:47:44Z',\n '2023-01-26T06:27:16Z',\n '2023-01-26T12:43:35Z',\n '2023-01-27T16:21:04Z',\n '2023-01-28T12:41:18Z',\n '2023-01-28T12:41:30Z',\n '2023-01-29T08:46:11Z',\n '2023-01-29T13:03:21Z',\n '2023-01-29T13:03:33Z',\n '2023-01-30T09:35:55Z',\n '2023-01-30T18:49:23Z',\n '2023-01-31T05:39:24Z',\n '2023-01-31T05:39:36Z',\n '2023-01-31T05:43:17Z',\n '2023-01-31T05:43:40Z',\n '2023-01-31T08:49:13Z',\n '2023-02-01T07:53:26Z',\n '2023-02-02T07:08:03Z',\n '2023-02-02T19:38:21Z',\n '2023-02-03T06:22:56Z',\n '2023-02-03T06:26:29Z',\n '2023-02-03T17:14:34Z',\n '2023-02-04T04:06:49Z',\n '2023-02-04T04:10:09Z',\n '2023-02-04T07:07:01Z',\n '2023-02-04T07:11:17Z',\n '2023-02-04T07:11:44Z',\n '2023-02-04T08:41:39Z',\n '2023-02-04T08:42:03Z',\n '2023-02-05T17:12:44Z',\n '2023-02-05T17:12:55Z',\n '2023-02-06T16:25:14Z',\n '2023-02-14T07:24:57Z',\n '2023-02-14T08:57:15Z',\n '2023-02-14T10:34:22Z',\n '2023-02-14T10:34:57Z',\n '2023-02-15T06:36:26Z',\n '2023-02-15T11:19:33Z',\n '2023-02-15T20:33:54Z',\n '2023-02-16T13:36:26Z',\n '2023-02-16T13:37:01Z',\n '2023-02-17T06:32:21Z',\n '2023-02-17T11:16:03Z',\n '2023-02-17T20:31:34Z',\n '2023-02-17T20:34:32Z',\n '2023-02-18T08:56:51Z',\n '2023-02-18T08:57:03Z',\n '2023-02-18T08:57:39Z',\n '2023-02-18T10:27:23Z',\n '2023-02-18T12:02:10Z',\n '2023-02-18T18:10:54Z',\n '2023-02-19T06:31:55Z',\n '2023-02-19T08:05:03Z',\n '2023-02-19T08:05:27Z',\n '2023-02-19T08:05:39Z',\n '2023-02-19T09:39:08Z',\n '2023-02-19T09:39:43Z',\n '2023-02-19T09:41:18Z',\n '2023-02-19T09:41:30Z',\n '2023-02-19T19:05:39Z',\n '2023-02-20T05:45:40Z',\n '2023-02-20T07:15:30Z',\n '2023-02-20T10:32:20Z',\n '2023-02-20T19:43:24Z',\n '2023-02-20T19:45:46Z',\n '2023-02-20T19:47:23Z',\n '2023-02-21T04:56:04Z',\n '2023-02-21T06:30:01Z',\n '2023-02-21T09:39:54Z',\n '2023-02-22T08:51:06Z',\n '2023-02-23T04:56:45Z',\n '2023-02-23T04:57:20Z',\n '2023-02-23T06:30:22Z',\n '2023-02-23T06:30:33Z',\n '2023-02-23T06:30:57Z',\n '2023-02-23T06:31:09Z',\n '2023-02-23T08:04:47Z',\n '2023-02-23T08:04:59Z',\n '2023-02-24T04:11:58Z',\n '2023-02-24T08:58:31Z',\n '2023-02-24T10:22:19Z',\n '2023-02-24T18:10:00Z',\n '2023-02-24T18:14:29Z',\n '2023-02-24T18:14:41Z',\n '2023-02-25T05:06:19Z',\n '2023-02-25T08:05:31Z',\n '2023-02-25T08:05:43Z',\n '2023-02-26T04:10:22Z',\n '2023-02-26T05:47:14Z',\n '2023-02-27T15:57:14Z',\n '2023-03-11T12:59:54Z',\n '2023-03-18T04:52:50Z',\n '2023-03-24T09:49:19Z',\n '2023-03-24T09:49:43Z',\n '2023-03-25T12:11:18Z',\n '2023-03-25T13:41:23Z',\n '2023-03-25T13:41:35Z',\n '2023-03-25T13:41:47Z',\n '2023-03-25T15:17:28Z',\n '2023-03-26T08:19:55Z',\n '2023-03-26T11:25:21Z',\n '2023-03-26T14:30:19Z',\n '2023-03-27T07:33:31Z',\n '2023-03-30T09:49:34Z',\n '2023-03-30T09:50:33Z',\n '2023-03-30T09:50:45Z',\n '2023-03-30T12:52:50Z',\n '2023-03-30T12:53:02Z',\n '2023-03-31T07:23:49Z',\n '2023-03-31T19:49:37Z',\n '2023-04-03T08:10:31Z',\n '2023-04-03T08:12:19Z',\n '2023-04-03T08:14:57Z',\n '2023-04-03T09:45:39Z',\n '2023-04-03T11:18:37Z',\n '2023-04-03T11:18:49Z',\n '2023-04-04T08:58:44Z',\n '2023-04-04T08:59:08Z',\n '2023-04-04T09:00:19Z',\n '2023-04-04T09:00:31Z',\n '2023-04-04T09:00:42Z',\n '2023-04-05T06:35:43Z',\n '2023-04-05T08:12:46Z',\n '2023-04-13T09:57:29Z',\n '2023-04-16T12:22:03Z',\n '2023-04-16T21:37:35Z',\n '2023-04-17T09:58:36Z',\n '2023-04-17T09:58:48Z',\n '2023-04-18T06:06:02Z',\n '2023-04-18T06:06:25Z',\n '2023-04-18T09:11:52Z',\n '2023-04-18T09:12:16Z',\n '2023-04-18T20:01:18Z',\n '2023-04-19T08:23:52Z',\n '2023-04-19T13:06:50Z',\n '2023-04-20T06:01:48Z',\n '2023-04-20T10:45:34Z',\n '2023-04-21T08:23:29Z',\n '2023-04-21T08:26:38Z',\n '2023-04-21T10:00:17Z',\n '2023-04-21T19:14:23Z',\n '2023-04-22T07:34:37Z',\n '2023-04-22T09:10:58Z',\n '2023-04-22T09:11:10Z',\n '2023-04-23T05:15:16Z',\n '2023-04-23T06:44:21Z',\n '2023-04-23T08:22:23Z',\n '2023-04-23T10:01:36Z',\n '2023-04-23T11:26:19Z',\n '2023-04-23T11:29:08Z',\n '2023-04-23T19:12:32Z',\n '2023-04-24T04:24:44Z',\n '2023-04-24T06:08:59Z',\n '2023-04-24T09:08:18Z',\n '2023-04-24T16:49:49Z',\n '2023-04-25T03:40:28Z',\n '2023-04-25T03:40:40Z',\n '2023-04-25T05:12:16Z',\n '2023-04-25T08:19:23Z',\n '2023-04-26T02:53:02Z',\n '2023-04-26T05:57:03Z',\n '2023-04-26T07:31:30Z',\n '2023-04-26T18:22:39Z',\n '2023-04-27T06:44:04Z',\n '2023-04-27T06:44:16Z',\n '2023-04-27T17:36:30Z',\n '2023-04-28T02:49:00Z',\n '2023-04-28T05:55:24Z',\n '2023-04-28T05:55:36Z',\n '2023-04-28T09:03:09Z',\n '2023-04-29T05:08:11Z',\n '2023-04-29T05:08:23Z',\n '2023-04-30T05:55:56Z',\n '2023-04-30T05:56:08Z',\n '2023-04-30T07:28:53Z',\n '2023-04-30T16:44:07Z',\n '2023-05-02T04:22:34Z',\n '2023-05-02T04:22:58Z',\n '2023-05-02T07:27:54Z',\n '2023-05-04T13:54:42Z',\n '2023-05-04T13:54:54Z',\n '2023-05-26T14:21:26Z',\n '2023-05-27T13:32:35Z',\n '2023-05-29T11:57:40Z',\n '2023-05-30T09:37:28Z',\n '2023-06-03T07:59:26Z',\n '2023-06-03T08:03:27Z',\n '2023-06-04T07:06:41Z',\n '2023-06-04T18:02:05Z',\n '2023-06-04T18:02:17Z',\n '2023-06-04T18:02:29Z',\n '2023-06-05T08:00:26Z',\n '2023-06-06T05:35:23Z',\n '2023-06-06T10:14:59Z',\n '2023-06-07T09:26:29Z',\n '2023-06-07T09:26:41Z',\n '2023-06-09T04:51:06Z',\n '2023-06-09T07:50:16Z',\n '2023-06-09T17:10:10Z',\n '2023-06-09T17:11:33Z',\n '2023-06-10T03:57:59Z',\n '2023-06-10T05:30:19Z',\n '2023-06-10T16:21:55Z',\n '2023-06-11T04:44:27Z',\n '2023-06-11T04:45:26Z',\n '2023-06-11T06:16:38Z',\n '2023-06-13T04:43:14Z',\n '2023-06-13T11:13:48Z',\n '2023-06-14T10:24:03Z',\n '2023-06-14T10:24:15Z',\n '2023-06-14T10:24:39Z',\n '2023-06-14T10:24:51Z',\n '2023-06-14T19:37:06Z',\n '2023-06-20T08:44:14Z',\n '2023-06-20T08:44:26Z',\n '2023-06-22T11:50:37Z',\n '2023-06-24T05:29:00Z',\n '2023-06-24T05:30:36Z',\n '2023-06-25T06:16:49Z',\n '2023-06-25T06:18:46Z',\n '2023-06-26T08:40:04Z',\n '2023-06-26T10:12:32Z',\n '2023-06-27T03:08:22Z',\n '2023-06-27T04:42:31Z',\n '2023-06-27T07:52:01Z',\n '2023-06-28T05:29:39Z',\n '2023-06-28T05:32:36Z',\n '2023-06-28T05:33:24Z',\n '2023-06-28T16:19:24Z',\n '2023-06-29T01:34:53Z',\n '2023-06-29T04:40:14Z',\n '2023-06-29T06:14:16Z',\n '2023-06-29T06:15:03Z',\n '2023-06-29T06:16:26Z',\n '2023-06-29T06:16:38Z',\n '2023-06-29T06:16:50Z',\n '2023-06-29T15:40:42Z',\n '2023-06-30T07:06:49Z',\n '2023-07-29T10:06:30Z']},\n 'description': 'Methane plume complexes from point source emitters',\n 'item_assets': {'ch4-plume-emissions': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'Methane Plume Complex',\n 'description': 'Methane plume complexes from point source emitters.'}},\n 'stac_version': '1.0.0',\n 'stac_extensions': None,\n 'dashboard:is_periodic': False,\n 'dashboard:time_density': 'day'}\n\n\nExamining the contents of our collection under the temporal variable, we note that data is available from August 2022 to May 2023. By looking at the dashboard: time density, we can see that observations are conducted daily and non-periodically (i.e., there are plumes emissions for multiple places on the same dates).\n\ndef get_item_count(collection_id):\n count = 0\n items_url = f\"{STAC_API_URL}/collections/{collection_id}/items\"\n\n while True:\n response = requests.get(items_url)\n\n if not response.ok:\n print(\"error getting items\")\n exit()\n\n stac = response.json()\n count += int(stac[\"context\"].get(\"returned\", 0))\n next = [link for link in stac[\"links\"] if link[\"rel\"] == \"next\"]\n\n if not next:\n break\n items_url = next[0][\"href\"]\n\n return count\n\n\n# Check total number of items available\nnumber_of_items = get_item_count(collection_name)\nitems = requests.get(f\"{STAC_API_URL}/collections/{collection_name}/items?limit={number_of_items}\").json()[\"features\"]\nprint(f\"Found {len(items)} items\")\n\nFound 505 items\n\n\n\n# Examining the first item in the collection\nitems[0]\n\n{'id': 'EMIT_L2B_CH4PLM_001_20230729T100630_000234',\n 'bbox': [61.67975744168143,\n 39.96112852373608,\n 61.690059859566304,\n 39.97739549934377],\n 'type': 'Feature',\n 'links': [{'rel': 'collection',\n 'type': 'application/json',\n 'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/collections/emit-ch4plume-v1'},\n {'rel': 'parent',\n 'type': 'application/json',\n 'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/collections/emit-ch4plume-v1'},\n {'rel': 'root',\n 'type': 'application/json',\n 'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/'},\n {'rel': 'self',\n 'type': 'application/geo+json',\n 'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/collections/emit-ch4plume-v1/items/EMIT_L2B_CH4PLM_001_20230729T100630_000234'}],\n 'assets': {'ch4-plume-emissions': {'href': 's3://lp-prod-protected/EMITL2BCH4PLM.001/EMIT_L2B_CH4PLM_001_20230729T100630_000234/EMIT_L2B_CH4PLM_001_20230729T100630_000234.tif',\n 'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'Methane Plume Complex',\n 'proj:bbox': [61.67975744168143,\n 39.96112852373608,\n 61.690059859566304,\n 39.97739549934377],\n 'proj:epsg': 4326.0,\n 'proj:shape': [30.0, 19.0],\n 'description': 'Methane plume complexes from point source emitters.',\n 'raster:bands': [{'scale': 1.0,\n 'nodata': -9999.0,\n 'offset': 0.0,\n 'sampling': 'area',\n 'data_type': 'float32',\n 'histogram': {'max': 1693.932861328125,\n 'min': -394.7409973144531,\n 'count': 11.0,\n 'buckets': [27.0, 61.0, 97.0, 86.0, 48.0, 38.0, 15.0, 1.0, 3.0, 2.0]},\n 'statistics': {'mean': 280.35348462301585,\n 'stddev': 345.7089519227557,\n 'maximum': 1693.932861328125,\n 'minimum': -394.7409973144531,\n 'valid_percent': 66.3157894736842}}],\n 'proj:geometry': {'type': 'Polygon',\n 'coordinates': [[[61.67975744168143, 39.96112852373608],\n [61.690059859566304, 39.96112852373608],\n [61.690059859566304, 39.97739549934377],\n [61.67975744168143, 39.97739549934377],\n [61.67975744168143, 39.96112852373608]]]},\n 'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},\n 'name': 'WGS 84',\n 'type': 'GeographicCRS',\n 'datum': {'name': 'World Geodetic System 1984',\n 'type': 'GeodeticReferenceFrame',\n 'ellipsoid': {'name': 'WGS 84',\n 'semi_major_axis': 6378137.0,\n 'inverse_flattening': 298.257223563}},\n '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',\n 'coordinate_system': {'axis': [{'name': 'Geodetic latitude',\n 'unit': 'degree',\n 'direction': 'north',\n 'abbreviation': 'Lat'},\n {'name': 'Geodetic longitude',\n 'unit': 'degree',\n 'direction': 'east',\n 'abbreviation': 'Lon'}],\n 'subtype': 'ellipsoidal'}},\n 'proj:transform': [0.000542232520256367,\n 0.0,\n 61.67975744168143,\n 0.0,\n -0.000542232520256367,\n 39.97739549934377,\n 0.0,\n 0.0,\n 1.0]}},\n 'geometry': {'type': 'Polygon',\n 'coordinates': [[[61.67975744168143, 39.96112852373608],\n [61.690059859566304, 39.96112852373608],\n [61.690059859566304, 39.97739549934377],\n [61.67975744168143, 39.97739549934377],\n [61.67975744168143, 39.96112852373608]]]},\n 'collection': 'emit-ch4plume-v1',\n 'properties': {'datetime': '2023-07-29T10:06:30+00:00'},\n 'stac_version': '1.0.0',\n 'stac_extensions': []}\n\n\nBelow, we are entering the minimum and maximum values to provide our upper and lower bounds in rescale_values." + }, + { + "objectID": "user_data_notebooks/emit-ch4plume-v1_User_Notebook.html#exploring-methane-emission-plumes-ch₄-using-the-raster-api", + "href": "user_data_notebooks/emit-ch4plume-v1_User_Notebook.html#exploring-methane-emission-plumes-ch₄-using-the-raster-api", + "title": "EMIT Methane Point Source Plume Complexes", + "section": "Exploring Methane Emission Plumes (CH₄) using the Raster API", + "text": "Exploring Methane Emission Plumes (CH₄) using the Raster API\nIn this notebook, we will explore global methane emission plumes from point sources. We will visualize the outputs on a map using folium.\n\n# To access the year value from each item more easily, this will let us query more explicity by year and month (e.g., 2020-02)\nitems = {item[\"id\"][20:]: item for item in items} \nasset_name = \"ch4-plume-emissions\"\n\n\n# Fetching the min and max values for a specific item\nrescale_values = {\"max\":items[list(items.keys())[0]][\"assets\"][asset_name][\"raster:bands\"][0][\"histogram\"][\"max\"], \"min\":items[list(items.keys())[0]][\"assets\"][asset_name][\"raster:bands\"][0][\"histogram\"][\"min\"]}\n\nNow we will pass the item id, collection name, and rescaling_factor to the Raster API endpoint. We will do this for only one item so that we can visualize the event.\n\n# Select the item ID which you want to visualize. Item ID is in the format yyyymmdd followed by the timestamp. This ID can be extracted from the COG name as well.\nitem_id = \"20230418T200118_000829\"\ncolor_map = \"magma\"\nmethane_plume_tile = requests.get(\n f\"{RASTER_API_URL}/stac/tilejson.json?collection={items[item_id]['collection']}&item={items[item_id]['id']}\"\n f\"&assets={asset_name}\"\n f\"&color_formula=gamma+r+1.05&colormap_name={color_map}\"\n f\"&rescale={rescale_values['min']},{rescale_values['max']}\", \n).json()\nmethane_plume_tile\n\n{'tilejson': '2.2.0',\n 'version': '1.0.0',\n 'scheme': 'xyz',\n 'tiles': ['https://1w7hfngnp7.execute-api.us-west-2.amazonaws.com/api/raster/stac/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?collection=emit-ch4plume-v1&item=EMIT_L2B_CH4PLM_001_20230418T200118_000829&assets=ch4-plume-emissions&color_formula=gamma+r+1.05&colormap_name=magma&rescale=-394.7409973144531%2C1693.932861328125'],\n 'minzoom': 0,\n 'maxzoom': 24,\n 'bounds': [-104.76285251117253,\n 39.85322425220504,\n -104.74658553556483,\n 39.86515336765068],\n 'center': [-104.75471902336868, 39.85918880992786, 0]}" + }, + { + "objectID": "user_data_notebooks/emit-ch4plume-v1_User_Notebook.html#visualizing-ch₄-emission-plume", + "href": "user_data_notebooks/emit-ch4plume-v1_User_Notebook.html#visualizing-ch₄-emission-plume", + "title": "EMIT Methane Point Source Plume Complexes", + "section": "Visualizing CH₄ Emission Plume", + "text": "Visualizing CH₄ Emission Plume\n\n# We will import folium to map and folium.plugins to allow side-by-side mapping\nimport folium\nimport folium.plugins\n\n# Set initial zoom and center of map for plume Layer\nmap_ = folium.Map(location=(methane_plume_tile[\"center\"][1], methane_plume_tile[\"center\"][0]), zoom_start=13)\n\n# December 2001\nmap_layer = TileLayer(\n tiles=methane_plume_tile[\"tiles\"][0],\n attr=\"GHG\",\n opacity=1,\n)\nmap_layer.add_to(map_)\n\n# visualising the map\nmap_\n\n\nMake this Notebook Trusted to load map: File -> Trust Notebook" + }, + { + "objectID": "user_data_notebooks/emit-ch4plume-v1_User_Notebook.html#summary", + "href": "user_data_notebooks/emit-ch4plume-v1_User_Notebook.html#summary", + "title": "EMIT Methane Point Source Plume Complexes", + "section": "Summary", + "text": "Summary\nIn this notebook we have successfully explored, analyzed, and visualized the STAC collection for EMIT methane emission plumes." + }, + { + "objectID": "user_data_notebooks/tm54dvar-ch4flux-monthgrid-v1_User_Notebook.html", + "href": "user_data_notebooks/tm54dvar-ch4flux-monthgrid-v1_User_Notebook.html", + "title": "TM5-4DVar Isotopic CH₄ Inverse Fluxes", + "section": "", + "text": "Identify available dates and temporal frequency of observations for the given collection using the GHGC API /stac endpoint. The collection processed in this notebook is the TM5-4DVar Isotopic CH₄ Inverse Fluxes Data product.\nPass the STAC item into the raster API /stac/tilejson.jsonendpoint.\nUsing folium.plugins.DualMap, we will visualize two tiles (side-by-side), allowing us to compare time points.\nAfter the visualization, we will perform zonal statistics for a given polygon." + }, + { + "objectID": "user_data_notebooks/tm54dvar-ch4flux-monthgrid-v1_User_Notebook.html#approach", + "href": "user_data_notebooks/tm54dvar-ch4flux-monthgrid-v1_User_Notebook.html#approach", + "title": "TM5-4DVar Isotopic CH₄ Inverse Fluxes", + "section": "", + "text": "Identify available dates and temporal frequency of observations for the given collection using the GHGC API /stac endpoint. The collection processed in this notebook is the TM5-4DVar Isotopic CH₄ Inverse Fluxes Data product.\nPass the STAC item into the raster API /stac/tilejson.jsonendpoint.\nUsing folium.plugins.DualMap, we will visualize two tiles (side-by-side), allowing us to compare time points.\nAfter the visualization, we will perform zonal statistics for a given polygon." + }, + { + "objectID": "user_data_notebooks/tm54dvar-ch4flux-monthgrid-v1_User_Notebook.html#about-the-data", + "href": "user_data_notebooks/tm54dvar-ch4flux-monthgrid-v1_User_Notebook.html#about-the-data", + "title": "TM5-4DVar Isotopic CH₄ Inverse Fluxes", + "section": "About the Data", + "text": "About the Data\nSurface methane (CH₄) emissions are derived from atmospheric measurements of methane and its ¹³C carbon isotope content. Different sources of methane contain different ratios of the two stable isotopologues, ¹²CH₄ and ¹³CH₄. This makes normally indistinguishable collocated sources of methane, say from agriculture and oil and gas exploration, distinguishable. The National Oceanic and Atmospheric Administration (NOAA) collects whole air samples from its global cooperative network of flasks (https://gml.noaa.gov/ccgg/about.html), which are then analyzed for methane and other trace gasses. A subset of those flasks are also analyzed for ¹³C of methane in collaboration with the Institute of Arctic and Alpine Research at the University of Colorado Boulder. Scientists at the National Aeronautics and Space Administration (NASA) and NOAA used those measurements of methane and ¹³C of methane in conjunction with a model of atmospheric circulation to estimate emissions of methane separated by three source types, microbial, fossil and pyrogenic." + }, + { + "objectID": "user_data_notebooks/tm54dvar-ch4flux-monthgrid-v1_User_Notebook.html#installing-the-required-libraries", + "href": "user_data_notebooks/tm54dvar-ch4flux-monthgrid-v1_User_Notebook.html#installing-the-required-libraries", + "title": "TM5-4DVar Isotopic CH₄ Inverse Fluxes", + "section": "Installing the required libraries", + "text": "Installing the required libraries\nPlease run the cell below to install the libraries required to run this notebook.\n%pip install requests %pip install folium %pip install rasterstats %pip install pystac_client" + }, + { + "objectID": "user_data_notebooks/tm54dvar-ch4flux-monthgrid-v1_User_Notebook.html#querying-the-stac-api", + "href": "user_data_notebooks/tm54dvar-ch4flux-monthgrid-v1_User_Notebook.html#querying-the-stac-api", + "title": "TM5-4DVar Isotopic CH₄ Inverse Fluxes", + "section": "Querying the STAC API", + "text": "Querying the STAC API\n\nimport requests\nfrom folium import Map, TileLayer\nfrom pystac_client import Client\n\n\n# Provide STAC and RASTER API endpoints\nSTAC_API_URL = \"http://ghg.center/api/stac\"\nRASTER_API_URL = \"https://ghg.center/api/raster\"\n\n# Please use the collection name similar to the one used in STAC collection.\n# Name of the collection for TM5 CH₄ inverse flux dataset. \ncollection_name = \"tm54dvar-ch4flux-monthgrid-v1\"\n\n\n# Fetching the collection from STAC collections using appropriate endpoint.\ncollection = requests.get(f\"{STAC_API_URL}/collections/{collection_name}\").json()\ncollection\n\n{'id': 'tm54dvar-ch4flux-monthgrid-v1',\n 'type': 'Collection',\n 'links': [{'rel': 'items',\n 'type': 'application/geo+json',\n 'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/collections/tm54dvar-ch4flux-monthgrid-v1/items'},\n {'rel': 'parent',\n 'type': 'application/json',\n 'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/'},\n {'rel': 'root',\n 'type': 'application/json',\n 'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/'},\n {'rel': 'self',\n 'type': 'application/json',\n 'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/collections/tm54dvar-ch4flux-monthgrid-v1'}],\n 'title': 'TM5-4DVar Isotopic CH4 Inverse Fluxes',\n 'assets': None,\n 'extent': {'spatial': {'bbox': [[-180, -90, 180, 90]]},\n 'temporal': {'interval': [['1999-01-01T00:00:00+00:00',\n '2016-12-31T00:00:00+00:00']]}},\n 'license': 'CC-BY-4.0',\n 'keywords': None,\n 'providers': None,\n 'summaries': {'datetime': ['1999-01-01T00:00:00Z', '2016-12-31T00:00:00Z']},\n 'description': 'Global, monthly 1 degree resolution methane emission estimates from microbial, fossil and pyrogenic sources derived using inverse modeling, version 1.',\n 'item_assets': {'total': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'Total CH4 Emission',\n 'description': 'Total methane emission from microbial, fossil and pyrogenic sources'},\n 'fossil': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'Fossil CH4 Emission',\n 'description': 'Emission of methane from all fossil sources, such as oil and gas activities and coal mining.'},\n 'microbial': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'Microbial CH4 Emission',\n 'description': 'Emission of methane from all microbial sources, such as wetlands, agriculture and termites.'},\n 'pyrogenic': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'Pyrogenic CH4 Emission',\n 'description': 'Emission of methane from all sources of biomass burning, such as wildfires and crop burning.'}},\n 'stac_version': '1.0.0',\n 'stac_extensions': None,\n 'dashboard:is_periodic': True,\n 'dashboard:time_density': 'month'}\n\n\nExamining the contents of our collection under the temporal variable, we see that the data is available from January 1999 to December 2016. By looking at the dashboard:time density, we observe that the data is periodic with monthly time density.\n\ndef get_item_count(collection_id):\n count = 0\n items_url = f\"{STAC_API_URL}/collections/{collection_id}/items\"\n\n while True:\n response = requests.get(items_url)\n\n if not response.ok:\n print(\"error getting items\")\n exit()\n\n stac = response.json()\n count += int(stac[\"context\"].get(\"returned\", 0))\n next = [link for link in stac[\"links\"] if link[\"rel\"] == \"next\"]\n\n if not next:\n break\n items_url = next[0][\"href\"]\n\n return count\n\n\n# Check total number of items available\nnumber_of_items = get_item_count(collection_name)\nitems = requests.get(f\"{STAC_API_URL}/collections/{collection_name}/items?limit={number_of_items}\").json()[\"features\"]\nprint(f\"Found {len(items)} items\")\n\nFound 216 items\n\n\n\n# Examining the first item in the collection\nitems[0]\n\n{'id': 'tm54dvar-ch4flux-monthgrid-v1-201612',\n 'bbox': [-180.0, -90.0, 180.0, 90.0],\n 'type': 'Feature',\n 'links': [{'rel': 'collection',\n 'type': 'application/json',\n 'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/collections/tm54dvar-ch4flux-monthgrid-v1'},\n {'rel': 'parent',\n 'type': 'application/json',\n 'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/collections/tm54dvar-ch4flux-monthgrid-v1'},\n {'rel': 'root',\n 'type': 'application/json',\n 'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/'},\n {'rel': 'self',\n 'type': 'application/geo+json',\n 'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/collections/tm54dvar-ch4flux-monthgrid-v1/items/tm54dvar-ch4flux-monthgrid-v1-201612'}],\n 'assets': {'total': {'href': 's3://ghgc-data-store/tm54dvar-ch4flux-monthgrid-v1/methane_emis_total_201612.tif',\n 'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'Total CH4 Emission',\n 'proj:bbox': [-180.0, -90.0, 180.0, 90.0],\n 'proj:epsg': 4326.0,\n 'proj:shape': [180.0, 360.0],\n 'description': 'Total methane emission from microbial, fossil and pyrogenic sources',\n 'raster:bands': [{'scale': 1.0,\n 'offset': 0.0,\n 'sampling': 'area',\n 'data_type': 'float64',\n 'histogram': {'max': 207.09559432166358,\n 'min': 0.0,\n 'count': 11.0,\n 'buckets': [64446.0, 253.0, 61.0, 16.0, 14.0, 4.0, 3.0, 0.0, 2.0, 1.0]},\n 'statistics': {'mean': 0.7699816366032659,\n 'stddev': 3.8996905358416045,\n 'maximum': 207.09559432166358,\n 'minimum': 0.0,\n 'valid_percent': 0.00154320987654321}}],\n 'proj:geometry': {'type': 'Polygon',\n 'coordinates': [[[-180.0, -90.0],\n [180.0, -90.0],\n [180.0, 90.0],\n [-180.0, 90.0],\n [-180.0, -90.0]]]},\n 'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},\n 'name': 'WGS 84',\n 'type': 'GeographicCRS',\n 'datum': {'name': 'World Geodetic System 1984',\n 'type': 'GeodeticReferenceFrame',\n 'ellipsoid': {'name': 'WGS 84',\n 'semi_major_axis': 6378137.0,\n 'inverse_flattening': 298.257223563}},\n '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',\n 'coordinate_system': {'axis': [{'name': 'Geodetic latitude',\n 'unit': 'degree',\n 'direction': 'north',\n 'abbreviation': 'Lat'},\n {'name': 'Geodetic longitude',\n 'unit': 'degree',\n 'direction': 'east',\n 'abbreviation': 'Lon'}],\n 'subtype': 'ellipsoidal'}},\n 'proj:transform': [1.0, 0.0, -180.0, 0.0, -1.0, 90.0, 0.0, 0.0, 1.0]},\n 'fossil': {'href': 's3://ghgc-data-store/tm54dvar-ch4flux-monthgrid-v1/methane_emis_fossil_201612.tif',\n 'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'Fossil CH4 Emission',\n 'proj:bbox': [-180.0, -90.0, 180.0, 90.0],\n 'proj:epsg': 4326.0,\n 'proj:shape': [180.0, 360.0],\n 'description': 'Emission of methane from all fossil sources, such as oil and gas activities and coal mining.',\n 'raster:bands': [{'scale': 1.0,\n 'offset': 0.0,\n 'sampling': 'area',\n 'data_type': 'float64',\n 'histogram': {'max': 202.8189294183266,\n 'min': 0.0,\n 'count': 11.0,\n 'buckets': [64633.0, 107.0, 35.0, 11.0, 8.0, 3.0, 1.0, 1.0, 0.0, 1.0]},\n 'statistics': {'mean': 0.27127687553584495,\n 'stddev': 2.731411670166909,\n 'maximum': 202.8189294183266,\n 'minimum': 0.0,\n 'valid_percent': 0.00154320987654321}}],\n 'proj:geometry': {'type': 'Polygon',\n 'coordinates': [[[-180.0, -90.0],\n [180.0, -90.0],\n [180.0, 90.0],\n [-180.0, 90.0],\n [-180.0, -90.0]]]},\n 'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},\n 'name': 'WGS 84',\n 'type': 'GeographicCRS',\n 'datum': {'name': 'World Geodetic System 1984',\n 'type': 'GeodeticReferenceFrame',\n 'ellipsoid': {'name': 'WGS 84',\n 'semi_major_axis': 6378137.0,\n 'inverse_flattening': 298.257223563}},\n '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',\n 'coordinate_system': {'axis': [{'name': 'Geodetic latitude',\n 'unit': 'degree',\n 'direction': 'north',\n 'abbreviation': 'Lat'},\n {'name': 'Geodetic longitude',\n 'unit': 'degree',\n 'direction': 'east',\n 'abbreviation': 'Lon'}],\n 'subtype': 'ellipsoidal'}},\n 'proj:transform': [1.0, 0.0, -180.0, 0.0, -1.0, 90.0, 0.0, 0.0, 1.0]},\n 'microbial': {'href': 's3://ghgc-data-store/tm54dvar-ch4flux-monthgrid-v1/methane_emis_microbial_201612.tif',\n 'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'Microbial CH4 Emission',\n 'proj:bbox': [-180.0, -90.0, 180.0, 90.0],\n 'proj:epsg': 4326.0,\n 'proj:shape': [180.0, 360.0],\n 'description': 'Emission of methane from all microbial sources, such as wetlands, agriculture and termites.',\n 'raster:bands': [{'scale': 1.0,\n 'offset': 0.0,\n 'sampling': 'area',\n 'data_type': 'float64',\n 'histogram': {'max': 161.4604621003495,\n 'min': 0.0,\n 'count': 11.0,\n 'buckets': [64610.0, 155.0, 22.0, 5.0, 2.0, 2.0, 2.0, 1.0, 0.0, 1.0]},\n 'statistics': {'mean': 0.46611433673211145,\n 'stddev': 2.2910210071489456,\n 'maximum': 161.4604621003495,\n 'minimum': 0.0,\n 'valid_percent': 0.00154320987654321}}],\n 'proj:geometry': {'type': 'Polygon',\n 'coordinates': [[[-180.0, -90.0],\n [180.0, -90.0],\n [180.0, 90.0],\n [-180.0, 90.0],\n [-180.0, -90.0]]]},\n 'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},\n 'name': 'WGS 84',\n 'type': 'GeographicCRS',\n 'datum': {'name': 'World Geodetic System 1984',\n 'type': 'GeodeticReferenceFrame',\n 'ellipsoid': {'name': 'WGS 84',\n 'semi_major_axis': 6378137.0,\n 'inverse_flattening': 298.257223563}},\n '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',\n 'coordinate_system': {'axis': [{'name': 'Geodetic latitude',\n 'unit': 'degree',\n 'direction': 'north',\n 'abbreviation': 'Lat'},\n {'name': 'Geodetic longitude',\n 'unit': 'degree',\n 'direction': 'east',\n 'abbreviation': 'Lon'}],\n 'subtype': 'ellipsoidal'}},\n 'proj:transform': [1.0, 0.0, -180.0, 0.0, -1.0, 90.0, 0.0, 0.0, 1.0]},\n 'pyrogenic': {'href': 's3://ghgc-data-store/tm54dvar-ch4flux-monthgrid-v1/methane_emis_pyrogenic_201612.tif',\n 'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'Pyrogenic CH4 Emission',\n 'proj:bbox': [-180.0, -90.0, 180.0, 90.0],\n 'proj:epsg': 4326.0,\n 'proj:shape': [180.0, 360.0],\n 'description': 'Emission of methane from all sources of biomass burning, such as wildfires and crop burning.',\n 'raster:bands': [{'scale': 1.0,\n 'offset': 0.0,\n 'sampling': 'area',\n 'data_type': 'float64',\n 'histogram': {'max': 13.432528617097262,\n 'min': 0.0,\n 'count': 11.0,\n 'buckets': [64440.0, 221.0, 78.0, 24.0, 18.0, 8.0, 3.0, 1.0, 1.0, 6.0]},\n 'statistics': {'mean': 0.032590424335309266,\n 'stddev': 0.28279054181617735,\n 'maximum': 13.432528617097262,\n 'minimum': 0.0,\n 'valid_percent': 0.00154320987654321}}],\n 'proj:geometry': {'type': 'Polygon',\n 'coordinates': [[[-180.0, -90.0],\n [180.0, -90.0],\n [180.0, 90.0],\n [-180.0, 90.0],\n [-180.0, -90.0]]]},\n 'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},\n 'name': 'WGS 84',\n 'type': 'GeographicCRS',\n 'datum': {'name': 'World Geodetic System 1984',\n 'type': 'GeodeticReferenceFrame',\n 'ellipsoid': {'name': 'WGS 84',\n 'semi_major_axis': 6378137.0,\n 'inverse_flattening': 298.257223563}},\n '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',\n 'coordinate_system': {'axis': [{'name': 'Geodetic latitude',\n 'unit': 'degree',\n 'direction': 'north',\n 'abbreviation': 'Lat'},\n {'name': 'Geodetic longitude',\n 'unit': 'degree',\n 'direction': 'east',\n 'abbreviation': 'Lon'}],\n 'subtype': 'ellipsoidal'}},\n 'proj:transform': [1.0, 0.0, -180.0, 0.0, -1.0, 90.0, 0.0, 0.0, 1.0]}},\n 'geometry': {'type': 'Polygon',\n 'coordinates': [[[-180, -90],\n [180, -90],\n [180, 90],\n [-180, 90],\n [-180, -90]]]},\n 'collection': 'tm54dvar-ch4flux-monthgrid-v1',\n 'properties': {'end_datetime': '2016-12-31T00:00:00+00:00',\n 'start_datetime': '2016-12-01T00:00:00+00:00'},\n 'stac_version': '1.0.0',\n 'stac_extensions': []}\n\n\nBelow, we are entering the minimum and maximum values to provide our upper and lower bounds in rescale_values." + }, + { + "objectID": "user_data_notebooks/tm54dvar-ch4flux-monthgrid-v1_User_Notebook.html#exploring-changes-in-ch₄-flux-levels-using-the-raster-api", + "href": "user_data_notebooks/tm54dvar-ch4flux-monthgrid-v1_User_Notebook.html#exploring-changes-in-ch₄-flux-levels-using-the-raster-api", + "title": "TM5-4DVar Isotopic CH₄ Inverse Fluxes", + "section": "Exploring Changes in CH₄ flux Levels Using the Raster API", + "text": "Exploring Changes in CH₄ flux Levels Using the Raster API\nIn this notebook, we will explore the global changes of CH₄ flux over time in urban regions. We will visualize the outputs on a map using folium.\n\n# to access the year value from each item more easily, this will let us query more explicity by year and month (e.g., 2020-02)\nitems = {item[\"properties\"][\"start_datetime\"][:10]: item for item in items} \nasset_name = \"fossil\" #fossil fuel\n\n\n# Fetching the min and max values for a specific item\nrescale_values = {\"max\":items[list(items.keys())[0]][\"assets\"][asset_name][\"raster:bands\"][0][\"histogram\"][\"max\"], \"min\":items[list(items.keys())[0]][\"assets\"][asset_name][\"raster:bands\"][0][\"histogram\"][\"min\"]}\n\nNow, we will pass the item id, collection name, and rescaling_factor to the Raster API endpoint. We will do this twice, once for 2020 and again for 2019, so that we can visualize each event independently.\n\ncolor_map = \"purd\"\nco2_flux_1 = requests.get(\n f\"{RASTER_API_URL}/stac/tilejson.json?collection={items['2016-12-01']['collection']}&item={items['2016-12-01']['id']}\"\n f\"&assets={asset_name}\"\n f\"&color_formula=gamma+r+1.05&colormap_name={color_map}\"\n f\"&rescale={rescale_values['min']},{rescale_values['max']}\", \n).json()\nco2_flux_1\n\n{'tilejson': '2.2.0',\n 'version': '1.0.0',\n 'scheme': 'xyz',\n 'tiles': ['https://1w7hfngnp7.execute-api.us-west-2.amazonaws.com/api/raster/stac/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?collection=tm54dvar-ch4flux-monthgrid-v1&item=tm54dvar-ch4flux-monthgrid-v1-201612&assets=fossil&color_formula=gamma+r+1.05&colormap_name=purd&rescale=0.0%2C202.8189294183266'],\n 'minzoom': 0,\n 'maxzoom': 24,\n 'bounds': [-180.0, -90.0, 180.0, 90.0],\n 'center': [0.0, 0.0, 0]}\n\n\n\nco2_flux_2 = requests.get(\n f\"{RASTER_API_URL}/stac/tilejson.json?collection={items['1999-12-01']['collection']}&item={items['1999-12-01']['id']}\"\n f\"&assets={asset_name}\"\n f\"&color_formula=gamma+r+1.05&colormap_name={color_map}\"\n f\"&rescale={rescale_values['min']},{rescale_values['max']}\", \n).json()\nco2_flux_2\n\n{'tilejson': '2.2.0',\n 'version': '1.0.0',\n 'scheme': 'xyz',\n 'tiles': ['https://1w7hfngnp7.execute-api.us-west-2.amazonaws.com/api/raster/stac/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?collection=tm54dvar-ch4flux-monthgrid-v1&item=tm54dvar-ch4flux-monthgrid-v1-199912&assets=fossil&color_formula=gamma+r+1.05&colormap_name=purd&rescale=0.0%2C202.8189294183266'],\n 'minzoom': 0,\n 'maxzoom': 24,\n 'bounds': [-180.0, -90.0, 180.0, 90.0],\n 'center': [0.0, 0.0, 0]}" + }, + { + "objectID": "user_data_notebooks/tm54dvar-ch4flux-monthgrid-v1_User_Notebook.html#visualizing-ch₄-flux-emissions-from-fossil-fuel", + "href": "user_data_notebooks/tm54dvar-ch4flux-monthgrid-v1_User_Notebook.html#visualizing-ch₄-flux-emissions-from-fossil-fuel", + "title": "TM5-4DVar Isotopic CH₄ Inverse Fluxes", + "section": "Visualizing CH₄ flux Emissions from Fossil Fuel", + "text": "Visualizing CH₄ flux Emissions from Fossil Fuel\n\n# We'll import folium to map and folium.plugins to allow mapping side-by-side\nimport folium\nimport folium.plugins\n\n# Set initial zoom and center of map for CO₂ Layer\n# Centre of map [latitude,longitude]\nmap_ = folium.plugins.DualMap(location=(34, -118), zoom_start=6)\n\n\nmap_layer_2016 = TileLayer(\n tiles=co2_flux_1[\"tiles\"][0],\n attr=\"GHG\",\n opacity=0.8,\n)\nmap_layer_2016.add_to(map_.m1)\n\nmap_layer_1999 = TileLayer(\n tiles=co2_flux_2[\"tiles\"][0],\n attr=\"GHG\",\n opacity=0.8,\n)\nmap_layer_1999.add_to(map_.m2)\n\n# visualising the map\nmap_\n\n\nMake this Notebook Trusted to load map: File -> Trust Notebook" + }, + { + "objectID": "user_data_notebooks/tm54dvar-ch4flux-monthgrid-v1_User_Notebook.html#visualizing-the-data-as-a-time-series", + "href": "user_data_notebooks/tm54dvar-ch4flux-monthgrid-v1_User_Notebook.html#visualizing-the-data-as-a-time-series", + "title": "TM5-4DVar Isotopic CH₄ Inverse Fluxes", + "section": "Visualizing the Data as a Time Series", + "text": "Visualizing the Data as a Time Series\nWe can now explore the fossil fuel emission time series (January 1999 -December 2016) available for the Dallas, Texas area of the U.S. We can plot the data set using the code below:\n\nimport matplotlib.pyplot as plt\n\nfig = plt.figure(figsize=(20, 10))\n\n\nplt.plot(\n df[\"datetime\"],\n df[\"max\"],\n color=\"red\",\n linestyle=\"-\",\n linewidth=0.5,\n label=\"CH4 emissions\",\n)\n\nplt.legend()\nplt.xlabel(\"Years\")\nplt.ylabel(\"g CH₄/m²/year\")\nplt.xticks(rotation = 90)\nplt.title(\"CH4 emission Values for Texas, Dallas (2015-2020)\")\n\nText(0.5, 1.0, 'CH4 emission Values for Texas, Dallas (2015-2020)')\n\n\n\n\n\n\nprint(items[2][\"properties\"][\"start_datetime\"])\n\n2016-10-01T00:00:00+00:00\n\n\n\nco2_flux_3 = requests.get(\n f\"{RASTER_API_URL}/stac/tilejson.json?collection={items[2]['collection']}&item={items[2]['id']}\"\n f\"&assets={asset_name}\"\n f\"&color_formula=gamma+r+1.05&colormap_name={color_map}\"\n f\"&rescale={rescale_values['min']},{rescale_values['max']}\",\n).json()\nco2_flux_3\n\n{'tilejson': '2.2.0',\n 'version': '1.0.0',\n 'scheme': 'xyz',\n 'tiles': ['https://1w7hfngnp7.execute-api.us-west-2.amazonaws.com/api/raster/stac/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?collection=tm54dvar-ch4flux-monthgrid-v1&item=tm54dvar-ch4flux-monthgrid-v1-201610&assets=fossil&color_formula=gamma+r+1.05&colormap_name=purd&rescale=0.0%2C202.8189294183266'],\n 'minzoom': 0,\n 'maxzoom': 24,\n 'bounds': [-180.0, -90.0, 180.0, 90.0],\n 'center': [0.0, 0.0, 0]}\n\n\n\n# Use bbox initial zoom and map\n# Set up a map located w/in event bounds\nimport folium\n\naoi_map_bbox = Map(\n tiles=\"OpenStreetMap\",\n location=[\n 30,-100\n ],\n zoom_start=6.8,\n)\n\nmap_layer = TileLayer(\n tiles=co2_flux_3[\"tiles\"][0],\n attr=\"GHG\", opacity = 0.7\n)\n\nmap_layer.add_to(aoi_map_bbox)\n\naoi_map_bbox\n\nMake this Notebook Trusted to load map: File -> Trust Notebook" + }, + { + "objectID": "user_data_notebooks/tm54dvar-ch4flux-monthgrid-v1_User_Notebook.html#summary", + "href": "user_data_notebooks/tm54dvar-ch4flux-monthgrid-v1_User_Notebook.html#summary", + "title": "TM5-4DVar Isotopic CH₄ Inverse Fluxes", + "section": "Summary", + "text": "Summary\nIn this notebook we have successfully explored, analyzed, and visualized the STAC collection for TM5-4DVar Isotopic CH₄ Inverse Fluxes dataset." + }, + { + "objectID": "user_data_notebooks/oco2geos-co2-daygrid-v10r_User_Notebook.html", + "href": "user_data_notebooks/oco2geos-co2-daygrid-v10r_User_Notebook.html", + "title": "OCO-2 GEOS Column CO₂ Concentrations", + "section": "", + "text": "Identify available dates and temporal frequency of observations for the given collection using the GHGC API /stac endpoint. The collection processed in this notebook is the OCO-2 GEOS Column CO₂ Concentrations data product.\nPass the STAC item into the raster API /stac/tilejson.json endpoint.\nUsing folium.plugins.DualMap, visualize two tiles (side-by-side), allowing time point comparison.\nAfter the visualization, perform zonal statistics for a given polygon." + }, + { + "objectID": "user_data_notebooks/oco2geos-co2-daygrid-v10r_User_Notebook.html#approach", + "href": "user_data_notebooks/oco2geos-co2-daygrid-v10r_User_Notebook.html#approach", + "title": "OCO-2 GEOS Column CO₂ Concentrations", + "section": "", + "text": "Identify available dates and temporal frequency of observations for the given collection using the GHGC API /stac endpoint. The collection processed in this notebook is the OCO-2 GEOS Column CO₂ Concentrations data product.\nPass the STAC item into the raster API /stac/tilejson.json endpoint.\nUsing folium.plugins.DualMap, visualize two tiles (side-by-side), allowing time point comparison.\nAfter the visualization, perform zonal statistics for a given polygon." + }, + { + "objectID": "user_data_notebooks/oco2geos-co2-daygrid-v10r_User_Notebook.html#about-the-data", + "href": "user_data_notebooks/oco2geos-co2-daygrid-v10r_User_Notebook.html#about-the-data", + "title": "OCO-2 GEOS Column CO₂ Concentrations", + "section": "About the Data", + "text": "About the Data\nIn July 2014, NASA successfully launched the first dedicated Earth remote sensing satellite to study atmospheric carbon dioxide (CO₂) from space. The Orbiting Carbon Observatory-2 (OCO-2) is an exploratory science mission designed to collect space-based global measurements of atmospheric CO₂ with the precision, resolution, and coverage needed to characterize sources and sinks (fluxes) on regional scales (≥1000 km). This dataset provides global gridded, daily column-averaged carbon dioxide (XCO₂) concentrations from January 1, 2015 - February 28, 2022. The data are derived from OCO-2 observations that were input to the Goddard Earth Observing System (GEOS) Constituent Data Assimilation System (CoDAS), a modeling and data assimilation system maintained by NASA’s Global Modeling and Assimilation Office (GMAO). Concentrations are measured in moles of carbon dioxide per mole of dry air (mol CO₂/mol dry) at a spatial resolution of 0.5° x 0.625°. Data assimilation synthesizes simulations and observations, adjusting modeled atmospheric constituents like CO₂ to reflect observed values. With the support of NASA’s Carbon Monitoring System (CMS) Program and the OCO Science Team, this dataset was produced as part of the OCO-2 mission which provides the highest quality space-based XCO₂ retrievals to date." + }, + { + "objectID": "user_data_notebooks/oco2geos-co2-daygrid-v10r_User_Notebook.html#querying-the-stac-api", + "href": "user_data_notebooks/oco2geos-co2-daygrid-v10r_User_Notebook.html#querying-the-stac-api", + "title": "OCO-2 GEOS Column CO₂ Concentrations", + "section": "Querying the STAC API", + "text": "Querying the STAC API\n\n# Provide STAC and RASTER API endpoints\nSTAC_API_URL = \"http://ghg.center/api/stac\"\nRASTER_API_URL = \"https://ghg.center/api/raster\"\n\n# Please use the collection name similar to the one used in STAC collection.\n# Name of the collection for OCO-2 GEOS Column CO₂ Concentrations. \ncollection_name = \"oco2geos-co2-daygrid-v10r\"\n\n\n# Fetching the collection from STAC collections using appropriate endpoint.\ncollection = requests.get(f\"{STAC_API_URL}/collections/{collection_name}\").json()\ncollection\n\nExamining the contents of our collection under the temporal variable, we see that the data is available from January 2015 to February 2022. By looking at the dashboard:time density, we can see that these observations are collected daily.\n\ndef get_item_count(collection_id):\n count = 0\n items_url = f\"{STAC_API_URL}/collections/{collection_id}/items\"\n\n while True:\n response = requests.get(items_url)\n\n if not response.ok:\n print(\"error getting items\")\n exit()\n\n stac = response.json()\n count += int(stac[\"context\"].get(\"returned\", 0))\n next = [link for link in stac[\"links\"] if link[\"rel\"] == \"next\"]\n\n if not next:\n break\n items_url = next[0][\"href\"]\n\n return count\n\n\n# Check total number of items available\nnumber_of_items = get_item_count(collection_name)\nitems = requests.get(f\"{STAC_API_URL}/collections/{collection_name}/items?limit={number_of_items}\").json()[\"features\"]\nprint(f\"Found {len(items)} items\")\n\n\n# Examining the first item in the collection\nitems[0]\n\nBelow, we enter minimum and maximum values to provide our upper and lower bounds in rescale_values." + }, + { + "objectID": "user_data_notebooks/oco2geos-co2-daygrid-v10r_User_Notebook.html#exploring-changes-in-column-averaged-xco₂-concentrations-levels-using-the-raster-api", + "href": "user_data_notebooks/oco2geos-co2-daygrid-v10r_User_Notebook.html#exploring-changes-in-column-averaged-xco₂-concentrations-levels-using-the-raster-api", + "title": "OCO-2 GEOS Column CO₂ Concentrations", + "section": "Exploring Changes in Column-Averaged XCO₂ Concentrations Levels Using the Raster API", + "text": "Exploring Changes in Column-Averaged XCO₂ Concentrations Levels Using the Raster API\nIn this notebook, we will explore the temporal impacts of CO₂ emissions. We will visualize the outputs on a map using folium.\n\n# To access the year value from each item more easily, this will let us query more explicitly by year and month (e.g., 2020-02)\nitems = {item[\"properties\"][\"datetime\"]: item for item in items} \nasset_name = \"xco2\" #fossil fuel\n\n\n# Fetching the min and max values for a specific item\nrescale_values = {\"max\":items[list(items.keys())[0]][\"assets\"][asset_name][\"raster:bands\"][0][\"histogram\"][\"max\"], \"min\":items[list(items.keys())[0]][\"assets\"][asset_name][\"raster:bands\"][0][\"histogram\"][\"min\"]}\n\nNow, we will pass the item id, collection name, and rescaling_factor to the Raster API endpoint. We will do this twice, once for 2022-02-08 and again for 2022-01-27, so that we can visualize each event independently.\n\ncolor_map = \"magma\"\noco2_1 = requests.get(\n f\"{RASTER_API_URL}/stac/tilejson.json?collection={items[list(items.keys())[0]]['collection']}&item={items[list(items.keys())[0]]['id']}\"\n f\"&assets={asset_name}\"\n f\"&color_formula=gamma+r+1.05&colormap_name={color_map}\"\n f\"&rescale={rescale_values['min']},{rescale_values['max']}\", \n).json()\noco2_1\n\n\noco2_2 = requests.get(\n f\"{RASTER_API_URL}/stac/tilejson.json?collection={items[list(items.keys())[1]]['collection']}&item={items[list(items.keys())[1]]['id']}\"\n f\"&assets={asset_name}\"\n f\"&color_formula=gamma+r+1.05&colormap_name={color_map}\"\n f\"&rescale={rescale_values['min']},{rescale_values['max']}\", \n).json()\noco2_2" + }, + { + "objectID": "user_data_notebooks/oco2geos-co2-daygrid-v10r_User_Notebook.html#visualizing-daily-column-averaged-xco₂-concentrations", + "href": "user_data_notebooks/oco2geos-co2-daygrid-v10r_User_Notebook.html#visualizing-daily-column-averaged-xco₂-concentrations", + "title": "OCO-2 GEOS Column CO₂ Concentrations", + "section": "Visualizing Daily Column-Averaged XCO₂ Concentrations", + "text": "Visualizing Daily Column-Averaged XCO₂ Concentrations\n\n# We will import folium to map and folium.plugins to allow mapping side-by-side\nimport folium\nimport folium.plugins\n\n# Set initial zoom and center of map for XCO₂ Layer\n# Centre of map [latitude,longitude]\nmap_ = folium.plugins.DualMap(location=(34, -118), zoom_start=6)\n\n\nmap_layer_2020 = TileLayer(\n tiles=oco2_1[\"tiles\"][0],\n attr=\"GHG\",\n opacity=0.5,\n)\nmap_layer_2020.add_to(map_.m1)\n\nmap_layer_2019 = TileLayer(\n tiles=oco2_2[\"tiles\"][0],\n attr=\"GHG\",\n opacity=0.5,\n)\nmap_layer_2019.add_to(map_.m2)\n\n# visualising the map\nmap_" + }, + { + "objectID": "user_data_notebooks/oco2geos-co2-daygrid-v10r_User_Notebook.html#visualizing-the-data-as-a-time-series", + "href": "user_data_notebooks/oco2geos-co2-daygrid-v10r_User_Notebook.html#visualizing-the-data-as-a-time-series", + "title": "OCO-2 GEOS Column CO₂ Concentrations", + "section": "Visualizing the Data as a Time Series", + "text": "Visualizing the Data as a Time Series\nWe can now explore the XCO₂ concentrations time series (January 1, 2015 - February 28, 2022) available for the Dallas, Texas area of the U.S. We can plot the data set using the code below:\n\nimport matplotlib.pyplot as plt\n\nfig = plt.figure(figsize=(20, 10))\n\n\nplt.plot(\n df[\"datetime\"],\n df[\"max\"],\n color=\"red\",\n linestyle=\"-\",\n linewidth=0.5,\n label=\"CO₂ concentrations\",\n)\n\nplt.legend()\nplt.xlabel(\"Years\")\nplt.ylabel(\"CO2 concentrations ppm\")\nplt.title(\"CO₂ concentrations Values for Texas, Dallas (Jan 2015- Feb 2022)\")\n\n\nprint(items[2][\"properties\"][\"datetime\"])\n\n\noco2_3 = requests.get(\n f\"{RASTER_API_URL}/stac/tilejson.json?collection={items[2]['collection']}&item={items[2]['id']}\"\n f\"&assets={asset_name}\"\n f\"&color_formula=gamma+r+1.05&colormap_name={color_map}\"\n f\"&rescale={rescale_values['min']},{rescale_values['max']}\",\n).json()\noco2_3\n\n\n# Use bbox initial zoom and map\n# Set up a map located w/in event bounds\nimport folium\n\naoi_map_bbox = Map(\n tiles=\"OpenStreetMap\",\n location=[\n 30,-100\n ],\n zoom_start=6.8,\n)\n\nmap_layer = TileLayer(\n tiles=oco2_3[\"tiles\"][0],\n attr=\"GHG\", opacity = 0.7\n)\n\nmap_layer.add_to(aoi_map_bbox)\n\naoi_map_bbox" + }, + { + "objectID": "user_data_notebooks/oco2geos-co2-daygrid-v10r_User_Notebook.html#summary", + "href": "user_data_notebooks/oco2geos-co2-daygrid-v10r_User_Notebook.html#summary", + "title": "OCO-2 GEOS Column CO₂ Concentrations", + "section": "Summary", + "text": "Summary\nIn this notebook, we have successfully explored, analyzed, and visualized the STAC collection for OCO-2 GEOS Column CO₂ Concentrations." + }, + { + "objectID": "user_data_notebooks/casagfed-carbonflux-monthgrid-v3_User_Notebook.html", + "href": "user_data_notebooks/casagfed-carbonflux-monthgrid-v3_User_Notebook.html", + "title": "CASA-GFED3 Land Carbon Flux", + "section": "", + "text": "Identify available dates and temporal frequency of observations for the given collection using the GHGC API /stac endpoint. The collection processed in this notebook is the Land-Atmoshpere Carbon Flux data product.\nPass the STAC item into the raster API /stac/tilejson.jsonendpoint.\nUsing folium.plugins.DualMap, visualize two tiles (side-by-side), allowing time point comparison.\nAfter the visualization, perform zonal statistics for a given polygon." + }, + { + "objectID": "user_data_notebooks/casagfed-carbonflux-monthgrid-v3_User_Notebook.html#approach", + "href": "user_data_notebooks/casagfed-carbonflux-monthgrid-v3_User_Notebook.html#approach", + "title": "CASA-GFED3 Land Carbon Flux", + "section": "", + "text": "Identify available dates and temporal frequency of observations for the given collection using the GHGC API /stac endpoint. The collection processed in this notebook is the Land-Atmoshpere Carbon Flux data product.\nPass the STAC item into the raster API /stac/tilejson.jsonendpoint.\nUsing folium.plugins.DualMap, visualize two tiles (side-by-side), allowing time point comparison.\nAfter the visualization, perform zonal statistics for a given polygon." + }, + { + "objectID": "user_data_notebooks/casagfed-carbonflux-monthgrid-v3_User_Notebook.html#about-the-data", + "href": "user_data_notebooks/casagfed-carbonflux-monthgrid-v3_User_Notebook.html#about-the-data", + "title": "CASA-GFED3 Land Carbon Flux", + "section": "About the Data", + "text": "About the Data\nThis dataset presents a variety of carbon flux parameters derived from the Carnegie-Ames-Stanford-Approach – Global Fire Emissions Database version 3 (CASA-GFED3) model. The model’s input data includes air temperature, precipitation, incident solar radiation, a soil classification map, and a number of satellite derived products. All model calculations are driven by analyzed meteorological data from NASA’s Modern-Era Retrospective analysis for Research and Application, Version 2 (MERRA-2). The resulting product provides monthly, global data at 0.5 degree resolution from January 2003 through December 2017. It includes the following carbon flux variables expressed in units of kilograms of carbon per square meter per month (kg Carbon m²/mon) from the following sources: net primary production (NPP), net ecosystem exchange (NEE), heterotrophic respiration (Rh), wildfire emissions (FIRE), and fuel wood burning emissions (FUEL). This product and earlier versions of MERRA-driven CASA-GFED carbon fluxes have been used in a number of atmospheric CO₂ transport studies, and through the support of NASA’s Carbon Monitoring System (CMS), it helps characterize, quantify, understand and predict the evolution of global carbon sources and sinks." + }, + { + "objectID": "user_data_notebooks/casagfed-carbonflux-monthgrid-v3_User_Notebook.html#querying-the-stac-api", + "href": "user_data_notebooks/casagfed-carbonflux-monthgrid-v3_User_Notebook.html#querying-the-stac-api", + "title": "CASA-GFED3 Land Carbon Flux", + "section": "Querying the STAC API", + "text": "Querying the STAC API\n\nimport requests\nfrom folium import Map, TileLayer\nfrom pystac_client import Client\n\n\n# Provide STAC and RASTER API endpoints\nSTAC_API_URL = \"http://ghg.center/api/stac\"\nRASTER_API_URL = \"https://ghg.center/api/raster\"\n\n# Please use the collection name similar to the one used in STAC collection.\n# Name of the collection for CASA GFED Land-Atmosphere Carbon Flux monthly emissions. \ncollection_name = \"casagfed-carbonflux-monthgrid-v3\"\n\n\n# Fetching the collection from STAC collections using appropriate endpoint.\ncollection = requests.get(f\"{STAC_API_URL}/collections/{collection_name}\").json()\ncollection\n\nExamining the contents of our collection under the temporal variable, we see that the data is available from January 2003 to December 2017. By looking at the dashboard:time density, we observe that the periodic frequency of these observations is monthly.\n\ndef get_item_count(collection_id):\n count = 0\n items_url = f\"{STAC_API_URL}/collections/{collection_id}/items\"\n\n while True:\n response = requests.get(items_url)\n\n if not response.ok:\n print(\"error getting items\")\n exit()\n\n stac = response.json()\n count += int(stac[\"context\"].get(\"returned\", 0))\n next = [link for link in stac[\"links\"] if link[\"rel\"] == \"next\"]\n\n if not next:\n break\n items_url = next[0][\"href\"]\n\n return count\n\n\n# Check the total number of items available\nnumber_of_items = get_item_count(collection_name)\nitems = requests.get(f\"{STAC_API_URL}/collections/{collection_name}/items?limit={number_of_items}\").json()[\"features\"]\nprint(f\"Found {len(items)} items\")\n\n\n# Examining the first item in the collection\nitems[0]\n\nBelow, we are entering the minimum and maximum values to provide our upper and lower bounds in rescale_values." + }, + { + "objectID": "user_data_notebooks/casagfed-carbonflux-monthgrid-v3_User_Notebook.html#exploring-changes-in-carbon-flux-levels-using-the-raster-api", + "href": "user_data_notebooks/casagfed-carbonflux-monthgrid-v3_User_Notebook.html#exploring-changes-in-carbon-flux-levels-using-the-raster-api", + "title": "CASA-GFED3 Land Carbon Flux", + "section": "Exploring Changes in Carbon Flux Levels Using the Raster API", + "text": "Exploring Changes in Carbon Flux Levels Using the Raster API\nWe will explore changes in land atmosphere Carbon flux Heterotrophic Respiration. In this notebook, we’ll explore the impacts of these emissions and explore these changes over time. We’ll then visualize the outputs on a map using folium.\n\n# To access the year value from each item more easily, this will let us query more explicity by year and month (e.g., 2020-02)\nitems = {item[\"properties\"][\"start_datetime\"][:7]: item for item in items} \n# rh = Heterotrophic Respiration\nasset_name = \"rh\"\n\n\nrescale_values = {\"max\":items[list(items.keys())[0]][\"assets\"][asset_name][\"raster:bands\"][0][\"histogram\"][\"max\"], \"min\":items[list(items.keys())[0]][\"assets\"][asset_name][\"raster:bands\"][0][\"histogram\"][\"min\"]}\n\nNow, we will pass the item id, collection name, and rescaling_factor to the Raster API endpoint. We will do this twice, once for December 2003 and again for December 2017, so that we can visualize each event independently.\n\ncolor_map = \"purd\" # please select the color ramp from matplotlib library.\ndecember_2003_tile = requests.get(\n f\"{RASTER_API_URL}/stac/tilejson.json?collection={items['2003-12']['collection']}&item={items['2003-12']['id']}\"\n f\"&assets={asset_name}\"\n f\"&color_formula=gamma+r+1.05&colormap_name={color_map}\"\n f\"&rescale={rescale_values['min']},{rescale_values['max']}\", \n).json()\ndecember_2003_tile\n\n\ndecember_2017_tile = requests.get(\n f\"{RASTER_API_URL}/stac/tilejson.json?collection={items['2017-12']['collection']}&item={items['2017-12']['id']}\"\n f\"&assets={asset_name}\"\n f\"&color_formula=gamma+r+1.05&colormap_name={color_map}\"\n f\"&rescale={rescale_values['min']},{rescale_values['max']}\", \n).json()\ndecember_2017_tile" + }, + { + "objectID": "user_data_notebooks/casagfed-carbonflux-monthgrid-v3_User_Notebook.html#visualizing-land-atmosphere-carbon-flux-heterotrophic-respiration", + "href": "user_data_notebooks/casagfed-carbonflux-monthgrid-v3_User_Notebook.html#visualizing-land-atmosphere-carbon-flux-heterotrophic-respiration", + "title": "CASA-GFED3 Land Carbon Flux", + "section": "Visualizing Land-Atmosphere Carbon Flux (Heterotrophic Respiration)", + "text": "Visualizing Land-Atmosphere Carbon Flux (Heterotrophic Respiration)\n\n# We will import folium to map and folium.plugins to allow mapping side-by-side\nimport folium\nimport folium.plugins\n\n# Set initial zoom and center of map for CO₂ Layer\nmap_ = folium.plugins.DualMap(location=(34, -118), zoom_start=6)\n\n# December 2003\nmap_layer_2003 = TileLayer(\n tiles=december_2003_tile[\"tiles\"][0],\n attr=\"GHG\",\n opacity=0.8,\n)\nmap_layer_2003.add_to(map_.m1)\n\n# December 2017\nmap_layer_2017 = TileLayer(\n tiles=december_2017_tile[\"tiles\"][0],\n attr=\"GHG\",\n opacity=0.8,\n)\nmap_layer_2017.add_to(map_.m2)\n\n# visualising the map\nmap_" + }, + { + "objectID": "user_data_notebooks/casagfed-carbonflux-monthgrid-v3_User_Notebook.html#visualizing-the-data-as-a-time-series", + "href": "user_data_notebooks/casagfed-carbonflux-monthgrid-v3_User_Notebook.html#visualizing-the-data-as-a-time-series", + "title": "CASA-GFED3 Land Carbon Flux", + "section": "Visualizing the Data as a Time Series", + "text": "Visualizing the Data as a Time Series\nWe can now explore the Heterotrophic Respiration time series (January 2017 -December 2017) available for the Dallas, Texas area of the U.S. We can plot the data set using the code below:\n\nimport matplotlib.pyplot as plt\n\nfig = plt.figure(figsize=(20, 10))\n\n\nplt.plot(\n df[\"date\"],\n df[\"max\"],\n color=\"red\",\n linestyle=\"-\",\n linewidth=0.5,\n label=\"Max monthly Carbon emissions\",\n)\n\nplt.legend()\nplt.xlabel(\"Years\")\nplt.ylabel(\"kg Carbon/m2/month\")\nplt.title(\"Heterotrophic Respiration Values for Texas, Dallas (2003-2017)\")\n\n\nprint(items[2][\"properties\"][\"start_datetime\"])\n\n\noctober_tile = requests.get(\n f\"{RASTER_API_URL}/stac/tilejson.json?collection={items[2]['collection']}&item={items[2]['id']}\"\n f\"&assets={asset_name}\"\n f\"&color_formula=gamma+r+1.05&colormap_name={color_map}\"\n f\"&rescale={rescale_values['min']},{rescale_values['max']}\",\n).json()\noctober_tile\n\n\n# Use bbox initial zoom and map\n# Set up a map located w/in event bounds\nimport folium\n\naoi_map_bbox = Map(\n tiles=\"OpenStreetMap\",\n location=[\n -22.421460,\n 14.268801,\n ],\n zoom_start=8,\n)\n\nmap_layer = TileLayer(\n tiles=october_tile[\"tiles\"][0],\n attr=\"GHG\", opacity = 0.8\n)\n\nmap_layer.add_to(aoi_map_bbox)\n\naoi_map_bbox" + }, + { + "objectID": "user_data_notebooks/casagfed-carbonflux-monthgrid-v3_User_Notebook.html#summary", + "href": "user_data_notebooks/casagfed-carbonflux-monthgrid-v3_User_Notebook.html#summary", + "title": "CASA-GFED3 Land Carbon Flux", + "section": "Summary", + "text": "Summary\nIn this notebook we have successfully explored, analyzed, and visualized the STAC collection for CASA GFED Land-Atmosphere Carbon Flux." + }, + { + "objectID": "user_data_notebooks/odiac-ffco2-monthgrid-v2022_User_Notebook.html", + "href": "user_data_notebooks/odiac-ffco2-monthgrid-v2022_User_Notebook.html", + "title": "ODIAC Fossil Fuel CO₂ Emissions", + "section": "", + "text": "Identify available dates and temporal frequency of observations for the given collection using the GHGC API /stac endpoint. Collection processed in this notebook is ODIAC CO₂ emissions version 2022.\nPass the STAC item into raster API /stac/tilejson.json endpoint\nWe’ll visualize two tiles (side-by-side) allowing for comparison of each of the time points using folium.plugins.DualMap\nAfter the visualization, we’ll perform zonal statistics for a given polygon." + }, + { + "objectID": "user_data_notebooks/odiac-ffco2-monthgrid-v2022_User_Notebook.html#approach", + "href": "user_data_notebooks/odiac-ffco2-monthgrid-v2022_User_Notebook.html#approach", + "title": "ODIAC Fossil Fuel CO₂ Emissions", + "section": "", + "text": "Identify available dates and temporal frequency of observations for the given collection using the GHGC API /stac endpoint. Collection processed in this notebook is ODIAC CO₂ emissions version 2022.\nPass the STAC item into raster API /stac/tilejson.json endpoint\nWe’ll visualize two tiles (side-by-side) allowing for comparison of each of the time points using folium.plugins.DualMap\nAfter the visualization, we’ll perform zonal statistics for a given polygon." + }, + { + "objectID": "user_data_notebooks/odiac-ffco2-monthgrid-v2022_User_Notebook.html#about-the-data", + "href": "user_data_notebooks/odiac-ffco2-monthgrid-v2022_User_Notebook.html#about-the-data", + "title": "ODIAC Fossil Fuel CO₂ Emissions", + "section": "About the Data", + "text": "About the Data\nThe Open-Data Inventory for Anthropogenic Carbon dioxide (ODIAC) is a high-spatial resolution global emission data product of CO₂ emissions from fossil fuel combustion (Oda and Maksyutov, 2011). ODIAC pioneered the combined use of space-based nighttime light data and individual power plant emission/location profiles to estimate the global spatial extent of fossil fuel CO₂ emissions. With the innovative emission modeling approach, ODIAC achieved the fine picture of global fossil fuel CO₂ emissions at a 1x1km." + }, + { + "objectID": "user_data_notebooks/odiac-ffco2-monthgrid-v2022_User_Notebook.html#querying-the-stac-api", + "href": "user_data_notebooks/odiac-ffco2-monthgrid-v2022_User_Notebook.html#querying-the-stac-api", + "title": "ODIAC Fossil Fuel CO₂ Emissions", + "section": "Querying the STAC API", + "text": "Querying the STAC API\n\nimport requests\nfrom folium import Map, TileLayer\nfrom pystac_client import Client\n\n\n# Provide STAC and RASTER API endpoints\nSTAC_API_URL = \"http://ghg.center/api/stac\"\nRASTER_API_URL = \"https://ghg.center/api/raster\"\n\n#Please use the collection name similar to the one used in STAC collection.\n# Name of the collection for ODIAC dataset. \ncollection_name = \"odiac-ffco2-monthgrid-v2022\"\n\n\n# Fetching the collection from STAC collections using appropriate endpoint.\ncollection = requests.get(f\"{STAC_API_URL}/collections/{collection_name}\").json()\ncollection\n\n{'id': 'odiac-ffco2-monthgrid-v2022',\n 'type': 'Collection',\n 'links': [{'rel': 'items',\n 'type': 'application/geo+json',\n 'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/collections/odiac-ffco2-monthgrid-v2022/items'},\n {'rel': 'parent',\n 'type': 'application/json',\n 'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/'},\n {'rel': 'root',\n 'type': 'application/json',\n 'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/'},\n {'rel': 'self',\n 'type': 'application/json',\n 'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/collections/odiac-ffco2-monthgrid-v2022'}],\n 'title': 'ODIAC Fossil Fuel CO₂ Emissions',\n 'assets': None,\n 'extent': {'spatial': {'bbox': [[-180, -90, 180, 90]]},\n 'temporal': {'interval': [['2000-01-01T00:00:00+00:00',\n '2021-12-31T00:00:00+00:00']]}},\n 'license': 'CC-BY-4.0',\n 'keywords': None,\n 'providers': [{'url': 'https://www.nies.go.jp',\n 'name': 'National Institute for Environmental Studies',\n 'roles': ['producer', 'licensor'],\n 'description': None}],\n 'summaries': {'datetime': ['2000-01-01T00:00:00Z', '2021-12-31T00:00:00Z']},\n 'description': 'The Open-Data Inventory for Anthropogenic Carbon dioxide (ODIAC) is a high-spatial resolution global emission data product of CO₂ emissions from fossil fuel combustion (Oda and Maksyutov, 2011). ODIAC pioneered the combined use of space-based nighttime light data and individual power plant emission/location profiles to estimate the global spatial extent of fossil fuel CO₂ emissions. With the innovative emission modeling approach, ODIAC achieved the fine picture of global fossil fuel CO₂ emissions at a 1x1km.',\n 'item_assets': {'co2-emissions': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'Fossil Fuel CO₂ Emissions',\n 'description': 'CO₂ emissions from fossil fuel combustion, cement production and gas flaring.'}},\n 'stac_version': '1.0.0',\n 'stac_extensions': None,\n 'dashboard:is_periodic': True,\n 'dashboard:time_density': 'month'}\n\n\nExamining the contents of our collection under summaries we see that the data is available from January 2000 to December 2021. By looking at the dashboard:time density we observe that the periodic frequency of these observations is monthly.\n\ndef get_item_count(collection_id):\n count = 0\n items_url = f\"{STAC_API_URL}/collections/{collection_id}/items\"\n\n while True:\n response = requests.get(items_url)\n\n if not response.ok:\n print(\"error getting items\")\n exit()\n\n stac = response.json()\n count += int(stac[\"context\"].get(\"returned\", 0))\n next = [link for link in stac[\"links\"] if link[\"rel\"] == \"next\"]\n\n if not next:\n break\n items_url = next[0][\"href\"]\n\n return count\n\n\n# Check total number of items available\nnumber_of_items = get_item_count(collection_name)\nitems = requests.get(f\"{STAC_API_URL}/collections/{collection_name}/items?limit={number_of_items}\").json()[\"features\"]\nprint(f\"Found {len(items)} items\")\n\nFound 264 items\n\n\n\nitems[0]\n\n{'id': 'odiac-ffco2-monthgrid-v2022-202112',\n 'bbox': [-180.0, -90.0, 180.0, 90.0],\n 'type': 'Feature',\n 'links': [{'rel': 'collection',\n 'type': 'application/json',\n 'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/collections/odiac-ffco2-monthgrid-v2022'},\n {'rel': 'parent',\n 'type': 'application/json',\n 'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/collections/odiac-ffco2-monthgrid-v2022'},\n {'rel': 'root',\n 'type': 'application/json',\n 'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/'},\n {'rel': 'self',\n 'type': 'application/geo+json',\n 'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/collections/odiac-ffco2-monthgrid-v2022/items/odiac-ffco2-monthgrid-v2022-202112'}],\n 'assets': {'co2-emissions': {'href': 's3://ghgc-data-store/odiac-ffco2-monthgrid-v2022/odiac2022_1km_excl_intl_202112.tif',\n 'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'Fossil Fuel CO₂ Emissions',\n 'proj:bbox': [-180.0, -90.0, 180.0, 90.0],\n 'proj:epsg': 4326.0,\n 'proj:shape': [21600.0, 43200.0],\n 'description': 'CO₂ emissions from fossil fuel combustion, cement production and gas flaring.',\n 'raster:bands': [{'scale': 1.0,\n 'nodata': -9999.0,\n 'offset': 0.0,\n 'sampling': 'area',\n 'data_type': 'float32',\n 'histogram': {'max': 2497.01904296875,\n 'min': -138.71914672851562,\n 'count': 11.0,\n 'buckets': [523457.0, 691.0, 95.0, 28.0, 11.0, 2.0, 2.0, 1.0, 0.0, 1.0]},\n 'statistics': {'mean': 0.9804128408432007,\n 'stddev': 14.766693454324674,\n 'maximum': 2497.01904296875,\n 'minimum': -138.71914672851562,\n 'valid_percent': 100.0}}],\n 'proj:geometry': {'type': 'Polygon',\n 'coordinates': [[[-180.0, -90.0],\n [180.0, -90.0],\n [180.0, 90.0],\n [-180.0, 90.0],\n [-180.0, -90.0]]]},\n 'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},\n 'name': 'WGS 84',\n 'type': 'GeographicCRS',\n 'datum': {'name': 'World Geodetic System 1984',\n 'type': 'GeodeticReferenceFrame',\n 'ellipsoid': {'name': 'WGS 84',\n 'semi_major_axis': 6378137.0,\n 'inverse_flattening': 298.257223563}},\n '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',\n 'coordinate_system': {'axis': [{'name': 'Geodetic latitude',\n 'unit': 'degree',\n 'direction': 'north',\n 'abbreviation': 'Lat'},\n {'name': 'Geodetic longitude',\n 'unit': 'degree',\n 'direction': 'east',\n 'abbreviation': 'Lon'}],\n 'subtype': 'ellipsoidal'}},\n 'proj:transform': [0.008333333333333333,\n 0.0,\n -180.0,\n 0.0,\n -0.008333333333333333,\n 90.0,\n 0.0,\n 0.0,\n 1.0]}},\n 'geometry': {'type': 'Polygon',\n 'coordinates': [[[-180, -90],\n [180, -90],\n [180, 90],\n [-180, 90],\n [-180, -90]]]},\n 'collection': 'odiac-ffco2-monthgrid-v2022',\n 'properties': {'end_datetime': '2021-12-31T00:00:00+00:00',\n 'start_datetime': '2021-12-01T00:00:00+00:00'},\n 'stac_version': '1.0.0',\n 'stac_extensions': []}\n\n\nThis makes sense as there are 22 years between 2000 - 2021, with 12 months per year, meaning 264 records in total.\nBelow, we are entering the minimum and maximum values to provide our upper and lower bounds in rescale_values." + }, + { + "objectID": "user_data_notebooks/odiac-ffco2-monthgrid-v2022_User_Notebook.html#exploring-changes-in-carbon-dioxide-co₂-levels-using-the-raster-api", + "href": "user_data_notebooks/odiac-ffco2-monthgrid-v2022_User_Notebook.html#exploring-changes-in-carbon-dioxide-co₂-levels-using-the-raster-api", + "title": "ODIAC Fossil Fuel CO₂ Emissions", + "section": "Exploring Changes in Carbon Dioxide (CO₂) levels using the Raster API", + "text": "Exploring Changes in Carbon Dioxide (CO₂) levels using the Raster API\nWe will explore changes in fossil fuel emissions in urban egions. In this notebook, we’ll explore the impacts of these emissions and explore these changes over time. We’ll then visualize the outputs on a map using folium.\n\n# to access the year value from each item more easily, this will let us query more explicity by year and month (e.g., 2020-02)\nitems = {item[\"properties\"][\"start_datetime\"][:7]: item for item in items} \nasset_name = \"co2-emissions\"\n\n\nrescale_values = {\"max\":items[list(items.keys())[0]][\"assets\"][asset_name][\"raster:bands\"][0][\"histogram\"][\"max\"], \"min\":items[list(items.keys())[0]][\"assets\"][asset_name][\"raster:bands\"][0][\"histogram\"][\"min\"]}\n\nNow we will pass the item id, collection name, and rescaling_factor to the Raster API endpoint. We will do this twice, once for January 2020 and again for January 2000, so that we can visualize each event independently.\n\ncolor_map = \"rainbow\" # please select the color ramp from matplotlib library.\njanuary_2020_tile = requests.get(\n f\"{RASTER_API_URL}/stac/tilejson.json?collection={items['2020-01']['collection']}&item={items['2020-01']['id']}\"\n f\"&assets={asset_name}\"\n f\"&color_formula=gamma+r+1.05&colormap_name={color_map}\"\n f\"&rescale={rescale_values['min']},{rescale_values['max']}\", \n).json()\njanuary_2020_tile\n\n{'tilejson': '2.2.0',\n 'version': '1.0.0',\n 'scheme': 'xyz',\n 'tiles': ['https://1w7hfngnp7.execute-api.us-west-2.amazonaws.com/api/raster/stac/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?collection=odiac-ffco2-monthgrid-v2022&item=odiac-ffco2-monthgrid-v2022-202001&assets=co2-emissions&color_formula=gamma+r+1.05&colormap_name=rainbow&rescale=-138.71914672851562%2C2497.01904296875'],\n 'minzoom': 0,\n 'maxzoom': 24,\n 'bounds': [-180.0, -90.0, 180.0, 90.0],\n 'center': [0.0, 0.0, 0]}\n\n\n\njanuary_2000_tile = requests.get(\n f\"{RASTER_API_URL}/stac/tilejson.json?collection={items['2000-01']['collection']}&item={items['2000-01']['id']}\"\n f\"&assets={asset_name}\"\n f\"&color_formula=gamma+r+1.05&colormap_name={color_map}\"\n f\"&rescale={rescale_values['min']},{rescale_values['max']}\", \n).json()\njanuary_2000_tile\n\n{'tilejson': '2.2.0',\n 'version': '1.0.0',\n 'scheme': 'xyz',\n 'tiles': ['https://1w7hfngnp7.execute-api.us-west-2.amazonaws.com/api/raster/stac/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?collection=odiac-ffco2-monthgrid-v2022&item=odiac-ffco2-monthgrid-v2022-200001&assets=co2-emissions&color_formula=gamma+r+1.05&colormap_name=rainbow&rescale=-138.71914672851562%2C2497.01904296875'],\n 'minzoom': 0,\n 'maxzoom': 24,\n 'bounds': [-180.0, -90.0, 180.0, 90.0],\n 'center': [0.0, 0.0, 0]}" + }, + { + "objectID": "user_data_notebooks/odiac-ffco2-monthgrid-v2022_User_Notebook.html#visualizing-co₂-emissions", + "href": "user_data_notebooks/odiac-ffco2-monthgrid-v2022_User_Notebook.html#visualizing-co₂-emissions", + "title": "ODIAC Fossil Fuel CO₂ Emissions", + "section": "Visualizing CO₂ emissions", + "text": "Visualizing CO₂ emissions\n\n# We'll import folium to map and folium.plugins to allow mapping side-by-side\nimport folium\nimport folium.plugins\n\n# Set initial zoom and center of map for CO₂ Layer\nmap_ = folium.plugins.DualMap(location=(34, -118), zoom_start=6)\n\n# December 2001\nmap_layer_2020 = TileLayer(\n tiles=january_2020_tile[\"tiles\"][0],\n attr=\"GHG\",\n opacity=0.8,\n)\nmap_layer_2020.add_to(map_.m1)\n\n# December 2021\nmap_layer_2000 = TileLayer(\n tiles=january_2000_tile[\"tiles\"][0],\n attr=\"GHG\",\n opacity=0.8,\n)\nmap_layer_2000.add_to(map_.m2)\n\n# visualising the map\nmap_\n\n\nMake this Notebook Trusted to load map: File -> Trust Notebook" + }, + { + "objectID": "user_data_notebooks/odiac-ffco2-monthgrid-v2022_User_Notebook.html#section", + "href": "user_data_notebooks/odiac-ffco2-monthgrid-v2022_User_Notebook.html#section", + "title": "ODIAC Fossil Fuel CO₂ Emissions", + "section": "", + "text": "# Texas, USA\ntexas_aoi = {\n \"type\": \"Feature\",\n \"properties\": {},\n \"geometry\": {\n \"coordinates\": [\n [\n # [13.686159004559698, -21.700046934333145],\n # [13.686159004559698, -23.241974326585833],\n # [14.753560168039911, -23.241974326585833],\n # [14.753560168039911, -21.700046934333145],\n # [13.686159004559698, -21.700046934333145],\n [-95, 29],\n [-95, 33],\n [-104, 33],\n [-104,29],\n [-95, 29]\n ]\n ],\n \"type\": \"Polygon\",\n },\n}\n\n\n# We'll plug in the coordinates for a location\n# central to the study area and a reasonable zoom level\n\nimport folium\n\naoi_map = Map(\n tiles=\"OpenStreetMap\",\n location=[\n 30,-100\n ],\n zoom_start=6,\n)\n\nfolium.GeoJson(texas_aoi, name=\"Texas, USA\").add_to(aoi_map)\naoi_map\n\nMake this Notebook Trusted to load map: File -> Trust Notebook\n\n\n\n# Check total number of items available\nitems = requests.get(\n f\"{STAC_API_URL}/collections/{collection_name}/items?limit=300\"\n).json()[\"features\"]\nprint(f\"Found {len(items)} items\")\n\nFound 264 items\n\n\n\n# Explore one item to see what it contains\nitems[0]\n\n{'id': 'odiac-ffco2-monthgrid-v2022-202112',\n 'bbox': [-180.0, -90.0, 180.0, 90.0],\n 'type': 'Feature',\n 'links': [{'rel': 'collection',\n 'type': 'application/json',\n 'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/collections/odiac-ffco2-monthgrid-v2022'},\n {'rel': 'parent',\n 'type': 'application/json',\n 'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/collections/odiac-ffco2-monthgrid-v2022'},\n {'rel': 'root',\n 'type': 'application/json',\n 'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/'},\n {'rel': 'self',\n 'type': 'application/geo+json',\n 'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/collections/odiac-ffco2-monthgrid-v2022/items/odiac-ffco2-monthgrid-v2022-202112'}],\n 'assets': {'co2-emissions': {'href': 's3://ghgc-data-store/odiac-ffco2-monthgrid-v2022/odiac2022_1km_excl_intl_202112.tif',\n 'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'Fossil Fuel CO₂ Emissions',\n 'proj:bbox': [-180.0, -90.0, 180.0, 90.0],\n 'proj:epsg': 4326.0,\n 'proj:shape': [21600.0, 43200.0],\n 'description': 'CO₂ emissions from fossil fuel combustion, cement production and gas flaring.',\n 'raster:bands': [{'scale': 1.0,\n 'nodata': -9999.0,\n 'offset': 0.0,\n 'sampling': 'area',\n 'data_type': 'float32',\n 'histogram': {'max': 2497.01904296875,\n 'min': -138.71914672851562,\n 'count': 11.0,\n 'buckets': [523457.0, 691.0, 95.0, 28.0, 11.0, 2.0, 2.0, 1.0, 0.0, 1.0]},\n 'statistics': {'mean': 0.9804128408432007,\n 'stddev': 14.766693454324674,\n 'maximum': 2497.01904296875,\n 'minimum': -138.71914672851562,\n 'valid_percent': 100.0}}],\n 'proj:geometry': {'type': 'Polygon',\n 'coordinates': [[[-180.0, -90.0],\n [180.0, -90.0],\n [180.0, 90.0],\n [-180.0, 90.0],\n [-180.0, -90.0]]]},\n 'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},\n 'name': 'WGS 84',\n 'type': 'GeographicCRS',\n 'datum': {'name': 'World Geodetic System 1984',\n 'type': 'GeodeticReferenceFrame',\n 'ellipsoid': {'name': 'WGS 84',\n 'semi_major_axis': 6378137.0,\n 'inverse_flattening': 298.257223563}},\n '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',\n 'coordinate_system': {'axis': [{'name': 'Geodetic latitude',\n 'unit': 'degree',\n 'direction': 'north',\n 'abbreviation': 'Lat'},\n {'name': 'Geodetic longitude',\n 'unit': 'degree',\n 'direction': 'east',\n 'abbreviation': 'Lon'}],\n 'subtype': 'ellipsoidal'}},\n 'proj:transform': [0.008333333333333333,\n 0.0,\n -180.0,\n 0.0,\n -0.008333333333333333,\n 90.0,\n 0.0,\n 0.0,\n 1.0]}},\n 'geometry': {'type': 'Polygon',\n 'coordinates': [[[-180, -90],\n [180, -90],\n [180, 90],\n [-180, 90],\n [-180, -90]]]},\n 'collection': 'odiac-ffco2-monthgrid-v2022',\n 'properties': {'end_datetime': '2021-12-31T00:00:00+00:00',\n 'start_datetime': '2021-12-01T00:00:00+00:00'},\n 'stac_version': '1.0.0',\n 'stac_extensions': []}\n\n\n\n# the bounding box should be passed to the geojson param as a geojson Feature or FeatureCollection\ndef generate_stats(item, geojson):\n result = requests.post(\n f\"{RASTER_API_URL}/cog/statistics\",\n params={\"url\": item[\"assets\"][asset_name][\"href\"]},\n json=geojson,\n ).json()\n return {\n **result[\"properties\"],\n \"start_datetime\": item[\"properties\"][\"start_datetime\"][:7],\n }\n\nWith the function above we can generate the statistics for the AOI.\n\n%%time\nstats = [generate_stats(item, texas_aoi) for item in items]\n\nCPU times: user 7.1 s, sys: 879 ms, total: 7.98 s\nWall time: 5min 7s\n\n\n\nstats[0]\n\n{'statistics': {'b1': {'min': 0.0,\n 'max': 404594.21875,\n 'mean': 12.58496736225329,\n 'count': 466944.0,\n 'sum': 5876475.0,\n 'std': 1022.6532606034702,\n 'median': 0.0,\n 'majority': 0.0,\n 'minority': 0.8238743543624878,\n 'unique': 145410.0,\n 'histogram': [[466931.0, 7.0, 1.0, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0, 1.0],\n [0.0,\n 40459.421875,\n 80918.84375,\n 121378.265625,\n 161837.6875,\n 202297.109375,\n 242756.53125,\n 283215.9375,\n 323675.375,\n 364134.8125,\n 404594.21875]],\n 'valid_percent': 100.0,\n 'masked_pixels': 0.0,\n 'valid_pixels': 466944.0,\n 'percentile_98': 120.89053268432629,\n 'percentile_2': 0.0}},\n 'start_datetime': '2021-12-01T00:00:00+00:00'}\n\n\n\nimport pandas as pd\n\n\ndef clean_stats(stats_json) -> pd.DataFrame:\n df = pd.json_normalize(stats_json)\n df.columns = [col.replace(\"statistics.b1.\", \"\") for col in df.columns]\n df[\"date\"] = pd.to_datetime(df[\"start_datetime\"])\n return df\n\n\ndf = clean_stats(stats)\ndf.head(5)\n\n\n\n\n\n\n\n\nstart_datetime\nmin\nmax\nmean\ncount\nsum\nstd\nmedian\nmajority\nminority\nunique\nhistogram\nvalid_percent\nmasked_pixels\nvalid_pixels\npercentile_98\npercentile_2\ndate\n\n\n\n\n0\n2021-12-01T00:00:00+00:00\n0.0\n404594.21875\n12.584967\n466944.0\n5876475.0\n1022.653261\n0.0\n0.0\n0.823874\n145410.0\n[[466931.0, 7.0, 1.0, 0.0, 1.0, 1.0, 1.0, 0.0,...\n100.0\n0.0\n466944.0\n120.890533\n0.0\n2021-12-01 00:00:00+00:00\n\n\n1\n2021-11-01T00:00:00+00:00\n0.0\n379500.71875\n11.807978\n466944.0\n5513664.5\n959.227452\n0.0\n0.0\n0.773158\n145397.0\n[[466931.0, 7.0, 1.0, 0.0, 1.0, 1.0, 1.0, 0.0,...\n100.0\n0.0\n466944.0\n113.458157\n0.0\n2021-11-01 00:00:00+00:00\n\n\n2\n2021-10-01T00:00:00+00:00\n0.0\n365564.12500\n11.382001\n466944.0\n5314757.0\n924.002397\n0.0\n0.0\n0.745633\n145400.0\n[[466931.0, 7.0, 1.0, 0.0, 1.0, 1.0, 1.0, 0.0,...\n100.0\n0.0\n466944.0\n109.419010\n0.0\n2021-10-01 00:00:00+00:00\n\n\n3\n2021-09-01T00:00:00+00:00\n0.0\n369532.53125\n11.499615\n466944.0\n5369676.0\n934.032133\n0.0\n0.0\n0.753175\n145405.0\n[[466931.0, 7.0, 1.0, 0.0, 1.0, 1.0, 1.0, 0.0,...\n100.0\n0.0\n466944.0\n110.491998\n0.0\n2021-09-01 00:00:00+00:00\n\n\n4\n2021-08-01T00:00:00+00:00\n0.0\n412252.34375\n12.818087\n466944.0\n5985329.0\n1042.009448\n0.0\n0.0\n0.839226\n145410.0\n[[466931.0, 7.0, 1.0, 0.0, 1.0, 1.0, 1.0, 0.0,...\n100.0\n0.0\n466944.0\n122.994610\n0.0\n2021-08-01 00:00:00+00:00" + }, + { + "objectID": "user_data_notebooks/odiac-ffco2-monthgrid-v2022_User_Notebook.html#visualizing-the-data-as-a-time-series", + "href": "user_data_notebooks/odiac-ffco2-monthgrid-v2022_User_Notebook.html#visualizing-the-data-as-a-time-series", + "title": "ODIAC Fossil Fuel CO₂ Emissions", + "section": "Visualizing the Data as a Time Series", + "text": "Visualizing the Data as a Time Series\nWe can now explore the ODIAC fossil fuel emission time series available (January 2000 -December 2021) for the Texas, Dallas area of USA. We can plot the data set using the code below:\n\nimport matplotlib.pyplot as plt\n\nfig = plt.figure(figsize=(20, 10))\n\n\nplt.plot(\n df[\"date\"],\n df[\"max\"],\n color=\"red\",\n linestyle=\"-\",\n linewidth=0.5,\n label=\"Max monthly CO₂ emissions\",\n)\n\nplt.legend()\nplt.xlabel(\"Years\")\nplt.ylabel(\"CO2 emissions gC/m2/d\")\nplt.title(\"CO2 emission Values for Texas, Dallas (2000-2021)\")\n\nText(0.5, 1.0, 'CO2 emission Values for Texas, Dallas (2000-2021)')\n\n\n\n\n\n\nprint(items[2][\"properties\"][\"start_datetime\"])\n\n2021-10-01T00:00:00+00:00\n\n\n\noctober_tile = requests.get(\n f\"{RASTER_API_URL}/stac/tilejson.json?collection={items[2]['collection']}&item={items[2]['id']}\"\n f\"&assets={asset_name}\"\n f\"&color_formula=gamma+r+1.05&colormap_name={color_map}\"\n f\"&rescale={rescale_values['min']},{rescale_values['max']}\",\n).json()\noctober_tile\n\n{'tilejson': '2.2.0',\n 'version': '1.0.0',\n 'scheme': 'xyz',\n 'tiles': ['https://1w7hfngnp7.execute-api.us-west-2.amazonaws.com/api/raster/stac/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?collection=odiac-ffco2-monthgrid-v2022&item=odiac-ffco2-monthgrid-v2022-202110&assets=co2-emissions&color_formula=gamma+r+1.05&colormap_name=rainbow&rescale=-138.71914672851562%2C2497.01904296875'],\n 'minzoom': 0,\n 'maxzoom': 24,\n 'bounds': [-180.0, -90.0, 180.0, 90.0],\n 'center': [0.0, 0.0, 0]}\n\n\n\n# Use bbox initial zoom and map\n# Set up a map located w/in event bounds\nimport folium\n\naoi_map_bbox = Map(\n tiles=\"OpenStreetMap\",\n location=[\n 30,-100\n ],\n zoom_start=8,\n)\n\nmap_layer = TileLayer(\n tiles=october_tile[\"tiles\"][0],\n attr=\"GHG\", opacity = 0.5\n)\n\nmap_layer.add_to(aoi_map_bbox)\n\naoi_map_bbox\n\nMake this Notebook Trusted to load map: File -> Trust Notebook" + }, + { + "objectID": "user_data_notebooks/odiac-ffco2-monthgrid-v2022_User_Notebook.html#summary", + "href": "user_data_notebooks/odiac-ffco2-monthgrid-v2022_User_Notebook.html#summary", + "title": "ODIAC Fossil Fuel CO₂ Emissions", + "section": "Summary", + "text": "Summary\nIn this notebook we have successfully explored, analysed and visualized STAC collecetion for ODIAC C02 fossisl fuel emission (2022)." + }, + { + "objectID": "user_data_notebooks/epa-ch4emission-grid-v2express_User_Notebook.html", + "href": "user_data_notebooks/epa-ch4emission-grid-v2express_User_Notebook.html", + "title": "Gridded Anthropogenic Methane Emissions Inventory", + "section": "", + "text": "Identify available dates and temporal frequency of observations for the given collection using the GHGC API /stac endpoint. The collection processed in this notebook is the gridded methane emissions data product.\nPass the STAC item into the raster API /stac/tilejson.jsonendpoint.\nUsing folium.plugins.DualMap, we will visualize two tiles (side-by-side), allowing us to compare time points.\nAfter the visualization, we will perform zonal statistics for a given polygon." + }, + { + "objectID": "user_data_notebooks/epa-ch4emission-grid-v2express_User_Notebook.html#approach", + "href": "user_data_notebooks/epa-ch4emission-grid-v2express_User_Notebook.html#approach", + "title": "Gridded Anthropogenic Methane Emissions Inventory", + "section": "", + "text": "Identify available dates and temporal frequency of observations for the given collection using the GHGC API /stac endpoint. The collection processed in this notebook is the gridded methane emissions data product.\nPass the STAC item into the raster API /stac/tilejson.jsonendpoint.\nUsing folium.plugins.DualMap, we will visualize two tiles (side-by-side), allowing us to compare time points.\nAfter the visualization, we will perform zonal statistics for a given polygon." + }, + { + "objectID": "user_data_notebooks/epa-ch4emission-grid-v2express_User_Notebook.html#about-the-data", + "href": "user_data_notebooks/epa-ch4emission-grid-v2express_User_Notebook.html#about-the-data", + "title": "Gridded Anthropogenic Methane Emissions Inventory", + "section": "About the Data", + "text": "About the Data\nThe gridded EPA U.S. anthropogenic methane greenhouse gas inventory (gridded GHGI) includes spatially disaggregated (0.1 deg x 0.1 deg or approximately 10 x 10 km resolution) maps of annual anthropogenic methane emissions (for the contiguous United States (CONUS), consistent with national annual U.S. anthropogenic methane emissions reported in the U.S. EPA Inventory of U.S. Greenhouse Gas Emissions and Sinks (U.S. GHGI). This V2 Express Extension dataset contains methane emissions provided as fluxes, in units of molecules of methane per square cm per second, for over 25 individual emission source categories, including those from agriculture, petroleum and natural gas systems, coal mining, and waste. The data have been converted from their original NetCDF format to Cloud-Optimized GeoTIFF (COG) for use in the US GHG Center, thereby enabling user exploration of spatial anthropogenic methane emissions and their trends." + }, + { + "objectID": "user_data_notebooks/epa-ch4emission-grid-v2express_User_Notebook.html#querying-the-stac-api", + "href": "user_data_notebooks/epa-ch4emission-grid-v2express_User_Notebook.html#querying-the-stac-api", + "title": "Gridded Anthropogenic Methane Emissions Inventory", + "section": "Querying the STAC API", + "text": "Querying the STAC API\n\nimport requests\nfrom folium import Map, TileLayer\nfrom pystac_client import Client\n\n\n# Provide STAC and RASTER API endpoints\nSTAC_API_URL = \"http://ghg.center/api/stac\"\nRASTER_API_URL = \"https://ghg.center/api/raster\"\n\n# Please use the collection name similar to the one used in STAC collection.\n\n# Name of the collection for gridded methane dataset. \ncollection_name = \"epa-ch4emission-yeargrid-v2\"\n\n\n# Fetching the collection from STAC collections using appropriate endpoint.\ncollection = requests.get(f\"{STAC_API_URL}/collections/{collection_name}\").json()\ncollection\n\nExamining the contents of our collection under the temporal variable, we see that the data is available from January 2012 to December 2020. By looking at the dashboard:time density, we observe that the periodic frequency of these observations is yearly.\n\ndef get_item_count(collection_id):\n count = 0\n items_url = f\"{STAC_API_URL}/collections/{collection_id}/items\"\n\n while True:\n response = requests.get(items_url)\n\n if not response.ok:\n print(\"error getting items\")\n exit()\n\n stac = response.json()\n count += int(stac[\"context\"].get(\"returned\", 0))\n next = [link for link in stac[\"links\"] if link[\"rel\"] == \"next\"]\n\n if not next:\n break\n items_url = next[0][\"href\"]\n\n return count\n\n\n# Check total number of items available\nnumber_of_items = get_item_count(collection_name)\nitems = requests.get(f\"{STAC_API_URL}/collections/{collection_name}/items?limit={number_of_items}\").json()[\"features\"]\nprint(f\"Found {len(items)} items\")\n\n\n# Examining the first item in the collection\nitems[0]\n\nThis makes sense as there are 9 years between 2012 - 2020, meaning 9 records in total.\nBelow, we enter minimum and maximum values to provide our upper and lower bounds in rescale_values." + }, + { + "objectID": "user_data_notebooks/epa-ch4emission-grid-v2express_User_Notebook.html#exploring-changes-in-methane-ch4-levels-using-the-raster-api", + "href": "user_data_notebooks/epa-ch4emission-grid-v2express_User_Notebook.html#exploring-changes-in-methane-ch4-levels-using-the-raster-api", + "title": "Gridded Anthropogenic Methane Emissions Inventory", + "section": "Exploring Changes in Methane (CH4) Levels Using the Raster API", + "text": "Exploring Changes in Methane (CH4) Levels Using the Raster API\nIn this notebook, we will explore the impacts of methane emissions and by examining changes over time in urban regions. We will visualize the outputs on a map using folium.\n\n# To access the year value from each item more easily, this will let us query more explicity by year and month (e.g., 2020-02)\nitems = {item[\"properties\"][\"datetime\"][:7]: item for item in items} \nasset_name = \"surface-coal\"\n\n\n# Fetching the min and max values for a specific item\nrescale_values = {\"max\":items[list(items.keys())[0]][\"assets\"][asset_name][\"raster:bands\"][0][\"histogram\"][\"max\"], \"min\":items[list(items.keys())[0]][\"assets\"][asset_name][\"raster:bands\"][0][\"histogram\"][\"min\"]}\n\n\nitems\n\nNow, we will pass the item id, collection name, and rescaling_factor to the Raster API endpoint. We will do this twice, once for January 2018 and again for January 2012, so that we can visualize each event independently.\n\ncolor_map = \"rainbow\" # please select the color ramp from matplotlib library.\njanuary_2018_tile = requests.get(\n f\"{RASTER_API_URL}/stac/tilejson.json?collection={items['2018-01']['collection']}&item={items['2018-01']['id']}\"\n f\"&assets={asset_name}\"\n f\"&color_formula=gamma+r+1.05&colormap_name={color_map}\"\n f\"&rescale={rescale_values['min']},{rescale_values['max']}\", \n).json()\njanuary_2018_tile\n\n\njanuary_2012_tile = requests.get(\n f\"{RASTER_API_URL}/stac/tilejson.json?collection={items['2012-01']['collection']}&item={items['2012-01']['id']}\"\n f\"&assets={asset_name}\"\n f\"&color_formula=gamma+r+1.05&colormap_name={color_map}\"\n f\"&rescale={rescale_values['min']},{rescale_values['max']}\", \n).json()\njanuary_2012_tile" + }, + { + "objectID": "user_data_notebooks/epa-ch4emission-grid-v2express_User_Notebook.html#visualizing-ch₄-emissions", + "href": "user_data_notebooks/epa-ch4emission-grid-v2express_User_Notebook.html#visualizing-ch₄-emissions", + "title": "Gridded Anthropogenic Methane Emissions Inventory", + "section": "Visualizing CH₄ emissions", + "text": "Visualizing CH₄ emissions\n\n# We will import folium to map and folium.plugins to allow side-by-side mapping\nimport folium\nimport folium.plugins\n\n# Set initial zoom and center of map for CH₄ Layer\n# Centre of map [latitude,longitude]\nmap_ = folium.plugins.DualMap(location=(34, -118), zoom_start=6)\n\n# January 2018\nmap_layer_2018 = TileLayer(\n tiles=january_2018_tile[\"tiles\"][0],\n attr=\"GHG\",\n opacity=0.7,\n)\nmap_layer_2018.add_to(map_.m1)\n\n# January 2012\nmap_layer_2012 = TileLayer(\n tiles=january_2012_tile[\"tiles\"][0],\n attr=\"GHG\",\n opacity=0.7,\n)\nmap_layer_2012.add_to(map_.m2)\n\n# visualising the map\nmap_" + }, + { + "objectID": "user_data_notebooks/epa-ch4emission-grid-v2express_User_Notebook.html#visualizing-the-data-as-a-time-series", + "href": "user_data_notebooks/epa-ch4emission-grid-v2express_User_Notebook.html#visualizing-the-data-as-a-time-series", + "title": "Gridded Anthropogenic Methane Emissions Inventory", + "section": "Visualizing the Data as a Time Series", + "text": "Visualizing the Data as a Time Series\nWe can now explore the gridded methane emission (Domestic Wastewater Treatment & Discharge (5D)) time series (January 2000 -December 2021) available for the Dallas, Texas area of the U.S. We can plot the data set using the code below:\n\nimport matplotlib.pyplot as plt\n\nfig = plt.figure(figsize=(20, 10))\n\n\nplt.plot(\n df[\"date\"],\n df[\"max\"],\n color=\"red\",\n linestyle=\"-\",\n linewidth=0.5,\n label=\"Max monthly CO₂ emissions\",\n)\n\nplt.legend()\nplt.xlabel(\"Years\")\nplt.ylabel(\"CH4 emissions Molecules CH₄/cm²/s\")\nplt.title(\"CH4 gridded methane emission from Domestic Wastewater Treatment & Discharge (5D) for Texas, Dallas (2012-202)\")\n\n\nprint(items[2][\"properties\"][\"datetime\"])\n\n\ntile_2016 = requests.get(\n f\"{RASTER_API_URL}/stac/tilejson.json?collection={items[2]['collection']}&item={items[2]['id']}\"\n f\"&assets={asset_name}\"\n f\"&color_formula=gamma+r+1.05&colormap_name={color_map}\"\n f\"&rescale={rescale_values['min']},{rescale_values['max']}\",\n).json()\ntile_2016\n\n\n# Use bbox initial zoom and map\n# Set up a map located w/in event bounds\nimport folium\n\naoi_map_bbox = Map(\n tiles=\"OpenStreetMap\",\n location=[\n 30,-100\n ],\n zoom_start=8,\n)\n\nmap_layer = TileLayer(\n tiles=tile_2016[\"tiles\"][0],\n attr=\"GHG\", opacity = 0.5\n)\n\nmap_layer.add_to(aoi_map_bbox)\n\naoi_map_bbox" + }, + { + "objectID": "user_data_notebooks/epa-ch4emission-grid-v2express_User_Notebook.html#summary", + "href": "user_data_notebooks/epa-ch4emission-grid-v2express_User_Notebook.html#summary", + "title": "Gridded Anthropogenic Methane Emissions Inventory", + "section": "Summary", + "text": "Summary\nIn this notebook we have successfully explored, analyzed, and visualized the STAC collection for gridded methane emissions." + }, + { + "objectID": "processing_and_verification_reports/odiac-ffco2-monthgrid-v2022_Processing and Verification Report.html", + "href": "processing_and_verification_reports/odiac-ffco2-monthgrid-v2022_Processing and Verification Report.html", + "title": "ODIAC Fossil Fuel CO₂ Emissions", + "section": "", + "text": "This browser does not support PDFs. Please download the PDF to view it: Download PDF.\n\n\n\n\n\n\n Back to top" + }, + { + "objectID": "processing_and_verification_reports/epa-ch4emission-grid-v2express_Processing and Verification Report.html", + "href": "processing_and_verification_reports/epa-ch4emission-grid-v2express_Processing and Verification Report.html", + "title": "Gridded Anthropogenic Methane Emissions Inventory", + "section": "", + "text": "This browser does not support PDFs. Please download the PDF to view it: Download PDF.\n\n\n\n\n\n\n Back to top" + }, + { + "objectID": "processing_and_verification_reports/oco2-mip-co2budget-yeargrid-v1_Processing and Verification Report.html", + "href": "processing_and_verification_reports/oco2-mip-co2budget-yeargrid-v1_Processing and Verification Report.html", + "title": "OCO-2 MIP Top-Down CO₂ Budgets", + "section": "", + "text": "This browser does not support PDFs. Please download the PDF to view it: Download PDF.\n\n\n\n\n\n\n Back to top" + }, + { + "objectID": "processing_and_verification_reports/gosat-based-ch4budget-yeargrid-v1_Processing and Verification Report.html", + "href": "processing_and_verification_reports/gosat-based-ch4budget-yeargrid-v1_Processing and Verification Report.html", + "title": "GOSAT-based Top-down Total and Natural Methane Emissions", + "section": "", + "text": "This browser does not support PDFs. Please download the PDF to view it: Download PDF.\n\n\n\n\n\n\n Back to top" + }, + { + "objectID": "processing_and_verification_reports/casagfed-carbonflux-monthgrid-v3_Processing and Verification Report.html", + "href": "processing_and_verification_reports/casagfed-carbonflux-monthgrid-v3_Processing and Verification Report.html", + "title": "CASA-GFED3 Land Carbon Flux", + "section": "", + "text": "This browser does not support PDFs. Please download the PDF to view it: Download PDF.\n\n\n\n\n\n\n Back to top" + }, + { + "objectID": "processing_and_verification_reports/sedac-popdensity-yeargrid5yr-v4.11_Processing and Verification Report.html", + "href": "processing_and_verification_reports/sedac-popdensity-yeargrid5yr-v4.11_Processing and Verification Report.html", + "title": "SEDAC Gridded World Population Density", + "section": "", + "text": "This browser does not support PDFs. Please download the PDF to view it: Download PDF.\n\n\n\n\n\n\n Back to top" + }, + { + "objectID": "cog_transformation/casagfed-carbonflux-monthgrid-v3.html", + "href": "cog_transformation/casagfed-carbonflux-monthgrid-v3.html", + "title": "CASA-GFED3 Land Carbon Flux", + "section": "", + "text": "Code used to transform CASA-GFED3 Land Carbon Flux data from netcdf to Cloud Optimized Geotiff.\n\nimport os\nimport xarray\nimport re\nimport pandas as pd\nimport json\nimport tempfile\nimport boto3\n\n\nsession = boto3.session.Session()\ns3_client = session.client(\"s3\")\nbucket_name = \"ghgc-data-store-dev\"\ndate_fmt = \"%Y%m\"\n\nfiles_processed = pd.DataFrame(columns=[\"file_name\", \"COGs_created\"])\nfor name in os.listdir(\"geoscarb\"):\n xds = xarray.open_dataset(\n f\"geoscarb/{name}\",\n engine=\"netcdf4\",\n )\n xds = xds.assign_coords(\n longitude=(((xds.longitude + 180) % 360) - 180)\n ).sortby(\"longitude\")\n variable = [var for var in xds.data_vars]\n\n for time_increment in range(0, len(xds.time)):\n for var in variable[:-1]:\n filename = name.split(\"/ \")[-1]\n filename_elements = re.split(\"[_ .]\", filename)\n data = getattr(xds.isel(time=time_increment), var)\n data = data.isel(latitude=slice(None, None, -1))\n data.rio.set_spatial_dims(\"longitude\", \"latitude\", inplace=True)\n data.rio.write_crs(\"epsg:4326\", inplace=True)\n\n date = data.time.dt.strftime(date_fmt).item(0)\n # # insert date of generated COG into filename\n filename_elements.pop()\n filename_elements[-1] = date\n filename_elements.insert(2, var)\n cog_filename = \"_\".join(filename_elements)\n # # add extension\n cog_filename = f\"{cog_filename}.tif\"\n\n with tempfile.NamedTemporaryFile() as temp_file:\n data.rio.to_raster(\n temp_file.name,\n driver=\"COG\",\n )\n s3_client.upload_file(\n Filename=temp_file.name,\n Bucket=bucket_name,\n Key=f\"GEOS-Carbs/{cog_filename}\",\n )\n\n files_processed = files_processed._append(\n {\"file_name\": name, \"COGs_created\": cog_filename},\n ignore_index=True,\n )\n\n print(f\"Generated and saved COG: {cog_filename}\")\n\nwith tempfile.NamedTemporaryFile(mode=\"w+\") as fp:\n json.dump(xds.attrs, fp)\n json.dump({\"data_dimensions\": dict(xds.dims)}, fp)\n json.dump({\"data_variables\": list(xds.data_vars)}, fp)\n fp.flush()\n\n s3_client.upload_file(\n Filename=fp.name,\n Bucket=bucket_name,\n Key=\"GEOS-Carbs/metadata.json\",\n )\nfiles_processed.to_csv(\n f\"s3://{bucket_name}/GEOS-Carbs/files_converted.csv\",\n)\nprint(\"Done generating COGs\")\n\n\n\n\n Back to top" + }, + { + "objectID": "cog_transformation/eccodarwin-co2flux-monthgrid-v5.html", + "href": "cog_transformation/eccodarwin-co2flux-monthgrid-v5.html", + "title": "Air-Sea CO₂ Flux, ECCO-Darwin Model v5", + "section": "", + "text": "This script was used to transform the Air-Sea CO₂ Flux, ECCO-Darwin Mode dataset from netCDF to Cloud Optimized GeoTIFF (COG) format for display in the Greenhouse Gas (GHG) Center.\n\nimport os\nimport xarray\nimport re\nimport pandas as pd\nimport json\nimport tempfile\nimport boto3\nimport rasterio\nfrom datetime import datetime\nfrom dateutil.relativedelta import relativedelta\n\n\nsession = boto3.session.Session()\ns3_client = session.client(\"s3\")\n\nbucket_name = (\n \"ghgc-data-store-dev\" # S3 bucket where the COGs are stored after transformation\n)\nFOLDER_NAME = \"ecco-darwin\"\ns3_fol_name = \"ecco_darwin\"\n\n# Reading the raw netCDF files from local machine\nfiles_processed = pd.DataFrame(\n columns=[\"file_name\", \"COGs_created\"]\n) # A dataframe to keep track of the files that we have transformed into COGs\nfor name in os.listdir(FOLDER_NAME):\n xds = xarray.open_dataset(\n f\"{FOLDER_NAME}/{name}\",\n engine=\"netcdf4\",\n )\n xds = xds.rename({\"y\": \"latitude\", \"x\": \"longitude\"})\n xds = xds.assign_coords(longitude=((xds.longitude / 1440) * 360) - 180).sortby(\n \"longitude\"\n )\n xds = xds.assign_coords(latitude=((xds.latitude / 721) * 180) - 90).sortby(\n \"latitude\"\n )\n\n variable = [var for var in xds.data_vars]\n\n for time_increment in xds.time.values:\n for var in variable[2:]:\n filename = name.split(\"/ \")[-1]\n filename_elements = re.split(\"[_ .]\", filename)\n data = xds[var]\n\n data = data.reindex(latitude=list(reversed(data.latitude)))\n data.rio.set_spatial_dims(\"longitude\", \"latitude\", inplace=True)\n data.rio.write_crs(\"epsg:4326\", inplace=True)\n\n # generate COG\n COG_PROFILE = {\"driver\": \"COG\", \"compress\": \"DEFLATE\"}\n\n filename_elements.pop()\n filename_elements[-1] = filename_elements[-2] + filename_elements[-1]\n filename_elements.pop(-2)\n # # insert date of generated COG into filename\n cog_filename = \"_\".join(filename_elements)\n # # add extension\n cog_filename = f\"{cog_filename}.tif\"\n\n with tempfile.NamedTemporaryFile() as temp_file:\n data.rio.to_raster(temp_file.name, **COG_PROFILE)\n s3_client.upload_file(\n Filename=temp_file.name,\n Bucket=bucket_name,\n Key=f\"{s3_fol_name}/{cog_filename}\",\n )\n\n files_processed = files_processed._append(\n {\"file_name\": name, \"COGs_created\": cog_filename},\n ignore_index=True,\n )\n del data\n\n print(f\"Generated and saved COG: {cog_filename}\")\n\n# Generate the json file with the metadata that is present in the netCDF files.\nwith tempfile.NamedTemporaryFile(mode=\"w+\") as fp:\n json.dump(xds.attrs, fp)\n json.dump({\"data_dimensions\": dict(xds.dims)}, fp)\n json.dump({\"data_variables\": list(xds.data_vars)}, fp)\n fp.flush()\n\n s3_client.upload_file(\n Filename=fp.name,\n Bucket=bucket_name,\n Key=\"s3_fol_name/metadata.json\",\n )\n\n# A csv file to store the names of all the files converted.\nfiles_processed.to_csv(\n f\"s3://{bucket_name}/{s3_fol_name}/files_converted.csv\",\n)\nprint(\"Done generating COGs\")\n\n\n\n\n Back to top" + }, + { + "objectID": "cog_transformation/epa-ch4emission-grid-v2express.html", + "href": "cog_transformation/epa-ch4emission-grid-v2express.html", + "title": "Gridded Anthropogenic Methane Emissions Inventory", + "section": "", + "text": "This script was used to transform the Gridded Anthropogenic Methane Emissions Inventory monthly dataset from netCDF to Cloud Optimized GeoTIFF (COG) format for display in the Greenhouse Gas (GHG) Center.\n\nimport os\nimport xarray\nimport re\nimport pandas as pd\nimport json\nimport tempfile\nimport boto3\nfrom datetime import datetime\nimport numpy as np\n\nfrom dotenv import load_dotenv\n\nload_dotenv()\n\nTrue\n\n\n\n# session = boto3.session.Session()\nsession = boto3.Session(\n aws_access_key_id=os.environ.get(\"AWS_ACCESS_KEY_ID\"),\n aws_secret_access_key=os.environ.get(\"AWS_SECRET_ACCESS_KEY\"),\n aws_session_token=os.environ.get(\"AWS_SESSION_TOKEN\"),\n)\ns3_client = session.client(\"s3\")\nbucket_name = \"ghgc-data-store-dev\" # S3 bucket where the COGs are stored after transformation\nFOLDER_NAME = \"../data/epa_emissions_express_extension\"\ns3_folder_name = \"epa_express_extension_Tg_km2_yr\"\n# raw gridded data [molec/cm2/s] * 1/6.022x10^23 [molec/mol] * 16.04x10^-6 [ Mg/mol] * 366 [days/yr] * 1x10^10 [cm2/km2]\n\nfiles_processed = pd.DataFrame(columns=[\"file_name\", \"COGs_created\"]) # A dataframe to keep track of the files that we have transformed into COGs\n\n# Reading the raw netCDF files from local machine\nfor name in os.listdir(FOLDER_NAME):\n xds = xarray.open_dataset(f\"{FOLDER_NAME}/{name}\", engine=\"netcdf4\")\n xds = xds.assign_coords(lon=(((xds.lon + 180) % 360) - 180)).sortby(\"lon\")\n variable = [var for var in xds.data_vars]\n filename = name.split(\"/ \")[-1]\n filename_elements = re.split(\"[_ .]\", filename)\n start_time = datetime(int(filename_elements[-2]), 1, 1)\n\n for time_increment in range(0, len(xds.time)):\n for var in variable:\n filename = name.split(\"/ \")[-1]\n filename_elements = re.split(\"[_ .]\", filename)\n data = getattr(xds.isel(time=time_increment), var)\n data.values[data.values==0] = np.nan\n # data = data*((1/(6.022*pow(10,23)))*(16.04*pow(10,-6))*366*pow(10,10))\n data = data*(9.74*pow(10,-11))\n data.values[data.values<=np.nanpercentile(data.values, 50)] = np.nan\n data = data.fillna(-9999)\n data = data.isel(lat=slice(None, None, -1))\n data.rio.set_spatial_dims(\"lon\", \"lat\", inplace=True)\n data.rio.write_crs(\"epsg:4326\", inplace=True)\n\n # # insert date of generated COG into filename\n filename_elements.pop()\n filename_elements[-1] = start_time.strftime(\"%Y\")\n filename_elements.insert(2, var)\n cog_filename = \"_\".join(filename_elements)\n # # add extension\n cog_filename = f\"{cog_filename}.tif\"\n\n with tempfile.NamedTemporaryFile() as temp_file:\n data.rio.to_raster(\n temp_file.name,\n driver=\"COG\",\n )\n s3_client.upload_file(\n Filename=temp_file.name,\n Bucket=bucket_name,\n Key=f\"{s3_folder_name}/{cog_filename}\",\n )\n\n files_processed = files_processed._append(\n {\"file_name\": name, \"COGs_created\": cog_filename},\n ignore_index=True,\n )\n\n print(f\"Generated and saved COG: {cog_filename}\")\n\n# Generate the json file with the metadata that is present in the netCDF files.\nwith tempfile.NamedTemporaryFile(mode=\"w+\") as fp:\n json.dump(xds.attrs, fp)\n json.dump({\"data_dimensions\": dict(xds.dims)}, fp)\n json.dump({\"data_variables\": list(xds.data_vars)}, fp)\n fp.flush()\n\n s3_client.upload_file(\n Filename=fp.name,\n Bucket=bucket_name,\n Key=f\"{s3_folder_name}/metadata.json\",\n )\n\n# creating the csv file with the names of files transformed.\nfiles_processed.to_csv(\n f\"s3://{bucket_name}/{s3_folder_name}/files_converted.csv\",\n)\nprint(\"Done generating COGs\")\n\nGenerated and saved COG: Express_Extension_emi_ch4_1A_Combustion_Mobile_Gridded_GHGI_Methane_v2_2015.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1A_Combustion_Stationary_Gridded_GHGI_Methane_v2_2015.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B1a_Abandoned_Coal_Gridded_GHGI_Methane_v2_2015.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B1a_Surface_Coal_Gridded_GHGI_Methane_v2_2015.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B1a_Underground_Coal_Gridded_GHGI_Methane_v2_2015.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Exploration_Gridded_GHGI_Methane_v2_2015.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Production_Gridded_GHGI_Methane_v2_2015.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Refining_Gridded_GHGI_Methane_v2_2015.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Transport_Gridded_GHGI_Methane_v2_2015.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2ab_Abandoned_Oil_Gas_Gridded_GHGI_Methane_v2_2015.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Distribution_Gridded_GHGI_Methane_v2_2015.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Exploration_Gridded_GHGI_Methane_v2_2015.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Processing_Gridded_GHGI_Methane_v2_2015.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Production_Gridded_GHGI_Methane_v2_2015.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_TransmissionStorage_Gridded_GHGI_Methane_v2_2015.tif\nGenerated and saved COG: Express_Extension_emi_ch4_2B8_Industry_Petrochemical_Gridded_GHGI_Methane_v2_2015.tif\nGenerated and saved COG: Express_Extension_emi_ch4_2C2_Industry_Ferroalloy_Gridded_GHGI_Methane_v2_2015.tif\nGenerated and saved COG: Express_Extension_emi_ch4_3A_Enteric_Fermentation_Gridded_GHGI_Methane_v2_2015.tif\nGenerated and saved COG: Express_Extension_emi_ch4_3B_Manure_Management_Gridded_GHGI_Methane_v2_2015.tif\nGenerated and saved COG: Express_Extension_emi_ch4_3C_Rice_Cultivation_Gridded_GHGI_Methane_v2_2015.tif\nGenerated and saved COG: Express_Extension_emi_ch4_3F_Field_Burning_Gridded_GHGI_Methane_v2_2015.tif\nGenerated and saved COG: Express_Extension_emi_ch4_5A1_Landfills_Industrial_Gridded_GHGI_Methane_v2_2015.tif\nGenerated and saved COG: Express_Extension_emi_ch4_5A1_Landfills_MSW_Gridded_GHGI_Methane_v2_2015.tif\nGenerated and saved COG: Express_Extension_emi_ch4_5B1_Composting_Gridded_GHGI_Methane_v2_2015.tif\nGenerated and saved COG: Express_Extension_emi_ch4_5D_Wastewater_Treatment_Domestic_Gridded_GHGI_Methane_v2_2015.tif\nGenerated and saved COG: Express_Extension_emi_ch4_5D_Wastewater_Treatment_Industrial_Gridded_GHGI_Methane_v2_2015.tif\nGenerated and saved COG: Express_Extension_emi_ch4_Supp_1B2b_PostMeter_Gridded_GHGI_Methane_v2_2015.tif\nGenerated and saved COG: Express_Extension_grid_cell_area_Gridded_GHGI_Methane_v2_2015.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1A_Combustion_Mobile_Gridded_GHGI_Methane_v2_2020.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1A_Combustion_Stationary_Gridded_GHGI_Methane_v2_2020.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B1a_Abandoned_Coal_Gridded_GHGI_Methane_v2_2020.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B1a_Surface_Coal_Gridded_GHGI_Methane_v2_2020.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B1a_Underground_Coal_Gridded_GHGI_Methane_v2_2020.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Exploration_Gridded_GHGI_Methane_v2_2020.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Production_Gridded_GHGI_Methane_v2_2020.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Refining_Gridded_GHGI_Methane_v2_2020.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Transport_Gridded_GHGI_Methane_v2_2020.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2ab_Abandoned_Oil_Gas_Gridded_GHGI_Methane_v2_2020.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Distribution_Gridded_GHGI_Methane_v2_2020.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Exploration_Gridded_GHGI_Methane_v2_2020.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Processing_Gridded_GHGI_Methane_v2_2020.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Production_Gridded_GHGI_Methane_v2_2020.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_TransmissionStorage_Gridded_GHGI_Methane_v2_2020.tif\nGenerated and saved COG: Express_Extension_emi_ch4_2B8_Industry_Petrochemical_Gridded_GHGI_Methane_v2_2020.tif\nGenerated and saved COG: Express_Extension_emi_ch4_2C2_Industry_Ferroalloy_Gridded_GHGI_Methane_v2_2020.tif\nGenerated and saved COG: Express_Extension_emi_ch4_3A_Enteric_Fermentation_Gridded_GHGI_Methane_v2_2020.tif\nGenerated and saved COG: Express_Extension_emi_ch4_3B_Manure_Management_Gridded_GHGI_Methane_v2_2020.tif\nGenerated and saved COG: Express_Extension_emi_ch4_3C_Rice_Cultivation_Gridded_GHGI_Methane_v2_2020.tif\nGenerated and saved COG: Express_Extension_emi_ch4_3F_Field_Burning_Gridded_GHGI_Methane_v2_2020.tif\nGenerated and saved COG: Express_Extension_emi_ch4_5A1_Landfills_Industrial_Gridded_GHGI_Methane_v2_2020.tif\nGenerated and saved COG: Express_Extension_emi_ch4_5A1_Landfills_MSW_Gridded_GHGI_Methane_v2_2020.tif\nGenerated and saved COG: Express_Extension_emi_ch4_5B1_Composting_Gridded_GHGI_Methane_v2_2020.tif\nGenerated and saved COG: Express_Extension_emi_ch4_5D_Wastewater_Treatment_Domestic_Gridded_GHGI_Methane_v2_2020.tif\nGenerated and saved COG: Express_Extension_emi_ch4_5D_Wastewater_Treatment_Industrial_Gridded_GHGI_Methane_v2_2020.tif\nGenerated and saved COG: Express_Extension_emi_ch4_Supp_1B2b_PostMeter_Gridded_GHGI_Methane_v2_2020.tif\nGenerated and saved COG: Express_Extension_grid_cell_area_Gridded_GHGI_Methane_v2_2020.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1A_Combustion_Mobile_Gridded_GHGI_Methane_v2_2014.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1A_Combustion_Stationary_Gridded_GHGI_Methane_v2_2014.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B1a_Abandoned_Coal_Gridded_GHGI_Methane_v2_2014.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B1a_Surface_Coal_Gridded_GHGI_Methane_v2_2014.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B1a_Underground_Coal_Gridded_GHGI_Methane_v2_2014.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Exploration_Gridded_GHGI_Methane_v2_2014.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Production_Gridded_GHGI_Methane_v2_2014.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Refining_Gridded_GHGI_Methane_v2_2014.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Transport_Gridded_GHGI_Methane_v2_2014.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2ab_Abandoned_Oil_Gas_Gridded_GHGI_Methane_v2_2014.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Distribution_Gridded_GHGI_Methane_v2_2014.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Exploration_Gridded_GHGI_Methane_v2_2014.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Processing_Gridded_GHGI_Methane_v2_2014.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Production_Gridded_GHGI_Methane_v2_2014.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_TransmissionStorage_Gridded_GHGI_Methane_v2_2014.tif\nGenerated and saved COG: Express_Extension_emi_ch4_2B8_Industry_Petrochemical_Gridded_GHGI_Methane_v2_2014.tif\nGenerated and saved COG: Express_Extension_emi_ch4_2C2_Industry_Ferroalloy_Gridded_GHGI_Methane_v2_2014.tif\nGenerated and saved COG: Express_Extension_emi_ch4_3A_Enteric_Fermentation_Gridded_GHGI_Methane_v2_2014.tif\nGenerated and saved COG: Express_Extension_emi_ch4_3B_Manure_Management_Gridded_GHGI_Methane_v2_2014.tif\nGenerated and saved COG: Express_Extension_emi_ch4_3C_Rice_Cultivation_Gridded_GHGI_Methane_v2_2014.tif\nGenerated and saved COG: Express_Extension_emi_ch4_3F_Field_Burning_Gridded_GHGI_Methane_v2_2014.tif\nGenerated and saved COG: Express_Extension_emi_ch4_5A1_Landfills_Industrial_Gridded_GHGI_Methane_v2_2014.tif\nGenerated and saved COG: Express_Extension_emi_ch4_5A1_Landfills_MSW_Gridded_GHGI_Methane_v2_2014.tif\nGenerated and saved COG: Express_Extension_emi_ch4_5B1_Composting_Gridded_GHGI_Methane_v2_2014.tif\nGenerated and saved COG: Express_Extension_emi_ch4_5D_Wastewater_Treatment_Domestic_Gridded_GHGI_Methane_v2_2014.tif\nGenerated and saved COG: Express_Extension_emi_ch4_5D_Wastewater_Treatment_Industrial_Gridded_GHGI_Methane_v2_2014.tif\nGenerated and saved COG: Express_Extension_emi_ch4_Supp_1B2b_PostMeter_Gridded_GHGI_Methane_v2_2014.tif\nGenerated and saved COG: Express_Extension_grid_cell_area_Gridded_GHGI_Methane_v2_2014.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1A_Combustion_Mobile_Gridded_GHGI_Methane_v2_2013.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1A_Combustion_Stationary_Gridded_GHGI_Methane_v2_2013.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B1a_Abandoned_Coal_Gridded_GHGI_Methane_v2_2013.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B1a_Surface_Coal_Gridded_GHGI_Methane_v2_2013.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B1a_Underground_Coal_Gridded_GHGI_Methane_v2_2013.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Exploration_Gridded_GHGI_Methane_v2_2013.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Production_Gridded_GHGI_Methane_v2_2013.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Refining_Gridded_GHGI_Methane_v2_2013.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Transport_Gridded_GHGI_Methane_v2_2013.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2ab_Abandoned_Oil_Gas_Gridded_GHGI_Methane_v2_2013.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Distribution_Gridded_GHGI_Methane_v2_2013.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Exploration_Gridded_GHGI_Methane_v2_2013.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Processing_Gridded_GHGI_Methane_v2_2013.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Production_Gridded_GHGI_Methane_v2_2013.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_TransmissionStorage_Gridded_GHGI_Methane_v2_2013.tif\nGenerated and saved COG: Express_Extension_emi_ch4_2B8_Industry_Petrochemical_Gridded_GHGI_Methane_v2_2013.tif\nGenerated and saved COG: Express_Extension_emi_ch4_2C2_Industry_Ferroalloy_Gridded_GHGI_Methane_v2_2013.tif\nGenerated and saved COG: Express_Extension_emi_ch4_3A_Enteric_Fermentation_Gridded_GHGI_Methane_v2_2013.tif\nGenerated and saved COG: Express_Extension_emi_ch4_3B_Manure_Management_Gridded_GHGI_Methane_v2_2013.tif\nGenerated and saved COG: Express_Extension_emi_ch4_3C_Rice_Cultivation_Gridded_GHGI_Methane_v2_2013.tif\nGenerated and saved COG: Express_Extension_emi_ch4_3F_Field_Burning_Gridded_GHGI_Methane_v2_2013.tif\nGenerated and saved COG: Express_Extension_emi_ch4_5A1_Landfills_Industrial_Gridded_GHGI_Methane_v2_2013.tif\nGenerated and saved COG: Express_Extension_emi_ch4_5A1_Landfills_MSW_Gridded_GHGI_Methane_v2_2013.tif\nGenerated and saved COG: Express_Extension_emi_ch4_5B1_Composting_Gridded_GHGI_Methane_v2_2013.tif\nGenerated and saved COG: Express_Extension_emi_ch4_5D_Wastewater_Treatment_Domestic_Gridded_GHGI_Methane_v2_2013.tif\nGenerated and saved COG: Express_Extension_emi_ch4_5D_Wastewater_Treatment_Industrial_Gridded_GHGI_Methane_v2_2013.tif\nGenerated and saved COG: Express_Extension_emi_ch4_Supp_1B2b_PostMeter_Gridded_GHGI_Methane_v2_2013.tif\nGenerated and saved COG: Express_Extension_grid_cell_area_Gridded_GHGI_Methane_v2_2013.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1A_Combustion_Mobile_Gridded_GHGI_Methane_v2_2017.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1A_Combustion_Stationary_Gridded_GHGI_Methane_v2_2017.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B1a_Abandoned_Coal_Gridded_GHGI_Methane_v2_2017.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B1a_Surface_Coal_Gridded_GHGI_Methane_v2_2017.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B1a_Underground_Coal_Gridded_GHGI_Methane_v2_2017.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Exploration_Gridded_GHGI_Methane_v2_2017.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Production_Gridded_GHGI_Methane_v2_2017.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Refining_Gridded_GHGI_Methane_v2_2017.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Transport_Gridded_GHGI_Methane_v2_2017.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2ab_Abandoned_Oil_Gas_Gridded_GHGI_Methane_v2_2017.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Distribution_Gridded_GHGI_Methane_v2_2017.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Exploration_Gridded_GHGI_Methane_v2_2017.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Processing_Gridded_GHGI_Methane_v2_2017.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Production_Gridded_GHGI_Methane_v2_2017.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_TransmissionStorage_Gridded_GHGI_Methane_v2_2017.tif\nGenerated and saved COG: Express_Extension_emi_ch4_2B8_Industry_Petrochemical_Gridded_GHGI_Methane_v2_2017.tif\nGenerated and saved COG: Express_Extension_emi_ch4_2C2_Industry_Ferroalloy_Gridded_GHGI_Methane_v2_2017.tif\nGenerated and saved COG: Express_Extension_emi_ch4_3A_Enteric_Fermentation_Gridded_GHGI_Methane_v2_2017.tif\nGenerated and saved COG: Express_Extension_emi_ch4_3B_Manure_Management_Gridded_GHGI_Methane_v2_2017.tif\nGenerated and saved COG: Express_Extension_emi_ch4_3C_Rice_Cultivation_Gridded_GHGI_Methane_v2_2017.tif\nGenerated and saved COG: Express_Extension_emi_ch4_3F_Field_Burning_Gridded_GHGI_Methane_v2_2017.tif\nGenerated and saved COG: Express_Extension_emi_ch4_5A1_Landfills_Industrial_Gridded_GHGI_Methane_v2_2017.tif\nGenerated and saved COG: Express_Extension_emi_ch4_5A1_Landfills_MSW_Gridded_GHGI_Methane_v2_2017.tif\nGenerated and saved COG: Express_Extension_emi_ch4_5B1_Composting_Gridded_GHGI_Methane_v2_2017.tif\nGenerated and saved COG: Express_Extension_emi_ch4_5D_Wastewater_Treatment_Domestic_Gridded_GHGI_Methane_v2_2017.tif\nGenerated and saved COG: Express_Extension_emi_ch4_5D_Wastewater_Treatment_Industrial_Gridded_GHGI_Methane_v2_2017.tif\nGenerated and saved COG: Express_Extension_emi_ch4_Supp_1B2b_PostMeter_Gridded_GHGI_Methane_v2_2017.tif\nGenerated and saved COG: Express_Extension_grid_cell_area_Gridded_GHGI_Methane_v2_2017.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1A_Combustion_Mobile_Gridded_GHGI_Methane_v2_2016.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1A_Combustion_Stationary_Gridded_GHGI_Methane_v2_2016.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B1a_Abandoned_Coal_Gridded_GHGI_Methane_v2_2016.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B1a_Surface_Coal_Gridded_GHGI_Methane_v2_2016.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B1a_Underground_Coal_Gridded_GHGI_Methane_v2_2016.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Exploration_Gridded_GHGI_Methane_v2_2016.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Production_Gridded_GHGI_Methane_v2_2016.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Refining_Gridded_GHGI_Methane_v2_2016.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Transport_Gridded_GHGI_Methane_v2_2016.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2ab_Abandoned_Oil_Gas_Gridded_GHGI_Methane_v2_2016.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Distribution_Gridded_GHGI_Methane_v2_2016.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Exploration_Gridded_GHGI_Methane_v2_2016.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Processing_Gridded_GHGI_Methane_v2_2016.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Production_Gridded_GHGI_Methane_v2_2016.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_TransmissionStorage_Gridded_GHGI_Methane_v2_2016.tif\nGenerated and saved COG: Express_Extension_emi_ch4_2B8_Industry_Petrochemical_Gridded_GHGI_Methane_v2_2016.tif\nGenerated and saved COG: Express_Extension_emi_ch4_2C2_Industry_Ferroalloy_Gridded_GHGI_Methane_v2_2016.tif\nGenerated and saved COG: Express_Extension_emi_ch4_3A_Enteric_Fermentation_Gridded_GHGI_Methane_v2_2016.tif\nGenerated and saved COG: Express_Extension_emi_ch4_3B_Manure_Management_Gridded_GHGI_Methane_v2_2016.tif\nGenerated and saved COG: Express_Extension_emi_ch4_3C_Rice_Cultivation_Gridded_GHGI_Methane_v2_2016.tif\nGenerated and saved COG: Express_Extension_emi_ch4_3F_Field_Burning_Gridded_GHGI_Methane_v2_2016.tif\nGenerated and saved COG: Express_Extension_emi_ch4_5A1_Landfills_Industrial_Gridded_GHGI_Methane_v2_2016.tif\nGenerated and saved COG: Express_Extension_emi_ch4_5A1_Landfills_MSW_Gridded_GHGI_Methane_v2_2016.tif\nGenerated and saved COG: Express_Extension_emi_ch4_5B1_Composting_Gridded_GHGI_Methane_v2_2016.tif\nGenerated and saved COG: Express_Extension_emi_ch4_5D_Wastewater_Treatment_Domestic_Gridded_GHGI_Methane_v2_2016.tif\nGenerated and saved COG: Express_Extension_emi_ch4_5D_Wastewater_Treatment_Industrial_Gridded_GHGI_Methane_v2_2016.tif\nGenerated and saved COG: Express_Extension_emi_ch4_Supp_1B2b_PostMeter_Gridded_GHGI_Methane_v2_2016.tif\nGenerated and saved COG: Express_Extension_grid_cell_area_Gridded_GHGI_Methane_v2_2016.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1A_Combustion_Mobile_Gridded_GHGI_Methane_v2_2012.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1A_Combustion_Stationary_Gridded_GHGI_Methane_v2_2012.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B1a_Abandoned_Coal_Gridded_GHGI_Methane_v2_2012.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B1a_Surface_Coal_Gridded_GHGI_Methane_v2_2012.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B1a_Underground_Coal_Gridded_GHGI_Methane_v2_2012.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Exploration_Gridded_GHGI_Methane_v2_2012.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Production_Gridded_GHGI_Methane_v2_2012.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Refining_Gridded_GHGI_Methane_v2_2012.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Transport_Gridded_GHGI_Methane_v2_2012.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2ab_Abandoned_Oil_Gas_Gridded_GHGI_Methane_v2_2012.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Distribution_Gridded_GHGI_Methane_v2_2012.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Exploration_Gridded_GHGI_Methane_v2_2012.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Processing_Gridded_GHGI_Methane_v2_2012.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Production_Gridded_GHGI_Methane_v2_2012.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_TransmissionStorage_Gridded_GHGI_Methane_v2_2012.tif\nGenerated and saved COG: Express_Extension_emi_ch4_2B8_Industry_Petrochemical_Gridded_GHGI_Methane_v2_2012.tif\nGenerated and saved COG: Express_Extension_emi_ch4_2C2_Industry_Ferroalloy_Gridded_GHGI_Methane_v2_2012.tif\nGenerated and saved COG: Express_Extension_emi_ch4_3A_Enteric_Fermentation_Gridded_GHGI_Methane_v2_2012.tif\nGenerated and saved COG: Express_Extension_emi_ch4_3B_Manure_Management_Gridded_GHGI_Methane_v2_2012.tif\nGenerated and saved COG: Express_Extension_emi_ch4_3C_Rice_Cultivation_Gridded_GHGI_Methane_v2_2012.tif\nGenerated and saved COG: Express_Extension_emi_ch4_3F_Field_Burning_Gridded_GHGI_Methane_v2_2012.tif\nGenerated and saved COG: Express_Extension_emi_ch4_5A1_Landfills_Industrial_Gridded_GHGI_Methane_v2_2012.tif\nGenerated and saved COG: Express_Extension_emi_ch4_5A1_Landfills_MSW_Gridded_GHGI_Methane_v2_2012.tif\nGenerated and saved COG: Express_Extension_emi_ch4_5B1_Composting_Gridded_GHGI_Methane_v2_2012.tif\nGenerated and saved COG: Express_Extension_emi_ch4_5D_Wastewater_Treatment_Domestic_Gridded_GHGI_Methane_v2_2012.tif\nGenerated and saved COG: Express_Extension_emi_ch4_5D_Wastewater_Treatment_Industrial_Gridded_GHGI_Methane_v2_2012.tif\nGenerated and saved COG: Express_Extension_emi_ch4_Supp_1B2b_PostMeter_Gridded_GHGI_Methane_v2_2012.tif\nGenerated and saved COG: Express_Extension_grid_cell_area_Gridded_GHGI_Methane_v2_2012.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1A_Combustion_Mobile_Gridded_GHGI_Methane_v2_2019.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1A_Combustion_Stationary_Gridded_GHGI_Methane_v2_2019.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B1a_Abandoned_Coal_Gridded_GHGI_Methane_v2_2019.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B1a_Surface_Coal_Gridded_GHGI_Methane_v2_2019.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B1a_Underground_Coal_Gridded_GHGI_Methane_v2_2019.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Exploration_Gridded_GHGI_Methane_v2_2019.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Production_Gridded_GHGI_Methane_v2_2019.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Refining_Gridded_GHGI_Methane_v2_2019.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Transport_Gridded_GHGI_Methane_v2_2019.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2ab_Abandoned_Oil_Gas_Gridded_GHGI_Methane_v2_2019.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Distribution_Gridded_GHGI_Methane_v2_2019.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Exploration_Gridded_GHGI_Methane_v2_2019.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Processing_Gridded_GHGI_Methane_v2_2019.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Production_Gridded_GHGI_Methane_v2_2019.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_TransmissionStorage_Gridded_GHGI_Methane_v2_2019.tif\nGenerated and saved COG: Express_Extension_emi_ch4_2B8_Industry_Petrochemical_Gridded_GHGI_Methane_v2_2019.tif\nGenerated and saved COG: Express_Extension_emi_ch4_2C2_Industry_Ferroalloy_Gridded_GHGI_Methane_v2_2019.tif\nGenerated and saved COG: Express_Extension_emi_ch4_3A_Enteric_Fermentation_Gridded_GHGI_Methane_v2_2019.tif\nGenerated and saved COG: Express_Extension_emi_ch4_3B_Manure_Management_Gridded_GHGI_Methane_v2_2019.tif\nGenerated and saved COG: Express_Extension_emi_ch4_3C_Rice_Cultivation_Gridded_GHGI_Methane_v2_2019.tif\nGenerated and saved COG: Express_Extension_emi_ch4_3F_Field_Burning_Gridded_GHGI_Methane_v2_2019.tif\nGenerated and saved COG: Express_Extension_emi_ch4_5A1_Landfills_Industrial_Gridded_GHGI_Methane_v2_2019.tif\nGenerated and saved COG: Express_Extension_emi_ch4_5A1_Landfills_MSW_Gridded_GHGI_Methane_v2_2019.tif\nGenerated and saved COG: Express_Extension_emi_ch4_5B1_Composting_Gridded_GHGI_Methane_v2_2019.tif\nGenerated and saved COG: Express_Extension_emi_ch4_5D_Wastewater_Treatment_Domestic_Gridded_GHGI_Methane_v2_2019.tif\nGenerated and saved COG: Express_Extension_emi_ch4_5D_Wastewater_Treatment_Industrial_Gridded_GHGI_Methane_v2_2019.tif\nGenerated and saved COG: Express_Extension_emi_ch4_Supp_1B2b_PostMeter_Gridded_GHGI_Methane_v2_2019.tif\nGenerated and saved COG: Express_Extension_grid_cell_area_Gridded_GHGI_Methane_v2_2019.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1A_Combustion_Mobile_Gridded_GHGI_Methane_v2_2018.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1A_Combustion_Stationary_Gridded_GHGI_Methane_v2_2018.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B1a_Abandoned_Coal_Gridded_GHGI_Methane_v2_2018.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B1a_Surface_Coal_Gridded_GHGI_Methane_v2_2018.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B1a_Underground_Coal_Gridded_GHGI_Methane_v2_2018.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Exploration_Gridded_GHGI_Methane_v2_2018.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Production_Gridded_GHGI_Methane_v2_2018.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Refining_Gridded_GHGI_Methane_v2_2018.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Transport_Gridded_GHGI_Methane_v2_2018.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2ab_Abandoned_Oil_Gas_Gridded_GHGI_Methane_v2_2018.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Distribution_Gridded_GHGI_Methane_v2_2018.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Exploration_Gridded_GHGI_Methane_v2_2018.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Processing_Gridded_GHGI_Methane_v2_2018.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Production_Gridded_GHGI_Methane_v2_2018.tif\nGenerated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_TransmissionStorage_Gridded_GHGI_Methane_v2_2018.tif\nGenerated and saved COG: Express_Extension_emi_ch4_2B8_Industry_Petrochemical_Gridded_GHGI_Methane_v2_2018.tif\nGenerated and saved COG: Express_Extension_emi_ch4_2C2_Industry_Ferroalloy_Gridded_GHGI_Methane_v2_2018.tif\nGenerated and saved COG: Express_Extension_emi_ch4_3A_Enteric_Fermentation_Gridded_GHGI_Methane_v2_2018.tif\nGenerated and saved COG: Express_Extension_emi_ch4_3B_Manure_Management_Gridded_GHGI_Methane_v2_2018.tif\nGenerated and saved COG: Express_Extension_emi_ch4_3C_Rice_Cultivation_Gridded_GHGI_Methane_v2_2018.tif\nGenerated and saved COG: Express_Extension_emi_ch4_3F_Field_Burning_Gridded_GHGI_Methane_v2_2018.tif\nGenerated and saved COG: Express_Extension_emi_ch4_5A1_Landfills_Industrial_Gridded_GHGI_Methane_v2_2018.tif\nGenerated and saved COG: Express_Extension_emi_ch4_5A1_Landfills_MSW_Gridded_GHGI_Methane_v2_2018.tif\nGenerated and saved COG: Express_Extension_emi_ch4_5B1_Composting_Gridded_GHGI_Methane_v2_2018.tif\nGenerated and saved COG: Express_Extension_emi_ch4_5D_Wastewater_Treatment_Domestic_Gridded_GHGI_Methane_v2_2018.tif\nGenerated and saved COG: Express_Extension_emi_ch4_5D_Wastewater_Treatment_Industrial_Gridded_GHGI_Methane_v2_2018.tif\nGenerated and saved COG: Express_Extension_emi_ch4_Supp_1B2b_PostMeter_Gridded_GHGI_Methane_v2_2018.tif\nGenerated and saved COG: Express_Extension_grid_cell_area_Gridded_GHGI_Methane_v2_2018.tif\nDone generating COGs\n\n\n\n\n\n Back to top" + }, + { + "objectID": "cog_transformation/sedac-popdensity-yeargrid5yr-v4.11.html", + "href": "cog_transformation/sedac-popdensity-yeargrid5yr-v4.11.html", + "title": "SEDAC Gridded World Population Data", + "section": "", + "text": "This script was used to transform SEDAC Gridded World Population Data from netCDF to Cloud Optimized GeoTIFF (COG) format for display in the Greenhouse Gas (GHG) Center.\n\nimport os\nimport xarray\nimport re\nimport pandas as pd\n\nimport tempfile\nimport boto3\n\n\nsession = boto3.session.Session()\ns3_client = session.client(\"s3\")\nbucket_name = (\n \"ghgc-data-store-dev\" # S3 bucket where the COGs are stored after transformation\n)\n\nfold_names = os.listdir(\"gpw\")\n\nfiles_processed = pd.DataFrame(\n columns=[\"file_name\", \"COGs_created\"]\n) # A dataframe to keep track of the files that we have transformed into COGs\n\n# Reading the raw netCDF files from local machine\nfor fol_ in fold_names:\n for name in os.listdir(f\"gpw/{fol_}\"):\n if name.endswith(\".tif\"):\n xds = xarray.open_dataarray(f\"gpw/{fol_}/{name}\")\n\n filename = name.split(\"/ \")[-1]\n filename_elements = re.split(\"[_ .]\", filename)\n # # insert date of generated COG into filename\n filename_elements.pop()\n filename_elements.append(filename_elements[-3])\n\n xds.rio.set_spatial_dims(\"x\", \"y\", inplace=True)\n xds.rio.write_crs(\"epsg:4326\", inplace=True)\n\n cog_filename = \"_\".join(filename_elements)\n # # add extension\n cog_filename = f\"{cog_filename}.tif\"\n\n with tempfile.NamedTemporaryFile() as temp_file:\n xds.rio.to_raster(temp_file.name, driver=\"COG\")\n s3_client.upload_file(\n Filename=temp_file.name,\n Bucket=bucket_name,\n Key=f\"gridded_population_cog/{cog_filename}\",\n )\n\n files_processed = files_processed._append(\n {\"file_name\": name, \"COGs_created\": cog_filename},\n ignore_index=True,\n )\n\n print(f\"Generated and saved COG: {cog_filename}\")\n\n\n# creating the csv file with the names of files transformed.\nfiles_processed.to_csv(\n f\"s3://{bucket_name}/gridded_population_cog/files_converted.csv\",\n)\nprint(\"Done generating COGs\")\n\n\n\n\n Back to top" + }, + { + "objectID": "cog_transformation/oco2geos-co2-daygrid-v10r.html", + "href": "cog_transformation/oco2geos-co2-daygrid-v10r.html", + "title": "OCO-2 GEOS Column CO₂ Concentrations", + "section": "", + "text": "This script was used to transform the OCO-2 GEOS Column CO₂ Concentrations dataset from netCDF to Cloud Optimized GeoTIFF (COG) format for display in the Greenhouse Gas (GHG) Center.\n\nimport xarray\nimport re\nimport pandas as pd\nimport json\nimport tempfile\nimport boto3\nimport os\n\n\nsession = boto3.Session()\ns3_client = session.client(\"s3\")\nbucket_name = (\n \"ghgc-data-store-dev\" # S3 bucket where the COGs are stored after transformation\n)\nFOLDER_NAME = \"earth_data/geos_oco2\"\ns3_folder_name = \"geos-oco2\"\n\nerror_files = []\ncount = 0\nfiles_processed = pd.DataFrame(\n columns=[\"file_name\", \"COGs_created\"]\n) # A dataframe to keep track of the files that we have transformed into COGs\n\n# Reading the raw netCDF files from local machine\nfor name in os.listdir(FOLDER_NAME):\n try:\n xds = xarray.open_dataset(f\"{FOLDER_NAME}/{name}\", engine=\"netcdf4\")\n xds = xds.assign_coords(lon=(((xds.lon + 180) % 360) - 180)).sortby(\"lon\")\n variable = [var for var in xds.data_vars]\n filename = name.split(\"/ \")[-1]\n filename_elements = re.split(\"[_ .]\", filename)\n\n for time_increment in range(0, len(xds.time)):\n for var in variable:\n filename = name.split(\"/ \")[-1]\n filename_elements = re.split(\"[_ .]\", filename)\n data = getattr(xds.isel(time=time_increment), var)\n data = data.isel(lat=slice(None, None, -1))\n data.rio.set_spatial_dims(\"lon\", \"lat\", inplace=True)\n data.rio.write_crs(\"epsg:4326\", inplace=True)\n\n # # insert date of generated COG into filename\n filename_elements[-1] = filename_elements[-3]\n filename_elements.insert(2, var)\n filename_elements.pop(-3)\n cog_filename = \"_\".join(filename_elements)\n # # add extension\n cog_filename = f\"{cog_filename}.tif\"\n\n with tempfile.NamedTemporaryFile() as temp_file:\n data.rio.to_raster(\n temp_file.name,\n driver=\"COG\",\n )\n s3_client.upload_file(\n Filename=temp_file.name,\n Bucket=bucket_name,\n Key=f\"{s3_folder_name}/{cog_filename}\",\n )\n\n files_processed = files_processed._append(\n {\"file_name\": name, \"COGs_created\": cog_filename},\n ignore_index=True,\n )\n count += 1\n print(f\"Generated and saved COG: {cog_filename}\")\n except OSError:\n error_files.append(name)\n pass\n\n# Generate the json file with the metadata that is present in the netCDF files.\nwith tempfile.NamedTemporaryFile(mode=\"w+\") as fp:\n json.dump(xds.attrs, fp)\n json.dump({\"data_dimensions\": dict(xds.dims)}, fp)\n json.dump({\"data_variables\": list(xds.data_vars)}, fp)\n fp.flush()\n\n s3_client.upload_file(\n Filename=fp.name,\n Bucket=bucket_name,\n Key=f\"{s3_folder_name}/metadata.json\",\n )\n\n# creating the csv file with the names of files transformed.\nfiles_processed.to_csv(\n f\"s3://{bucket_name}/{s3_folder_name}/files_converted.csv\",\n)\nprint(\"Done generating COGs\")\n\n\n\n\n Back to top" + }, + { + "objectID": "cog_transformation/odiac-ffco2-monthgrid-v2022.html", + "href": "cog_transformation/odiac-ffco2-monthgrid-v2022.html", + "title": "ODIAC Fossil Fuel CO₂ Emissions", + "section": "", + "text": "This script was used to transform the ODIAC Fossil Fuel CO₂ Emissions dataset from GeoTIFF to Cloud Optimized GeoTIFF (COG) format for display in the Greenhouse Gas (GHG) Center.\n\nimport os\nimport xarray\nimport re\nimport pandas as pd\n\nimport tempfile\nimport boto3\n\n\nsession = boto3.session.Session()\ns3_client = session.client(\"s3\")\nbucket_name = \"ghgc-data-store-dev\" # S3 bucket where the COGs are stored after transformation\n\nfold_names = os.listdir(\"ODIAC\")\n\nfiles_processed = pd.DataFrame(columns=[\"file_name\", \"COGs_created\"]) # A dataframe to keep track of the files that we have transformed into COGs\n\n# Reading the raw netCDF files from local machine\nfor fol_ in fold_names:\n for name in os.listdir(f\"ODIAC/{fol_}\"):\n xds = xarray.open_dataarray(f\"ODIAC/{fol_}/{name}\")\n\n filename = name.split(\"/ \")[-1]\n filename_elements = re.split(\"[_ .]\", filename)\n # # insert date of generated COG into filename\n filename_elements.pop()\n filename_elements[-1] = fol_ + filename_elements[-1][-2:]\n\n xds.rio.set_spatial_dims(\"x\", \"y\", inplace=True)\n xds.rio.write_nodata(-9999, inplace=True)\n xds.rio.write_crs(\"epsg:4326\", inplace=True)\n\n cog_filename = \"_\".join(filename_elements)\n # # add extension\n cog_filename = f\"{cog_filename}.tif\"\n\n with tempfile.NamedTemporaryFile() as temp_file:\n xds.rio.to_raster(\n temp_file.name,\n driver=\"COG\",\n )\n s3_client.upload_file(\n Filename=temp_file.name,\n Bucket=bucket_name,\n Key=f\"ODIAC_geotiffs_COGs/{cog_filename}\",\n )\n\n files_processed = files_processed._append(\n {\"file_name\": name, \"COGs_created\": cog_filename},\n ignore_index=True,\n )\n\n print(f\"Generated and saved COG: {cog_filename}\")\n\n\n# creating the csv file with the names of files transformed.\nfiles_processed.to_csv(\n f\"s3://{bucket_name}/ODIAC_COGs/files_converted.csv\",\n)\nprint(\"Done generating COGs\")\n\n\n\n\n Back to top" + }, + { + "objectID": "cog_transformation/lpjwsl-wetlandch4-daygrid-v1.html", + "href": "cog_transformation/lpjwsl-wetlandch4-daygrid-v1.html", + "title": "Wetland Methane Emissions, LPJ-wsl Model", + "section": "", + "text": "This script was used to transform the Wetland Methane Emissions, LPJ-wsl Model dataset from netCDF to Cloud Optimized GeoTIFF (COG) format for display in the Greenhouse Gas (GHG) Center.\n\nimport os\nimport xarray\nimport re\nimport pandas as pd\nimport json\nimport tempfile\nimport boto3\nfrom datetime import datetime, timedelta\n\n\nsession = boto3.session.Session()\ns3_client = session.client(\"s3\")\nbucket_name = (\n \"ghgc-data-store-dev\" # S3 bucket where the COGs are stored after transformation\n)\nFOLDER_NAME = \"NASA_GSFC_ch4_wetlands_daily\"\ndirectory = \"ch4_wetlands_daily\"\n\nfiles_processed = pd.DataFrame(\n columns=[\"file_name\", \"COGs_created\"]\n) # A dataframe to keep track of the files that we have transformed into COGs\n\n# Reading the raw netCDF files from local machine\nfor name in os.listdir(directory):\n xds = xarray.open_dataset(\n f\"{directory}/{name}\", engine=\"netcdf4\", decode_times=False\n )\n xds = xds.assign_coords(longitude=(((xds.longitude + 180) % 360) - 180)).sortby(\n \"longitude\"\n )\n variable = [var for var in xds.data_vars]\n filename = name.split(\"/ \")[-1]\n filename_elements = re.split(\"[_ .]\", filename)\n start_time = datetime(int(filename_elements[-2]), 1, 1)\n\n for time_increment in range(0, len(xds.time)):\n for var in variable:\n filename = name.split(\"/ \")[-1]\n filename_elements = re.split(\"[_ .]\", filename)\n data = getattr(xds.isel(time=time_increment), var)\n data = data.isel(latitude=slice(None, None, -1))\n data = data * 1000\n data.rio.set_spatial_dims(\"longitude\", \"latitude\", inplace=True)\n data.rio.write_crs(\"epsg:4326\", inplace=True)\n date = start_time + timedelta(hours=data.time.item(0))\n\n # # insert date of generated COG into filename\n filename_elements.pop()\n filename_elements[-1] = date.strftime(\"%Y%m%d\")\n filename_elements.insert(2, var)\n cog_filename = \"_\".join(filename_elements)\n # # add extension\n cog_filename = f\"{cog_filename}.tif\"\n\n with tempfile.NamedTemporaryFile() as temp_file:\n data.rio.to_raster(\n temp_file.name,\n driver=\"COG\",\n )\n s3_client.upload_file(\n Filename=temp_file.name,\n Bucket=bucket_name,\n Key=f\"{FOLDER_NAME}/{cog_filename}\",\n )\n\n files_processed = files_processed._append(\n {\"file_name\": name, \"COGs_created\": cog_filename},\n ignore_index=True,\n )\n\n print(f\"Generated and saved COG: {cog_filename}\")\n\n# Generate the json file with the metadata that is present in the netCDF files.\nwith tempfile.NamedTemporaryFile(mode=\"w+\") as fp:\n json.dump(xds.attrs, fp)\n json.dump({\"data_dimensions\": dict(xds.dims)}, fp)\n json.dump({\"data_variables\": list(xds.data_vars)}, fp)\n fp.flush()\n\n s3_client.upload_file(\n Filename=fp.name,\n Bucket=bucket_name,\n Key=f\"{FOLDER_NAME}/metadata.json\",\n )\n\n# creating the csv file with the names of files transformed.\nfiles_processed.to_csv(\n f\"s3://{bucket_name}/{FOLDER_NAME}/files_converted.csv\",\n)\nprint(\"Done generating COGs\")\n\n\n\n\n Back to top" + }, + { + "objectID": "services/apis.html", + "href": "services/apis.html", + "title": "APIs", + "section": "", + "text": "Please find a list of publicly available APIs below.\nPlease note: while some of our services are already very mature, the GHG Center platform is currently in the build-up phase." + }, + { + "objectID": "services/apis.html#open-source", + "href": "services/apis.html#open-source", + "title": "APIs", + "section": "Open Source", + "text": "Open Source\nMost of the GHG Center APIs are hosted out of a single project (ghgc-backend) that combines multiple standalone services." + }, + { + "objectID": "data_workflow/oco2-mip-co2budget-yeargrid-v1_Data_Flow.html", + "href": "data_workflow/oco2-mip-co2budget-yeargrid-v1_Data_Flow.html", + "title": "OCO-2 MIP Top-Down CO₂ Budgets", + "section": "", + "text": "OCO-2 MIP Top-Down CO₂ Budgets\n\n\n\nData Flow Diagram Extending From Acquisition/Creation to User Delivery\n\n\n\n\n\n\n Back to top" + }, + { + "objectID": "data_workflow/lpjwsl-wetlandch4-grid-v1_Data_Flow.html", + "href": "data_workflow/lpjwsl-wetlandch4-grid-v1_Data_Flow.html", + "title": "Wetland Methane Emissions, LPJ-wsl Model", + "section": "", + "text": "Wetland Methane Emissions, LPJ-wsl Model\n\n\n\nData Flow Diagram Extending From Acquisition/Creation to User Delivery\n\n\n\n\n\n\n Back to top" + }, + { + "objectID": "data_workflow/casagfed-carbonflux-monthgrid-v3_Data_Flow.html", + "href": "data_workflow/casagfed-carbonflux-monthgrid-v3_Data_Flow.html", + "title": "CASA-GFED3 Land Carbon Flux - Data Workflow", + "section": "", + "text": "CASA-GFED3 Land Carbon Flux - Data Workflow\n\n\n\nData Flow Diagram Extending From Acquisition/Creation to User Delivery\n\n\n\n\n\n\n Back to top" + }, + { + "objectID": "data_workflow/sedac-popdensity-yeargrid5yr-v4.11_Data_Flow.html", + "href": "data_workflow/sedac-popdensity-yeargrid5yr-v4.11_Data_Flow.html", + "title": "SEDAC Gridded World Population Data", + "section": "", + "text": "SEDAC Gridded World Population Data\n\n\n\nData Flow Diagram Extending From Acquisition/Creation to User Delivery\n\n\n\n\n\n\n Back to top" + }, + { + "objectID": "data_workflow/epa-ch4emission-grid-v2express_Data_Flow.html", + "href": "data_workflow/epa-ch4emission-grid-v2express_Data_Flow.html", + "title": "Gridded Anthropogenic Methane Emissions Inventory", + "section": "", + "text": "Gridded Anthropogenic Methane Emissions Inventory\n\n\n\nData Flow Diagram Extending From Acquisition/Creation to User Delivery\n\n\n\n\n\n\n Back to top" + }, + { + "objectID": "data_workflow/odiac-ffco2-monthgrid-v2022_Data_Flow.html", + "href": "data_workflow/odiac-ffco2-monthgrid-v2022_Data_Flow.html", + "title": "ODIAC Fossil Fuel CO₂ Emissions", + "section": "", + "text": "ODIAC Fossil Fuel CO₂ Emissions\n\n\n\nData Flow Diagram Extending From Acquisition/Creation to User Delivery\n\n\n\n\n\n\n Back to top" + }, + { + "objectID": "data_workflow/eccodarwin-co2flux-monthgrid-v5_Data_Flow.html", + "href": "data_workflow/eccodarwin-co2flux-monthgrid-v5_Data_Flow.html", + "title": "Air-Sea CO₂ Flux, ECCO-Darwin Model v5", + "section": "", + "text": "Air-Sea CO₂ Flux, ECCO-Darwin Model v5\n\n\n\nData Flow Diagram Extending From Acquisition/Creation to User Delivery\n\n\n\n\n\n\n Back to top" + }, + { + "objectID": "data_workflow/gosat-based-ch4budget-yeargrid-v1_Data_Flow.html", + "href": "data_workflow/gosat-based-ch4budget-yeargrid-v1_Data_Flow.html", + "title": "GOSAT-based Top-down Total and Natural Methane Emissions", + "section": "", + "text": "GOSAT-based Top-down Total and Natural Methane Emissions\n\n\n\nData Flow Diagram Extending From Acquisition/Creation to User Delivery\n\n\n\n\n\n\n Back to top" + }, + { + "objectID": "data_workflow/emit-ch4plume-v1_Data_Flow.html", + "href": "data_workflow/emit-ch4plume-v1_Data_Flow.html", + "title": "EMIT methane point source plume complexes", + "section": "", + "text": "EMIT methane point source plume complexes\n\n\n\nData Flow Diagram Extending From Acquisition/Creation to User Delivery\n\n\n\n\n\n\n Back to top" + }, + { + "objectID": "data_workflow/oco2geos-co2-daygrid-v10r_Data_Flow.html", + "href": "data_workflow/oco2geos-co2-daygrid-v10r_Data_Flow.html", + "title": "OCO-2 GEOS Column CO₂ Concentrations", + "section": "", + "text": "OCO-2 GEOS Column CO₂ Concentrations\n\n\n\nData Flow Diagram Extending From Acquisition/Creation to User Delivery\n\n\n\n\n\n\n Back to top" + }, + { + "objectID": "data_workflow/noaa-insitu_Data_Flow.html", + "href": "data_workflow/noaa-insitu_Data_Flow.html", + "title": "Atmospheric Carbon Dioxide Concentrations from the NOAA Global Monitoring Laboratory", + "section": "", + "text": "Atmospheric Carbon Dioxide Concentrations from the NOAA Global Monitoring Laboratory\n\n\n\nData Flow Diagram Extending From Acquisition/Creation to User Delivery\n\n\n\n\n\n\n Back to top" + }, + { + "objectID": "data_workflow/tm54dvar-ch4flux-monthgrid-v1_Data_Flow.html", + "href": "data_workflow/tm54dvar-ch4flux-monthgrid-v1_Data_Flow.html", + "title": "TM5-4DVar Isotopic CH₄ Inverse Fluxes", + "section": "", + "text": "TM5-4DVar Isotopic CH₄ Inverse Fluxes\n\n\n\nData Flow Diagram Extending From Acquisition/Creation to User Delivery\n\n\n\n\n\n\n Back to top" + }, + { + "objectID": "index.html", + "href": "index.html", + "title": "U.S. Greenhouse Gas Center: Documentation", + "section": "", + "text": "The U.S. Greenhouse Gas (GHG) Center provides a cloud-based system for exploring and analyzing U.S. government and other curated greenhouse gas datasets.\nOn this site, you can find the technical documentation of the services the center provides, how to load the datasets, and how the datasets were transformed from their source formats (eg. NetCDF, HDF, etc.) into cloud-optimized formats that enable efficient data access and visualization." + }, + { + "objectID": "index.html#welcome", + "href": "index.html#welcome", + "title": "U.S. Greenhouse Gas Center: Documentation", + "section": "", + "text": "The U.S. Greenhouse Gas (GHG) Center provides a cloud-based system for exploring and analyzing U.S. government and other curated greenhouse gas datasets.\nOn this site, you can find the technical documentation of the services the center provides, how to load the datasets, and how the datasets were transformed from their source formats (eg. NetCDF, HDF, etc.) into cloud-optimized formats that enable efficient data access and visualization." + }, + { + "objectID": "index.html#contents", + "href": "index.html#contents", + "title": "U.S. Greenhouse Gas Center: Documentation", + "section": "Contents", + "text": "Contents\n\nServices provided for accessing and analyzing the GHG Center datasets, such as a JupyterHub environment for interactive computing.\nDataset usage examples, e.g. for the LPJ-wsl modelled Wetland Methane Emissions dataset, showing how to load the dataset in Python, for example in JupyterHub.\nDataset transformation scripts, e.g. for the CASA-GFED3 Land Carbon Flux dataset.\nData processing and verification reports, e.g. for the CEOS CH₄ budget yearly dataset." + }, + { + "objectID": "index.html#contact", + "href": "index.html#contact", + "title": "U.S. Greenhouse Gas Center: Documentation", + "section": "Contact", + "text": "Contact\nFor technical and usage questions, please contact us at veda@uah.edu or via the Feedback forms at ghg.center." + }, + { + "objectID": "services/jupyterhub.html", + "href": "services/jupyterhub.html", + "title": "JupyterHub", + "section": "", + "text": "The GHG Center promotes the use of JupyterHub environments for interactive data science. JupyterHub enables you to analyze massive archives of Earth science data in the cloud in an interactive environment that alleviates the complexities of managing compute resources (virtual machines, roles and permissions, etc).\nUsers affiliated with the GHG Center can get access to a dedicated JupyterHub service, provided in collaboration with 2i2c: hub.ghg.center. Please find instructions for requesting access below.\nIf you are a scientist affiliated with NASA projects such as VEDA, EIS, and MAAP, you can also keep using the resources provided by these projects. Through the use of open-source technology, we make sure our services are interoperable and exchangeable." + }, + { + "objectID": "services/jupyterhub.html#getting-access-to-the-ghg-center-jupyterhub-environment", + "href": "services/jupyterhub.html#getting-access-to-the-ghg-center-jupyterhub-environment", + "title": "JupyterHub", + "section": "Getting access to the GHG Center JupyterHub environment", + "text": "Getting access to the GHG Center JupyterHub environment\nAccess to the GHG Center notebook environment is currently on an as-need basis. If you are a user afficiliated with the GHG Center, you can gain access by following these steps:\n\nMake sure you have a Github Account. Take note of your Github username\nSend an email to the GHG Center team (veda@uah.edu) asking for access to the GHG Center notebook environment. Please include your Github username. They will invite you through Github to join the GHG Center Hub Access Github Team. Please watch your email for the invite.\nOnce you accepted the invitation, you should be able to go to hub.ghg.center and login via your Github credentials." + }, + { + "objectID": "services/jupyterhub.html#instructory-notebooks", + "href": "services/jupyterhub.html#instructory-notebooks", + "title": "JupyterHub", + "section": "Instructory notebooks", + "text": "Instructory notebooks\nThis documentation site provides Jupyter notebooks on how to load and analyze Earth data an interactive cloud computing environment." + }, + { + "objectID": "cog_transformation/lpjwsl-wetlandch4-monthgrid-v1.html", + "href": "cog_transformation/lpjwsl-wetlandch4-monthgrid-v1.html", + "title": "Wetland Methane Emissions, LPJ-wsl Model", + "section": "", + "text": "This script was used to transform the Wetland Methane Emissions, LPJ-wsl Model dataset from netCDF to Cloud Optimized GeoTIFF (COG) format for display in the Greenhouse Gas (GHG) Center.\n\nimport os\nimport xarray\nimport re\nimport pandas as pd\nimport json\nimport tempfile\nimport boto3\n\n\nsession = boto3.session.Session()\ns3_client = session.client(\"s3\")\nbucket_name = (\n \"ghgc-data-store-dev\" # S3 bucket where the COGs are stored after transformation\n)\nFOLDER_NAME = \"NASA_GSFC_ch4_wetlands_monthly\"\ndirectory = \"ch4_wetlands_monthly\"\n\nfiles_processed = pd.DataFrame(\n columns=[\"file_name\", \"COGs_created\"]\n) # A dataframe to keep track of the files that we have transformed into COGs\n\n# Reading the raw netCDF files from local machine\nfor name in os.listdir(directory):\n xds = xarray.open_dataset(\n f\"{directory}/{name}\", engine=\"netcdf4\", decode_times=False\n )\n xds = xds.assign_coords(longitude=(((xds.longitude + 180) % 360) - 180)).sortby(\n \"longitude\"\n )\n variable = [var for var in xds.data_vars]\n filename = name.split(\"/ \")[-1]\n filename_elements = re.split(\"[_ .]\", filename)\n\n for time_increment in range(0, len(xds.time)):\n for var in variable:\n filename = name.split(\"/ \")[-1]\n filename_elements = re.split(\"[_ .]\", filename)\n data = getattr(xds.isel(time=time_increment), var)\n data = data.isel(latitude=slice(None, None, -1))\n data = data * 1000\n data.rio.set_spatial_dims(\"longitude\", \"latitude\", inplace=True)\n data.rio.write_crs(\"epsg:4326\", inplace=True)\n\n date = (\n f\"0{int((data.time.item(0)/732)+1)}\"\n if len(str(int((data.time.item(0) / 732) + 1))) == 1\n else f\"{int((data.time.item(0)/732)+1)}\"\n )\n # # insert date of generated COG into filename\n filename_elements.pop()\n filename_elements[-1] = filename_elements[-1] + date\n filename_elements.insert(2, var)\n cog_filename = \"_\".join(filename_elements)\n # # add extension\n cog_filename = f\"{cog_filename}.tif\"\n\n with tempfile.NamedTemporaryFile() as temp_file:\n data.rio.to_raster(\n temp_file.name,\n driver=\"COG\",\n )\n s3_client.upload_file(\n Filename=temp_file.name,\n Bucket=bucket_name,\n Key=f\"{FOLDER_NAME}/{cog_filename}\",\n )\n\n files_processed = files_processed._append(\n {\"file_name\": name, \"COGs_created\": cog_filename},\n ignore_index=True,\n )\n\n print(f\"Generated and saved COG: {cog_filename}\")\n\n# Generate the json file with the metadata that is present in the netCDF files.\nwith tempfile.NamedTemporaryFile(mode=\"w+\") as fp:\n json.dump(xds.attrs, fp)\n json.dump({\"data_dimensions\": dict(xds.dims)}, fp)\n json.dump({\"data_variables\": list(xds.data_vars)}, fp)\n fp.flush()\n\n s3_client.upload_file(\n Filename=fp.name,\n Bucket=bucket_name,\n Key=f\"{FOLDER_NAME}/metadata.json\",\n )\n\n# creating the csv file with the names of files transformed.\nfiles_processed.to_csv(\n f\"s3://{bucket_name}/{FOLDER_NAME}/files_converted.csv\",\n)\nprint(\"Done generating COGs\")\n\n\n\n\n Back to top" + }, + { + "objectID": "cog_transformation/gosat-based-ch4budget-yeargrid-v1.html", + "href": "cog_transformation/gosat-based-ch4budget-yeargrid-v1.html", + "title": "GOSAT-based Top-down Methane Budgets", + "section": "", + "text": "This script was used to transform the GOSAT-based Top-down Methane Budgets dataset from netCDF to Cloud Optimized GeoTIFF (COG) format for display in the Greenhouse Gas (GHG) Center.\n\nimport os\nimport xarray\nimport re\nimport pandas as pd\nimport json\nimport tempfile\nimport boto3\nimport rasterio\nfrom datetime import datetime\nfrom dateutil.relativedelta import relativedelta\n\n\nsession = boto3.session.Session()\ns3_client = session.client(\"s3\")\nbucket_name = (\n \"ghgc-data-store-dev\" # S3 bucket where the COGs are stored after transformation\n)\nyear_ = datetime(2019, 1, 1)\nfolder_name = \"new_data/CH4-inverse-flux\"\n\nCOG_PROFILE = {\"driver\": \"COG\", \"compress\": \"DEFLATE\"}\n\nfiles_processed = pd.DataFrame(\n columns=[\"file_name\", \"COGs_created\"]\n) # A dataframe to keep track of the files that we have transformed into COGs\n\n# Reading the raw netCDF files from local machine\nfor name in os.listdir(folder_name):\n ds = xarray.open_dataset(\n f\"{folder_name}/{name}\",\n engine=\"netcdf4\",\n )\n\n ds = ds.rename({\"dimy\": \"lat\", \"dimx\": \"lon\"})\n # assign coords from dimensions\n ds = ds.assign_coords(lon=(((ds.lon + 180) % 360) - 180)).sortby(\"lon\")\n ds = ds.assign_coords(lat=((ds.lat / 180) * 180) - 90).sortby(\"lat\")\n\n variable = [var for var in ds.data_vars]\n\n for var in variable[2:]:\n filename = name.split(\"/ \")[-1]\n filename_elements = re.split(\"[_ .]\", filename)\n data = ds[var]\n filename_elements.pop()\n filename_elements.insert(2, var)\n cog_filename = \"_\".join(filename_elements)\n # # add extension\n cog_filename = f\"{cog_filename}.tif\"\n\n data = data.reindex(lat=list(reversed(data.lat)))\n\n data.rio.set_spatial_dims(\"lon\", \"lat\")\n data.rio.write_crs(\"epsg:4326\", inplace=True)\n\n # generate COG\n COG_PROFILE = {\"driver\": \"COG\", \"compress\": \"DEFLATE\"}\n\n with tempfile.NamedTemporaryFile() as temp_file:\n data.rio.to_raster(temp_file.name, **COG_PROFILE)\n s3_client.upload_file(\n Filename=temp_file.name,\n Bucket=bucket_name,\n Key=f\"ch4_inverse_flux/{cog_filename}\",\n )\n\n files_processed = files_processed._append(\n {\"file_name\": name, \"COGs_created\": cog_filename},\n ignore_index=True,\n )\n\n print(f\"Generated and saved COG: {cog_filename}\")\n\n# Generate the json file with the metadata that is present in the netCDF files.\nwith tempfile.NamedTemporaryFile(mode=\"w+\") as fp:\n json.dump(ds.attrs, fp)\n json.dump({\"data_dimensions\": dict(ds.dims)}, fp)\n json.dump({\"data_variables\": list(ds.data_vars)}, fp)\n fp.flush()\n\n s3_client.upload_file(\n Filename=fp.name,\n Bucket=bucket_name,\n Key=\"ch4_inverse_flux/metadata.json\",\n )\n\n# creating the csv file with the names of files transformed.\nfiles_processed.to_csv(\n f\"s3://{bucket_name}/ch4_inverse_flux/files_converted.csv\",\n)\nprint(\"Done generating COGs\")\n\n\n\n\n Back to top" + }, + { + "objectID": "cog_transformation/epa-ch4emission-grid-v2express_layers_update.html", + "href": "cog_transformation/epa-ch4emission-grid-v2express_layers_update.html", + "title": "Gridded Anthropogenic Methane Emissions Inventory", + "section": "", + "text": "This script was used to add concatenated layers and transform Gridded Anthropogenic Methane Emissions Inventory dataset from netCDF to Cloud Optimized GeoTIFF (COG) format for display in the Greenhouse Gas (GHG) Center.\n\nimport os\nimport xarray\nimport re\nimport pandas as pd\nimport json\nimport tempfile\nimport boto3\nfrom datetime import datetime\nimport numpy as np\n\nfrom dotenv import load_dotenv\n\nload_dotenv()\n\nTrue\n\n\n\n# session = boto3.session.Session()\nsession = boto3.Session(\n aws_access_key_id=os.environ.get(\"AWS_ACCESS_KEY_ID\"),\n aws_secret_access_key=os.environ.get(\"AWS_SECRET_ACCESS_KEY\"),\n aws_session_token=os.environ.get(\"AWS_SESSION_TOKEN\"),\n)\ns3_client = session.client(\"s3\")\nbucket_name = (\n \"ghgc-data-store-dev\" # S3 bucket where the COGs are stored after transformation\n)\nFOLDER_NAME = \"../data/epa_emissions_express_extension\"\ns3_folder_name = \"epa_express_extension_Tg_km2_yr\"\n\nfiles_processed = pd.DataFrame(\n columns=[\"file_name\", \"COGs_created\"]\n) # A dataframe to keep track of the files that we have transformed into COGs\n\n# Reading the raw netCDF files from local machine\nfor name in os.listdir(FOLDER_NAME):\n xds = xarray.open_dataset(f\"{FOLDER_NAME}/{name}\", engine=\"netcdf4\")\n xds = xds.assign_coords(lon=(((xds.lon + 180) % 360) - 180)).sortby(\"lon\")\n variable = [var for var in xds.data_vars]\n new_variables = {\n \"all-variables\": variable[:-1],\n \"agriculture\": variable[17:21],\n \"natural-gas-systems\": variable[10:15] + [variable[26]],\n \"petroleum-systems\": variable[5:9],\n \"waste\": variable[21:26],\n \"coal-mines\": variable[2:5],\n \"other\": variable[:2] + [variable[9]] + variable[15:17],\n }\n filename = name.split(\"/ \")[-1]\n filename_elements = re.split(\"[_ .]\", filename)\n start_time = datetime(int(filename_elements[-2]), 1, 1)\n\n for time_increment in range(0, len(xds.time)):\n for key, value in new_variables.items():\n data = np.zeros(dtype=np.float32, shape=(len(xds.lat), len(xds.lon)))\n filename = name.split(\"/ \")[-1]\n filename_elements = re.split(\"[_ .]\", filename)\n for var in value:\n data = data + getattr(xds.isel(time=time_increment), var)\n # data = np.round(data / pow(10, 9), 2)\n data.values[data.values==0] = np.nan\n # data = data*((1/(6.022*pow(10,23)))*(16.04*pow(10,-6))*366*pow(10,10))\n data = data*(9.74*pow(10,-11))\n data.values[data.values<=np.nanpercentile(data.values, 50)] = np.nan\n data = data.fillna(-9999)\n data = data.isel(lat=slice(None, None, -1))\n data.rio.set_spatial_dims(\"lon\", \"lat\", inplace=True)\n data.rio.write_crs(\"epsg:4326\", inplace=True)\n\n # # insert date of generated COG into filename\n filename_elements.pop()\n filename_elements[-1] = start_time.strftime(\"%Y\")\n filename_elements.insert(2, key)\n cog_filename = \"_\".join(filename_elements)\n # # add extension\n cog_filename = f\"{cog_filename}.tif\"\n\n with tempfile.NamedTemporaryFile() as temp_file:\n data.rio.to_raster(\n temp_file.name,\n driver=\"COG\",\n )\n s3_client.upload_file(\n Filename=temp_file.name,\n Bucket=bucket_name,\n Key=f\"{s3_folder_name}/{cog_filename}\",\n )\n\n files_processed = files_processed._append(\n {\"file_name\": name, \"COGs_created\": cog_filename},\n ignore_index=True,\n )\n\n print(f\"Generated and saved COG: {cog_filename}\")\nprint(\"Done generating COGs\")\n\nGenerated and saved COG: Express_Extension_all-variables_Gridded_GHGI_Methane_v2_2015.tif\nGenerated and saved COG: Express_Extension_agriculture_Gridded_GHGI_Methane_v2_2015.tif\nGenerated and saved COG: Express_Extension_natural-gas-systems_Gridded_GHGI_Methane_v2_2015.tif\nGenerated and saved COG: Express_Extension_petroleum-systems_Gridded_GHGI_Methane_v2_2015.tif\nGenerated and saved COG: Express_Extension_waste_Gridded_GHGI_Methane_v2_2015.tif\nGenerated and saved COG: Express_Extension_coal-mines_Gridded_GHGI_Methane_v2_2015.tif\nGenerated and saved COG: Express_Extension_other_Gridded_GHGI_Methane_v2_2015.tif\nGenerated and saved COG: Express_Extension_all-variables_Gridded_GHGI_Methane_v2_2020.tif\nGenerated and saved COG: Express_Extension_agriculture_Gridded_GHGI_Methane_v2_2020.tif\nGenerated and saved COG: Express_Extension_natural-gas-systems_Gridded_GHGI_Methane_v2_2020.tif\nGenerated and saved COG: Express_Extension_petroleum-systems_Gridded_GHGI_Methane_v2_2020.tif\nGenerated and saved COG: Express_Extension_waste_Gridded_GHGI_Methane_v2_2020.tif\nGenerated and saved COG: Express_Extension_coal-mines_Gridded_GHGI_Methane_v2_2020.tif\nGenerated and saved COG: Express_Extension_other_Gridded_GHGI_Methane_v2_2020.tif\nGenerated and saved COG: Express_Extension_all-variables_Gridded_GHGI_Methane_v2_2014.tif\nGenerated and saved COG: Express_Extension_agriculture_Gridded_GHGI_Methane_v2_2014.tif\nGenerated and saved COG: Express_Extension_natural-gas-systems_Gridded_GHGI_Methane_v2_2014.tif\nGenerated and saved COG: Express_Extension_petroleum-systems_Gridded_GHGI_Methane_v2_2014.tif\nGenerated and saved COG: Express_Extension_waste_Gridded_GHGI_Methane_v2_2014.tif\nGenerated and saved COG: Express_Extension_coal-mines_Gridded_GHGI_Methane_v2_2014.tif\nGenerated and saved COG: Express_Extension_other_Gridded_GHGI_Methane_v2_2014.tif\nGenerated and saved COG: Express_Extension_all-variables_Gridded_GHGI_Methane_v2_2013.tif\nGenerated and saved COG: Express_Extension_agriculture_Gridded_GHGI_Methane_v2_2013.tif\nGenerated and saved COG: Express_Extension_natural-gas-systems_Gridded_GHGI_Methane_v2_2013.tif\nGenerated and saved COG: Express_Extension_petroleum-systems_Gridded_GHGI_Methane_v2_2013.tif\nGenerated and saved COG: Express_Extension_waste_Gridded_GHGI_Methane_v2_2013.tif\nGenerated and saved COG: Express_Extension_coal-mines_Gridded_GHGI_Methane_v2_2013.tif\nGenerated and saved COG: Express_Extension_other_Gridded_GHGI_Methane_v2_2013.tif\nGenerated and saved COG: Express_Extension_all-variables_Gridded_GHGI_Methane_v2_2017.tif\nGenerated and saved COG: Express_Extension_agriculture_Gridded_GHGI_Methane_v2_2017.tif\nGenerated and saved COG: Express_Extension_natural-gas-systems_Gridded_GHGI_Methane_v2_2017.tif\nGenerated and saved COG: Express_Extension_petroleum-systems_Gridded_GHGI_Methane_v2_2017.tif\nGenerated and saved COG: Express_Extension_waste_Gridded_GHGI_Methane_v2_2017.tif\nGenerated and saved COG: Express_Extension_coal-mines_Gridded_GHGI_Methane_v2_2017.tif\nGenerated and saved COG: Express_Extension_other_Gridded_GHGI_Methane_v2_2017.tif\nGenerated and saved COG: Express_Extension_all-variables_Gridded_GHGI_Methane_v2_2016.tif\nGenerated and saved COG: Express_Extension_agriculture_Gridded_GHGI_Methane_v2_2016.tif\nGenerated and saved COG: Express_Extension_natural-gas-systems_Gridded_GHGI_Methane_v2_2016.tif\nGenerated and saved COG: Express_Extension_petroleum-systems_Gridded_GHGI_Methane_v2_2016.tif\nGenerated and saved COG: Express_Extension_waste_Gridded_GHGI_Methane_v2_2016.tif\nGenerated and saved COG: Express_Extension_coal-mines_Gridded_GHGI_Methane_v2_2016.tif\nGenerated and saved COG: Express_Extension_other_Gridded_GHGI_Methane_v2_2016.tif\nGenerated and saved COG: Express_Extension_all-variables_Gridded_GHGI_Methane_v2_2012.tif\nGenerated and saved COG: Express_Extension_agriculture_Gridded_GHGI_Methane_v2_2012.tif\nGenerated and saved COG: Express_Extension_natural-gas-systems_Gridded_GHGI_Methane_v2_2012.tif\nGenerated and saved COG: Express_Extension_petroleum-systems_Gridded_GHGI_Methane_v2_2012.tif\nGenerated and saved COG: Express_Extension_waste_Gridded_GHGI_Methane_v2_2012.tif\nGenerated and saved COG: Express_Extension_coal-mines_Gridded_GHGI_Methane_v2_2012.tif\nGenerated and saved COG: Express_Extension_other_Gridded_GHGI_Methane_v2_2012.tif\nGenerated and saved COG: Express_Extension_all-variables_Gridded_GHGI_Methane_v2_2019.tif\nGenerated and saved COG: Express_Extension_agriculture_Gridded_GHGI_Methane_v2_2019.tif\nGenerated and saved COG: Express_Extension_natural-gas-systems_Gridded_GHGI_Methane_v2_2019.tif\nGenerated and saved COG: Express_Extension_petroleum-systems_Gridded_GHGI_Methane_v2_2019.tif\nGenerated and saved COG: Express_Extension_waste_Gridded_GHGI_Methane_v2_2019.tif\nGenerated and saved COG: Express_Extension_coal-mines_Gridded_GHGI_Methane_v2_2019.tif\nGenerated and saved COG: Express_Extension_other_Gridded_GHGI_Methane_v2_2019.tif\nGenerated and saved COG: Express_Extension_all-variables_Gridded_GHGI_Methane_v2_2018.tif\nGenerated and saved COG: Express_Extension_agriculture_Gridded_GHGI_Methane_v2_2018.tif\nGenerated and saved COG: Express_Extension_natural-gas-systems_Gridded_GHGI_Methane_v2_2018.tif\nGenerated and saved COG: Express_Extension_petroleum-systems_Gridded_GHGI_Methane_v2_2018.tif\nGenerated and saved COG: Express_Extension_waste_Gridded_GHGI_Methane_v2_2018.tif\nGenerated and saved COG: Express_Extension_coal-mines_Gridded_GHGI_Methane_v2_2018.tif\nGenerated and saved COG: Express_Extension_other_Gridded_GHGI_Methane_v2_2018.tif\nDone generating COGs\n\n\n\n\n\n Back to top" + }, + { + "objectID": "cog_transformation/epa-ch4emission-monthgrid-v2.html", + "href": "cog_transformation/epa-ch4emission-monthgrid-v2.html", + "title": "Gridded Anthropogenic Methane Emissions Inventory", + "section": "", + "text": "This script was used to transform the Gridded Anthropogenic Methane Emissions Inventory dataset from netCDF to Cloud Optimized GeoTIFF (COG) format for display in the Greenhouse Gas (GHG) Center.\n\nimport os\nimport xarray\nimport re\nimport pandas as pd\nimport json\nimport tempfile\nimport boto3\nfrom datetime import datetime\nfrom dateutil.relativedelta import relativedelta\n\n\nsession = boto3.session.Session()\ns3_client = session.client(\"s3\")\nbucket_name = (\n \"ghgc-data-store-dev\" # S3 bucket where the COGs are stored after transformation\n)\nFOLDER_NAME = \"epa_emissions/monthly_scale\"\ns3_folder_name = \"epa-emissions-monthly-scale-factors\"\n\nfiles_processed = pd.DataFrame(\n columns=[\"file_name\", \"COGs_created\"]\n) # A dataframe to keep track of the files that we have transformed into COGs\n\n# Reading the raw netCDF files from local machine\nfor name in os.listdir(FOLDER_NAME):\n xds = xarray.open_dataset(f\"{FOLDER_NAME}/{name}\", engine=\"netcdf4\")\n xds = xds.assign_coords(lon=(((xds.lon + 180) % 360) - 180)).sortby(\"lon\")\n variable = [var for var in xds.data_vars]\n filename = name.split(\"/ \")[-1]\n filename_elements = re.split(\"[_ .]\", filename)\n start_time = datetime(int(filename_elements[-2]), 1, 1)\n\n for time_increment in range(0, len(xds.time)):\n for var in variable:\n filename = name.split(\"/ \")[-1]\n filename_elements = re.split(\"[_ .]\", filename)\n data = getattr(xds.isel(time=time_increment), var)\n data = data.isel(lat=slice(None, None, -1))\n data.rio.set_spatial_dims(\"lon\", \"lat\", inplace=True)\n data.rio.write_crs(\"epsg:4326\", inplace=True)\n date = start_time + relativedelta(months=+time_increment)\n\n # # insert date of generated COG into filename\n filename_elements.pop()\n filename_elements[-1] = date.strftime(\"%Y%m\")\n filename_elements.insert(2, var)\n cog_filename = \"_\".join(filename_elements)\n # # add extension\n cog_filename = f\"{cog_filename}.tif\"\n\n with tempfile.NamedTemporaryFile() as temp_file:\n data.rio.to_raster(\n temp_file.name,\n driver=\"COG\",\n )\n s3_client.upload_file(\n Filename=temp_file.name,\n Bucket=bucket_name,\n Key=f\"{s3_folder_name}/{cog_filename}\",\n )\n\n files_processed = files_processed._append(\n {\"file_name\": name, \"COGs_created\": cog_filename},\n ignore_index=True,\n )\n\n print(f\"Generated and saved COG: {cog_filename}\")\n\n# Generate the json file with the metadata that is present in the netCDF files.\nwith tempfile.NamedTemporaryFile(mode=\"w+\") as fp:\n json.dump(xds.attrs, fp)\n json.dump({\"data_dimensions\": dict(xds.dims)}, fp)\n json.dump({\"data_variables\": list(xds.data_vars)}, fp)\n fp.flush()\n\n s3_client.upload_file(\n Filename=fp.name,\n Bucket=bucket_name,\n Key=f\"{s3_folder_name}/metadata.json\",\n )\n\n# creating the csv file with the names of files transformed.\nfiles_processed.to_csv(\n f\"s3://{bucket_name}/{s3_folder_name}/files_converted.csv\",\n)\nprint(\"Done generating COGs\")\n\n\n\n\n Back to top" + }, + { + "objectID": "cog_transformation/emit-ch4plume-v1.html", + "href": "cog_transformation/emit-ch4plume-v1.html", + "title": "EMIT Methane Point Source Plume Complexes", + "section": "", + "text": "This script was used to read the EMIT Methane Point Source Plume Complexes dataset provided in Cloud Optimized GeoTIFF (COG) format for display in the Greenhouse Gas (GHG) Center.\n\nimport re\nimport pandas as pd\nimport json\nimport tempfile\nimport boto3\n\n\nsession_ghgc = boto3.session.Session(profile_name=\"ghg_user\")\ns3_client_ghgc = session_ghgc.client(\"s3\")\nsession_veda_smce = boto3.session.Session()\ns3_client_veda_smce = session_veda_smce.client(\"s3\")\n\n# Since the plume emissions were already COGs, we just had to transform their naming convention to be stored in the STAC collection.\nSOURCE_BUCKET_NAME = \"ghgc-data-staging-uah\"\nTARGET_BUCKET_NAME = \"ghgc-data-store-dev\"\n\n\nkeys = []\nresp = s3_client_ghgc.list_objects_v2(Bucket=SOURCE_BUCKET_NAME)\nfor obj in resp[\"Contents\"]:\n if \"l3\" in obj[\"Key\"]:\n keys.append(obj[\"Key\"])\n\nfor key in keys:\n s3_obj = s3_client_ghgc.get_object(Bucket=SOURCE_BUCKET_NAME, Key=key)[\n \"Body\"\n ]\n filename = key.split(\"/\")[-1]\n filename_elements = re.split(\"[_ .]\", filename)\n\n date = re.search(\"t\\d\\d\\d\\d\\d\\d\\d\\dt\", key).group(0)\n filename_elements.insert(-1, date[1:-1])\n filename_elements.pop()\n\n cog_filename = \"_\".join(filename_elements)\n # # add extension\n cog_filename = f\"{cog_filename}.tif\"\n s3_client_veda_smce.upload_fileobj(\n Fileobj=s3_obj,\n Bucket=TARGET_BUCKET_NAME,\n Key=f\"plum_data/{cog_filename}\",\n )\n\n\n\n\n Back to top" + }, + { + "objectID": "cog_transformation/oco2-mip-co2budget-yeargrid-v1.html", + "href": "cog_transformation/oco2-mip-co2budget-yeargrid-v1.html", + "title": "OCO-2 MIP Top-Down CO₂ Budgets", + "section": "", + "text": "This script was used to transform the OCO-2 MIP Top-Down CO₂ Budgets dataset from netCDF to Cloud Optimized GeoTIFF (COG) format for display in the Greenhouse Gas (GHG) Center.\n\nimport os\nimport xarray\nimport re\nimport pandas as pd\nimport json\nimport tempfile\nimport boto3\nimport rasterio\nfrom datetime import datetime\nfrom dateutil.relativedelta import relativedelta\n\n\nsession = boto3.session.Session()\ns3_client = session.client(\"s3\")\nbucket_name = \"ghgc-data-store-dev\" # S3 bucket where the COGs are to be stored\nyear_ = datetime(2015, 1, 1) # Initialize the starting date time of the dataset.\n\nCOG_PROFILE = {\"driver\": \"COG\", \"compress\": \"DEFLATE\"}\n\n# Reading the raw netCDF files from local machine\nfiles_processed = pd.DataFrame(columns=[\"file_name\", \"COGs_created\"]) # A dataframe to keep track of the files that are converted into COGs\nfor name in os.listdir(\"new_data\"):\n ds = xarray.open_dataset(\n f\"new_data/{name}\",\n engine=\"netcdf4\",\n )\n ds = ds.rename({\"latitude\": \"lat\", \"longitude\": \"lon\"})\n # assign coords from dimensions\n ds = ds.assign_coords(lon=(((ds.lon + 180) % 360) - 180)).sortby(\"lon\")\n ds = ds.assign_coords(lat=list(ds.lat))\n\n variable = [var for var in ds.data_vars]\n\n for time_increment in range(0, len(ds.year)):\n for var in variable[2:]:\n filename = name.split(\"/ \")[-1]\n filename_elements = re.split(\"[_ .]\", filename)\n try:\n data = ds[var].sel(year=time_increment)\n date = year_ + relativedelta(years=+time_increment)\n filename_elements[-1] = date.strftime(\"%Y\")\n # # insert date of generated COG into filename\n filename_elements.insert(2, var)\n cog_filename = \"_\".join(filename_elements)\n # # add extension\n cog_filename = f\"{cog_filename}.tif\"\n except KeyError:\n data = ds[var]\n date = year_ + relativedelta(years=+(len(ds.year) - 1))\n filename_elements.pop()\n filename_elements.append(year_.strftime(\"%Y\"))\n filename_elements.append(date.strftime(\"%Y\"))\n filename_elements.insert(2, var)\n cog_filename = \"_\".join(filename_elements)\n # # add extension\n cog_filename = f\"{cog_filename}.tif\"\n\n data = data.reindex(lat=list(reversed(data.lat)))\n\n data.rio.set_spatial_dims(\"lon\", \"lat\")\n data.rio.write_crs(\"epsg:4326\", inplace=True)\n\n # generate COG\n COG_PROFILE = {\"driver\": \"COG\", \"compress\": \"DEFLATE\"}\n with tempfile.NamedTemporaryFile() as temp_file:\n data.rio.to_raster(temp_file.name, **COG_PROFILE)\n s3_client.upload_file(\n Filename=temp_file.name,\n Bucket=bucket_name,\n Key=f\"ceos_co2_flux/{cog_filename}\",\n )\n\n files_processed = files_processed._append(\n {\"file_name\": name, \"COGs_created\": cog_filename},\n ignore_index=True,\n )\n\n print(f\"Generated and saved COG: {cog_filename}\")\n\n# creating the csv file with the names of files transformed.\nfiles_processed.to_csv(\n f\"s3://{bucket_name}/ceos_co2_flux/files_converted.csv\",\n)\nprint(\"Done generating COGs\")\n\n\n\n\n Back to top" + }, + { + "objectID": "cog_transformation/tm54dvar-ch4flux-monthgrid-v1.html", + "href": "cog_transformation/tm54dvar-ch4flux-monthgrid-v1.html", + "title": "TM5-4DVar Isotopic CH₄ Inverse Fluxes", + "section": "", + "text": "This script was used to transform the TM5-4DVar Isotopic CH₄ Inverse Fluxes dataset from netCDF to Cloud Optimized GeoTIFF (COG) format for display in the Greenhouse Gas (GHG) Center.\n\nimport os\nimport xarray\nimport re\nimport pandas as pd\nimport json\nimport tempfile\nimport boto3\nfrom datetime import datetime\n\n\nsession = boto3.session.Session()\ns3_client = session.client(\"s3\")\nbucket_name = (\n \"ghgc-data-store-dev\" # S3 bucket where the COGs are stored after transformation\n)\nFOLDER_NAME = \"tm5-ch4-inverse-flux\"\n\nfiles_processed = pd.DataFrame(\n columns=[\"file_name\", \"COGs_created\"]\n) # A dataframe to keep track of the files that we have transformed into COGs\n\n# Reading the raw netCDF files from local machine\nfor name in os.listdir(FOLDER_NAME):\n xds = xarray.open_dataset(f\"{FOLDER_NAME}/{name}\", engine=\"netcdf4\")\n xds = xds.rename({\"latitude\": \"lat\", \"longitude\": \"lon\"})\n xds = xds.assign_coords(lon=(((xds.lon + 180) % 360) - 180)).sortby(\"lon\")\n variable = [var for var in xds.data_vars if \"global\" not in var]\n\n for time_increment in range(0, len(xds.months)):\n filename = name.split(\"/ \")[-1]\n filename_elements = re.split(\"[_ .]\", filename)\n start_time = datetime(int(filename_elements[-2]), time_increment + 1, 1)\n for var in variable:\n data = getattr(xds.isel(months=time_increment), var)\n data = data.isel(lat=slice(None, None, -1))\n data.rio.set_spatial_dims(\"lon\", \"lat\", inplace=True)\n data.rio.write_crs(\"epsg:4326\", inplace=True)\n\n # # insert date of generated COG into filename\n filename_elements.pop()\n filename_elements[-1] = start_time.strftime(\"%Y%m\")\n filename_elements.insert(2, var)\n cog_filename = \"_\".join(filename_elements)\n # # add extension\n cog_filename = f\"{cog_filename}.tif\"\n\n with tempfile.NamedTemporaryFile() as temp_file:\n data.rio.to_raster(\n temp_file.name,\n driver=\"COG\",\n )\n s3_client.upload_file(\n Filename=temp_file.name,\n Bucket=bucket_name,\n Key=f\"{FOLDER_NAME}/{cog_filename}\",\n )\n\n files_processed = files_processed._append(\n {\"file_name\": name, \"COGs_created\": cog_filename},\n ignore_index=True,\n )\n\n print(f\"Generated and saved COG: {cog_filename}\")\n\n# Generate the json file with the metadata that is present in the netCDF files.\nwith tempfile.NamedTemporaryFile(mode=\"w+\") as fp:\n json.dump(xds.attrs, fp)\n json.dump({\"data_dimensions\": dict(xds.dims)}, fp)\n json.dump({\"data_variables\": list(xds.data_vars)}, fp)\n fp.flush()\n\n s3_client.upload_file(\n Filename=fp.name,\n Bucket=bucket_name,\n Key=f\"{FOLDER_NAME}/metadata.json\",\n )\n\n# creating the csv file with the names of files transformed.\nfiles_processed.to_csv(\n f\"s3://{bucket_name}/{FOLDER_NAME}/files_converted.csv\",\n)\nprint(\"Done generating COGs\")\n\n\n\n\n Back to top" + }, + { + "objectID": "processing_and_verification_reports/eccodarwin-co2flux-monthgrid-v5_Processing and Verification Report.html", + "href": "processing_and_verification_reports/eccodarwin-co2flux-monthgrid-v5_Processing and Verification Report.html", + "title": "Air-Sea CO₂ Flux, ECCO-Darwin Model v5", + "section": "", + "text": "This browser does not support PDFs. Please download the PDF to view it: Download PDF.\n\n\n\n\n\n\n Back to top" + }, + { + "objectID": "processing_and_verification_reports/emit-ch4plume-v1_Processing and Verification Report.html", + "href": "processing_and_verification_reports/emit-ch4plume-v1_Processing and Verification Report.html", + "title": "EMIT Methane Point Source Plume Complexes", + "section": "", + "text": "This browser does not support PDFs. Please download the PDF to view it: Download PDF.\n\n\n\n\n\n\n Back to top" + }, + { + "objectID": "processing_and_verification_reports/oco2geos-co2-daygrid-v10r_Processing and Verification Report.html", + "href": "processing_and_verification_reports/oco2geos-co2-daygrid-v10r_Processing and Verification Report.html", + "title": "OCO-2 GEOS Column CO₂ Concentrations", + "section": "", + "text": "This browser does not support PDFs. Please download the PDF to view it: Download PDF.\n\n\n\n\n\n\n Back to top" + }, + { + "objectID": "processing_and_verification_reports/lpjwsl-wetlandch4-grid-v1_Processing and Verification Report.html", + "href": "processing_and_verification_reports/lpjwsl-wetlandch4-grid-v1_Processing and Verification Report.html", + "title": "Wetland Methane Emissions, LPJ-wsl Model", + "section": "", + "text": "This browser does not support PDFs. Please download the PDF to view it: Download PDF.\n\n\n\n\n\n\n Back to top" + }, + { + "objectID": "processing_and_verification_reports/tm54dvar-ch4flux-monthgrid-v1_Processing and Verification Report.html", + "href": "processing_and_verification_reports/tm54dvar-ch4flux-monthgrid-v1_Processing and Verification Report.html", + "title": "TM5-4DVar Isotopic CH₄ Inverse Fluxes", + "section": "", + "text": "This browser does not support PDFs. Please download the PDF to view it: Download PDF.\n\n\n\n\n\n\n Back to top" + }, + { + "objectID": "user_data_notebooks/noaa-insitu_User_Notebook.html", + "href": "user_data_notebooks/noaa-insitu_User_Notebook.html", + "title": "Atmospheric Carbon Dioxide Concentrations from NOAA Global Monitoring Laboratory", + "section": "", + "text": "Identify available dates and temporal frequency of observations for the given data. The collection processed in this notebook is the Atmospheric Carbon Dioxide Concentrations from NOAA Global Monitoring Laboratory.\nVisualize the time series data" + }, + { + "objectID": "user_data_notebooks/noaa-insitu_User_Notebook.html#approach", + "href": "user_data_notebooks/noaa-insitu_User_Notebook.html#approach", + "title": "Atmospheric Carbon Dioxide Concentrations from NOAA Global Monitoring Laboratory", + "section": "", + "text": "Identify available dates and temporal frequency of observations for the given data. The collection processed in this notebook is the Atmospheric Carbon Dioxide Concentrations from NOAA Global Monitoring Laboratory.\nVisualize the time series data" + }, + { + "objectID": "user_data_notebooks/noaa-insitu_User_Notebook.html#about-the-data", + "href": "user_data_notebooks/noaa-insitu_User_Notebook.html#about-the-data", + "title": "Atmospheric Carbon Dioxide Concentrations from NOAA Global Monitoring Laboratory", + "section": "About the Data", + "text": "About the Data\nThe Global Greenhouse Gas Reference Network (GGGRN) for the Carbon Cycle and Greenhouse Gases (CCGG) Group is part of NOAA’S Global Monitoring Laboratory (GML) in Boulder, CO. The Reference Network measures the atmospheric distribution and trends of the three main long-term drivers of climate change, carbon dioxide (CO₂), methane (CH₄), and nitrous oxide (N2O), as well as carbon monoxide (CO) and many other trace gases which help interpretation of the main GHGs. The Reference Network measurement program includes continuous in-situ measurements at 4 baseline observatories (global background sites) and 8 tall towers, as well as flask-air samples collected by volunteers at over 50 additional regional background sites and from small aircraft conducting regular vertical profiles. The air samples are returned to GML for analysis where measurements of about 55 trace gases are done. NOAA’s GGGRN maintains the World Meteorological Organization international calibration scales for CO₂, CH₄, CO, N2O, and SF6 in air. The measurements from the GGGRN serve as a comparison with measurements made by many other international laboratories, and with regional studies. They are widely used in modeling studies that infer space-time patterns of emissions and removals of greenhouse gases that are optimally consistent with the atmospheric observations, given wind patterns. These data serve as an early warning for climate “surprises”. The measurements are also helpful for the ongoing evaluation of remote sensing technologies." + }, + { + "objectID": "user_data_notebooks/noaa-insitu_User_Notebook.html#installing-the-required-libraries", + "href": "user_data_notebooks/noaa-insitu_User_Notebook.html#installing-the-required-libraries", + "title": "Atmospheric Carbon Dioxide Concentrations from NOAA Global Monitoring Laboratory", + "section": "Installing the required libraries", + "text": "Installing the required libraries\nPlease run the cell below to install the libraries required to run this notebook.\n\n%pip install matplotlib\n%pip install pandas\n%pip install requests\n\nRequirement already satisfied: matplotlib in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (3.7.1)\nRequirement already satisfied: contourpy>=1.0.1 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from matplotlib) (1.0.5)\nRequirement already satisfied: cycler>=0.10 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from matplotlib) (0.11.0)\nRequirement already satisfied: packaging>=20.0 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from matplotlib) (23.1)\nRequirement already satisfied: pillow>=6.2.0 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from matplotlib) (9.5.0)\nRequirement already satisfied: pyparsing>=2.3.1 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from matplotlib) (3.0.9)\nRequirement already satisfied: numpy>=1.20 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from matplotlib) (1.24.3)\nRequirement already satisfied: fonttools>=4.22.0 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from matplotlib) (4.25.0)\nRequirement already satisfied: python-dateutil>=2.7 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from matplotlib) (2.8.2)\nRequirement already satisfied: importlib-resources>=3.2.0 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from matplotlib) (5.12.0)\nRequirement already satisfied: kiwisolver>=1.0.1 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from matplotlib) (1.4.4)\nRequirement already satisfied: zipp>=3.1.0 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from importlib-resources>=3.2.0->matplotlib) (3.15.0)\nRequirement already satisfied: six>=1.5 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from python-dateutil>=2.7->matplotlib) (1.16.0)\nNote: you may need to restart the kernel to use updated packages.\nRequirement already satisfied: pandas in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (2.0.3)\nRequirement already satisfied: numpy>=1.20.3 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from pandas) (1.24.3)\nRequirement already satisfied: python-dateutil>=2.8.2 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from pandas) (2.8.2)\nRequirement already satisfied: tzdata>=2022.1 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from pandas) (2023.3)\nRequirement already satisfied: pytz>=2020.1 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from pandas) (2023.3)\nRequirement already satisfied: six>=1.5 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from python-dateutil>=2.8.2->pandas) (1.16.0)\nNote: you may need to restart the kernel to use updated packages.\nRequirement already satisfied: requests in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (2.31.0)\nRequirement already satisfied: certifi>=2017.4.17 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from requests) (2023.7.22)\nRequirement already satisfied: urllib3<3,>=1.21.1 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from requests) (1.26.16)\nRequirement already satisfied: idna<4,>=2.5 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from requests) (3.4)\nRequirement already satisfied: charset-normalizer<4,>=2 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from requests) (3.1.0)\nNote: you may need to restart the kernel to use updated packages.\n\n\n\nImporting required libraries\n\nimport numpy as np\nimport pandas as pd\nfrom glob import glob\nfrom io import StringIO\nimport matplotlib.pyplot as plt\nimport requests" + }, + { + "objectID": "user_data_notebooks/noaa-insitu_User_Notebook.html#reading-the-noaa-data-from-github-repo", + "href": "user_data_notebooks/noaa-insitu_User_Notebook.html#reading-the-noaa-data-from-github-repo", + "title": "Atmospheric Carbon Dioxide Concentrations from NOAA Global Monitoring Laboratory", + "section": "Reading the NOAA data from GitHub repo", + "text": "Reading the NOAA data from GitHub repo\n\ngithub_repo_owner = \"NASA-IMPACT\"\ngithub_repo_name = \"noaa-viz\"\nfolder_path_ch4, folder_path_co2 = \"flask/ch4\", \"flask/c02\"\ncombined_df_co2, combined_df_ch4 = pd.DataFrame(), pd.DataFrame()\n\n\n# Function to fetch and append a file from GitHub\ndef append_github_file(file_url):\n response = requests.get(file_url)\n response.raise_for_status()\n return response.text\n\n# Get the list of CH4 files in the specified directory using GitHub API\ngithub_api_url = f\"https://api.github.com/repos/{github_repo_owner}/{github_repo_name}/contents/{folder_path_ch4}\"\nresponse = requests.get(github_api_url)\nresponse.raise_for_status()\nfile_list_ch4 = response.json()\n\n# Get the list of CO2 files in the specified directory using GitHub API\ngithub_api_url = f\"https://api.github.com/repos/{github_repo_owner}/{github_repo_name}/contents/{folder_path_ch4}\"\nresponse = requests.get(github_api_url)\nresponse.raise_for_status()\nfile_list_co2 = response.json()" + }, + { + "objectID": "user_data_notebooks/noaa-insitu_User_Notebook.html#concatenating-the-ch4-data-into-a-single-dataframe", + "href": "user_data_notebooks/noaa-insitu_User_Notebook.html#concatenating-the-ch4-data-into-a-single-dataframe", + "title": "Atmospheric Carbon Dioxide Concentrations from NOAA Global Monitoring Laboratory", + "section": "Concatenating the CH4 data into a single DataFrame", + "text": "Concatenating the CH4 data into a single DataFrame\n\nfor file_info in file_list_ch4:\n if file_info[\"name\"].endswith(\"txt\"):\n file_content = append_github_file(file_info[\"download_url\"])\n Lines = file_content.splitlines()\n index = Lines.index(\"# VARIABLE ORDER\")+2\n df = pd.read_csv(StringIO(\"\\n\".join(Lines[index:])), delim_whitespace=True)\n combined_df_ch4 = pd.concat([combined_df_ch4, df], ignore_index=True)" + }, + { + "objectID": "user_data_notebooks/noaa-insitu_User_Notebook.html#concatenating-the-co2-data-into-a-single-dataframe", + "href": "user_data_notebooks/noaa-insitu_User_Notebook.html#concatenating-the-co2-data-into-a-single-dataframe", + "title": "Atmospheric Carbon Dioxide Concentrations from NOAA Global Monitoring Laboratory", + "section": "Concatenating the CO2 data into a single DataFrame", + "text": "Concatenating the CO2 data into a single DataFrame\n\nfor file_info in file_list_co2:\n if file_info[\"name\"].endswith(\"txt\"):\n file_content = append_github_file(file_info[\"download_url\"])\n Lines = file_content.splitlines()\n index = Lines.index(\"# VARIABLE ORDER\")+2\n df = pd.read_csv(StringIO(\"\\n\".join(Lines[index:])), delim_whitespace=True)\n combined_df_co2 = pd.concat([combined_df_co2, df], ignore_index=True)" + }, + { + "objectID": "user_data_notebooks/noaa-insitu_User_Notebook.html#visualizing-the-noaa-data-for-ch4-and-co2", + "href": "user_data_notebooks/noaa-insitu_User_Notebook.html#visualizing-the-noaa-data-for-ch4-and-co2", + "title": "Atmospheric Carbon Dioxide Concentrations from NOAA Global Monitoring Laboratory", + "section": "Visualizing the NOAA data for CH4 and CO2", + "text": "Visualizing the NOAA data for CH4 and CO2\n\nsite_to_filter = 'ABP'\nfiltered_df = combined_df_co2[combined_df_co2['site_code'] == site_to_filter]\n\nfiltered_df['datetime'] = pd.to_datetime(filtered_df['datetime'])\n\n# Set the \"Date\" column as the index\nfiltered_df.set_index('datetime', inplace=True)\n\n# Create a time series plot for 'Data' and 'Value'\nplt.figure(figsize=(12, 6))\nplt.plot(filtered_df.index, filtered_df['value'], label='Carbon Dioxide(CO2) Concentration (ppm)')\nplt.xlabel(\"Observed Date/Time\")\nplt.ylabel(\"Carbon Dioxide(CO2) Concentration (ppm)\")\nplt.title(f\"Observed Co2 Concentration {site_to_filter}\")\nplt.legend()\nplt.grid(True)\n# plt.show()\n\n/var/folders/7b/5rrvrjx51l54jchgs0tqps0c0000gn/T/ipykernel_66140/2606016741.py:4: SettingWithCopyWarning: \nA value is trying to be set on a copy of a slice from a DataFrame.\nTry using .loc[row_indexer,col_indexer] = value instead\n\nSee the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n filtered_df['datetime'] = pd.to_datetime(filtered_df['datetime'])\n\n\n\n\n\n\nsite_to_filter = 'ABP'\nfiltered_df = combined_df_ch4[combined_df_ch4['site_code'] == site_to_filter]\nfiltered_df['datetime'] = pd.to_datetime(filtered_df['datetime'])\n\n# Set the \"Date\" column as the index\nfiltered_df.set_index('datetime', inplace=True)\n\n# Create a time series plot for 'Data' and 'Value'\nplt.figure(figsize=(12, 6))\nplt.plot(filtered_df.index, filtered_df['value'], label='Methane Ch4 Concentration (ppb)')\nplt.xlabel(\"Observation Date/Time\")\nplt.ylabel(\"Methane Ch4 Concentration (ppb)\")\nplt.title(f\"Observed CH4 Concentration {site_to_filter}\")\nplt.legend()\nplt.grid(True)\nplt.show()\n\n/var/folders/7b/5rrvrjx51l54jchgs0tqps0c0000gn/T/ipykernel_66140/1635934907.py:3: SettingWithCopyWarning: \nA value is trying to be set on a copy of a slice from a DataFrame.\nTry using .loc[row_indexer,col_indexer] = value instead\n\nSee the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n filtered_df['datetime'] = pd.to_datetime(filtered_df['datetime'])" + }, + { + "objectID": "user_data_notebooks/noaa-insitu_User_Notebook.html#summary", + "href": "user_data_notebooks/noaa-insitu_User_Notebook.html#summary", + "title": "Atmospheric Carbon Dioxide Concentrations from NOAA Global Monitoring Laboratory", + "section": "Summary", + "text": "Summary\nIn this notebook we have successfully visualized the data for Atmospheric Carbon Dioxide Concentrations from NOAA Global Monitoring Laboratory." + }, + { + "objectID": "user_data_notebooks/oco2-mip-co2budget-yeargrid-v1_User_Notebook.html", + "href": "user_data_notebooks/oco2-mip-co2budget-yeargrid-v1_User_Notebook.html", + "title": "OCO-2 MIP Top-Down CO₂ Budgets", + "section": "", + "text": "Identify available dates and temporal frequency of observations for the given collection using the GHGC API /stac endpoint. The collection processed in this notebook is the OCO-2 MIP Top-Down CO₂ Budgets data product.\nPass the STAC item into the raster API /stac/tilejson.jsonendpoint.\nUsing folium.plugins.DualMap, we will visualize two tiles (side-by-side), allowing us to compare time points.\nAfter the visualization, we will perform zonal statistics for a given polygon." + }, + { + "objectID": "user_data_notebooks/oco2-mip-co2budget-yeargrid-v1_User_Notebook.html#approach", + "href": "user_data_notebooks/oco2-mip-co2budget-yeargrid-v1_User_Notebook.html#approach", + "title": "OCO-2 MIP Top-Down CO₂ Budgets", + "section": "", + "text": "Identify available dates and temporal frequency of observations for the given collection using the GHGC API /stac endpoint. The collection processed in this notebook is the OCO-2 MIP Top-Down CO₂ Budgets data product.\nPass the STAC item into the raster API /stac/tilejson.jsonendpoint.\nUsing folium.plugins.DualMap, we will visualize two tiles (side-by-side), allowing us to compare time points.\nAfter the visualization, we will perform zonal statistics for a given polygon." + }, + { + "objectID": "user_data_notebooks/oco2-mip-co2budget-yeargrid-v1_User_Notebook.html#about-the-data", + "href": "user_data_notebooks/oco2-mip-co2budget-yeargrid-v1_User_Notebook.html#about-the-data", + "title": "OCO-2 MIP Top-Down CO₂ Budgets", + "section": "About the Data", + "text": "About the Data\nThe Committee on Earth Observation Satellites (CEOS) Atmospheric Composition - Virtual Constellation (AC-VC) Greenhouse Gas (GHG) team has generated the CEOS CO₂ Budgets dataset, which provides annual top-down carbon dioxide (CO2) emissions and removals from 2015 - 2020 gridded globally at 1° resolution, and as national totals. Data is provided in units of grams of carbon dioxide per square meter per year (g CO2/m2/yr). Only a subset of the full dataset is displayed in the GHG Center explore view." + }, + { + "objectID": "user_data_notebooks/oco2-mip-co2budget-yeargrid-v1_User_Notebook.html#installing-the-required-libraries", + "href": "user_data_notebooks/oco2-mip-co2budget-yeargrid-v1_User_Notebook.html#installing-the-required-libraries", + "title": "OCO-2 MIP Top-Down CO₂ Budgets", + "section": "Installing the required libraries", + "text": "Installing the required libraries\nPlease run the cell below to install the libraries required to run this notebook.\n\n%pip install requests\n%pip install folium\n%pip install rasterstats\n%pip install pystac_client" + }, + { + "objectID": "user_data_notebooks/oco2-mip-co2budget-yeargrid-v1_User_Notebook.html#querying-the-stac-api", + "href": "user_data_notebooks/oco2-mip-co2budget-yeargrid-v1_User_Notebook.html#querying-the-stac-api", + "title": "OCO-2 MIP Top-Down CO₂ Budgets", + "section": "Querying the STAC API", + "text": "Querying the STAC API\n\nimport requests\nfrom folium import Map, TileLayer\nfrom pystac_client import Client\n\n\n# Provide STAC and RASTER API endpoints\nSTAC_API_URL = \"http://ghg.center/api/stac\"\nRASTER_API_URL = \"https://ghg.center/api/raster\"\n\n# Please use the collection name similar to the one used in STAC collection.\n# Name of the collection for CEOS National Top-Down CO₂ Budgets dataset. \ncollection_name = \"oco2-mip-co2budget-yeargrid-v1\"\n\n\n# Fetching the collection from STAC collections using appropriate endpoint.\ncollection = requests.get(f\"{STAC_API_URL}/collections/{collection_name}\").json()\ncollection\n\nExamining the contents of our collection under the temporal variable, we see that the data is available from January 2015 to December 2020. By looking at the dashboard:time density, we observe that the periodic frequency of these observations is yearly.\n\ndef get_item_count(collection_id):\n count = 0\n items_url = f\"{STAC_API_URL}/collections/{collection_id}/items\"\n\n while True:\n response = requests.get(items_url)\n\n if not response.ok:\n print(\"error getting items\")\n exit()\n\n stac = response.json()\n count += int(stac[\"context\"].get(\"returned\", 0))\n next = [link for link in stac[\"links\"] if link[\"rel\"] == \"next\"]\n\n if not next:\n break\n items_url = next[0][\"href\"]\n\n return count\n\n\n# Check total number of items available\nnumber_of_items = get_item_count(collection_name)\nitems = requests.get(f\"{STAC_API_URL}/collections/{collection_name}/items?limit={number_of_items}\").json()[\"features\"]\nprint(f\"Found {len(items)} items\")\n\n\n# Examining the first item in the collection\nitems[0]\n\nBelow, we are entering the minimum and maximum values to provide our upper and lower bounds in rescale_values." + }, + { + "objectID": "user_data_notebooks/oco2-mip-co2budget-yeargrid-v1_User_Notebook.html#exploring-changes-in-co₂-levels-using-the-raster-api", + "href": "user_data_notebooks/oco2-mip-co2budget-yeargrid-v1_User_Notebook.html#exploring-changes-in-co₂-levels-using-the-raster-api", + "title": "OCO-2 MIP Top-Down CO₂ Budgets", + "section": "Exploring Changes in CO₂ Levels Using the Raster API", + "text": "Exploring Changes in CO₂ Levels Using the Raster API\nIn this notebook, we will explore the global changes of CO₂ budgets over time in urban regions. We will visualize the outputs on a map using folium.\n\n# to access the year value from each item more easily, this will let us query more explicity by year and month (e.g., 2020-02)\nitems = {item[\"properties\"][\"datetime\"]: item for item in items} \nasset_name = \"ff\" #fossil fuel\n\n\n# Fetching the min and max values for a specific item\nrescale_values = {\"max\":items[list(items.keys())[0]][\"assets\"][asset_name][\"raster:bands\"][0][\"histogram\"][\"max\"], \"min\":items[list(items.keys())[0]][\"assets\"][asset_name][\"raster:bands\"][0][\"histogram\"][\"min\"]}\n\nNow, we will pass the item id, collection name, and rescaling_factor to the Raster API endpoint. We will do this twice, once for 2020 and again for 2019, so that we can visualize each event independently.\n\ncolor_map = \"magma\"\nco2_flux_1 = requests.get(\n f\"{RASTER_API_URL}/stac/tilejson.json?collection={items[list(items.keys())[0]]['collection']}&item={items[list(items.keys())[0]]['id']}\"\n f\"&assets={asset_name}\"\n f\"&color_formula=gamma+r+1.05&colormap_name={color_map}\"\n f\"&rescale={rescale_values['min']},{rescale_values['max']}\", \n).json()\nco2_flux_1\n\n\nco2_flux_2 = requests.get(\n f\"{RASTER_API_URL}/stac/tilejson.json?collection={items[list(items.keys())[1]]['collection']}&item={items[list(items.keys())[1]]['id']}\"\n f\"&assets={asset_name}\"\n f\"&color_formula=gamma+r+1.05&colormap_name={color_map}\"\n f\"&rescale={rescale_values['min']},{rescale_values['max']}\", \n).json()\nco2_flux_2" + }, + { + "objectID": "user_data_notebooks/oco2-mip-co2budget-yeargrid-v1_User_Notebook.html#visualizing-co₂-emissions", + "href": "user_data_notebooks/oco2-mip-co2budget-yeargrid-v1_User_Notebook.html#visualizing-co₂-emissions", + "title": "OCO-2 MIP Top-Down CO₂ Budgets", + "section": "Visualizing CO₂ Emissions", + "text": "Visualizing CO₂ Emissions\n\n# We'll import folium to map and folium.plugins to allow mapping side-by-side\nimport folium\nimport folium.plugins\n\n# Set initial zoom and center of map for CO₂ Layer\n# Centre of map [latitude,longitude]\nmap_ = folium.plugins.DualMap(location=(34, -118), zoom_start=6)\n\n\nmap_layer_2020 = TileLayer(\n tiles=co2_flux_1[\"tiles\"][0],\n attr=\"GHG\",\n opacity=0.5,\n)\nmap_layer_2020.add_to(map_.m1)\n\nmap_layer_2019 = TileLayer(\n tiles=co2_flux_2[\"tiles\"][0],\n attr=\"GHG\",\n opacity=0.5,\n)\nmap_layer_2019.add_to(map_.m2)\n\n# visualising the map\nmap_" + }, + { + "objectID": "user_data_notebooks/oco2-mip-co2budget-yeargrid-v1_User_Notebook.html#visualizing-the-data-as-a-time-series", + "href": "user_data_notebooks/oco2-mip-co2budget-yeargrid-v1_User_Notebook.html#visualizing-the-data-as-a-time-series", + "title": "OCO-2 MIP Top-Down CO₂ Budgets", + "section": "Visualizing the Data as a Time Series", + "text": "Visualizing the Data as a Time Series\nWe can now explore the fossil fuel emission time series (January 2015 -December 2020) available for the Dallas, Texas area of the U.S. We can plot the data set using the code below:\n\nimport matplotlib.pyplot as plt\n\nfig = plt.figure(figsize=(20, 10))\n\n\nplt.plot(\n df[\"datetime\"],\n df[\"max\"],\n color=\"red\",\n linestyle=\"-\",\n linewidth=0.5,\n label=\"CO2 emissions\",\n)\n\nplt.legend()\nplt.xlabel(\"Years\")\nplt.ylabel(\"CO2 emissions gC/m2/year1\")\nplt.title(\"CO2 emission Values for Texas, Dallas (2015-2020)\")\n\n\nprint(items[2][\"properties\"][\"datetime\"])\n\n\nco2_flux_3 = requests.get(\n f\"{RASTER_API_URL}/stac/tilejson.json?collection={items[2]['collection']}&item={items[2]['id']}\"\n f\"&assets={asset_name}\"\n f\"&color_formula=gamma+r+1.05&colormap_name={color_map}\"\n f\"&rescale={rescale_values['min']},{rescale_values['max']}\",\n).json()\nco2_flux_3\n\n\n# Use bbox initial zoom and map\n# Set up a map located w/in event bounds\nimport folium\n\naoi_map_bbox = Map(\n tiles=\"OpenStreetMap\",\n location=[\n 30,-100\n ],\n zoom_start=6.8,\n)\n\nmap_layer = TileLayer(\n tiles=co2_flux_3[\"tiles\"][0],\n attr=\"GHG\", opacity = 0.7\n)\n\nmap_layer.add_to(aoi_map_bbox)\n\naoi_map_bbox" + }, + { + "objectID": "user_data_notebooks/oco2-mip-co2budget-yeargrid-v1_User_Notebook.html#summary", + "href": "user_data_notebooks/oco2-mip-co2budget-yeargrid-v1_User_Notebook.html#summary", + "title": "OCO-2 MIP Top-Down CO₂ Budgets", + "section": "Summary", + "text": "Summary\nIn this notebook we have successfully explored, analyzed, and visualized the STAC collection for OCO-2 MIP Top-Down CO₂ Budgets." + }, + { + "objectID": "user_data_notebooks/gosat-based-ch4budget-yeargrid-v1_User_Notebook.html", + "href": "user_data_notebooks/gosat-based-ch4budget-yeargrid-v1_User_Notebook.html", + "title": "GOSAT-based Top-down Total and Natural Methane Emissions", + "section": "", + "text": "Identify available dates and temporal frequency of observations for the given collection using the GHGC API /stac endpoint. The collection processed in this notebook is the gridded methane emissions data product.\nPass the STAC item into the raster API /stac/tilejson.jsonendpoint.\nUsing folium.plugins.DualMap, we will visualize two tiles (side-by-side), allowing us to compare time points.\nAfter the visualization, we will perform zonal statistics for a given polygon." + }, + { + "objectID": "user_data_notebooks/gosat-based-ch4budget-yeargrid-v1_User_Notebook.html#approach", + "href": "user_data_notebooks/gosat-based-ch4budget-yeargrid-v1_User_Notebook.html#approach", + "title": "GOSAT-based Top-down Total and Natural Methane Emissions", + "section": "", + "text": "Identify available dates and temporal frequency of observations for the given collection using the GHGC API /stac endpoint. The collection processed in this notebook is the gridded methane emissions data product.\nPass the STAC item into the raster API /stac/tilejson.jsonendpoint.\nUsing folium.plugins.DualMap, we will visualize two tiles (side-by-side), allowing us to compare time points.\nAfter the visualization, we will perform zonal statistics for a given polygon." + }, + { + "objectID": "user_data_notebooks/gosat-based-ch4budget-yeargrid-v1_User_Notebook.html#about-the-data", + "href": "user_data_notebooks/gosat-based-ch4budget-yeargrid-v1_User_Notebook.html#about-the-data", + "title": "GOSAT-based Top-down Total and Natural Methane Emissions", + "section": "About the Data", + "text": "About the Data\nThe NASA Carbon Monitoring System Flux (CMS-Flux) team analyzed remote sensing observations from Japan’s Greenhouse gases Observing SATellite (GOSAT) to produce the global Committee on Earth Observation Satellites (CEOS) CH₄ Emissions data product. They used an analytic Bayesian inversion approach and the GEOS-Chem global chemistry transport model to quantify annual methane (CH₄) emissions and their uncertainties at a spatial resolution of 1° by 1° and then projected these to each country for 2019." + }, + { + "objectID": "user_data_notebooks/gosat-based-ch4budget-yeargrid-v1_User_Notebook.html#querying-the-stac-api", + "href": "user_data_notebooks/gosat-based-ch4budget-yeargrid-v1_User_Notebook.html#querying-the-stac-api", + "title": "GOSAT-based Top-down Total and Natural Methane Emissions", + "section": "Querying the STAC API", + "text": "Querying the STAC API\n\nimport requests\nfrom folium import Map, TileLayer\nfrom pystac_client import Client\n\n\n# Provide STAC and RASTER API endpoints\nSTAC_API_URL = \"http://ghg.center/api/stac\"\nRASTER_API_URL = \"https://ghg.center/api/raster\"\n\n# Please use the collection name similar to the one used in STAC collection.\n\n# Name of the collection for gosat budget methane. \ncollection_name = \"gosat-based-ch4budget-yeargrid-v1\"\n\n\n# Fetching the collection from STAC collections using appropriate endpoint.\ncollection = requests.get(f\"{STAC_API_URL}/collections/{collection_name}\").json()\ncollection\n\n{'id': 'gosat-based-ch4budget-yeargrid-v1',\n 'type': 'Collection',\n 'links': [{'rel': 'items',\n 'type': 'application/geo+json',\n 'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/collections/gosat-based-ch4budget-yeargrid-v1/items'},\n {'rel': 'parent',\n 'type': 'application/json',\n 'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/'},\n {'rel': 'root',\n 'type': 'application/json',\n 'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/'},\n {'rel': 'self',\n 'type': 'application/json',\n 'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/collections/gosat-based-ch4budget-yeargrid-v1'}],\n 'title': 'GOSAT-based Top-down Methane Budgets.',\n 'assets': None,\n 'extent': {'spatial': {'bbox': [[-180.5, -90.5, 179.5, 89.5]]},\n 'temporal': {'interval': [['2019-01-01T00:00:00+00:00',\n '2019-12-31T00:00:00+00:00']]}},\n 'license': 'CC-BY-4.0',\n 'keywords': None,\n 'providers': None,\n 'summaries': {'datetime': ['2019-01-01T00:00:00Z']},\n 'description': 'Annual methane emissions gridded globally at 1° resolution for 2019, version.',\n 'item_assets': {'post-gas': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'description': 'TBD'},\n 'post-geo': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'description': 'TBD'},\n 'post-oil': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'description': 'TBD'},\n 'post-coal': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'description': 'TBD'},\n 'post-fire': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'description': 'TBD'},\n 'post-rice': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'description': 'TBD'},\n 'prior-gas': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'description': 'TBD'},\n 'prior-geo': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'description': 'TBD'},\n 'prior-oil': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'description': 'TBD'},\n 'post-total': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'description': 'TBD'},\n 'post-waste': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'description': 'TBD'},\n 'prior-coal': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'description': 'TBD'},\n 'prior-fire': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'description': 'TBD'},\n 'prior-rice': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'description': 'TBD'},\n 'prior-total': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'description': 'TBD'},\n 'prior-waste': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'description': 'TBD'},\n 'post-wetland': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'description': 'TBD'},\n 'prior-wetland': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'description': 'TBD'},\n 'post-livestock': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'description': 'TBD'},\n 'prior-livestock': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'description': 'TBD'},\n 'post-gas-uncertainty': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'description': 'TBD'},\n 'post-geo-uncertainty': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'description': 'TBD'},\n 'post-oil-uncertainty': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'description': 'TBD'},\n 'post-coal-uncertainty': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'description': 'TBD'},\n 'post-fire-uncertainty': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'description': 'TBD'},\n 'post-rice-uncertainty': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'description': 'TBD'},\n 'prior-gas-uncertainty': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'description': 'TBD'},\n 'prior-geo-uncertainty': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'description': 'TBD'},\n 'prior-oil-uncertainty': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'description': 'TBD'},\n 'post-waste-uncertainty': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'description': 'TBD'},\n 'prior-coal-uncertainty': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'description': 'TBD'},\n 'prior-rice-uncertainty': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'description': 'TBD'},\n 'prior-waste-uncertainty': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'description': 'TBD'},\n 'post-wetland-uncertainty': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'description': 'TBD'},\n 'prior-wetland-uncertainty': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'description': 'TBD'},\n 'post-livestock-uncertainty': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'description': 'TBD'},\n 'prior-livestock-uncertainty': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'description': 'TBD'}},\n 'stac_version': '1.0.0',\n 'stac_extensions': None,\n 'dashboard:is_periodic': False,\n 'dashboard:time_density': 'year'}\n\n\nExamining the contents of our collection under the temporal variable, we see that the data is available from January 2012 to December 2018. By looking at the dashboard:time density, we observe that the data is available for only one year, i.e. 2019.\n\ndef get_item_count(collection_id):\n count = 0\n items_url = f\"{STAC_API_URL}/collections/{collection_id}/items\"\n\n while True:\n response = requests.get(items_url)\n\n if not response.ok:\n print(\"error getting items\")\n exit()\n\n stac = response.json()\n count += int(stac[\"context\"].get(\"returned\", 0))\n next = [link for link in stac[\"links\"] if link[\"rel\"] == \"next\"]\n\n if not next:\n break\n items_url = next[0][\"href\"]\n\n return count\n\n\n# Check total number of items available\nnumber_of_items = get_item_count(collection_name)\nitems = requests.get(f\"{STAC_API_URL}/collections/{collection_name}/items?limit={number_of_items}\").json()[\"features\"]\nprint(f\"Found {len(items)} items\")\n\nFound 1 items\n\n\n\n# Examining the first item in the collection\nitems[0]\n\n{'id': 'gosat-based-ch4budget-yeargrid-v1-2019',\n 'bbox': [-180.5, -90.5, 179.5, 89.5],\n 'type': 'Feature',\n 'links': [{'rel': 'collection',\n 'type': 'application/json',\n 'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/collections/gosat-based-ch4budget-yeargrid-v1'},\n {'rel': 'parent',\n 'type': 'application/json',\n 'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/collections/gosat-based-ch4budget-yeargrid-v1'},\n {'rel': 'root',\n 'type': 'application/json',\n 'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/'},\n {'rel': 'self',\n 'type': 'application/geo+json',\n 'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/collections/gosat-based-ch4budget-yeargrid-v1/items/gosat-based-ch4budget-yeargrid-v1-2019'}],\n 'assets': {'post-gas': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_post_gas_GEOS_CHEM_2019.tif',\n 'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'proj:bbox': [-180.5, -90.5, 179.5, 89.5],\n 'proj:epsg': 4326.0,\n 'proj:shape': [180.0, 360.0],\n 'description': 'TBD',\n 'raster:bands': [{'scale': 1.0,\n 'offset': 0.0,\n 'sampling': 'area',\n 'data_type': 'float32',\n 'histogram': {'max': 0.6140491962432861,\n 'min': -0.4103066623210907,\n 'count': 11.0,\n 'buckets': [1.0, 0.0, 2.0, 23.0, 64734.0, 30.0, 7.0, 2.0, 0.0, 1.0]},\n 'statistics': {'mean': 0.00043242290848866105,\n 'stddev': 0.006180576980113983,\n 'maximum': 0.6140491962432861,\n 'minimum': -0.4103066623210907,\n 'valid_percent': 0.00154320987654321}}],\n 'proj:geometry': {'type': 'Polygon',\n 'coordinates': [[[-180.5, -90.5],\n [179.5, -90.5],\n [179.5, 89.5],\n [-180.5, 89.5],\n [-180.5, -90.5]]]},\n 'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},\n 'name': 'WGS 84',\n 'type': 'GeographicCRS',\n 'datum': {'name': 'World Geodetic System 1984',\n 'type': 'GeodeticReferenceFrame',\n 'ellipsoid': {'name': 'WGS 84',\n 'semi_major_axis': 6378137.0,\n 'inverse_flattening': 298.257223563}},\n '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',\n 'coordinate_system': {'axis': [{'name': 'Geodetic latitude',\n 'unit': 'degree',\n 'direction': 'north',\n 'abbreviation': 'Lat'},\n {'name': 'Geodetic longitude',\n 'unit': 'degree',\n 'direction': 'east',\n 'abbreviation': 'Lon'}],\n 'subtype': 'ellipsoidal'}},\n 'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},\n 'post-geo': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_post_geo_GEOS_CHEM_2019.tif',\n 'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'proj:bbox': [-180.5, -90.5, 179.5, 89.5],\n 'proj:epsg': 4326.0,\n 'proj:shape': [180.0, 360.0],\n 'description': 'TBD',\n 'raster:bands': [{'scale': 1.0,\n 'offset': 0.0,\n 'sampling': 'area',\n 'data_type': 'float32',\n 'histogram': {'max': 1.0034276247024536,\n 'min': -1.0016025304794312,\n 'count': 11.0,\n 'buckets': [1.0, 0.0, 1.0, 5.0, 63425.0, 1354.0, 10.0, 2.0, 1.0, 1.0]},\n 'statistics': {'mean': 0.0003479516308289021,\n 'stddev': 0.0093332938849926,\n 'maximum': 1.0034276247024536,\n 'minimum': -1.0016025304794312,\n 'valid_percent': 0.00154320987654321}}],\n 'proj:geometry': {'type': 'Polygon',\n 'coordinates': [[[-180.5, -90.5],\n [179.5, -90.5],\n [179.5, 89.5],\n [-180.5, 89.5],\n [-180.5, -90.5]]]},\n 'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},\n 'name': 'WGS 84',\n 'type': 'GeographicCRS',\n 'datum': {'name': 'World Geodetic System 1984',\n 'type': 'GeodeticReferenceFrame',\n 'ellipsoid': {'name': 'WGS 84',\n 'semi_major_axis': 6378137.0,\n 'inverse_flattening': 298.257223563}},\n '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',\n 'coordinate_system': {'axis': [{'name': 'Geodetic latitude',\n 'unit': 'degree',\n 'direction': 'north',\n 'abbreviation': 'Lat'},\n {'name': 'Geodetic longitude',\n 'unit': 'degree',\n 'direction': 'east',\n 'abbreviation': 'Lon'}],\n 'subtype': 'ellipsoidal'}},\n 'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},\n 'post-oil': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_post_oil_GEOS_CHEM_2019.tif',\n 'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'proj:bbox': [-180.5, -90.5, 179.5, 89.5],\n 'proj:epsg': 4326.0,\n 'proj:shape': [180.0, 360.0],\n 'description': 'TBD',\n 'raster:bands': [{'scale': 1.0,\n 'offset': 0.0,\n 'sampling': 'area',\n 'data_type': 'float32',\n 'histogram': {'max': 3.457329273223877,\n 'min': -0.7987076640129089,\n 'count': 11.0,\n 'buckets': [2.0, 64681.0, 108.0, 4.0, 3.0, 1.0, 0.0, 0.0, 0.0, 1.0]},\n 'statistics': {'mean': 0.0004447368555702269,\n 'stddev': 0.01879083551466465,\n 'maximum': 3.457329273223877,\n 'minimum': -0.7987076640129089,\n 'valid_percent': 0.00154320987654321}}],\n 'proj:geometry': {'type': 'Polygon',\n 'coordinates': [[[-180.5, -90.5],\n [179.5, -90.5],\n [179.5, 89.5],\n [-180.5, 89.5],\n [-180.5, -90.5]]]},\n 'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},\n 'name': 'WGS 84',\n 'type': 'GeographicCRS',\n 'datum': {'name': 'World Geodetic System 1984',\n 'type': 'GeodeticReferenceFrame',\n 'ellipsoid': {'name': 'WGS 84',\n 'semi_major_axis': 6378137.0,\n 'inverse_flattening': 298.257223563}},\n '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',\n 'coordinate_system': {'axis': [{'name': 'Geodetic latitude',\n 'unit': 'degree',\n 'direction': 'north',\n 'abbreviation': 'Lat'},\n {'name': 'Geodetic longitude',\n 'unit': 'degree',\n 'direction': 'east',\n 'abbreviation': 'Lon'}],\n 'subtype': 'ellipsoidal'}},\n 'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},\n 'post-coal': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_post_coal_GEOS_CHEM_2019.tif',\n 'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'proj:bbox': [-180.5, -90.5, 179.5, 89.5],\n 'proj:epsg': 4326.0,\n 'proj:shape': [180.0, 360.0],\n 'description': 'TBD',\n 'raster:bands': [{'scale': 1.0,\n 'offset': 0.0,\n 'sampling': 'area',\n 'data_type': 'float32',\n 'histogram': {'max': 1.1035711765289307,\n 'min': -0.9143016934394836,\n 'count': 11.0,\n 'buckets': [1.0, 1.0, 1.0, 1.0, 64710.0, 62.0, 19.0, 3.0, 1.0, 1.0]},\n 'statistics': {'mean': 0.0003904950572177768,\n 'stddev': 0.01172551792114973,\n 'maximum': 1.1035711765289307,\n 'minimum': -0.9143016934394836,\n 'valid_percent': 0.00154320987654321}}],\n 'proj:geometry': {'type': 'Polygon',\n 'coordinates': [[[-180.5, -90.5],\n [179.5, -90.5],\n [179.5, 89.5],\n [-180.5, 89.5],\n [-180.5, -90.5]]]},\n 'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},\n 'name': 'WGS 84',\n 'type': 'GeographicCRS',\n 'datum': {'name': 'World Geodetic System 1984',\n 'type': 'GeodeticReferenceFrame',\n 'ellipsoid': {'name': 'WGS 84',\n 'semi_major_axis': 6378137.0,\n 'inverse_flattening': 298.257223563}},\n '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',\n 'coordinate_system': {'axis': [{'name': 'Geodetic latitude',\n 'unit': 'degree',\n 'direction': 'north',\n 'abbreviation': 'Lat'},\n {'name': 'Geodetic longitude',\n 'unit': 'degree',\n 'direction': 'east',\n 'abbreviation': 'Lon'}],\n 'subtype': 'ellipsoidal'}},\n 'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},\n 'post-fire': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_post_fire_GEOS_CHEM_2019.tif',\n 'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'proj:bbox': [-180.5, -90.5, 179.5, 89.5],\n 'proj:epsg': 4326.0,\n 'proj:shape': [180.0, 360.0],\n 'description': 'TBD',\n 'raster:bands': [{'scale': 1.0,\n 'offset': 0.0,\n 'sampling': 'area',\n 'data_type': 'float32',\n 'histogram': {'max': 0.7065173387527466,\n 'min': -0.08211488276720047,\n 'count': 11.0,\n 'buckets': [103.0, 64685.0, 11.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0]},\n 'statistics': {'mean': 0.00020585705351550132,\n 'stddev': 0.00356540665961802,\n 'maximum': 0.7065173387527466,\n 'minimum': -0.08211488276720047,\n 'valid_percent': 0.00154320987654321}}],\n 'proj:geometry': {'type': 'Polygon',\n 'coordinates': [[[-180.5, -90.5],\n [179.5, -90.5],\n [179.5, 89.5],\n [-180.5, 89.5],\n [-180.5, -90.5]]]},\n 'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},\n 'name': 'WGS 84',\n 'type': 'GeographicCRS',\n 'datum': {'name': 'World Geodetic System 1984',\n 'type': 'GeodeticReferenceFrame',\n 'ellipsoid': {'name': 'WGS 84',\n 'semi_major_axis': 6378137.0,\n 'inverse_flattening': 298.257223563}},\n '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',\n 'coordinate_system': {'axis': [{'name': 'Geodetic latitude',\n 'unit': 'degree',\n 'direction': 'north',\n 'abbreviation': 'Lat'},\n {'name': 'Geodetic longitude',\n 'unit': 'degree',\n 'direction': 'east',\n 'abbreviation': 'Lon'}],\n 'subtype': 'ellipsoidal'}},\n 'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},\n 'post-rice': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_post_rice_GEOS_CHEM_2019.tif',\n 'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'proj:bbox': [-180.5, -90.5, 179.5, 89.5],\n 'proj:epsg': 4326.0,\n 'proj:shape': [180.0, 360.0],\n 'description': 'TBD',\n 'raster:bands': [{'scale': 1.0,\n 'offset': 0.0,\n 'sampling': 'area',\n 'data_type': 'float32',\n 'histogram': {'max': 1.3836066722869873,\n 'min': -1.1384793519973755,\n 'count': 11.0,\n 'buckets': [1.0, 4.0, 12.0, 20.0, 64581.0, 132.0, 30.0, 11.0, 4.0, 5.0]},\n 'statistics': {'mean': 0.0010437712771818042,\n 'stddev': 0.024994080886244774,\n 'maximum': 1.3836066722869873,\n 'minimum': -1.1384793519973755,\n 'valid_percent': 0.00154320987654321}}],\n 'proj:geometry': {'type': 'Polygon',\n 'coordinates': [[[-180.5, -90.5],\n [179.5, -90.5],\n [179.5, 89.5],\n [-180.5, 89.5],\n [-180.5, -90.5]]]},\n 'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},\n 'name': 'WGS 84',\n 'type': 'GeographicCRS',\n 'datum': {'name': 'World Geodetic System 1984',\n 'type': 'GeodeticReferenceFrame',\n 'ellipsoid': {'name': 'WGS 84',\n 'semi_major_axis': 6378137.0,\n 'inverse_flattening': 298.257223563}},\n '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',\n 'coordinate_system': {'axis': [{'name': 'Geodetic latitude',\n 'unit': 'degree',\n 'direction': 'north',\n 'abbreviation': 'Lat'},\n {'name': 'Geodetic longitude',\n 'unit': 'degree',\n 'direction': 'east',\n 'abbreviation': 'Lon'}],\n 'subtype': 'ellipsoidal'}},\n 'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},\n 'prior-gas': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_prior_gas_GEOS_CHEM_2019.tif',\n 'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'proj:bbox': [-180.5, -90.5, 179.5, 89.5],\n 'proj:epsg': 4326.0,\n 'proj:shape': [180.0, 360.0],\n 'description': 'TBD',\n 'raster:bands': [{'scale': 1.0,\n 'offset': 0.0,\n 'sampling': 'area',\n 'data_type': 'float32',\n 'histogram': {'max': 0.2977725863456726,\n 'min': 0.0,\n 'count': 11.0,\n 'buckets': [64659.0, 93.0, 27.0, 8.0, 2.0, 4.0, 2.0, 2.0, 2.0, 1.0]},\n 'statistics': {'mean': 0.00037746498128399253,\n 'stddev': 0.00403926195576787,\n 'maximum': 0.2977725863456726,\n 'minimum': 0.0,\n 'valid_percent': 0.00154320987654321}}],\n 'proj:geometry': {'type': 'Polygon',\n 'coordinates': [[[-180.5, -90.5],\n [179.5, -90.5],\n [179.5, 89.5],\n [-180.5, 89.5],\n [-180.5, -90.5]]]},\n 'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},\n 'name': 'WGS 84',\n 'type': 'GeographicCRS',\n 'datum': {'name': 'World Geodetic System 1984',\n 'type': 'GeodeticReferenceFrame',\n 'ellipsoid': {'name': 'WGS 84',\n 'semi_major_axis': 6378137.0,\n 'inverse_flattening': 298.257223563}},\n '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',\n 'coordinate_system': {'axis': [{'name': 'Geodetic latitude',\n 'unit': 'degree',\n 'direction': 'north',\n 'abbreviation': 'Lat'},\n {'name': 'Geodetic longitude',\n 'unit': 'degree',\n 'direction': 'east',\n 'abbreviation': 'Lon'}],\n 'subtype': 'ellipsoidal'}},\n 'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},\n 'prior-geo': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_prior_geo_GEOS_CHEM_2019.tif',\n 'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'proj:bbox': [-180.5, -90.5, 179.5, 89.5],\n 'proj:epsg': 4326.0,\n 'proj:shape': [180.0, 360.0],\n 'description': 'TBD',\n 'raster:bands': [{'scale': 1.0,\n 'offset': 0.0,\n 'sampling': 'area',\n 'data_type': 'float32',\n 'histogram': {'max': 1.8356599807739258,\n 'min': 0.0,\n 'count': 11.0,\n 'buckets': [64780.0, 15.0, 4.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0]},\n 'statistics': {'mean': 0.0004932624287903309,\n 'stddev': 0.009640775620937347,\n 'maximum': 1.8356599807739258,\n 'minimum': 0.0,\n 'valid_percent': 0.00154320987654321}}],\n 'proj:geometry': {'type': 'Polygon',\n 'coordinates': [[[-180.5, -90.5],\n [179.5, -90.5],\n [179.5, 89.5],\n [-180.5, 89.5],\n [-180.5, -90.5]]]},\n 'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},\n 'name': 'WGS 84',\n 'type': 'GeographicCRS',\n 'datum': {'name': 'World Geodetic System 1984',\n 'type': 'GeodeticReferenceFrame',\n 'ellipsoid': {'name': 'WGS 84',\n 'semi_major_axis': 6378137.0,\n 'inverse_flattening': 298.257223563}},\n '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',\n 'coordinate_system': {'axis': [{'name': 'Geodetic latitude',\n 'unit': 'degree',\n 'direction': 'north',\n 'abbreviation': 'Lat'},\n {'name': 'Geodetic longitude',\n 'unit': 'degree',\n 'direction': 'east',\n 'abbreviation': 'Lon'}],\n 'subtype': 'ellipsoidal'}},\n 'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},\n 'prior-oil': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_prior_oil_GEOS_CHEM_2019.tif',\n 'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'proj:bbox': [-180.5, -90.5, 179.5, 89.5],\n 'proj:epsg': 4326.0,\n 'proj:shape': [180.0, 360.0],\n 'description': 'TBD',\n 'raster:bands': [{'scale': 1.0,\n 'offset': 0.0,\n 'sampling': 'area',\n 'data_type': 'float32',\n 'histogram': {'max': 1.287477731704712,\n 'min': 0.0,\n 'count': 11.0,\n 'buckets': [64734.0, 40.0, 15.0, 3.0, 1.0, 4.0, 0.0, 1.0, 1.0, 1.0]},\n 'statistics': {'mean': 0.0006414719391614199,\n 'stddev': 0.01284099742770195,\n 'maximum': 1.287477731704712,\n 'minimum': 0.0,\n 'valid_percent': 0.00154320987654321}}],\n 'proj:geometry': {'type': 'Polygon',\n 'coordinates': [[[-180.5, -90.5],\n [179.5, -90.5],\n [179.5, 89.5],\n [-180.5, 89.5],\n [-180.5, -90.5]]]},\n 'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},\n 'name': 'WGS 84',\n 'type': 'GeographicCRS',\n 'datum': {'name': 'World Geodetic System 1984',\n 'type': 'GeodeticReferenceFrame',\n 'ellipsoid': {'name': 'WGS 84',\n 'semi_major_axis': 6378137.0,\n 'inverse_flattening': 298.257223563}},\n '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',\n 'coordinate_system': {'axis': [{'name': 'Geodetic latitude',\n 'unit': 'degree',\n 'direction': 'north',\n 'abbreviation': 'Lat'},\n {'name': 'Geodetic longitude',\n 'unit': 'degree',\n 'direction': 'east',\n 'abbreviation': 'Lon'}],\n 'subtype': 'ellipsoidal'}},\n 'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},\n 'post-total': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_post_total_GEOS_CHEM_2019.tif',\n 'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'proj:bbox': [-180.5, -90.5, 179.5, 89.5],\n 'proj:epsg': 4326.0,\n 'proj:shape': [180.0, 360.0],\n 'description': 'TBD',\n 'raster:bands': [{'scale': 1.0,\n 'offset': 0.0,\n 'sampling': 'area',\n 'data_type': 'float32',\n 'histogram': {'max': 3.621621608734131,\n 'min': -1.157373309135437,\n 'count': 11.0,\n 'buckets': [8.0, 69.0, 64300.0, 366.0, 41.0, 13.0, 2.0, 0.0, 0.0, 1.0]},\n 'statistics': {'mean': 0.008661163039505482,\n 'stddev': 0.057076238095760345,\n 'maximum': 3.621621608734131,\n 'minimum': -1.157373309135437,\n 'valid_percent': 0.00154320987654321}}],\n 'proj:geometry': {'type': 'Polygon',\n 'coordinates': [[[-180.5, -90.5],\n [179.5, -90.5],\n [179.5, 89.5],\n [-180.5, 89.5],\n [-180.5, -90.5]]]},\n 'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},\n 'name': 'WGS 84',\n 'type': 'GeographicCRS',\n 'datum': {'name': 'World Geodetic System 1984',\n 'type': 'GeodeticReferenceFrame',\n 'ellipsoid': {'name': 'WGS 84',\n 'semi_major_axis': 6378137.0,\n 'inverse_flattening': 298.257223563}},\n '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',\n 'coordinate_system': {'axis': [{'name': 'Geodetic latitude',\n 'unit': 'degree',\n 'direction': 'north',\n 'abbreviation': 'Lat'},\n {'name': 'Geodetic longitude',\n 'unit': 'degree',\n 'direction': 'east',\n 'abbreviation': 'Lon'}],\n 'subtype': 'ellipsoidal'}},\n 'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},\n 'post-waste': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_post_waste_GEOS_CHEM_2019.tif',\n 'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'proj:bbox': [-180.5, -90.5, 179.5, 89.5],\n 'proj:epsg': 4326.0,\n 'proj:shape': [180.0, 360.0],\n 'description': 'TBD',\n 'raster:bands': [{'scale': 1.0,\n 'offset': 0.0,\n 'sampling': 'area',\n 'data_type': 'float32',\n 'histogram': {'max': 1.2296125888824463,\n 'min': -0.5908117294311523,\n 'count': 11.0,\n 'buckets': [1.0, 2.0, 10.0, 64753.0, 26.0, 5.0, 1.0, 1.0, 0.0, 1.0]},\n 'statistics': {'mean': 0.0007660945411771536,\n 'stddev': 0.010033484548330307,\n 'maximum': 1.2296125888824463,\n 'minimum': -0.5908117294311523,\n 'valid_percent': 0.00154320987654321}}],\n 'proj:geometry': {'type': 'Polygon',\n 'coordinates': [[[-180.5, -90.5],\n [179.5, -90.5],\n [179.5, 89.5],\n [-180.5, 89.5],\n [-180.5, -90.5]]]},\n 'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},\n 'name': 'WGS 84',\n 'type': 'GeographicCRS',\n 'datum': {'name': 'World Geodetic System 1984',\n 'type': 'GeodeticReferenceFrame',\n 'ellipsoid': {'name': 'WGS 84',\n 'semi_major_axis': 6378137.0,\n 'inverse_flattening': 298.257223563}},\n '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',\n 'coordinate_system': {'axis': [{'name': 'Geodetic latitude',\n 'unit': 'degree',\n 'direction': 'north',\n 'abbreviation': 'Lat'},\n {'name': 'Geodetic longitude',\n 'unit': 'degree',\n 'direction': 'east',\n 'abbreviation': 'Lon'}],\n 'subtype': 'ellipsoidal'}},\n 'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},\n 'prior-coal': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_prior_coal_GEOS_CHEM_2019.tif',\n 'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'proj:bbox': [-180.5, -90.5, 179.5, 89.5],\n 'proj:epsg': 4326.0,\n 'proj:shape': [180.0, 360.0],\n 'description': 'TBD',\n 'raster:bands': [{'scale': 1.0,\n 'offset': 0.0,\n 'sampling': 'area',\n 'data_type': 'float32',\n 'histogram': {'max': 1.3838224411010742,\n 'min': 0.0,\n 'count': 11.0,\n 'buckets': [64746.0, 29.0, 11.0, 2.0, 5.0, 2.0, 2.0, 2.0, 0.0, 1.0]},\n 'statistics': {'mean': 0.0004846722586080432,\n 'stddev': 0.01380141545087099,\n 'maximum': 1.3838224411010742,\n 'minimum': 0.0,\n 'valid_percent': 0.00154320987654321}}],\n 'proj:geometry': {'type': 'Polygon',\n 'coordinates': [[[-180.5, -90.5],\n [179.5, -90.5],\n [179.5, 89.5],\n [-180.5, 89.5],\n [-180.5, -90.5]]]},\n 'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},\n 'name': 'WGS 84',\n 'type': 'GeographicCRS',\n 'datum': {'name': 'World Geodetic System 1984',\n 'type': 'GeodeticReferenceFrame',\n 'ellipsoid': {'name': 'WGS 84',\n 'semi_major_axis': 6378137.0,\n 'inverse_flattening': 298.257223563}},\n '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',\n 'coordinate_system': {'axis': [{'name': 'Geodetic latitude',\n 'unit': 'degree',\n 'direction': 'north',\n 'abbreviation': 'Lat'},\n {'name': 'Geodetic longitude',\n 'unit': 'degree',\n 'direction': 'east',\n 'abbreviation': 'Lon'}],\n 'subtype': 'ellipsoidal'}},\n 'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},\n 'prior-fire': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_prior_fire_GEOS_CHEM_2019.tif',\n 'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'proj:bbox': [-180.5, -90.5, 179.5, 89.5],\n 'proj:epsg': 4326.0,\n 'proj:shape': [180.0, 360.0],\n 'description': 'TBD',\n 'raster:bands': [{'scale': 1.0,\n 'offset': 0.0,\n 'sampling': 'area',\n 'data_type': 'float32',\n 'histogram': {'max': 0.498909056186676,\n 'min': 0.0,\n 'count': 11.0,\n 'buckets': [64786.0, 7.0, 1.0, 3.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0]},\n 'statistics': {'mean': 0.0002329142007511109,\n 'stddev': 0.0032598471734672785,\n 'maximum': 0.498909056186676,\n 'minimum': 0.0,\n 'valid_percent': 0.00154320987654321}}],\n 'proj:geometry': {'type': 'Polygon',\n 'coordinates': [[[-180.5, -90.5],\n [179.5, -90.5],\n [179.5, 89.5],\n [-180.5, 89.5],\n [-180.5, -90.5]]]},\n 'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},\n 'name': 'WGS 84',\n 'type': 'GeographicCRS',\n 'datum': {'name': 'World Geodetic System 1984',\n 'type': 'GeodeticReferenceFrame',\n 'ellipsoid': {'name': 'WGS 84',\n 'semi_major_axis': 6378137.0,\n 'inverse_flattening': 298.257223563}},\n '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',\n 'coordinate_system': {'axis': [{'name': 'Geodetic latitude',\n 'unit': 'degree',\n 'direction': 'north',\n 'abbreviation': 'Lat'},\n {'name': 'Geodetic longitude',\n 'unit': 'degree',\n 'direction': 'east',\n 'abbreviation': 'Lon'}],\n 'subtype': 'ellipsoidal'}},\n 'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},\n 'prior-rice': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_prior_rice_GEOS_CHEM_2019.tif',\n 'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'proj:bbox': [-180.5, -90.5, 179.5, 89.5],\n 'proj:epsg': 4326.0,\n 'proj:shape': [180.0, 360.0],\n 'description': 'TBD',\n 'raster:bands': [{'scale': 1.0,\n 'offset': 0.0,\n 'sampling': 'area',\n 'data_type': 'float32',\n 'histogram': {'max': 0.5223113298416138,\n 'min': 0.0,\n 'count': 11.0,\n 'buckets': [64539.0, 154.0, 55.0, 25.0, 16.0, 8.0, 2.0, 0.0, 0.0, 1.0]},\n 'statistics': {'mean': 0.000768911384511739,\n 'stddev': 0.008794998750090599,\n 'maximum': 0.5223113298416138,\n 'minimum': 0.0,\n 'valid_percent': 0.00154320987654321}}],\n 'proj:geometry': {'type': 'Polygon',\n 'coordinates': [[[-180.5, -90.5],\n [179.5, -90.5],\n [179.5, 89.5],\n [-180.5, 89.5],\n [-180.5, -90.5]]]},\n 'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},\n 'name': 'WGS 84',\n 'type': 'GeographicCRS',\n 'datum': {'name': 'World Geodetic System 1984',\n 'type': 'GeodeticReferenceFrame',\n 'ellipsoid': {'name': 'WGS 84',\n 'semi_major_axis': 6378137.0,\n 'inverse_flattening': 298.257223563}},\n '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',\n 'coordinate_system': {'axis': [{'name': 'Geodetic latitude',\n 'unit': 'degree',\n 'direction': 'north',\n 'abbreviation': 'Lat'},\n {'name': 'Geodetic longitude',\n 'unit': 'degree',\n 'direction': 'east',\n 'abbreviation': 'Lon'}],\n 'subtype': 'ellipsoidal'}},\n 'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},\n 'prior-total': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_prior_total_GEOS_CHEM_2019.tif',\n 'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'proj:bbox': [-180.5, -90.5, 179.5, 89.5],\n 'proj:epsg': 4326.0,\n 'proj:shape': [180.0, 360.0],\n 'description': 'TBD',\n 'raster:bands': [{'scale': 1.0,\n 'offset': 0.0,\n 'sampling': 'area',\n 'data_type': 'float32',\n 'histogram': {'max': 2.121816635131836,\n 'min': 0.0,\n 'count': 11.0,\n 'buckets': [64390.0, 297.0, 63.0, 26.0, 13.0, 7.0, 3.0, 0.0, 0.0, 1.0]},\n 'statistics': {'mean': 0.008324408903717995,\n 'stddev': 0.04165573790669441,\n 'maximum': 2.121816635131836,\n 'minimum': 0.0,\n 'valid_percent': 0.00154320987654321}}],\n 'proj:geometry': {'type': 'Polygon',\n 'coordinates': [[[-180.5, -90.5],\n [179.5, -90.5],\n [179.5, 89.5],\n [-180.5, 89.5],\n [-180.5, -90.5]]]},\n 'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},\n 'name': 'WGS 84',\n 'type': 'GeographicCRS',\n 'datum': {'name': 'World Geodetic System 1984',\n 'type': 'GeodeticReferenceFrame',\n 'ellipsoid': {'name': 'WGS 84',\n 'semi_major_axis': 6378137.0,\n 'inverse_flattening': 298.257223563}},\n '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',\n 'coordinate_system': {'axis': [{'name': 'Geodetic latitude',\n 'unit': 'degree',\n 'direction': 'north',\n 'abbreviation': 'Lat'},\n {'name': 'Geodetic longitude',\n 'unit': 'degree',\n 'direction': 'east',\n 'abbreviation': 'Lon'}],\n 'subtype': 'ellipsoidal'}},\n 'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},\n 'prior-waste': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_prior_waste_GEOS_CHEM_2019.tif',\n 'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'proj:bbox': [-180.5, -90.5, 179.5, 89.5],\n 'proj:epsg': 4326.0,\n 'proj:shape': [180.0, 360.0],\n 'description': 'TBD',\n 'raster:bands': [{'scale': 1.0,\n 'offset': 0.0,\n 'sampling': 'area',\n 'data_type': 'float32',\n 'histogram': {'max': 1.4146164655685425,\n 'min': 0.0,\n 'count': 11.0,\n 'buckets': [64750.0, 36.0, 6.0, 4.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0]},\n 'statistics': {'mean': 0.0008899783715605736,\n 'stddev': 0.011600765399634838,\n 'maximum': 1.4146164655685425,\n 'minimum': 0.0,\n 'valid_percent': 0.00154320987654321}}],\n 'proj:geometry': {'type': 'Polygon',\n 'coordinates': [[[-180.5, -90.5],\n [179.5, -90.5],\n [179.5, 89.5],\n [-180.5, 89.5],\n [-180.5, -90.5]]]},\n 'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},\n 'name': 'WGS 84',\n 'type': 'GeographicCRS',\n 'datum': {'name': 'World Geodetic System 1984',\n 'type': 'GeodeticReferenceFrame',\n 'ellipsoid': {'name': 'WGS 84',\n 'semi_major_axis': 6378137.0,\n 'inverse_flattening': 298.257223563}},\n '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',\n 'coordinate_system': {'axis': [{'name': 'Geodetic latitude',\n 'unit': 'degree',\n 'direction': 'north',\n 'abbreviation': 'Lat'},\n {'name': 'Geodetic longitude',\n 'unit': 'degree',\n 'direction': 'east',\n 'abbreviation': 'Lon'}],\n 'subtype': 'ellipsoidal'}},\n 'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},\n 'post-wetland': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_post_wetland_GEOS_CHEM_2019.tif',\n 'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'proj:bbox': [-180.5, -90.5, 179.5, 89.5],\n 'proj:epsg': 4326.0,\n 'proj:shape': [180.0, 360.0],\n 'description': 'TBD',\n 'raster:bands': [{'scale': 1.0,\n 'offset': 0.0,\n 'sampling': 'area',\n 'data_type': 'float32',\n 'histogram': {'max': 2.0359816551208496,\n 'min': -0.8375182747840881,\n 'count': 11.0,\n 'buckets': [5.0, 15.0, 63361.0, 1288.0, 94.0, 24.0, 7.0, 2.0, 2.0, 2.0]},\n 'statistics': {'mean': 0.0027753026224672794,\n 'stddev': 0.033493757247924805,\n 'maximum': 2.0359816551208496,\n 'minimum': -0.8375182747840881,\n 'valid_percent': 0.00154320987654321}}],\n 'proj:geometry': {'type': 'Polygon',\n 'coordinates': [[[-180.5, -90.5],\n [179.5, -90.5],\n [179.5, 89.5],\n [-180.5, 89.5],\n [-180.5, -90.5]]]},\n 'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},\n 'name': 'WGS 84',\n 'type': 'GeographicCRS',\n 'datum': {'name': 'World Geodetic System 1984',\n 'type': 'GeodeticReferenceFrame',\n 'ellipsoid': {'name': 'WGS 84',\n 'semi_major_axis': 6378137.0,\n 'inverse_flattening': 298.257223563}},\n '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',\n 'coordinate_system': {'axis': [{'name': 'Geodetic latitude',\n 'unit': 'degree',\n 'direction': 'north',\n 'abbreviation': 'Lat'},\n {'name': 'Geodetic longitude',\n 'unit': 'degree',\n 'direction': 'east',\n 'abbreviation': 'Lon'}],\n 'subtype': 'ellipsoidal'}},\n 'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},\n 'prior-wetland': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_prior_wetland_GEOS_CHEM_2019.tif',\n 'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'proj:bbox': [-180.5, -90.5, 179.5, 89.5],\n 'proj:epsg': 4326.0,\n 'proj:shape': [180.0, 360.0],\n 'description': 'TBD',\n 'raster:bands': [{'scale': 1.0,\n 'offset': 0.0,\n 'sampling': 'area',\n 'data_type': 'float32',\n 'histogram': {'max': 1.2217899560928345,\n 'min': 0.0,\n 'count': 11.0,\n 'buckets': [64489.0, 188.0, 52.0, 29.0, 17.0, 11.0, 3.0, 4.0, 3.0, 4.0]},\n 'statistics': {'mean': 0.0030836397781968117,\n 'stddev': 0.026006272062659264,\n 'maximum': 1.2217899560928345,\n 'minimum': 0.0,\n 'valid_percent': 0.00154320987654321}}],\n 'proj:geometry': {'type': 'Polygon',\n 'coordinates': [[[-180.5, -90.5],\n [179.5, -90.5],\n [179.5, 89.5],\n [-180.5, 89.5],\n [-180.5, -90.5]]]},\n 'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},\n 'name': 'WGS 84',\n 'type': 'GeographicCRS',\n 'datum': {'name': 'World Geodetic System 1984',\n 'type': 'GeodeticReferenceFrame',\n 'ellipsoid': {'name': 'WGS 84',\n 'semi_major_axis': 6378137.0,\n 'inverse_flattening': 298.257223563}},\n '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',\n 'coordinate_system': {'axis': [{'name': 'Geodetic latitude',\n 'unit': 'degree',\n 'direction': 'north',\n 'abbreviation': 'Lat'},\n {'name': 'Geodetic longitude',\n 'unit': 'degree',\n 'direction': 'east',\n 'abbreviation': 'Lon'}],\n 'subtype': 'ellipsoidal'}},\n 'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},\n 'post-livestock': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_post_livestock_GEOS_CHEM_2019.tif',\n 'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'proj:bbox': [-180.5, -90.5, 179.5, 89.5],\n 'proj:epsg': 4326.0,\n 'proj:shape': [180.0, 360.0],\n 'description': 'TBD',\n 'raster:bands': [{'scale': 1.0,\n 'offset': 0.0,\n 'sampling': 'area',\n 'data_type': 'float32',\n 'histogram': {'max': 0.4482361972332001,\n 'min': -0.2484263777732849,\n 'count': 11.0,\n 'buckets': [2.0,\n 10.0,\n 56.0,\n 63290.0,\n 1110.0,\n 239.0,\n 61.0,\n 14.0,\n 13.0,\n 5.0]},\n 'statistics': {'mean': 0.0022545307874679565,\n 'stddev': 0.014899863861501217,\n 'maximum': 0.4482361972332001,\n 'minimum': -0.2484263777732849,\n 'valid_percent': 0.00154320987654321}}],\n 'proj:geometry': {'type': 'Polygon',\n 'coordinates': [[[-180.5, -90.5],\n [179.5, -90.5],\n [179.5, 89.5],\n [-180.5, 89.5],\n [-180.5, -90.5]]]},\n 'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},\n 'name': 'WGS 84',\n 'type': 'GeographicCRS',\n 'datum': {'name': 'World Geodetic System 1984',\n 'type': 'GeodeticReferenceFrame',\n 'ellipsoid': {'name': 'WGS 84',\n 'semi_major_axis': 6378137.0,\n 'inverse_flattening': 298.257223563}},\n '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',\n 'coordinate_system': {'axis': [{'name': 'Geodetic latitude',\n 'unit': 'degree',\n 'direction': 'north',\n 'abbreviation': 'Lat'},\n {'name': 'Geodetic longitude',\n 'unit': 'degree',\n 'direction': 'east',\n 'abbreviation': 'Lon'}],\n 'subtype': 'ellipsoidal'}},\n 'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},\n 'prior-livestock': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_prior_livestock_GEOS_CHEM_2019.tif',\n 'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'proj:bbox': [-180.5, -90.5, 179.5, 89.5],\n 'proj:epsg': 4326.0,\n 'proj:shape': [180.0, 360.0],\n 'description': 'TBD',\n 'raster:bands': [{'scale': 1.0,\n 'offset': 0.0,\n 'sampling': 'area',\n 'data_type': 'float32',\n 'histogram': {'max': 0.1304568201303482,\n 'min': 0.0,\n 'count': 11.0,\n 'buckets': [62701.0,\n 1246.0,\n 462.0,\n 214.0,\n 61.0,\n 40.0,\n 41.0,\n 21.0,\n 11.0,\n 3.0]},\n 'statistics': {'mean': 0.0013520935317501426,\n 'stddev': 0.006176645867526531,\n 'maximum': 0.1304568201303482,\n 'minimum': 0.0,\n 'valid_percent': 0.00154320987654321}}],\n 'proj:geometry': {'type': 'Polygon',\n 'coordinates': [[[-180.5, -90.5],\n [179.5, -90.5],\n [179.5, 89.5],\n [-180.5, 89.5],\n [-180.5, -90.5]]]},\n 'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},\n 'name': 'WGS 84',\n 'type': 'GeographicCRS',\n 'datum': {'name': 'World Geodetic System 1984',\n 'type': 'GeodeticReferenceFrame',\n 'ellipsoid': {'name': 'WGS 84',\n 'semi_major_axis': 6378137.0,\n 'inverse_flattening': 298.257223563}},\n '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',\n 'coordinate_system': {'axis': [{'name': 'Geodetic latitude',\n 'unit': 'degree',\n 'direction': 'north',\n 'abbreviation': 'Lat'},\n {'name': 'Geodetic longitude',\n 'unit': 'degree',\n 'direction': 'east',\n 'abbreviation': 'Lon'}],\n 'subtype': 'ellipsoidal'}},\n 'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},\n 'post-gas-uncertainty': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_post_unc_gas_GEOS_CHEM_2019.tif',\n 'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'proj:bbox': [-180.5, -90.5, 179.5, 89.5],\n 'proj:epsg': 4326.0,\n 'proj:shape': [180.0, 360.0],\n 'description': 'TBD',\n 'raster:bands': [{'scale': 1.0,\n 'offset': 0.0,\n 'sampling': 'area',\n 'data_type': 'float32',\n 'histogram': {'max': 0.026829414069652557,\n 'min': 0.0,\n 'count': 11.0,\n 'buckets': [64766.0, 20.0, 4.0, 6.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0]},\n 'statistics': {'mean': 8.39770473248791e-06,\n 'stddev': 0.00022043172793928534,\n 'maximum': 0.026829414069652557,\n 'minimum': 0.0,\n 'valid_percent': 0.00154320987654321}}],\n 'proj:geometry': {'type': 'Polygon',\n 'coordinates': [[[-180.5, -90.5],\n [179.5, -90.5],\n [179.5, 89.5],\n [-180.5, 89.5],\n [-180.5, -90.5]]]},\n 'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},\n 'name': 'WGS 84',\n 'type': 'GeographicCRS',\n 'datum': {'name': 'World Geodetic System 1984',\n 'type': 'GeodeticReferenceFrame',\n 'ellipsoid': {'name': 'WGS 84',\n 'semi_major_axis': 6378137.0,\n 'inverse_flattening': 298.257223563}},\n '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',\n 'coordinate_system': {'axis': [{'name': 'Geodetic latitude',\n 'unit': 'degree',\n 'direction': 'north',\n 'abbreviation': 'Lat'},\n {'name': 'Geodetic longitude',\n 'unit': 'degree',\n 'direction': 'east',\n 'abbreviation': 'Lon'}],\n 'subtype': 'ellipsoidal'}},\n 'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},\n 'post-geo-uncertainty': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_post_unc_geo_GEOS_CHEM_2019.tif',\n 'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'proj:bbox': [-180.5, -90.5, 179.5, 89.5],\n 'proj:epsg': 4326.0,\n 'proj:shape': [180.0, 360.0],\n 'description': 'TBD',\n 'raster:bands': [{'scale': 1.0,\n 'offset': 0.0,\n 'sampling': 'area',\n 'data_type': 'float32',\n 'histogram': {'max': 0.25446972250938416,\n 'min': 0.0,\n 'count': 11.0,\n 'buckets': [64793.0, 5.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0]},\n 'statistics': {'mean': 1.9521785361575894e-05,\n 'stddev': 0.0011142849689349532,\n 'maximum': 0.25446972250938416,\n 'minimum': 0.0,\n 'valid_percent': 0.00154320987654321}}],\n 'proj:geometry': {'type': 'Polygon',\n 'coordinates': [[[-180.5, -90.5],\n [179.5, -90.5],\n [179.5, 89.5],\n [-180.5, 89.5],\n [-180.5, -90.5]]]},\n 'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},\n 'name': 'WGS 84',\n 'type': 'GeographicCRS',\n 'datum': {'name': 'World Geodetic System 1984',\n 'type': 'GeodeticReferenceFrame',\n 'ellipsoid': {'name': 'WGS 84',\n 'semi_major_axis': 6378137.0,\n 'inverse_flattening': 298.257223563}},\n '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',\n 'coordinate_system': {'axis': [{'name': 'Geodetic latitude',\n 'unit': 'degree',\n 'direction': 'north',\n 'abbreviation': 'Lat'},\n {'name': 'Geodetic longitude',\n 'unit': 'degree',\n 'direction': 'east',\n 'abbreviation': 'Lon'}],\n 'subtype': 'ellipsoidal'}},\n 'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},\n 'post-oil-uncertainty': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_post_unc_oil_GEOS_CHEM_2019.tif',\n 'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'proj:bbox': [-180.5, -90.5, 179.5, 89.5],\n 'proj:epsg': 4326.0,\n 'proj:shape': [180.0, 360.0],\n 'description': 'TBD',\n 'raster:bands': [{'scale': 1.0,\n 'offset': 0.0,\n 'sampling': 'area',\n 'data_type': 'float32',\n 'histogram': {'max': 0.20816677808761597,\n 'min': 0.0,\n 'count': 11.0,\n 'buckets': [64775.0, 15.0, 2.0, 5.0, 1.0, 0.0, 0.0, 0.0, 1.0, 1.0]},\n 'statistics': {'mean': 3.7560705095529556e-05,\n 'stddev': 0.0014476124197244644,\n 'maximum': 0.20816677808761597,\n 'minimum': 0.0,\n 'valid_percent': 0.00154320987654321}}],\n 'proj:geometry': {'type': 'Polygon',\n 'coordinates': [[[-180.5, -90.5],\n [179.5, -90.5],\n [179.5, 89.5],\n [-180.5, 89.5],\n [-180.5, -90.5]]]},\n 'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},\n 'name': 'WGS 84',\n 'type': 'GeographicCRS',\n 'datum': {'name': 'World Geodetic System 1984',\n 'type': 'GeodeticReferenceFrame',\n 'ellipsoid': {'name': 'WGS 84',\n 'semi_major_axis': 6378137.0,\n 'inverse_flattening': 298.257223563}},\n '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',\n 'coordinate_system': {'axis': [{'name': 'Geodetic latitude',\n 'unit': 'degree',\n 'direction': 'north',\n 'abbreviation': 'Lat'},\n {'name': 'Geodetic longitude',\n 'unit': 'degree',\n 'direction': 'east',\n 'abbreviation': 'Lon'}],\n 'subtype': 'ellipsoidal'}},\n 'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},\n 'post-coal-uncertainty': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_post_unc_coal_GEOS_CHEM_2019.tif',\n 'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'proj:bbox': [-180.5, -90.5, 179.5, 89.5],\n 'proj:epsg': 4326.0,\n 'proj:shape': [180.0, 360.0],\n 'description': 'TBD',\n 'raster:bands': [{'scale': 1.0,\n 'offset': 0.0,\n 'sampling': 'area',\n 'data_type': 'float32',\n 'histogram': {'max': 0.28081363439559937,\n 'min': 0.0,\n 'count': 11.0,\n 'buckets': [64778.0, 7.0, 5.0, 1.0, 3.0, 3.0, 2.0, 0.0, 0.0, 1.0]},\n 'statistics': {'mean': 4.5709952246397734e-05,\n 'stddev': 0.0022045010700821877,\n 'maximum': 0.28081363439559937,\n 'minimum': 0.0,\n 'valid_percent': 0.00154320987654321}}],\n 'proj:geometry': {'type': 'Polygon',\n 'coordinates': [[[-180.5, -90.5],\n [179.5, -90.5],\n [179.5, 89.5],\n [-180.5, 89.5],\n [-180.5, -90.5]]]},\n 'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},\n 'name': 'WGS 84',\n 'type': 'GeographicCRS',\n 'datum': {'name': 'World Geodetic System 1984',\n 'type': 'GeodeticReferenceFrame',\n 'ellipsoid': {'name': 'WGS 84',\n 'semi_major_axis': 6378137.0,\n 'inverse_flattening': 298.257223563}},\n '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',\n 'coordinate_system': {'axis': [{'name': 'Geodetic latitude',\n 'unit': 'degree',\n 'direction': 'north',\n 'abbreviation': 'Lat'},\n {'name': 'Geodetic longitude',\n 'unit': 'degree',\n 'direction': 'east',\n 'abbreviation': 'Lon'}],\n 'subtype': 'ellipsoidal'}},\n 'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},\n 'post-fire-uncertainty': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_post_unc_fire_GEOS_CHEM_2019.tif',\n 'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'proj:bbox': [-180.5, -90.5, 179.5, 89.5],\n 'proj:epsg': 4326.0,\n 'proj:shape': [180.0, 360.0],\n 'description': 'TBD',\n 'raster:bands': [{'scale': 1.0,\n 'offset': 0.0,\n 'sampling': 'area',\n 'data_type': 'float32',\n 'histogram': {'max': 0.04287702962756157,\n 'min': 0.0,\n 'count': 11.0,\n 'buckets': [64794.0, 3.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0]},\n 'statistics': {'mean': 3.030148036486935e-06,\n 'stddev': 0.00021067954367026687,\n 'maximum': 0.04287702962756157,\n 'minimum': 0.0,\n 'valid_percent': 0.00154320987654321}}],\n 'proj:geometry': {'type': 'Polygon',\n 'coordinates': [[[-180.5, -90.5],\n [179.5, -90.5],\n [179.5, 89.5],\n [-180.5, 89.5],\n [-180.5, -90.5]]]},\n 'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},\n 'name': 'WGS 84',\n 'type': 'GeographicCRS',\n 'datum': {'name': 'World Geodetic System 1984',\n 'type': 'GeodeticReferenceFrame',\n 'ellipsoid': {'name': 'WGS 84',\n 'semi_major_axis': 6378137.0,\n 'inverse_flattening': 298.257223563}},\n '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',\n 'coordinate_system': {'axis': [{'name': 'Geodetic latitude',\n 'unit': 'degree',\n 'direction': 'north',\n 'abbreviation': 'Lat'},\n {'name': 'Geodetic longitude',\n 'unit': 'degree',\n 'direction': 'east',\n 'abbreviation': 'Lon'}],\n 'subtype': 'ellipsoidal'}},\n 'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},\n 'post-rice-uncertainty': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_post_unc_rice_GEOS_CHEM_2019.tif',\n 'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'proj:bbox': [-180.5, -90.5, 179.5, 89.5],\n 'proj:epsg': 4326.0,\n 'proj:shape': [180.0, 360.0],\n 'description': 'TBD',\n 'raster:bands': [{'scale': 1.0,\n 'offset': 0.0,\n 'sampling': 'area',\n 'data_type': 'float32',\n 'histogram': {'max': 0.085321806371212,\n 'min': 0.0,\n 'count': 11.0,\n 'buckets': [64609.0, 88.0, 42.0, 26.0, 15.0, 9.0, 2.0, 4.0, 3.0, 2.0]},\n 'statistics': {'mean': 8.745533705223352e-05,\n 'stddev': 0.0015292511088773608,\n 'maximum': 0.085321806371212,\n 'minimum': 0.0,\n 'valid_percent': 0.00154320987654321}}],\n 'proj:geometry': {'type': 'Polygon',\n 'coordinates': [[[-180.5, -90.5],\n [179.5, -90.5],\n [179.5, 89.5],\n [-180.5, 89.5],\n [-180.5, -90.5]]]},\n 'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},\n 'name': 'WGS 84',\n 'type': 'GeographicCRS',\n 'datum': {'name': 'World Geodetic System 1984',\n 'type': 'GeodeticReferenceFrame',\n 'ellipsoid': {'name': 'WGS 84',\n 'semi_major_axis': 6378137.0,\n 'inverse_flattening': 298.257223563}},\n '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',\n 'coordinate_system': {'axis': [{'name': 'Geodetic latitude',\n 'unit': 'degree',\n 'direction': 'north',\n 'abbreviation': 'Lat'},\n {'name': 'Geodetic longitude',\n 'unit': 'degree',\n 'direction': 'east',\n 'abbreviation': 'Lon'}],\n 'subtype': 'ellipsoidal'}},\n 'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},\n 'prior-gas-uncertainty': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_prior_unc_gas_GEOS_CHEM_2019.tif',\n 'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'proj:bbox': [-180.5, -90.5, 179.5, 89.5],\n 'proj:epsg': 4326.0,\n 'proj:shape': [180.0, 360.0],\n 'description': 'TBD',\n 'raster:bands': [{'scale': 1.0,\n 'offset': 0.0,\n 'sampling': 'area',\n 'data_type': 'float32',\n 'histogram': {'max': 0.035356033593416214,\n 'min': 0.0,\n 'count': 11.0,\n 'buckets': [64766.0, 17.0, 5.0, 3.0, 3.0, 0.0, 1.0, 1.0, 0.0, 4.0]},\n 'statistics': {'mean': 1.1367864317435306e-05,\n 'stddev': 0.0003570150875020772,\n 'maximum': 0.035356033593416214,\n 'minimum': 0.0,\n 'valid_percent': 0.00154320987654321}}],\n 'proj:geometry': {'type': 'Polygon',\n 'coordinates': [[[-180.5, -90.5],\n [179.5, -90.5],\n [179.5, 89.5],\n [-180.5, 89.5],\n [-180.5, -90.5]]]},\n 'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},\n 'name': 'WGS 84',\n 'type': 'GeographicCRS',\n 'datum': {'name': 'World Geodetic System 1984',\n 'type': 'GeodeticReferenceFrame',\n 'ellipsoid': {'name': 'WGS 84',\n 'semi_major_axis': 6378137.0,\n 'inverse_flattening': 298.257223563}},\n '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',\n 'coordinate_system': {'axis': [{'name': 'Geodetic latitude',\n 'unit': 'degree',\n 'direction': 'north',\n 'abbreviation': 'Lat'},\n {'name': 'Geodetic longitude',\n 'unit': 'degree',\n 'direction': 'east',\n 'abbreviation': 'Lon'}],\n 'subtype': 'ellipsoidal'}},\n 'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},\n 'prior-geo-uncertainty': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_prior_unc_geo_GEOS_CHEM_2019.tif',\n 'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'proj:bbox': [-180.5, -90.5, 179.5, 89.5],\n 'proj:epsg': 4326.0,\n 'proj:shape': [180.0, 360.0],\n 'description': 'TBD',\n 'raster:bands': [{'scale': 1.0,\n 'offset': 0.0,\n 'sampling': 'area',\n 'data_type': 'float32',\n 'histogram': {'max': 1.6511273384094238,\n 'min': 0.0,\n 'count': 11.0,\n 'buckets': [64799.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0]},\n 'statistics': {'mean': 4.881064160144888e-05,\n 'stddev': 0.006545887794345617,\n 'maximum': 1.6511273384094238,\n 'minimum': 0.0,\n 'valid_percent': 0.00154320987654321}}],\n 'proj:geometry': {'type': 'Polygon',\n 'coordinates': [[[-180.5, -90.5],\n [179.5, -90.5],\n [179.5, 89.5],\n [-180.5, 89.5],\n [-180.5, -90.5]]]},\n 'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},\n 'name': 'WGS 84',\n 'type': 'GeographicCRS',\n 'datum': {'name': 'World Geodetic System 1984',\n 'type': 'GeodeticReferenceFrame',\n 'ellipsoid': {'name': 'WGS 84',\n 'semi_major_axis': 6378137.0,\n 'inverse_flattening': 298.257223563}},\n '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',\n 'coordinate_system': {'axis': [{'name': 'Geodetic latitude',\n 'unit': 'degree',\n 'direction': 'north',\n 'abbreviation': 'Lat'},\n {'name': 'Geodetic longitude',\n 'unit': 'degree',\n 'direction': 'east',\n 'abbreviation': 'Lon'}],\n 'subtype': 'ellipsoidal'}},\n 'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},\n 'prior-oil-uncertainty': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_prior_unc_oil_GEOS_CHEM_2019.tif',\n 'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'proj:bbox': [-180.5, -90.5, 179.5, 89.5],\n 'proj:epsg': 4326.0,\n 'proj:shape': [180.0, 360.0],\n 'description': 'TBD',\n 'raster:bands': [{'scale': 1.0,\n 'offset': 0.0,\n 'sampling': 'area',\n 'data_type': 'float32',\n 'histogram': {'max': 0.8458506464958191,\n 'min': 0.0,\n 'count': 11.0,\n 'buckets': [64787.0, 5.0, 5.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 2.0]},\n 'statistics': {'mean': 9.116153523791581e-05,\n 'stddev': 0.00547912297770381,\n 'maximum': 0.8458506464958191,\n 'minimum': 0.0,\n 'valid_percent': 0.00154320987654321}}],\n 'proj:geometry': {'type': 'Polygon',\n 'coordinates': [[[-180.5, -90.5],\n [179.5, -90.5],\n [179.5, 89.5],\n [-180.5, 89.5],\n [-180.5, -90.5]]]},\n 'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},\n 'name': 'WGS 84',\n 'type': 'GeographicCRS',\n 'datum': {'name': 'World Geodetic System 1984',\n 'type': 'GeodeticReferenceFrame',\n 'ellipsoid': {'name': 'WGS 84',\n 'semi_major_axis': 6378137.0,\n 'inverse_flattening': 298.257223563}},\n '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',\n 'coordinate_system': {'axis': [{'name': 'Geodetic latitude',\n 'unit': 'degree',\n 'direction': 'north',\n 'abbreviation': 'Lat'},\n {'name': 'Geodetic longitude',\n 'unit': 'degree',\n 'direction': 'east',\n 'abbreviation': 'Lon'}],\n 'subtype': 'ellipsoidal'}},\n 'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},\n 'post-waste-uncertainty': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_post_unc_waste_GEOS_CHEM_2019.tif',\n 'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'proj:bbox': [-180.5, -90.5, 179.5, 89.5],\n 'proj:epsg': 4326.0,\n 'proj:shape': [180.0, 360.0],\n 'description': 'TBD',\n 'raster:bands': [{'scale': 1.0,\n 'offset': 0.0,\n 'sampling': 'area',\n 'data_type': 'float32',\n 'histogram': {'max': 0.10136520117521286,\n 'min': 0.0,\n 'count': 11.0,\n 'buckets': [64759.0, 19.0, 6.0, 8.0, 2.0, 1.0, 2.0, 0.0, 1.0, 2.0]},\n 'statistics': {'mean': 3.903839024133049e-05,\n 'stddev': 0.0009961748728528619,\n 'maximum': 0.10136520117521286,\n 'minimum': 0.0,\n 'valid_percent': 0.00154320987654321}}],\n 'proj:geometry': {'type': 'Polygon',\n 'coordinates': [[[-180.5, -90.5],\n [179.5, -90.5],\n [179.5, 89.5],\n [-180.5, 89.5],\n [-180.5, -90.5]]]},\n 'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},\n 'name': 'WGS 84',\n 'type': 'GeographicCRS',\n 'datum': {'name': 'World Geodetic System 1984',\n 'type': 'GeodeticReferenceFrame',\n 'ellipsoid': {'name': 'WGS 84',\n 'semi_major_axis': 6378137.0,\n 'inverse_flattening': 298.257223563}},\n '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',\n 'coordinate_system': {'axis': [{'name': 'Geodetic latitude',\n 'unit': 'degree',\n 'direction': 'north',\n 'abbreviation': 'Lat'},\n {'name': 'Geodetic longitude',\n 'unit': 'degree',\n 'direction': 'east',\n 'abbreviation': 'Lon'}],\n 'subtype': 'ellipsoidal'}},\n 'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},\n 'prior-coal-uncertainty': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_prior_unc_coal_GEOS_CHEM_2019.tif',\n 'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'proj:bbox': [-180.5, -90.5, 179.5, 89.5],\n 'proj:epsg': 4326.0,\n 'proj:shape': [180.0, 360.0],\n 'description': 'TBD',\n 'raster:bands': [{'scale': 1.0,\n 'offset': 0.0,\n 'sampling': 'area',\n 'data_type': 'float32',\n 'histogram': {'max': 0.9433419704437256,\n 'min': 0.0,\n 'count': 11.0,\n 'buckets': [64785.0, 5.0, 4.0, 2.0, 1.0, 2.0, 0.0, 0.0, 0.0, 1.0]},\n 'statistics': {'mean': 9.546576620778069e-05,\n 'stddev': 0.00589930871501565,\n 'maximum': 0.9433419704437256,\n 'minimum': 0.0,\n 'valid_percent': 0.00154320987654321}}],\n 'proj:geometry': {'type': 'Polygon',\n 'coordinates': [[[-180.5, -90.5],\n [179.5, -90.5],\n [179.5, 89.5],\n [-180.5, 89.5],\n [-180.5, -90.5]]]},\n 'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},\n 'name': 'WGS 84',\n 'type': 'GeographicCRS',\n 'datum': {'name': 'World Geodetic System 1984',\n 'type': 'GeodeticReferenceFrame',\n 'ellipsoid': {'name': 'WGS 84',\n 'semi_major_axis': 6378137.0,\n 'inverse_flattening': 298.257223563}},\n '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',\n 'coordinate_system': {'axis': [{'name': 'Geodetic latitude',\n 'unit': 'degree',\n 'direction': 'north',\n 'abbreviation': 'Lat'},\n {'name': 'Geodetic longitude',\n 'unit': 'degree',\n 'direction': 'east',\n 'abbreviation': 'Lon'}],\n 'subtype': 'ellipsoidal'}},\n 'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},\n 'prior-rice-uncertainty': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_prior_unc_rice_GEOS_CHEM_2019.tif',\n 'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'proj:bbox': [-180.5, -90.5, 179.5, 89.5],\n 'proj:epsg': 4326.0,\n 'proj:shape': [180.0, 360.0],\n 'description': 'TBD',\n 'raster:bands': [{'scale': 1.0,\n 'offset': 0.0,\n 'sampling': 'area',\n 'data_type': 'float32',\n 'histogram': {'max': 0.2505281865596771,\n 'min': 0.0,\n 'count': 11.0,\n 'buckets': [64710.0, 52.0, 26.0, 5.0, 3.0, 3.0, 0.0, 0.0, 0.0, 1.0]},\n 'statistics': {'mean': 0.00012143573985667899,\n 'stddev': 0.002463066717609763,\n 'maximum': 0.2505281865596771,\n 'minimum': 0.0,\n 'valid_percent': 0.00154320987654321}}],\n 'proj:geometry': {'type': 'Polygon',\n 'coordinates': [[[-180.5, -90.5],\n [179.5, -90.5],\n [179.5, 89.5],\n [-180.5, 89.5],\n [-180.5, -90.5]]]},\n 'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},\n 'name': 'WGS 84',\n 'type': 'GeographicCRS',\n 'datum': {'name': 'World Geodetic System 1984',\n 'type': 'GeodeticReferenceFrame',\n 'ellipsoid': {'name': 'WGS 84',\n 'semi_major_axis': 6378137.0,\n 'inverse_flattening': 298.257223563}},\n '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',\n 'coordinate_system': {'axis': [{'name': 'Geodetic latitude',\n 'unit': 'degree',\n 'direction': 'north',\n 'abbreviation': 'Lat'},\n {'name': 'Geodetic longitude',\n 'unit': 'degree',\n 'direction': 'east',\n 'abbreviation': 'Lon'}],\n 'subtype': 'ellipsoidal'}},\n 'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},\n 'prior-waste-uncertainty': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_prior_unc_waste_GEOS_CHEM_2019.tif',\n 'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'proj:bbox': [-180.5, -90.5, 179.5, 89.5],\n 'proj:epsg': 4326.0,\n 'proj:shape': [180.0, 360.0],\n 'description': 'TBD',\n 'raster:bands': [{'scale': 1.0,\n 'offset': 0.0,\n 'sampling': 'area',\n 'data_type': 'float32',\n 'histogram': {'max': 1.3018296957015991,\n 'min': 0.0,\n 'count': 11.0,\n 'buckets': [64793.0, 4.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0]},\n 'statistics': {'mean': 0.0001001738928607665,\n 'stddev': 0.006979630794376135,\n 'maximum': 1.3018296957015991,\n 'minimum': 0.0,\n 'valid_percent': 0.00154320987654321}}],\n 'proj:geometry': {'type': 'Polygon',\n 'coordinates': [[[-180.5, -90.5],\n [179.5, -90.5],\n [179.5, 89.5],\n [-180.5, 89.5],\n [-180.5, -90.5]]]},\n 'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},\n 'name': 'WGS 84',\n 'type': 'GeographicCRS',\n 'datum': {'name': 'World Geodetic System 1984',\n 'type': 'GeodeticReferenceFrame',\n 'ellipsoid': {'name': 'WGS 84',\n 'semi_major_axis': 6378137.0,\n 'inverse_flattening': 298.257223563}},\n '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',\n 'coordinate_system': {'axis': [{'name': 'Geodetic latitude',\n 'unit': 'degree',\n 'direction': 'north',\n 'abbreviation': 'Lat'},\n {'name': 'Geodetic longitude',\n 'unit': 'degree',\n 'direction': 'east',\n 'abbreviation': 'Lon'}],\n 'subtype': 'ellipsoidal'}},\n 'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},\n 'post-wetland-uncertainty': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_post_unc_wetland_GEOS_CHEM_2019.tif',\n 'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'proj:bbox': [-180.5, -90.5, 179.5, 89.5],\n 'proj:epsg': 4326.0,\n 'proj:shape': [180.0, 360.0],\n 'description': 'TBD',\n 'raster:bands': [{'scale': 1.0,\n 'offset': 0.0,\n 'sampling': 'area',\n 'data_type': 'float32',\n 'histogram': {'max': 0.36633968353271484,\n 'min': 0.0,\n 'count': 11.0,\n 'buckets': [64677.0, 68.0, 19.0, 14.0, 5.0, 8.0, 3.0, 4.0, 0.0, 2.0]},\n 'statistics': {'mean': 0.00034577888436615467,\n 'stddev': 0.005308355204761028,\n 'maximum': 0.36633968353271484,\n 'minimum': 0.0,\n 'valid_percent': 0.00154320987654321}}],\n 'proj:geometry': {'type': 'Polygon',\n 'coordinates': [[[-180.5, -90.5],\n [179.5, -90.5],\n [179.5, 89.5],\n [-180.5, 89.5],\n [-180.5, -90.5]]]},\n 'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},\n 'name': 'WGS 84',\n 'type': 'GeographicCRS',\n 'datum': {'name': 'World Geodetic System 1984',\n 'type': 'GeodeticReferenceFrame',\n 'ellipsoid': {'name': 'WGS 84',\n 'semi_major_axis': 6378137.0,\n 'inverse_flattening': 298.257223563}},\n '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',\n 'coordinate_system': {'axis': [{'name': 'Geodetic latitude',\n 'unit': 'degree',\n 'direction': 'north',\n 'abbreviation': 'Lat'},\n {'name': 'Geodetic longitude',\n 'unit': 'degree',\n 'direction': 'east',\n 'abbreviation': 'Lon'}],\n 'subtype': 'ellipsoidal'}},\n 'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},\n 'prior-wetland-uncertainty': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_prior_unc_wetland_GEOS_CHEM_2019.tif',\n 'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'proj:bbox': [-180.5, -90.5, 179.5, 89.5],\n 'proj:epsg': 4326.0,\n 'proj:shape': [180.0, 360.0],\n 'description': 'TBD',\n 'raster:bands': [{'scale': 1.0,\n 'offset': 0.0,\n 'sampling': 'area',\n 'data_type': 'float32',\n 'histogram': {'max': 1.5251290798187256,\n 'min': 0.0,\n 'count': 11.0,\n 'buckets': [64704.0, 49.0, 21.0, 11.0, 2.0, 3.0, 3.0, 3.0, 1.0, 3.0]},\n 'statistics': {'mean': 0.0009943766053766012,\n 'stddev': 0.020392030477523804,\n 'maximum': 1.5251290798187256,\n 'minimum': 0.0,\n 'valid_percent': 0.00154320987654321}}],\n 'proj:geometry': {'type': 'Polygon',\n 'coordinates': [[[-180.5, -90.5],\n [179.5, -90.5],\n [179.5, 89.5],\n [-180.5, 89.5],\n [-180.5, -90.5]]]},\n 'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},\n 'name': 'WGS 84',\n 'type': 'GeographicCRS',\n 'datum': {'name': 'World Geodetic System 1984',\n 'type': 'GeodeticReferenceFrame',\n 'ellipsoid': {'name': 'WGS 84',\n 'semi_major_axis': 6378137.0,\n 'inverse_flattening': 298.257223563}},\n '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',\n 'coordinate_system': {'axis': [{'name': 'Geodetic latitude',\n 'unit': 'degree',\n 'direction': 'north',\n 'abbreviation': 'Lat'},\n {'name': 'Geodetic longitude',\n 'unit': 'degree',\n 'direction': 'east',\n 'abbreviation': 'Lon'}],\n 'subtype': 'ellipsoidal'}},\n 'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},\n 'post-livestock-uncertainty': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_post_unc_livestock_GEOS_CHEM_2019.tif',\n 'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'proj:bbox': [-180.5, -90.5, 179.5, 89.5],\n 'proj:epsg': 4326.0,\n 'proj:shape': [180.0, 360.0],\n 'description': 'TBD',\n 'raster:bands': [{'scale': 1.0,\n 'offset': 0.0,\n 'sampling': 'area',\n 'data_type': 'float32',\n 'histogram': {'max': 0.016047537326812744,\n 'min': 0.0,\n 'count': 11.0,\n 'buckets': [64206.0,\n 360.0,\n 119.0,\n 35.0,\n 30.0,\n 20.0,\n 14.0,\n 9.0,\n 6.0,\n 1.0]},\n 'statistics': {'mean': 5.696367225027643e-05,\n 'stddev': 0.00044628031901083887,\n 'maximum': 0.016047537326812744,\n 'minimum': 0.0,\n 'valid_percent': 0.00154320987654321}}],\n 'proj:geometry': {'type': 'Polygon',\n 'coordinates': [[[-180.5, -90.5],\n [179.5, -90.5],\n [179.5, 89.5],\n [-180.5, 89.5],\n [-180.5, -90.5]]]},\n 'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},\n 'name': 'WGS 84',\n 'type': 'GeographicCRS',\n 'datum': {'name': 'World Geodetic System 1984',\n 'type': 'GeodeticReferenceFrame',\n 'ellipsoid': {'name': 'WGS 84',\n 'semi_major_axis': 6378137.0,\n 'inverse_flattening': 298.257223563}},\n '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',\n 'coordinate_system': {'axis': [{'name': 'Geodetic latitude',\n 'unit': 'degree',\n 'direction': 'north',\n 'abbreviation': 'Lat'},\n {'name': 'Geodetic longitude',\n 'unit': 'degree',\n 'direction': 'east',\n 'abbreviation': 'Lon'}],\n 'subtype': 'ellipsoidal'}},\n 'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},\n 'prior-livestock-uncertainty': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_prior_unc_livestock_GEOS_CHEM_2019.tif',\n 'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n 'roles': ['data', 'layer'],\n 'title': 'TBD',\n 'proj:bbox': [-180.5, -90.5, 179.5, 89.5],\n 'proj:epsg': 4326.0,\n 'proj:shape': [180.0, 360.0],\n 'description': 'TBD',\n 'raster:bands': [{'scale': 1.0,\n 'offset': 0.0,\n 'sampling': 'area',\n 'data_type': 'float32',\n 'histogram': {'max': 0.021834801882505417,\n 'min': 0.0,\n 'count': 11.0,\n 'buckets': [64219.0,\n 326.0,\n 127.0,\n 34.0,\n 19.0,\n 25.0,\n 25.0,\n 17.0,\n 5.0,\n 3.0]},\n 'statistics': {'mean': 7.657577225472778e-05,\n 'stddev': 0.0006582040223293006,\n 'maximum': 0.021834801882505417,\n 'minimum': 0.0,\n 'valid_percent': 0.00154320987654321}}],\n 'proj:geometry': {'type': 'Polygon',\n 'coordinates': [[[-180.5, -90.5],\n [179.5, -90.5],\n [179.5, 89.5],\n [-180.5, 89.5],\n [-180.5, -90.5]]]},\n 'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},\n 'name': 'WGS 84',\n 'type': 'GeographicCRS',\n 'datum': {'name': 'World Geodetic System 1984',\n 'type': 'GeodeticReferenceFrame',\n 'ellipsoid': {'name': 'WGS 84',\n 'semi_major_axis': 6378137.0,\n 'inverse_flattening': 298.257223563}},\n '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',\n 'coordinate_system': {'axis': [{'name': 'Geodetic latitude',\n 'unit': 'degree',\n 'direction': 'north',\n 'abbreviation': 'Lat'},\n {'name': 'Geodetic longitude',\n 'unit': 'degree',\n 'direction': 'east',\n 'abbreviation': 'Lon'}],\n 'subtype': 'ellipsoidal'}},\n 'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]}},\n 'geometry': {'type': 'Polygon',\n 'coordinates': [[[-180.5, -90.5],\n [179.5, -90.5],\n [179.5, 89.5],\n [-180.5, 89.5],\n [-180.5, -90.5]]]},\n 'collection': 'gosat-based-ch4budget-yeargrid-v1',\n 'properties': {'end_datetime': '2019-12-31T00:00:00+00:00',\n 'start_datetime': '2019-01-01T00:00:00+00:00'},\n 'stac_version': '1.0.0',\n 'stac_extensions': []}\n\n\nBelow, we enter minimum and maximum values to provide our upper and lower bounds in rescale_values." + }, + { + "objectID": "user_data_notebooks/gosat-based-ch4budget-yeargrid-v1_User_Notebook.html#exploring-changes-in-gosat-methane-budgets-ch4-levels-using-the-raster-api", + "href": "user_data_notebooks/gosat-based-ch4budget-yeargrid-v1_User_Notebook.html#exploring-changes-in-gosat-methane-budgets-ch4-levels-using-the-raster-api", + "title": "GOSAT-based Top-down Total and Natural Methane Emissions", + "section": "Exploring Changes in GOSAT Methane budgets (CH4) Levels Using the Raster API", + "text": "Exploring Changes in GOSAT Methane budgets (CH4) Levels Using the Raster API\nIn this notebook, we will explore the impacts of methane emissions and by examining changes over time in urban regions. We will visualize the outputs on a map using folium.\n\n# To access the year value from each item more easily, this will let us query more explicity by year and month (e.g., 2020-02)\nitems = {item[\"properties\"][\"start_datetime\"][:10]: item for item in items} \nasset_name = \"prior-total\"\n\n\n# Fetching the min and max values for a specific item\nrescale_values = {\"max\":items[list(items.keys())[0]][\"assets\"][asset_name][\"raster:bands\"][0][\"histogram\"][\"max\"], \"min\":items[list(items.keys())[0]][\"assets\"][asset_name][\"raster:bands\"][0][\"histogram\"][\"min\"]}\n\n\nitems.keys()\n\ndict_keys(['2019-01-01'])\n\n\nNow, we will pass the item id, collection name, and rescaling_factor to the Raster API endpoint. We will do this for first January 2019.\n\ncolor_map = \"rainbow\" # please select the color ramp from matplotlib library.\njanuary_2019_tile = requests.get(\n f\"{RASTER_API_URL}/stac/tilejson.json?collection={items['2019-01-01']['collection']}&item={items['2019-01-01']['id']}\"\n f\"&assets={asset_name}\"\n f\"&color_formula=gamma+r+1.05&colormap_name={color_map}\"\n f\"&rescale={rescale_values['min']},{rescale_values['max']}\", \n).json()\njanuary_2019_tile\n\n{'tilejson': '2.2.0',\n 'version': '1.0.0',\n 'scheme': 'xyz',\n 'tiles': ['https://1w7hfngnp7.execute-api.us-west-2.amazonaws.com/api/raster/stac/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?collection=gosat-based-ch4budget-yeargrid-v1&item=gosat-based-ch4budget-yeargrid-v1-2019&assets=prior-total&color_formula=gamma+r+1.05&colormap_name=rainbow&rescale=0.0%2C2.121816635131836'],\n 'minzoom': 0,\n 'maxzoom': 24,\n 'bounds': [-180.5, -90.5, 179.5, 89.5],\n 'center': [-0.5, -0.5, 0]}" + }, + { + "objectID": "user_data_notebooks/gosat-based-ch4budget-yeargrid-v1_User_Notebook.html#visualizing-ch₄-emissions", + "href": "user_data_notebooks/gosat-based-ch4budget-yeargrid-v1_User_Notebook.html#visualizing-ch₄-emissions", + "title": "GOSAT-based Top-down Total and Natural Methane Emissions", + "section": "Visualizing CH₄ Emissions", + "text": "Visualizing CH₄ Emissions\n\n# We will import folium to map and folium.plugins to allow side-by-side mapping\nimport folium\nimport folium.plugins\n\n# Set initial zoom and center of map for CH₄ Layer\n# Centre of map [latitude,longitude]\nmap_ = folium.Map(location=(34, -118), zoom_start=6)\n\n# January 2019\nmap_layer_2019 = TileLayer(\n tiles=january_2019_tile[\"tiles\"][0],\n attr=\"GHG\",\n opacity=0.7,\n)\nmap_layer_2019.add_to(map_)\n\n# # January 2012\n# map_layer_2012 = TileLayer(\n# tiles=january_2012_tile[\"tiles\"][0],\n# attr=\"GHG\",\n# opacity=0.7,\n# )\n# map_layer_2012.add_to(map_.m2)\n\n# visualising the map\nmap_\n\n\nMake this Notebook Trusted to load map: File -> Trust Notebook" + }, + { + "objectID": "user_data_notebooks/gosat-based-ch4budget-yeargrid-v1_User_Notebook.html#summary", + "href": "user_data_notebooks/gosat-based-ch4budget-yeargrid-v1_User_Notebook.html#summary", + "title": "GOSAT-based Top-down Total and Natural Methane Emissions", + "section": "Summary", + "text": "Summary\nIn this notebook we have successfully explored, analyzed, and visualized the STAC collection for GOSAT-based Top-down Total and Natural Methane Emissions." + }, + { + "objectID": "user_data_notebooks/sedac-popdensity-yeargrid5yr-v4.11_User_Notebook.html", + "href": "user_data_notebooks/sedac-popdensity-yeargrid5yr-v4.11_User_Notebook.html", + "title": "SEDAC Gridded World Population Density", + "section": "", + "text": "Identify available dates and temporal frequency of observations for the given collection using the GHGC API /stac endpoint. Collection processed in this notebook is SEDAC gridded population density.\nPass the STAC item into raster API /stac/tilejson.json endpoint\nWe’ll visualize two tiles (side-by-side) allowing for comparison of each of the time points using folium.plugins.DualMap\nAfter the visualization, we’ll perform zonal statistics for a given polygon." + }, + { + "objectID": "user_data_notebooks/sedac-popdensity-yeargrid5yr-v4.11_User_Notebook.html#approach", + "href": "user_data_notebooks/sedac-popdensity-yeargrid5yr-v4.11_User_Notebook.html#approach", + "title": "SEDAC Gridded World Population Density", + "section": "", + "text": "Identify available dates and temporal frequency of observations for the given collection using the GHGC API /stac endpoint. Collection processed in this notebook is SEDAC gridded population density.\nPass the STAC item into raster API /stac/tilejson.json endpoint\nWe’ll visualize two tiles (side-by-side) allowing for comparison of each of the time points using folium.plugins.DualMap\nAfter the visualization, we’ll perform zonal statistics for a given polygon." + }, + { + "objectID": "user_data_notebooks/sedac-popdensity-yeargrid5yr-v4.11_User_Notebook.html#about-the-data", + "href": "user_data_notebooks/sedac-popdensity-yeargrid5yr-v4.11_User_Notebook.html#about-the-data", + "title": "SEDAC Gridded World Population Density", + "section": "About the Data", + "text": "About the Data\nThe SEDAC Gridded Population of the World: Population Density, v4.11 dataset provides annual estimates of population density for the years 2000, 2005, 2010, 2015, and 2020 on a 30 arc-second (~1 km) grid. These data can be used for assessing disaster impacts, risk mapping, and any other applications that include a human dimension. This population density dataset is provided by NASA’s Socioeconomic Data and Applications Center (SEDAC) hosted by the Center for International Earth Science Information Network (CIESIN) at Columbia University. The population estimates are provided as a continuous raster for the entire globe." + }, + { + "objectID": "user_data_notebooks/sedac-popdensity-yeargrid5yr-v4.11_User_Notebook.html#querying-the-stac-api", + "href": "user_data_notebooks/sedac-popdensity-yeargrid5yr-v4.11_User_Notebook.html#querying-the-stac-api", + "title": "SEDAC Gridded World Population Density", + "section": "Querying the STAC API", + "text": "Querying the STAC API\n\nimport requests\nfrom folium import Map, TileLayer\nfrom pystac_client import Client\n\n\n# Provide STAC and RASTER API endpoints\nSTAC_API_URL = \"http://ghg.center/api/stac\"\nRASTER_API_URL = \"https://ghg.center/api/raster\"\n\n#Please use the collection name similar to the one used in STAC collection.\n# Name of the collection for SEDAC population density dataset. \ncollection_name = \"sedac-popdensity-yeargrid5yr-v4.11\"\n\n\n# Fetching the collection from STAC collections using appropriate endpoint.\ncollection = requests.get(f\"{STAC_API_URL}/collections/{collection_name}\").json()\ncollection\n\nExamining the contents of our collection under summaries we see that the data is available from January 2000 to December 2020. By looking at the dashboard:time density we observe that the data is available for the years 2000, 2005, 2010, 2015, 2020.\n\ndef get_item_count(collection_id):\n count = 0\n items_url = f\"{STAC_API_URL}/collections/{collection_id}/items\"\n\n while True:\n response = requests.get(items_url)\n\n if not response.ok:\n print(\"error getting items\")\n exit()\n\n stac = response.json()\n count += int(stac[\"context\"].get(\"returned\", 0))\n next = [link for link in stac[\"links\"] if link[\"rel\"] == \"next\"]\n\n if not next:\n break\n items_url = next[0][\"href\"]\n\n return count\n\n\n# Check total number of items available\nnumber_of_items = get_item_count(collection_name)\nitems = requests.get(f\"{STAC_API_URL}/collections/{collection_name}/items?limit={number_of_items}\").json()[\"features\"]\nprint(f\"Found {len(items)} items\")\n\n\nitems[0]\n\nBelow, we are entering the minimum and maximum values to provide our upper and lower bounds in rescale_values." + }, + { + "objectID": "user_data_notebooks/sedac-popdensity-yeargrid5yr-v4.11_User_Notebook.html#exploring-changes-in-the-world-population-density-using-the-raster-api", + "href": "user_data_notebooks/sedac-popdensity-yeargrid5yr-v4.11_User_Notebook.html#exploring-changes-in-the-world-population-density-using-the-raster-api", + "title": "SEDAC Gridded World Population Density", + "section": "Exploring Changes in the World Population Density using the Raster API", + "text": "Exploring Changes in the World Population Density using the Raster API\nWe will explore changes in population density in urban regions. In this notebook, we’ll explore the changes in population density over time. We’ll then visualize the outputs on a map using folium.\n\n# to access the year value from each item more easily, this will let us query more explicity by year and month (e.g., 2020-02)\nitems = {item[\"properties\"][\"start_datetime\"][:7]: item for item in items} \nasset_name = \"population-density\"\n\n\nrescale_values = {\"max\":items[list(items.keys())[0]][\"assets\"][asset_name][\"raster:bands\"][0][\"histogram\"][\"max\"], \"min\":items[list(items.keys())[0]][\"assets\"][asset_name][\"raster:bands\"][0][\"histogram\"][\"min\"]}\n\nNow we will pass the item id, collection name, and rescaling_factor to the Raster API endpoint. We will do this twice, once for January 2000 and again for January 2020, so that we can visualize each event independently.\n\ncolor_map = \"rainbow\" # please select the color ramp from matplotlib library.\njanuary_2020_tile = requests.get(\n f\"{RASTER_API_URL}/stac/tilejson.json?collection={items['2020-01']['collection']}&item={items['2020-01']['id']}\"\n f\"&assets={asset_name}\"\n f\"&color_formula=gamma+r+1.05&colormap_name={color_map}\"\n f\"&rescale={rescale_values['min']},{rescale_values['max']}\", \n).json()\njanuary_2020_tile\n\n\njanuary_2000_tile = requests.get(\n f\"{RASTER_API_URL}/stac/tilejson.json?collection={items['2000-01']['collection']}&item={items['2000-01']['id']}\"\n f\"&assets={asset_name}\"\n f\"&color_formula=gamma+r+1.05&colormap_name={color_map}\"\n f\"&rescale={rescale_values['min']},{rescale_values['max']}\", \n).json()\njanuary_2000_tile" + }, + { + "objectID": "user_data_notebooks/sedac-popdensity-yeargrid5yr-v4.11_User_Notebook.html#visualizing-population-density.", + "href": "user_data_notebooks/sedac-popdensity-yeargrid5yr-v4.11_User_Notebook.html#visualizing-population-density.", + "title": "SEDAC Gridded World Population Density", + "section": "Visualizing Population Density.", + "text": "Visualizing Population Density.\n\n# We'll import folium to map and folium.plugins to allow mapping side-by-side\nimport folium\nimport folium.plugins\n\n# Set initial zoom and center of map for population density Layer\nmap_ = folium.plugins.DualMap(location=(34, -118), zoom_start=6)\n\n# January 2020\nmap_layer_2020 = TileLayer(\n tiles=january_2020_tile[\"tiles\"][0],\n attr=\"GHG\",\n opacity=1,\n)\nmap_layer_2020.add_to(map_.m1)\n\n# January 2000\nmap_layer_2000 = TileLayer(\n tiles=january_2000_tile[\"tiles\"][0],\n attr=\"GHG\",\n opacity=1,\n)\nmap_layer_2000.add_to(map_.m2)\n\n# visualising the map\nmap_" + }, + { + "objectID": "user_data_notebooks/sedac-popdensity-yeargrid5yr-v4.11_User_Notebook.html#section", + "href": "user_data_notebooks/sedac-popdensity-yeargrid5yr-v4.11_User_Notebook.html#section", + "title": "SEDAC Gridded World Population Density", + "section": "", + "text": "# Texas, USA\ntexas_aoi = {\n \"type\": \"Feature\",\n \"properties\": {},\n \"geometry\": {\n \"coordinates\": [\n [\n # [13.686159004559698, -21.700046934333145],\n # [13.686159004559698, -23.241974326585833],\n # [14.753560168039911, -23.241974326585833],\n # [14.753560168039911, -21.700046934333145],\n # [13.686159004559698, -21.700046934333145],\n [-95, 29],\n [-95, 33],\n [-104, 33],\n [-104,29],\n [-95, 29]\n ]\n ],\n \"type\": \"Polygon\",\n },\n}\n\n\n# We'll plug in the coordinates for a location\n# central to the study area and a reasonable zoom level\n\nimport folium\n\naoi_map = Map(\n tiles=\"OpenStreetMap\",\n location=[\n 30,-100\n ],\n zoom_start=6,\n)\n\nfolium.GeoJson(texas_aoi, name=\"Texas, USA\").add_to(aoi_map)\naoi_map\n\n\n# Check total number of items available\nitems = requests.get(\n f\"{STAC_API_URL}/collections/{collection_name}/items?limit=300\"\n).json()[\"features\"]\nprint(f\"Found {len(items)} items\")\n\n\n# Explore one item to see what it contains\nitems[0]\n\n\n# the bounding box should be passed to the geojson param as a geojson Feature or FeatureCollection\ndef generate_stats(item, geojson):\n result = requests.post(\n f\"{RASTER_API_URL}/cog/statistics\",\n params={\"url\": item[\"assets\"][asset_name][\"href\"]},\n json=geojson,\n ).json()\n return {\n **result[\"properties\"],\n \"start_datetime\": item[\"properties\"][\"start_datetime\"],\n }\n\nWith the function above we can generate the statistics for the AOI.\n\n%%time\nstats = [generate_stats(item, texas_aoi) for item in items]\n\n\nstats[0]\n\n\nimport pandas as pd\n\n\ndef clean_stats(stats_json) -> pd.DataFrame:\n df = pd.json_normalize(stats_json)\n df.columns = [col.replace(\"statistics.b1.\", \"\") for col in df.columns]\n df[\"date\"] = pd.to_datetime(df[\"start_datetime\"])\n return df\n\n\ndf = clean_stats(stats)\ndf.head(5)" + }, + { + "objectID": "user_data_notebooks/sedac-popdensity-yeargrid5yr-v4.11_User_Notebook.html#visualizing-the-data-as-a-time-series", + "href": "user_data_notebooks/sedac-popdensity-yeargrid5yr-v4.11_User_Notebook.html#visualizing-the-data-as-a-time-series", + "title": "SEDAC Gridded World Population Density", + "section": "Visualizing the Data as a Time Series", + "text": "Visualizing the Data as a Time Series\nWe can now explore the SEDAC population density dataset time series available for the Texas, Dallas area of USA. We can plot the dataset using the code below:\n\nimport matplotlib.pyplot as plt\n\nfig = plt.figure(figsize=(20, 10))\n\n\nplt.plot(\n df[\"date\"],\n df[\"max\"],\n color=\"red\",\n linestyle=\"-\",\n linewidth=0.5,\n label=\"Population density over the years\",\n)\n\nplt.legend()\nplt.xlabel(\"Years\")\nplt.ylabel(\"Population density\")\nplt.title(\"Population density over Texas, Dallas (2000-2020)\")\n\n\nprint(items[2][\"properties\"][\"start_datetime\"])\n\n\noctober_tile = requests.get(\n f\"{RASTER_API_URL}/stac/tilejson.json?collection={items[2]['collection']}&item={items[2]['id']}\"\n f\"&assets={asset_name}\"\n f\"&color_formula=gamma+r+1.05&colormap_name={color_map}\"\n f\"&rescale={rescale_values['min']},{rescale_values['max']}\",\n).json()\noctober_tile\n\n\n# Use bbox initial zoom and map\n# Set up a map located w/in event bounds\nimport folium\n\naoi_map_bbox = Map(\n tiles=\"OpenStreetMap\",\n location=[\n 30,-100\n ],\n zoom_start=8,\n)\n\nmap_layer = TileLayer(\n tiles=october_tile[\"tiles\"][0],\n attr=\"GHG\", opacity = 0.5\n)\n\nmap_layer.add_to(aoi_map_bbox)\n\naoi_map_bbox" + }, + { + "objectID": "user_data_notebooks/sedac-popdensity-yeargrid5yr-v4.11_User_Notebook.html#summary", + "href": "user_data_notebooks/sedac-popdensity-yeargrid5yr-v4.11_User_Notebook.html#summary", + "title": "SEDAC Gridded World Population Density", + "section": "Summary", + "text": "Summary\nIn this notebook we have successfully explored, analyzed and visualized the STAC collection for the SEDAC Gridded World Population Density dataset." + }, + { + "objectID": "user_data_notebooks/lpjwsl-wetlandch4-grid-v1_User_Notebook.html", + "href": "user_data_notebooks/lpjwsl-wetlandch4-grid-v1_User_Notebook.html", + "title": "Wetland Methane Emissions, LPJ-wsl Model", + "section": "", + "text": "Identify available dates and temporal frequency of observations for the given collection using the GHGC API /stac endpoint. The collection processed in this notebook is the Wetland Methane Emissions, LPJ-wsl Model data product.\nPass the STAC item into the raster API /stac/tilejson.jsonendpoint.\nUsing folium.plugins.DualMap, visualize two tiles (side-by-side), allowing time point comparison.\nAfter the visualization, perform zonal statistics for a given polygon." + }, + { + "objectID": "user_data_notebooks/lpjwsl-wetlandch4-grid-v1_User_Notebook.html#approach", + "href": "user_data_notebooks/lpjwsl-wetlandch4-grid-v1_User_Notebook.html#approach", + "title": "Wetland Methane Emissions, LPJ-wsl Model", + "section": "", + "text": "Identify available dates and temporal frequency of observations for the given collection using the GHGC API /stac endpoint. The collection processed in this notebook is the Wetland Methane Emissions, LPJ-wsl Model data product.\nPass the STAC item into the raster API /stac/tilejson.jsonendpoint.\nUsing folium.plugins.DualMap, visualize two tiles (side-by-side), allowing time point comparison.\nAfter the visualization, perform zonal statistics for a given polygon." + }, + { + "objectID": "user_data_notebooks/lpjwsl-wetlandch4-grid-v1_User_Notebook.html#about-the-data", + "href": "user_data_notebooks/lpjwsl-wetlandch4-grid-v1_User_Notebook.html#about-the-data", + "title": "Wetland Methane Emissions, LPJ-wsl Model", + "section": "About the Data", + "text": "About the Data\nMethane (CH₄) emissions from wetlands are estimated to be the largest natural source of methane in the global CH₄ budget, contributing to roughly one third of the total of natural and anthropogenic emissions. Wetland CH₄ is produced by microbes breaking down organic matter in the oxygen deprived environment of inundated soils. Due to limited data availability, the details of the role of wetland CH₄ emissions has thus far been underrepresented. Using the Wald Schnee und Landschaft version (LPJ-wsl) of the Lund-Potsdam-Jena Dynamic Global Vegetation Model (LPJ-DGVM) global CH₄ emissions from wetlands are estimated at 0.5 x 0.5 degree resolution by simulating wetland extent and using characteristics of these inundated areas, such as soil moisture, temperature, and carbon content, to estimate CH₄ quantities emitted into the atmosphere. Highlighted areas displayed in this dataset show concentrated methane sources from tropical and high latitude ecosystems. The LPJ-wsl Wetland Methane Emissions data product presented here consists of global daily and monthly model estimates of terrestrial wetland CH₄ emissions from 1980 - 2021. These data are regularly used in conjunction with NASA’s Goddard Earth Observing System (GEOS) model to simulate the impact of wetlands and other methane sources on atmospheric methane concentrations, to compare against satellite and airborne data, and to improve understanding and prediction of wetland emissions." + }, + { + "objectID": "user_data_notebooks/lpjwsl-wetlandch4-grid-v1_User_Notebook.html#querying-the-stac-api", + "href": "user_data_notebooks/lpjwsl-wetlandch4-grid-v1_User_Notebook.html#querying-the-stac-api", + "title": "Wetland Methane Emissions, LPJ-wsl Model", + "section": "Querying the STAC API", + "text": "Querying the STAC API\n\nimport requests\nfrom folium import Map, TileLayer\nfrom pystac_client import Client\n\n\n# Provide STAC and RASTER API endpoints\nSTAC_API_URL = \"http://ghg.center/api/stac\"\nRASTER_API_URL = \"https://ghg.center/api/raster\"\n\n# Please use the collection name similar to the one used in STAC collection.\n\n# Name of the collection for wetland methane monthly emissions. \ncollection_name = \"lpjwsl-wetlandch4-monthgrid-v1\"\n\n\n# Fetching the collection from STAC collections using appropriate endpoint.\ncollection = requests.get(f\"{STAC_API_URL}/collections/{collection_name}\").json()\ncollection\n\nExamining the contents of our collection under summaries, we see that the data is available from January 1980 to December 2021. By looking at dashboard: time density, we can see that these observations are collected monthly.\n\ndef get_item_count(collection_id):\n count = 0\n items_url = f\"{STAC_API_URL}/collections/{collection_id}/items\"\n\n while True:\n response = requests.get(items_url)\n\n if not response.ok:\n print(\"error getting items\")\n exit()\n\n stac = response.json()\n count += int(stac[\"context\"].get(\"returned\", 0))\n next = [link for link in stac[\"links\"] if link[\"rel\"] == \"next\"]\n\n if not next:\n break\n items_url = next[0][\"href\"]\n\n return count\n\n\n# Check total number of items available\nnumber_of_items = get_item_count(collection_name)\nitems = requests.get(f\"{STAC_API_URL}/collections/{collection_name}/items?limit={number_of_items}\").json()[\"features\"]\nprint(f\"Found {len(items)} items\")\n\n\n# Examining the first item in the collection\nitems[0]\n\nBelow, we enter minimum and maximum values to provide our upper and lower bounds in rescale_values.\n\nrescale_values = {'max': 0.2, 'min': 0.0}" + }, + { + "objectID": "user_data_notebooks/lpjwsl-wetlandch4-grid-v1_User_Notebook.html#exploring-changes-in-methane-ch4-emission-levels-using-the-raster-api", + "href": "user_data_notebooks/lpjwsl-wetlandch4-grid-v1_User_Notebook.html#exploring-changes-in-methane-ch4-emission-levels-using-the-raster-api", + "title": "Wetland Methane Emissions, LPJ-wsl Model", + "section": "Exploring Changes in Methane (CH4) Emission Levels Using the Raster API", + "text": "Exploring Changes in Methane (CH4) Emission Levels Using the Raster API\nIn this notebook, we will explore the temporal impacts of methane emissions. We will visualize the outputs on a map using folium.\n\n# To access the year value from each item more easily, this will let us query more explicity by year and month (e.g., 2020-02)\nitems = {item[\"properties\"][\"datetime\"][:7]: item for item in items} \n\nNow, we will pass the item id, collection name, and rescaling_factor to the Raster API endpoint. We will do this twice, once for December 2001 and again for December 2021, so we can visualize each event independently.\n\ncolor_map = \"magma\" # select the color ramp from matplotlib library.\ndecember_2001_tile = requests.get(\n f\"{RASTER_API_URL}/stac/tilejson.json?collection={items['2001-12']['collection']}&item={items['2001-12']['id']}\"\n \"&assets=ch4-wetlands-emissions\"\n f\"&color_formula=gamma+r+1.05&colormap_name={color_map}\"\n f\"&rescale={rescale_values['min']},{rescale_values['max']}\", \n).json()\ndecember_2001_tile\n\n\ndecember_2021_tile = requests.get(\n f\"{RASTER_API_URL}/stac/tilejson.json?collection={items['2021-12']['collection']}&item={items['2021-12']['id']}\"\n \"&assets=ch4-wetlands-emissions\"\n f\"&color_formula=gamma+r+1.05&colormap_name={color_map}\"\n f\"&rescale={rescale_values['min']},{rescale_values['max']}\", \n).json()\ndecember_2021_tile" + }, + { + "objectID": "user_data_notebooks/lpjwsl-wetlandch4-grid-v1_User_Notebook.html#visualizing-ch₄-emissions", + "href": "user_data_notebooks/lpjwsl-wetlandch4-grid-v1_User_Notebook.html#visualizing-ch₄-emissions", + "title": "Wetland Methane Emissions, LPJ-wsl Model", + "section": "Visualizing CH₄ Emissions", + "text": "Visualizing CH₄ Emissions\n\n# We will import folium to map and folium.plugins to allow side-by-side mapping\nimport folium\nimport folium.plugins\n\n# Set initial zoom and center of map for CH₄ Layer\n# Centre of map [latitude,longitude]\nmap_ = folium.plugins.DualMap(location=(34, -118), zoom_start=6)\n\n# December 2001\nmap_layer_2001 = TileLayer(\n tiles=december_2001_tile[\"tiles\"][0],\n attr=\"GHG\",\n opacity=0.5,\n)\nmap_layer_2001.add_to(map_.m1)\n\n# December 2021\nmap_layer_2021 = TileLayer(\n tiles=december_2021_tile[\"tiles\"][0],\n attr=\"GHG\",\n opacity=0.5,\n)\nmap_layer_2021.add_to(map_.m2)\n\n# visualising the map\nmap_" + }, + { + "objectID": "user_data_notebooks/lpjwsl-wetlandch4-grid-v1_User_Notebook.html#visualizing-the-data-as-a-time-series", + "href": "user_data_notebooks/lpjwsl-wetlandch4-grid-v1_User_Notebook.html#visualizing-the-data-as-a-time-series", + "title": "Wetland Methane Emissions, LPJ-wsl Model", + "section": "Visualizing the Data as a Time Series", + "text": "Visualizing the Data as a Time Series\nWe can now explore the wetland methane emissions time series (January 1980 – December 2021) available for the Dallas, Texas area of the U.S. We can plot the data set using the code below:\n\nimport matplotlib.pyplot as plt\n\nfig = plt.figure(figsize=(20, 10))\n\n\nplt.plot(\n df[\"date\"],\n df[\"max\"],\n color=\"red\",\n linestyle=\"-\",\n linewidth=0.5,\n label=\"Max monthly CH₄ emissions\",\n)\n\nplt.legend()\nplt.xlabel(\"Years\")\nplt.ylabel(\"CH4 emissions g/m2\")\nplt.title(\"CH4 emission Values for Texas, Dallas (1980-2021)\")\n\n\nprint(items[2][\"properties\"][\"datetime\"])\n\n\noctober_tile = requests.get(\n f\"{RASTER_API_URL}/stac/tilejson.json?collection={items[2]['collection']}&item={items[2]['id']}\"\n \"&assets=ch4-wetlands-emissions\"\n f\"&color_formula=gamma+r+1.05&colormap_name={color_map}\"\n f\"&rescale={rescale_values['min']},{rescale_values['max']}\",\n).json()\noctober_tile\n\n\n# Use bbox initial zoom and map\n# Set up a map located w/in event bounds\nimport folium\n\naoi_map_bbox = Map(\n tiles=\"OpenStreetMap\",\n location=[\n 30,-100\n ],\n zoom_start=8,\n)\n\nmap_layer = TileLayer(\n tiles=october_tile[\"tiles\"][0],\n attr=\"GHG\", opacity = 0.5\n)\n\nmap_layer.add_to(aoi_map_bbox)\n\naoi_map_bbox" + }, + { + "objectID": "user_data_notebooks/lpjwsl-wetlandch4-grid-v1_User_Notebook.html#summary", + "href": "user_data_notebooks/lpjwsl-wetlandch4-grid-v1_User_Notebook.html#summary", + "title": "Wetland Methane Emissions, LPJ-wsl Model", + "section": "Summary", + "text": "Summary\nIn this notebook, we have successfully explored, analyzed, and visualized the STAC collection for wetland methane emissions." + }, + { + "objectID": "user_data_notebooks/eccodarwin-co2flux-monthgrid-v5_User_Notebook.html", + "href": "user_data_notebooks/eccodarwin-co2flux-monthgrid-v5_User_Notebook.html", + "title": "Air-Sea CO₂ Flux, ECCO-Darwin Model v5", + "section": "", + "text": "Identify available dates and temporal frequency of observations for the given collection using the GHGC API /stac endpoint. The collection processed in this notebook is the Air-Sea CO₂ Flux, ECCO-Darwin Model v5 Data product.\nPass the STAC item into the raster API /stac/tilejson.jsonendpoint.\nUsing folium.plugins.DualMap, we will visualize two tiles (side-by-side), allowing us to compare time points.\nAfter the visualization, we will perform zonal statistics for a given polygon." + }, + { + "objectID": "user_data_notebooks/eccodarwin-co2flux-monthgrid-v5_User_Notebook.html#approach", + "href": "user_data_notebooks/eccodarwin-co2flux-monthgrid-v5_User_Notebook.html#approach", + "title": "Air-Sea CO₂ Flux, ECCO-Darwin Model v5", + "section": "", + "text": "Identify available dates and temporal frequency of observations for the given collection using the GHGC API /stac endpoint. The collection processed in this notebook is the Air-Sea CO₂ Flux, ECCO-Darwin Model v5 Data product.\nPass the STAC item into the raster API /stac/tilejson.jsonendpoint.\nUsing folium.plugins.DualMap, we will visualize two tiles (side-by-side), allowing us to compare time points.\nAfter the visualization, we will perform zonal statistics for a given polygon." + }, + { + "objectID": "user_data_notebooks/eccodarwin-co2flux-monthgrid-v5_User_Notebook.html#about-the-data", + "href": "user_data_notebooks/eccodarwin-co2flux-monthgrid-v5_User_Notebook.html#about-the-data", + "title": "Air-Sea CO₂ Flux, ECCO-Darwin Model v5", + "section": "About the Data", + "text": "About the Data\nThe ocean is a major sink for atmospheric carbon dioxide (CO2), largely due to the presence of phytoplankton that use the CO₂ to grow. Studies have shown that global ocean CO₂ uptake has increased over recent decades however there is uncertainty in the various mechanisms that affect ocean CO₂ flux and storage and how the ocean carbon sink will respond to future climate change. Because CO₂ fluxes can vary significantly across space and time, combined with deficiencies in ocean and atmosphere CO₂ observations, there is a need for models that can thoroughly represent these processes. Ocean biogeochemical models (OBMs) have the ability to resolve the physical and biogeochemical mechanisms contributing to spatial and temporal variations in air-sea CO₂ fluxes but previous OBMs do not integrate observations to improve model accuracy and have not be able to operate on the seasonal and multi-decadal timescales needed to adequately characterize these processes. The ECCO-Darwin model is an OBM that assimilates Estimating the Circulation and Climate of the Ocean (ECCO) consortium ocean circulation estimates and biogeochemical processes from the Massachusetts Institute of Technology (MIT) Darwin Project. A pilot study using ECCO-Darwin was completed by Brix et al. (2015) however an improved version of the model was developed by Carroll et al. (2020) in which issues present in the first model were addressed using data assimilation and adjustments were made to initial conditions and biogeochemical parameters. The updated ECCO-Darwin model was compared with interpolation-based products to estimate surface ocean partial pressure (pCO2) and air-sea CO₂ flux. This dataset contains the gridded global, monthly mean air-sea CO₂ fluxes from version 5 of the ECCO-Darwin model. The data are available at ~1/3° horizontal resolution at the equator (~18 km at high latitudes) from January 2020 through December 2022." + }, + { + "objectID": "user_data_notebooks/eccodarwin-co2flux-monthgrid-v5_User_Notebook.html#installing-the-required-libraries", + "href": "user_data_notebooks/eccodarwin-co2flux-monthgrid-v5_User_Notebook.html#installing-the-required-libraries", + "title": "Air-Sea CO₂ Flux, ECCO-Darwin Model v5", + "section": "Installing the required libraries", + "text": "Installing the required libraries\nPlease run the cell below to install the libraries required to run this notebook.\n\n%pip install requests\n%pip install folium\n%pip install pystac_client" + }, + { + "objectID": "user_data_notebooks/eccodarwin-co2flux-monthgrid-v5_User_Notebook.html#querying-the-stac-api", + "href": "user_data_notebooks/eccodarwin-co2flux-monthgrid-v5_User_Notebook.html#querying-the-stac-api", + "title": "Air-Sea CO₂ Flux, ECCO-Darwin Model v5", + "section": "Querying the STAC API", + "text": "Querying the STAC API\n\nimport requests\nfrom folium import Map, TileLayer\nfrom pystac_client import Client\n\n\n# Provide STAC and RASTER API endpoints\nSTAC_API_URL = \"http://ghg.center/api/stac\"\nRASTER_API_URL = \"https://ghg.center/api/raster\"\n\n# Please use the collection name similar to the one used in STAC collection.\n# Name of the collection for Ecco Darwin CO₂ flux dataset. \ncollection_name = \"eccodarwin-co2flux-monthgrid-v5\"\n\n\n# Fetching the collection from STAC collections using appropriate endpoint.\ncollection = requests.get(f\"{STAC_API_URL}/collections/{collection_name}\").json()\ncollection\n\nExamining the contents of our collection under the temporal variable, we see that the data is available from January 2020 to December 2022. By looking at the dashboard:time density, we observe that the data is periodic with monthly time density.\n\ndef get_item_count(collection_id):\n count = 0\n items_url = f\"{STAC_API_URL}/collections/{collection_id}/items\"\n\n while True:\n response = requests.get(items_url)\n\n if not response.ok:\n print(\"error getting items\")\n exit()\n\n stac = response.json()\n count += int(stac[\"context\"].get(\"returned\", 0))\n next = [link for link in stac[\"links\"] if link[\"rel\"] == \"next\"]\n\n if not next:\n break\n items_url = next[0][\"href\"]\n\n return count\n\n\n# Check total number of items available\nnumber_of_items = get_item_count(collection_name)\nitems = requests.get(f\"{STAC_API_URL}/collections/{collection_name}/items?limit={number_of_items}\").json()[\"features\"]\nprint(f\"Found {len(items)} items\")\n\n\n# Examining the first item in the collection\nitems[0]\n\nBelow, we are entering the minimum and maximum values to provide our upper and lower bounds in rescale_values." + }, + { + "objectID": "user_data_notebooks/eccodarwin-co2flux-monthgrid-v5_User_Notebook.html#exploring-changes-in-co₂-levels-using-the-raster-api", + "href": "user_data_notebooks/eccodarwin-co2flux-monthgrid-v5_User_Notebook.html#exploring-changes-in-co₂-levels-using-the-raster-api", + "title": "Air-Sea CO₂ Flux, ECCO-Darwin Model v5", + "section": "Exploring Changes in CO₂ Levels Using the Raster API", + "text": "Exploring Changes in CO₂ Levels Using the Raster API\nIn this notebook, we will explore the global changes of CO₂ flux over time in urban regions. We will visualize the outputs on a map using folium.\n\n# to access the year value from each item more easily, this will let us query more explicity by year and month (e.g., 2020-02)\nitems = {item[\"properties\"][\"start_datetime\"]: item for item in items} \nasset_name = \"co2\"\n\n\n# Fetching the min and max values for a specific item\nrescale_values = {\"max\":0.05544506255821962, \"min\":-0.0560546997598733}\n\nNow, we will pass the item id, collection name, and rescaling_factor to the Raster API endpoint. We will do this twice so that we can visualize each event independently.\n\ncolor_map = \"magma\"\nco2_flux_1 = requests.get(\n f\"{RASTER_API_URL}/stac/tilejson.json?collection={items[list(items.keys())[0]]['collection']}&item={items[list(items.keys())[0]]['id']}\"\n f\"&assets={asset_name}\"\n f\"&color_formula=gamma+r+1.05&colormap_name={color_map}\"\n f\"&rescale={rescale_values['min']},{rescale_values['max']}\", \n).json()\nco2_flux_1\n\n\nco2_flux_2 = requests.get(\n f\"{RASTER_API_URL}/stac/tilejson.json?collection={items[list(items.keys())[20]]['collection']}&item={items[list(items.keys())[20]]['id']}\"\n f\"&assets={asset_name}\"\n f\"&color_formula=gamma+r+1.05&colormap_name={color_map}\"\n f\"&rescale={rescale_values['min']},{rescale_values['max']}\", \n).json()\nco2_flux_2" + }, + { + "objectID": "user_data_notebooks/eccodarwin-co2flux-monthgrid-v5_User_Notebook.html#visualizing-co₂-flux-emissions", + "href": "user_data_notebooks/eccodarwin-co2flux-monthgrid-v5_User_Notebook.html#visualizing-co₂-flux-emissions", + "title": "Air-Sea CO₂ Flux, ECCO-Darwin Model v5", + "section": "Visualizing CO₂ flux Emissions", + "text": "Visualizing CO₂ flux Emissions\n\n# We'll import folium to map and folium.plugins to allow mapping side-by-side\nimport folium\nimport folium.plugins\n\n# Set initial zoom and center of map for CO₂ Layer\n# Centre of map [latitude,longitude]\nmap_ = folium.plugins.DualMap(location=(34, -118), zoom_start=6)\n\n\nmap_layer_1 = TileLayer(\n tiles=co2_flux_1[\"tiles\"][0],\n attr=\"GHG\",\n opacity=0.8,\n)\nmap_layer_1.add_to(map_.m1)\n\nmap_layer_2 = TileLayer(\n tiles=co2_flux_2[\"tiles\"][0],\n attr=\"GHG\",\n opacity=0.8,\n)\nmap_layer_2.add_to(map_.m2)\n\n# visualising the map\nmap_" + }, + { + "objectID": "user_data_notebooks/eccodarwin-co2flux-monthgrid-v5_User_Notebook.html#visualizing-the-data-as-a-time-series", + "href": "user_data_notebooks/eccodarwin-co2flux-monthgrid-v5_User_Notebook.html#visualizing-the-data-as-a-time-series", + "title": "Air-Sea CO₂ Flux, ECCO-Darwin Model v5", + "section": "Visualizing the Data as a Time Series", + "text": "Visualizing the Data as a Time Series\nWe can now explore the fossil fuel emission time series (January 2020 -December 2022) available for the Dallas, Texas area of the U.S. We can plot the data set using the code below:\n\nimport matplotlib.pyplot as plt\n\nfig = plt.figure(figsize=(20, 10))\n\n\nplt.plot(\n df[\"datetime\"],\n df[\"max\"],\n color=\"red\",\n linestyle=\"-\",\n linewidth=0.5,\n label=\"CO2 emissions\",\n)\n\nplt.legend()\nplt.xlabel(\"Years\")\nplt.ylabel(\"CO2 emissions mmol m²/s\")\nplt.title(\"CO2 emission Values for Gulf of Mexico (2020-2022)\")\n\n\nprint(items[2][\"properties\"][\"start_datetime\"])\n\n\nco2_flux_3 = requests.get(\n f\"{RASTER_API_URL}/stac/tilejson.json?collection={items[2]['collection']}&item={items[2]['id']}\"\n f\"&assets={asset_name}\"\n f\"&color_formula=gamma+r+1.05&colormap_name={color_map}\"\n f\"&rescale={rescale_values['min']},{rescale_values['max']}\",\n).json()\nco2_flux_3\n\n\n# Use bbox initial zoom and map\n# Set up a map located w/in event bounds\nimport folium\n\naoi_map_bbox = Map(\n tiles=\"OpenStreetMap\",\n location=[\n 30,-100\n ],\n zoom_start=6.8,\n)\n\nmap_layer = TileLayer(\n tiles=co2_flux_3[\"tiles\"][0],\n attr=\"GHG\", opacity = 0.7\n)\n\nmap_layer.add_to(aoi_map_bbox)\n\naoi_map_bbox" + }, + { + "objectID": "user_data_notebooks/eccodarwin-co2flux-monthgrid-v5_User_Notebook.html#summary", + "href": "user_data_notebooks/eccodarwin-co2flux-monthgrid-v5_User_Notebook.html#summary", + "title": "Air-Sea CO₂ Flux, ECCO-Darwin Model v5", + "section": "Summary", + "text": "Summary\nIn this notebook we have successfully explored, analyzed, and visualized the STAC collection for ECCO Darwin CO₂ flux dataset" + } +] \ No newline at end of file diff --git a/pr-preview/pr-46/services/apis.html b/pr-preview/pr-46/services/apis.html new file mode 100644 index 00000000..050dfd0d --- /dev/null +++ b/pr-preview/pr-46/services/apis.html @@ -0,0 +1,894 @@ + + + + + + + + + +U.S. Greenhouse Gas Center Documentation - APIs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + +
+ + + +
+ +
+
+

APIs

+

Application Programming Interfaces (APIs) provided by the GHG Center

+
+ + + +
+ + + + +
+ + +
+ +

Please find a list of publicly available APIs below.

+

Please note: while some of our services are already very mature, the GHG Center platform is currently in the build-up phase.

+ +
+

Open Source

+

Most of the GHG Center APIs are hosted out of a single project (ghgc-backend) that combines multiple standalone services.

+ + +
+ + Back to top
+ + +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-46/services/jupyterhub.html b/pr-preview/pr-46/services/jupyterhub.html new file mode 100644 index 00000000..034102d2 --- /dev/null +++ b/pr-preview/pr-46/services/jupyterhub.html @@ -0,0 +1,898 @@ + + + + + + + + + +U.S. Greenhouse Gas Center Documentation - JupyterHub + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + +
+ + + +
+ +
+
+

JupyterHub

+
+ + + +
+ + + + +
+ + +
+ +

The GHG Center promotes the use of JupyterHub environments for interactive data science. JupyterHub enables you to analyze massive archives of Earth science data in the cloud in an interactive environment that alleviates the complexities of managing compute resources (virtual machines, roles and permissions, etc).

+

Users affiliated with the GHG Center can get access to a dedicated JupyterHub service, provided in collaboration with 2i2c: hub.ghg.center. Please find instructions for requesting access below.

+

If you are a scientist affiliated with NASA projects such as VEDA, EIS, and MAAP, you can also keep using the resources provided by these projects. Through the use of open-source technology, we make sure our services are interoperable and exchangeable.

+
+

Getting access to the GHG Center JupyterHub environment

+

Access to the GHG Center notebook environment is currently on an as-need basis. If you are a user afficiliated with the GHG Center, you can gain access by following these steps:

+
    +
  • Make sure you have a Github Account. Take note of your Github username

  • +
  • Send an email to the GHG Center team (veda@uah.edu) asking for access to the GHG Center notebook environment. Please include your Github username. They will invite you through Github to join the GHG Center Hub Access Github Team. Please watch your email for the invite.

  • +
  • Once you accepted the invitation, you should be able to go to hub.ghg.center and login via your Github credentials.

  • +
+
+
+

Instructory notebooks

+

This documentation site provides Jupyter notebooks on how to load and analyze Earth data an interactive cloud computing environment.

+ + +
+ + Back to top
+ + +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-46/site_libs/bootstrap/bootstrap-dark.min.css b/pr-preview/pr-46/site_libs/bootstrap/bootstrap-dark.min.css new file mode 100644 index 00000000..4fa51755 --- /dev/null +++ b/pr-preview/pr-46/site_libs/bootstrap/bootstrap-dark.min.css @@ -0,0 +1,10 @@ +/*! + * Bootstrap v5.1.3 (https://getbootstrap.com/) + * Copyright 2011-2021 The Bootstrap Authors + * Copyright 2011-2021 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */@import"https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,400;0,700;1,400&display=swap";:root{--bs-blue: #375a7f;--bs-indigo: #6610f2;--bs-purple: #6f42c1;--bs-pink: #e83e8c;--bs-red: #e74c3c;--bs-orange: #fd7e14;--bs-yellow: #f39c12;--bs-green: #00bc8c;--bs-teal: #20c997;--bs-cyan: #3498db;--bs-white: #fff;--bs-gray: #6c757d;--bs-gray-dark: #303030;--bs-gray-100: #f8f9fa;--bs-gray-200: #ebebeb;--bs-gray-300: #dee2e6;--bs-gray-400: #ced4da;--bs-gray-500: #adb5bd;--bs-gray-600: #6c757d;--bs-gray-700: #444;--bs-gray-800: #303030;--bs-gray-900: #222;--bs-default: #434343;--bs-primary: #375a7f;--bs-secondary: #434343;--bs-success: #00bc8c;--bs-info: #3498db;--bs-warning: #f39c12;--bs-danger: #e74c3c;--bs-light: #6f6f6f;--bs-dark: #2d2d2d;--bs-default-rgb: 67, 67, 67;--bs-primary-rgb: 55, 90, 127;--bs-secondary-rgb: 67, 67, 67;--bs-success-rgb: 0, 188, 140;--bs-info-rgb: 52, 152, 219;--bs-warning-rgb: 243, 156, 18;--bs-danger-rgb: 231, 76, 60;--bs-light-rgb: 111, 111, 111;--bs-dark-rgb: 45, 45, 45;--bs-white-rgb: 255, 255, 255;--bs-black-rgb: 0, 0, 0;--bs-body-color-rgb: 255, 255, 255;--bs-body-bg-rgb: 34, 34, 34;--bs-font-sans-serif: Lato, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-root-font-size: 17px;--bs-body-font-family: var(--bs-font-sans-serif);--bs-body-font-size: 1rem;--bs-body-font-weight: 400;--bs-body-line-height: 1.5;--bs-body-color: #fff;--bs-body-bg: #222}*,*::before,*::after{box-sizing:border-box}:root{font-size:var(--bs-root-font-size)}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}hr:not([size]){height:1px}h6,.h6,h5,.h5,h4,.h4,h3,.h3,h2,.h2,h1,.h1{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}h1,.h1{font-size:calc(1.325rem + 0.9vw)}@media(min-width: 1200px){h1,.h1{font-size:2rem}}h2,.h2{font-size:calc(1.29rem + 0.48vw)}@media(min-width: 1200px){h2,.h2{font-size:1.65rem}}h3,.h3{font-size:calc(1.27rem + 0.24vw)}@media(min-width: 1200px){h3,.h3{font-size:1.45rem}}h4,.h4{font-size:1.25rem}h5,.h5{font-size:1.1rem}h6,.h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title],abbr[data-bs-original-title]{text-decoration:underline dotted;-webkit-text-decoration:underline dotted;-moz-text-decoration:underline dotted;-ms-text-decoration:underline dotted;-o-text-decoration:underline dotted;cursor:help;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem;padding:.625rem 1.25rem;border-left:.25rem solid #ebebeb}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}b,strong{font-weight:bolder}small,.small{font-size:0.875em}mark,.mark{padding:.2em;background-color:#fcf8e3}sub,sup{position:relative;font-size:0.75em;line-height:0;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}a{color:#00bc8c;text-decoration:underline;-webkit-text-decoration:underline;-moz-text-decoration:underline;-ms-text-decoration:underline;-o-text-decoration:underline}a:hover{color:#009670}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:var(--bs-font-monospace);font-size:1em;direction:ltr /* rtl:ignore */;unicode-bidi:bidi-override}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:0.875em;color:inherit;background-color:#2b2b2b;padding:.5rem;border:1px solid #dee2e6;border-radius:.25rem}pre code{background-color:rgba(0,0,0,0);font-size:inherit;color:inherit;word-break:normal}code{font-size:0.875em;color:#9753b8;background-color:#2b2b2b;border-radius:.25rem;padding:.125rem .25rem;word-wrap:break-word}a>code{color:inherit}kbd{padding:.4rem .4rem;font-size:0.875em;color:#fff;background-color:#222;border-radius:.2em}kbd kbd{padding:0;font-size:1em;font-weight:700}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}thead,tbody,tfoot,tr,td,th{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]::-webkit-calendar-picker-indicator{display:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button:not(:disabled),[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + 0.3vw);line-height:inherit}@media(min-width: 1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-text,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none !important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:0.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:0.875em;color:#6c757d}.blockquote-footer::before{content:"— "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#222;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:0.875em;color:#6c757d}.grid{display:grid;grid-template-rows:repeat(var(--bs-rows, 1), 1fr);grid-template-columns:repeat(var(--bs-columns, 12), 1fr);gap:var(--bs-gap, 1.5rem)}.grid .g-col-1{grid-column:auto/span 1}.grid .g-col-2{grid-column:auto/span 2}.grid .g-col-3{grid-column:auto/span 3}.grid .g-col-4{grid-column:auto/span 4}.grid .g-col-5{grid-column:auto/span 5}.grid .g-col-6{grid-column:auto/span 6}.grid .g-col-7{grid-column:auto/span 7}.grid .g-col-8{grid-column:auto/span 8}.grid .g-col-9{grid-column:auto/span 9}.grid .g-col-10{grid-column:auto/span 10}.grid .g-col-11{grid-column:auto/span 11}.grid .g-col-12{grid-column:auto/span 12}.grid .g-start-1{grid-column-start:1}.grid .g-start-2{grid-column-start:2}.grid .g-start-3{grid-column-start:3}.grid .g-start-4{grid-column-start:4}.grid .g-start-5{grid-column-start:5}.grid .g-start-6{grid-column-start:6}.grid .g-start-7{grid-column-start:7}.grid .g-start-8{grid-column-start:8}.grid .g-start-9{grid-column-start:9}.grid .g-start-10{grid-column-start:10}.grid .g-start-11{grid-column-start:11}@media(min-width: 576px){.grid .g-col-sm-1{grid-column:auto/span 1}.grid .g-col-sm-2{grid-column:auto/span 2}.grid .g-col-sm-3{grid-column:auto/span 3}.grid .g-col-sm-4{grid-column:auto/span 4}.grid .g-col-sm-5{grid-column:auto/span 5}.grid .g-col-sm-6{grid-column:auto/span 6}.grid .g-col-sm-7{grid-column:auto/span 7}.grid .g-col-sm-8{grid-column:auto/span 8}.grid .g-col-sm-9{grid-column:auto/span 9}.grid .g-col-sm-10{grid-column:auto/span 10}.grid .g-col-sm-11{grid-column:auto/span 11}.grid .g-col-sm-12{grid-column:auto/span 12}.grid .g-start-sm-1{grid-column-start:1}.grid .g-start-sm-2{grid-column-start:2}.grid .g-start-sm-3{grid-column-start:3}.grid .g-start-sm-4{grid-column-start:4}.grid .g-start-sm-5{grid-column-start:5}.grid .g-start-sm-6{grid-column-start:6}.grid .g-start-sm-7{grid-column-start:7}.grid .g-start-sm-8{grid-column-start:8}.grid .g-start-sm-9{grid-column-start:9}.grid .g-start-sm-10{grid-column-start:10}.grid .g-start-sm-11{grid-column-start:11}}@media(min-width: 768px){.grid .g-col-md-1{grid-column:auto/span 1}.grid .g-col-md-2{grid-column:auto/span 2}.grid .g-col-md-3{grid-column:auto/span 3}.grid .g-col-md-4{grid-column:auto/span 4}.grid .g-col-md-5{grid-column:auto/span 5}.grid .g-col-md-6{grid-column:auto/span 6}.grid .g-col-md-7{grid-column:auto/span 7}.grid .g-col-md-8{grid-column:auto/span 8}.grid .g-col-md-9{grid-column:auto/span 9}.grid .g-col-md-10{grid-column:auto/span 10}.grid .g-col-md-11{grid-column:auto/span 11}.grid .g-col-md-12{grid-column:auto/span 12}.grid .g-start-md-1{grid-column-start:1}.grid .g-start-md-2{grid-column-start:2}.grid .g-start-md-3{grid-column-start:3}.grid .g-start-md-4{grid-column-start:4}.grid .g-start-md-5{grid-column-start:5}.grid .g-start-md-6{grid-column-start:6}.grid .g-start-md-7{grid-column-start:7}.grid .g-start-md-8{grid-column-start:8}.grid .g-start-md-9{grid-column-start:9}.grid .g-start-md-10{grid-column-start:10}.grid .g-start-md-11{grid-column-start:11}}@media(min-width: 992px){.grid .g-col-lg-1{grid-column:auto/span 1}.grid .g-col-lg-2{grid-column:auto/span 2}.grid .g-col-lg-3{grid-column:auto/span 3}.grid .g-col-lg-4{grid-column:auto/span 4}.grid .g-col-lg-5{grid-column:auto/span 5}.grid .g-col-lg-6{grid-column:auto/span 6}.grid .g-col-lg-7{grid-column:auto/span 7}.grid .g-col-lg-8{grid-column:auto/span 8}.grid .g-col-lg-9{grid-column:auto/span 9}.grid .g-col-lg-10{grid-column:auto/span 10}.grid .g-col-lg-11{grid-column:auto/span 11}.grid .g-col-lg-12{grid-column:auto/span 12}.grid .g-start-lg-1{grid-column-start:1}.grid .g-start-lg-2{grid-column-start:2}.grid .g-start-lg-3{grid-column-start:3}.grid .g-start-lg-4{grid-column-start:4}.grid .g-start-lg-5{grid-column-start:5}.grid .g-start-lg-6{grid-column-start:6}.grid .g-start-lg-7{grid-column-start:7}.grid .g-start-lg-8{grid-column-start:8}.grid .g-start-lg-9{grid-column-start:9}.grid .g-start-lg-10{grid-column-start:10}.grid .g-start-lg-11{grid-column-start:11}}@media(min-width: 1200px){.grid .g-col-xl-1{grid-column:auto/span 1}.grid .g-col-xl-2{grid-column:auto/span 2}.grid .g-col-xl-3{grid-column:auto/span 3}.grid .g-col-xl-4{grid-column:auto/span 4}.grid .g-col-xl-5{grid-column:auto/span 5}.grid .g-col-xl-6{grid-column:auto/span 6}.grid .g-col-xl-7{grid-column:auto/span 7}.grid .g-col-xl-8{grid-column:auto/span 8}.grid .g-col-xl-9{grid-column:auto/span 9}.grid .g-col-xl-10{grid-column:auto/span 10}.grid .g-col-xl-11{grid-column:auto/span 11}.grid .g-col-xl-12{grid-column:auto/span 12}.grid .g-start-xl-1{grid-column-start:1}.grid .g-start-xl-2{grid-column-start:2}.grid .g-start-xl-3{grid-column-start:3}.grid .g-start-xl-4{grid-column-start:4}.grid .g-start-xl-5{grid-column-start:5}.grid .g-start-xl-6{grid-column-start:6}.grid .g-start-xl-7{grid-column-start:7}.grid .g-start-xl-8{grid-column-start:8}.grid .g-start-xl-9{grid-column-start:9}.grid .g-start-xl-10{grid-column-start:10}.grid .g-start-xl-11{grid-column-start:11}}@media(min-width: 1400px){.grid .g-col-xxl-1{grid-column:auto/span 1}.grid .g-col-xxl-2{grid-column:auto/span 2}.grid .g-col-xxl-3{grid-column:auto/span 3}.grid .g-col-xxl-4{grid-column:auto/span 4}.grid .g-col-xxl-5{grid-column:auto/span 5}.grid .g-col-xxl-6{grid-column:auto/span 6}.grid .g-col-xxl-7{grid-column:auto/span 7}.grid .g-col-xxl-8{grid-column:auto/span 8}.grid .g-col-xxl-9{grid-column:auto/span 9}.grid .g-col-xxl-10{grid-column:auto/span 10}.grid .g-col-xxl-11{grid-column:auto/span 11}.grid .g-col-xxl-12{grid-column:auto/span 12}.grid .g-start-xxl-1{grid-column-start:1}.grid .g-start-xxl-2{grid-column-start:2}.grid .g-start-xxl-3{grid-column-start:3}.grid .g-start-xxl-4{grid-column-start:4}.grid .g-start-xxl-5{grid-column-start:5}.grid .g-start-xxl-6{grid-column-start:6}.grid .g-start-xxl-7{grid-column-start:7}.grid .g-start-xxl-8{grid-column-start:8}.grid .g-start-xxl-9{grid-column-start:9}.grid .g-start-xxl-10{grid-column-start:10}.grid .g-start-xxl-11{grid-column-start:11}}.table{--bs-table-bg: transparent;--bs-table-accent-bg: transparent;--bs-table-striped-color: #fff;--bs-table-striped-bg: rgba(0, 0, 0, 0.05);--bs-table-active-color: #fff;--bs-table-active-bg: rgba(0, 0, 0, 0.1);--bs-table-hover-color: #fff;--bs-table-hover-bg: rgba(0, 0, 0, 0.075);width:100%;margin-bottom:1rem;color:#fff;vertical-align:top;border-color:#434343}.table>:not(caption)>*>*{padding:.5rem .5rem;background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-accent-bg)}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table>:not(:first-child){border-top:2px solid #fff}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.table-bordered>:not(caption)>*{border-width:1px 0}.table-bordered>:not(caption)>*>*{border-width:0 1px}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-accent-bg: var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}.table-active{--bs-table-accent-bg: var(--bs-table-active-bg);color:var(--bs-table-active-color)}.table-hover>tbody>tr:hover>*{--bs-table-accent-bg: var(--bs-table-hover-bg);color:var(--bs-table-hover-color)}.table-primary{--bs-table-bg: #375a7f;--bs-table-striped-bg: #416285;--bs-table-striped-color: #fff;--bs-table-active-bg: #4b6b8c;--bs-table-active-color: #fff;--bs-table-hover-bg: #466689;--bs-table-hover-color: #fff;color:#fff;border-color:#4b6b8c}.table-secondary{--bs-table-bg: #434343;--bs-table-striped-bg: #4c4c4c;--bs-table-striped-color: #fff;--bs-table-active-bg: #565656;--bs-table-active-color: #fff;--bs-table-hover-bg: #515151;--bs-table-hover-color: #fff;color:#fff;border-color:#565656}.table-success{--bs-table-bg: #00bc8c;--bs-table-striped-bg: #0dbf92;--bs-table-striped-color: #fff;--bs-table-active-bg: #1ac398;--bs-table-active-color: #fff;--bs-table-hover-bg: #13c195;--bs-table-hover-color: #fff;color:#fff;border-color:#1ac398}.table-info{--bs-table-bg: #3498db;--bs-table-striped-bg: #3e9ddd;--bs-table-striped-color: #fff;--bs-table-active-bg: #48a2df;--bs-table-active-color: #fff;--bs-table-hover-bg: #43a0de;--bs-table-hover-color: #fff;color:#fff;border-color:#48a2df}.table-warning{--bs-table-bg: #f39c12;--bs-table-striped-bg: #f4a11e;--bs-table-striped-color: #fff;--bs-table-active-bg: #f4a62a;--bs-table-active-color: #fff;--bs-table-hover-bg: #f4a324;--bs-table-hover-color: #fff;color:#fff;border-color:#f4a62a}.table-danger{--bs-table-bg: #e74c3c;--bs-table-striped-bg: #e85546;--bs-table-striped-color: #fff;--bs-table-active-bg: #e95e50;--bs-table-active-color: #fff;--bs-table-hover-bg: #e9594b;--bs-table-hover-color: #fff;color:#fff;border-color:#e95e50}.table-light{--bs-table-bg: #6f6f6f;--bs-table-striped-bg: #767676;--bs-table-striped-color: #fff;--bs-table-active-bg: #7d7d7d;--bs-table-active-color: #fff;--bs-table-hover-bg: #7a7a7a;--bs-table-hover-color: #fff;color:#fff;border-color:#7d7d7d}.table-dark{--bs-table-bg: #2d2d2d;--bs-table-striped-bg: #383838;--bs-table-striped-color: #fff;--bs-table-active-bg: #424242;--bs-table-active-color: #fff;--bs-table-hover-bg: #3d3d3d;--bs-table-hover-color: #fff;color:#fff;border-color:#424242}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media(max-width: 575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label,.shiny-input-container .control-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(0.375rem + 1px);padding-bottom:calc(0.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(0.5rem + 1px);padding-bottom:calc(0.5rem + 1px);font-size:1.25rem}.col-form-label-sm{padding-top:calc(0.25rem + 1px);padding-bottom:calc(0.25rem + 1px);font-size:0.875rem}.form-text{margin-top:.25rem;font-size:0.875em;color:#6c757d}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#2d2d2d;background-color:#fff;background-clip:padding-box;border:1px solid #adb5bd;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:#2d2d2d;background-color:#fff;border-color:#9badbf;outline:0;box-shadow:0 0 0 .25rem rgba(55,90,127,.25)}.form-control::-webkit-date-and-time-value{height:1.5em}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#ebebeb;opacity:1}.form-control::file-selector-button{padding:.375rem .75rem;margin:-0.375rem -0.75rem;margin-inline-end:.75rem;color:#fff;background-color:#434343;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#404040}.form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-0.375rem -0.75rem;margin-inline-end:.75rem;color:#fff;background-color:#434343;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-control::-webkit-file-upload-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:#404040}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:#fff;background-color:rgba(0,0,0,0);border:solid rgba(0,0,0,0);border-width:1px 0}.form-control-plaintext.form-control-sm,.form-control-plaintext.form-control-lg{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + 0.5rem + 2px);padding:.25rem .5rem;font-size:0.875rem;border-radius:.2em}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-0.25rem -0.5rem;margin-inline-end:.5rem}.form-control-sm::-webkit-file-upload-button{padding:.25rem .5rem;margin:-0.25rem -0.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-0.5rem -1rem;margin-inline-end:1rem}.form-control-lg::-webkit-file-upload-button{padding:.5rem 1rem;margin:-0.5rem -1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + 0.75rem + 2px)}textarea.form-control-sm{min-height:calc(1.5em + 0.5rem + 2px)}textarea.form-control-lg{min-height:calc(1.5em + 1rem + 2px)}.form-control-color{width:3rem;height:auto;padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{height:1.5em;border-radius:.25rem}.form-control-color::-webkit-color-swatch{height:1.5em;border-radius:.25rem}.form-select{display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;-moz-padding-start:calc(0.75rem - 3px);font-size:1rem;font-weight:400;line-height:1.5;color:#2d2d2d;background-color:#fff;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23303030' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid #adb5bd;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none}@media(prefers-reduced-motion: reduce){.form-select{transition:none}}.form-select:focus{border-color:#9badbf;outline:0;box-shadow:0 0 0 .25rem rgba(55,90,127,.25)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:#ebebeb}.form-select:-moz-focusring{color:rgba(0,0,0,0);text-shadow:0 0 0 #2d2d2d}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:0.875rem;border-radius:.2em}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem;border-radius:.3rem}.form-check,.shiny-input-container .checkbox,.shiny-input-container .radio{display:block;min-height:1.5rem;padding-left:0;margin-bottom:.125rem}.form-check .form-check-input,.form-check .shiny-input-container .checkbox input,.form-check .shiny-input-container .radio input,.shiny-input-container .checkbox .form-check-input,.shiny-input-container .checkbox .shiny-input-container .checkbox input,.shiny-input-container .checkbox .shiny-input-container .radio input,.shiny-input-container .radio .form-check-input,.shiny-input-container .radio .shiny-input-container .checkbox input,.shiny-input-container .radio .shiny-input-container .radio input{float:left;margin-left:0}.form-check-input,.shiny-input-container .checkbox input,.shiny-input-container .checkbox-inline input,.shiny-input-container .radio input,.shiny-input-container .radio-inline input{width:1em;height:1em;margin-top:.25em;vertical-align:top;background-color:#fff;background-repeat:no-repeat;background-position:center;background-size:contain;border:none;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;color-adjust:exact;-webkit-print-color-adjust:exact}.form-check-input[type=checkbox],.shiny-input-container .checkbox input[type=checkbox],.shiny-input-container .checkbox-inline input[type=checkbox],.shiny-input-container .radio input[type=checkbox],.shiny-input-container .radio-inline input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio],.shiny-input-container .checkbox input[type=radio],.shiny-input-container .checkbox-inline input[type=radio],.shiny-input-container .radio input[type=radio],.shiny-input-container .radio-inline input[type=radio]{border-radius:50%}.form-check-input:active,.shiny-input-container .checkbox input:active,.shiny-input-container .checkbox-inline input:active,.shiny-input-container .radio input:active,.shiny-input-container .radio-inline input:active{filter:brightness(90%)}.form-check-input:focus,.shiny-input-container .checkbox input:focus,.shiny-input-container .checkbox-inline input:focus,.shiny-input-container .radio input:focus,.shiny-input-container .radio-inline input:focus{border-color:#9badbf;outline:0;box-shadow:0 0 0 .25rem rgba(55,90,127,.25)}.form-check-input:checked,.shiny-input-container .checkbox input:checked,.shiny-input-container .checkbox-inline input:checked,.shiny-input-container .radio input:checked,.shiny-input-container .radio-inline input:checked{background-color:#375a7f;border-color:#375a7f}.form-check-input:checked[type=checkbox],.shiny-input-container .checkbox input:checked[type=checkbox],.shiny-input-container .checkbox-inline input:checked[type=checkbox],.shiny-input-container .radio input:checked[type=checkbox],.shiny-input-container .radio-inline input:checked[type=checkbox]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio],.shiny-input-container .checkbox input:checked[type=radio],.shiny-input-container .checkbox-inline input:checked[type=radio],.shiny-input-container .radio input:checked[type=radio],.shiny-input-container .radio-inline input:checked[type=radio]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate,.shiny-input-container .checkbox input[type=checkbox]:indeterminate,.shiny-input-container .checkbox-inline input[type=checkbox]:indeterminate,.shiny-input-container .radio input[type=checkbox]:indeterminate,.shiny-input-container .radio-inline input[type=checkbox]:indeterminate{background-color:#375a7f;border-color:#375a7f;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled,.shiny-input-container .checkbox input:disabled,.shiny-input-container .checkbox-inline input:disabled,.shiny-input-container .radio input:disabled,.shiny-input-container .radio-inline input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input[disabled]~.form-check-label,.form-check-input[disabled]~span,.form-check-input:disabled~.form-check-label,.form-check-input:disabled~span,.shiny-input-container .checkbox input[disabled]~.form-check-label,.shiny-input-container .checkbox input[disabled]~span,.shiny-input-container .checkbox input:disabled~.form-check-label,.shiny-input-container .checkbox input:disabled~span,.shiny-input-container .checkbox-inline input[disabled]~.form-check-label,.shiny-input-container .checkbox-inline input[disabled]~span,.shiny-input-container .checkbox-inline input:disabled~.form-check-label,.shiny-input-container .checkbox-inline input:disabled~span,.shiny-input-container .radio input[disabled]~.form-check-label,.shiny-input-container .radio input[disabled]~span,.shiny-input-container .radio input:disabled~.form-check-label,.shiny-input-container .radio input:disabled~span,.shiny-input-container .radio-inline input[disabled]~.form-check-label,.shiny-input-container .radio-inline input[disabled]~span,.shiny-input-container .radio-inline input:disabled~.form-check-label,.shiny-input-container .radio-inline input:disabled~span{opacity:.5}.form-check-label,.shiny-input-container .checkbox label,.shiny-input-container .checkbox-inline label,.shiny-input-container .radio label,.shiny-input-container .radio-inline label{cursor:pointer}.form-switch{padding-left:2.5em}.form-switch .form-check-input{width:2em;margin-left:-2.5em;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%239badbf'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-check-inline,.shiny-input-container .checkbox-inline,.shiny-input-container .radio-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.btn-check[disabled]+.btn,.btn-check:disabled+.btn{pointer-events:none;filter:none;opacity:.65}.form-range{width:100%;height:1.5rem;padding:0;background-color:rgba(0,0,0,0);appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #222,0 0 0 .25rem rgba(55,90,127,.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #222,0 0 0 .25rem rgba(55,90,127,.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-0.25rem;background-color:#375a7f;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none}@media(prefers-reduced-motion: reduce){.form-range::-webkit-slider-thumb{transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#c3ced9}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:rgba(0,0,0,0);cursor:pointer;background-color:#dee2e6;border-color:rgba(0,0,0,0);border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#375a7f;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none}@media(prefers-reduced-motion: reduce){.form-range::-moz-range-thumb{transition:none}}.form-range::-moz-range-thumb:active{background-color:#c3ced9}.form-range::-moz-range-track{width:100%;height:.5rem;color:rgba(0,0,0,0);cursor:pointer;background-color:#dee2e6;border-color:rgba(0,0,0,0);border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.form-range:disabled::-moz-range-thumb{background-color:#adb5bd}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-select{height:calc(3.5rem + 2px);line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;height:100%;padding:1rem .75rem;pointer-events:none;border:1px solid rgba(0,0,0,0);transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media(prefers-reduced-motion: reduce){.form-floating>label{transition:none}}.form-floating>.form-control{padding:1rem .75rem}.form-floating>.form-control::placeholder{color:rgba(0,0,0,0)}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{opacity:.65;transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem)}.form-floating>.form-control:-webkit-autofill~label{opacity:.65;transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem)}.input-group{position:relative;display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;align-items:stretch;-webkit-align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-select{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-select:focus{z-index:3}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:3}.input-group-text{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#6f6f6f;text-align:center;white-space:nowrap;background-color:#434343;border:1px solid #adb5bd;border-radius:.25rem}.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text,.input-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text,.input-group-sm>.btn{padding:.25rem .5rem;font-size:0.875rem;border-radius:.2em}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu),.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu),.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:0.875em;color:#00bc8c}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:0.875rem;color:#fff;background-color:rgba(0,188,140,.9);border-radius:.25rem}.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip,.is-valid~.valid-feedback,.is-valid~.valid-tooltip{display:block}.was-validated .form-control:valid,.form-control.is-valid{border-color:#00bc8c;padding-right:calc(1.5em + 0.75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2300bc8c' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(0.375em + 0.1875rem) center;background-size:calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-control:valid:focus,.form-control.is-valid:focus{border-color:#00bc8c;box-shadow:0 0 0 .25rem rgba(0,188,140,.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + 0.75rem);background-position:top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem)}.was-validated .form-select:valid,.form-select.is-valid{border-color:#00bc8c}.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"],.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23303030' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2300bc8c' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-select:valid:focus,.form-select.is-valid:focus{border-color:#00bc8c;box-shadow:0 0 0 .25rem rgba(0,188,140,.25)}.was-validated .form-check-input:valid,.form-check-input.is-valid{border-color:#00bc8c}.was-validated .form-check-input:valid:checked,.form-check-input.is-valid:checked{background-color:#00bc8c}.was-validated .form-check-input:valid:focus,.form-check-input.is-valid:focus{box-shadow:0 0 0 .25rem rgba(0,188,140,.25)}.was-validated .form-check-input:valid~.form-check-label,.form-check-input.is-valid~.form-check-label{color:#00bc8c}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.was-validated .input-group .form-control:valid,.input-group .form-control.is-valid,.was-validated .input-group .form-select:valid,.input-group .form-select.is-valid{z-index:1}.was-validated .input-group .form-control:valid:focus,.input-group .form-control.is-valid:focus,.was-validated .input-group .form-select:valid:focus,.input-group .form-select.is-valid:focus{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:0.875em;color:#e74c3c}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:0.875rem;color:#fff;background-color:rgba(231,76,60,.9);border-radius:.25rem}.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip,.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip{display:block}.was-validated .form-control:invalid,.form-control.is-invalid{border-color:#e74c3c;padding-right:calc(1.5em + 0.75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23e74c3c'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23e74c3c' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(0.375em + 0.1875rem) center;background-size:calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:#e74c3c;box-shadow:0 0 0 .25rem rgba(231,76,60,.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + 0.75rem);background-position:top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem)}.was-validated .form-select:invalid,.form-select.is-invalid{border-color:#e74c3c}.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"],.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23303030' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23e74c3c'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23e74c3c' stroke='none'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-select:invalid:focus,.form-select.is-invalid:focus{border-color:#e74c3c;box-shadow:0 0 0 .25rem rgba(231,76,60,.25)}.was-validated .form-check-input:invalid,.form-check-input.is-invalid{border-color:#e74c3c}.was-validated .form-check-input:invalid:checked,.form-check-input.is-invalid:checked{background-color:#e74c3c}.was-validated .form-check-input:invalid:focus,.form-check-input.is-invalid:focus{box-shadow:0 0 0 .25rem rgba(231,76,60,.25)}.was-validated .form-check-input:invalid~.form-check-label,.form-check-input.is-invalid~.form-check-label{color:#e74c3c}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.was-validated .input-group .form-control:invalid,.input-group .form-control.is-invalid,.was-validated .input-group .form-select:invalid,.input-group .form-select.is-invalid{z-index:2}.was-validated .input-group .form-control:invalid:focus,.input-group .form-control.is-invalid:focus,.was-validated .input-group .form-select:invalid:focus,.input-group .form-select.is-invalid:focus{z-index:3}.btn{display:inline-block;font-weight:400;line-height:1.5;color:#fff;text-align:center;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;background-color:rgba(0,0,0,0);border:1px solid rgba(0,0,0,0);padding:.375rem .75rem;font-size:1rem;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.btn{transition:none}}.btn:hover{color:#fff}.btn-check:focus+.btn,.btn:focus{outline:0;box-shadow:0 0 0 .25rem rgba(55,90,127,.25)}.btn:disabled,.btn.disabled,fieldset:disabled .btn{pointer-events:none;opacity:.65}.btn-default{color:#fff;background-color:#434343;border-color:#434343}.btn-default:hover{color:#fff;background-color:#393939;border-color:#363636}.btn-check:focus+.btn-default,.btn-default:focus{color:#fff;background-color:#393939;border-color:#363636;box-shadow:0 0 0 .25rem rgba(95,95,95,.5)}.btn-check:checked+.btn-default,.btn-check:active+.btn-default,.btn-default:active,.btn-default.active,.show>.btn-default.dropdown-toggle{color:#fff;background-color:#363636;border-color:#323232}.btn-check:checked+.btn-default:focus,.btn-check:active+.btn-default:focus,.btn-default:active:focus,.btn-default.active:focus,.show>.btn-default.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(95,95,95,.5)}.btn-default:disabled,.btn-default.disabled{color:#fff;background-color:#434343;border-color:#434343}.btn-primary{color:#fff;background-color:#375a7f;border-color:#375a7f}.btn-primary:hover{color:#fff;background-color:#2f4d6c;border-color:#2c4866}.btn-check:focus+.btn-primary,.btn-primary:focus{color:#fff;background-color:#2f4d6c;border-color:#2c4866;box-shadow:0 0 0 .25rem rgba(85,115,146,.5)}.btn-check:checked+.btn-primary,.btn-check:active+.btn-primary,.btn-primary:active,.btn-primary.active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#2c4866;border-color:#29445f}.btn-check:checked+.btn-primary:focus,.btn-check:active+.btn-primary:focus,.btn-primary:active:focus,.btn-primary.active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(85,115,146,.5)}.btn-primary:disabled,.btn-primary.disabled{color:#fff;background-color:#375a7f;border-color:#375a7f}.btn-secondary{color:#fff;background-color:#434343;border-color:#434343}.btn-secondary:hover{color:#fff;background-color:#393939;border-color:#363636}.btn-check:focus+.btn-secondary,.btn-secondary:focus{color:#fff;background-color:#393939;border-color:#363636;box-shadow:0 0 0 .25rem rgba(95,95,95,.5)}.btn-check:checked+.btn-secondary,.btn-check:active+.btn-secondary,.btn-secondary:active,.btn-secondary.active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#363636;border-color:#323232}.btn-check:checked+.btn-secondary:focus,.btn-check:active+.btn-secondary:focus,.btn-secondary:active:focus,.btn-secondary.active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(95,95,95,.5)}.btn-secondary:disabled,.btn-secondary.disabled{color:#fff;background-color:#434343;border-color:#434343}.btn-success{color:#fff;background-color:#00bc8c;border-color:#00bc8c}.btn-success:hover{color:#fff;background-color:#00a077;border-color:#009670}.btn-check:focus+.btn-success,.btn-success:focus{color:#fff;background-color:#00a077;border-color:#009670;box-shadow:0 0 0 .25rem rgba(38,198,157,.5)}.btn-check:checked+.btn-success,.btn-check:active+.btn-success,.btn-success:active,.btn-success.active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#009670;border-color:#008d69}.btn-check:checked+.btn-success:focus,.btn-check:active+.btn-success:focus,.btn-success:active:focus,.btn-success.active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(38,198,157,.5)}.btn-success:disabled,.btn-success.disabled{color:#fff;background-color:#00bc8c;border-color:#00bc8c}.btn-info{color:#fff;background-color:#3498db;border-color:#3498db}.btn-info:hover{color:#fff;background-color:#2c81ba;border-color:#2a7aaf}.btn-check:focus+.btn-info,.btn-info:focus{color:#fff;background-color:#2c81ba;border-color:#2a7aaf;box-shadow:0 0 0 .25rem rgba(82,167,224,.5)}.btn-check:checked+.btn-info,.btn-check:active+.btn-info,.btn-info:active,.btn-info.active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#2a7aaf;border-color:#2772a4}.btn-check:checked+.btn-info:focus,.btn-check:active+.btn-info:focus,.btn-info:active:focus,.btn-info.active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(82,167,224,.5)}.btn-info:disabled,.btn-info.disabled{color:#fff;background-color:#3498db;border-color:#3498db}.btn-warning{color:#fff;background-color:#f39c12;border-color:#f39c12}.btn-warning:hover{color:#fff;background-color:#cf850f;border-color:#c27d0e}.btn-check:focus+.btn-warning,.btn-warning:focus{color:#fff;background-color:#cf850f;border-color:#c27d0e;box-shadow:0 0 0 .25rem rgba(245,171,54,.5)}.btn-check:checked+.btn-warning,.btn-check:active+.btn-warning,.btn-warning:active,.btn-warning.active,.show>.btn-warning.dropdown-toggle{color:#fff;background-color:#c27d0e;border-color:#b6750e}.btn-check:checked+.btn-warning:focus,.btn-check:active+.btn-warning:focus,.btn-warning:active:focus,.btn-warning.active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(245,171,54,.5)}.btn-warning:disabled,.btn-warning.disabled{color:#fff;background-color:#f39c12;border-color:#f39c12}.btn-danger{color:#fff;background-color:#e74c3c;border-color:#e74c3c}.btn-danger:hover{color:#fff;background-color:#c44133;border-color:#b93d30}.btn-check:focus+.btn-danger,.btn-danger:focus{color:#fff;background-color:#c44133;border-color:#b93d30;box-shadow:0 0 0 .25rem rgba(235,103,89,.5)}.btn-check:checked+.btn-danger,.btn-check:active+.btn-danger,.btn-danger:active,.btn-danger.active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#b93d30;border-color:#ad392d}.btn-check:checked+.btn-danger:focus,.btn-check:active+.btn-danger:focus,.btn-danger:active:focus,.btn-danger.active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(235,103,89,.5)}.btn-danger:disabled,.btn-danger.disabled{color:#fff;background-color:#e74c3c;border-color:#e74c3c}.btn-light{color:#fff;background-color:#6f6f6f;border-color:#6f6f6f}.btn-light:hover{color:#fff;background-color:#5e5e5e;border-color:#595959}.btn-check:focus+.btn-light,.btn-light:focus{color:#fff;background-color:#5e5e5e;border-color:#595959;box-shadow:0 0 0 .25rem rgba(133,133,133,.5)}.btn-check:checked+.btn-light,.btn-check:active+.btn-light,.btn-light:active,.btn-light.active,.show>.btn-light.dropdown-toggle{color:#fff;background-color:#595959;border-color:#535353}.btn-check:checked+.btn-light:focus,.btn-check:active+.btn-light:focus,.btn-light:active:focus,.btn-light.active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(133,133,133,.5)}.btn-light:disabled,.btn-light.disabled{color:#fff;background-color:#6f6f6f;border-color:#6f6f6f}.btn-dark{color:#fff;background-color:#2d2d2d;border-color:#2d2d2d}.btn-dark:hover{color:#fff;background-color:#262626;border-color:#242424}.btn-check:focus+.btn-dark,.btn-dark:focus{color:#fff;background-color:#262626;border-color:#242424;box-shadow:0 0 0 .25rem rgba(77,77,77,.5)}.btn-check:checked+.btn-dark,.btn-check:active+.btn-dark,.btn-dark:active,.btn-dark.active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#242424;border-color:#222}.btn-check:checked+.btn-dark:focus,.btn-check:active+.btn-dark:focus,.btn-dark:active:focus,.btn-dark.active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(77,77,77,.5)}.btn-dark:disabled,.btn-dark.disabled{color:#fff;background-color:#2d2d2d;border-color:#2d2d2d}.btn-outline-default{color:#434343;border-color:#434343;background-color:rgba(0,0,0,0)}.btn-outline-default:hover{color:#fff;background-color:#434343;border-color:#434343}.btn-check:focus+.btn-outline-default,.btn-outline-default:focus{box-shadow:0 0 0 .25rem rgba(67,67,67,.5)}.btn-check:checked+.btn-outline-default,.btn-check:active+.btn-outline-default,.btn-outline-default:active,.btn-outline-default.active,.btn-outline-default.dropdown-toggle.show{color:#fff;background-color:#434343;border-color:#434343}.btn-check:checked+.btn-outline-default:focus,.btn-check:active+.btn-outline-default:focus,.btn-outline-default:active:focus,.btn-outline-default.active:focus,.btn-outline-default.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem rgba(67,67,67,.5)}.btn-outline-default:disabled,.btn-outline-default.disabled{color:#434343;background-color:rgba(0,0,0,0)}.btn-outline-primary{color:#375a7f;border-color:#375a7f;background-color:rgba(0,0,0,0)}.btn-outline-primary:hover{color:#fff;background-color:#375a7f;border-color:#375a7f}.btn-check:focus+.btn-outline-primary,.btn-outline-primary:focus{box-shadow:0 0 0 .25rem rgba(55,90,127,.5)}.btn-check:checked+.btn-outline-primary,.btn-check:active+.btn-outline-primary,.btn-outline-primary:active,.btn-outline-primary.active,.btn-outline-primary.dropdown-toggle.show{color:#fff;background-color:#375a7f;border-color:#375a7f}.btn-check:checked+.btn-outline-primary:focus,.btn-check:active+.btn-outline-primary:focus,.btn-outline-primary:active:focus,.btn-outline-primary.active:focus,.btn-outline-primary.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem rgba(55,90,127,.5)}.btn-outline-primary:disabled,.btn-outline-primary.disabled{color:#375a7f;background-color:rgba(0,0,0,0)}.btn-outline-secondary{color:#434343;border-color:#434343;background-color:rgba(0,0,0,0)}.btn-outline-secondary:hover{color:#fff;background-color:#434343;border-color:#434343}.btn-check:focus+.btn-outline-secondary,.btn-outline-secondary:focus{box-shadow:0 0 0 .25rem rgba(67,67,67,.5)}.btn-check:checked+.btn-outline-secondary,.btn-check:active+.btn-outline-secondary,.btn-outline-secondary:active,.btn-outline-secondary.active,.btn-outline-secondary.dropdown-toggle.show{color:#fff;background-color:#434343;border-color:#434343}.btn-check:checked+.btn-outline-secondary:focus,.btn-check:active+.btn-outline-secondary:focus,.btn-outline-secondary:active:focus,.btn-outline-secondary.active:focus,.btn-outline-secondary.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem rgba(67,67,67,.5)}.btn-outline-secondary:disabled,.btn-outline-secondary.disabled{color:#434343;background-color:rgba(0,0,0,0)}.btn-outline-success{color:#00bc8c;border-color:#00bc8c;background-color:rgba(0,0,0,0)}.btn-outline-success:hover{color:#fff;background-color:#00bc8c;border-color:#00bc8c}.btn-check:focus+.btn-outline-success,.btn-outline-success:focus{box-shadow:0 0 0 .25rem rgba(0,188,140,.5)}.btn-check:checked+.btn-outline-success,.btn-check:active+.btn-outline-success,.btn-outline-success:active,.btn-outline-success.active,.btn-outline-success.dropdown-toggle.show{color:#fff;background-color:#00bc8c;border-color:#00bc8c}.btn-check:checked+.btn-outline-success:focus,.btn-check:active+.btn-outline-success:focus,.btn-outline-success:active:focus,.btn-outline-success.active:focus,.btn-outline-success.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem rgba(0,188,140,.5)}.btn-outline-success:disabled,.btn-outline-success.disabled{color:#00bc8c;background-color:rgba(0,0,0,0)}.btn-outline-info{color:#3498db;border-color:#3498db;background-color:rgba(0,0,0,0)}.btn-outline-info:hover{color:#fff;background-color:#3498db;border-color:#3498db}.btn-check:focus+.btn-outline-info,.btn-outline-info:focus{box-shadow:0 0 0 .25rem rgba(52,152,219,.5)}.btn-check:checked+.btn-outline-info,.btn-check:active+.btn-outline-info,.btn-outline-info:active,.btn-outline-info.active,.btn-outline-info.dropdown-toggle.show{color:#fff;background-color:#3498db;border-color:#3498db}.btn-check:checked+.btn-outline-info:focus,.btn-check:active+.btn-outline-info:focus,.btn-outline-info:active:focus,.btn-outline-info.active:focus,.btn-outline-info.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem rgba(52,152,219,.5)}.btn-outline-info:disabled,.btn-outline-info.disabled{color:#3498db;background-color:rgba(0,0,0,0)}.btn-outline-warning{color:#f39c12;border-color:#f39c12;background-color:rgba(0,0,0,0)}.btn-outline-warning:hover{color:#fff;background-color:#f39c12;border-color:#f39c12}.btn-check:focus+.btn-outline-warning,.btn-outline-warning:focus{box-shadow:0 0 0 .25rem rgba(243,156,18,.5)}.btn-check:checked+.btn-outline-warning,.btn-check:active+.btn-outline-warning,.btn-outline-warning:active,.btn-outline-warning.active,.btn-outline-warning.dropdown-toggle.show{color:#fff;background-color:#f39c12;border-color:#f39c12}.btn-check:checked+.btn-outline-warning:focus,.btn-check:active+.btn-outline-warning:focus,.btn-outline-warning:active:focus,.btn-outline-warning.active:focus,.btn-outline-warning.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem rgba(243,156,18,.5)}.btn-outline-warning:disabled,.btn-outline-warning.disabled{color:#f39c12;background-color:rgba(0,0,0,0)}.btn-outline-danger{color:#e74c3c;border-color:#e74c3c;background-color:rgba(0,0,0,0)}.btn-outline-danger:hover{color:#fff;background-color:#e74c3c;border-color:#e74c3c}.btn-check:focus+.btn-outline-danger,.btn-outline-danger:focus{box-shadow:0 0 0 .25rem rgba(231,76,60,.5)}.btn-check:checked+.btn-outline-danger,.btn-check:active+.btn-outline-danger,.btn-outline-danger:active,.btn-outline-danger.active,.btn-outline-danger.dropdown-toggle.show{color:#fff;background-color:#e74c3c;border-color:#e74c3c}.btn-check:checked+.btn-outline-danger:focus,.btn-check:active+.btn-outline-danger:focus,.btn-outline-danger:active:focus,.btn-outline-danger.active:focus,.btn-outline-danger.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem rgba(231,76,60,.5)}.btn-outline-danger:disabled,.btn-outline-danger.disabled{color:#e74c3c;background-color:rgba(0,0,0,0)}.btn-outline-light{color:#6f6f6f;border-color:#6f6f6f;background-color:rgba(0,0,0,0)}.btn-outline-light:hover{color:#fff;background-color:#6f6f6f;border-color:#6f6f6f}.btn-check:focus+.btn-outline-light,.btn-outline-light:focus{box-shadow:0 0 0 .25rem rgba(111,111,111,.5)}.btn-check:checked+.btn-outline-light,.btn-check:active+.btn-outline-light,.btn-outline-light:active,.btn-outline-light.active,.btn-outline-light.dropdown-toggle.show{color:#fff;background-color:#6f6f6f;border-color:#6f6f6f}.btn-check:checked+.btn-outline-light:focus,.btn-check:active+.btn-outline-light:focus,.btn-outline-light:active:focus,.btn-outline-light.active:focus,.btn-outline-light.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem rgba(111,111,111,.5)}.btn-outline-light:disabled,.btn-outline-light.disabled{color:#6f6f6f;background-color:rgba(0,0,0,0)}.btn-outline-dark{color:#2d2d2d;border-color:#2d2d2d;background-color:rgba(0,0,0,0)}.btn-outline-dark:hover{color:#fff;background-color:#2d2d2d;border-color:#2d2d2d}.btn-check:focus+.btn-outline-dark,.btn-outline-dark:focus{box-shadow:0 0 0 .25rem rgba(45,45,45,.5)}.btn-check:checked+.btn-outline-dark,.btn-check:active+.btn-outline-dark,.btn-outline-dark:active,.btn-outline-dark.active,.btn-outline-dark.dropdown-toggle.show{color:#fff;background-color:#2d2d2d;border-color:#2d2d2d}.btn-check:checked+.btn-outline-dark:focus,.btn-check:active+.btn-outline-dark:focus,.btn-outline-dark:active:focus,.btn-outline-dark.active:focus,.btn-outline-dark.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem rgba(45,45,45,.5)}.btn-outline-dark:disabled,.btn-outline-dark.disabled{color:#2d2d2d;background-color:rgba(0,0,0,0)}.btn-link{font-weight:400;color:#00bc8c;text-decoration:underline;-webkit-text-decoration:underline;-moz-text-decoration:underline;-ms-text-decoration:underline;-o-text-decoration:underline}.btn-link:hover{color:#009670}.btn-link:disabled,.btn-link.disabled{color:#6c757d}.btn-lg,.btn-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.btn-sm,.btn-group-sm>.btn{padding:.25rem .5rem;font-size:0.875rem;border-radius:.2em}.fade{transition:opacity .15s linear}@media(prefers-reduced-motion: reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .2s ease}@media(prefers-reduced-motion: reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media(prefers-reduced-motion: reduce){.collapsing.collapse-horizontal{transition:none}}.dropup,.dropend,.dropdown,.dropstart{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid rgba(0,0,0,0);border-bottom:0;border-left:.3em solid rgba(0,0,0,0)}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;z-index:1000;display:none;min-width:10rem;padding:.5rem 0;margin:0;font-size:1rem;color:#fff;text-align:left;list-style:none;background-color:#222;background-clip:padding-box;border:1px solid #434343;border-radius:.25rem}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:.125rem}.dropdown-menu-start{--bs-position: start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position: end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media(min-width: 576px){.dropdown-menu-sm-start{--bs-position: start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position: end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 768px){.dropdown-menu-md-start{--bs-position: start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position: end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 992px){.dropdown-menu-lg-start{--bs-position: start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position: end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 1200px){.dropdown-menu-xl-start{--bs-position: start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position: end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 1400px){.dropdown-menu-xxl-start{--bs-position: start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position: end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid rgba(0,0,0,0);border-bottom:.3em solid;border-left:.3em solid rgba(0,0,0,0)}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropend .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid rgba(0,0,0,0);border-right:0;border-bottom:.3em solid rgba(0,0,0,0);border-left:.3em solid}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropstart .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle::after{display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid rgba(0,0,0,0);border-right:.3em solid;border-bottom:.3em solid rgba(0,0,0,0)}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #434343}.dropdown-item{display:block;width:100%;padding:.25rem 1rem;clear:both;font-weight:400;color:#fff;text-align:inherit;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;white-space:nowrap;background-color:rgba(0,0,0,0);border:0}.dropdown-item:hover,.dropdown-item:focus{color:#fff;background-color:#375a7f}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#375a7f}.dropdown-item.disabled,.dropdown-item:disabled{color:#adb5bd;pointer-events:none;background-color:rgba(0,0,0,0)}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1rem;margin-bottom:0;font-size:0.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1rem;color:#fff}.dropdown-menu-dark{color:#dee2e6;background-color:#303030;border-color:#434343}.dropdown-menu-dark .dropdown-item{color:#dee2e6}.dropdown-menu-dark .dropdown-item:hover,.dropdown-menu-dark .dropdown-item:focus{color:#fff;background-color:rgba(255,255,255,.15)}.dropdown-menu-dark .dropdown-item.active,.dropdown-menu-dark .dropdown-item:active{color:#fff;background-color:#375a7f}.dropdown-menu-dark .dropdown-item.disabled,.dropdown-menu-dark .dropdown-item:disabled{color:#adb5bd}.dropdown-menu-dark .dropdown-divider{border-color:#434343}.dropdown-menu-dark .dropdown-item-text{color:#dee2e6}.dropdown-menu-dark .dropdown-header{color:#adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto}.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn:hover,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:1}.btn-toolbar{display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;justify-content:flex-start;-webkit-justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn:not(:first-child),.btn-group>.btn-group:not(:first-child){margin-left:-1px}.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn,.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after{margin-left:0}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;-webkit-flex-direction:column;align-items:flex-start;-webkit-align-items:flex-start;justify-content:center;-webkit-justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn~.btn,.btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 2rem;color:#00bc8c;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media(prefers-reduced-motion: reduce){.nav-link{transition:none}}.nav-link:hover,.nav-link:focus{color:#009670}.nav-link.disabled{color:#6f6f6f;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #434343}.nav-tabs .nav-link{margin-bottom:-1px;background:none;border:1px solid rgba(0,0,0,0);border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{border-color:#434343 #434343 rgba(0,0,0,0);isolation:isolate}.nav-tabs .nav-link.disabled{color:#6f6f6f;background-color:rgba(0,0,0,0);border-color:rgba(0,0,0,0)}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:#fff;background-color:#222;border-color:#434343 #434343 rgba(0,0,0,0)}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{background:none;border:0;border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#375a7f}.nav-fill>.nav-link,.nav-fill .nav-item{flex:1 1 auto;-webkit-flex:1 1 auto;text-align:center}.nav-justified>.nav-link,.nav-justified .nav-item{flex-basis:0;-webkit-flex-basis:0;flex-grow:1;-webkit-flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding-top:1rem;padding-bottom:1rem}.navbar>.container-xxl,.navbar>.container-xl,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container,.navbar>.container-fluid{display:flex;display:-webkit-flex;flex-wrap:inherit;-webkit-flex-wrap:inherit;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between}.navbar-brand{padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;white-space:nowrap}.navbar-nav{display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;-webkit-flex-basis:100%;flex-grow:1;-webkit-flex-grow:1;align-items:center;-webkit-align-items:center}.navbar-toggler{padding:.25 0;font-size:1.25rem;line-height:1;background-color:rgba(0,0,0,0);border:1px solid rgba(0,0,0,0);border-radius:.25rem;transition:box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 .25rem}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height, 75vh);overflow-y:auto}@media(min-width: 576px){.navbar-expand-sm{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas-header{display:none}.navbar-expand-sm .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;-webkit-flex-grow:1;visibility:visible !important;background-color:rgba(0,0,0,0);border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-sm .offcanvas-top,.navbar-expand-sm .offcanvas-bottom{height:auto;border-top:0;border-bottom:0}.navbar-expand-sm .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 768px){.navbar-expand-md{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas-header{display:none}.navbar-expand-md .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;-webkit-flex-grow:1;visibility:visible !important;background-color:rgba(0,0,0,0);border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-md .offcanvas-top,.navbar-expand-md .offcanvas-bottom{height:auto;border-top:0;border-bottom:0}.navbar-expand-md .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 992px){.navbar-expand-lg{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas-header{display:none}.navbar-expand-lg .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;-webkit-flex-grow:1;visibility:visible !important;background-color:rgba(0,0,0,0);border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-lg .offcanvas-top,.navbar-expand-lg .offcanvas-bottom{height:auto;border-top:0;border-bottom:0}.navbar-expand-lg .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 1200px){.navbar-expand-xl{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas-header{display:none}.navbar-expand-xl .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;-webkit-flex-grow:1;visibility:visible !important;background-color:rgba(0,0,0,0);border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-xl .offcanvas-top,.navbar-expand-xl .offcanvas-bottom{height:auto;border-top:0;border-bottom:0}.navbar-expand-xl .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 1400px){.navbar-expand-xxl{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;-webkit-flex-grow:1;visibility:visible !important;background-color:rgba(0,0,0,0);border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-xxl .offcanvas-top,.navbar-expand-xxl .offcanvas-bottom{height:auto;border-top:0;border-bottom:0}.navbar-expand-xxl .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas-header{display:none}.navbar-expand .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;-webkit-flex-grow:1;visibility:visible !important;background-color:rgba(0,0,0,0);border-right:0;border-left:0;transition:none;transform:none}.navbar-expand .offcanvas-top,.navbar-expand .offcanvas-bottom{height:auto;border-top:0;border-bottom:0}.navbar-expand .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}.navbar-light{background-color:#375a7f}.navbar-light .navbar-brand{color:#dee2e6}.navbar-light .navbar-brand:hover,.navbar-light .navbar-brand:focus{color:#fff}.navbar-light .navbar-nav .nav-link{color:#dee2e6}.navbar-light .navbar-nav .nav-link:hover,.navbar-light .navbar-nav .nav-link:focus{color:rgba(255,255,255,.8)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(222,226,230,.75)}.navbar-light .navbar-nav .show>.nav-link,.navbar-light .navbar-nav .nav-link.active{color:#fff}.navbar-light .navbar-toggler{color:#dee2e6;border-color:rgba(222,226,230,0)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='%23dee2e6' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:#dee2e6}.navbar-light .navbar-text a,.navbar-light .navbar-text a:hover,.navbar-light .navbar-text a:focus{color:#fff}.navbar-dark{background-color:#375a7f}.navbar-dark .navbar-brand{color:#dee2e6}.navbar-dark .navbar-brand:hover,.navbar-dark .navbar-brand:focus{color:#fff}.navbar-dark .navbar-nav .nav-link{color:#dee2e6}.navbar-dark .navbar-nav .nav-link:hover,.navbar-dark .navbar-nav .nav-link:focus{color:rgba(255,255,255,.8)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(222,226,230,.75)}.navbar-dark .navbar-nav .show>.nav-link,.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active{color:#fff}.navbar-dark .navbar-toggler{color:#dee2e6;border-color:rgba(222,226,230,0)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='%23dee2e6' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:#dee2e6}.navbar-dark .navbar-text a,.navbar-dark .navbar-text a:hover,.navbar-dark .navbar-text a:focus{color:#fff}.card{position:relative;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;min-width:0;word-wrap:break-word;background-color:#2d2d2d;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(0.25rem - 1px);border-top-right-radius:calc(0.25rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(0.25rem - 1px);border-bottom-left-radius:calc(0.25rem - 1px)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;-webkit-flex:1 1 auto;padding:1rem 1rem}.card-title{margin-bottom:.5rem}.card-subtitle{margin-top:-0.25rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:1rem}.card-header{padding:.5rem 1rem;margin-bottom:0;background-color:#adb5bd;border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0}.card-footer{padding:.5rem 1rem;background-color:#adb5bd;border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(0.25rem - 1px) calc(0.25rem - 1px)}.card-header-tabs{margin-right:-0.5rem;margin-bottom:-0.5rem;margin-left:-0.5rem;border-bottom:0}.card-header-tabs .nav-link.active{background-color:#2d2d2d;border-bottom-color:#2d2d2d}.card-header-pills{margin-right:-0.5rem;margin-left:-0.5rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1rem;border-radius:calc(0.25rem - 1px)}.card-img,.card-img-top,.card-img-bottom{width:100%}.card-img,.card-img-top{border-top-left-radius:calc(0.25rem - 1px);border-top-right-radius:calc(0.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(0.25rem - 1px);border-bottom-left-radius:calc(0.25rem - 1px)}.card-group>.card{margin-bottom:.75rem}@media(min-width: 576px){.card-group{display:flex;display:-webkit-flex;flex-flow:row wrap;-webkit-flex-flow:row wrap}.card-group>.card{flex:1 0 0%;-webkit-flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-img-top,.card-group>.card:not(:last-child) .card-header{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-img-bottom,.card-group>.card:not(:last-child) .card-footer{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-img-top,.card-group>.card:not(:first-child) .card-header{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-img-bottom,.card-group>.card:not(:first-child) .card-footer{border-bottom-left-radius:0}}.accordion-button{position:relative;display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;width:100%;padding:1rem 1.25rem;font-size:1rem;color:#fff;text-align:left;background-color:#222;border:0;border-radius:0;overflow-anchor:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,border-radius .15s ease}@media(prefers-reduced-motion: reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:#325172;background-color:#ebeff2;box-shadow:inset 0 -1px 0 rgba(0,0,0,.125)}.accordion-button:not(.collapsed)::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23325172'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");transform:rotate(-180deg)}.accordion-button::after{flex-shrink:0;-webkit-flex-shrink:0;width:1.25rem;height:1.25rem;margin-left:auto;content:"";background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-size:1.25rem;transition:transform .2s ease-in-out}@media(prefers-reduced-motion: reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:#9badbf;outline:0;box-shadow:0 0 0 .25rem rgba(55,90,127,.25)}.accordion-header{margin-bottom:0}.accordion-item{background-color:#222;border:1px solid rgba(0,0,0,.125)}.accordion-item:first-of-type{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.accordion-item:first-of-type .accordion-button{border-top-left-radius:calc(0.25rem - 1px);border-top-right-radius:calc(0.25rem - 1px)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:calc(0.25rem - 1px);border-bottom-left-radius:calc(0.25rem - 1px)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.accordion-body{padding:1rem 1.25rem}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button{border-radius:0}.breadcrumb{display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;padding:.375rem .75rem;margin-bottom:1rem;list-style:none;background-color:#434343;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:.5rem;color:#6c757d;content:var(--bs-breadcrumb-divider, ">") /* rtl: var(--bs-breadcrumb-divider, ">") */}.breadcrumb-item.active{color:#6c757d}.pagination{display:flex;display:-webkit-flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;color:#fff;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;background-color:#00bc8c;border:0 solid rgba(0,0,0,0);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:#fff;background-color:#00efb2;border-color:rgba(0,0,0,0)}.page-link:focus{z-index:3;color:#009670;background-color:#ebebeb;outline:0;box-shadow:0 0 0 .25rem rgba(55,90,127,.25)}.page-item:not(:first-child) .page-link{margin-left:0}.page-item.active .page-link{z-index:3;color:#fff;background-color:#00efb2;border-color:rgba(0,0,0,0)}.page-item.disabled .page-link{color:#fff;pointer-events:none;background-color:#007053;border-color:rgba(0,0,0,0)}.page-link{padding:.375rem .75rem}.page-item:first-child .page-link{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:0.875rem}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2em;border-bottom-left-radius:.2em}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2em;border-bottom-right-radius:.2em}.badge{display:inline-block;padding:.35em .65em;font-size:0.75em;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{position:relative;padding:1rem 1rem;margin-bottom:1rem;border:1px solid rgba(0,0,0,0);border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-default{color:#282828;background-color:#d9d9d9;border-color:#c7c7c7}.alert-default .alert-link{color:#202020}.alert-primary{color:#21364c;background-color:#d7dee5;border-color:#c3ced9}.alert-primary .alert-link{color:#1a2b3d}.alert-secondary{color:#282828;background-color:#d9d9d9;border-color:#c7c7c7}.alert-secondary .alert-link{color:#202020}.alert-success{color:#007154;background-color:#ccf2e8;border-color:#b3ebdd}.alert-success .alert-link{color:#005a43}.alert-info{color:#1f5b83;background-color:#d6eaf8;border-color:#c2e0f4}.alert-info .alert-link{color:#194969}.alert-warning{color:#925e0b;background-color:#fdebd0;border-color:#fbe1b8}.alert-warning .alert-link{color:#754b09}.alert-danger{color:#8b2e24;background-color:#fadbd8;border-color:#f8c9c5}.alert-danger .alert-link{color:#6f251d}.alert-light{color:#434343;background-color:#e2e2e2;border-color:#d4d4d4}.alert-light .alert-link{color:#363636}.alert-dark{color:#1b1b1b;background-color:#d5d5d5;border-color:silver}.alert-dark .alert-link{color:#161616}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress{display:flex;display:-webkit-flex;height:1rem;overflow:hidden;font-size:0.75rem;background-color:#434343;border-radius:.25rem}.progress-bar{display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;justify-content:center;-webkit-justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#375a7f;transition:width .6s ease}@media(prefers-reduced-motion: reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-size:1rem 1rem}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media(prefers-reduced-motion: reduce){.progress-bar-animated{animation:none}}.list-group{display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.25rem}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>li::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:#444;text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{z-index:1;color:#fff;text-decoration:none;background-color:#434343}.list-group-item-action:active{color:#fff;background-color:#242424}.list-group-item{position:relative;display:block;padding:.5rem 1rem;color:#fff;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;background-color:#2d2d2d;border:1px solid #434343}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#2d2d2d}.list-group-item.active{z-index:2;color:#fff;background-color:#375a7f;border-color:#375a7f}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media(min-width: 576px){.list-group-horizontal-sm{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media(min-width: 768px){.list-group-horizontal-md{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media(min-width: 992px){.list-group-horizontal-lg{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media(min-width: 1200px){.list-group-horizontal-xl{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media(min-width: 1400px){.list-group-horizontal-xxl{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-default{color:#282828;background-color:#d9d9d9}.list-group-item-default.list-group-item-action:hover,.list-group-item-default.list-group-item-action:focus{color:#282828;background-color:#c3c3c3}.list-group-item-default.list-group-item-action.active{color:#fff;background-color:#282828;border-color:#282828}.list-group-item-primary{color:#21364c;background-color:#d7dee5}.list-group-item-primary.list-group-item-action:hover,.list-group-item-primary.list-group-item-action:focus{color:#21364c;background-color:#c2c8ce}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#21364c;border-color:#21364c}.list-group-item-secondary{color:#282828;background-color:#d9d9d9}.list-group-item-secondary.list-group-item-action:hover,.list-group-item-secondary.list-group-item-action:focus{color:#282828;background-color:#c3c3c3}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#282828;border-color:#282828}.list-group-item-success{color:#007154;background-color:#ccf2e8}.list-group-item-success.list-group-item-action:hover,.list-group-item-success.list-group-item-action:focus{color:#007154;background-color:#b8dad1}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#007154;border-color:#007154}.list-group-item-info{color:#1f5b83;background-color:#d6eaf8}.list-group-item-info.list-group-item-action:hover,.list-group-item-info.list-group-item-action:focus{color:#1f5b83;background-color:#c1d3df}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#1f5b83;border-color:#1f5b83}.list-group-item-warning{color:#925e0b;background-color:#fdebd0}.list-group-item-warning.list-group-item-action:hover,.list-group-item-warning.list-group-item-action:focus{color:#925e0b;background-color:#e4d4bb}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#925e0b;border-color:#925e0b}.list-group-item-danger{color:#8b2e24;background-color:#fadbd8}.list-group-item-danger.list-group-item-action:hover,.list-group-item-danger.list-group-item-action:focus{color:#8b2e24;background-color:#e1c5c2}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#8b2e24;border-color:#8b2e24}.list-group-item-light{color:#434343;background-color:#e2e2e2}.list-group-item-light.list-group-item-action:hover,.list-group-item-light.list-group-item-action:focus{color:#434343;background-color:#cbcbcb}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#434343;border-color:#434343}.list-group-item-dark{color:#1b1b1b;background-color:#d5d5d5}.list-group-item-dark.list-group-item-action:hover,.list-group-item-dark.list-group-item-action:focus{color:#1b1b1b;background-color:silver}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1b1b;border-color:#1b1b1b}.btn-close{box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:#fff;background:rgba(0,0,0,0) url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat;border:0;border-radius:.25rem;opacity:.4}.btn-close:hover{color:#fff;text-decoration:none;opacity:1}.btn-close:focus{outline:0;box-shadow:0 0 0 .25rem rgba(55,90,127,.25);opacity:1}.btn-close:disabled,.btn-close.disabled{pointer-events:none;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;opacity:.25}.btn-close-white{filter:invert(1) grayscale(100%) brightness(200%)}.toast{width:350px;max-width:100%;font-size:0.875rem;pointer-events:auto;background-color:#434343;background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .5rem 1rem rgba(0,0,0,.15);border-radius:.25rem}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{width:max-content;width:-webkit-max-content;width:-moz-max-content;width:-ms-max-content;width:-o-max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:.75rem}.toast-header{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;padding:.5rem .75rem;color:#6c757d;background-color:#2d2d2d;background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:calc(0.25rem - 1px);border-top-right-radius:calc(0.25rem - 1px)}.toast-header .btn-close{margin-right:-0.375rem;margin-left:.75rem}.toast-body{padding:.75rem;word-wrap:break-word}.modal{position:fixed;top:0;left:0;z-index:1055;display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0, -50px)}@media(prefers-reduced-motion: reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;min-height:calc(100% - 1rem)}.modal-content{position:relative;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;width:100%;pointer-events:auto;background-color:#2d2d2d;background-clip:padding-box;border:1px solid #434343;border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1050;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;display:-webkit-flex;flex-shrink:0;-webkit-flex-shrink:0;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #434343;border-top-left-radius:calc(0.3rem - 1px);border-top-right-radius:calc(0.3rem - 1px)}.modal-header .btn-close{padding:.5rem .5rem;margin:-0.5rem -0.5rem -0.5rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto;padding:1rem}.modal-footer{display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;flex-shrink:0;-webkit-flex-shrink:0;align-items:center;-webkit-align-items:center;justify-content:flex-end;-webkit-justify-content:flex-end;padding:.75rem;border-top:1px solid #434343;border-bottom-right-radius:calc(0.3rem - 1px);border-bottom-left-radius:calc(0.3rem - 1px)}.modal-footer>*{margin:.25rem}@media(min-width: 576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{height:calc(100% - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-sm{max-width:300px}}@media(min-width: 992px){.modal-lg,.modal-xl{max-width:800px}}@media(min-width: 1200px){.modal-xl{max-width:1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}.modal-fullscreen .modal-footer{border-radius:0}@media(max-width: 575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}.modal-fullscreen-sm-down .modal-footer{border-radius:0}}@media(max-width: 767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}.modal-fullscreen-md-down .modal-footer{border-radius:0}}@media(max-width: 991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}.modal-fullscreen-lg-down .modal-footer{border-radius:0}}@media(max-width: 1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}.modal-fullscreen-xl-down .modal-footer{border-radius:0}}@media(max-width: 1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}.modal-fullscreen-xxl-down .modal-footer{border-radius:0}}.tooltip{position:absolute;z-index:1080;display:block;margin:0;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:0.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .tooltip-arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:rgba(0,0,0,0);border-style:solid}.bs-tooltip-top,.bs-tooltip-auto[data-popper-placement^=top]{padding:.4rem 0}.bs-tooltip-top .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow{bottom:0}.bs-tooltip-top .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before{top:-1px;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-end,.bs-tooltip-auto[data-popper-placement^=right]{padding:0 .4rem}.bs-tooltip-end .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-end .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before{right:-1px;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-bottom,.bs-tooltip-auto[data-popper-placement^=bottom]{padding:.4rem 0}.bs-tooltip-bottom .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow{top:0}.bs-tooltip-bottom .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before{bottom:-1px;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-start,.bs-tooltip-auto[data-popper-placement^=left]{padding:0 .4rem}.bs-tooltip-start .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-start .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before{left:-1px;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0 /* rtl:ignore */;z-index:1070;display:block;max-width:276px;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:0.875rem;word-wrap:break-word;background-color:#2d2d2d;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .popover-arrow{position:absolute;display:block;width:1rem;height:.5rem}.popover .popover-arrow::before,.popover .popover-arrow::after{position:absolute;display:block;content:"";border-color:rgba(0,0,0,0);border-style:solid}.bs-popover-top>.popover-arrow,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow{bottom:calc(-0.5rem - 1px)}.bs-popover-top>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-top>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#2d2d2d}.bs-popover-end>.popover-arrow,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow{left:calc(-0.5rem - 1px);width:.5rem;height:1rem}.bs-popover-end>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-end>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#2d2d2d}.bs-popover-bottom>.popover-arrow,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow{top:calc(-0.5rem - 1px)}.bs-popover-bottom>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-bottom>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#2d2d2d}.bs-popover-bottom .popover-header::before,.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-0.5rem;content:"";border-bottom:1px solid #434343}.bs-popover-start>.popover-arrow,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow{right:calc(-0.5rem - 1px);width:.5rem;height:1rem}.bs-popover-start>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-start>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#2d2d2d}.popover-header{padding:.5rem 1rem;margin-bottom:0;font-size:1rem;background-color:#434343;border-bottom:1px solid rgba(0,0,0,.2);border-top-left-radius:calc(0.3rem - 1px);border-top-right-radius:calc(0.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:1rem 1rem;color:#fff}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y;-webkit-touch-action:pan-y;-moz-touch-action:pan-y;-ms-touch-action:pan-y;-o-touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-o-backface-visibility:hidden;transition:transform .6s ease-in-out}@media(prefers-reduced-motion: reduce){.carousel-item{transition:none}}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next:not(.carousel-item-start),.active.carousel-item-end{transform:translateX(100%)}.carousel-item-prev:not(.carousel-item-end),.active.carousel-item-start{transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item.active,.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end{z-index:1;opacity:1}.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{z-index:0;opacity:0;transition:opacity 0s .6s}@media(prefers-reduced-motion: reduce){.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{transition:none}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;z-index:1;display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;justify-content:center;-webkit-justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:none;border:0;opacity:.5;transition:opacity .15s ease}@media(prefers-reduced-motion: reduce){.carousel-control-prev,.carousel-control-next{transition:none}}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;display:-webkit-flex;justify-content:center;-webkit-justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%;list-style:none}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;-webkit-flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid rgba(0,0,0,0);border-bottom:10px solid rgba(0,0,0,0);opacity:.5;transition:opacity .6s ease}@media(prefers-reduced-motion: reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-prev-icon,.carousel-dark .carousel-control-next-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}@keyframes spinner-border{to{transform:rotate(360deg) /* rtl:ignore */}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:-0.125em;border:.25em solid currentColor;border-right-color:rgba(0,0,0,0);border-radius:50%;animation:.75s linear infinite spinner-border}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:-0.125em;background-color:currentColor;border-radius:50%;opacity:0;animation:.75s linear infinite spinner-grow}.spinner-grow-sm{width:1rem;height:1rem}@media(prefers-reduced-motion: reduce){.spinner-border,.spinner-grow{animation-duration:1.5s;-webkit-animation-duration:1.5s;-moz-animation-duration:1.5s;-ms-animation-duration:1.5s;-o-animation-duration:1.5s}}.offcanvas{position:fixed;bottom:0;z-index:1045;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;visibility:hidden;background-color:#2d2d2d;background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}@media(prefers-reduced-motion: reduce){.offcanvas{transition:none}}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding:1rem 1rem}.offcanvas-header .btn-close{padding:.5rem .5rem;margin-top:-0.5rem;margin-right:-0.5rem;margin-bottom:-0.5rem}.offcanvas-title{margin-bottom:0;line-height:1.5}.offcanvas-body{flex-grow:1;-webkit-flex-grow:1;padding:1rem 1rem;overflow-y:auto}.offcanvas-start{top:0;left:0;width:400px;border-right:1px solid #434343;transform:translateX(-100%)}.offcanvas-end{top:0;right:0;width:400px;border-left:1px solid #434343;transform:translateX(100%)}.offcanvas-top{top:0;right:0;left:0;height:30vh;max-height:100%;border-bottom:1px solid #434343;transform:translateY(-100%)}.offcanvas-bottom{right:0;left:0;height:30vh;max-height:100%;border-top:1px solid #434343;transform:translateY(100%)}.offcanvas.show{transform:none}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentColor;opacity:.5}.placeholder.btn::before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{animation:placeholder-glow 2s ease-in-out infinite}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{mask-image:linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);-webkit-mask-image:linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);mask-size:200% 100%;-webkit-mask-size:200% 100%;animation:placeholder-wave 2s linear infinite}@keyframes placeholder-wave{100%{mask-position:-200% 0%;-webkit-mask-position:-200% 0%}}.clearfix::after{display:block;clear:both;content:""}.link-default{color:#434343}.link-default:hover,.link-default:focus{color:#363636}.link-primary{color:#375a7f}.link-primary:hover,.link-primary:focus{color:#2c4866}.link-secondary{color:#434343}.link-secondary:hover,.link-secondary:focus{color:#363636}.link-success{color:#00bc8c}.link-success:hover,.link-success:focus{color:#009670}.link-info{color:#3498db}.link-info:hover,.link-info:focus{color:#2a7aaf}.link-warning{color:#f39c12}.link-warning:hover,.link-warning:focus{color:#c27d0e}.link-danger{color:#e74c3c}.link-danger:hover,.link-danger:focus{color:#b93d30}.link-light{color:#6f6f6f}.link-light:hover,.link-light:focus{color:#595959}.link-dark{color:#2d2d2d}.link-dark:hover,.link-dark:focus{color:#242424}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio: 100%}.ratio-4x3{--bs-aspect-ratio: 75%}.ratio-16x9{--bs-aspect-ratio: 56.25%}.ratio-21x9{--bs-aspect-ratio: 42.8571428571%}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:sticky;top:0;z-index:1020}@media(min-width: 576px){.sticky-sm-top{position:sticky;top:0;z-index:1020}}@media(min-width: 768px){.sticky-md-top{position:sticky;top:0;z-index:1020}}@media(min-width: 992px){.sticky-lg-top{position:sticky;top:0;z-index:1020}}@media(min-width: 1200px){.sticky-xl-top{position:sticky;top:0;z-index:1020}}@media(min-width: 1400px){.sticky-xxl-top{position:sticky;top:0;z-index:1020}}.hstack{display:flex;display:-webkit-flex;flex-direction:row;-webkit-flex-direction:row;align-items:center;-webkit-align-items:center;align-self:stretch;-webkit-align-self:stretch}.vstack{display:flex;display:-webkit-flex;flex:1 1 auto;-webkit-flex:1 1 auto;flex-direction:column;-webkit-flex-direction:column;align-self:stretch;-webkit-align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border:0 !important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;-webkit-align-self:stretch;width:1px;min-height:1em;background-color:currentColor;opacity:.25}.align-baseline{vertical-align:baseline !important}.align-top{vertical-align:top !important}.align-middle{vertical-align:middle !important}.align-bottom{vertical-align:bottom !important}.align-text-bottom{vertical-align:text-bottom !important}.align-text-top{vertical-align:text-top !important}.float-start{float:left !important}.float-end{float:right !important}.float-none{float:none !important}.opacity-0{opacity:0 !important}.opacity-25{opacity:.25 !important}.opacity-50{opacity:.5 !important}.opacity-75{opacity:.75 !important}.opacity-100{opacity:1 !important}.overflow-auto{overflow:auto !important}.overflow-hidden{overflow:hidden !important}.overflow-visible{overflow:visible !important}.overflow-scroll{overflow:scroll !important}.d-inline{display:inline !important}.d-inline-block{display:inline-block !important}.d-block{display:block !important}.d-grid{display:grid !important}.d-table{display:table !important}.d-table-row{display:table-row !important}.d-table-cell{display:table-cell !important}.d-flex{display:flex !important}.d-inline-flex{display:inline-flex !important}.d-none{display:none !important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15) !important}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075) !important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175) !important}.shadow-none{box-shadow:none !important}.position-static{position:static !important}.position-relative{position:relative !important}.position-absolute{position:absolute !important}.position-fixed{position:fixed !important}.position-sticky{position:sticky !important}.top-0{top:0 !important}.top-50{top:50% !important}.top-100{top:100% !important}.bottom-0{bottom:0 !important}.bottom-50{bottom:50% !important}.bottom-100{bottom:100% !important}.start-0{left:0 !important}.start-50{left:50% !important}.start-100{left:100% !important}.end-0{right:0 !important}.end-50{right:50% !important}.end-100{right:100% !important}.translate-middle{transform:translate(-50%, -50%) !important}.translate-middle-x{transform:translateX(-50%) !important}.translate-middle-y{transform:translateY(-50%) !important}.border{border:1px solid #dee2e6 !important}.border-0{border:0 !important}.border-top{border-top:1px solid #dee2e6 !important}.border-top-0{border-top:0 !important}.border-end{border-right:1px solid #dee2e6 !important}.border-end-0{border-right:0 !important}.border-bottom{border-bottom:1px solid #dee2e6 !important}.border-bottom-0{border-bottom:0 !important}.border-start{border-left:1px solid #dee2e6 !important}.border-start-0{border-left:0 !important}.border-default{border-color:#434343 !important}.border-primary{border-color:#375a7f !important}.border-secondary{border-color:#434343 !important}.border-success{border-color:#00bc8c !important}.border-info{border-color:#3498db !important}.border-warning{border-color:#f39c12 !important}.border-danger{border-color:#e74c3c !important}.border-light{border-color:#6f6f6f !important}.border-dark{border-color:#2d2d2d !important}.border-white{border-color:#fff !important}.border-1{border-width:1px !important}.border-2{border-width:2px !important}.border-3{border-width:3px !important}.border-4{border-width:4px !important}.border-5{border-width:5px !important}.w-25{width:25% !important}.w-50{width:50% !important}.w-75{width:75% !important}.w-100{width:100% !important}.w-auto{width:auto !important}.mw-100{max-width:100% !important}.vw-100{width:100vw !important}.min-vw-100{min-width:100vw !important}.h-25{height:25% !important}.h-50{height:50% !important}.h-75{height:75% !important}.h-100{height:100% !important}.h-auto{height:auto !important}.mh-100{max-height:100% !important}.vh-100{height:100vh !important}.min-vh-100{min-height:100vh !important}.flex-fill{flex:1 1 auto !important}.flex-row{flex-direction:row !important}.flex-column{flex-direction:column !important}.flex-row-reverse{flex-direction:row-reverse !important}.flex-column-reverse{flex-direction:column-reverse !important}.flex-grow-0{flex-grow:0 !important}.flex-grow-1{flex-grow:1 !important}.flex-shrink-0{flex-shrink:0 !important}.flex-shrink-1{flex-shrink:1 !important}.flex-wrap{flex-wrap:wrap !important}.flex-nowrap{flex-wrap:nowrap !important}.flex-wrap-reverse{flex-wrap:wrap-reverse !important}.gap-0{gap:0 !important}.gap-1{gap:.25rem !important}.gap-2{gap:.5rem !important}.gap-3{gap:1rem !important}.gap-4{gap:1.5rem !important}.gap-5{gap:3rem !important}.justify-content-start{justify-content:flex-start !important}.justify-content-end{justify-content:flex-end !important}.justify-content-center{justify-content:center !important}.justify-content-between{justify-content:space-between !important}.justify-content-around{justify-content:space-around !important}.justify-content-evenly{justify-content:space-evenly !important}.align-items-start{align-items:flex-start !important}.align-items-end{align-items:flex-end !important}.align-items-center{align-items:center !important}.align-items-baseline{align-items:baseline !important}.align-items-stretch{align-items:stretch !important}.align-content-start{align-content:flex-start !important}.align-content-end{align-content:flex-end !important}.align-content-center{align-content:center !important}.align-content-between{align-content:space-between !important}.align-content-around{align-content:space-around !important}.align-content-stretch{align-content:stretch !important}.align-self-auto{align-self:auto !important}.align-self-start{align-self:flex-start !important}.align-self-end{align-self:flex-end !important}.align-self-center{align-self:center !important}.align-self-baseline{align-self:baseline !important}.align-self-stretch{align-self:stretch !important}.order-first{order:-1 !important}.order-0{order:0 !important}.order-1{order:1 !important}.order-2{order:2 !important}.order-3{order:3 !important}.order-4{order:4 !important}.order-5{order:5 !important}.order-last{order:6 !important}.m-0{margin:0 !important}.m-1{margin:.25rem !important}.m-2{margin:.5rem !important}.m-3{margin:1rem !important}.m-4{margin:1.5rem !important}.m-5{margin:3rem !important}.m-auto{margin:auto !important}.mx-0{margin-right:0 !important;margin-left:0 !important}.mx-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-3{margin-right:1rem !important;margin-left:1rem !important}.mx-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-5{margin-right:3rem !important;margin-left:3rem !important}.mx-auto{margin-right:auto !important;margin-left:auto !important}.my-0{margin-top:0 !important;margin-bottom:0 !important}.my-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-0{margin-top:0 !important}.mt-1{margin-top:.25rem !important}.mt-2{margin-top:.5rem !important}.mt-3{margin-top:1rem !important}.mt-4{margin-top:1.5rem !important}.mt-5{margin-top:3rem !important}.mt-auto{margin-top:auto !important}.me-0{margin-right:0 !important}.me-1{margin-right:.25rem !important}.me-2{margin-right:.5rem !important}.me-3{margin-right:1rem !important}.me-4{margin-right:1.5rem !important}.me-5{margin-right:3rem !important}.me-auto{margin-right:auto !important}.mb-0{margin-bottom:0 !important}.mb-1{margin-bottom:.25rem !important}.mb-2{margin-bottom:.5rem !important}.mb-3{margin-bottom:1rem !important}.mb-4{margin-bottom:1.5rem !important}.mb-5{margin-bottom:3rem !important}.mb-auto{margin-bottom:auto !important}.ms-0{margin-left:0 !important}.ms-1{margin-left:.25rem !important}.ms-2{margin-left:.5rem !important}.ms-3{margin-left:1rem !important}.ms-4{margin-left:1.5rem !important}.ms-5{margin-left:3rem !important}.ms-auto{margin-left:auto !important}.p-0{padding:0 !important}.p-1{padding:.25rem !important}.p-2{padding:.5rem !important}.p-3{padding:1rem !important}.p-4{padding:1.5rem !important}.p-5{padding:3rem !important}.px-0{padding-right:0 !important;padding-left:0 !important}.px-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-3{padding-right:1rem !important;padding-left:1rem !important}.px-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-5{padding-right:3rem !important;padding-left:3rem !important}.py-0{padding-top:0 !important;padding-bottom:0 !important}.py-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-0{padding-top:0 !important}.pt-1{padding-top:.25rem !important}.pt-2{padding-top:.5rem !important}.pt-3{padding-top:1rem !important}.pt-4{padding-top:1.5rem !important}.pt-5{padding-top:3rem !important}.pe-0{padding-right:0 !important}.pe-1{padding-right:.25rem !important}.pe-2{padding-right:.5rem !important}.pe-3{padding-right:1rem !important}.pe-4{padding-right:1.5rem !important}.pe-5{padding-right:3rem !important}.pb-0{padding-bottom:0 !important}.pb-1{padding-bottom:.25rem !important}.pb-2{padding-bottom:.5rem !important}.pb-3{padding-bottom:1rem !important}.pb-4{padding-bottom:1.5rem !important}.pb-5{padding-bottom:3rem !important}.ps-0{padding-left:0 !important}.ps-1{padding-left:.25rem !important}.ps-2{padding-left:.5rem !important}.ps-3{padding-left:1rem !important}.ps-4{padding-left:1.5rem !important}.ps-5{padding-left:3rem !important}.font-monospace{font-family:var(--bs-font-monospace) !important}.fs-1{font-size:calc(1.325rem + 0.9vw) !important}.fs-2{font-size:calc(1.29rem + 0.48vw) !important}.fs-3{font-size:calc(1.27rem + 0.24vw) !important}.fs-4{font-size:1.25rem !important}.fs-5{font-size:1.1rem !important}.fs-6{font-size:1rem !important}.fst-italic{font-style:italic !important}.fst-normal{font-style:normal !important}.fw-light{font-weight:300 !important}.fw-lighter{font-weight:lighter !important}.fw-normal{font-weight:400 !important}.fw-bold{font-weight:700 !important}.fw-bolder{font-weight:bolder !important}.lh-1{line-height:1 !important}.lh-sm{line-height:1.25 !important}.lh-base{line-height:1.5 !important}.lh-lg{line-height:2 !important}.text-start{text-align:left !important}.text-end{text-align:right !important}.text-center{text-align:center !important}.text-decoration-none{text-decoration:none !important}.text-decoration-underline{text-decoration:underline !important}.text-decoration-line-through{text-decoration:line-through !important}.text-lowercase{text-transform:lowercase !important}.text-uppercase{text-transform:uppercase !important}.text-capitalize{text-transform:capitalize !important}.text-wrap{white-space:normal !important}.text-nowrap{white-space:nowrap !important}.text-break{word-wrap:break-word !important;word-break:break-word !important}.text-default{--bs-text-opacity: 1;color:rgba(var(--bs-default-rgb), var(--bs-text-opacity)) !important}.text-primary{--bs-text-opacity: 1;color:rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important}.text-secondary{--bs-text-opacity: 1;color:rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important}.text-success{--bs-text-opacity: 1;color:rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important}.text-info{--bs-text-opacity: 1;color:rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important}.text-warning{--bs-text-opacity: 1;color:rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important}.text-danger{--bs-text-opacity: 1;color:rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important}.text-light{--bs-text-opacity: 1;color:rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important}.text-dark{--bs-text-opacity: 1;color:rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important}.text-black{--bs-text-opacity: 1;color:rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important}.text-white{--bs-text-opacity: 1;color:rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important}.text-body{--bs-text-opacity: 1;color:rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important}.text-muted{--bs-text-opacity: 1;color:#6c757d !important}.text-black-50{--bs-text-opacity: 1;color:rgba(0,0,0,.5) !important}.text-white-50{--bs-text-opacity: 1;color:rgba(255,255,255,.5) !important}.text-reset{--bs-text-opacity: 1;color:inherit !important}.text-opacity-25{--bs-text-opacity: 0.25}.text-opacity-50{--bs-text-opacity: 0.5}.text-opacity-75{--bs-text-opacity: 0.75}.text-opacity-100{--bs-text-opacity: 1}.bg-default{--bs-bg-opacity: 1;background-color:rgba(var(--bs-default-rgb), var(--bs-bg-opacity)) !important}.bg-primary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important}.bg-secondary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important}.bg-success{--bs-bg-opacity: 1;background-color:rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important}.bg-info{--bs-bg-opacity: 1;background-color:rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important}.bg-warning{--bs-bg-opacity: 1;background-color:rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important}.bg-danger{--bs-bg-opacity: 1;background-color:rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important}.bg-light{--bs-bg-opacity: 1;background-color:rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important}.bg-dark{--bs-bg-opacity: 1;background-color:rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important}.bg-black{--bs-bg-opacity: 1;background-color:rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important}.bg-white{--bs-bg-opacity: 1;background-color:rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important}.bg-body{--bs-bg-opacity: 1;background-color:rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important}.bg-transparent{--bs-bg-opacity: 1;background-color:rgba(0,0,0,0) !important}.bg-opacity-10{--bs-bg-opacity: 0.1}.bg-opacity-25{--bs-bg-opacity: 0.25}.bg-opacity-50{--bs-bg-opacity: 0.5}.bg-opacity-75{--bs-bg-opacity: 0.75}.bg-opacity-100{--bs-bg-opacity: 1}.bg-gradient{background-image:var(--bs-gradient) !important}.user-select-all{user-select:all !important}.user-select-auto{user-select:auto !important}.user-select-none{user-select:none !important}.pe-none{pointer-events:none !important}.pe-auto{pointer-events:auto !important}.rounded{border-radius:.25rem !important}.rounded-0{border-radius:0 !important}.rounded-1{border-radius:.2em !important}.rounded-2{border-radius:.25rem !important}.rounded-3{border-radius:.3rem !important}.rounded-circle{border-radius:50% !important}.rounded-pill{border-radius:50rem !important}.rounded-top{border-top-left-radius:.25rem !important;border-top-right-radius:.25rem !important}.rounded-end{border-top-right-radius:.25rem !important;border-bottom-right-radius:.25rem !important}.rounded-bottom{border-bottom-right-radius:.25rem !important;border-bottom-left-radius:.25rem !important}.rounded-start{border-bottom-left-radius:.25rem !important;border-top-left-radius:.25rem !important}.visible{visibility:visible !important}.invisible{visibility:hidden !important}@media(min-width: 576px){.float-sm-start{float:left !important}.float-sm-end{float:right !important}.float-sm-none{float:none !important}.d-sm-inline{display:inline !important}.d-sm-inline-block{display:inline-block !important}.d-sm-block{display:block !important}.d-sm-grid{display:grid !important}.d-sm-table{display:table !important}.d-sm-table-row{display:table-row !important}.d-sm-table-cell{display:table-cell !important}.d-sm-flex{display:flex !important}.d-sm-inline-flex{display:inline-flex !important}.d-sm-none{display:none !important}.flex-sm-fill{flex:1 1 auto !important}.flex-sm-row{flex-direction:row !important}.flex-sm-column{flex-direction:column !important}.flex-sm-row-reverse{flex-direction:row-reverse !important}.flex-sm-column-reverse{flex-direction:column-reverse !important}.flex-sm-grow-0{flex-grow:0 !important}.flex-sm-grow-1{flex-grow:1 !important}.flex-sm-shrink-0{flex-shrink:0 !important}.flex-sm-shrink-1{flex-shrink:1 !important}.flex-sm-wrap{flex-wrap:wrap !important}.flex-sm-nowrap{flex-wrap:nowrap !important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse !important}.gap-sm-0{gap:0 !important}.gap-sm-1{gap:.25rem !important}.gap-sm-2{gap:.5rem !important}.gap-sm-3{gap:1rem !important}.gap-sm-4{gap:1.5rem !important}.gap-sm-5{gap:3rem !important}.justify-content-sm-start{justify-content:flex-start !important}.justify-content-sm-end{justify-content:flex-end !important}.justify-content-sm-center{justify-content:center !important}.justify-content-sm-between{justify-content:space-between !important}.justify-content-sm-around{justify-content:space-around !important}.justify-content-sm-evenly{justify-content:space-evenly !important}.align-items-sm-start{align-items:flex-start !important}.align-items-sm-end{align-items:flex-end !important}.align-items-sm-center{align-items:center !important}.align-items-sm-baseline{align-items:baseline !important}.align-items-sm-stretch{align-items:stretch !important}.align-content-sm-start{align-content:flex-start !important}.align-content-sm-end{align-content:flex-end !important}.align-content-sm-center{align-content:center !important}.align-content-sm-between{align-content:space-between !important}.align-content-sm-around{align-content:space-around !important}.align-content-sm-stretch{align-content:stretch !important}.align-self-sm-auto{align-self:auto !important}.align-self-sm-start{align-self:flex-start !important}.align-self-sm-end{align-self:flex-end !important}.align-self-sm-center{align-self:center !important}.align-self-sm-baseline{align-self:baseline !important}.align-self-sm-stretch{align-self:stretch !important}.order-sm-first{order:-1 !important}.order-sm-0{order:0 !important}.order-sm-1{order:1 !important}.order-sm-2{order:2 !important}.order-sm-3{order:3 !important}.order-sm-4{order:4 !important}.order-sm-5{order:5 !important}.order-sm-last{order:6 !important}.m-sm-0{margin:0 !important}.m-sm-1{margin:.25rem !important}.m-sm-2{margin:.5rem !important}.m-sm-3{margin:1rem !important}.m-sm-4{margin:1.5rem !important}.m-sm-5{margin:3rem !important}.m-sm-auto{margin:auto !important}.mx-sm-0{margin-right:0 !important;margin-left:0 !important}.mx-sm-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-sm-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-sm-3{margin-right:1rem !important;margin-left:1rem !important}.mx-sm-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-sm-5{margin-right:3rem !important;margin-left:3rem !important}.mx-sm-auto{margin-right:auto !important;margin-left:auto !important}.my-sm-0{margin-top:0 !important;margin-bottom:0 !important}.my-sm-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-sm-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-sm-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-sm-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-sm-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-sm-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-sm-0{margin-top:0 !important}.mt-sm-1{margin-top:.25rem !important}.mt-sm-2{margin-top:.5rem !important}.mt-sm-3{margin-top:1rem !important}.mt-sm-4{margin-top:1.5rem !important}.mt-sm-5{margin-top:3rem !important}.mt-sm-auto{margin-top:auto !important}.me-sm-0{margin-right:0 !important}.me-sm-1{margin-right:.25rem !important}.me-sm-2{margin-right:.5rem !important}.me-sm-3{margin-right:1rem !important}.me-sm-4{margin-right:1.5rem !important}.me-sm-5{margin-right:3rem !important}.me-sm-auto{margin-right:auto !important}.mb-sm-0{margin-bottom:0 !important}.mb-sm-1{margin-bottom:.25rem !important}.mb-sm-2{margin-bottom:.5rem !important}.mb-sm-3{margin-bottom:1rem !important}.mb-sm-4{margin-bottom:1.5rem !important}.mb-sm-5{margin-bottom:3rem !important}.mb-sm-auto{margin-bottom:auto !important}.ms-sm-0{margin-left:0 !important}.ms-sm-1{margin-left:.25rem !important}.ms-sm-2{margin-left:.5rem !important}.ms-sm-3{margin-left:1rem !important}.ms-sm-4{margin-left:1.5rem !important}.ms-sm-5{margin-left:3rem !important}.ms-sm-auto{margin-left:auto !important}.p-sm-0{padding:0 !important}.p-sm-1{padding:.25rem !important}.p-sm-2{padding:.5rem !important}.p-sm-3{padding:1rem !important}.p-sm-4{padding:1.5rem !important}.p-sm-5{padding:3rem !important}.px-sm-0{padding-right:0 !important;padding-left:0 !important}.px-sm-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-sm-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-sm-3{padding-right:1rem !important;padding-left:1rem !important}.px-sm-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-sm-5{padding-right:3rem !important;padding-left:3rem !important}.py-sm-0{padding-top:0 !important;padding-bottom:0 !important}.py-sm-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-sm-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-sm-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-sm-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-sm-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-sm-0{padding-top:0 !important}.pt-sm-1{padding-top:.25rem !important}.pt-sm-2{padding-top:.5rem !important}.pt-sm-3{padding-top:1rem !important}.pt-sm-4{padding-top:1.5rem !important}.pt-sm-5{padding-top:3rem !important}.pe-sm-0{padding-right:0 !important}.pe-sm-1{padding-right:.25rem !important}.pe-sm-2{padding-right:.5rem !important}.pe-sm-3{padding-right:1rem !important}.pe-sm-4{padding-right:1.5rem !important}.pe-sm-5{padding-right:3rem !important}.pb-sm-0{padding-bottom:0 !important}.pb-sm-1{padding-bottom:.25rem !important}.pb-sm-2{padding-bottom:.5rem !important}.pb-sm-3{padding-bottom:1rem !important}.pb-sm-4{padding-bottom:1.5rem !important}.pb-sm-5{padding-bottom:3rem !important}.ps-sm-0{padding-left:0 !important}.ps-sm-1{padding-left:.25rem !important}.ps-sm-2{padding-left:.5rem !important}.ps-sm-3{padding-left:1rem !important}.ps-sm-4{padding-left:1.5rem !important}.ps-sm-5{padding-left:3rem !important}.text-sm-start{text-align:left !important}.text-sm-end{text-align:right !important}.text-sm-center{text-align:center !important}}@media(min-width: 768px){.float-md-start{float:left !important}.float-md-end{float:right !important}.float-md-none{float:none !important}.d-md-inline{display:inline !important}.d-md-inline-block{display:inline-block !important}.d-md-block{display:block !important}.d-md-grid{display:grid !important}.d-md-table{display:table !important}.d-md-table-row{display:table-row !important}.d-md-table-cell{display:table-cell !important}.d-md-flex{display:flex !important}.d-md-inline-flex{display:inline-flex !important}.d-md-none{display:none !important}.flex-md-fill{flex:1 1 auto !important}.flex-md-row{flex-direction:row !important}.flex-md-column{flex-direction:column !important}.flex-md-row-reverse{flex-direction:row-reverse !important}.flex-md-column-reverse{flex-direction:column-reverse !important}.flex-md-grow-0{flex-grow:0 !important}.flex-md-grow-1{flex-grow:1 !important}.flex-md-shrink-0{flex-shrink:0 !important}.flex-md-shrink-1{flex-shrink:1 !important}.flex-md-wrap{flex-wrap:wrap !important}.flex-md-nowrap{flex-wrap:nowrap !important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse !important}.gap-md-0{gap:0 !important}.gap-md-1{gap:.25rem !important}.gap-md-2{gap:.5rem !important}.gap-md-3{gap:1rem !important}.gap-md-4{gap:1.5rem !important}.gap-md-5{gap:3rem !important}.justify-content-md-start{justify-content:flex-start !important}.justify-content-md-end{justify-content:flex-end !important}.justify-content-md-center{justify-content:center !important}.justify-content-md-between{justify-content:space-between !important}.justify-content-md-around{justify-content:space-around !important}.justify-content-md-evenly{justify-content:space-evenly !important}.align-items-md-start{align-items:flex-start !important}.align-items-md-end{align-items:flex-end !important}.align-items-md-center{align-items:center !important}.align-items-md-baseline{align-items:baseline !important}.align-items-md-stretch{align-items:stretch !important}.align-content-md-start{align-content:flex-start !important}.align-content-md-end{align-content:flex-end !important}.align-content-md-center{align-content:center !important}.align-content-md-between{align-content:space-between !important}.align-content-md-around{align-content:space-around !important}.align-content-md-stretch{align-content:stretch !important}.align-self-md-auto{align-self:auto !important}.align-self-md-start{align-self:flex-start !important}.align-self-md-end{align-self:flex-end !important}.align-self-md-center{align-self:center !important}.align-self-md-baseline{align-self:baseline !important}.align-self-md-stretch{align-self:stretch !important}.order-md-first{order:-1 !important}.order-md-0{order:0 !important}.order-md-1{order:1 !important}.order-md-2{order:2 !important}.order-md-3{order:3 !important}.order-md-4{order:4 !important}.order-md-5{order:5 !important}.order-md-last{order:6 !important}.m-md-0{margin:0 !important}.m-md-1{margin:.25rem !important}.m-md-2{margin:.5rem !important}.m-md-3{margin:1rem !important}.m-md-4{margin:1.5rem !important}.m-md-5{margin:3rem !important}.m-md-auto{margin:auto !important}.mx-md-0{margin-right:0 !important;margin-left:0 !important}.mx-md-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-md-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-md-3{margin-right:1rem !important;margin-left:1rem !important}.mx-md-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-md-5{margin-right:3rem !important;margin-left:3rem !important}.mx-md-auto{margin-right:auto !important;margin-left:auto !important}.my-md-0{margin-top:0 !important;margin-bottom:0 !important}.my-md-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-md-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-md-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-md-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-md-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-md-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-md-0{margin-top:0 !important}.mt-md-1{margin-top:.25rem !important}.mt-md-2{margin-top:.5rem !important}.mt-md-3{margin-top:1rem !important}.mt-md-4{margin-top:1.5rem !important}.mt-md-5{margin-top:3rem !important}.mt-md-auto{margin-top:auto !important}.me-md-0{margin-right:0 !important}.me-md-1{margin-right:.25rem !important}.me-md-2{margin-right:.5rem !important}.me-md-3{margin-right:1rem !important}.me-md-4{margin-right:1.5rem !important}.me-md-5{margin-right:3rem !important}.me-md-auto{margin-right:auto !important}.mb-md-0{margin-bottom:0 !important}.mb-md-1{margin-bottom:.25rem !important}.mb-md-2{margin-bottom:.5rem !important}.mb-md-3{margin-bottom:1rem !important}.mb-md-4{margin-bottom:1.5rem !important}.mb-md-5{margin-bottom:3rem !important}.mb-md-auto{margin-bottom:auto !important}.ms-md-0{margin-left:0 !important}.ms-md-1{margin-left:.25rem !important}.ms-md-2{margin-left:.5rem !important}.ms-md-3{margin-left:1rem !important}.ms-md-4{margin-left:1.5rem !important}.ms-md-5{margin-left:3rem !important}.ms-md-auto{margin-left:auto !important}.p-md-0{padding:0 !important}.p-md-1{padding:.25rem !important}.p-md-2{padding:.5rem !important}.p-md-3{padding:1rem !important}.p-md-4{padding:1.5rem !important}.p-md-5{padding:3rem !important}.px-md-0{padding-right:0 !important;padding-left:0 !important}.px-md-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-md-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-md-3{padding-right:1rem !important;padding-left:1rem !important}.px-md-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-md-5{padding-right:3rem !important;padding-left:3rem !important}.py-md-0{padding-top:0 !important;padding-bottom:0 !important}.py-md-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-md-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-md-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-md-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-md-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-md-0{padding-top:0 !important}.pt-md-1{padding-top:.25rem !important}.pt-md-2{padding-top:.5rem !important}.pt-md-3{padding-top:1rem !important}.pt-md-4{padding-top:1.5rem !important}.pt-md-5{padding-top:3rem !important}.pe-md-0{padding-right:0 !important}.pe-md-1{padding-right:.25rem !important}.pe-md-2{padding-right:.5rem !important}.pe-md-3{padding-right:1rem !important}.pe-md-4{padding-right:1.5rem !important}.pe-md-5{padding-right:3rem !important}.pb-md-0{padding-bottom:0 !important}.pb-md-1{padding-bottom:.25rem !important}.pb-md-2{padding-bottom:.5rem !important}.pb-md-3{padding-bottom:1rem !important}.pb-md-4{padding-bottom:1.5rem !important}.pb-md-5{padding-bottom:3rem !important}.ps-md-0{padding-left:0 !important}.ps-md-1{padding-left:.25rem !important}.ps-md-2{padding-left:.5rem !important}.ps-md-3{padding-left:1rem !important}.ps-md-4{padding-left:1.5rem !important}.ps-md-5{padding-left:3rem !important}.text-md-start{text-align:left !important}.text-md-end{text-align:right !important}.text-md-center{text-align:center !important}}@media(min-width: 992px){.float-lg-start{float:left !important}.float-lg-end{float:right !important}.float-lg-none{float:none !important}.d-lg-inline{display:inline !important}.d-lg-inline-block{display:inline-block !important}.d-lg-block{display:block !important}.d-lg-grid{display:grid !important}.d-lg-table{display:table !important}.d-lg-table-row{display:table-row !important}.d-lg-table-cell{display:table-cell !important}.d-lg-flex{display:flex !important}.d-lg-inline-flex{display:inline-flex !important}.d-lg-none{display:none !important}.flex-lg-fill{flex:1 1 auto !important}.flex-lg-row{flex-direction:row !important}.flex-lg-column{flex-direction:column !important}.flex-lg-row-reverse{flex-direction:row-reverse !important}.flex-lg-column-reverse{flex-direction:column-reverse !important}.flex-lg-grow-0{flex-grow:0 !important}.flex-lg-grow-1{flex-grow:1 !important}.flex-lg-shrink-0{flex-shrink:0 !important}.flex-lg-shrink-1{flex-shrink:1 !important}.flex-lg-wrap{flex-wrap:wrap !important}.flex-lg-nowrap{flex-wrap:nowrap !important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse !important}.gap-lg-0{gap:0 !important}.gap-lg-1{gap:.25rem !important}.gap-lg-2{gap:.5rem !important}.gap-lg-3{gap:1rem !important}.gap-lg-4{gap:1.5rem !important}.gap-lg-5{gap:3rem !important}.justify-content-lg-start{justify-content:flex-start !important}.justify-content-lg-end{justify-content:flex-end !important}.justify-content-lg-center{justify-content:center !important}.justify-content-lg-between{justify-content:space-between !important}.justify-content-lg-around{justify-content:space-around !important}.justify-content-lg-evenly{justify-content:space-evenly !important}.align-items-lg-start{align-items:flex-start !important}.align-items-lg-end{align-items:flex-end !important}.align-items-lg-center{align-items:center !important}.align-items-lg-baseline{align-items:baseline !important}.align-items-lg-stretch{align-items:stretch !important}.align-content-lg-start{align-content:flex-start !important}.align-content-lg-end{align-content:flex-end !important}.align-content-lg-center{align-content:center !important}.align-content-lg-between{align-content:space-between !important}.align-content-lg-around{align-content:space-around !important}.align-content-lg-stretch{align-content:stretch !important}.align-self-lg-auto{align-self:auto !important}.align-self-lg-start{align-self:flex-start !important}.align-self-lg-end{align-self:flex-end !important}.align-self-lg-center{align-self:center !important}.align-self-lg-baseline{align-self:baseline !important}.align-self-lg-stretch{align-self:stretch !important}.order-lg-first{order:-1 !important}.order-lg-0{order:0 !important}.order-lg-1{order:1 !important}.order-lg-2{order:2 !important}.order-lg-3{order:3 !important}.order-lg-4{order:4 !important}.order-lg-5{order:5 !important}.order-lg-last{order:6 !important}.m-lg-0{margin:0 !important}.m-lg-1{margin:.25rem !important}.m-lg-2{margin:.5rem !important}.m-lg-3{margin:1rem !important}.m-lg-4{margin:1.5rem !important}.m-lg-5{margin:3rem !important}.m-lg-auto{margin:auto !important}.mx-lg-0{margin-right:0 !important;margin-left:0 !important}.mx-lg-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-lg-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-lg-3{margin-right:1rem !important;margin-left:1rem !important}.mx-lg-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-lg-5{margin-right:3rem !important;margin-left:3rem !important}.mx-lg-auto{margin-right:auto !important;margin-left:auto !important}.my-lg-0{margin-top:0 !important;margin-bottom:0 !important}.my-lg-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-lg-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-lg-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-lg-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-lg-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-lg-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-lg-0{margin-top:0 !important}.mt-lg-1{margin-top:.25rem !important}.mt-lg-2{margin-top:.5rem !important}.mt-lg-3{margin-top:1rem !important}.mt-lg-4{margin-top:1.5rem !important}.mt-lg-5{margin-top:3rem !important}.mt-lg-auto{margin-top:auto !important}.me-lg-0{margin-right:0 !important}.me-lg-1{margin-right:.25rem !important}.me-lg-2{margin-right:.5rem !important}.me-lg-3{margin-right:1rem !important}.me-lg-4{margin-right:1.5rem !important}.me-lg-5{margin-right:3rem !important}.me-lg-auto{margin-right:auto !important}.mb-lg-0{margin-bottom:0 !important}.mb-lg-1{margin-bottom:.25rem !important}.mb-lg-2{margin-bottom:.5rem !important}.mb-lg-3{margin-bottom:1rem !important}.mb-lg-4{margin-bottom:1.5rem !important}.mb-lg-5{margin-bottom:3rem !important}.mb-lg-auto{margin-bottom:auto !important}.ms-lg-0{margin-left:0 !important}.ms-lg-1{margin-left:.25rem !important}.ms-lg-2{margin-left:.5rem !important}.ms-lg-3{margin-left:1rem !important}.ms-lg-4{margin-left:1.5rem !important}.ms-lg-5{margin-left:3rem !important}.ms-lg-auto{margin-left:auto !important}.p-lg-0{padding:0 !important}.p-lg-1{padding:.25rem !important}.p-lg-2{padding:.5rem !important}.p-lg-3{padding:1rem !important}.p-lg-4{padding:1.5rem !important}.p-lg-5{padding:3rem !important}.px-lg-0{padding-right:0 !important;padding-left:0 !important}.px-lg-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-lg-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-lg-3{padding-right:1rem !important;padding-left:1rem !important}.px-lg-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-lg-5{padding-right:3rem !important;padding-left:3rem !important}.py-lg-0{padding-top:0 !important;padding-bottom:0 !important}.py-lg-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-lg-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-lg-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-lg-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-lg-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-lg-0{padding-top:0 !important}.pt-lg-1{padding-top:.25rem !important}.pt-lg-2{padding-top:.5rem !important}.pt-lg-3{padding-top:1rem !important}.pt-lg-4{padding-top:1.5rem !important}.pt-lg-5{padding-top:3rem !important}.pe-lg-0{padding-right:0 !important}.pe-lg-1{padding-right:.25rem !important}.pe-lg-2{padding-right:.5rem !important}.pe-lg-3{padding-right:1rem !important}.pe-lg-4{padding-right:1.5rem !important}.pe-lg-5{padding-right:3rem !important}.pb-lg-0{padding-bottom:0 !important}.pb-lg-1{padding-bottom:.25rem !important}.pb-lg-2{padding-bottom:.5rem !important}.pb-lg-3{padding-bottom:1rem !important}.pb-lg-4{padding-bottom:1.5rem !important}.pb-lg-5{padding-bottom:3rem !important}.ps-lg-0{padding-left:0 !important}.ps-lg-1{padding-left:.25rem !important}.ps-lg-2{padding-left:.5rem !important}.ps-lg-3{padding-left:1rem !important}.ps-lg-4{padding-left:1.5rem !important}.ps-lg-5{padding-left:3rem !important}.text-lg-start{text-align:left !important}.text-lg-end{text-align:right !important}.text-lg-center{text-align:center !important}}@media(min-width: 1200px){.float-xl-start{float:left !important}.float-xl-end{float:right !important}.float-xl-none{float:none !important}.d-xl-inline{display:inline !important}.d-xl-inline-block{display:inline-block !important}.d-xl-block{display:block !important}.d-xl-grid{display:grid !important}.d-xl-table{display:table !important}.d-xl-table-row{display:table-row !important}.d-xl-table-cell{display:table-cell !important}.d-xl-flex{display:flex !important}.d-xl-inline-flex{display:inline-flex !important}.d-xl-none{display:none !important}.flex-xl-fill{flex:1 1 auto !important}.flex-xl-row{flex-direction:row !important}.flex-xl-column{flex-direction:column !important}.flex-xl-row-reverse{flex-direction:row-reverse !important}.flex-xl-column-reverse{flex-direction:column-reverse !important}.flex-xl-grow-0{flex-grow:0 !important}.flex-xl-grow-1{flex-grow:1 !important}.flex-xl-shrink-0{flex-shrink:0 !important}.flex-xl-shrink-1{flex-shrink:1 !important}.flex-xl-wrap{flex-wrap:wrap !important}.flex-xl-nowrap{flex-wrap:nowrap !important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse !important}.gap-xl-0{gap:0 !important}.gap-xl-1{gap:.25rem !important}.gap-xl-2{gap:.5rem !important}.gap-xl-3{gap:1rem !important}.gap-xl-4{gap:1.5rem !important}.gap-xl-5{gap:3rem !important}.justify-content-xl-start{justify-content:flex-start !important}.justify-content-xl-end{justify-content:flex-end !important}.justify-content-xl-center{justify-content:center !important}.justify-content-xl-between{justify-content:space-between !important}.justify-content-xl-around{justify-content:space-around !important}.justify-content-xl-evenly{justify-content:space-evenly !important}.align-items-xl-start{align-items:flex-start !important}.align-items-xl-end{align-items:flex-end !important}.align-items-xl-center{align-items:center !important}.align-items-xl-baseline{align-items:baseline !important}.align-items-xl-stretch{align-items:stretch !important}.align-content-xl-start{align-content:flex-start !important}.align-content-xl-end{align-content:flex-end !important}.align-content-xl-center{align-content:center !important}.align-content-xl-between{align-content:space-between !important}.align-content-xl-around{align-content:space-around !important}.align-content-xl-stretch{align-content:stretch !important}.align-self-xl-auto{align-self:auto !important}.align-self-xl-start{align-self:flex-start !important}.align-self-xl-end{align-self:flex-end !important}.align-self-xl-center{align-self:center !important}.align-self-xl-baseline{align-self:baseline !important}.align-self-xl-stretch{align-self:stretch !important}.order-xl-first{order:-1 !important}.order-xl-0{order:0 !important}.order-xl-1{order:1 !important}.order-xl-2{order:2 !important}.order-xl-3{order:3 !important}.order-xl-4{order:4 !important}.order-xl-5{order:5 !important}.order-xl-last{order:6 !important}.m-xl-0{margin:0 !important}.m-xl-1{margin:.25rem !important}.m-xl-2{margin:.5rem !important}.m-xl-3{margin:1rem !important}.m-xl-4{margin:1.5rem !important}.m-xl-5{margin:3rem !important}.m-xl-auto{margin:auto !important}.mx-xl-0{margin-right:0 !important;margin-left:0 !important}.mx-xl-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-xl-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-xl-3{margin-right:1rem !important;margin-left:1rem !important}.mx-xl-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-xl-5{margin-right:3rem !important;margin-left:3rem !important}.mx-xl-auto{margin-right:auto !important;margin-left:auto !important}.my-xl-0{margin-top:0 !important;margin-bottom:0 !important}.my-xl-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-xl-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-xl-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-xl-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-xl-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-xl-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-xl-0{margin-top:0 !important}.mt-xl-1{margin-top:.25rem !important}.mt-xl-2{margin-top:.5rem !important}.mt-xl-3{margin-top:1rem !important}.mt-xl-4{margin-top:1.5rem !important}.mt-xl-5{margin-top:3rem !important}.mt-xl-auto{margin-top:auto !important}.me-xl-0{margin-right:0 !important}.me-xl-1{margin-right:.25rem !important}.me-xl-2{margin-right:.5rem !important}.me-xl-3{margin-right:1rem !important}.me-xl-4{margin-right:1.5rem !important}.me-xl-5{margin-right:3rem !important}.me-xl-auto{margin-right:auto !important}.mb-xl-0{margin-bottom:0 !important}.mb-xl-1{margin-bottom:.25rem !important}.mb-xl-2{margin-bottom:.5rem !important}.mb-xl-3{margin-bottom:1rem !important}.mb-xl-4{margin-bottom:1.5rem !important}.mb-xl-5{margin-bottom:3rem !important}.mb-xl-auto{margin-bottom:auto !important}.ms-xl-0{margin-left:0 !important}.ms-xl-1{margin-left:.25rem !important}.ms-xl-2{margin-left:.5rem !important}.ms-xl-3{margin-left:1rem !important}.ms-xl-4{margin-left:1.5rem !important}.ms-xl-5{margin-left:3rem !important}.ms-xl-auto{margin-left:auto !important}.p-xl-0{padding:0 !important}.p-xl-1{padding:.25rem !important}.p-xl-2{padding:.5rem !important}.p-xl-3{padding:1rem !important}.p-xl-4{padding:1.5rem !important}.p-xl-5{padding:3rem !important}.px-xl-0{padding-right:0 !important;padding-left:0 !important}.px-xl-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-xl-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-xl-3{padding-right:1rem !important;padding-left:1rem !important}.px-xl-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-xl-5{padding-right:3rem !important;padding-left:3rem !important}.py-xl-0{padding-top:0 !important;padding-bottom:0 !important}.py-xl-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-xl-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-xl-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-xl-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-xl-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-xl-0{padding-top:0 !important}.pt-xl-1{padding-top:.25rem !important}.pt-xl-2{padding-top:.5rem !important}.pt-xl-3{padding-top:1rem !important}.pt-xl-4{padding-top:1.5rem !important}.pt-xl-5{padding-top:3rem !important}.pe-xl-0{padding-right:0 !important}.pe-xl-1{padding-right:.25rem !important}.pe-xl-2{padding-right:.5rem !important}.pe-xl-3{padding-right:1rem !important}.pe-xl-4{padding-right:1.5rem !important}.pe-xl-5{padding-right:3rem !important}.pb-xl-0{padding-bottom:0 !important}.pb-xl-1{padding-bottom:.25rem !important}.pb-xl-2{padding-bottom:.5rem !important}.pb-xl-3{padding-bottom:1rem !important}.pb-xl-4{padding-bottom:1.5rem !important}.pb-xl-5{padding-bottom:3rem !important}.ps-xl-0{padding-left:0 !important}.ps-xl-1{padding-left:.25rem !important}.ps-xl-2{padding-left:.5rem !important}.ps-xl-3{padding-left:1rem !important}.ps-xl-4{padding-left:1.5rem !important}.ps-xl-5{padding-left:3rem !important}.text-xl-start{text-align:left !important}.text-xl-end{text-align:right !important}.text-xl-center{text-align:center !important}}@media(min-width: 1400px){.float-xxl-start{float:left !important}.float-xxl-end{float:right !important}.float-xxl-none{float:none !important}.d-xxl-inline{display:inline !important}.d-xxl-inline-block{display:inline-block !important}.d-xxl-block{display:block !important}.d-xxl-grid{display:grid !important}.d-xxl-table{display:table !important}.d-xxl-table-row{display:table-row !important}.d-xxl-table-cell{display:table-cell !important}.d-xxl-flex{display:flex !important}.d-xxl-inline-flex{display:inline-flex !important}.d-xxl-none{display:none !important}.flex-xxl-fill{flex:1 1 auto !important}.flex-xxl-row{flex-direction:row !important}.flex-xxl-column{flex-direction:column !important}.flex-xxl-row-reverse{flex-direction:row-reverse !important}.flex-xxl-column-reverse{flex-direction:column-reverse !important}.flex-xxl-grow-0{flex-grow:0 !important}.flex-xxl-grow-1{flex-grow:1 !important}.flex-xxl-shrink-0{flex-shrink:0 !important}.flex-xxl-shrink-1{flex-shrink:1 !important}.flex-xxl-wrap{flex-wrap:wrap !important}.flex-xxl-nowrap{flex-wrap:nowrap !important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse !important}.gap-xxl-0{gap:0 !important}.gap-xxl-1{gap:.25rem !important}.gap-xxl-2{gap:.5rem !important}.gap-xxl-3{gap:1rem !important}.gap-xxl-4{gap:1.5rem !important}.gap-xxl-5{gap:3rem !important}.justify-content-xxl-start{justify-content:flex-start !important}.justify-content-xxl-end{justify-content:flex-end !important}.justify-content-xxl-center{justify-content:center !important}.justify-content-xxl-between{justify-content:space-between !important}.justify-content-xxl-around{justify-content:space-around !important}.justify-content-xxl-evenly{justify-content:space-evenly !important}.align-items-xxl-start{align-items:flex-start !important}.align-items-xxl-end{align-items:flex-end !important}.align-items-xxl-center{align-items:center !important}.align-items-xxl-baseline{align-items:baseline !important}.align-items-xxl-stretch{align-items:stretch !important}.align-content-xxl-start{align-content:flex-start !important}.align-content-xxl-end{align-content:flex-end !important}.align-content-xxl-center{align-content:center !important}.align-content-xxl-between{align-content:space-between !important}.align-content-xxl-around{align-content:space-around !important}.align-content-xxl-stretch{align-content:stretch !important}.align-self-xxl-auto{align-self:auto !important}.align-self-xxl-start{align-self:flex-start !important}.align-self-xxl-end{align-self:flex-end !important}.align-self-xxl-center{align-self:center !important}.align-self-xxl-baseline{align-self:baseline !important}.align-self-xxl-stretch{align-self:stretch !important}.order-xxl-first{order:-1 !important}.order-xxl-0{order:0 !important}.order-xxl-1{order:1 !important}.order-xxl-2{order:2 !important}.order-xxl-3{order:3 !important}.order-xxl-4{order:4 !important}.order-xxl-5{order:5 !important}.order-xxl-last{order:6 !important}.m-xxl-0{margin:0 !important}.m-xxl-1{margin:.25rem !important}.m-xxl-2{margin:.5rem !important}.m-xxl-3{margin:1rem !important}.m-xxl-4{margin:1.5rem !important}.m-xxl-5{margin:3rem !important}.m-xxl-auto{margin:auto !important}.mx-xxl-0{margin-right:0 !important;margin-left:0 !important}.mx-xxl-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-xxl-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-xxl-3{margin-right:1rem !important;margin-left:1rem !important}.mx-xxl-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-xxl-5{margin-right:3rem !important;margin-left:3rem !important}.mx-xxl-auto{margin-right:auto !important;margin-left:auto !important}.my-xxl-0{margin-top:0 !important;margin-bottom:0 !important}.my-xxl-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-xxl-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-xxl-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-xxl-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-xxl-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-xxl-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-xxl-0{margin-top:0 !important}.mt-xxl-1{margin-top:.25rem !important}.mt-xxl-2{margin-top:.5rem !important}.mt-xxl-3{margin-top:1rem !important}.mt-xxl-4{margin-top:1.5rem !important}.mt-xxl-5{margin-top:3rem !important}.mt-xxl-auto{margin-top:auto !important}.me-xxl-0{margin-right:0 !important}.me-xxl-1{margin-right:.25rem !important}.me-xxl-2{margin-right:.5rem !important}.me-xxl-3{margin-right:1rem !important}.me-xxl-4{margin-right:1.5rem !important}.me-xxl-5{margin-right:3rem !important}.me-xxl-auto{margin-right:auto !important}.mb-xxl-0{margin-bottom:0 !important}.mb-xxl-1{margin-bottom:.25rem !important}.mb-xxl-2{margin-bottom:.5rem !important}.mb-xxl-3{margin-bottom:1rem !important}.mb-xxl-4{margin-bottom:1.5rem !important}.mb-xxl-5{margin-bottom:3rem !important}.mb-xxl-auto{margin-bottom:auto !important}.ms-xxl-0{margin-left:0 !important}.ms-xxl-1{margin-left:.25rem !important}.ms-xxl-2{margin-left:.5rem !important}.ms-xxl-3{margin-left:1rem !important}.ms-xxl-4{margin-left:1.5rem !important}.ms-xxl-5{margin-left:3rem !important}.ms-xxl-auto{margin-left:auto !important}.p-xxl-0{padding:0 !important}.p-xxl-1{padding:.25rem !important}.p-xxl-2{padding:.5rem !important}.p-xxl-3{padding:1rem !important}.p-xxl-4{padding:1.5rem !important}.p-xxl-5{padding:3rem !important}.px-xxl-0{padding-right:0 !important;padding-left:0 !important}.px-xxl-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-xxl-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-xxl-3{padding-right:1rem !important;padding-left:1rem !important}.px-xxl-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-xxl-5{padding-right:3rem !important;padding-left:3rem !important}.py-xxl-0{padding-top:0 !important;padding-bottom:0 !important}.py-xxl-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-xxl-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-xxl-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-xxl-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-xxl-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-xxl-0{padding-top:0 !important}.pt-xxl-1{padding-top:.25rem !important}.pt-xxl-2{padding-top:.5rem !important}.pt-xxl-3{padding-top:1rem !important}.pt-xxl-4{padding-top:1.5rem !important}.pt-xxl-5{padding-top:3rem !important}.pe-xxl-0{padding-right:0 !important}.pe-xxl-1{padding-right:.25rem !important}.pe-xxl-2{padding-right:.5rem !important}.pe-xxl-3{padding-right:1rem !important}.pe-xxl-4{padding-right:1.5rem !important}.pe-xxl-5{padding-right:3rem !important}.pb-xxl-0{padding-bottom:0 !important}.pb-xxl-1{padding-bottom:.25rem !important}.pb-xxl-2{padding-bottom:.5rem !important}.pb-xxl-3{padding-bottom:1rem !important}.pb-xxl-4{padding-bottom:1.5rem !important}.pb-xxl-5{padding-bottom:3rem !important}.ps-xxl-0{padding-left:0 !important}.ps-xxl-1{padding-left:.25rem !important}.ps-xxl-2{padding-left:.5rem !important}.ps-xxl-3{padding-left:1rem !important}.ps-xxl-4{padding-left:1.5rem !important}.ps-xxl-5{padding-left:3rem !important}.text-xxl-start{text-align:left !important}.text-xxl-end{text-align:right !important}.text-xxl-center{text-align:center !important}}.bg-default{color:#fff}.bg-primary{color:#fff}.bg-secondary{color:#fff}.bg-success{color:#fff}.bg-info{color:#fff}.bg-warning{color:#fff}.bg-danger{color:#fff}.bg-light{color:#fff}.bg-dark{color:#fff}@media(min-width: 1200px){.fs-1{font-size:2rem !important}.fs-2{font-size:1.65rem !important}.fs-3{font-size:1.45rem !important}}@media print{.d-print-inline{display:inline !important}.d-print-inline-block{display:inline-block !important}.d-print-block{display:block !important}.d-print-grid{display:grid !important}.d-print-table{display:table !important}.d-print-table-row{display:table-row !important}.d-print-table-cell{display:table-cell !important}.d-print-flex{display:flex !important}.d-print-inline-flex{display:inline-flex !important}.d-print-none{display:none !important}}.quarto-container{min-height:calc(100vh - 132px)}footer.footer .nav-footer,#quarto-header>nav{padding-left:1em;padding-right:1em}nav[role=doc-toc]{padding-left:.5em}#quarto-content>*{padding-top:14px}@media(max-width: 991.98px){#quarto-content>*{padding-top:0}#quarto-content .subtitle{padding-top:14px}#quarto-content section:first-of-type h2:first-of-type,#quarto-content section:first-of-type .h2:first-of-type{margin-top:1rem}}.headroom-target,header.headroom{will-change:transform;transition:position 200ms linear;transition:all 200ms linear}header.headroom--pinned{transform:translateY(0%)}header.headroom--unpinned{transform:translateY(-100%)}.navbar-container{width:100%}.navbar-brand{overflow:hidden;text-overflow:ellipsis}.navbar-brand-container{max-width:calc(100% - 115px);min-width:0;display:flex;align-items:center}@media(min-width: 992px){.navbar-brand-container{margin-right:1em}}.navbar-brand.navbar-brand-logo{margin-right:4px;display:inline-flex}.navbar-toggler{flex-basis:content;flex-shrink:0}.navbar .navbar-toggler{order:-1;margin-right:.5em}.navbar-logo{max-height:24px;width:auto;padding-right:4px}nav .nav-item:not(.compact){padding-top:1px}nav .nav-link i,nav .dropdown-item i{padding-right:1px}.navbar-expand-lg .navbar-nav .nav-link{padding-left:.6rem;padding-right:.6rem}nav .nav-item.compact .nav-link{padding-left:.5rem;padding-right:.5rem;font-size:1.1rem}.navbar .quarto-navbar-tools div.dropdown{display:inline-block}.navbar .quarto-navbar-tools .quarto-navigation-tool{color:#dee2e6}.navbar .quarto-navbar-tools .quarto-navigation-tool:hover{color:#fff}@media(max-width: 991.98px){.navbar .quarto-navbar-tools{margin-top:.25em;padding-top:.75em;display:block;color:solid #556370 1px;text-align:center;vertical-align:middle;margin-right:auto}}.navbar-nav .dropdown-menu{min-width:220px;font-size:.9rem}.navbar .navbar-nav .nav-link.dropdown-toggle::after{opacity:.75;vertical-align:.175em}.navbar ul.dropdown-menu{padding-top:0;padding-bottom:0}.navbar .dropdown-header{text-transform:uppercase;font-size:.8rem;padding:0 .5rem}.navbar .dropdown-item{padding:.4rem .5rem}.navbar .dropdown-item>i.bi{margin-left:.1rem;margin-right:.25em}.sidebar #quarto-search{margin-top:-1px}.sidebar #quarto-search svg.aa-SubmitIcon{width:16px;height:16px}.sidebar-navigation a{color:inherit}.sidebar-title{margin-top:.25rem;padding-bottom:.5rem;font-size:1.3rem;line-height:1.6rem;visibility:visible}.sidebar-title>a{font-size:inherit;text-decoration:none}.sidebar-title .sidebar-tools-main{margin-top:-6px}@media(max-width: 991.98px){#quarto-sidebar div.sidebar-header{padding-top:.2em}}.sidebar-header-stacked .sidebar-title{margin-top:.6rem}.sidebar-logo{max-width:90%;padding-bottom:.5rem}.sidebar-logo-link{text-decoration:none}.sidebar-navigation li a{text-decoration:none}.sidebar-navigation .quarto-navigation-tool{opacity:.7;font-size:.875rem}#quarto-sidebar>nav>.sidebar-tools-main{margin-left:14px}.sidebar-tools-main{display:inline-flex;margin-left:0px;order:2}.sidebar-tools-main:not(.tools-wide){vertical-align:middle}.sidebar-navigation .quarto-navigation-tool.dropdown-toggle::after{display:none}.sidebar.sidebar-navigation>*{padding-top:1em}.sidebar-item{margin-bottom:.2em}.sidebar-section{margin-top:.2em;padding-left:.5em;padding-bottom:.2em}.sidebar-item .sidebar-item-container{display:flex;justify-content:space-between}.sidebar-item-toggle:hover{cursor:pointer}.sidebar-item .sidebar-item-toggle .bi{font-size:.7rem;text-align:center}.sidebar-item .sidebar-item-toggle .bi-chevron-right::before{transition:transform 200ms ease}.sidebar-item .sidebar-item-toggle[aria-expanded=false] .bi-chevron-right::before{transform:none}.sidebar-item .sidebar-item-toggle[aria-expanded=true] .bi-chevron-right::before{transform:rotate(90deg)}.sidebar-navigation .sidebar-divider{margin-left:0;margin-right:0;margin-top:.5rem;margin-bottom:.5rem}@media(max-width: 991.98px){.quarto-secondary-nav{display:block}.quarto-secondary-nav button.quarto-search-button{padding-right:0em;padding-left:2em}.quarto-secondary-nav button.quarto-btn-toggle{margin-left:-0.75rem;margin-right:.15rem}.quarto-secondary-nav nav.quarto-page-breadcrumbs{display:flex;align-items:center;padding-right:1em;margin-left:-0.25em}.quarto-secondary-nav nav.quarto-page-breadcrumbs a{text-decoration:none}.quarto-secondary-nav nav.quarto-page-breadcrumbs ol.breadcrumb{margin-bottom:0}}@media(min-width: 992px){.quarto-secondary-nav{display:none}}.quarto-secondary-nav .quarto-btn-toggle{color:#fefefe}.quarto-secondary-nav[aria-expanded=false] .quarto-btn-toggle .bi-chevron-right::before{transform:none}.quarto-secondary-nav[aria-expanded=true] .quarto-btn-toggle .bi-chevron-right::before{transform:rotate(90deg)}.quarto-secondary-nav .quarto-btn-toggle .bi-chevron-right::before{transition:transform 200ms ease}.quarto-secondary-nav{cursor:pointer}.quarto-secondary-nav-title{margin-top:.3em;color:#fefefe;padding-top:4px}.quarto-secondary-nav nav.quarto-page-breadcrumbs{color:#fefefe}.quarto-secondary-nav nav.quarto-page-breadcrumbs a{color:#fefefe}.quarto-secondary-nav nav.quarto-page-breadcrumbs a:hover{color:rgba(252,254,254,.8)}.quarto-secondary-nav nav.quarto-page-breadcrumbs .breadcrumb-item::before{color:#cbcbcb}div.sidebar-item-container{color:#fefefe}div.sidebar-item-container:hover,div.sidebar-item-container:focus{color:rgba(252,254,254,.8)}div.sidebar-item-container.disabled{color:rgba(254,254,254,.75)}div.sidebar-item-container .active,div.sidebar-item-container .show>.nav-link,div.sidebar-item-container .sidebar-link>code{color:#fcfefe}div.sidebar.sidebar-navigation.rollup.quarto-sidebar-toggle-contents,nav.sidebar.sidebar-navigation:not(.rollup){background-color:#6f6f6f}.sidebar.sidebar-navigation:not(.rollup){border-right:1px solid #434343 !important}@media(max-width: 991.98px){.sidebar-navigation .sidebar-item a,.nav-page .nav-page-text,.sidebar-navigation{font-size:1rem}.sidebar-navigation ul.sidebar-section.depth1 .sidebar-section-item{font-size:1.1rem}.sidebar-logo{display:none}.sidebar.sidebar-navigation{position:static;border-bottom:1px solid #434343}.sidebar.sidebar-navigation.collapsing{position:fixed;z-index:1000}.sidebar.sidebar-navigation.show{position:fixed;z-index:1000}.sidebar.sidebar-navigation{min-height:100%}nav.quarto-secondary-nav{background-color:#6f6f6f;border-bottom:1px solid #434343}.sidebar .sidebar-footer{visibility:visible;padding-top:1rem;position:inherit}.sidebar-tools-collapse{display:block}}#quarto-sidebar{transition:width .15s ease-in}#quarto-sidebar>*{padding-right:1em}@media(max-width: 991.98px){#quarto-sidebar .sidebar-menu-container{white-space:nowrap;min-width:225px}#quarto-sidebar.show{transition:width .15s ease-out}}@media(min-width: 992px){#quarto-sidebar{display:flex;flex-direction:column}.nav-page .nav-page-text,.sidebar-navigation .sidebar-section .sidebar-item{font-size:.875rem}.sidebar-navigation .sidebar-item{font-size:.925rem}.sidebar.sidebar-navigation{display:block;position:sticky}.sidebar-search{width:100%}.sidebar .sidebar-footer{visibility:visible}}@media(max-width: 991.98px){#quarto-sidebar-glass{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(255,255,255,0);transition:background-color .15s ease-in;z-index:-1}#quarto-sidebar-glass.collapsing{z-index:1000}#quarto-sidebar-glass.show{transition:background-color .15s ease-out;background-color:rgba(102,102,102,.4);z-index:1000}}.sidebar .sidebar-footer{padding:.5rem 1rem;align-self:flex-end;color:#6c757d;width:100%}.quarto-page-breadcrumbs .breadcrumb-item+.breadcrumb-item,.quarto-page-breadcrumbs .breadcrumb-item{padding-right:.33em;padding-left:0}.quarto-page-breadcrumbs .breadcrumb-item::before{padding-right:.33em}.quarto-sidebar-footer{font-size:.875em}.sidebar-section .bi-chevron-right{vertical-align:middle}.sidebar-section .bi-chevron-right::before{font-size:.9em}.notransition{-webkit-transition:none !important;-moz-transition:none !important;-o-transition:none !important;transition:none !important}.btn:focus:not(:focus-visible){box-shadow:none}.page-navigation{display:flex;justify-content:space-between}.nav-page{padding-bottom:.75em}.nav-page .bi{font-size:1.8rem;vertical-align:middle}.nav-page .nav-page-text{padding-left:.25em;padding-right:.25em}.nav-page a{color:#6c757d;text-decoration:none;display:flex;align-items:center}.nav-page a:hover{color:#009670}.toc-actions{display:flex}.toc-actions p{margin-block-start:0;margin-block-end:0}.toc-actions a{text-decoration:none;color:inherit;font-weight:400}.toc-actions a:hover{color:#009670}.toc-actions .action-links{margin-left:4px}.sidebar nav[role=doc-toc] .toc-actions .bi{margin-left:-4px;font-size:.7rem;color:#6c757d}.sidebar nav[role=doc-toc] .toc-actions .bi:before{padding-top:3px}#quarto-margin-sidebar .toc-actions .bi:before{margin-top:.3rem;font-size:.7rem;color:#6c757d;vertical-align:top}.sidebar nav[role=doc-toc] .toc-actions>div:first-of-type{margin-top:-3px}#quarto-margin-sidebar .toc-actions p,.sidebar nav[role=doc-toc] .toc-actions p{font-size:.875rem}.nav-footer .toc-actions{padding-bottom:.5em;padding-top:.5em}.nav-footer .toc-actions :first-child{margin-left:auto}.nav-footer .toc-actions :last-child{margin-right:auto}.nav-footer .toc-actions .action-links{display:flex}.nav-footer .toc-actions .action-links p{padding-right:1.5em}.nav-footer .toc-actions .action-links p:last-of-type{padding-right:0}.nav-footer{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between;align-items:baseline;text-align:center;padding-top:.5rem;padding-bottom:.5rem;background-color:#222}body.nav-fixed{padding-top:82px}body .nav-footer{border-top:1px solid #434343}.nav-footer-contents{color:#6c757d;margin-top:.25rem}.nav-footer{min-height:3.5em;color:#8a8a8a}.nav-footer a{color:#8a8a8a}.nav-footer .nav-footer-left{font-size:.825em}.nav-footer .nav-footer-center{font-size:.825em}.nav-footer .nav-footer-right{font-size:.825em}.nav-footer-left .footer-items,.nav-footer-center .footer-items,.nav-footer-right .footer-items{display:inline-flex;padding-top:.3em;padding-bottom:.3em;margin-bottom:0em}.nav-footer-left .footer-items .nav-link,.nav-footer-center .footer-items .nav-link,.nav-footer-right .footer-items .nav-link{padding-left:.6em;padding-right:.6em}.nav-footer-left{flex:1 1 0px;text-align:left}.nav-footer-right{flex:1 1 0px;text-align:right}.nav-footer-center{flex:1 1 0px;min-height:3em;text-align:center}.nav-footer-center .footer-items{justify-content:center}@media(max-width: 767.98px){.nav-footer-center{margin-top:3em}}.navbar .quarto-reader-toggle.reader .quarto-reader-toggle-btn{background-color:#dee2e6;border-radius:3px}.quarto-reader-toggle.reader.quarto-navigation-tool .quarto-reader-toggle-btn{background-color:#fefefe;border-radius:3px}.quarto-reader-toggle .quarto-reader-toggle-btn{display:inline-flex;padding-left:.2em;padding-right:.2em;margin-left:-0.2em;margin-right:-0.2em;text-align:center}.navbar .quarto-reader-toggle:not(.reader) .bi::before{background-image:url('data:image/svg+xml,')}.navbar .quarto-reader-toggle.reader .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-reader-toggle:not(.reader) .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-reader-toggle.reader .bi::before{background-image:url('data:image/svg+xml,')}#quarto-back-to-top{display:none;position:fixed;bottom:50px;background-color:#222;border-radius:.25rem;box-shadow:0 .2rem .5rem #6c757d,0 0 .05rem #6c757d;color:#6c757d;text-decoration:none;font-size:.9em;text-align:center;left:50%;padding:.4rem .8rem;transform:translate(-50%, 0)}.aa-DetachedOverlay ul.aa-List,#quarto-search-results ul.aa-List{list-style:none;padding-left:0}.aa-DetachedOverlay .aa-Panel,#quarto-search-results .aa-Panel{background-color:#222;position:absolute;z-index:2000}#quarto-search-results .aa-Panel{max-width:400px}#quarto-search input{font-size:.925rem}@media(min-width: 992px){.navbar #quarto-search{margin-left:.25rem;order:999}}@media(max-width: 991.98px){#quarto-sidebar .sidebar-search{display:none}}#quarto-sidebar .sidebar-search .aa-Autocomplete{width:100%}.navbar .aa-Autocomplete .aa-Form{width:180px}.navbar #quarto-search.type-overlay .aa-Autocomplete{width:40px}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form{background-color:inherit;border:none}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form:focus-within{box-shadow:none;outline:none}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form .aa-InputWrapper{display:none}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form .aa-InputWrapper:focus-within{display:inherit}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form .aa-Label svg,.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form .aa-LoadingIndicator svg{width:26px;height:26px;color:#dee2e6;opacity:1}.navbar #quarto-search.type-overlay .aa-Autocomplete svg.aa-SubmitIcon{width:26px;height:26px;color:#dee2e6;opacity:1}.aa-Autocomplete .aa-Form,.aa-DetachedFormContainer .aa-Form{align-items:center;background-color:#fff;border:1px solid #adb5bd;border-radius:.25rem;color:#2d2d2d;display:flex;line-height:1em;margin:0;position:relative;width:100%}.aa-Autocomplete .aa-Form:focus-within,.aa-DetachedFormContainer .aa-Form:focus-within{box-shadow:rgba(55,90,127,.6) 0 0 0 1px;outline:currentColor none medium}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix{align-items:center;display:flex;flex-shrink:0;order:1}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-Label,.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-Label,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator{cursor:initial;flex-shrink:0;padding:0;text-align:left}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-Label svg,.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator svg,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-Label svg,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator svg{color:#2d2d2d;opacity:.5}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-SubmitButton,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-SubmitButton{appearance:none;background:none;border:0;margin:0}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator{align-items:center;display:flex;justify-content:center}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator[hidden],.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator[hidden]{display:none}.aa-Autocomplete .aa-Form .aa-InputWrapper,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper{order:3;position:relative;width:100%}.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input{appearance:none;background:none;border:0;color:#2d2d2d;font:inherit;height:calc(1.5em + .1rem + 2px);padding:0;width:100%}.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::placeholder,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::placeholder{color:#2d2d2d;opacity:.8}.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input:focus,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input:focus{border-color:none;box-shadow:none;outline:none}.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-decoration,.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-cancel-button,.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-results-button,.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-results-decoration,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-decoration,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-cancel-button,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-results-button,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-results-decoration{display:none}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix{align-items:center;display:flex;order:4}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton{align-items:center;background:none;border:0;color:#2d2d2d;opacity:.8;cursor:pointer;display:flex;margin:0;width:calc(1.5em + .1rem + 2px)}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton:hover,.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton:focus,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton:hover,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton:focus{color:#2d2d2d;opacity:.8}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton[hidden],.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton[hidden]{display:none}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton svg,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton svg{width:calc(1.5em + 0.75rem + 2px)}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-CopyButton,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-CopyButton{border:none;align-items:center;background:none;color:#2d2d2d;opacity:.4;font-size:.7rem;cursor:pointer;display:none;margin:0;width:calc(1em + .1rem + 2px)}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-CopyButton:hover,.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-CopyButton:focus,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-CopyButton:hover,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-CopyButton:focus{color:#2d2d2d;opacity:.8}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-CopyButton[hidden],.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-CopyButton[hidden]{display:none}.aa-PanelLayout:empty{display:none}.quarto-search-no-results.no-query{display:none}.aa-Source:has(.no-query){display:none}#quarto-search-results .aa-Panel{border:solid #adb5bd 1px}#quarto-search-results .aa-SourceNoResults{width:398px}.aa-DetachedOverlay .aa-Panel,#quarto-search-results .aa-Panel{max-height:65vh;overflow-y:auto;font-size:.925rem}.aa-DetachedOverlay .aa-SourceNoResults,#quarto-search-results .aa-SourceNoResults{height:60px;display:flex;justify-content:center;align-items:center}.aa-DetachedOverlay .search-error,#quarto-search-results .search-error{padding-top:10px;padding-left:20px;padding-right:20px;cursor:default}.aa-DetachedOverlay .search-error .search-error-title,#quarto-search-results .search-error .search-error-title{font-size:1.1rem;margin-bottom:.5rem}.aa-DetachedOverlay .search-error .search-error-title .search-error-icon,#quarto-search-results .search-error .search-error-title .search-error-icon{margin-right:8px}.aa-DetachedOverlay .search-error .search-error-text,#quarto-search-results .search-error .search-error-text{font-weight:300}.aa-DetachedOverlay .search-result-text,#quarto-search-results .search-result-text{font-weight:300;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.2rem;max-height:2.4rem}.aa-DetachedOverlay .aa-SourceHeader .search-result-header,#quarto-search-results .aa-SourceHeader .search-result-header{font-size:.875rem;background-color:#2f2f2f;padding-left:14px;padding-bottom:4px;padding-top:4px}.aa-DetachedOverlay .aa-SourceHeader .search-result-header-no-results,#quarto-search-results .aa-SourceHeader .search-result-header-no-results{display:none}.aa-DetachedOverlay .aa-SourceFooter .algolia-search-logo,#quarto-search-results .aa-SourceFooter .algolia-search-logo{width:110px;opacity:.85;margin:8px;float:right}.aa-DetachedOverlay .search-result-section,#quarto-search-results .search-result-section{font-size:.925em}.aa-DetachedOverlay a.search-result-link,#quarto-search-results a.search-result-link{color:inherit;text-decoration:none}.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item,#quarto-search-results li.aa-Item[aria-selected=true] .search-item{background-color:#375a7f}.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item.search-result-more,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-result-section,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-result-text,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-result-title-container,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-result-text-container,#quarto-search-results li.aa-Item[aria-selected=true] .search-item.search-result-more,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-result-section,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-result-text,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-result-title-container,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-result-text-container{color:#fff;background-color:#375a7f}.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item mark.search-match,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-match.mark,#quarto-search-results li.aa-Item[aria-selected=true] .search-item mark.search-match,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-match.mark{color:#fff;background-color:#2b4663}.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item,#quarto-search-results li.aa-Item[aria-selected=false] .search-item{background-color:#2d2d2d}.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item.search-result-more,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-result-section,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-result-text,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-result-title-container,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-result-text-container,#quarto-search-results li.aa-Item[aria-selected=false] .search-item.search-result-more,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-result-section,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-result-text,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-result-title-container,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-result-text-container{color:#fff}.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item mark.search-match,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-match.mark,#quarto-search-results li.aa-Item[aria-selected=false] .search-item mark.search-match,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-match.mark{color:inherit;background-color:#000}.aa-DetachedOverlay .aa-Item .search-result-doc:not(.document-selectable) .search-result-title-container,#quarto-search-results .aa-Item .search-result-doc:not(.document-selectable) .search-result-title-container{background-color:#2d2d2d;color:#fff}.aa-DetachedOverlay .aa-Item .search-result-doc:not(.document-selectable) .search-result-text-container,#quarto-search-results .aa-Item .search-result-doc:not(.document-selectable) .search-result-text-container{padding-top:0px}.aa-DetachedOverlay li.aa-Item .search-result-doc.document-selectable .search-result-text-container,#quarto-search-results li.aa-Item .search-result-doc.document-selectable .search-result-text-container{margin-top:-4px}.aa-DetachedOverlay .aa-Item,#quarto-search-results .aa-Item{cursor:pointer}.aa-DetachedOverlay .aa-Item .search-item,#quarto-search-results .aa-Item .search-item{border-left:none;border-right:none;border-top:none;background-color:#2d2d2d;border-color:#adb5bd;color:#fff}.aa-DetachedOverlay .aa-Item .search-item p,#quarto-search-results .aa-Item .search-item p{margin-top:0;margin-bottom:0}.aa-DetachedOverlay .aa-Item .search-item i.bi,#quarto-search-results .aa-Item .search-item i.bi{padding-left:8px;padding-right:8px;font-size:1.3em}.aa-DetachedOverlay .aa-Item .search-item .search-result-title,#quarto-search-results .aa-Item .search-item .search-result-title{margin-top:.3em;margin-bottom:.1rem}.aa-DetachedOverlay .aa-Item .search-result-title-container,#quarto-search-results .aa-Item .search-result-title-container{font-size:1em;display:flex;padding:6px 4px 6px 4px}.aa-DetachedOverlay .aa-Item .search-result-text-container,#quarto-search-results .aa-Item .search-result-text-container{padding-bottom:8px;padding-right:8px;margin-left:44px}.aa-DetachedOverlay .aa-Item .search-result-doc-section,.aa-DetachedOverlay .aa-Item .search-result-more,#quarto-search-results .aa-Item .search-result-doc-section,#quarto-search-results .aa-Item .search-result-more{padding-top:8px;padding-bottom:8px;padding-left:44px}.aa-DetachedOverlay .aa-Item .search-result-more,#quarto-search-results .aa-Item .search-result-more{font-size:.8em;font-weight:400}.aa-DetachedOverlay .aa-Item .search-result-doc,#quarto-search-results .aa-Item .search-result-doc{border-top:1px solid #adb5bd}.aa-DetachedSearchButton{background:none;border:none}.aa-DetachedSearchButton .aa-DetachedSearchButtonPlaceholder{display:none}.navbar .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon{color:#dee2e6}.sidebar-tools-collapse #quarto-search,.sidebar-tools-main #quarto-search{display:inline}.sidebar-tools-collapse #quarto-search .aa-Autocomplete,.sidebar-tools-main #quarto-search .aa-Autocomplete{display:inline}.sidebar-tools-collapse #quarto-search .aa-DetachedSearchButton,.sidebar-tools-main #quarto-search .aa-DetachedSearchButton{padding-left:4px;padding-right:4px}.sidebar-tools-collapse #quarto-search .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon,.sidebar-tools-main #quarto-search .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon{color:#fefefe}.sidebar-tools-collapse #quarto-search .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon .aa-SubmitIcon,.sidebar-tools-main #quarto-search .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon .aa-SubmitIcon{margin-top:-3px}.aa-DetachedContainer{background:rgba(34,34,34,.65);width:90%;bottom:0;box-shadow:rgba(173,181,189,.6) 0 0 0 1px;outline:currentColor none medium;display:flex;flex-direction:column;left:0;margin:0;overflow:hidden;padding:0;position:fixed;right:0;top:0;z-index:1101}.aa-DetachedContainer::after{height:32px}.aa-DetachedContainer .aa-SourceHeader{margin:var(--aa-spacing-half) 0 var(--aa-spacing-half) 2px}.aa-DetachedContainer .aa-Panel{background-color:#222;border-radius:0;box-shadow:none;flex-grow:1;margin:0;padding:0;position:relative}.aa-DetachedContainer .aa-PanelLayout{bottom:0;box-shadow:none;left:0;margin:0;max-height:none;overflow-y:auto;position:absolute;right:0;top:0;width:100%}.aa-DetachedFormContainer{background-color:#222;border-bottom:1px solid #adb5bd;display:flex;flex-direction:row;justify-content:space-between;margin:0;padding:.5em}.aa-DetachedCancelButton{background:none;font-size:.8em;border:0;border-radius:3px;color:#fff;cursor:pointer;margin:0 0 0 .5em;padding:0 .5em}.aa-DetachedCancelButton:hover,.aa-DetachedCancelButton:focus{box-shadow:rgba(55,90,127,.6) 0 0 0 1px;outline:currentColor none medium}.aa-DetachedContainer--modal{bottom:inherit;height:auto;margin:0 auto;position:absolute;top:100px;border-radius:6px;max-width:850px}@media(max-width: 575.98px){.aa-DetachedContainer--modal{width:100%;top:0px;border-radius:0px;border:none}}.aa-DetachedContainer--modal .aa-PanelLayout{max-height:var(--aa-detached-modal-max-height);padding-bottom:var(--aa-spacing-half);position:static}.aa-Detached{height:100vh;overflow:hidden}.aa-DetachedOverlay{background-color:rgba(255,255,255,.4);position:fixed;left:0;right:0;top:0;margin:0;padding:0;height:100vh;z-index:1100}.quarto-listing{padding-bottom:1em}.listing-pagination{padding-top:.5em}ul.pagination{float:right;padding-left:8px;padding-top:.5em}ul.pagination li{padding-right:.75em}ul.pagination li.disabled a,ul.pagination li.active a{color:#fff;text-decoration:none}ul.pagination li:last-of-type{padding-right:0}.listing-actions-group{display:flex}.listing-actions-group .form-select,.listing-actions-group .form-control{background-color:#222;color:#fff}.quarto-listing-filter{margin-bottom:1em;width:200px;margin-left:auto}.quarto-listing-sort{margin-bottom:1em;margin-right:auto;width:auto}.quarto-listing-sort .input-group-text{font-size:.8em}.input-group-text{border-right:none}.quarto-listing-sort select.form-select{font-size:.8em}.listing-no-matching{text-align:center;padding-top:2em;padding-bottom:3em;font-size:1em}#quarto-margin-sidebar .quarto-listing-category{padding-top:0;font-size:1rem}#quarto-margin-sidebar .quarto-listing-category-title{cursor:pointer;font-weight:600;font-size:1rem}.quarto-listing-category .category{cursor:pointer}.quarto-listing-category .category.active{font-weight:600}.quarto-listing-category.category-cloud{display:flex;flex-wrap:wrap;align-items:baseline}.quarto-listing-category.category-cloud .category{padding-right:5px}.quarto-listing-category.category-cloud .category-cloud-1{font-size:.75em}.quarto-listing-category.category-cloud .category-cloud-2{font-size:.95em}.quarto-listing-category.category-cloud .category-cloud-3{font-size:1.15em}.quarto-listing-category.category-cloud .category-cloud-4{font-size:1.35em}.quarto-listing-category.category-cloud .category-cloud-5{font-size:1.55em}.quarto-listing-category.category-cloud .category-cloud-6{font-size:1.75em}.quarto-listing-category.category-cloud .category-cloud-7{font-size:1.95em}.quarto-listing-category.category-cloud .category-cloud-8{font-size:2.15em}.quarto-listing-category.category-cloud .category-cloud-9{font-size:2.35em}.quarto-listing-category.category-cloud .category-cloud-10{font-size:2.55em}.quarto-listing-cols-1{grid-template-columns:repeat(1, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-1{grid-template-columns:repeat(1, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-1{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-2{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-2{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-2{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-3{grid-template-columns:repeat(3, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-3{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-3{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-4{grid-template-columns:repeat(4, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-4{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-4{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-5{grid-template-columns:repeat(5, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-5{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-5{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-6{grid-template-columns:repeat(6, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-6{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-6{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-7{grid-template-columns:repeat(7, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-7{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-7{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-8{grid-template-columns:repeat(8, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-8{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-8{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-9{grid-template-columns:repeat(9, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-9{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-9{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-10{grid-template-columns:repeat(10, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-10{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-10{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-11{grid-template-columns:repeat(11, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-11{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-11{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-12{grid-template-columns:repeat(12, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-12{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-12{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-grid{gap:1.5em}.quarto-grid-item.borderless{border:none}.quarto-grid-item.borderless .listing-categories .listing-category:last-of-type,.quarto-grid-item.borderless .listing-categories .listing-category:first-of-type{padding-left:0}.quarto-grid-item.borderless .listing-categories .listing-category{border:0}.quarto-grid-link{text-decoration:none;color:inherit}.quarto-grid-link:hover{text-decoration:none;color:inherit}.quarto-grid-item h5.title,.quarto-grid-item .title.h5{margin-top:0;margin-bottom:0}.quarto-grid-item .card-footer{display:flex;justify-content:space-between;font-size:.8em}.quarto-grid-item .card-footer p{margin-bottom:0}.quarto-grid-item p.card-img-top{margin-bottom:0}.quarto-grid-item p.card-img-top>img{object-fit:cover}.quarto-grid-item .card-other-values{margin-top:.5em;font-size:.8em}.quarto-grid-item .card-other-values tr{margin-bottom:.5em}.quarto-grid-item .card-other-values tr>td:first-of-type{font-weight:600;padding-right:1em;padding-left:1em;vertical-align:top}.quarto-grid-item div.post-contents{display:flex;flex-direction:column;text-decoration:none;height:100%}.quarto-grid-item .listing-item-img-placeholder{background-color:#adb5bd;flex-shrink:0}.quarto-grid-item .card-attribution{padding-top:1em;display:flex;gap:1em;text-transform:uppercase;color:#6c757d;font-weight:500;flex-grow:10;align-items:flex-end}.quarto-grid-item .description{padding-bottom:1em}.quarto-grid-item .card-attribution .date{align-self:flex-end}.quarto-grid-item .card-attribution.justify{justify-content:space-between}.quarto-grid-item .card-attribution.start{justify-content:flex-start}.quarto-grid-item .card-attribution.end{justify-content:flex-end}.quarto-grid-item .card-title{margin-bottom:.1em}.quarto-grid-item .card-subtitle{padding-top:.25em}.quarto-grid-item .card-text{font-size:.9em}.quarto-grid-item .listing-reading-time{padding-bottom:.25em}.quarto-grid-item .card-text-small{font-size:.8em}.quarto-grid-item .card-subtitle.subtitle{font-size:.9em;font-weight:600;padding-bottom:.5em}.quarto-grid-item .listing-categories{display:flex;flex-wrap:wrap;padding-bottom:5px}.quarto-grid-item .listing-categories .listing-category{color:#6c757d;border:solid #6c757d 1px;border-radius:.25rem;text-transform:uppercase;font-size:.65em;padding-left:.5em;padding-right:.5em;padding-top:.15em;padding-bottom:.15em;cursor:pointer;margin-right:4px;margin-bottom:4px}.quarto-grid-item.card-right{text-align:right}.quarto-grid-item.card-right .listing-categories{justify-content:flex-end}.quarto-grid-item.card-left{text-align:left}.quarto-grid-item.card-center{text-align:center}.quarto-grid-item.card-center .listing-description{text-align:justify}.quarto-grid-item.card-center .listing-categories{justify-content:center}table.quarto-listing-table td.image{padding:0px}table.quarto-listing-table td.image img{width:100%;max-width:50px;object-fit:contain}table.quarto-listing-table a{text-decoration:none}table.quarto-listing-table th a{color:inherit}table.quarto-listing-table th a.asc:after{margin-bottom:-2px;margin-left:5px;display:inline-block;height:1rem;width:1rem;background-repeat:no-repeat;background-size:1rem 1rem;background-image:url('data:image/svg+xml,');content:""}table.quarto-listing-table th a.desc:after{margin-bottom:-2px;margin-left:5px;display:inline-block;height:1rem;width:1rem;background-repeat:no-repeat;background-size:1rem 1rem;background-image:url('data:image/svg+xml,');content:""}table.quarto-listing-table.table-hover td{cursor:pointer}.quarto-post.image-left{flex-direction:row}.quarto-post.image-right{flex-direction:row-reverse}@media(max-width: 767.98px){.quarto-post.image-right,.quarto-post.image-left{gap:0em;flex-direction:column}.quarto-post .metadata{padding-bottom:1em;order:2}.quarto-post .body{order:1}.quarto-post .thumbnail{order:3}}.list.quarto-listing-default div:last-of-type{border-bottom:none}@media(min-width: 992px){.quarto-listing-container-default{margin-right:2em}}div.quarto-post{display:flex;gap:2em;margin-bottom:1.5em;border-bottom:1px solid #dee2e6}@media(max-width: 767.98px){div.quarto-post{padding-bottom:1em}}div.quarto-post .metadata{flex-basis:20%;flex-grow:0;margin-top:.2em;flex-shrink:10}div.quarto-post .thumbnail{flex-basis:30%;flex-grow:0;flex-shrink:0}div.quarto-post .thumbnail img{margin-top:.4em;width:100%;object-fit:cover}div.quarto-post .body{flex-basis:45%;flex-grow:1;flex-shrink:0}div.quarto-post .body h3.listing-title,div.quarto-post .body .listing-title.h3{margin-top:0px;margin-bottom:0px;border-bottom:none}div.quarto-post .body .listing-subtitle{font-size:.875em;margin-bottom:.5em;margin-top:.2em}div.quarto-post .body .description{font-size:.9em}div.quarto-post a{color:#fff;display:flex;flex-direction:column;text-decoration:none}div.quarto-post a div.description{flex-shrink:0}div.quarto-post .metadata{display:flex;flex-direction:column;font-size:.8em;font-family:var(--bs-font-sans-serif);flex-basis:33%}div.quarto-post .listing-categories{display:flex;flex-wrap:wrap;padding-bottom:5px}div.quarto-post .listing-categories .listing-category{color:#6c757d;border:solid #6c757d 1px;border-radius:.25rem;text-transform:uppercase;font-size:.65em;padding-left:.5em;padding-right:.5em;padding-top:.15em;padding-bottom:.15em;cursor:pointer;margin-right:4px;margin-bottom:4px}div.quarto-post .listing-description{margin-bottom:.5em}div.quarto-about-jolla{display:flex !important;flex-direction:column;align-items:center;margin-top:10%;padding-bottom:1em}div.quarto-about-jolla .about-image{object-fit:cover;margin-left:auto;margin-right:auto;margin-bottom:1.5em}div.quarto-about-jolla img.round{border-radius:50%}div.quarto-about-jolla img.rounded{border-radius:10px}div.quarto-about-jolla .quarto-title h1.title,div.quarto-about-jolla .quarto-title .title.h1{text-align:center}div.quarto-about-jolla .quarto-title .description{text-align:center}div.quarto-about-jolla h2,div.quarto-about-jolla .h2{border-bottom:none}div.quarto-about-jolla .about-sep{width:60%}div.quarto-about-jolla main{text-align:center}div.quarto-about-jolla .about-links{display:flex}@media(min-width: 992px){div.quarto-about-jolla .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-jolla .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-jolla .about-link{color:#fff;text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-jolla .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-jolla .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-jolla .about-link:hover{color:#00bc8c}div.quarto-about-jolla .about-link i.bi{margin-right:.15em}div.quarto-about-solana{display:flex !important;flex-direction:column;padding-top:3em !important;padding-bottom:1em}div.quarto-about-solana .about-entity{display:flex !important;align-items:start;justify-content:space-between}@media(min-width: 992px){div.quarto-about-solana .about-entity{flex-direction:row}}@media(max-width: 991.98px){div.quarto-about-solana .about-entity{flex-direction:column-reverse;align-items:center;text-align:center}}div.quarto-about-solana .about-entity .entity-contents{display:flex;flex-direction:column}@media(max-width: 767.98px){div.quarto-about-solana .about-entity .entity-contents{width:100%}}div.quarto-about-solana .about-entity .about-image{object-fit:cover}@media(max-width: 991.98px){div.quarto-about-solana .about-entity .about-image{margin-bottom:1.5em}}div.quarto-about-solana .about-entity img.round{border-radius:50%}div.quarto-about-solana .about-entity img.rounded{border-radius:10px}div.quarto-about-solana .about-entity .about-links{display:flex;justify-content:left;padding-bottom:1.2em}@media(min-width: 992px){div.quarto-about-solana .about-entity .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-solana .about-entity .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-solana .about-entity .about-link{color:#fff;text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-solana .about-entity .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-solana .about-entity .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-solana .about-entity .about-link:hover{color:#00bc8c}div.quarto-about-solana .about-entity .about-link i.bi{margin-right:.15em}div.quarto-about-solana .about-contents{padding-right:1.5em;flex-basis:0;flex-grow:1}div.quarto-about-solana .about-contents main.content{margin-top:0}div.quarto-about-solana .about-contents h2,div.quarto-about-solana .about-contents .h2{border-bottom:none}div.quarto-about-trestles{display:flex !important;flex-direction:row;padding-top:3em !important;padding-bottom:1em}@media(max-width: 991.98px){div.quarto-about-trestles{flex-direction:column;padding-top:0em !important}}div.quarto-about-trestles .about-entity{display:flex !important;flex-direction:column;align-items:center;text-align:center;padding-right:1em}@media(min-width: 992px){div.quarto-about-trestles .about-entity{flex:0 0 42%}}div.quarto-about-trestles .about-entity .about-image{object-fit:cover;margin-bottom:1.5em}div.quarto-about-trestles .about-entity img.round{border-radius:50%}div.quarto-about-trestles .about-entity img.rounded{border-radius:10px}div.quarto-about-trestles .about-entity .about-links{display:flex;justify-content:center}@media(min-width: 992px){div.quarto-about-trestles .about-entity .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-trestles .about-entity .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-trestles .about-entity .about-link{color:#fff;text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-trestles .about-entity .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-trestles .about-entity .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-trestles .about-entity .about-link:hover{color:#00bc8c}div.quarto-about-trestles .about-entity .about-link i.bi{margin-right:.15em}div.quarto-about-trestles .about-contents{flex-basis:0;flex-grow:1}div.quarto-about-trestles .about-contents h2,div.quarto-about-trestles .about-contents .h2{border-bottom:none}@media(min-width: 992px){div.quarto-about-trestles .about-contents{border-left:solid 1px #dee2e6;padding-left:1.5em}}div.quarto-about-trestles .about-contents main.content{margin-top:0}div.quarto-about-marquee{padding-bottom:1em}div.quarto-about-marquee .about-contents{display:flex;flex-direction:column}div.quarto-about-marquee .about-image{max-height:550px;margin-bottom:1.5em;object-fit:cover}div.quarto-about-marquee img.round{border-radius:50%}div.quarto-about-marquee img.rounded{border-radius:10px}div.quarto-about-marquee h2,div.quarto-about-marquee .h2{border-bottom:none}div.quarto-about-marquee .about-links{display:flex;justify-content:center;padding-top:1.5em}@media(min-width: 992px){div.quarto-about-marquee .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-marquee .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-marquee .about-link{color:#fff;text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-marquee .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-marquee .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-marquee .about-link:hover{color:#00bc8c}div.quarto-about-marquee .about-link i.bi{margin-right:.15em}@media(min-width: 992px){div.quarto-about-marquee .about-link{border:none}}div.quarto-about-broadside{display:flex;flex-direction:column;padding-bottom:1em}div.quarto-about-broadside .about-main{display:flex !important;padding-top:0 !important}@media(min-width: 992px){div.quarto-about-broadside .about-main{flex-direction:row;align-items:flex-start}}@media(max-width: 991.98px){div.quarto-about-broadside .about-main{flex-direction:column}}@media(max-width: 991.98px){div.quarto-about-broadside .about-main .about-entity{flex-shrink:0;width:100%;height:450px;margin-bottom:1.5em;background-size:cover;background-repeat:no-repeat}}@media(min-width: 992px){div.quarto-about-broadside .about-main .about-entity{flex:0 10 50%;margin-right:1.5em;width:100%;height:100%;background-size:100%;background-repeat:no-repeat}}div.quarto-about-broadside .about-main .about-contents{padding-top:14px;flex:0 0 50%}div.quarto-about-broadside h2,div.quarto-about-broadside .h2{border-bottom:none}div.quarto-about-broadside .about-sep{margin-top:1.5em;width:60%;align-self:center}div.quarto-about-broadside .about-links{display:flex;justify-content:center;column-gap:20px;padding-top:1.5em}@media(min-width: 992px){div.quarto-about-broadside .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-broadside .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-broadside .about-link{color:#fff;text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-broadside .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-broadside .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-broadside .about-link:hover{color:#00bc8c}div.quarto-about-broadside .about-link i.bi{margin-right:.15em}@media(min-width: 992px){div.quarto-about-broadside .about-link{border:none}}.tippy-box[data-theme~=quarto]{background-color:#222;border:solid 1px #dee2e6;border-radius:.25rem;color:#fff;font-size:.875rem}.tippy-box[data-theme~=quarto]>.tippy-backdrop{background-color:#222}.tippy-box[data-theme~=quarto]>.tippy-arrow:after,.tippy-box[data-theme~=quarto]>.tippy-svg-arrow:after{content:"";position:absolute;z-index:-1}.tippy-box[data-theme~=quarto]>.tippy-arrow:after{border-color:rgba(0,0,0,0);border-style:solid}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-6px}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-6px}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-6px}.tippy-box[data-placement^=left]>.tippy-arrow:before{right:-6px}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-arrow:before{border-top-color:#222}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-arrow:after{border-top-color:#dee2e6;border-width:7px 7px 0;top:17px;left:1px}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-svg-arrow>svg{top:16px}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-svg-arrow:after{top:17px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-arrow:before{border-bottom-color:#222;bottom:16px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-arrow:after{border-bottom-color:#dee2e6;border-width:0 7px 7px;bottom:17px;left:1px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-svg-arrow>svg{bottom:15px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-svg-arrow:after{bottom:17px}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-arrow:before{border-left-color:#222}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-arrow:after{border-left-color:#dee2e6;border-width:7px 0 7px 7px;left:17px;top:1px}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-svg-arrow>svg{left:11px}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-svg-arrow:after{left:12px}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-arrow:before{border-right-color:#222;right:16px}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-arrow:after{border-width:7px 7px 7px 0;right:17px;top:1px;border-right-color:#dee2e6}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-svg-arrow>svg{right:11px}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-svg-arrow:after{right:12px}.tippy-box[data-theme~=quarto]>.tippy-svg-arrow{fill:#fff}.tippy-box[data-theme~=quarto]>.tippy-svg-arrow:after{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMCA2czEuNzk2LS4wMTMgNC42Ny0zLjYxNUM1Ljg1MS45IDYuOTMuMDA2IDggMGMxLjA3LS4wMDYgMi4xNDguODg3IDMuMzQzIDIuMzg1QzE0LjIzMyA2LjAwNSAxNiA2IDE2IDZIMHoiIGZpbGw9InJnYmEoMCwgOCwgMTYsIDAuMikiLz48L3N2Zz4=);background-size:16px 6px;width:16px;height:6px}.top-right{position:absolute;top:1em;right:1em}.hidden{display:none !important}.zindex-bottom{z-index:-1 !important}.quarto-layout-panel{margin-bottom:1em}.quarto-layout-panel>figure{width:100%}.quarto-layout-panel>figure>figcaption,.quarto-layout-panel>.panel-caption{margin-top:10pt}.quarto-layout-panel>.table-caption{margin-top:0px}.table-caption p{margin-bottom:.5em}.quarto-layout-row{display:flex;flex-direction:row;align-items:flex-start}.quarto-layout-valign-top{align-items:flex-start}.quarto-layout-valign-bottom{align-items:flex-end}.quarto-layout-valign-center{align-items:center}.quarto-layout-cell{position:relative;margin-right:20px}.quarto-layout-cell:last-child{margin-right:0}.quarto-layout-cell figure,.quarto-layout-cell>p{margin:.2em}.quarto-layout-cell img{max-width:100%}.quarto-layout-cell .html-widget{width:100% !important}.quarto-layout-cell div figure p{margin:0}.quarto-layout-cell figure{display:inline-block;margin-inline-start:0;margin-inline-end:0}.quarto-layout-cell table{display:inline-table}.quarto-layout-cell-subref figcaption,figure .quarto-layout-row figure figcaption{text-align:center;font-style:italic}.quarto-figure{position:relative;margin-bottom:1em}.quarto-figure>figure{width:100%;margin-bottom:0}.quarto-figure-left>figure>p,.quarto-figure-left>figure>div{text-align:left}.quarto-figure-center>figure>p,.quarto-figure-center>figure>div{text-align:center}.quarto-figure-right>figure>p,.quarto-figure-right>figure>div{text-align:right}figure>p:empty{display:none}figure>p:first-child{margin-top:0;margin-bottom:0}figure>figcaption{margin-top:.5em}div[id^=tbl-]{position:relative}.quarto-figure>.anchorjs-link{position:absolute;top:.6em;right:.5em}div[id^=tbl-]>.anchorjs-link{position:absolute;top:.7em;right:.3em}.quarto-figure:hover>.anchorjs-link,div[id^=tbl-]:hover>.anchorjs-link,h2:hover>.anchorjs-link,.h2:hover>.anchorjs-link,h3:hover>.anchorjs-link,.h3:hover>.anchorjs-link,h4:hover>.anchorjs-link,.h4:hover>.anchorjs-link,h5:hover>.anchorjs-link,.h5:hover>.anchorjs-link,h6:hover>.anchorjs-link,.h6:hover>.anchorjs-link,.reveal-anchorjs-link>.anchorjs-link{opacity:1}#title-block-header{margin-block-end:1rem;position:relative;margin-top:-1px}#title-block-header .abstract{margin-block-start:1rem}#title-block-header .abstract .abstract-title{font-weight:600}#title-block-header a{text-decoration:none}#title-block-header .author,#title-block-header .date,#title-block-header .doi{margin-block-end:.2rem}#title-block-header .quarto-title-block>div{display:flex}#title-block-header .quarto-title-block>div>h1,#title-block-header .quarto-title-block>div>.h1{flex-grow:1}#title-block-header .quarto-title-block>div>button{flex-shrink:0;height:2.25rem;margin-top:0}@media(min-width: 992px){#title-block-header .quarto-title-block>div>button{margin-top:5px}}tr.header>th>p:last-of-type{margin-bottom:0px}table,.table{caption-side:top;margin-bottom:1.5rem}caption,.table-caption{padding-top:.5rem;padding-bottom:.5rem;text-align:center}.utterances{max-width:none;margin-left:-8px}iframe{margin-bottom:1em}details{margin-bottom:1em}details[show]{margin-bottom:0}details>summary{color:#6c757d}details>summary>p:only-child{display:inline}pre.sourceCode,code.sourceCode{position:relative}p code:not(.sourceCode){white-space:pre-wrap}code{white-space:pre}@media print{code{white-space:pre-wrap}}pre>code{display:block}pre>code.sourceCode{white-space:pre-wrap}pre>code.sourceCode>span>a:first-child::before{text-decoration:none}pre.code-overflow-wrap>code.sourceCode{white-space:pre-wrap}pre.code-overflow-scroll>code.sourceCode{white-space:pre}code a:any-link{color:inherit;text-decoration:none}code a:hover{color:inherit;text-decoration:underline}ul.task-list{padding-left:1em}[data-tippy-root]{display:inline-block}.tippy-content .footnote-back{display:none}.quarto-embedded-source-code{display:none}.quarto-unresolved-ref{font-weight:600}.quarto-cover-image{max-width:35%;float:right;margin-left:30px}.cell-output-display .widget-subarea{margin-bottom:1em}.cell-output-display:not(.no-overflow-x),.knitsql-table:not(.no-overflow-x){overflow-x:auto}.panel-input{margin-bottom:1em}.panel-input>div,.panel-input>div>div{display:inline-block;vertical-align:top;padding-right:12px}.panel-input>p:last-child{margin-bottom:0}.layout-sidebar{margin-bottom:1em}.layout-sidebar .tab-content{border:none}.tab-content>.page-columns.active{display:grid}div.sourceCode>iframe{width:100%;height:300px;margin-bottom:-0.5em}div.ansi-escaped-output{font-family:monospace;display:block}/*! +* +* ansi colors from IPython notebook's +* +*/.ansi-black-fg{color:#3e424d}.ansi-black-bg{background-color:#3e424d}.ansi-black-intense-fg{color:#282c36}.ansi-black-intense-bg{background-color:#282c36}.ansi-red-fg{color:#e75c58}.ansi-red-bg{background-color:#e75c58}.ansi-red-intense-fg{color:#b22b31}.ansi-red-intense-bg{background-color:#b22b31}.ansi-green-fg{color:#00a250}.ansi-green-bg{background-color:#00a250}.ansi-green-intense-fg{color:#007427}.ansi-green-intense-bg{background-color:#007427}.ansi-yellow-fg{color:#ddb62b}.ansi-yellow-bg{background-color:#ddb62b}.ansi-yellow-intense-fg{color:#b27d12}.ansi-yellow-intense-bg{background-color:#b27d12}.ansi-blue-fg{color:#208ffb}.ansi-blue-bg{background-color:#208ffb}.ansi-blue-intense-fg{color:#0065ca}.ansi-blue-intense-bg{background-color:#0065ca}.ansi-magenta-fg{color:#d160c4}.ansi-magenta-bg{background-color:#d160c4}.ansi-magenta-intense-fg{color:#a03196}.ansi-magenta-intense-bg{background-color:#a03196}.ansi-cyan-fg{color:#60c6c8}.ansi-cyan-bg{background-color:#60c6c8}.ansi-cyan-intense-fg{color:#258f8f}.ansi-cyan-intense-bg{background-color:#258f8f}.ansi-white-fg{color:#c5c1b4}.ansi-white-bg{background-color:#c5c1b4}.ansi-white-intense-fg{color:#a1a6b2}.ansi-white-intense-bg{background-color:#a1a6b2}.ansi-default-inverse-fg{color:#fff}.ansi-default-inverse-bg{background-color:#000}.ansi-bold{font-weight:bold}.ansi-underline{text-decoration:underline}:root{--quarto-body-bg: #222;--quarto-body-color: #fff;--quarto-text-muted: #6c757d;--quarto-border-color: #434343;--quarto-border-width: 1px;--quarto-border-radius: 0.25rem}table.gt_table{color:var(--quarto-body-color);font-size:1em;width:100%;background-color:rgba(0,0,0,0);border-top-width:inherit;border-bottom-width:inherit;border-color:var(--quarto-border-color)}table.gt_table th.gt_column_spanner_outer{color:var(--quarto-body-color);background-color:rgba(0,0,0,0);border-top-width:inherit;border-bottom-width:inherit;border-color:var(--quarto-border-color)}table.gt_table th.gt_col_heading{color:var(--quarto-body-color);font-weight:bold;background-color:rgba(0,0,0,0)}table.gt_table thead.gt_col_headings{border-bottom:1px solid currentColor;border-top-width:inherit;border-top-color:var(--quarto-border-color)}table.gt_table thead.gt_col_headings:not(:first-child){border-top-width:1px;border-top-color:var(--quarto-border-color)}table.gt_table td.gt_row{border-bottom-width:1px;border-bottom-color:var(--quarto-border-color);border-top-width:0px}table.gt_table tbody.gt_table_body{border-top-width:1px;border-bottom-width:1px;border-bottom-color:var(--quarto-border-color);border-top-color:currentColor}div.columns{display:initial;gap:initial}div.column{display:inline-block;overflow-x:initial;vertical-align:top;width:50%}.code-annotation-tip-content{word-wrap:break-word}.code-annotation-container-hidden{display:none !important}dl.code-annotation-container-grid{display:grid;grid-template-columns:min-content auto}dl.code-annotation-container-grid dt{grid-column:1}dl.code-annotation-container-grid dd{grid-column:2}pre.sourceCode.code-annotation-code{padding-right:0}code.sourceCode .code-annotation-anchor{z-index:100;position:absolute;right:.5em;left:inherit;background-color:rgba(0,0,0,0)}:root{--mermaid-bg-color: #222;--mermaid-edge-color: #434343;--mermaid-node-fg-color: #fff;--mermaid-fg-color: #fff;--mermaid-fg-color--lighter: white;--mermaid-fg-color--lightest: white;--mermaid-font-family: Lato, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;--mermaid-label-bg-color: #222;--mermaid-label-fg-color: #375a7f;--mermaid-node-bg-color: rgba(55, 90, 127, 0.1);--mermaid-node-fg-color: #fff}@media print{:root{font-size:11pt}#quarto-sidebar,#TOC,.nav-page{display:none}.page-columns .content{grid-column-start:page-start}.fixed-top{position:relative}.panel-caption,.figure-caption,figcaption{color:#666}}.code-copy-button{position:absolute;top:0;right:0;border:0;margin-top:5px;margin-right:5px;background-color:rgba(0,0,0,0);z-index:3}.code-copy-button:focus{outline:none}.code-copy-button-tooltip{font-size:.75em}.code-copy-button>.bi::before{display:inline-block;height:1rem;width:1rem;content:"";vertical-align:-0.125em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-size:1rem 1rem}.code-copy-button-checked>.bi::before{background-image:url('data:image/svg+xml,')}.code-copy-button:hover>.bi::before{background-image:url('data:image/svg+xml,')}.code-copy-button-checked:hover>.bi::before{background-image:url('data:image/svg+xml,')}main ol ol,main ul ul,main ol ul,main ul ol{margin-bottom:1em}ul>li:not(:has(>p))>ul,ol>li:not(:has(>p))>ul,ul>li:not(:has(>p))>ol,ol>li:not(:has(>p))>ol{margin-bottom:0}ul>li:not(:has(>p))>ul>li:has(>p),ol>li:not(:has(>p))>ul>li:has(>p),ul>li:not(:has(>p))>ol>li:has(>p),ol>li:not(:has(>p))>ol>li:has(>p){margin-top:1rem}body{margin:0}main.page-columns>header>h1.title,main.page-columns>header>.title.h1{margin-bottom:0}@media(min-width: 992px){body .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset] 2.8vw [body-start-outset] 2.8vw [body-start] 1.5em [body-content-start] minmax(500px, calc( 950px - 3em )) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.fullcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset] 2.8vw [body-start-outset] 2.8vw [body-start] 1.5em [body-content-start] minmax(500px, calc( 950px - 3em )) [body-content-end] 1.5em [body-end] 35px [body-end-outset] 35px [page-end-inset page-end] 5fr [screen-end-inset] 1.5em}body.slimcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset] 2.8vw [body-start-outset] 2.8vw [body-start] 1.5em [body-content-start] minmax(500px, calc( 950px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 2.8vw [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.listing:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(4vw, 8vw) [page-start-inset] 4vw [body-start-outset] 4vw [body-start] 1.5em [body-content-start] minmax(500px, calc( 950px - 3em )) [body-content-end] 3em [body-end] 4vw [body-end-outset] minmax(0px, 250px) [page-end-inset] minmax(4vw, 8vw) [page-end] 1fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 2.8vw [page-start-inset] minmax(0vw, 14vw) [body-start-outset] 2.8vw [body-start] 1.5em [body-content-start] minmax(450px, calc( 900px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 2.8vw [page-start-inset] minmax(0vw, 14vw) [body-start-outset] 2.8vw [body-start] 1.5em [body-content-start] minmax(450px, calc( 900px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] minmax(2vw, 4vw) [page-start-inset] minmax(4vw, 12vw) [body-start-outset] minmax(2vw, 4vw) [body-start] 1.5em [body-content-start] minmax(500px, calc( 900px - 3em )) [body-content-end] 1.5em [body-end] minmax(25px, 50px) [body-end-outset] minmax(50px, 150px) [page-end-inset] minmax(25px, 50px) [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(4vw, 8vw) [page-start-inset] 4vw [body-start-outset] 4vw [body-start] 1.5em [body-content-start] minmax(500px, calc( 1100px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(50px, 100px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(4vw, 8vw) [page-start-inset] 4vw [body-start-outset] 4vw [body-start] 1.5em [body-content-start] minmax(500px, calc( 1100px - 3em )) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 4vw [page-start-inset] minmax(4vw, 12vw) [body-start-outset] 4vw [body-start] 1.5em [body-content-start] minmax(500px, calc( 900px - 3em )) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(4vw, 8vw) [page-start-inset] 4vw [body-start-outset] 4vw [body-start] 1.5em [body-content-start] minmax(450px, calc( 850px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(4vw, 8vw) [page-start-inset] 4vw [body-start-outset] 4vw [body-start] 1.5em [body-content-start] minmax(500px, calc( 1100px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 4vw [page-start-inset] minmax(4vw, 12vw) [body-start-outset] 4vw [body-start] 1.5em [body-content-start] minmax(450px, calc( 850px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(50px, 150px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] minmax(2vw, 4vw) [page-start-inset] minmax(4vw, 12vw) [body-start-outset] minmax(2vw, 4vw) [body-start] 1.5em [body-content-start] minmax(500px, calc( 900px - 3em )) [body-content-end] 1.5em [body-end] minmax(25px, 50px) [body-end-outset] minmax(50px, 150px) [page-end-inset] minmax(25px, 50px) [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}}@media(max-width: 991.98px){body .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc( 900px - 3em )) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.fullcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc( 900px - 3em )) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.slimcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc( 900px - 3em )) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.listing:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc( 1350px - 3em )) [body-content-end body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 2.8vw [page-start-inset] minmax(0vw, 11.6vw) [body-start-outset] 2.8vw [body-start] 1.5em [body-content-start] minmax(450px, calc( 900px - 3em )) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 2.8vw [page-start-inset] minmax(0vw, 11.6vw) [body-start-outset] 2.8vw [body-start] 1.5em [body-content-start] minmax(450px, calc( 900px - 3em )) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1.5em [body-content-start] minmax(500px, calc( 850px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(75px, 150px) [page-end-inset] 25px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc( 850px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(25px, 50px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc( 1100px - 3em )) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1em [body-content-start] minmax(500px, calc( 900px - 3em )) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 4fr [screen-end-inset] 1.5em [screen-end]}body.docked.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc( 850px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(25px, 50px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc( 850px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(25px, 50px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1em [body-content-start] minmax(500px, calc( 850px - 3em )) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 4fr [screen-end-inset] 1.5em [screen-end]}body.floating.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1em [body-content-start] minmax(500px, calc( 850px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(75px, 150px) [page-end-inset] 25px [page-end] 4fr [screen-end-inset] 1.5em [screen-end]}}@media(max-width: 767.98px){body .page-columns,body.fullcontent:not(.floating):not(.docked) .page-columns,body.slimcontent:not(.floating):not(.docked) .page-columns,body.docked .page-columns,body.docked.slimcontent .page-columns,body.docked.fullcontent .page-columns,body.floating .page-columns,body.floating.slimcontent .page-columns,body.floating.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(0px, 1fr) [body-content-end body-end body-end-outset page-end-inset page-end screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(0px, 1fr) [body-content-end body-end body-end-outset page-end-inset page-end screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(0px, 1fr) [body-content-end body-end body-end-outset page-end-inset page-end screen-end-inset] 1.5em [screen-end]}nav[role=doc-toc]{display:none}}body,.page-row-navigation{grid-template-rows:[page-top] max-content [contents-top] max-content [contents-bottom] max-content [page-bottom]}.page-rows-contents{grid-template-rows:[content-top] minmax(max-content, 1fr) [content-bottom] minmax(60px, max-content) [page-bottom]}.page-full{grid-column:screen-start/screen-end !important}.page-columns>*{grid-column:body-content-start/body-content-end}.page-columns.column-page>*{grid-column:page-start/page-end}.page-columns.column-page-left>*{grid-column:page-start/body-content-end}.page-columns.column-page-right>*{grid-column:body-content-start/page-end}.page-rows{grid-auto-rows:auto}.header{grid-column:screen-start/screen-end;grid-row:page-top/contents-top}#quarto-content{padding:0;grid-column:screen-start/screen-end;grid-row:contents-top/contents-bottom}body.floating .sidebar.sidebar-navigation{grid-column:page-start/body-start;grid-row:content-top/page-bottom}body.docked .sidebar.sidebar-navigation{grid-column:screen-start/body-start;grid-row:content-top/page-bottom}.sidebar.toc-left{grid-column:page-start/body-start;grid-row:content-top/page-bottom}.sidebar.margin-sidebar{grid-column:body-end/page-end;grid-row:content-top/page-bottom}.page-columns .content{grid-column:body-content-start/body-content-end;grid-row:content-top/content-bottom;align-content:flex-start}.page-columns .page-navigation{grid-column:body-content-start/body-content-end;grid-row:content-bottom/page-bottom}.page-columns .footer{grid-column:screen-start/screen-end;grid-row:contents-bottom/page-bottom}.page-columns .column-body{grid-column:body-content-start/body-content-end}.page-columns .column-body-fullbleed{grid-column:body-start/body-end}.page-columns .column-body-outset{grid-column:body-start-outset/body-end-outset;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-body-outset table{background:#222}.page-columns .column-body-outset-left{grid-column:body-start-outset/body-content-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-body-outset-left table{background:#222}.page-columns .column-body-outset-right{grid-column:body-content-start/body-end-outset;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-body-outset-right table{background:#222}.page-columns .column-page{grid-column:page-start/page-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-page table{background:#222}.page-columns .column-page-inset{grid-column:page-start-inset/page-end-inset;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-page-inset table{background:#222}.page-columns .column-page-inset-left{grid-column:page-start-inset/body-content-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-page-inset-left table{background:#222}.page-columns .column-page-inset-right{grid-column:body-content-start/page-end-inset;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-page-inset-right figcaption table{background:#222}.page-columns .column-page-left{grid-column:page-start/body-content-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-page-left table{background:#222}.page-columns .column-page-right{grid-column:body-content-start/page-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-page-right figcaption table{background:#222}#quarto-content.page-columns #quarto-margin-sidebar,#quarto-content.page-columns #quarto-sidebar{z-index:1}@media(max-width: 991.98px){#quarto-content.page-columns #quarto-margin-sidebar.collapse,#quarto-content.page-columns #quarto-sidebar.collapse,#quarto-content.page-columns #quarto-margin-sidebar.collapsing,#quarto-content.page-columns #quarto-sidebar.collapsing{z-index:1055}}#quarto-content.page-columns main.column-page,#quarto-content.page-columns main.column-page-right,#quarto-content.page-columns main.column-page-left{z-index:0}.page-columns .column-screen-inset{grid-column:screen-start-inset/screen-end-inset;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-inset table{background:#222}.page-columns .column-screen-inset-left{grid-column:screen-start-inset/body-content-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-inset-left table{background:#222}.page-columns .column-screen-inset-right{grid-column:body-content-start/screen-end-inset;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-inset-right table{background:#222}.page-columns .column-screen{grid-column:screen-start/screen-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen table{background:#222}.page-columns .column-screen-left{grid-column:screen-start/body-content-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-left table{background:#222}.page-columns .column-screen-right{grid-column:body-content-start/screen-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-right table{background:#222}.page-columns .column-screen-inset-shaded{grid-column:screen-start/screen-end;padding:1em;background:#6f6f6f;z-index:998;transform:translate3d(0, 0, 0);margin-bottom:1em}.zindex-content{z-index:998;transform:translate3d(0, 0, 0)}.zindex-modal{z-index:1055;transform:translate3d(0, 0, 0)}.zindex-over-content{z-index:999;transform:translate3d(0, 0, 0)}img.img-fluid.column-screen,img.img-fluid.column-screen-inset-shaded,img.img-fluid.column-screen-inset,img.img-fluid.column-screen-inset-left,img.img-fluid.column-screen-inset-right,img.img-fluid.column-screen-left,img.img-fluid.column-screen-right{width:100%}@media(min-width: 992px){.margin-caption,div.aside,aside,.column-margin{grid-column:body-end/page-end !important;z-index:998}.column-sidebar{grid-column:page-start/body-start !important;z-index:998}.column-leftmargin{grid-column:screen-start-inset/body-start !important;z-index:998}.no-row-height{height:1em;overflow:visible}}@media(max-width: 991.98px){.margin-caption,div.aside,aside,.column-margin{grid-column:body-end/page-end !important;z-index:998}.no-row-height{height:1em;overflow:visible}.page-columns.page-full{overflow:visible}.page-columns.toc-left .margin-caption,.page-columns.toc-left div.aside,.page-columns.toc-left aside,.page-columns.toc-left .column-margin{grid-column:body-content-start/body-content-end !important;z-index:998;transform:translate3d(0, 0, 0)}.page-columns.toc-left .no-row-height{height:initial;overflow:initial}}@media(max-width: 767.98px){.margin-caption,div.aside,aside,.column-margin{grid-column:body-content-start/body-content-end !important;z-index:998;transform:translate3d(0, 0, 0)}.no-row-height{height:initial;overflow:initial}#quarto-margin-sidebar{display:none}#quarto-sidebar-toc-left{display:none}.hidden-sm{display:none}}.panel-grid{display:grid;grid-template-rows:repeat(1, 1fr);grid-template-columns:repeat(24, 1fr);gap:1em}.panel-grid .g-col-1{grid-column:auto/span 1}.panel-grid .g-col-2{grid-column:auto/span 2}.panel-grid .g-col-3{grid-column:auto/span 3}.panel-grid .g-col-4{grid-column:auto/span 4}.panel-grid .g-col-5{grid-column:auto/span 5}.panel-grid .g-col-6{grid-column:auto/span 6}.panel-grid .g-col-7{grid-column:auto/span 7}.panel-grid .g-col-8{grid-column:auto/span 8}.panel-grid .g-col-9{grid-column:auto/span 9}.panel-grid .g-col-10{grid-column:auto/span 10}.panel-grid .g-col-11{grid-column:auto/span 11}.panel-grid .g-col-12{grid-column:auto/span 12}.panel-grid .g-col-13{grid-column:auto/span 13}.panel-grid .g-col-14{grid-column:auto/span 14}.panel-grid .g-col-15{grid-column:auto/span 15}.panel-grid .g-col-16{grid-column:auto/span 16}.panel-grid .g-col-17{grid-column:auto/span 17}.panel-grid .g-col-18{grid-column:auto/span 18}.panel-grid .g-col-19{grid-column:auto/span 19}.panel-grid .g-col-20{grid-column:auto/span 20}.panel-grid .g-col-21{grid-column:auto/span 21}.panel-grid .g-col-22{grid-column:auto/span 22}.panel-grid .g-col-23{grid-column:auto/span 23}.panel-grid .g-col-24{grid-column:auto/span 24}.panel-grid .g-start-1{grid-column-start:1}.panel-grid .g-start-2{grid-column-start:2}.panel-grid .g-start-3{grid-column-start:3}.panel-grid .g-start-4{grid-column-start:4}.panel-grid .g-start-5{grid-column-start:5}.panel-grid .g-start-6{grid-column-start:6}.panel-grid .g-start-7{grid-column-start:7}.panel-grid .g-start-8{grid-column-start:8}.panel-grid .g-start-9{grid-column-start:9}.panel-grid .g-start-10{grid-column-start:10}.panel-grid .g-start-11{grid-column-start:11}.panel-grid .g-start-12{grid-column-start:12}.panel-grid .g-start-13{grid-column-start:13}.panel-grid .g-start-14{grid-column-start:14}.panel-grid .g-start-15{grid-column-start:15}.panel-grid .g-start-16{grid-column-start:16}.panel-grid .g-start-17{grid-column-start:17}.panel-grid .g-start-18{grid-column-start:18}.panel-grid .g-start-19{grid-column-start:19}.panel-grid .g-start-20{grid-column-start:20}.panel-grid .g-start-21{grid-column-start:21}.panel-grid .g-start-22{grid-column-start:22}.panel-grid .g-start-23{grid-column-start:23}@media(min-width: 576px){.panel-grid .g-col-sm-1{grid-column:auto/span 1}.panel-grid .g-col-sm-2{grid-column:auto/span 2}.panel-grid .g-col-sm-3{grid-column:auto/span 3}.panel-grid .g-col-sm-4{grid-column:auto/span 4}.panel-grid .g-col-sm-5{grid-column:auto/span 5}.panel-grid .g-col-sm-6{grid-column:auto/span 6}.panel-grid .g-col-sm-7{grid-column:auto/span 7}.panel-grid .g-col-sm-8{grid-column:auto/span 8}.panel-grid .g-col-sm-9{grid-column:auto/span 9}.panel-grid .g-col-sm-10{grid-column:auto/span 10}.panel-grid .g-col-sm-11{grid-column:auto/span 11}.panel-grid .g-col-sm-12{grid-column:auto/span 12}.panel-grid .g-col-sm-13{grid-column:auto/span 13}.panel-grid .g-col-sm-14{grid-column:auto/span 14}.panel-grid .g-col-sm-15{grid-column:auto/span 15}.panel-grid .g-col-sm-16{grid-column:auto/span 16}.panel-grid .g-col-sm-17{grid-column:auto/span 17}.panel-grid .g-col-sm-18{grid-column:auto/span 18}.panel-grid .g-col-sm-19{grid-column:auto/span 19}.panel-grid .g-col-sm-20{grid-column:auto/span 20}.panel-grid .g-col-sm-21{grid-column:auto/span 21}.panel-grid .g-col-sm-22{grid-column:auto/span 22}.panel-grid .g-col-sm-23{grid-column:auto/span 23}.panel-grid .g-col-sm-24{grid-column:auto/span 24}.panel-grid .g-start-sm-1{grid-column-start:1}.panel-grid .g-start-sm-2{grid-column-start:2}.panel-grid .g-start-sm-3{grid-column-start:3}.panel-grid .g-start-sm-4{grid-column-start:4}.panel-grid .g-start-sm-5{grid-column-start:5}.panel-grid .g-start-sm-6{grid-column-start:6}.panel-grid .g-start-sm-7{grid-column-start:7}.panel-grid .g-start-sm-8{grid-column-start:8}.panel-grid .g-start-sm-9{grid-column-start:9}.panel-grid .g-start-sm-10{grid-column-start:10}.panel-grid .g-start-sm-11{grid-column-start:11}.panel-grid .g-start-sm-12{grid-column-start:12}.panel-grid .g-start-sm-13{grid-column-start:13}.panel-grid .g-start-sm-14{grid-column-start:14}.panel-grid .g-start-sm-15{grid-column-start:15}.panel-grid .g-start-sm-16{grid-column-start:16}.panel-grid .g-start-sm-17{grid-column-start:17}.panel-grid .g-start-sm-18{grid-column-start:18}.panel-grid .g-start-sm-19{grid-column-start:19}.panel-grid .g-start-sm-20{grid-column-start:20}.panel-grid .g-start-sm-21{grid-column-start:21}.panel-grid .g-start-sm-22{grid-column-start:22}.panel-grid .g-start-sm-23{grid-column-start:23}}@media(min-width: 768px){.panel-grid .g-col-md-1{grid-column:auto/span 1}.panel-grid .g-col-md-2{grid-column:auto/span 2}.panel-grid .g-col-md-3{grid-column:auto/span 3}.panel-grid .g-col-md-4{grid-column:auto/span 4}.panel-grid .g-col-md-5{grid-column:auto/span 5}.panel-grid .g-col-md-6{grid-column:auto/span 6}.panel-grid .g-col-md-7{grid-column:auto/span 7}.panel-grid .g-col-md-8{grid-column:auto/span 8}.panel-grid .g-col-md-9{grid-column:auto/span 9}.panel-grid .g-col-md-10{grid-column:auto/span 10}.panel-grid .g-col-md-11{grid-column:auto/span 11}.panel-grid .g-col-md-12{grid-column:auto/span 12}.panel-grid .g-col-md-13{grid-column:auto/span 13}.panel-grid .g-col-md-14{grid-column:auto/span 14}.panel-grid .g-col-md-15{grid-column:auto/span 15}.panel-grid .g-col-md-16{grid-column:auto/span 16}.panel-grid .g-col-md-17{grid-column:auto/span 17}.panel-grid .g-col-md-18{grid-column:auto/span 18}.panel-grid .g-col-md-19{grid-column:auto/span 19}.panel-grid .g-col-md-20{grid-column:auto/span 20}.panel-grid .g-col-md-21{grid-column:auto/span 21}.panel-grid .g-col-md-22{grid-column:auto/span 22}.panel-grid .g-col-md-23{grid-column:auto/span 23}.panel-grid .g-col-md-24{grid-column:auto/span 24}.panel-grid .g-start-md-1{grid-column-start:1}.panel-grid .g-start-md-2{grid-column-start:2}.panel-grid .g-start-md-3{grid-column-start:3}.panel-grid .g-start-md-4{grid-column-start:4}.panel-grid .g-start-md-5{grid-column-start:5}.panel-grid .g-start-md-6{grid-column-start:6}.panel-grid .g-start-md-7{grid-column-start:7}.panel-grid .g-start-md-8{grid-column-start:8}.panel-grid .g-start-md-9{grid-column-start:9}.panel-grid .g-start-md-10{grid-column-start:10}.panel-grid .g-start-md-11{grid-column-start:11}.panel-grid .g-start-md-12{grid-column-start:12}.panel-grid .g-start-md-13{grid-column-start:13}.panel-grid .g-start-md-14{grid-column-start:14}.panel-grid .g-start-md-15{grid-column-start:15}.panel-grid .g-start-md-16{grid-column-start:16}.panel-grid .g-start-md-17{grid-column-start:17}.panel-grid .g-start-md-18{grid-column-start:18}.panel-grid .g-start-md-19{grid-column-start:19}.panel-grid .g-start-md-20{grid-column-start:20}.panel-grid .g-start-md-21{grid-column-start:21}.panel-grid .g-start-md-22{grid-column-start:22}.panel-grid .g-start-md-23{grid-column-start:23}}@media(min-width: 992px){.panel-grid .g-col-lg-1{grid-column:auto/span 1}.panel-grid .g-col-lg-2{grid-column:auto/span 2}.panel-grid .g-col-lg-3{grid-column:auto/span 3}.panel-grid .g-col-lg-4{grid-column:auto/span 4}.panel-grid .g-col-lg-5{grid-column:auto/span 5}.panel-grid .g-col-lg-6{grid-column:auto/span 6}.panel-grid .g-col-lg-7{grid-column:auto/span 7}.panel-grid .g-col-lg-8{grid-column:auto/span 8}.panel-grid .g-col-lg-9{grid-column:auto/span 9}.panel-grid .g-col-lg-10{grid-column:auto/span 10}.panel-grid .g-col-lg-11{grid-column:auto/span 11}.panel-grid .g-col-lg-12{grid-column:auto/span 12}.panel-grid .g-col-lg-13{grid-column:auto/span 13}.panel-grid .g-col-lg-14{grid-column:auto/span 14}.panel-grid .g-col-lg-15{grid-column:auto/span 15}.panel-grid .g-col-lg-16{grid-column:auto/span 16}.panel-grid .g-col-lg-17{grid-column:auto/span 17}.panel-grid .g-col-lg-18{grid-column:auto/span 18}.panel-grid .g-col-lg-19{grid-column:auto/span 19}.panel-grid .g-col-lg-20{grid-column:auto/span 20}.panel-grid .g-col-lg-21{grid-column:auto/span 21}.panel-grid .g-col-lg-22{grid-column:auto/span 22}.panel-grid .g-col-lg-23{grid-column:auto/span 23}.panel-grid .g-col-lg-24{grid-column:auto/span 24}.panel-grid .g-start-lg-1{grid-column-start:1}.panel-grid .g-start-lg-2{grid-column-start:2}.panel-grid .g-start-lg-3{grid-column-start:3}.panel-grid .g-start-lg-4{grid-column-start:4}.panel-grid .g-start-lg-5{grid-column-start:5}.panel-grid .g-start-lg-6{grid-column-start:6}.panel-grid .g-start-lg-7{grid-column-start:7}.panel-grid .g-start-lg-8{grid-column-start:8}.panel-grid .g-start-lg-9{grid-column-start:9}.panel-grid .g-start-lg-10{grid-column-start:10}.panel-grid .g-start-lg-11{grid-column-start:11}.panel-grid .g-start-lg-12{grid-column-start:12}.panel-grid .g-start-lg-13{grid-column-start:13}.panel-grid .g-start-lg-14{grid-column-start:14}.panel-grid .g-start-lg-15{grid-column-start:15}.panel-grid .g-start-lg-16{grid-column-start:16}.panel-grid .g-start-lg-17{grid-column-start:17}.panel-grid .g-start-lg-18{grid-column-start:18}.panel-grid .g-start-lg-19{grid-column-start:19}.panel-grid .g-start-lg-20{grid-column-start:20}.panel-grid .g-start-lg-21{grid-column-start:21}.panel-grid .g-start-lg-22{grid-column-start:22}.panel-grid .g-start-lg-23{grid-column-start:23}}@media(min-width: 1200px){.panel-grid .g-col-xl-1{grid-column:auto/span 1}.panel-grid .g-col-xl-2{grid-column:auto/span 2}.panel-grid .g-col-xl-3{grid-column:auto/span 3}.panel-grid .g-col-xl-4{grid-column:auto/span 4}.panel-grid .g-col-xl-5{grid-column:auto/span 5}.panel-grid .g-col-xl-6{grid-column:auto/span 6}.panel-grid .g-col-xl-7{grid-column:auto/span 7}.panel-grid .g-col-xl-8{grid-column:auto/span 8}.panel-grid .g-col-xl-9{grid-column:auto/span 9}.panel-grid .g-col-xl-10{grid-column:auto/span 10}.panel-grid .g-col-xl-11{grid-column:auto/span 11}.panel-grid .g-col-xl-12{grid-column:auto/span 12}.panel-grid .g-col-xl-13{grid-column:auto/span 13}.panel-grid .g-col-xl-14{grid-column:auto/span 14}.panel-grid .g-col-xl-15{grid-column:auto/span 15}.panel-grid .g-col-xl-16{grid-column:auto/span 16}.panel-grid .g-col-xl-17{grid-column:auto/span 17}.panel-grid .g-col-xl-18{grid-column:auto/span 18}.panel-grid .g-col-xl-19{grid-column:auto/span 19}.panel-grid .g-col-xl-20{grid-column:auto/span 20}.panel-grid .g-col-xl-21{grid-column:auto/span 21}.panel-grid .g-col-xl-22{grid-column:auto/span 22}.panel-grid .g-col-xl-23{grid-column:auto/span 23}.panel-grid .g-col-xl-24{grid-column:auto/span 24}.panel-grid .g-start-xl-1{grid-column-start:1}.panel-grid .g-start-xl-2{grid-column-start:2}.panel-grid .g-start-xl-3{grid-column-start:3}.panel-grid .g-start-xl-4{grid-column-start:4}.panel-grid .g-start-xl-5{grid-column-start:5}.panel-grid .g-start-xl-6{grid-column-start:6}.panel-grid .g-start-xl-7{grid-column-start:7}.panel-grid .g-start-xl-8{grid-column-start:8}.panel-grid .g-start-xl-9{grid-column-start:9}.panel-grid .g-start-xl-10{grid-column-start:10}.panel-grid .g-start-xl-11{grid-column-start:11}.panel-grid .g-start-xl-12{grid-column-start:12}.panel-grid .g-start-xl-13{grid-column-start:13}.panel-grid .g-start-xl-14{grid-column-start:14}.panel-grid .g-start-xl-15{grid-column-start:15}.panel-grid .g-start-xl-16{grid-column-start:16}.panel-grid .g-start-xl-17{grid-column-start:17}.panel-grid .g-start-xl-18{grid-column-start:18}.panel-grid .g-start-xl-19{grid-column-start:19}.panel-grid .g-start-xl-20{grid-column-start:20}.panel-grid .g-start-xl-21{grid-column-start:21}.panel-grid .g-start-xl-22{grid-column-start:22}.panel-grid .g-start-xl-23{grid-column-start:23}}@media(min-width: 1400px){.panel-grid .g-col-xxl-1{grid-column:auto/span 1}.panel-grid .g-col-xxl-2{grid-column:auto/span 2}.panel-grid .g-col-xxl-3{grid-column:auto/span 3}.panel-grid .g-col-xxl-4{grid-column:auto/span 4}.panel-grid .g-col-xxl-5{grid-column:auto/span 5}.panel-grid .g-col-xxl-6{grid-column:auto/span 6}.panel-grid .g-col-xxl-7{grid-column:auto/span 7}.panel-grid .g-col-xxl-8{grid-column:auto/span 8}.panel-grid .g-col-xxl-9{grid-column:auto/span 9}.panel-grid .g-col-xxl-10{grid-column:auto/span 10}.panel-grid .g-col-xxl-11{grid-column:auto/span 11}.panel-grid .g-col-xxl-12{grid-column:auto/span 12}.panel-grid .g-col-xxl-13{grid-column:auto/span 13}.panel-grid .g-col-xxl-14{grid-column:auto/span 14}.panel-grid .g-col-xxl-15{grid-column:auto/span 15}.panel-grid .g-col-xxl-16{grid-column:auto/span 16}.panel-grid .g-col-xxl-17{grid-column:auto/span 17}.panel-grid .g-col-xxl-18{grid-column:auto/span 18}.panel-grid .g-col-xxl-19{grid-column:auto/span 19}.panel-grid .g-col-xxl-20{grid-column:auto/span 20}.panel-grid .g-col-xxl-21{grid-column:auto/span 21}.panel-grid .g-col-xxl-22{grid-column:auto/span 22}.panel-grid .g-col-xxl-23{grid-column:auto/span 23}.panel-grid .g-col-xxl-24{grid-column:auto/span 24}.panel-grid .g-start-xxl-1{grid-column-start:1}.panel-grid .g-start-xxl-2{grid-column-start:2}.panel-grid .g-start-xxl-3{grid-column-start:3}.panel-grid .g-start-xxl-4{grid-column-start:4}.panel-grid .g-start-xxl-5{grid-column-start:5}.panel-grid .g-start-xxl-6{grid-column-start:6}.panel-grid .g-start-xxl-7{grid-column-start:7}.panel-grid .g-start-xxl-8{grid-column-start:8}.panel-grid .g-start-xxl-9{grid-column-start:9}.panel-grid .g-start-xxl-10{grid-column-start:10}.panel-grid .g-start-xxl-11{grid-column-start:11}.panel-grid .g-start-xxl-12{grid-column-start:12}.panel-grid .g-start-xxl-13{grid-column-start:13}.panel-grid .g-start-xxl-14{grid-column-start:14}.panel-grid .g-start-xxl-15{grid-column-start:15}.panel-grid .g-start-xxl-16{grid-column-start:16}.panel-grid .g-start-xxl-17{grid-column-start:17}.panel-grid .g-start-xxl-18{grid-column-start:18}.panel-grid .g-start-xxl-19{grid-column-start:19}.panel-grid .g-start-xxl-20{grid-column-start:20}.panel-grid .g-start-xxl-21{grid-column-start:21}.panel-grid .g-start-xxl-22{grid-column-start:22}.panel-grid .g-start-xxl-23{grid-column-start:23}}main{margin-top:1em;margin-bottom:1em}h1,.h1,h2,.h2{opacity:.9;margin-top:2rem;margin-bottom:1rem;font-weight:600}h1.title,.title.h1{margin-top:0}h2,.h2{border-bottom:1px solid #434343;padding-bottom:.5rem}h3,.h3{font-weight:600}h3,.h3,h4,.h4{opacity:.9;margin-top:1.5rem}h5,.h5,h6,.h6{opacity:.9}.header-section-number{color:#bfbfbf}.nav-link.active .header-section-number{color:inherit}mark,.mark{padding:0em}.panel-caption,caption,.figure-caption{font-size:.9rem}.panel-caption,.figure-caption,figcaption{color:#bfbfbf}.table-caption,caption{color:#fff}.quarto-layout-cell[data-ref-parent] caption{color:#bfbfbf}.column-margin figcaption,.margin-caption,div.aside,aside,.column-margin{color:#bfbfbf;font-size:.825rem}.panel-caption.margin-caption{text-align:inherit}.column-margin.column-container p{margin-bottom:0}.column-margin.column-container>*:not(.collapse){padding-top:.5em;padding-bottom:.5em;display:block}.column-margin.column-container>*.collapse:not(.show){display:none}@media(min-width: 768px){.column-margin.column-container .callout-margin-content:first-child{margin-top:4.5em}.column-margin.column-container .callout-margin-content-simple:first-child{margin-top:3.5em}}.margin-caption>*{padding-top:.5em;padding-bottom:.5em}@media(max-width: 767.98px){.quarto-layout-row{flex-direction:column}}.nav-tabs .nav-item{margin-top:1px;cursor:pointer}.tab-content{margin-top:0px;border-left:#434343 1px solid;border-right:#434343 1px solid;border-bottom:#434343 1px solid;margin-left:0;padding:1em;margin-bottom:1em}@media(max-width: 767.98px){.layout-sidebar{margin-left:0;margin-right:0}}.panel-sidebar,.panel-sidebar .form-control,.panel-input,.panel-input .form-control,.selectize-dropdown{font-size:.9rem}.panel-sidebar .form-control,.panel-input .form-control{padding-top:.1rem}.tab-pane div.sourceCode{margin-top:0px}.tab-pane>p{padding-top:1em}.tab-content>.tab-pane:not(.active){display:none !important}div.sourceCode{background-color:rgba(67,67,67,.65);border:1px solid rgba(67,67,67,.65);border-radius:.25rem}pre.sourceCode{background-color:rgba(0,0,0,0)}pre.sourceCode{border:none;font-size:.875em;overflow:visible !important;padding:.4em}.callout pre.sourceCode{padding-left:0}div.sourceCode{overflow-y:hidden}.callout div.sourceCode{margin-left:initial}.blockquote{font-size:inherit;padding-left:1rem;padding-right:1.5rem;color:#bfbfbf}.blockquote h1:first-child,.blockquote .h1:first-child,.blockquote h2:first-child,.blockquote .h2:first-child,.blockquote h3:first-child,.blockquote .h3:first-child,.blockquote h4:first-child,.blockquote .h4:first-child,.blockquote h5:first-child,.blockquote .h5:first-child{margin-top:0}pre{background-color:initial;padding:initial;border:initial}p code:not(.sourceCode),li code:not(.sourceCode),td code:not(.sourceCode){background-color:#2b2b2b;padding:.2em}nav p code:not(.sourceCode),nav li code:not(.sourceCode),nav td code:not(.sourceCode){background-color:rgba(0,0,0,0);padding:0}td code:not(.sourceCode){white-space:pre-wrap}#quarto-embedded-source-code-modal>.modal-dialog{max-width:1000px;padding-left:1.75rem;padding-right:1.75rem}#quarto-embedded-source-code-modal>.modal-dialog>.modal-content>.modal-body{padding:0}#quarto-embedded-source-code-modal>.modal-dialog>.modal-content>.modal-body div.sourceCode{margin:0;padding:.2rem .2rem;border-radius:0px;border:none}#quarto-embedded-source-code-modal>.modal-dialog>.modal-content>.modal-header{padding:.7rem}.code-tools-button{font-size:1rem;padding:.15rem .15rem;margin-left:5px;color:#6c757d;background-color:rgba(0,0,0,0);transition:initial;cursor:pointer}.code-tools-button>.bi::before{display:inline-block;height:1rem;width:1rem;content:"";vertical-align:-0.125em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-size:1rem 1rem}.code-tools-button:hover>.bi::before{background-image:url('data:image/svg+xml,')}#quarto-embedded-source-code-modal .code-copy-button>.bi::before{background-image:url('data:image/svg+xml,')}#quarto-embedded-source-code-modal .code-copy-button-checked>.bi::before{background-image:url('data:image/svg+xml,')}.sidebar{will-change:top;transition:top 200ms linear;position:sticky;overflow-y:auto;padding-top:1.2em;max-height:100vh}.sidebar.toc-left,.sidebar.margin-sidebar{top:0px;padding-top:1em}.sidebar.toc-left>*,.sidebar.margin-sidebar>*{padding-top:.5em}.sidebar.quarto-banner-title-block-sidebar>*{padding-top:1.65em}figure .quarto-notebook-link{margin-top:.5em}.quarto-notebook-link{font-size:.75em;color:#6c757d;margin-bottom:1em;text-decoration:none;display:block}.quarto-notebook-link:hover{text-decoration:underline;color:#00bc8c}.quarto-notebook-link::before{display:inline-block;height:.75rem;width:.75rem;margin-bottom:0em;margin-right:.25em;content:"";vertical-align:-0.125em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-size:.75rem .75rem}.quarto-alternate-notebooks i.bi,.quarto-alternate-formats i.bi{margin-right:.4em}.quarto-notebook .cell-container{display:flex}.quarto-notebook .cell-container .cell{flex-grow:4}.quarto-notebook .cell-container .cell-decorator{padding-top:1.5em;padding-right:1em;text-align:right}.quarto-notebook h2,.quarto-notebook .h2{border-bottom:none}.sidebar .quarto-alternate-formats a,.sidebar .quarto-alternate-notebooks a{text-decoration:none}.sidebar .quarto-alternate-formats a:hover,.sidebar .quarto-alternate-notebooks a:hover{color:#00bc8c}.sidebar .quarto-alternate-notebooks h2,.sidebar .quarto-alternate-notebooks .h2,.sidebar .quarto-alternate-formats h2,.sidebar .quarto-alternate-formats .h2,.sidebar nav[role=doc-toc]>h2,.sidebar nav[role=doc-toc]>.h2{font-size:.875rem;font-weight:400;margin-bottom:.5rem;margin-top:.3rem;font-family:inherit;border-bottom:0;padding-bottom:0;padding-top:0px}.sidebar .quarto-alternate-notebooks h2,.sidebar .quarto-alternate-notebooks .h2,.sidebar .quarto-alternate-formats h2,.sidebar .quarto-alternate-formats .h2{margin-top:1rem}.sidebar nav[role=doc-toc]>ul a{border-left:1px solid #ebebeb;padding-left:.6rem}.sidebar .quarto-alternate-notebooks h2>ul a,.sidebar .quarto-alternate-notebooks .h2>ul a,.sidebar .quarto-alternate-formats h2>ul a,.sidebar .quarto-alternate-formats .h2>ul a{border-left:none;padding-left:.6rem}.sidebar .quarto-alternate-notebooks ul a:empty,.sidebar .quarto-alternate-formats ul a:empty,.sidebar nav[role=doc-toc]>ul a:empty{display:none}.sidebar .quarto-alternate-notebooks ul,.sidebar .quarto-alternate-formats ul,.sidebar nav[role=doc-toc] ul{padding-left:0;list-style:none;font-size:.875rem;font-weight:300}.sidebar .quarto-alternate-notebooks ul li a,.sidebar .quarto-alternate-formats ul li a,.sidebar nav[role=doc-toc]>ul li a{line-height:1.1rem;padding-bottom:.2rem;padding-top:.2rem;color:inherit}.sidebar nav[role=doc-toc] ul>li>ul>li>a{padding-left:1.2em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>a{padding-left:2.4em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>ul>li>a{padding-left:3.6em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>ul>li>ul>li>a{padding-left:4.8em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>ul>li>ul>li>ul>li>a{padding-left:6em}.sidebar nav[role=doc-toc] ul>li>a.active,.sidebar nav[role=doc-toc] ul>li>ul>li>a.active{border-left:1px solid #00bc8c;color:#00bc8c !important}.sidebar nav[role=doc-toc] ul>li>a:hover,.sidebar nav[role=doc-toc] ul>li>ul>li>a:hover{color:#00bc8c !important}kbd,.kbd{color:#fff;background-color:#f8f9fa;border:1px solid;border-radius:5px;border-color:#434343}div.hanging-indent{margin-left:1em;text-indent:-1em}.citation a,.footnote-ref{text-decoration:none}.footnotes ol{padding-left:1em}.tippy-content>*{margin-bottom:.7em}.tippy-content>*:last-child{margin-bottom:0}.table a{word-break:break-word}.table>thead{border-top-width:1px;border-top-color:#434343;border-bottom:1px solid #fff}.callout{margin-top:1.25rem;margin-bottom:1.25rem;border-radius:.25rem;overflow-wrap:break-word}.callout .callout-title-container{overflow-wrap:anywhere}.callout.callout-style-simple{padding:.4em .7em;border-left:5px solid;border-right:1px solid #434343;border-top:1px solid #434343;border-bottom:1px solid #434343}.callout.callout-style-default{border-left:5px solid;border-right:1px solid #434343;border-top:1px solid #434343;border-bottom:1px solid #434343}.callout .callout-body-container{flex-grow:1}.callout.callout-style-simple .callout-body{font-size:.9rem;font-weight:400}.callout.callout-style-default .callout-body{font-size:.9rem;font-weight:400}.callout.callout-titled .callout-body{margin-top:.2em}.callout:not(.no-icon).callout-titled.callout-style-simple .callout-body{padding-left:1.6em}.callout.callout-titled>.callout-header{padding-top:.2em;margin-bottom:-0.2em}.callout.callout-style-simple>div.callout-header{border-bottom:none;font-size:.9rem;font-weight:600;opacity:75%}.callout.callout-style-default>div.callout-header{border-bottom:none;font-weight:600;opacity:85%;font-size:.9rem;padding-left:.5em;padding-right:.5em}.callout.callout-style-default div.callout-body{padding-left:.5em;padding-right:.5em}.callout.callout-style-default div.callout-body>:first-child{margin-top:.5em}.callout>div.callout-header[data-bs-toggle=collapse]{cursor:pointer}.callout.callout-style-default .callout-header[aria-expanded=false],.callout.callout-style-default .callout-header[aria-expanded=true]{padding-top:0px;margin-bottom:0px;align-items:center}.callout.callout-titled .callout-body>:last-child:not(.sourceCode),.callout.callout-titled .callout-body>div>:last-child:not(.sourceCode){margin-bottom:.5rem}.callout:not(.callout-titled) .callout-body>:first-child,.callout:not(.callout-titled) .callout-body>div>:first-child{margin-top:.25rem}.callout:not(.callout-titled) .callout-body>:last-child,.callout:not(.callout-titled) .callout-body>div>:last-child{margin-bottom:.2rem}.callout.callout-style-simple .callout-icon::before,.callout.callout-style-simple .callout-toggle::before{height:1rem;width:1rem;display:inline-block;content:"";background-repeat:no-repeat;background-size:1rem 1rem}.callout.callout-style-default .callout-icon::before,.callout.callout-style-default .callout-toggle::before{height:.9rem;width:.9rem;display:inline-block;content:"";background-repeat:no-repeat;background-size:.9rem .9rem}.callout.callout-style-default .callout-toggle::before{margin-top:5px}.callout .callout-btn-toggle .callout-toggle::before{transition:transform .2s linear}.callout .callout-header[aria-expanded=false] .callout-toggle::before{transform:rotate(-90deg)}.callout .callout-header[aria-expanded=true] .callout-toggle::before{transform:none}.callout.callout-style-simple:not(.no-icon) div.callout-icon-container{padding-top:.2em;padding-right:.55em}.callout.callout-style-default:not(.no-icon) div.callout-icon-container{padding-top:.1em;padding-right:.35em}.callout.callout-style-default:not(.no-icon) div.callout-title-container{margin-top:-1px}.callout.callout-style-default.callout-caution:not(.no-icon) div.callout-icon-container{padding-top:.3em;padding-right:.35em}.callout>.callout-body>.callout-icon-container>.no-icon,.callout>.callout-header>.callout-icon-container>.no-icon{display:none}div.callout.callout{border-left-color:#6c757d}div.callout.callout-style-default>.callout-header{background-color:#6c757d}div.callout-note.callout{border-left-color:#375a7f}div.callout-note.callout-style-default>.callout-header{background-color:#111b26}div.callout-note:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-note.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-note .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-tip.callout{border-left-color:#00bc8c}div.callout-tip.callout-style-default>.callout-header{background-color:#00382a}div.callout-tip:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-tip.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-tip .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-warning.callout{border-left-color:#f39c12}div.callout-warning.callout-style-default>.callout-header{background-color:#492f05}div.callout-warning:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-warning.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-warning .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-caution.callout{border-left-color:#fd7e14}div.callout-caution.callout-style-default>.callout-header{background-color:#4c2606}div.callout-caution:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-caution.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-caution .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-important.callout{border-left-color:#e74c3c}div.callout-important.callout-style-default>.callout-header{background-color:#451712}div.callout-important:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-important.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-important .callout-toggle::before{background-image:url('data:image/svg+xml,')}.quarto-toggle-container{display:flex;align-items:center}.quarto-reader-toggle .bi::before,.quarto-color-scheme-toggle .bi::before{display:inline-block;height:1rem;width:1rem;content:"";background-repeat:no-repeat;background-size:1rem 1rem}.sidebar-navigation{padding-left:20px}.navbar .quarto-color-scheme-toggle:not(.alternate) .bi::before{background-image:url('data:image/svg+xml,')}.navbar .quarto-color-scheme-toggle.alternate .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-color-scheme-toggle:not(.alternate) .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-color-scheme-toggle.alternate .bi::before{background-image:url('data:image/svg+xml,')}.quarto-sidebar-toggle{border-color:#dee2e6;border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem;border-style:solid;border-width:1px;overflow:hidden;border-top-width:0px;padding-top:0px !important}.quarto-sidebar-toggle-title{cursor:pointer;padding-bottom:2px;margin-left:.25em;text-align:center;font-weight:400;font-size:.775em}#quarto-content .quarto-sidebar-toggle{background:#272727}#quarto-content .quarto-sidebar-toggle-title{color:#fff}.quarto-sidebar-toggle-icon{color:#dee2e6;margin-right:.5em;float:right;transition:transform .2s ease}.quarto-sidebar-toggle-icon::before{padding-top:5px}.quarto-sidebar-toggle.expanded .quarto-sidebar-toggle-icon{transform:rotate(-180deg)}.quarto-sidebar-toggle.expanded .quarto-sidebar-toggle-title{border-bottom:solid #dee2e6 1px}.quarto-sidebar-toggle-contents{background-color:#222;padding-right:10px;padding-left:10px;margin-top:0px !important;transition:max-height .5s ease}.quarto-sidebar-toggle.expanded .quarto-sidebar-toggle-contents{padding-top:1em;padding-bottom:10px}.quarto-sidebar-toggle:not(.expanded) .quarto-sidebar-toggle-contents{padding-top:0px !important;padding-bottom:0px}nav[role=doc-toc]{z-index:1020}#quarto-sidebar>*,nav[role=doc-toc]>*{transition:opacity .1s ease,border .1s ease}#quarto-sidebar.slow>*,nav[role=doc-toc].slow>*{transition:opacity .4s ease,border .4s ease}.quarto-color-scheme-toggle:not(.alternate).top-right .bi::before{background-image:url('data:image/svg+xml,')}.quarto-color-scheme-toggle.alternate.top-right .bi::before{background-image:url('data:image/svg+xml,')}#quarto-appendix.default{border-top:1px solid #dee2e6}#quarto-appendix.default{background-color:#222;padding-top:1.5em;margin-top:2em;z-index:998}#quarto-appendix.default .quarto-appendix-heading{margin-top:0;line-height:1.4em;font-weight:600;opacity:.9;border-bottom:none;margin-bottom:0}#quarto-appendix.default .footnotes ol,#quarto-appendix.default .footnotes ol li>p:last-of-type,#quarto-appendix.default .quarto-appendix-contents>p:last-of-type{margin-bottom:0}#quarto-appendix.default .quarto-appendix-secondary-label{margin-bottom:.4em}#quarto-appendix.default .quarto-appendix-bibtex{font-size:.7em;padding:1em;border:solid 1px #dee2e6;margin-bottom:1em}#quarto-appendix.default .quarto-appendix-bibtex code.sourceCode{white-space:pre-wrap}#quarto-appendix.default .quarto-appendix-citeas{font-size:.9em;padding:1em;border:solid 1px #dee2e6;margin-bottom:1em}#quarto-appendix.default .quarto-appendix-heading{font-size:1em !important}#quarto-appendix.default *[role=doc-endnotes]>ol,#quarto-appendix.default .quarto-appendix-contents>*:not(h2):not(.h2){font-size:.9em}#quarto-appendix.default section{padding-bottom:1.5em}#quarto-appendix.default section *[role=doc-endnotes],#quarto-appendix.default section>*:not(a){opacity:.9;word-wrap:break-word}.btn.btn-quarto,div.cell-output-display .btn-quarto{color:#d9d9d9;background-color:#434343;border-color:#434343}.btn.btn-quarto:hover,div.cell-output-display .btn-quarto:hover{color:#d9d9d9;background-color:#5f5f5f;border-color:#565656}.btn-check:focus+.btn.btn-quarto,.btn.btn-quarto:focus,.btn-check:focus+div.cell-output-display .btn-quarto,div.cell-output-display .btn-quarto:focus{color:#d9d9d9;background-color:#5f5f5f;border-color:#565656;box-shadow:0 0 0 .25rem rgba(90,90,90,.5)}.btn-check:checked+.btn.btn-quarto,.btn-check:active+.btn.btn-quarto,.btn.btn-quarto:active,.btn.btn-quarto.active,.show>.btn.btn-quarto.dropdown-toggle,.btn-check:checked+div.cell-output-display .btn-quarto,.btn-check:active+div.cell-output-display .btn-quarto,div.cell-output-display .btn-quarto:active,div.cell-output-display .btn-quarto.active,.show>div.cell-output-display .btn-quarto.dropdown-toggle{color:#fff;background-color:dimgray;border-color:#565656}.btn-check:checked+.btn.btn-quarto:focus,.btn-check:active+.btn.btn-quarto:focus,.btn.btn-quarto:active:focus,.btn.btn-quarto.active:focus,.show>.btn.btn-quarto.dropdown-toggle:focus,.btn-check:checked+div.cell-output-display .btn-quarto:focus,.btn-check:active+div.cell-output-display .btn-quarto:focus,div.cell-output-display .btn-quarto:active:focus,div.cell-output-display .btn-quarto.active:focus,.show>div.cell-output-display .btn-quarto.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(90,90,90,.5)}.btn.btn-quarto:disabled,.btn.btn-quarto.disabled,div.cell-output-display .btn-quarto:disabled,div.cell-output-display .btn-quarto.disabled{color:#fff;background-color:#434343;border-color:#434343}nav.quarto-secondary-nav.color-navbar{background-color:#375a7f;color:#dee2e6}nav.quarto-secondary-nav.color-navbar h1,nav.quarto-secondary-nav.color-navbar .h1,nav.quarto-secondary-nav.color-navbar .quarto-btn-toggle{color:#dee2e6}@media(max-width: 991.98px){body.nav-sidebar .quarto-title-banner{margin-bottom:0;padding-bottom:0}body.nav-sidebar #title-block-header{margin-block-end:0}}p.subtitle{margin-top:.25em;margin-bottom:.5em}code a:any-link{color:inherit;text-decoration-color:#6c757d}/*! dark */div.observablehq table thead tr th{background-color:var(--bs-body-bg)}input,button,select,optgroup,textarea{background-color:var(--bs-body-bg)}.code-annotated .code-copy-button{margin-right:1.25em;margin-top:0;padding-bottom:0;padding-top:3px}.code-annotation-gutter-bg{background-color:#222}.code-annotation-gutter{background-color:rgba(67,67,67,.65)}.code-annotation-gutter,.code-annotation-gutter-bg{height:100%;width:calc(20px + .5em);position:absolute;top:0;right:0}dl.code-annotation-container-grid dt{margin-right:1em;margin-top:.25rem}dl.code-annotation-container-grid dt{font-family:var(--bs-font-monospace);color:#e6e6e6;border:solid #e6e6e6 1px;border-radius:50%;height:22px;width:22px;line-height:22px;font-size:11px;text-align:center;vertical-align:middle;text-decoration:none}dl.code-annotation-container-grid dt[data-target-cell]{cursor:pointer}dl.code-annotation-container-grid dt[data-target-cell].code-annotation-active{color:#222;border:solid #aaa 1px;background-color:#aaa}pre.code-annotation-code{padding-top:0;padding-bottom:0}pre.code-annotation-code code{z-index:3}#code-annotation-line-highlight-gutter{width:100%;border-top:solid rgba(170,170,170,.2666666667) 1px;border-bottom:solid rgba(170,170,170,.2666666667) 1px;z-index:2;background-color:rgba(170,170,170,.1333333333)}#code-annotation-line-highlight{margin-left:-4em;width:calc(100% + 4em);border-top:solid rgba(170,170,170,.2666666667) 1px;border-bottom:solid rgba(170,170,170,.2666666667) 1px;z-index:2;background-color:rgba(170,170,170,.1333333333)}code.sourceCode .code-annotation-anchor.code-annotation-active{background-color:var(--quarto-hl-normal-color, #aaaaaa);border:solid var(--quarto-hl-normal-color, #aaaaaa) 1px;color:#434343;font-weight:bolder}code.sourceCode .code-annotation-anchor{font-family:var(--bs-font-monospace);color:var(--quarto-hl-co-color);border:solid var(--quarto-hl-co-color) 1px;border-radius:50%;height:18px;width:18px;font-size:9px;margin-top:2px}code.sourceCode button.code-annotation-anchor{padding:2px}code.sourceCode a.code-annotation-anchor{line-height:18px;text-align:center;vertical-align:middle;cursor:default;text-decoration:none}@media print{.page-columns .column-screen-inset{grid-column:page-start-inset/page-end-inset;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-inset table{background:#222}.page-columns .column-screen-inset-left{grid-column:page-start-inset/body-content-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-inset-left table{background:#222}.page-columns .column-screen-inset-right{grid-column:body-content-start/page-end-inset;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-inset-right table{background:#222}.page-columns .column-screen{grid-column:page-start/page-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen table{background:#222}.page-columns .column-screen-left{grid-column:page-start/body-content-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-left table{background:#222}.page-columns .column-screen-right{grid-column:body-content-start/page-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-right table{background:#222}.page-columns .column-screen-inset-shaded{grid-column:page-start-inset/page-end-inset;padding:1em;background:#6f6f6f;z-index:998;transform:translate3d(0, 0, 0);margin-bottom:1em}}.quarto-video{margin-bottom:1em}.table>thead{border-top-width:0}.table>:not(caption)>*:not(:last-child)>*{border-bottom-color:#fff;border-bottom-style:solid;border-bottom-width:1px}.table>:not(:first-child){border-top:1px solid #fff;border-bottom:1px solid inherit}.table tbody{border-bottom-color:#fff}a.external:after{display:inline-block;height:.75rem;width:.75rem;margin-bottom:.15em;margin-left:.25em;content:"";vertical-align:-0.125em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-size:.75rem .75rem}div.sourceCode code a.external:after{content:none}a.external:after:hover{cursor:pointer}.quarto-ext-icon{display:inline-block;font-size:.75em;padding-left:.3em}.code-with-filename .code-with-filename-file{margin-bottom:0;padding-bottom:2px;padding-top:2px;padding-left:.7em;border:var(--quarto-border-width) solid var(--quarto-border-color);border-radius:var(--quarto-border-radius);border-bottom:0;border-bottom-left-radius:0%;border-bottom-right-radius:0%}.code-with-filename div.sourceCode,.reveal .code-with-filename div.sourceCode{margin-top:0;border-top-left-radius:0%;border-top-right-radius:0%}.code-with-filename .code-with-filename-file pre{margin-bottom:0}.code-with-filename .code-with-filename-file,.code-with-filename .code-with-filename-file pre{background-color:rgba(219,219,219,.8)}.quarto-dark .code-with-filename .code-with-filename-file,.quarto-dark .code-with-filename .code-with-filename-file pre{background-color:#555}.code-with-filename .code-with-filename-file strong{font-weight:400}.blockquote-footer{color:#595959}.input-group-addon{color:#fff}.form-floating>label{color:#444}.nav-tabs .nav-link,.nav-tabs .nav-link.active,.nav-tabs .nav-link.active:focus,.nav-tabs .nav-link.active:hover,.nav-tabs .nav-item.open .nav-link,.nav-tabs .nav-item.open .nav-link:focus,.nav-tabs .nav-item.open .nav-link:hover,.nav-pills .nav-link,.nav-pills .nav-link.active,.nav-pills .nav-link.active:focus,.nav-pills .nav-link.active:hover,.nav-pills .nav-item.open .nav-link,.nav-pills .nav-item.open .nav-link:focus,.nav-pills .nav-item.open .nav-link:hover{color:#fff}.breadcrumb a{color:#fff}.pagination a:hover{text-decoration:none}.alert{border:none;color:#fff}.alert a,.alert .alert-link{color:#fff;text-decoration:underline}.alert-default{background-color:#434343}.alert-primary{background-color:#375a7f}.alert-secondary{background-color:#434343}.alert-success{background-color:#00bc8c}.alert-info{background-color:#3498db}.alert-warning{background-color:#f39c12}.alert-danger{background-color:#e74c3c}.alert-light{background-color:#6f6f6f}.alert-dark{background-color:#2d2d2d}.quarto-title-banner{margin-bottom:1em;color:#dee2e6;background:#375a7f}.quarto-title-banner .code-tools-button{color:#a4afba}.quarto-title-banner .code-tools-button:hover{color:#dee2e6}.quarto-title-banner .code-tools-button>.bi::before{background-image:url('data:image/svg+xml,')}.quarto-title-banner .code-tools-button:hover>.bi::before{background-image:url('data:image/svg+xml,')}.quarto-title-banner .quarto-title .title{font-weight:600}.quarto-title-banner .quarto-categories{margin-top:.75em}@media(min-width: 992px){.quarto-title-banner{padding-top:2.5em;padding-bottom:2.5em}}@media(max-width: 991.98px){.quarto-title-banner{padding-top:1em;padding-bottom:1em}}main.quarto-banner-title-block>section:first-child>h2,main.quarto-banner-title-block>section:first-child>.h2,main.quarto-banner-title-block>section:first-child>h3,main.quarto-banner-title-block>section:first-child>.h3,main.quarto-banner-title-block>section:first-child>h4,main.quarto-banner-title-block>section:first-child>.h4{margin-top:0}.quarto-title .quarto-categories{display:flex;flex-wrap:wrap;row-gap:.5em;column-gap:.4em;padding-bottom:.5em;margin-top:.75em}.quarto-title .quarto-categories .quarto-category{padding:.25em .75em;font-size:.65em;text-transform:uppercase;border:solid 1px;border-radius:.25rem;opacity:.6}.quarto-title .quarto-categories .quarto-category a{color:inherit}#title-block-header.quarto-title-block.default .quarto-title-meta{display:grid;grid-template-columns:repeat(2, 1fr)}#title-block-header.quarto-title-block.default .quarto-title .title{margin-bottom:0}#title-block-header.quarto-title-block.default .quarto-title-author-orcid img{margin-top:-5px}#title-block-header.quarto-title-block.default .quarto-description p:last-of-type{margin-bottom:0}#title-block-header.quarto-title-block.default .quarto-title-meta-contents p,#title-block-header.quarto-title-block.default .quarto-title-authors p,#title-block-header.quarto-title-block.default .quarto-title-affiliations p{margin-bottom:.1em}#title-block-header.quarto-title-block.default .quarto-title-meta-heading{text-transform:uppercase;margin-top:1em;font-size:.8em;opacity:.8;font-weight:400}#title-block-header.quarto-title-block.default .quarto-title-meta-contents{font-size:.9em}#title-block-header.quarto-title-block.default .quarto-title-meta-contents a{color:#fff}#title-block-header.quarto-title-block.default .quarto-title-meta-contents p.affiliation:last-of-type{margin-bottom:.7em}#title-block-header.quarto-title-block.default p.affiliation{margin-bottom:.1em}#title-block-header.quarto-title-block.default .description,#title-block-header.quarto-title-block.default .abstract{margin-top:0}#title-block-header.quarto-title-block.default .description>p,#title-block-header.quarto-title-block.default .abstract>p{font-size:.9em}#title-block-header.quarto-title-block.default .description>p:last-of-type,#title-block-header.quarto-title-block.default .abstract>p:last-of-type{margin-bottom:0}#title-block-header.quarto-title-block.default .description .abstract-title,#title-block-header.quarto-title-block.default .abstract .abstract-title{margin-top:1em;text-transform:uppercase;font-size:.8em;opacity:.8;font-weight:400}#title-block-header.quarto-title-block.default .quarto-title-meta-author{display:grid;grid-template-columns:1fr 1fr}.quarto-title-tools-only{display:flex;justify-content:right}/*# sourceMappingURL=945575463e70190d99eb671cb8520afc.css.map */ diff --git a/pr-preview/pr-46/site_libs/bootstrap/bootstrap-icons.css b/pr-preview/pr-46/site_libs/bootstrap/bootstrap-icons.css new file mode 100644 index 00000000..94f19404 --- /dev/null +++ b/pr-preview/pr-46/site_libs/bootstrap/bootstrap-icons.css @@ -0,0 +1,2018 @@ +@font-face { + font-display: block; + font-family: "bootstrap-icons"; + src: +url("./bootstrap-icons.woff?2ab2cbbe07fcebb53bdaa7313bb290f2") format("woff"); +} + +.bi::before, +[class^="bi-"]::before, +[class*=" bi-"]::before { + display: inline-block; + font-family: bootstrap-icons !important; + font-style: normal; + font-weight: normal !important; + font-variant: normal; + text-transform: none; + line-height: 1; + vertical-align: -.125em; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.bi-123::before { content: "\f67f"; } +.bi-alarm-fill::before { content: "\f101"; } +.bi-alarm::before { content: "\f102"; } +.bi-align-bottom::before { content: "\f103"; } +.bi-align-center::before { content: "\f104"; } +.bi-align-end::before { content: "\f105"; } +.bi-align-middle::before { content: "\f106"; } +.bi-align-start::before { content: "\f107"; } +.bi-align-top::before { content: "\f108"; } +.bi-alt::before { content: "\f109"; } +.bi-app-indicator::before { content: "\f10a"; } +.bi-app::before { content: "\f10b"; } +.bi-archive-fill::before { content: "\f10c"; } +.bi-archive::before { content: "\f10d"; } +.bi-arrow-90deg-down::before { content: "\f10e"; } +.bi-arrow-90deg-left::before { content: "\f10f"; } +.bi-arrow-90deg-right::before { content: "\f110"; } +.bi-arrow-90deg-up::before { content: "\f111"; } +.bi-arrow-bar-down::before { content: "\f112"; } +.bi-arrow-bar-left::before { content: "\f113"; } +.bi-arrow-bar-right::before { content: "\f114"; } +.bi-arrow-bar-up::before { content: "\f115"; } +.bi-arrow-clockwise::before { content: "\f116"; } +.bi-arrow-counterclockwise::before { content: "\f117"; } +.bi-arrow-down-circle-fill::before { content: "\f118"; } +.bi-arrow-down-circle::before { content: "\f119"; } +.bi-arrow-down-left-circle-fill::before { content: "\f11a"; } +.bi-arrow-down-left-circle::before { content: "\f11b"; } +.bi-arrow-down-left-square-fill::before { content: "\f11c"; } +.bi-arrow-down-left-square::before { content: "\f11d"; } +.bi-arrow-down-left::before { content: "\f11e"; } +.bi-arrow-down-right-circle-fill::before { content: "\f11f"; } +.bi-arrow-down-right-circle::before { content: "\f120"; } +.bi-arrow-down-right-square-fill::before { content: "\f121"; } +.bi-arrow-down-right-square::before { content: "\f122"; } +.bi-arrow-down-right::before { content: "\f123"; } +.bi-arrow-down-short::before { content: "\f124"; } +.bi-arrow-down-square-fill::before { content: "\f125"; } +.bi-arrow-down-square::before { content: "\f126"; } +.bi-arrow-down-up::before { content: "\f127"; } +.bi-arrow-down::before { content: "\f128"; } +.bi-arrow-left-circle-fill::before { content: "\f129"; } +.bi-arrow-left-circle::before { content: "\f12a"; } +.bi-arrow-left-right::before { content: "\f12b"; } +.bi-arrow-left-short::before { content: "\f12c"; } +.bi-arrow-left-square-fill::before { content: "\f12d"; } +.bi-arrow-left-square::before { content: "\f12e"; } +.bi-arrow-left::before { content: "\f12f"; } +.bi-arrow-repeat::before { content: "\f130"; } +.bi-arrow-return-left::before { content: "\f131"; } +.bi-arrow-return-right::before { content: "\f132"; } +.bi-arrow-right-circle-fill::before { content: "\f133"; } +.bi-arrow-right-circle::before { content: "\f134"; } +.bi-arrow-right-short::before { content: "\f135"; } +.bi-arrow-right-square-fill::before { content: "\f136"; } +.bi-arrow-right-square::before { content: "\f137"; } +.bi-arrow-right::before { content: "\f138"; } +.bi-arrow-up-circle-fill::before { content: "\f139"; } +.bi-arrow-up-circle::before { content: "\f13a"; } +.bi-arrow-up-left-circle-fill::before { content: "\f13b"; } +.bi-arrow-up-left-circle::before { content: "\f13c"; } +.bi-arrow-up-left-square-fill::before { content: "\f13d"; } +.bi-arrow-up-left-square::before { content: "\f13e"; } +.bi-arrow-up-left::before { content: "\f13f"; } +.bi-arrow-up-right-circle-fill::before { content: "\f140"; } +.bi-arrow-up-right-circle::before { content: "\f141"; } +.bi-arrow-up-right-square-fill::before { content: "\f142"; } +.bi-arrow-up-right-square::before { content: "\f143"; } +.bi-arrow-up-right::before { content: "\f144"; } +.bi-arrow-up-short::before { content: "\f145"; } +.bi-arrow-up-square-fill::before { content: "\f146"; } +.bi-arrow-up-square::before { content: "\f147"; } +.bi-arrow-up::before { content: "\f148"; } +.bi-arrows-angle-contract::before { content: "\f149"; } +.bi-arrows-angle-expand::before { content: "\f14a"; } +.bi-arrows-collapse::before { content: "\f14b"; } +.bi-arrows-expand::before { content: "\f14c"; } +.bi-arrows-fullscreen::before { content: "\f14d"; } +.bi-arrows-move::before { content: "\f14e"; } +.bi-aspect-ratio-fill::before { content: "\f14f"; } +.bi-aspect-ratio::before { content: "\f150"; } +.bi-asterisk::before { content: "\f151"; } +.bi-at::before { content: "\f152"; } +.bi-award-fill::before { content: "\f153"; } +.bi-award::before { content: "\f154"; } +.bi-back::before { content: "\f155"; } +.bi-backspace-fill::before { content: "\f156"; } +.bi-backspace-reverse-fill::before { content: "\f157"; } +.bi-backspace-reverse::before { content: "\f158"; } +.bi-backspace::before { content: "\f159"; } +.bi-badge-3d-fill::before { content: "\f15a"; } +.bi-badge-3d::before { content: "\f15b"; } +.bi-badge-4k-fill::before { content: "\f15c"; } +.bi-badge-4k::before { content: "\f15d"; } +.bi-badge-8k-fill::before { content: "\f15e"; } +.bi-badge-8k::before { content: "\f15f"; } +.bi-badge-ad-fill::before { content: "\f160"; } +.bi-badge-ad::before { content: "\f161"; } +.bi-badge-ar-fill::before { content: "\f162"; } +.bi-badge-ar::before { content: "\f163"; } +.bi-badge-cc-fill::before { content: "\f164"; } +.bi-badge-cc::before { content: "\f165"; } +.bi-badge-hd-fill::before { content: "\f166"; } +.bi-badge-hd::before { content: "\f167"; } +.bi-badge-tm-fill::before { content: "\f168"; } +.bi-badge-tm::before { content: "\f169"; } +.bi-badge-vo-fill::before { content: "\f16a"; } +.bi-badge-vo::before { content: "\f16b"; } +.bi-badge-vr-fill::before { content: "\f16c"; } +.bi-badge-vr::before { content: "\f16d"; } +.bi-badge-wc-fill::before { content: "\f16e"; } +.bi-badge-wc::before { content: "\f16f"; } +.bi-bag-check-fill::before { content: "\f170"; } +.bi-bag-check::before { content: "\f171"; } +.bi-bag-dash-fill::before { content: "\f172"; } +.bi-bag-dash::before { content: "\f173"; } +.bi-bag-fill::before { content: "\f174"; } +.bi-bag-plus-fill::before { content: "\f175"; } +.bi-bag-plus::before { content: "\f176"; } +.bi-bag-x-fill::before { content: "\f177"; } +.bi-bag-x::before { content: "\f178"; } +.bi-bag::before { content: "\f179"; } +.bi-bar-chart-fill::before { content: "\f17a"; } +.bi-bar-chart-line-fill::before { content: "\f17b"; } +.bi-bar-chart-line::before { content: "\f17c"; } +.bi-bar-chart-steps::before { content: "\f17d"; } +.bi-bar-chart::before { content: "\f17e"; } +.bi-basket-fill::before { content: "\f17f"; } +.bi-basket::before { content: "\f180"; } +.bi-basket2-fill::before { content: "\f181"; } +.bi-basket2::before { content: "\f182"; } +.bi-basket3-fill::before { content: "\f183"; } +.bi-basket3::before { content: "\f184"; } +.bi-battery-charging::before { content: "\f185"; } +.bi-battery-full::before { content: "\f186"; } +.bi-battery-half::before { content: "\f187"; } +.bi-battery::before { content: "\f188"; } +.bi-bell-fill::before { content: "\f189"; } +.bi-bell::before { content: "\f18a"; } +.bi-bezier::before { content: "\f18b"; } +.bi-bezier2::before { content: "\f18c"; } +.bi-bicycle::before { content: "\f18d"; } +.bi-binoculars-fill::before { content: "\f18e"; } +.bi-binoculars::before { content: "\f18f"; } +.bi-blockquote-left::before { content: "\f190"; } +.bi-blockquote-right::before { content: "\f191"; } +.bi-book-fill::before { content: "\f192"; } +.bi-book-half::before { content: "\f193"; } +.bi-book::before { content: "\f194"; } +.bi-bookmark-check-fill::before { content: "\f195"; } +.bi-bookmark-check::before { content: "\f196"; } +.bi-bookmark-dash-fill::before { content: "\f197"; } +.bi-bookmark-dash::before { content: "\f198"; } +.bi-bookmark-fill::before { content: "\f199"; } +.bi-bookmark-heart-fill::before { content: "\f19a"; } +.bi-bookmark-heart::before { content: "\f19b"; } +.bi-bookmark-plus-fill::before { content: "\f19c"; } +.bi-bookmark-plus::before { content: "\f19d"; } +.bi-bookmark-star-fill::before { content: "\f19e"; } +.bi-bookmark-star::before { content: "\f19f"; } +.bi-bookmark-x-fill::before { content: "\f1a0"; } +.bi-bookmark-x::before { content: "\f1a1"; } +.bi-bookmark::before { content: "\f1a2"; } +.bi-bookmarks-fill::before { content: "\f1a3"; } +.bi-bookmarks::before { content: "\f1a4"; } +.bi-bookshelf::before { content: "\f1a5"; } +.bi-bootstrap-fill::before { content: "\f1a6"; } +.bi-bootstrap-reboot::before { content: "\f1a7"; } +.bi-bootstrap::before { content: "\f1a8"; } +.bi-border-all::before { content: "\f1a9"; } +.bi-border-bottom::before { content: "\f1aa"; } +.bi-border-center::before { content: "\f1ab"; } +.bi-border-inner::before { content: "\f1ac"; } +.bi-border-left::before { content: "\f1ad"; } +.bi-border-middle::before { content: "\f1ae"; } +.bi-border-outer::before { content: "\f1af"; } +.bi-border-right::before { content: "\f1b0"; } +.bi-border-style::before { content: "\f1b1"; } +.bi-border-top::before { content: "\f1b2"; } +.bi-border-width::before { content: "\f1b3"; } +.bi-border::before { content: "\f1b4"; } +.bi-bounding-box-circles::before { content: "\f1b5"; } +.bi-bounding-box::before { content: "\f1b6"; } +.bi-box-arrow-down-left::before { content: "\f1b7"; } +.bi-box-arrow-down-right::before { content: "\f1b8"; } +.bi-box-arrow-down::before { content: "\f1b9"; } +.bi-box-arrow-in-down-left::before { content: "\f1ba"; } +.bi-box-arrow-in-down-right::before { content: "\f1bb"; } +.bi-box-arrow-in-down::before { content: "\f1bc"; } +.bi-box-arrow-in-left::before { content: "\f1bd"; } +.bi-box-arrow-in-right::before { content: "\f1be"; } +.bi-box-arrow-in-up-left::before { content: "\f1bf"; } +.bi-box-arrow-in-up-right::before { content: "\f1c0"; } +.bi-box-arrow-in-up::before { content: "\f1c1"; } +.bi-box-arrow-left::before { content: "\f1c2"; } +.bi-box-arrow-right::before { content: "\f1c3"; } +.bi-box-arrow-up-left::before { content: "\f1c4"; } +.bi-box-arrow-up-right::before { content: "\f1c5"; } +.bi-box-arrow-up::before { content: "\f1c6"; } +.bi-box-seam::before { content: "\f1c7"; } +.bi-box::before { content: "\f1c8"; } +.bi-braces::before { content: "\f1c9"; } +.bi-bricks::before { content: "\f1ca"; } +.bi-briefcase-fill::before { content: "\f1cb"; } +.bi-briefcase::before { content: "\f1cc"; } +.bi-brightness-alt-high-fill::before { content: "\f1cd"; } +.bi-brightness-alt-high::before { content: "\f1ce"; } +.bi-brightness-alt-low-fill::before { content: "\f1cf"; } +.bi-brightness-alt-low::before { content: "\f1d0"; } +.bi-brightness-high-fill::before { content: "\f1d1"; } +.bi-brightness-high::before { content: "\f1d2"; } +.bi-brightness-low-fill::before { content: "\f1d3"; } +.bi-brightness-low::before { content: "\f1d4"; } +.bi-broadcast-pin::before { content: "\f1d5"; } +.bi-broadcast::before { content: "\f1d6"; } +.bi-brush-fill::before { content: "\f1d7"; } +.bi-brush::before { content: "\f1d8"; } +.bi-bucket-fill::before { content: "\f1d9"; } +.bi-bucket::before { content: "\f1da"; } +.bi-bug-fill::before { content: "\f1db"; } +.bi-bug::before { content: "\f1dc"; } +.bi-building::before { content: "\f1dd"; } +.bi-bullseye::before { content: "\f1de"; } +.bi-calculator-fill::before { content: "\f1df"; } +.bi-calculator::before { content: "\f1e0"; } +.bi-calendar-check-fill::before { content: "\f1e1"; } +.bi-calendar-check::before { content: "\f1e2"; } +.bi-calendar-date-fill::before { content: "\f1e3"; } +.bi-calendar-date::before { content: "\f1e4"; } +.bi-calendar-day-fill::before { content: "\f1e5"; } +.bi-calendar-day::before { content: "\f1e6"; } +.bi-calendar-event-fill::before { content: "\f1e7"; } +.bi-calendar-event::before { content: "\f1e8"; } +.bi-calendar-fill::before { content: "\f1e9"; } +.bi-calendar-minus-fill::before { content: "\f1ea"; } +.bi-calendar-minus::before { content: "\f1eb"; } +.bi-calendar-month-fill::before { content: "\f1ec"; } +.bi-calendar-month::before { content: "\f1ed"; } +.bi-calendar-plus-fill::before { content: "\f1ee"; } +.bi-calendar-plus::before { content: "\f1ef"; } +.bi-calendar-range-fill::before { content: "\f1f0"; } +.bi-calendar-range::before { content: "\f1f1"; } +.bi-calendar-week-fill::before { content: "\f1f2"; } +.bi-calendar-week::before { content: "\f1f3"; } +.bi-calendar-x-fill::before { content: "\f1f4"; } +.bi-calendar-x::before { content: "\f1f5"; } +.bi-calendar::before { content: "\f1f6"; } +.bi-calendar2-check-fill::before { content: "\f1f7"; } +.bi-calendar2-check::before { content: "\f1f8"; } +.bi-calendar2-date-fill::before { content: "\f1f9"; } +.bi-calendar2-date::before { content: "\f1fa"; } +.bi-calendar2-day-fill::before { content: "\f1fb"; } +.bi-calendar2-day::before { content: "\f1fc"; } +.bi-calendar2-event-fill::before { content: "\f1fd"; } +.bi-calendar2-event::before { content: "\f1fe"; } +.bi-calendar2-fill::before { content: "\f1ff"; } +.bi-calendar2-minus-fill::before { content: "\f200"; } +.bi-calendar2-minus::before { content: "\f201"; } +.bi-calendar2-month-fill::before { content: "\f202"; } +.bi-calendar2-month::before { content: "\f203"; } +.bi-calendar2-plus-fill::before { content: "\f204"; } +.bi-calendar2-plus::before { content: "\f205"; } +.bi-calendar2-range-fill::before { content: "\f206"; } +.bi-calendar2-range::before { content: "\f207"; } +.bi-calendar2-week-fill::before { content: "\f208"; } +.bi-calendar2-week::before { content: "\f209"; } +.bi-calendar2-x-fill::before { content: "\f20a"; } +.bi-calendar2-x::before { content: "\f20b"; } +.bi-calendar2::before { content: "\f20c"; } +.bi-calendar3-event-fill::before { content: "\f20d"; } +.bi-calendar3-event::before { content: "\f20e"; } +.bi-calendar3-fill::before { content: "\f20f"; } +.bi-calendar3-range-fill::before { content: "\f210"; } +.bi-calendar3-range::before { content: "\f211"; } +.bi-calendar3-week-fill::before { content: "\f212"; } +.bi-calendar3-week::before { content: "\f213"; } +.bi-calendar3::before { content: "\f214"; } +.bi-calendar4-event::before { content: "\f215"; } +.bi-calendar4-range::before { content: "\f216"; } +.bi-calendar4-week::before { content: "\f217"; } +.bi-calendar4::before { content: "\f218"; } +.bi-camera-fill::before { content: "\f219"; } +.bi-camera-reels-fill::before { content: "\f21a"; } +.bi-camera-reels::before { content: "\f21b"; } +.bi-camera-video-fill::before { content: "\f21c"; } +.bi-camera-video-off-fill::before { content: "\f21d"; } +.bi-camera-video-off::before { content: "\f21e"; } +.bi-camera-video::before { content: "\f21f"; } +.bi-camera::before { content: "\f220"; } +.bi-camera2::before { content: "\f221"; } +.bi-capslock-fill::before { content: "\f222"; } +.bi-capslock::before { content: "\f223"; } +.bi-card-checklist::before { content: "\f224"; } +.bi-card-heading::before { content: "\f225"; } +.bi-card-image::before { content: "\f226"; } +.bi-card-list::before { content: "\f227"; } +.bi-card-text::before { content: "\f228"; } +.bi-caret-down-fill::before { content: "\f229"; } +.bi-caret-down-square-fill::before { content: "\f22a"; } +.bi-caret-down-square::before { content: "\f22b"; } +.bi-caret-down::before { content: "\f22c"; } +.bi-caret-left-fill::before { content: "\f22d"; } +.bi-caret-left-square-fill::before { content: "\f22e"; } +.bi-caret-left-square::before { content: "\f22f"; } +.bi-caret-left::before { content: "\f230"; } +.bi-caret-right-fill::before { content: "\f231"; } +.bi-caret-right-square-fill::before { content: "\f232"; } +.bi-caret-right-square::before { content: "\f233"; } +.bi-caret-right::before { content: "\f234"; } +.bi-caret-up-fill::before { content: "\f235"; } +.bi-caret-up-square-fill::before { content: "\f236"; } +.bi-caret-up-square::before { content: "\f237"; } +.bi-caret-up::before { content: "\f238"; } +.bi-cart-check-fill::before { content: "\f239"; } +.bi-cart-check::before { content: "\f23a"; } +.bi-cart-dash-fill::before { content: "\f23b"; } +.bi-cart-dash::before { content: "\f23c"; } +.bi-cart-fill::before { content: "\f23d"; } +.bi-cart-plus-fill::before { content: "\f23e"; } +.bi-cart-plus::before { content: "\f23f"; } +.bi-cart-x-fill::before { content: "\f240"; } +.bi-cart-x::before { content: "\f241"; } +.bi-cart::before { content: "\f242"; } +.bi-cart2::before { content: "\f243"; } +.bi-cart3::before { content: "\f244"; } +.bi-cart4::before { content: "\f245"; } +.bi-cash-stack::before { content: "\f246"; } +.bi-cash::before { content: "\f247"; } +.bi-cast::before { content: "\f248"; } +.bi-chat-dots-fill::before { content: "\f249"; } +.bi-chat-dots::before { content: "\f24a"; } +.bi-chat-fill::before { content: "\f24b"; } +.bi-chat-left-dots-fill::before { content: "\f24c"; } +.bi-chat-left-dots::before { content: "\f24d"; } +.bi-chat-left-fill::before { content: "\f24e"; } +.bi-chat-left-quote-fill::before { content: "\f24f"; } +.bi-chat-left-quote::before { content: "\f250"; } +.bi-chat-left-text-fill::before { content: "\f251"; } +.bi-chat-left-text::before { content: "\f252"; } +.bi-chat-left::before { content: "\f253"; } +.bi-chat-quote-fill::before { content: "\f254"; } +.bi-chat-quote::before { content: "\f255"; } +.bi-chat-right-dots-fill::before { content: "\f256"; } +.bi-chat-right-dots::before { content: "\f257"; } +.bi-chat-right-fill::before { content: "\f258"; } +.bi-chat-right-quote-fill::before { content: "\f259"; } +.bi-chat-right-quote::before { content: "\f25a"; } +.bi-chat-right-text-fill::before { content: "\f25b"; } +.bi-chat-right-text::before { content: "\f25c"; } +.bi-chat-right::before { content: "\f25d"; } +.bi-chat-square-dots-fill::before { content: "\f25e"; } +.bi-chat-square-dots::before { content: "\f25f"; } +.bi-chat-square-fill::before { content: "\f260"; } +.bi-chat-square-quote-fill::before { content: "\f261"; } +.bi-chat-square-quote::before { content: "\f262"; } +.bi-chat-square-text-fill::before { content: "\f263"; } +.bi-chat-square-text::before { content: "\f264"; } +.bi-chat-square::before { content: "\f265"; } +.bi-chat-text-fill::before { content: "\f266"; } +.bi-chat-text::before { content: "\f267"; } +.bi-chat::before { content: "\f268"; } +.bi-check-all::before { content: "\f269"; } +.bi-check-circle-fill::before { content: "\f26a"; } +.bi-check-circle::before { content: "\f26b"; } +.bi-check-square-fill::before { content: "\f26c"; } +.bi-check-square::before { content: "\f26d"; } +.bi-check::before { content: "\f26e"; } +.bi-check2-all::before { content: "\f26f"; } +.bi-check2-circle::before { content: "\f270"; } +.bi-check2-square::before { content: "\f271"; } +.bi-check2::before { content: "\f272"; } +.bi-chevron-bar-contract::before { content: "\f273"; } +.bi-chevron-bar-down::before { content: "\f274"; } +.bi-chevron-bar-expand::before { content: "\f275"; } +.bi-chevron-bar-left::before { content: "\f276"; } +.bi-chevron-bar-right::before { content: "\f277"; } +.bi-chevron-bar-up::before { content: "\f278"; } +.bi-chevron-compact-down::before { content: "\f279"; } +.bi-chevron-compact-left::before { content: "\f27a"; } +.bi-chevron-compact-right::before { content: "\f27b"; } +.bi-chevron-compact-up::before { content: "\f27c"; } +.bi-chevron-contract::before { content: "\f27d"; } +.bi-chevron-double-down::before { content: "\f27e"; } +.bi-chevron-double-left::before { content: "\f27f"; } +.bi-chevron-double-right::before { content: "\f280"; } +.bi-chevron-double-up::before { content: "\f281"; } +.bi-chevron-down::before { content: "\f282"; } +.bi-chevron-expand::before { content: "\f283"; } +.bi-chevron-left::before { content: "\f284"; } +.bi-chevron-right::before { content: "\f285"; } +.bi-chevron-up::before { content: "\f286"; } +.bi-circle-fill::before { content: "\f287"; } +.bi-circle-half::before { content: "\f288"; } +.bi-circle-square::before { content: "\f289"; } +.bi-circle::before { content: "\f28a"; } +.bi-clipboard-check::before { content: "\f28b"; } +.bi-clipboard-data::before { content: "\f28c"; } +.bi-clipboard-minus::before { content: "\f28d"; } +.bi-clipboard-plus::before { content: "\f28e"; } +.bi-clipboard-x::before { content: "\f28f"; } +.bi-clipboard::before { content: "\f290"; } +.bi-clock-fill::before { content: "\f291"; } +.bi-clock-history::before { content: "\f292"; } +.bi-clock::before { content: "\f293"; } +.bi-cloud-arrow-down-fill::before { content: "\f294"; } +.bi-cloud-arrow-down::before { content: "\f295"; } +.bi-cloud-arrow-up-fill::before { content: "\f296"; } +.bi-cloud-arrow-up::before { content: "\f297"; } +.bi-cloud-check-fill::before { content: "\f298"; } +.bi-cloud-check::before { content: "\f299"; } +.bi-cloud-download-fill::before { content: "\f29a"; } +.bi-cloud-download::before { content: "\f29b"; } +.bi-cloud-drizzle-fill::before { content: "\f29c"; } +.bi-cloud-drizzle::before { content: "\f29d"; } +.bi-cloud-fill::before { content: "\f29e"; } +.bi-cloud-fog-fill::before { content: "\f29f"; } +.bi-cloud-fog::before { content: "\f2a0"; } +.bi-cloud-fog2-fill::before { content: "\f2a1"; } +.bi-cloud-fog2::before { content: "\f2a2"; } +.bi-cloud-hail-fill::before { content: "\f2a3"; } +.bi-cloud-hail::before { content: "\f2a4"; } +.bi-cloud-haze-1::before { content: "\f2a5"; } +.bi-cloud-haze-fill::before { content: "\f2a6"; } +.bi-cloud-haze::before { content: "\f2a7"; } +.bi-cloud-haze2-fill::before { content: "\f2a8"; } +.bi-cloud-lightning-fill::before { content: "\f2a9"; } +.bi-cloud-lightning-rain-fill::before { content: "\f2aa"; } +.bi-cloud-lightning-rain::before { content: "\f2ab"; } +.bi-cloud-lightning::before { content: "\f2ac"; } +.bi-cloud-minus-fill::before { content: "\f2ad"; } +.bi-cloud-minus::before { content: "\f2ae"; } +.bi-cloud-moon-fill::before { content: "\f2af"; } +.bi-cloud-moon::before { content: "\f2b0"; } +.bi-cloud-plus-fill::before { content: "\f2b1"; } +.bi-cloud-plus::before { content: "\f2b2"; } +.bi-cloud-rain-fill::before { content: "\f2b3"; } +.bi-cloud-rain-heavy-fill::before { content: "\f2b4"; } +.bi-cloud-rain-heavy::before { content: "\f2b5"; } +.bi-cloud-rain::before { content: "\f2b6"; } +.bi-cloud-slash-fill::before { content: "\f2b7"; } +.bi-cloud-slash::before { content: "\f2b8"; } +.bi-cloud-sleet-fill::before { content: "\f2b9"; } +.bi-cloud-sleet::before { content: "\f2ba"; } +.bi-cloud-snow-fill::before { content: "\f2bb"; } +.bi-cloud-snow::before { content: "\f2bc"; } +.bi-cloud-sun-fill::before { content: "\f2bd"; } +.bi-cloud-sun::before { content: "\f2be"; } +.bi-cloud-upload-fill::before { content: "\f2bf"; } +.bi-cloud-upload::before { content: "\f2c0"; } +.bi-cloud::before { content: "\f2c1"; } +.bi-clouds-fill::before { content: "\f2c2"; } +.bi-clouds::before { content: "\f2c3"; } +.bi-cloudy-fill::before { content: "\f2c4"; } +.bi-cloudy::before { content: "\f2c5"; } +.bi-code-slash::before { content: "\f2c6"; } +.bi-code-square::before { content: "\f2c7"; } +.bi-code::before { content: "\f2c8"; } +.bi-collection-fill::before { content: "\f2c9"; } +.bi-collection-play-fill::before { content: "\f2ca"; } +.bi-collection-play::before { content: "\f2cb"; } +.bi-collection::before { content: "\f2cc"; } +.bi-columns-gap::before { content: "\f2cd"; } +.bi-columns::before { content: "\f2ce"; } +.bi-command::before { content: "\f2cf"; } +.bi-compass-fill::before { content: "\f2d0"; } +.bi-compass::before { content: "\f2d1"; } +.bi-cone-striped::before { content: "\f2d2"; } +.bi-cone::before { content: "\f2d3"; } +.bi-controller::before { content: "\f2d4"; } +.bi-cpu-fill::before { content: "\f2d5"; } +.bi-cpu::before { content: "\f2d6"; } +.bi-credit-card-2-back-fill::before { content: "\f2d7"; } +.bi-credit-card-2-back::before { content: "\f2d8"; } +.bi-credit-card-2-front-fill::before { content: "\f2d9"; } +.bi-credit-card-2-front::before { content: "\f2da"; } +.bi-credit-card-fill::before { content: "\f2db"; } +.bi-credit-card::before { content: "\f2dc"; } +.bi-crop::before { content: "\f2dd"; } +.bi-cup-fill::before { content: "\f2de"; } +.bi-cup-straw::before { content: "\f2df"; } +.bi-cup::before { content: "\f2e0"; } +.bi-cursor-fill::before { content: "\f2e1"; } +.bi-cursor-text::before { content: "\f2e2"; } +.bi-cursor::before { content: "\f2e3"; } +.bi-dash-circle-dotted::before { content: "\f2e4"; } +.bi-dash-circle-fill::before { content: "\f2e5"; } +.bi-dash-circle::before { content: "\f2e6"; } +.bi-dash-square-dotted::before { content: "\f2e7"; } +.bi-dash-square-fill::before { content: "\f2e8"; } +.bi-dash-square::before { content: "\f2e9"; } +.bi-dash::before { content: "\f2ea"; } +.bi-diagram-2-fill::before { content: "\f2eb"; } +.bi-diagram-2::before { content: "\f2ec"; } +.bi-diagram-3-fill::before { content: "\f2ed"; } +.bi-diagram-3::before { content: "\f2ee"; } +.bi-diamond-fill::before { content: "\f2ef"; } +.bi-diamond-half::before { content: "\f2f0"; } +.bi-diamond::before { content: "\f2f1"; } +.bi-dice-1-fill::before { content: "\f2f2"; } +.bi-dice-1::before { content: "\f2f3"; } +.bi-dice-2-fill::before { content: "\f2f4"; } +.bi-dice-2::before { content: "\f2f5"; } +.bi-dice-3-fill::before { content: "\f2f6"; } +.bi-dice-3::before { content: "\f2f7"; } +.bi-dice-4-fill::before { content: "\f2f8"; } +.bi-dice-4::before { content: "\f2f9"; } +.bi-dice-5-fill::before { content: "\f2fa"; } +.bi-dice-5::before { content: "\f2fb"; } +.bi-dice-6-fill::before { content: "\f2fc"; } +.bi-dice-6::before { content: "\f2fd"; } +.bi-disc-fill::before { content: "\f2fe"; } +.bi-disc::before { content: "\f2ff"; } +.bi-discord::before { content: "\f300"; } +.bi-display-fill::before { content: "\f301"; } +.bi-display::before { content: "\f302"; } +.bi-distribute-horizontal::before { content: "\f303"; } +.bi-distribute-vertical::before { content: "\f304"; } +.bi-door-closed-fill::before { content: "\f305"; } +.bi-door-closed::before { content: "\f306"; } +.bi-door-open-fill::before { content: "\f307"; } +.bi-door-open::before { content: "\f308"; } +.bi-dot::before { content: "\f309"; } +.bi-download::before { content: "\f30a"; } +.bi-droplet-fill::before { content: "\f30b"; } +.bi-droplet-half::before { content: "\f30c"; } +.bi-droplet::before { content: "\f30d"; } +.bi-earbuds::before { content: "\f30e"; } +.bi-easel-fill::before { content: "\f30f"; } +.bi-easel::before { content: "\f310"; } +.bi-egg-fill::before { content: "\f311"; } +.bi-egg-fried::before { content: "\f312"; } +.bi-egg::before { content: "\f313"; } +.bi-eject-fill::before { content: "\f314"; } +.bi-eject::before { content: "\f315"; } +.bi-emoji-angry-fill::before { content: "\f316"; } +.bi-emoji-angry::before { content: "\f317"; } +.bi-emoji-dizzy-fill::before { content: "\f318"; } +.bi-emoji-dizzy::before { content: "\f319"; } +.bi-emoji-expressionless-fill::before { content: "\f31a"; } +.bi-emoji-expressionless::before { content: "\f31b"; } +.bi-emoji-frown-fill::before { content: "\f31c"; } +.bi-emoji-frown::before { content: "\f31d"; } +.bi-emoji-heart-eyes-fill::before { content: "\f31e"; } +.bi-emoji-heart-eyes::before { content: "\f31f"; } +.bi-emoji-laughing-fill::before { content: "\f320"; } +.bi-emoji-laughing::before { content: "\f321"; } +.bi-emoji-neutral-fill::before { content: "\f322"; } +.bi-emoji-neutral::before { content: "\f323"; } +.bi-emoji-smile-fill::before { content: "\f324"; } +.bi-emoji-smile-upside-down-fill::before { content: "\f325"; } +.bi-emoji-smile-upside-down::before { content: "\f326"; } +.bi-emoji-smile::before { content: "\f327"; } +.bi-emoji-sunglasses-fill::before { content: "\f328"; } +.bi-emoji-sunglasses::before { content: "\f329"; } +.bi-emoji-wink-fill::before { content: "\f32a"; } +.bi-emoji-wink::before { content: "\f32b"; } +.bi-envelope-fill::before { content: "\f32c"; } +.bi-envelope-open-fill::before { content: "\f32d"; } +.bi-envelope-open::before { content: "\f32e"; } +.bi-envelope::before { content: "\f32f"; } +.bi-eraser-fill::before { content: "\f330"; } +.bi-eraser::before { content: "\f331"; } +.bi-exclamation-circle-fill::before { content: "\f332"; } +.bi-exclamation-circle::before { content: "\f333"; } +.bi-exclamation-diamond-fill::before { content: "\f334"; } +.bi-exclamation-diamond::before { content: "\f335"; } +.bi-exclamation-octagon-fill::before { content: "\f336"; } +.bi-exclamation-octagon::before { content: "\f337"; } +.bi-exclamation-square-fill::before { content: "\f338"; } +.bi-exclamation-square::before { content: "\f339"; } +.bi-exclamation-triangle-fill::before { content: "\f33a"; } +.bi-exclamation-triangle::before { content: "\f33b"; } +.bi-exclamation::before { content: "\f33c"; } +.bi-exclude::before { content: "\f33d"; } +.bi-eye-fill::before { content: "\f33e"; } +.bi-eye-slash-fill::before { content: "\f33f"; } +.bi-eye-slash::before { content: "\f340"; } +.bi-eye::before { content: "\f341"; } +.bi-eyedropper::before { content: "\f342"; } +.bi-eyeglasses::before { content: "\f343"; } +.bi-facebook::before { content: "\f344"; } +.bi-file-arrow-down-fill::before { content: "\f345"; } +.bi-file-arrow-down::before { content: "\f346"; } +.bi-file-arrow-up-fill::before { content: "\f347"; } +.bi-file-arrow-up::before { content: "\f348"; } +.bi-file-bar-graph-fill::before { content: "\f349"; } +.bi-file-bar-graph::before { content: "\f34a"; } +.bi-file-binary-fill::before { content: "\f34b"; } +.bi-file-binary::before { content: "\f34c"; } +.bi-file-break-fill::before { content: "\f34d"; } +.bi-file-break::before { content: "\f34e"; } +.bi-file-check-fill::before { content: "\f34f"; } +.bi-file-check::before { content: "\f350"; } +.bi-file-code-fill::before { content: "\f351"; } +.bi-file-code::before { content: "\f352"; } +.bi-file-diff-fill::before { content: "\f353"; } +.bi-file-diff::before { content: "\f354"; } +.bi-file-earmark-arrow-down-fill::before { content: "\f355"; } +.bi-file-earmark-arrow-down::before { content: "\f356"; } +.bi-file-earmark-arrow-up-fill::before { content: "\f357"; } +.bi-file-earmark-arrow-up::before { content: "\f358"; } +.bi-file-earmark-bar-graph-fill::before { content: "\f359"; } +.bi-file-earmark-bar-graph::before { content: "\f35a"; } +.bi-file-earmark-binary-fill::before { content: "\f35b"; } +.bi-file-earmark-binary::before { content: "\f35c"; } +.bi-file-earmark-break-fill::before { content: "\f35d"; } +.bi-file-earmark-break::before { content: "\f35e"; } +.bi-file-earmark-check-fill::before { content: "\f35f"; } +.bi-file-earmark-check::before { content: "\f360"; } +.bi-file-earmark-code-fill::before { content: "\f361"; } +.bi-file-earmark-code::before { content: "\f362"; } +.bi-file-earmark-diff-fill::before { content: "\f363"; } +.bi-file-earmark-diff::before { content: "\f364"; } +.bi-file-earmark-easel-fill::before { content: "\f365"; } +.bi-file-earmark-easel::before { content: "\f366"; } +.bi-file-earmark-excel-fill::before { content: "\f367"; } +.bi-file-earmark-excel::before { content: "\f368"; } +.bi-file-earmark-fill::before { content: "\f369"; } +.bi-file-earmark-font-fill::before { content: "\f36a"; } +.bi-file-earmark-font::before { content: "\f36b"; } +.bi-file-earmark-image-fill::before { content: "\f36c"; } +.bi-file-earmark-image::before { content: "\f36d"; } +.bi-file-earmark-lock-fill::before { content: "\f36e"; } +.bi-file-earmark-lock::before { content: "\f36f"; } +.bi-file-earmark-lock2-fill::before { content: "\f370"; } +.bi-file-earmark-lock2::before { content: "\f371"; } +.bi-file-earmark-medical-fill::before { content: "\f372"; } +.bi-file-earmark-medical::before { content: "\f373"; } +.bi-file-earmark-minus-fill::before { content: "\f374"; } +.bi-file-earmark-minus::before { content: "\f375"; } +.bi-file-earmark-music-fill::before { content: "\f376"; } +.bi-file-earmark-music::before { content: "\f377"; } +.bi-file-earmark-person-fill::before { content: "\f378"; } +.bi-file-earmark-person::before { content: "\f379"; } +.bi-file-earmark-play-fill::before { content: "\f37a"; } +.bi-file-earmark-play::before { content: "\f37b"; } +.bi-file-earmark-plus-fill::before { content: "\f37c"; } +.bi-file-earmark-plus::before { content: "\f37d"; } +.bi-file-earmark-post-fill::before { content: "\f37e"; } +.bi-file-earmark-post::before { content: "\f37f"; } +.bi-file-earmark-ppt-fill::before { content: "\f380"; } +.bi-file-earmark-ppt::before { content: "\f381"; } +.bi-file-earmark-richtext-fill::before { content: "\f382"; } +.bi-file-earmark-richtext::before { content: "\f383"; } +.bi-file-earmark-ruled-fill::before { content: "\f384"; } +.bi-file-earmark-ruled::before { content: "\f385"; } +.bi-file-earmark-slides-fill::before { content: "\f386"; } +.bi-file-earmark-slides::before { content: "\f387"; } +.bi-file-earmark-spreadsheet-fill::before { content: "\f388"; } +.bi-file-earmark-spreadsheet::before { content: "\f389"; } +.bi-file-earmark-text-fill::before { content: "\f38a"; } +.bi-file-earmark-text::before { content: "\f38b"; } +.bi-file-earmark-word-fill::before { content: "\f38c"; } +.bi-file-earmark-word::before { content: "\f38d"; } +.bi-file-earmark-x-fill::before { content: "\f38e"; } +.bi-file-earmark-x::before { content: "\f38f"; } +.bi-file-earmark-zip-fill::before { content: "\f390"; } +.bi-file-earmark-zip::before { content: "\f391"; } +.bi-file-earmark::before { content: "\f392"; } +.bi-file-easel-fill::before { content: "\f393"; } +.bi-file-easel::before { content: "\f394"; } +.bi-file-excel-fill::before { content: "\f395"; } +.bi-file-excel::before { content: "\f396"; } +.bi-file-fill::before { content: "\f397"; } +.bi-file-font-fill::before { content: "\f398"; } +.bi-file-font::before { content: "\f399"; } +.bi-file-image-fill::before { content: "\f39a"; } +.bi-file-image::before { content: "\f39b"; } +.bi-file-lock-fill::before { content: "\f39c"; } +.bi-file-lock::before { content: "\f39d"; } +.bi-file-lock2-fill::before { content: "\f39e"; } +.bi-file-lock2::before { content: "\f39f"; } +.bi-file-medical-fill::before { content: "\f3a0"; } +.bi-file-medical::before { content: "\f3a1"; } +.bi-file-minus-fill::before { content: "\f3a2"; } +.bi-file-minus::before { content: "\f3a3"; } +.bi-file-music-fill::before { content: "\f3a4"; } +.bi-file-music::before { content: "\f3a5"; } +.bi-file-person-fill::before { content: "\f3a6"; } +.bi-file-person::before { content: "\f3a7"; } +.bi-file-play-fill::before { content: "\f3a8"; } +.bi-file-play::before { content: "\f3a9"; } +.bi-file-plus-fill::before { content: "\f3aa"; } +.bi-file-plus::before { content: "\f3ab"; } +.bi-file-post-fill::before { content: "\f3ac"; } +.bi-file-post::before { content: "\f3ad"; } +.bi-file-ppt-fill::before { content: "\f3ae"; } +.bi-file-ppt::before { content: "\f3af"; } +.bi-file-richtext-fill::before { content: "\f3b0"; } +.bi-file-richtext::before { content: "\f3b1"; } +.bi-file-ruled-fill::before { content: "\f3b2"; } +.bi-file-ruled::before { content: "\f3b3"; } +.bi-file-slides-fill::before { content: "\f3b4"; } +.bi-file-slides::before { content: "\f3b5"; } +.bi-file-spreadsheet-fill::before { content: "\f3b6"; } +.bi-file-spreadsheet::before { content: "\f3b7"; } +.bi-file-text-fill::before { content: "\f3b8"; } +.bi-file-text::before { content: "\f3b9"; } +.bi-file-word-fill::before { content: "\f3ba"; } +.bi-file-word::before { content: "\f3bb"; } +.bi-file-x-fill::before { content: "\f3bc"; } +.bi-file-x::before { content: "\f3bd"; } +.bi-file-zip-fill::before { content: "\f3be"; } +.bi-file-zip::before { content: "\f3bf"; } +.bi-file::before { content: "\f3c0"; } +.bi-files-alt::before { content: "\f3c1"; } +.bi-files::before { content: "\f3c2"; } +.bi-film::before { content: "\f3c3"; } +.bi-filter-circle-fill::before { content: "\f3c4"; } +.bi-filter-circle::before { content: "\f3c5"; } +.bi-filter-left::before { content: "\f3c6"; } +.bi-filter-right::before { content: "\f3c7"; } +.bi-filter-square-fill::before { content: "\f3c8"; } +.bi-filter-square::before { content: "\f3c9"; } +.bi-filter::before { content: "\f3ca"; } +.bi-flag-fill::before { content: "\f3cb"; } +.bi-flag::before { content: "\f3cc"; } +.bi-flower1::before { content: "\f3cd"; } +.bi-flower2::before { content: "\f3ce"; } +.bi-flower3::before { content: "\f3cf"; } +.bi-folder-check::before { content: "\f3d0"; } +.bi-folder-fill::before { content: "\f3d1"; } +.bi-folder-minus::before { content: "\f3d2"; } +.bi-folder-plus::before { content: "\f3d3"; } +.bi-folder-symlink-fill::before { content: "\f3d4"; } +.bi-folder-symlink::before { content: "\f3d5"; } +.bi-folder-x::before { content: "\f3d6"; } +.bi-folder::before { content: "\f3d7"; } +.bi-folder2-open::before { content: "\f3d8"; } +.bi-folder2::before { content: "\f3d9"; } +.bi-fonts::before { content: "\f3da"; } +.bi-forward-fill::before { content: "\f3db"; } +.bi-forward::before { content: "\f3dc"; } +.bi-front::before { content: "\f3dd"; } +.bi-fullscreen-exit::before { content: "\f3de"; } +.bi-fullscreen::before { content: "\f3df"; } +.bi-funnel-fill::before { content: "\f3e0"; } +.bi-funnel::before { content: "\f3e1"; } +.bi-gear-fill::before { content: "\f3e2"; } +.bi-gear-wide-connected::before { content: "\f3e3"; } +.bi-gear-wide::before { content: "\f3e4"; } +.bi-gear::before { content: "\f3e5"; } +.bi-gem::before { content: "\f3e6"; } +.bi-geo-alt-fill::before { content: "\f3e7"; } +.bi-geo-alt::before { content: "\f3e8"; } +.bi-geo-fill::before { content: "\f3e9"; } +.bi-geo::before { content: "\f3ea"; } +.bi-gift-fill::before { content: "\f3eb"; } +.bi-gift::before { content: "\f3ec"; } +.bi-github::before { content: "\f3ed"; } +.bi-globe::before { content: "\f3ee"; } +.bi-globe2::before { content: "\f3ef"; } +.bi-google::before { content: "\f3f0"; } +.bi-graph-down::before { content: "\f3f1"; } +.bi-graph-up::before { content: "\f3f2"; } +.bi-grid-1x2-fill::before { content: "\f3f3"; } +.bi-grid-1x2::before { content: "\f3f4"; } +.bi-grid-3x2-gap-fill::before { content: "\f3f5"; } +.bi-grid-3x2-gap::before { content: "\f3f6"; } +.bi-grid-3x2::before { content: "\f3f7"; } +.bi-grid-3x3-gap-fill::before { content: "\f3f8"; } +.bi-grid-3x3-gap::before { content: "\f3f9"; } +.bi-grid-3x3::before { content: "\f3fa"; } +.bi-grid-fill::before { content: "\f3fb"; } +.bi-grid::before { content: "\f3fc"; } +.bi-grip-horizontal::before { content: "\f3fd"; } +.bi-grip-vertical::before { content: "\f3fe"; } +.bi-hammer::before { content: "\f3ff"; } +.bi-hand-index-fill::before { content: "\f400"; } +.bi-hand-index-thumb-fill::before { content: "\f401"; } +.bi-hand-index-thumb::before { content: "\f402"; } +.bi-hand-index::before { content: "\f403"; } +.bi-hand-thumbs-down-fill::before { content: "\f404"; } +.bi-hand-thumbs-down::before { content: "\f405"; } +.bi-hand-thumbs-up-fill::before { content: "\f406"; } +.bi-hand-thumbs-up::before { content: "\f407"; } +.bi-handbag-fill::before { content: "\f408"; } +.bi-handbag::before { content: "\f409"; } +.bi-hash::before { content: "\f40a"; } +.bi-hdd-fill::before { content: "\f40b"; } +.bi-hdd-network-fill::before { content: "\f40c"; } +.bi-hdd-network::before { content: "\f40d"; } +.bi-hdd-rack-fill::before { content: "\f40e"; } +.bi-hdd-rack::before { content: "\f40f"; } +.bi-hdd-stack-fill::before { content: "\f410"; } +.bi-hdd-stack::before { content: "\f411"; } +.bi-hdd::before { content: "\f412"; } +.bi-headphones::before { content: "\f413"; } +.bi-headset::before { content: "\f414"; } +.bi-heart-fill::before { content: "\f415"; } +.bi-heart-half::before { content: "\f416"; } +.bi-heart::before { content: "\f417"; } +.bi-heptagon-fill::before { content: "\f418"; } +.bi-heptagon-half::before { content: "\f419"; } +.bi-heptagon::before { content: "\f41a"; } +.bi-hexagon-fill::before { content: "\f41b"; } +.bi-hexagon-half::before { content: "\f41c"; } +.bi-hexagon::before { content: "\f41d"; } +.bi-hourglass-bottom::before { content: "\f41e"; } +.bi-hourglass-split::before { content: "\f41f"; } +.bi-hourglass-top::before { content: "\f420"; } +.bi-hourglass::before { content: "\f421"; } +.bi-house-door-fill::before { content: "\f422"; } +.bi-house-door::before { content: "\f423"; } +.bi-house-fill::before { content: "\f424"; } +.bi-house::before { content: "\f425"; } +.bi-hr::before { content: "\f426"; } +.bi-hurricane::before { content: "\f427"; } +.bi-image-alt::before { content: "\f428"; } +.bi-image-fill::before { content: "\f429"; } +.bi-image::before { content: "\f42a"; } +.bi-images::before { content: "\f42b"; } +.bi-inbox-fill::before { content: "\f42c"; } +.bi-inbox::before { content: "\f42d"; } +.bi-inboxes-fill::before { content: "\f42e"; } +.bi-inboxes::before { content: "\f42f"; } +.bi-info-circle-fill::before { content: "\f430"; } +.bi-info-circle::before { content: "\f431"; } +.bi-info-square-fill::before { content: "\f432"; } +.bi-info-square::before { content: "\f433"; } +.bi-info::before { content: "\f434"; } +.bi-input-cursor-text::before { content: "\f435"; } +.bi-input-cursor::before { content: "\f436"; } +.bi-instagram::before { content: "\f437"; } +.bi-intersect::before { content: "\f438"; } +.bi-journal-album::before { content: "\f439"; } +.bi-journal-arrow-down::before { content: "\f43a"; } +.bi-journal-arrow-up::before { content: "\f43b"; } +.bi-journal-bookmark-fill::before { content: "\f43c"; } +.bi-journal-bookmark::before { content: "\f43d"; } +.bi-journal-check::before { content: "\f43e"; } +.bi-journal-code::before { content: "\f43f"; } +.bi-journal-medical::before { content: "\f440"; } +.bi-journal-minus::before { content: "\f441"; } +.bi-journal-plus::before { content: "\f442"; } +.bi-journal-richtext::before { content: "\f443"; } +.bi-journal-text::before { content: "\f444"; } +.bi-journal-x::before { content: "\f445"; } +.bi-journal::before { content: "\f446"; } +.bi-journals::before { content: "\f447"; } +.bi-joystick::before { content: "\f448"; } +.bi-justify-left::before { content: "\f449"; } +.bi-justify-right::before { content: "\f44a"; } +.bi-justify::before { content: "\f44b"; } +.bi-kanban-fill::before { content: "\f44c"; } +.bi-kanban::before { content: "\f44d"; } +.bi-key-fill::before { content: "\f44e"; } +.bi-key::before { content: "\f44f"; } +.bi-keyboard-fill::before { content: "\f450"; } +.bi-keyboard::before { content: "\f451"; } +.bi-ladder::before { content: "\f452"; } +.bi-lamp-fill::before { content: "\f453"; } +.bi-lamp::before { content: "\f454"; } +.bi-laptop-fill::before { content: "\f455"; } +.bi-laptop::before { content: "\f456"; } +.bi-layer-backward::before { content: "\f457"; } +.bi-layer-forward::before { content: "\f458"; } +.bi-layers-fill::before { content: "\f459"; } +.bi-layers-half::before { content: "\f45a"; } +.bi-layers::before { content: "\f45b"; } +.bi-layout-sidebar-inset-reverse::before { content: "\f45c"; } +.bi-layout-sidebar-inset::before { content: "\f45d"; } +.bi-layout-sidebar-reverse::before { content: "\f45e"; } +.bi-layout-sidebar::before { content: "\f45f"; } +.bi-layout-split::before { content: "\f460"; } +.bi-layout-text-sidebar-reverse::before { content: "\f461"; } +.bi-layout-text-sidebar::before { content: "\f462"; } +.bi-layout-text-window-reverse::before { content: "\f463"; } +.bi-layout-text-window::before { content: "\f464"; } +.bi-layout-three-columns::before { content: "\f465"; } +.bi-layout-wtf::before { content: "\f466"; } +.bi-life-preserver::before { content: "\f467"; } +.bi-lightbulb-fill::before { content: "\f468"; } +.bi-lightbulb-off-fill::before { content: "\f469"; } +.bi-lightbulb-off::before { content: "\f46a"; } +.bi-lightbulb::before { content: "\f46b"; } +.bi-lightning-charge-fill::before { content: "\f46c"; } +.bi-lightning-charge::before { content: "\f46d"; } +.bi-lightning-fill::before { content: "\f46e"; } +.bi-lightning::before { content: "\f46f"; } +.bi-link-45deg::before { content: "\f470"; } +.bi-link::before { content: "\f471"; } +.bi-linkedin::before { content: "\f472"; } +.bi-list-check::before { content: "\f473"; } +.bi-list-nested::before { content: "\f474"; } +.bi-list-ol::before { content: "\f475"; } +.bi-list-stars::before { content: "\f476"; } +.bi-list-task::before { content: "\f477"; } +.bi-list-ul::before { content: "\f478"; } +.bi-list::before { content: "\f479"; } +.bi-lock-fill::before { content: "\f47a"; } +.bi-lock::before { content: "\f47b"; } +.bi-mailbox::before { content: "\f47c"; } +.bi-mailbox2::before { content: "\f47d"; } +.bi-map-fill::before { content: "\f47e"; } +.bi-map::before { content: "\f47f"; } +.bi-markdown-fill::before { content: "\f480"; } +.bi-markdown::before { content: "\f481"; } +.bi-mask::before { content: "\f482"; } +.bi-megaphone-fill::before { content: "\f483"; } +.bi-megaphone::before { content: "\f484"; } +.bi-menu-app-fill::before { content: "\f485"; } +.bi-menu-app::before { content: "\f486"; } +.bi-menu-button-fill::before { content: "\f487"; } +.bi-menu-button-wide-fill::before { content: "\f488"; } +.bi-menu-button-wide::before { content: "\f489"; } +.bi-menu-button::before { content: "\f48a"; } +.bi-menu-down::before { content: "\f48b"; } +.bi-menu-up::before { content: "\f48c"; } +.bi-mic-fill::before { content: "\f48d"; } +.bi-mic-mute-fill::before { content: "\f48e"; } +.bi-mic-mute::before { content: "\f48f"; } +.bi-mic::before { content: "\f490"; } +.bi-minecart-loaded::before { content: "\f491"; } +.bi-minecart::before { content: "\f492"; } +.bi-moisture::before { content: "\f493"; } +.bi-moon-fill::before { content: "\f494"; } +.bi-moon-stars-fill::before { content: "\f495"; } +.bi-moon-stars::before { content: "\f496"; } +.bi-moon::before { content: "\f497"; } +.bi-mouse-fill::before { content: "\f498"; } +.bi-mouse::before { content: "\f499"; } +.bi-mouse2-fill::before { content: "\f49a"; } +.bi-mouse2::before { content: "\f49b"; } +.bi-mouse3-fill::before { content: "\f49c"; } +.bi-mouse3::before { content: "\f49d"; } +.bi-music-note-beamed::before { content: "\f49e"; } +.bi-music-note-list::before { content: "\f49f"; } +.bi-music-note::before { content: "\f4a0"; } +.bi-music-player-fill::before { content: "\f4a1"; } +.bi-music-player::before { content: "\f4a2"; } +.bi-newspaper::before { content: "\f4a3"; } +.bi-node-minus-fill::before { content: "\f4a4"; } +.bi-node-minus::before { content: "\f4a5"; } +.bi-node-plus-fill::before { content: "\f4a6"; } +.bi-node-plus::before { content: "\f4a7"; } +.bi-nut-fill::before { content: "\f4a8"; } +.bi-nut::before { content: "\f4a9"; } +.bi-octagon-fill::before { content: "\f4aa"; } +.bi-octagon-half::before { content: "\f4ab"; } +.bi-octagon::before { content: "\f4ac"; } +.bi-option::before { content: "\f4ad"; } +.bi-outlet::before { content: "\f4ae"; } +.bi-paint-bucket::before { content: "\f4af"; } +.bi-palette-fill::before { content: "\f4b0"; } +.bi-palette::before { content: "\f4b1"; } +.bi-palette2::before { content: "\f4b2"; } +.bi-paperclip::before { content: "\f4b3"; } +.bi-paragraph::before { content: "\f4b4"; } +.bi-patch-check-fill::before { content: "\f4b5"; } +.bi-patch-check::before { content: "\f4b6"; } +.bi-patch-exclamation-fill::before { content: "\f4b7"; } +.bi-patch-exclamation::before { content: "\f4b8"; } +.bi-patch-minus-fill::before { content: "\f4b9"; } +.bi-patch-minus::before { content: "\f4ba"; } +.bi-patch-plus-fill::before { content: "\f4bb"; } +.bi-patch-plus::before { content: "\f4bc"; } +.bi-patch-question-fill::before { content: "\f4bd"; } +.bi-patch-question::before { content: "\f4be"; } +.bi-pause-btn-fill::before { content: "\f4bf"; } +.bi-pause-btn::before { content: "\f4c0"; } +.bi-pause-circle-fill::before { content: "\f4c1"; } +.bi-pause-circle::before { content: "\f4c2"; } +.bi-pause-fill::before { content: "\f4c3"; } +.bi-pause::before { content: "\f4c4"; } +.bi-peace-fill::before { content: "\f4c5"; } +.bi-peace::before { content: "\f4c6"; } +.bi-pen-fill::before { content: "\f4c7"; } +.bi-pen::before { content: "\f4c8"; } +.bi-pencil-fill::before { content: "\f4c9"; } +.bi-pencil-square::before { content: "\f4ca"; } +.bi-pencil::before { content: "\f4cb"; } +.bi-pentagon-fill::before { content: "\f4cc"; } +.bi-pentagon-half::before { content: "\f4cd"; } +.bi-pentagon::before { content: "\f4ce"; } +.bi-people-fill::before { content: "\f4cf"; } +.bi-people::before { content: "\f4d0"; } +.bi-percent::before { content: "\f4d1"; } +.bi-person-badge-fill::before { content: "\f4d2"; } +.bi-person-badge::before { content: "\f4d3"; } +.bi-person-bounding-box::before { content: "\f4d4"; } +.bi-person-check-fill::before { content: "\f4d5"; } +.bi-person-check::before { content: "\f4d6"; } +.bi-person-circle::before { content: "\f4d7"; } +.bi-person-dash-fill::before { content: "\f4d8"; } +.bi-person-dash::before { content: "\f4d9"; } +.bi-person-fill::before { content: "\f4da"; } +.bi-person-lines-fill::before { content: "\f4db"; } +.bi-person-plus-fill::before { content: "\f4dc"; } +.bi-person-plus::before { content: "\f4dd"; } +.bi-person-square::before { content: "\f4de"; } +.bi-person-x-fill::before { content: "\f4df"; } +.bi-person-x::before { content: "\f4e0"; } +.bi-person::before { content: "\f4e1"; } +.bi-phone-fill::before { content: "\f4e2"; } +.bi-phone-landscape-fill::before { content: "\f4e3"; } +.bi-phone-landscape::before { content: "\f4e4"; } +.bi-phone-vibrate-fill::before { content: "\f4e5"; } +.bi-phone-vibrate::before { content: "\f4e6"; } +.bi-phone::before { content: "\f4e7"; } +.bi-pie-chart-fill::before { content: "\f4e8"; } +.bi-pie-chart::before { content: "\f4e9"; } +.bi-pin-angle-fill::before { content: "\f4ea"; } +.bi-pin-angle::before { content: "\f4eb"; } +.bi-pin-fill::before { content: "\f4ec"; } +.bi-pin::before { content: "\f4ed"; } +.bi-pip-fill::before { content: "\f4ee"; } +.bi-pip::before { content: "\f4ef"; } +.bi-play-btn-fill::before { content: "\f4f0"; } +.bi-play-btn::before { content: "\f4f1"; } +.bi-play-circle-fill::before { content: "\f4f2"; } +.bi-play-circle::before { content: "\f4f3"; } +.bi-play-fill::before { content: "\f4f4"; } +.bi-play::before { content: "\f4f5"; } +.bi-plug-fill::before { content: "\f4f6"; } +.bi-plug::before { content: "\f4f7"; } +.bi-plus-circle-dotted::before { content: "\f4f8"; } +.bi-plus-circle-fill::before { content: "\f4f9"; } +.bi-plus-circle::before { content: "\f4fa"; } +.bi-plus-square-dotted::before { content: "\f4fb"; } +.bi-plus-square-fill::before { content: "\f4fc"; } +.bi-plus-square::before { content: "\f4fd"; } +.bi-plus::before { content: "\f4fe"; } +.bi-power::before { content: "\f4ff"; } +.bi-printer-fill::before { content: "\f500"; } +.bi-printer::before { content: "\f501"; } +.bi-puzzle-fill::before { content: "\f502"; } +.bi-puzzle::before { content: "\f503"; } +.bi-question-circle-fill::before { content: "\f504"; } +.bi-question-circle::before { content: "\f505"; } +.bi-question-diamond-fill::before { content: "\f506"; } +.bi-question-diamond::before { content: "\f507"; } +.bi-question-octagon-fill::before { content: "\f508"; } +.bi-question-octagon::before { content: "\f509"; } +.bi-question-square-fill::before { content: "\f50a"; } +.bi-question-square::before { content: "\f50b"; } +.bi-question::before { content: "\f50c"; } +.bi-rainbow::before { content: "\f50d"; } +.bi-receipt-cutoff::before { content: "\f50e"; } +.bi-receipt::before { content: "\f50f"; } +.bi-reception-0::before { content: "\f510"; } +.bi-reception-1::before { content: "\f511"; } +.bi-reception-2::before { content: "\f512"; } +.bi-reception-3::before { content: "\f513"; } +.bi-reception-4::before { content: "\f514"; } +.bi-record-btn-fill::before { content: "\f515"; } +.bi-record-btn::before { content: "\f516"; } +.bi-record-circle-fill::before { content: "\f517"; } +.bi-record-circle::before { content: "\f518"; } +.bi-record-fill::before { content: "\f519"; } +.bi-record::before { content: "\f51a"; } +.bi-record2-fill::before { content: "\f51b"; } +.bi-record2::before { content: "\f51c"; } +.bi-reply-all-fill::before { content: "\f51d"; } +.bi-reply-all::before { content: "\f51e"; } +.bi-reply-fill::before { content: "\f51f"; } +.bi-reply::before { content: "\f520"; } +.bi-rss-fill::before { content: "\f521"; } +.bi-rss::before { content: "\f522"; } +.bi-rulers::before { content: "\f523"; } +.bi-save-fill::before { content: "\f524"; } +.bi-save::before { content: "\f525"; } +.bi-save2-fill::before { content: "\f526"; } +.bi-save2::before { content: "\f527"; } +.bi-scissors::before { content: "\f528"; } +.bi-screwdriver::before { content: "\f529"; } +.bi-search::before { content: "\f52a"; } +.bi-segmented-nav::before { content: "\f52b"; } +.bi-server::before { content: "\f52c"; } +.bi-share-fill::before { content: "\f52d"; } +.bi-share::before { content: "\f52e"; } +.bi-shield-check::before { content: "\f52f"; } +.bi-shield-exclamation::before { content: "\f530"; } +.bi-shield-fill-check::before { content: "\f531"; } +.bi-shield-fill-exclamation::before { content: "\f532"; } +.bi-shield-fill-minus::before { content: "\f533"; } +.bi-shield-fill-plus::before { content: "\f534"; } +.bi-shield-fill-x::before { content: "\f535"; } +.bi-shield-fill::before { content: "\f536"; } +.bi-shield-lock-fill::before { content: "\f537"; } +.bi-shield-lock::before { content: "\f538"; } +.bi-shield-minus::before { content: "\f539"; } +.bi-shield-plus::before { content: "\f53a"; } +.bi-shield-shaded::before { content: "\f53b"; } +.bi-shield-slash-fill::before { content: "\f53c"; } +.bi-shield-slash::before { content: "\f53d"; } +.bi-shield-x::before { content: "\f53e"; } +.bi-shield::before { content: "\f53f"; } +.bi-shift-fill::before { content: "\f540"; } +.bi-shift::before { content: "\f541"; } +.bi-shop-window::before { content: "\f542"; } +.bi-shop::before { content: "\f543"; } +.bi-shuffle::before { content: "\f544"; } +.bi-signpost-2-fill::before { content: "\f545"; } +.bi-signpost-2::before { content: "\f546"; } +.bi-signpost-fill::before { content: "\f547"; } +.bi-signpost-split-fill::before { content: "\f548"; } +.bi-signpost-split::before { content: "\f549"; } +.bi-signpost::before { content: "\f54a"; } +.bi-sim-fill::before { content: "\f54b"; } +.bi-sim::before { content: "\f54c"; } +.bi-skip-backward-btn-fill::before { content: "\f54d"; } +.bi-skip-backward-btn::before { content: "\f54e"; } +.bi-skip-backward-circle-fill::before { content: "\f54f"; } +.bi-skip-backward-circle::before { content: "\f550"; } +.bi-skip-backward-fill::before { content: "\f551"; } +.bi-skip-backward::before { content: "\f552"; } +.bi-skip-end-btn-fill::before { content: "\f553"; } +.bi-skip-end-btn::before { content: "\f554"; } +.bi-skip-end-circle-fill::before { content: "\f555"; } +.bi-skip-end-circle::before { content: "\f556"; } +.bi-skip-end-fill::before { content: "\f557"; } +.bi-skip-end::before { content: "\f558"; } +.bi-skip-forward-btn-fill::before { content: "\f559"; } +.bi-skip-forward-btn::before { content: "\f55a"; } +.bi-skip-forward-circle-fill::before { content: "\f55b"; } +.bi-skip-forward-circle::before { content: "\f55c"; } +.bi-skip-forward-fill::before { content: "\f55d"; } +.bi-skip-forward::before { content: "\f55e"; } +.bi-skip-start-btn-fill::before { content: "\f55f"; } +.bi-skip-start-btn::before { content: "\f560"; } +.bi-skip-start-circle-fill::before { content: "\f561"; } +.bi-skip-start-circle::before { content: "\f562"; } +.bi-skip-start-fill::before { content: "\f563"; } +.bi-skip-start::before { content: "\f564"; } +.bi-slack::before { content: "\f565"; } +.bi-slash-circle-fill::before { content: "\f566"; } +.bi-slash-circle::before { content: "\f567"; } +.bi-slash-square-fill::before { content: "\f568"; } +.bi-slash-square::before { content: "\f569"; } +.bi-slash::before { content: "\f56a"; } +.bi-sliders::before { content: "\f56b"; } +.bi-smartwatch::before { content: "\f56c"; } +.bi-snow::before { content: "\f56d"; } +.bi-snow2::before { content: "\f56e"; } +.bi-snow3::before { content: "\f56f"; } +.bi-sort-alpha-down-alt::before { content: "\f570"; } +.bi-sort-alpha-down::before { content: "\f571"; } +.bi-sort-alpha-up-alt::before { content: "\f572"; } +.bi-sort-alpha-up::before { content: "\f573"; } +.bi-sort-down-alt::before { content: "\f574"; } +.bi-sort-down::before { content: "\f575"; } +.bi-sort-numeric-down-alt::before { content: "\f576"; } +.bi-sort-numeric-down::before { content: "\f577"; } +.bi-sort-numeric-up-alt::before { content: "\f578"; } +.bi-sort-numeric-up::before { content: "\f579"; } +.bi-sort-up-alt::before { content: "\f57a"; } +.bi-sort-up::before { content: "\f57b"; } +.bi-soundwave::before { content: "\f57c"; } +.bi-speaker-fill::before { content: "\f57d"; } +.bi-speaker::before { content: "\f57e"; } +.bi-speedometer::before { content: "\f57f"; } +.bi-speedometer2::before { content: "\f580"; } +.bi-spellcheck::before { content: "\f581"; } +.bi-square-fill::before { content: "\f582"; } +.bi-square-half::before { content: "\f583"; } +.bi-square::before { content: "\f584"; } +.bi-stack::before { content: "\f585"; } +.bi-star-fill::before { content: "\f586"; } +.bi-star-half::before { content: "\f587"; } +.bi-star::before { content: "\f588"; } +.bi-stars::before { content: "\f589"; } +.bi-stickies-fill::before { content: "\f58a"; } +.bi-stickies::before { content: "\f58b"; } +.bi-sticky-fill::before { content: "\f58c"; } +.bi-sticky::before { content: "\f58d"; } +.bi-stop-btn-fill::before { content: "\f58e"; } +.bi-stop-btn::before { content: "\f58f"; } +.bi-stop-circle-fill::before { content: "\f590"; } +.bi-stop-circle::before { content: "\f591"; } +.bi-stop-fill::before { content: "\f592"; } +.bi-stop::before { content: "\f593"; } +.bi-stoplights-fill::before { content: "\f594"; } +.bi-stoplights::before { content: "\f595"; } +.bi-stopwatch-fill::before { content: "\f596"; } +.bi-stopwatch::before { content: "\f597"; } +.bi-subtract::before { content: "\f598"; } +.bi-suit-club-fill::before { content: "\f599"; } +.bi-suit-club::before { content: "\f59a"; } +.bi-suit-diamond-fill::before { content: "\f59b"; } +.bi-suit-diamond::before { content: "\f59c"; } +.bi-suit-heart-fill::before { content: "\f59d"; } +.bi-suit-heart::before { content: "\f59e"; } +.bi-suit-spade-fill::before { content: "\f59f"; } +.bi-suit-spade::before { content: "\f5a0"; } +.bi-sun-fill::before { content: "\f5a1"; } +.bi-sun::before { content: "\f5a2"; } +.bi-sunglasses::before { content: "\f5a3"; } +.bi-sunrise-fill::before { content: "\f5a4"; } +.bi-sunrise::before { content: "\f5a5"; } +.bi-sunset-fill::before { content: "\f5a6"; } +.bi-sunset::before { content: "\f5a7"; } +.bi-symmetry-horizontal::before { content: "\f5a8"; } +.bi-symmetry-vertical::before { content: "\f5a9"; } +.bi-table::before { content: "\f5aa"; } +.bi-tablet-fill::before { content: "\f5ab"; } +.bi-tablet-landscape-fill::before { content: "\f5ac"; } +.bi-tablet-landscape::before { content: "\f5ad"; } +.bi-tablet::before { content: "\f5ae"; } +.bi-tag-fill::before { content: "\f5af"; } +.bi-tag::before { content: "\f5b0"; } +.bi-tags-fill::before { content: "\f5b1"; } +.bi-tags::before { content: "\f5b2"; } +.bi-telegram::before { content: "\f5b3"; } +.bi-telephone-fill::before { content: "\f5b4"; } +.bi-telephone-forward-fill::before { content: "\f5b5"; } +.bi-telephone-forward::before { content: "\f5b6"; } +.bi-telephone-inbound-fill::before { content: "\f5b7"; } +.bi-telephone-inbound::before { content: "\f5b8"; } +.bi-telephone-minus-fill::before { content: "\f5b9"; } +.bi-telephone-minus::before { content: "\f5ba"; } +.bi-telephone-outbound-fill::before { content: "\f5bb"; } +.bi-telephone-outbound::before { content: "\f5bc"; } +.bi-telephone-plus-fill::before { content: "\f5bd"; } +.bi-telephone-plus::before { content: "\f5be"; } +.bi-telephone-x-fill::before { content: "\f5bf"; } +.bi-telephone-x::before { content: "\f5c0"; } +.bi-telephone::before { content: "\f5c1"; } +.bi-terminal-fill::before { content: "\f5c2"; } +.bi-terminal::before { content: "\f5c3"; } +.bi-text-center::before { content: "\f5c4"; } +.bi-text-indent-left::before { content: "\f5c5"; } +.bi-text-indent-right::before { content: "\f5c6"; } +.bi-text-left::before { content: "\f5c7"; } +.bi-text-paragraph::before { content: "\f5c8"; } +.bi-text-right::before { content: "\f5c9"; } +.bi-textarea-resize::before { content: "\f5ca"; } +.bi-textarea-t::before { content: "\f5cb"; } +.bi-textarea::before { content: "\f5cc"; } +.bi-thermometer-half::before { content: "\f5cd"; } +.bi-thermometer-high::before { content: "\f5ce"; } +.bi-thermometer-low::before { content: "\f5cf"; } +.bi-thermometer-snow::before { content: "\f5d0"; } +.bi-thermometer-sun::before { content: "\f5d1"; } +.bi-thermometer::before { content: "\f5d2"; } +.bi-three-dots-vertical::before { content: "\f5d3"; } +.bi-three-dots::before { content: "\f5d4"; } +.bi-toggle-off::before { content: "\f5d5"; } +.bi-toggle-on::before { content: "\f5d6"; } +.bi-toggle2-off::before { content: "\f5d7"; } +.bi-toggle2-on::before { content: "\f5d8"; } +.bi-toggles::before { content: "\f5d9"; } +.bi-toggles2::before { content: "\f5da"; } +.bi-tools::before { content: "\f5db"; } +.bi-tornado::before { content: "\f5dc"; } +.bi-trash-fill::before { content: "\f5dd"; } +.bi-trash::before { content: "\f5de"; } +.bi-trash2-fill::before { content: "\f5df"; } +.bi-trash2::before { content: "\f5e0"; } +.bi-tree-fill::before { content: "\f5e1"; } +.bi-tree::before { content: "\f5e2"; } +.bi-triangle-fill::before { content: "\f5e3"; } +.bi-triangle-half::before { content: "\f5e4"; } +.bi-triangle::before { content: "\f5e5"; } +.bi-trophy-fill::before { content: "\f5e6"; } +.bi-trophy::before { content: "\f5e7"; } +.bi-tropical-storm::before { content: "\f5e8"; } +.bi-truck-flatbed::before { content: "\f5e9"; } +.bi-truck::before { content: "\f5ea"; } +.bi-tsunami::before { content: "\f5eb"; } +.bi-tv-fill::before { content: "\f5ec"; } +.bi-tv::before { content: "\f5ed"; } +.bi-twitch::before { content: "\f5ee"; } +.bi-twitter::before { content: "\f5ef"; } +.bi-type-bold::before { content: "\f5f0"; } +.bi-type-h1::before { content: "\f5f1"; } +.bi-type-h2::before { content: "\f5f2"; } +.bi-type-h3::before { content: "\f5f3"; } +.bi-type-italic::before { content: "\f5f4"; } +.bi-type-strikethrough::before { content: "\f5f5"; } +.bi-type-underline::before { content: "\f5f6"; } +.bi-type::before { content: "\f5f7"; } +.bi-ui-checks-grid::before { content: "\f5f8"; } +.bi-ui-checks::before { content: "\f5f9"; } +.bi-ui-radios-grid::before { content: "\f5fa"; } +.bi-ui-radios::before { content: "\f5fb"; } +.bi-umbrella-fill::before { content: "\f5fc"; } +.bi-umbrella::before { content: "\f5fd"; } +.bi-union::before { content: "\f5fe"; } +.bi-unlock-fill::before { content: "\f5ff"; } +.bi-unlock::before { content: "\f600"; } +.bi-upc-scan::before { content: "\f601"; } +.bi-upc::before { content: "\f602"; } +.bi-upload::before { content: "\f603"; } +.bi-vector-pen::before { content: "\f604"; } +.bi-view-list::before { content: "\f605"; } +.bi-view-stacked::before { content: "\f606"; } +.bi-vinyl-fill::before { content: "\f607"; } +.bi-vinyl::before { content: "\f608"; } +.bi-voicemail::before { content: "\f609"; } +.bi-volume-down-fill::before { content: "\f60a"; } +.bi-volume-down::before { content: "\f60b"; } +.bi-volume-mute-fill::before { content: "\f60c"; } +.bi-volume-mute::before { content: "\f60d"; } +.bi-volume-off-fill::before { content: "\f60e"; } +.bi-volume-off::before { content: "\f60f"; } +.bi-volume-up-fill::before { content: "\f610"; } +.bi-volume-up::before { content: "\f611"; } +.bi-vr::before { content: "\f612"; } +.bi-wallet-fill::before { content: "\f613"; } +.bi-wallet::before { content: "\f614"; } +.bi-wallet2::before { content: "\f615"; } +.bi-watch::before { content: "\f616"; } +.bi-water::before { content: "\f617"; } +.bi-whatsapp::before { content: "\f618"; } +.bi-wifi-1::before { content: "\f619"; } +.bi-wifi-2::before { content: "\f61a"; } +.bi-wifi-off::before { content: "\f61b"; } +.bi-wifi::before { content: "\f61c"; } +.bi-wind::before { content: "\f61d"; } +.bi-window-dock::before { content: "\f61e"; } +.bi-window-sidebar::before { content: "\f61f"; } +.bi-window::before { content: "\f620"; } +.bi-wrench::before { content: "\f621"; } +.bi-x-circle-fill::before { content: "\f622"; } +.bi-x-circle::before { content: "\f623"; } +.bi-x-diamond-fill::before { content: "\f624"; } +.bi-x-diamond::before { content: "\f625"; } +.bi-x-octagon-fill::before { content: "\f626"; } +.bi-x-octagon::before { content: "\f627"; } +.bi-x-square-fill::before { content: "\f628"; } +.bi-x-square::before { content: "\f629"; } +.bi-x::before { content: "\f62a"; } +.bi-youtube::before { content: "\f62b"; } +.bi-zoom-in::before { content: "\f62c"; } +.bi-zoom-out::before { content: "\f62d"; } +.bi-bank::before { content: "\f62e"; } +.bi-bank2::before { content: "\f62f"; } +.bi-bell-slash-fill::before { content: "\f630"; } +.bi-bell-slash::before { content: "\f631"; } +.bi-cash-coin::before { content: "\f632"; } +.bi-check-lg::before { content: "\f633"; } +.bi-coin::before { content: "\f634"; } +.bi-currency-bitcoin::before { content: "\f635"; } +.bi-currency-dollar::before { content: "\f636"; } +.bi-currency-euro::before { content: "\f637"; } +.bi-currency-exchange::before { content: "\f638"; } +.bi-currency-pound::before { content: "\f639"; } +.bi-currency-yen::before { content: "\f63a"; } +.bi-dash-lg::before { content: "\f63b"; } +.bi-exclamation-lg::before { content: "\f63c"; } +.bi-file-earmark-pdf-fill::before { content: "\f63d"; } +.bi-file-earmark-pdf::before { content: "\f63e"; } +.bi-file-pdf-fill::before { content: "\f63f"; } +.bi-file-pdf::before { content: "\f640"; } +.bi-gender-ambiguous::before { content: "\f641"; } +.bi-gender-female::before { content: "\f642"; } +.bi-gender-male::before { content: "\f643"; } +.bi-gender-trans::before { content: "\f644"; } +.bi-headset-vr::before { content: "\f645"; } +.bi-info-lg::before { content: "\f646"; } +.bi-mastodon::before { content: "\f647"; } +.bi-messenger::before { content: "\f648"; } +.bi-piggy-bank-fill::before { content: "\f649"; } +.bi-piggy-bank::before { content: "\f64a"; } +.bi-pin-map-fill::before { content: "\f64b"; } +.bi-pin-map::before { content: "\f64c"; } +.bi-plus-lg::before { content: "\f64d"; } +.bi-question-lg::before { content: "\f64e"; } +.bi-recycle::before { content: "\f64f"; } +.bi-reddit::before { content: "\f650"; } +.bi-safe-fill::before { content: "\f651"; } +.bi-safe2-fill::before { content: "\f652"; } +.bi-safe2::before { content: "\f653"; } +.bi-sd-card-fill::before { content: "\f654"; } +.bi-sd-card::before { content: "\f655"; } +.bi-skype::before { content: "\f656"; } +.bi-slash-lg::before { content: "\f657"; } +.bi-translate::before { content: "\f658"; } +.bi-x-lg::before { content: "\f659"; } +.bi-safe::before { content: "\f65a"; } +.bi-apple::before { content: "\f65b"; } +.bi-microsoft::before { content: "\f65d"; } +.bi-windows::before { content: "\f65e"; } +.bi-behance::before { content: "\f65c"; } +.bi-dribbble::before { content: "\f65f"; } +.bi-line::before { content: "\f660"; } +.bi-medium::before { content: "\f661"; } +.bi-paypal::before { content: "\f662"; } +.bi-pinterest::before { content: "\f663"; } +.bi-signal::before { content: "\f664"; } +.bi-snapchat::before { content: "\f665"; } +.bi-spotify::before { content: "\f666"; } +.bi-stack-overflow::before { content: "\f667"; } +.bi-strava::before { content: "\f668"; } +.bi-wordpress::before { content: "\f669"; } +.bi-vimeo::before { content: "\f66a"; } +.bi-activity::before { content: "\f66b"; } +.bi-easel2-fill::before { content: "\f66c"; } +.bi-easel2::before { content: "\f66d"; } +.bi-easel3-fill::before { content: "\f66e"; } +.bi-easel3::before { content: "\f66f"; } +.bi-fan::before { content: "\f670"; } +.bi-fingerprint::before { content: "\f671"; } +.bi-graph-down-arrow::before { content: "\f672"; } +.bi-graph-up-arrow::before { content: "\f673"; } +.bi-hypnotize::before { content: "\f674"; } +.bi-magic::before { content: "\f675"; } +.bi-person-rolodex::before { content: "\f676"; } +.bi-person-video::before { content: "\f677"; } +.bi-person-video2::before { content: "\f678"; } +.bi-person-video3::before { content: "\f679"; } +.bi-person-workspace::before { content: "\f67a"; } +.bi-radioactive::before { content: "\f67b"; } +.bi-webcam-fill::before { content: "\f67c"; } +.bi-webcam::before { content: "\f67d"; } +.bi-yin-yang::before { content: "\f67e"; } +.bi-bandaid-fill::before { content: "\f680"; } +.bi-bandaid::before { content: "\f681"; } +.bi-bluetooth::before { content: "\f682"; } +.bi-body-text::before { content: "\f683"; } +.bi-boombox::before { content: "\f684"; } +.bi-boxes::before { content: "\f685"; } +.bi-dpad-fill::before { content: "\f686"; } +.bi-dpad::before { content: "\f687"; } +.bi-ear-fill::before { content: "\f688"; } +.bi-ear::before { content: "\f689"; } +.bi-envelope-check-1::before { content: "\f68a"; } +.bi-envelope-check-fill::before { content: "\f68b"; } +.bi-envelope-check::before { content: "\f68c"; } +.bi-envelope-dash-1::before { content: "\f68d"; } +.bi-envelope-dash-fill::before { content: "\f68e"; } +.bi-envelope-dash::before { content: "\f68f"; } +.bi-envelope-exclamation-1::before { content: "\f690"; } +.bi-envelope-exclamation-fill::before { content: "\f691"; } +.bi-envelope-exclamation::before { content: "\f692"; } +.bi-envelope-plus-fill::before { content: "\f693"; } +.bi-envelope-plus::before { content: "\f694"; } +.bi-envelope-slash-1::before { content: "\f695"; } +.bi-envelope-slash-fill::before { content: "\f696"; } +.bi-envelope-slash::before { content: "\f697"; } +.bi-envelope-x-1::before { content: "\f698"; } +.bi-envelope-x-fill::before { content: "\f699"; } +.bi-envelope-x::before { content: "\f69a"; } +.bi-explicit-fill::before { content: "\f69b"; } +.bi-explicit::before { content: "\f69c"; } +.bi-git::before { content: "\f69d"; } +.bi-infinity::before { content: "\f69e"; } +.bi-list-columns-reverse::before { content: "\f69f"; } +.bi-list-columns::before { content: "\f6a0"; } +.bi-meta::before { content: "\f6a1"; } +.bi-mortorboard-fill::before { content: "\f6a2"; } +.bi-mortorboard::before { content: "\f6a3"; } +.bi-nintendo-switch::before { content: "\f6a4"; } +.bi-pc-display-horizontal::before { content: "\f6a5"; } +.bi-pc-display::before { content: "\f6a6"; } +.bi-pc-horizontal::before { content: "\f6a7"; } +.bi-pc::before { content: "\f6a8"; } +.bi-playstation::before { content: "\f6a9"; } +.bi-plus-slash-minus::before { content: "\f6aa"; } +.bi-projector-fill::before { content: "\f6ab"; } +.bi-projector::before { content: "\f6ac"; } +.bi-qr-code-scan::before { content: "\f6ad"; } +.bi-qr-code::before { content: "\f6ae"; } +.bi-quora::before { content: "\f6af"; } +.bi-quote::before { content: "\f6b0"; } +.bi-robot::before { content: "\f6b1"; } +.bi-send-check-fill::before { content: "\f6b2"; } +.bi-send-check::before { content: "\f6b3"; } +.bi-send-dash-fill::before { content: "\f6b4"; } +.bi-send-dash::before { content: "\f6b5"; } +.bi-send-exclamation-1::before { content: "\f6b6"; } +.bi-send-exclamation-fill::before { content: "\f6b7"; } +.bi-send-exclamation::before { content: "\f6b8"; } +.bi-send-fill::before { content: "\f6b9"; } +.bi-send-plus-fill::before { content: "\f6ba"; } +.bi-send-plus::before { content: "\f6bb"; } +.bi-send-slash-fill::before { content: "\f6bc"; } +.bi-send-slash::before { content: "\f6bd"; } +.bi-send-x-fill::before { content: "\f6be"; } +.bi-send-x::before { content: "\f6bf"; } +.bi-send::before { content: "\f6c0"; } +.bi-steam::before { content: "\f6c1"; } +.bi-terminal-dash-1::before { content: "\f6c2"; } +.bi-terminal-dash::before { content: "\f6c3"; } +.bi-terminal-plus::before { content: "\f6c4"; } +.bi-terminal-split::before { content: "\f6c5"; } +.bi-ticket-detailed-fill::before { content: "\f6c6"; } +.bi-ticket-detailed::before { content: "\f6c7"; } +.bi-ticket-fill::before { content: "\f6c8"; } +.bi-ticket-perforated-fill::before { content: "\f6c9"; } +.bi-ticket-perforated::before { content: "\f6ca"; } +.bi-ticket::before { content: "\f6cb"; } +.bi-tiktok::before { content: "\f6cc"; } +.bi-window-dash::before { content: "\f6cd"; } +.bi-window-desktop::before { content: "\f6ce"; } +.bi-window-fullscreen::before { content: "\f6cf"; } +.bi-window-plus::before { content: "\f6d0"; } +.bi-window-split::before { content: "\f6d1"; } +.bi-window-stack::before { content: "\f6d2"; } +.bi-window-x::before { content: "\f6d3"; } +.bi-xbox::before { content: "\f6d4"; } +.bi-ethernet::before { content: "\f6d5"; } +.bi-hdmi-fill::before { content: "\f6d6"; } +.bi-hdmi::before { content: "\f6d7"; } +.bi-usb-c-fill::before { content: "\f6d8"; } +.bi-usb-c::before { content: "\f6d9"; } +.bi-usb-fill::before { content: "\f6da"; } +.bi-usb-plug-fill::before { content: "\f6db"; } +.bi-usb-plug::before { content: "\f6dc"; } +.bi-usb-symbol::before { content: "\f6dd"; } +.bi-usb::before { content: "\f6de"; } +.bi-boombox-fill::before { content: "\f6df"; } +.bi-displayport-1::before { content: "\f6e0"; } +.bi-displayport::before { content: "\f6e1"; } +.bi-gpu-card::before { content: "\f6e2"; } +.bi-memory::before { content: "\f6e3"; } +.bi-modem-fill::before { content: "\f6e4"; } +.bi-modem::before { content: "\f6e5"; } +.bi-motherboard-fill::before { content: "\f6e6"; } +.bi-motherboard::before { content: "\f6e7"; } +.bi-optical-audio-fill::before { content: "\f6e8"; } +.bi-optical-audio::before { content: "\f6e9"; } +.bi-pci-card::before { content: "\f6ea"; } +.bi-router-fill::before { content: "\f6eb"; } +.bi-router::before { content: "\f6ec"; } +.bi-ssd-fill::before { content: "\f6ed"; } +.bi-ssd::before { content: "\f6ee"; } +.bi-thunderbolt-fill::before { content: "\f6ef"; } +.bi-thunderbolt::before { content: "\f6f0"; } +.bi-usb-drive-fill::before { content: "\f6f1"; } +.bi-usb-drive::before { content: "\f6f2"; } +.bi-usb-micro-fill::before { content: "\f6f3"; } +.bi-usb-micro::before { content: "\f6f4"; } +.bi-usb-mini-fill::before { content: "\f6f5"; } +.bi-usb-mini::before { content: "\f6f6"; } +.bi-cloud-haze2::before { content: "\f6f7"; } +.bi-device-hdd-fill::before { content: "\f6f8"; } +.bi-device-hdd::before { content: "\f6f9"; } +.bi-device-ssd-fill::before { content: "\f6fa"; } +.bi-device-ssd::before { content: "\f6fb"; } +.bi-displayport-fill::before { content: "\f6fc"; } +.bi-mortarboard-fill::before { content: "\f6fd"; } +.bi-mortarboard::before { content: "\f6fe"; } +.bi-terminal-x::before { content: "\f6ff"; } +.bi-arrow-through-heart-fill::before { content: "\f700"; } +.bi-arrow-through-heart::before { content: "\f701"; } +.bi-badge-sd-fill::before { content: "\f702"; } +.bi-badge-sd::before { content: "\f703"; } +.bi-bag-heart-fill::before { content: "\f704"; } +.bi-bag-heart::before { content: "\f705"; } +.bi-balloon-fill::before { content: "\f706"; } +.bi-balloon-heart-fill::before { content: "\f707"; } +.bi-balloon-heart::before { content: "\f708"; } +.bi-balloon::before { content: "\f709"; } +.bi-box2-fill::before { content: "\f70a"; } +.bi-box2-heart-fill::before { content: "\f70b"; } +.bi-box2-heart::before { content: "\f70c"; } +.bi-box2::before { content: "\f70d"; } +.bi-braces-asterisk::before { content: "\f70e"; } +.bi-calendar-heart-fill::before { content: "\f70f"; } +.bi-calendar-heart::before { content: "\f710"; } +.bi-calendar2-heart-fill::before { content: "\f711"; } +.bi-calendar2-heart::before { content: "\f712"; } +.bi-chat-heart-fill::before { content: "\f713"; } +.bi-chat-heart::before { content: "\f714"; } +.bi-chat-left-heart-fill::before { content: "\f715"; } +.bi-chat-left-heart::before { content: "\f716"; } +.bi-chat-right-heart-fill::before { content: "\f717"; } +.bi-chat-right-heart::before { content: "\f718"; } +.bi-chat-square-heart-fill::before { content: "\f719"; } +.bi-chat-square-heart::before { content: "\f71a"; } +.bi-clipboard-check-fill::before { content: "\f71b"; } +.bi-clipboard-data-fill::before { content: "\f71c"; } +.bi-clipboard-fill::before { content: "\f71d"; } +.bi-clipboard-heart-fill::before { content: "\f71e"; } +.bi-clipboard-heart::before { content: "\f71f"; } +.bi-clipboard-minus-fill::before { content: "\f720"; } +.bi-clipboard-plus-fill::before { content: "\f721"; } +.bi-clipboard-pulse::before { content: "\f722"; } +.bi-clipboard-x-fill::before { content: "\f723"; } +.bi-clipboard2-check-fill::before { content: "\f724"; } +.bi-clipboard2-check::before { content: "\f725"; } +.bi-clipboard2-data-fill::before { content: "\f726"; } +.bi-clipboard2-data::before { content: "\f727"; } +.bi-clipboard2-fill::before { content: "\f728"; } +.bi-clipboard2-heart-fill::before { content: "\f729"; } +.bi-clipboard2-heart::before { content: "\f72a"; } +.bi-clipboard2-minus-fill::before { content: "\f72b"; } +.bi-clipboard2-minus::before { content: "\f72c"; } +.bi-clipboard2-plus-fill::before { content: "\f72d"; } +.bi-clipboard2-plus::before { content: "\f72e"; } +.bi-clipboard2-pulse-fill::before { content: "\f72f"; } +.bi-clipboard2-pulse::before { content: "\f730"; } +.bi-clipboard2-x-fill::before { content: "\f731"; } +.bi-clipboard2-x::before { content: "\f732"; } +.bi-clipboard2::before { content: "\f733"; } +.bi-emoji-kiss-fill::before { content: "\f734"; } +.bi-emoji-kiss::before { content: "\f735"; } +.bi-envelope-heart-fill::before { content: "\f736"; } +.bi-envelope-heart::before { content: "\f737"; } +.bi-envelope-open-heart-fill::before { content: "\f738"; } +.bi-envelope-open-heart::before { content: "\f739"; } +.bi-envelope-paper-fill::before { content: "\f73a"; } +.bi-envelope-paper-heart-fill::before { content: "\f73b"; } +.bi-envelope-paper-heart::before { content: "\f73c"; } +.bi-envelope-paper::before { content: "\f73d"; } +.bi-filetype-aac::before { content: "\f73e"; } +.bi-filetype-ai::before { content: "\f73f"; } +.bi-filetype-bmp::before { content: "\f740"; } +.bi-filetype-cs::before { content: "\f741"; } +.bi-filetype-css::before { content: "\f742"; } +.bi-filetype-csv::before { content: "\f743"; } +.bi-filetype-doc::before { content: "\f744"; } +.bi-filetype-docx::before { content: "\f745"; } +.bi-filetype-exe::before { content: "\f746"; } +.bi-filetype-gif::before { content: "\f747"; } +.bi-filetype-heic::before { content: "\f748"; } +.bi-filetype-html::before { content: "\f749"; } +.bi-filetype-java::before { content: "\f74a"; } +.bi-filetype-jpg::before { content: "\f74b"; } +.bi-filetype-js::before { content: "\f74c"; } +.bi-filetype-jsx::before { content: "\f74d"; } +.bi-filetype-key::before { content: "\f74e"; } +.bi-filetype-m4p::before { content: "\f74f"; } +.bi-filetype-md::before { content: "\f750"; } +.bi-filetype-mdx::before { content: "\f751"; } +.bi-filetype-mov::before { content: "\f752"; } +.bi-filetype-mp3::before { content: "\f753"; } +.bi-filetype-mp4::before { content: "\f754"; } +.bi-filetype-otf::before { content: "\f755"; } +.bi-filetype-pdf::before { content: "\f756"; } +.bi-filetype-php::before { content: "\f757"; } +.bi-filetype-png::before { content: "\f758"; } +.bi-filetype-ppt-1::before { content: "\f759"; } +.bi-filetype-ppt::before { content: "\f75a"; } +.bi-filetype-psd::before { content: "\f75b"; } +.bi-filetype-py::before { content: "\f75c"; } +.bi-filetype-raw::before { content: "\f75d"; } +.bi-filetype-rb::before { content: "\f75e"; } +.bi-filetype-sass::before { content: "\f75f"; } +.bi-filetype-scss::before { content: "\f760"; } +.bi-filetype-sh::before { content: "\f761"; } +.bi-filetype-svg::before { content: "\f762"; } +.bi-filetype-tiff::before { content: "\f763"; } +.bi-filetype-tsx::before { content: "\f764"; } +.bi-filetype-ttf::before { content: "\f765"; } +.bi-filetype-txt::before { content: "\f766"; } +.bi-filetype-wav::before { content: "\f767"; } +.bi-filetype-woff::before { content: "\f768"; } +.bi-filetype-xls-1::before { content: "\f769"; } +.bi-filetype-xls::before { content: "\f76a"; } +.bi-filetype-xml::before { content: "\f76b"; } +.bi-filetype-yml::before { content: "\f76c"; } +.bi-heart-arrow::before { content: "\f76d"; } +.bi-heart-pulse-fill::before { content: "\f76e"; } +.bi-heart-pulse::before { content: "\f76f"; } +.bi-heartbreak-fill::before { content: "\f770"; } +.bi-heartbreak::before { content: "\f771"; } +.bi-hearts::before { content: "\f772"; } +.bi-hospital-fill::before { content: "\f773"; } +.bi-hospital::before { content: "\f774"; } +.bi-house-heart-fill::before { content: "\f775"; } +.bi-house-heart::before { content: "\f776"; } +.bi-incognito::before { content: "\f777"; } +.bi-magnet-fill::before { content: "\f778"; } +.bi-magnet::before { content: "\f779"; } +.bi-person-heart::before { content: "\f77a"; } +.bi-person-hearts::before { content: "\f77b"; } +.bi-phone-flip::before { content: "\f77c"; } +.bi-plugin::before { content: "\f77d"; } +.bi-postage-fill::before { content: "\f77e"; } +.bi-postage-heart-fill::before { content: "\f77f"; } +.bi-postage-heart::before { content: "\f780"; } +.bi-postage::before { content: "\f781"; } +.bi-postcard-fill::before { content: "\f782"; } +.bi-postcard-heart-fill::before { content: "\f783"; } +.bi-postcard-heart::before { content: "\f784"; } +.bi-postcard::before { content: "\f785"; } +.bi-search-heart-fill::before { content: "\f786"; } +.bi-search-heart::before { content: "\f787"; } +.bi-sliders2-vertical::before { content: "\f788"; } +.bi-sliders2::before { content: "\f789"; } +.bi-trash3-fill::before { content: "\f78a"; } +.bi-trash3::before { content: "\f78b"; } +.bi-valentine::before { content: "\f78c"; } +.bi-valentine2::before { content: "\f78d"; } +.bi-wrench-adjustable-circle-fill::before { content: "\f78e"; } +.bi-wrench-adjustable-circle::before { content: "\f78f"; } +.bi-wrench-adjustable::before { content: "\f790"; } +.bi-filetype-json::before { content: "\f791"; } +.bi-filetype-pptx::before { content: "\f792"; } +.bi-filetype-xlsx::before { content: "\f793"; } +.bi-1-circle-1::before { content: "\f794"; } +.bi-1-circle-fill-1::before { content: "\f795"; } +.bi-1-circle-fill::before { content: "\f796"; } +.bi-1-circle::before { content: "\f797"; } +.bi-1-square-fill::before { content: "\f798"; } +.bi-1-square::before { content: "\f799"; } +.bi-2-circle-1::before { content: "\f79a"; } +.bi-2-circle-fill-1::before { content: "\f79b"; } +.bi-2-circle-fill::before { content: "\f79c"; } +.bi-2-circle::before { content: "\f79d"; } +.bi-2-square-fill::before { content: "\f79e"; } +.bi-2-square::before { content: "\f79f"; } +.bi-3-circle-1::before { content: "\f7a0"; } +.bi-3-circle-fill-1::before { content: "\f7a1"; } +.bi-3-circle-fill::before { content: "\f7a2"; } +.bi-3-circle::before { content: "\f7a3"; } +.bi-3-square-fill::before { content: "\f7a4"; } +.bi-3-square::before { content: "\f7a5"; } +.bi-4-circle-1::before { content: "\f7a6"; } +.bi-4-circle-fill-1::before { content: "\f7a7"; } +.bi-4-circle-fill::before { content: "\f7a8"; } +.bi-4-circle::before { content: "\f7a9"; } +.bi-4-square-fill::before { content: "\f7aa"; } +.bi-4-square::before { content: "\f7ab"; } +.bi-5-circle-1::before { content: "\f7ac"; } +.bi-5-circle-fill-1::before { content: "\f7ad"; } +.bi-5-circle-fill::before { content: "\f7ae"; } +.bi-5-circle::before { content: "\f7af"; } +.bi-5-square-fill::before { content: "\f7b0"; } +.bi-5-square::before { content: "\f7b1"; } +.bi-6-circle-1::before { content: "\f7b2"; } +.bi-6-circle-fill-1::before { content: "\f7b3"; } +.bi-6-circle-fill::before { content: "\f7b4"; } +.bi-6-circle::before { content: "\f7b5"; } +.bi-6-square-fill::before { content: "\f7b6"; } +.bi-6-square::before { content: "\f7b7"; } +.bi-7-circle-1::before { content: "\f7b8"; } +.bi-7-circle-fill-1::before { content: "\f7b9"; } +.bi-7-circle-fill::before { content: "\f7ba"; } +.bi-7-circle::before { content: "\f7bb"; } +.bi-7-square-fill::before { content: "\f7bc"; } +.bi-7-square::before { content: "\f7bd"; } +.bi-8-circle-1::before { content: "\f7be"; } +.bi-8-circle-fill-1::before { content: "\f7bf"; } +.bi-8-circle-fill::before { content: "\f7c0"; } +.bi-8-circle::before { content: "\f7c1"; } +.bi-8-square-fill::before { content: "\f7c2"; } +.bi-8-square::before { content: "\f7c3"; } +.bi-9-circle-1::before { content: "\f7c4"; } +.bi-9-circle-fill-1::before { content: "\f7c5"; } +.bi-9-circle-fill::before { content: "\f7c6"; } +.bi-9-circle::before { content: "\f7c7"; } +.bi-9-square-fill::before { content: "\f7c8"; } +.bi-9-square::before { content: "\f7c9"; } +.bi-airplane-engines-fill::before { content: "\f7ca"; } +.bi-airplane-engines::before { content: "\f7cb"; } +.bi-airplane-fill::before { content: "\f7cc"; } +.bi-airplane::before { content: "\f7cd"; } +.bi-alexa::before { content: "\f7ce"; } +.bi-alipay::before { content: "\f7cf"; } +.bi-android::before { content: "\f7d0"; } +.bi-android2::before { content: "\f7d1"; } +.bi-box-fill::before { content: "\f7d2"; } +.bi-box-seam-fill::before { content: "\f7d3"; } +.bi-browser-chrome::before { content: "\f7d4"; } +.bi-browser-edge::before { content: "\f7d5"; } +.bi-browser-firefox::before { content: "\f7d6"; } +.bi-browser-safari::before { content: "\f7d7"; } +.bi-c-circle-1::before { content: "\f7d8"; } +.bi-c-circle-fill-1::before { content: "\f7d9"; } +.bi-c-circle-fill::before { content: "\f7da"; } +.bi-c-circle::before { content: "\f7db"; } +.bi-c-square-fill::before { content: "\f7dc"; } +.bi-c-square::before { content: "\f7dd"; } +.bi-capsule-pill::before { content: "\f7de"; } +.bi-capsule::before { content: "\f7df"; } +.bi-car-front-fill::before { content: "\f7e0"; } +.bi-car-front::before { content: "\f7e1"; } +.bi-cassette-fill::before { content: "\f7e2"; } +.bi-cassette::before { content: "\f7e3"; } +.bi-cc-circle-1::before { content: "\f7e4"; } +.bi-cc-circle-fill-1::before { content: "\f7e5"; } +.bi-cc-circle-fill::before { content: "\f7e6"; } +.bi-cc-circle::before { content: "\f7e7"; } +.bi-cc-square-fill::before { content: "\f7e8"; } +.bi-cc-square::before { content: "\f7e9"; } +.bi-cup-hot-fill::before { content: "\f7ea"; } +.bi-cup-hot::before { content: "\f7eb"; } +.bi-currency-rupee::before { content: "\f7ec"; } +.bi-dropbox::before { content: "\f7ed"; } +.bi-escape::before { content: "\f7ee"; } +.bi-fast-forward-btn-fill::before { content: "\f7ef"; } +.bi-fast-forward-btn::before { content: "\f7f0"; } +.bi-fast-forward-circle-fill::before { content: "\f7f1"; } +.bi-fast-forward-circle::before { content: "\f7f2"; } +.bi-fast-forward-fill::before { content: "\f7f3"; } +.bi-fast-forward::before { content: "\f7f4"; } +.bi-filetype-sql::before { content: "\f7f5"; } +.bi-fire::before { content: "\f7f6"; } +.bi-google-play::before { content: "\f7f7"; } +.bi-h-circle-1::before { content: "\f7f8"; } +.bi-h-circle-fill-1::before { content: "\f7f9"; } +.bi-h-circle-fill::before { content: "\f7fa"; } +.bi-h-circle::before { content: "\f7fb"; } +.bi-h-square-fill::before { content: "\f7fc"; } +.bi-h-square::before { content: "\f7fd"; } +.bi-indent::before { content: "\f7fe"; } +.bi-lungs-fill::before { content: "\f7ff"; } +.bi-lungs::before { content: "\f800"; } +.bi-microsoft-teams::before { content: "\f801"; } +.bi-p-circle-1::before { content: "\f802"; } +.bi-p-circle-fill-1::before { content: "\f803"; } +.bi-p-circle-fill::before { content: "\f804"; } +.bi-p-circle::before { content: "\f805"; } +.bi-p-square-fill::before { content: "\f806"; } +.bi-p-square::before { content: "\f807"; } +.bi-pass-fill::before { content: "\f808"; } +.bi-pass::before { content: "\f809"; } +.bi-prescription::before { content: "\f80a"; } +.bi-prescription2::before { content: "\f80b"; } +.bi-r-circle-1::before { content: "\f80c"; } +.bi-r-circle-fill-1::before { content: "\f80d"; } +.bi-r-circle-fill::before { content: "\f80e"; } +.bi-r-circle::before { content: "\f80f"; } +.bi-r-square-fill::before { content: "\f810"; } +.bi-r-square::before { content: "\f811"; } +.bi-repeat-1::before { content: "\f812"; } +.bi-repeat::before { content: "\f813"; } +.bi-rewind-btn-fill::before { content: "\f814"; } +.bi-rewind-btn::before { content: "\f815"; } +.bi-rewind-circle-fill::before { content: "\f816"; } +.bi-rewind-circle::before { content: "\f817"; } +.bi-rewind-fill::before { content: "\f818"; } +.bi-rewind::before { content: "\f819"; } +.bi-train-freight-front-fill::before { content: "\f81a"; } +.bi-train-freight-front::before { content: "\f81b"; } +.bi-train-front-fill::before { content: "\f81c"; } +.bi-train-front::before { content: "\f81d"; } +.bi-train-lightrail-front-fill::before { content: "\f81e"; } +.bi-train-lightrail-front::before { content: "\f81f"; } +.bi-truck-front-fill::before { content: "\f820"; } +.bi-truck-front::before { content: "\f821"; } +.bi-ubuntu::before { content: "\f822"; } +.bi-unindent::before { content: "\f823"; } +.bi-unity::before { content: "\f824"; } +.bi-universal-access-circle::before { content: "\f825"; } +.bi-universal-access::before { content: "\f826"; } +.bi-virus::before { content: "\f827"; } +.bi-virus2::before { content: "\f828"; } +.bi-wechat::before { content: "\f829"; } +.bi-yelp::before { content: "\f82a"; } +.bi-sign-stop-fill::before { content: "\f82b"; } +.bi-sign-stop-lights-fill::before { content: "\f82c"; } +.bi-sign-stop-lights::before { content: "\f82d"; } +.bi-sign-stop::before { content: "\f82e"; } +.bi-sign-turn-left-fill::before { content: "\f82f"; } +.bi-sign-turn-left::before { content: "\f830"; } +.bi-sign-turn-right-fill::before { content: "\f831"; } +.bi-sign-turn-right::before { content: "\f832"; } +.bi-sign-turn-slight-left-fill::before { content: "\f833"; } +.bi-sign-turn-slight-left::before { content: "\f834"; } +.bi-sign-turn-slight-right-fill::before { content: "\f835"; } +.bi-sign-turn-slight-right::before { content: "\f836"; } +.bi-sign-yield-fill::before { content: "\f837"; } +.bi-sign-yield::before { content: "\f838"; } +.bi-ev-station-fill::before { content: "\f839"; } +.bi-ev-station::before { content: "\f83a"; } +.bi-fuel-pump-diesel-fill::before { content: "\f83b"; } +.bi-fuel-pump-diesel::before { content: "\f83c"; } +.bi-fuel-pump-fill::before { content: "\f83d"; } +.bi-fuel-pump::before { content: "\f83e"; } +.bi-0-circle-fill::before { content: "\f83f"; } +.bi-0-circle::before { content: "\f840"; } +.bi-0-square-fill::before { content: "\f841"; } +.bi-0-square::before { content: "\f842"; } +.bi-rocket-fill::before { content: "\f843"; } +.bi-rocket-takeoff-fill::before { content: "\f844"; } +.bi-rocket-takeoff::before { content: "\f845"; } +.bi-rocket::before { content: "\f846"; } +.bi-stripe::before { content: "\f847"; } +.bi-subscript::before { content: "\f848"; } +.bi-superscript::before { content: "\f849"; } +.bi-trello::before { content: "\f84a"; } +.bi-envelope-at-fill::before { content: "\f84b"; } +.bi-envelope-at::before { content: "\f84c"; } +.bi-regex::before { content: "\f84d"; } +.bi-text-wrap::before { content: "\f84e"; } +.bi-sign-dead-end-fill::before { content: "\f84f"; } +.bi-sign-dead-end::before { content: "\f850"; } +.bi-sign-do-not-enter-fill::before { content: "\f851"; } +.bi-sign-do-not-enter::before { content: "\f852"; } +.bi-sign-intersection-fill::before { content: "\f853"; } +.bi-sign-intersection-side-fill::before { content: "\f854"; } +.bi-sign-intersection-side::before { content: "\f855"; } +.bi-sign-intersection-t-fill::before { content: "\f856"; } +.bi-sign-intersection-t::before { content: "\f857"; } +.bi-sign-intersection-y-fill::before { content: "\f858"; } +.bi-sign-intersection-y::before { content: "\f859"; } +.bi-sign-intersection::before { content: "\f85a"; } +.bi-sign-merge-left-fill::before { content: "\f85b"; } +.bi-sign-merge-left::before { content: "\f85c"; } +.bi-sign-merge-right-fill::before { content: "\f85d"; } +.bi-sign-merge-right::before { content: "\f85e"; } +.bi-sign-no-left-turn-fill::before { content: "\f85f"; } +.bi-sign-no-left-turn::before { content: "\f860"; } +.bi-sign-no-parking-fill::before { content: "\f861"; } +.bi-sign-no-parking::before { content: "\f862"; } +.bi-sign-no-right-turn-fill::before { content: "\f863"; } +.bi-sign-no-right-turn::before { content: "\f864"; } +.bi-sign-railroad-fill::before { content: "\f865"; } +.bi-sign-railroad::before { content: "\f866"; } +.bi-building-add::before { content: "\f867"; } +.bi-building-check::before { content: "\f868"; } +.bi-building-dash::before { content: "\f869"; } +.bi-building-down::before { content: "\f86a"; } +.bi-building-exclamation::before { content: "\f86b"; } +.bi-building-fill-add::before { content: "\f86c"; } +.bi-building-fill-check::before { content: "\f86d"; } +.bi-building-fill-dash::before { content: "\f86e"; } +.bi-building-fill-down::before { content: "\f86f"; } +.bi-building-fill-exclamation::before { content: "\f870"; } +.bi-building-fill-gear::before { content: "\f871"; } +.bi-building-fill-lock::before { content: "\f872"; } +.bi-building-fill-slash::before { content: "\f873"; } +.bi-building-fill-up::before { content: "\f874"; } +.bi-building-fill-x::before { content: "\f875"; } +.bi-building-fill::before { content: "\f876"; } +.bi-building-gear::before { content: "\f877"; } +.bi-building-lock::before { content: "\f878"; } +.bi-building-slash::before { content: "\f879"; } +.bi-building-up::before { content: "\f87a"; } +.bi-building-x::before { content: "\f87b"; } +.bi-buildings-fill::before { content: "\f87c"; } +.bi-buildings::before { content: "\f87d"; } +.bi-bus-front-fill::before { content: "\f87e"; } +.bi-bus-front::before { content: "\f87f"; } +.bi-ev-front-fill::before { content: "\f880"; } +.bi-ev-front::before { content: "\f881"; } +.bi-globe-americas::before { content: "\f882"; } +.bi-globe-asia-australia::before { content: "\f883"; } +.bi-globe-central-south-asia::before { content: "\f884"; } +.bi-globe-europe-africa::before { content: "\f885"; } +.bi-house-add-fill::before { content: "\f886"; } +.bi-house-add::before { content: "\f887"; } +.bi-house-check-fill::before { content: "\f888"; } +.bi-house-check::before { content: "\f889"; } +.bi-house-dash-fill::before { content: "\f88a"; } +.bi-house-dash::before { content: "\f88b"; } +.bi-house-down-fill::before { content: "\f88c"; } +.bi-house-down::before { content: "\f88d"; } +.bi-house-exclamation-fill::before { content: "\f88e"; } +.bi-house-exclamation::before { content: "\f88f"; } +.bi-house-gear-fill::before { content: "\f890"; } +.bi-house-gear::before { content: "\f891"; } +.bi-house-lock-fill::before { content: "\f892"; } +.bi-house-lock::before { content: "\f893"; } +.bi-house-slash-fill::before { content: "\f894"; } +.bi-house-slash::before { content: "\f895"; } +.bi-house-up-fill::before { content: "\f896"; } +.bi-house-up::before { content: "\f897"; } +.bi-house-x-fill::before { content: "\f898"; } +.bi-house-x::before { content: "\f899"; } +.bi-person-add::before { content: "\f89a"; } +.bi-person-down::before { content: "\f89b"; } +.bi-person-exclamation::before { content: "\f89c"; } +.bi-person-fill-add::before { content: "\f89d"; } +.bi-person-fill-check::before { content: "\f89e"; } +.bi-person-fill-dash::before { content: "\f89f"; } +.bi-person-fill-down::before { content: "\f8a0"; } +.bi-person-fill-exclamation::before { content: "\f8a1"; } +.bi-person-fill-gear::before { content: "\f8a2"; } +.bi-person-fill-lock::before { content: "\f8a3"; } +.bi-person-fill-slash::before { content: "\f8a4"; } +.bi-person-fill-up::before { content: "\f8a5"; } +.bi-person-fill-x::before { content: "\f8a6"; } +.bi-person-gear::before { content: "\f8a7"; } +.bi-person-lock::before { content: "\f8a8"; } +.bi-person-slash::before { content: "\f8a9"; } +.bi-person-up::before { content: "\f8aa"; } +.bi-scooter::before { content: "\f8ab"; } +.bi-taxi-front-fill::before { content: "\f8ac"; } +.bi-taxi-front::before { content: "\f8ad"; } +.bi-amd::before { content: "\f8ae"; } +.bi-database-add::before { content: "\f8af"; } +.bi-database-check::before { content: "\f8b0"; } +.bi-database-dash::before { content: "\f8b1"; } +.bi-database-down::before { content: "\f8b2"; } +.bi-database-exclamation::before { content: "\f8b3"; } +.bi-database-fill-add::before { content: "\f8b4"; } +.bi-database-fill-check::before { content: "\f8b5"; } +.bi-database-fill-dash::before { content: "\f8b6"; } +.bi-database-fill-down::before { content: "\f8b7"; } +.bi-database-fill-exclamation::before { content: "\f8b8"; } +.bi-database-fill-gear::before { content: "\f8b9"; } +.bi-database-fill-lock::before { content: "\f8ba"; } +.bi-database-fill-slash::before { content: "\f8bb"; } +.bi-database-fill-up::before { content: "\f8bc"; } +.bi-database-fill-x::before { content: "\f8bd"; } +.bi-database-fill::before { content: "\f8be"; } +.bi-database-gear::before { content: "\f8bf"; } +.bi-database-lock::before { content: "\f8c0"; } +.bi-database-slash::before { content: "\f8c1"; } +.bi-database-up::before { content: "\f8c2"; } +.bi-database-x::before { content: "\f8c3"; } +.bi-database::before { content: "\f8c4"; } +.bi-houses-fill::before { content: "\f8c5"; } +.bi-houses::before { content: "\f8c6"; } +.bi-nvidia::before { content: "\f8c7"; } +.bi-person-vcard-fill::before { content: "\f8c8"; } +.bi-person-vcard::before { content: "\f8c9"; } +.bi-sina-weibo::before { content: "\f8ca"; } +.bi-tencent-qq::before { content: "\f8cb"; } +.bi-wikipedia::before { content: "\f8cc"; } diff --git a/pr-preview/pr-46/site_libs/bootstrap/bootstrap-icons.woff b/pr-preview/pr-46/site_libs/bootstrap/bootstrap-icons.woff new file mode 100644 index 00000000..18d21d45 Binary files /dev/null and b/pr-preview/pr-46/site_libs/bootstrap/bootstrap-icons.woff differ diff --git a/pr-preview/pr-46/site_libs/bootstrap/bootstrap.min.css b/pr-preview/pr-46/site_libs/bootstrap/bootstrap.min.css new file mode 100644 index 00000000..cc9fff62 --- /dev/null +++ b/pr-preview/pr-46/site_libs/bootstrap/bootstrap.min.css @@ -0,0 +1,10 @@ +/*! + * Bootstrap v5.1.3 (https://getbootstrap.com/) + * Copyright 2011-2021 The Bootstrap Authors + * Copyright 2011-2021 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */@import"https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,400;0,700;1,400&display=swap";:root{--bs-blue: #2c3e50;--bs-indigo: #6610f2;--bs-purple: #6f42c1;--bs-pink: #e83e8c;--bs-red: #e74c3c;--bs-orange: #fd7e14;--bs-yellow: #f39c12;--bs-green: #18bc9c;--bs-teal: #20c997;--bs-cyan: #3498db;--bs-white: #fff;--bs-gray: #6c757d;--bs-gray-dark: #343a40;--bs-gray-100: #f8f9fa;--bs-gray-200: #ecf0f1;--bs-gray-300: #dee2e6;--bs-gray-400: #ced4da;--bs-gray-500: #adb5bd;--bs-gray-600: #6c757d;--bs-gray-700: #7b8a8b;--bs-gray-800: #343a40;--bs-gray-900: #212529;--bs-default: #6c757d;--bs-primary: #2c3e50;--bs-secondary: #6c757d;--bs-success: #18bc9c;--bs-info: #3498db;--bs-warning: #f39c12;--bs-danger: #e74c3c;--bs-light: #ecf0f1;--bs-dark: #7b8a8b;--bs-default-rgb: 108, 117, 125;--bs-primary-rgb: 44, 62, 80;--bs-secondary-rgb: 108, 117, 125;--bs-success-rgb: 24, 188, 156;--bs-info-rgb: 52, 152, 219;--bs-warning-rgb: 243, 156, 18;--bs-danger-rgb: 231, 76, 60;--bs-light-rgb: 236, 240, 241;--bs-dark-rgb: 123, 138, 139;--bs-white-rgb: 255, 255, 255;--bs-black-rgb: 0, 0, 0;--bs-body-color-rgb: 33, 37, 41;--bs-body-bg-rgb: 255, 255, 255;--bs-font-sans-serif: Lato, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-root-font-size: 17px;--bs-body-font-family: var(--bs-font-sans-serif);--bs-body-font-size: 1rem;--bs-body-font-weight: 400;--bs-body-line-height: 1.5;--bs-body-color: #212529;--bs-body-bg: #fff}*,*::before,*::after{box-sizing:border-box}:root{font-size:var(--bs-root-font-size)}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}hr:not([size]){height:1px}h6,.h6,h5,.h5,h4,.h4,h3,.h3,h2,.h2,h1,.h1{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}h1,.h1{font-size:calc(1.325rem + 0.9vw)}@media(min-width: 1200px){h1,.h1{font-size:2rem}}h2,.h2{font-size:calc(1.29rem + 0.48vw)}@media(min-width: 1200px){h2,.h2{font-size:1.65rem}}h3,.h3{font-size:calc(1.27rem + 0.24vw)}@media(min-width: 1200px){h3,.h3{font-size:1.45rem}}h4,.h4{font-size:1.25rem}h5,.h5{font-size:1.1rem}h6,.h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title],abbr[data-bs-original-title]{text-decoration:underline dotted;-webkit-text-decoration:underline dotted;-moz-text-decoration:underline dotted;-ms-text-decoration:underline dotted;-o-text-decoration:underline dotted;cursor:help;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem;padding:.625rem 1.25rem;border-left:.25rem solid #ecf0f1}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}b,strong{font-weight:bolder}small,.small{font-size:0.875em}mark,.mark{padding:.2em;background-color:#fcf8e3}sub,sup{position:relative;font-size:0.75em;line-height:0;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}a{color:#18bc9c;text-decoration:underline;-webkit-text-decoration:underline;-moz-text-decoration:underline;-ms-text-decoration:underline;-o-text-decoration:underline}a:hover{color:#13967d}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:var(--bs-font-monospace);font-size:1em;direction:ltr /* rtl:ignore */;unicode-bidi:bidi-override}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:0.875em;color:#000;background-color:#f6f6f6;padding:.5rem;border:1px solid #dee2e6;border-radius:.25rem}pre code{background-color:rgba(0,0,0,0);font-size:inherit;color:inherit;word-break:normal}code{font-size:0.875em;color:#9753b8;background-color:#f6f6f6;border-radius:.25rem;padding:.125rem .25rem;word-wrap:break-word}a>code{color:inherit}kbd{padding:.4rem .4rem;font-size:0.875em;color:#fff;background-color:#212529;border-radius:.2em}kbd kbd{padding:0;font-size:1em;font-weight:700}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}thead,tbody,tfoot,tr,td,th{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]::-webkit-calendar-picker-indicator{display:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button:not(:disabled),[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + 0.3vw);line-height:inherit}@media(min-width: 1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-text,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none !important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:0.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:0.875em;color:#6c757d}.blockquote-footer::before{content:"— "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:0.875em;color:#6c757d}.grid{display:grid;grid-template-rows:repeat(var(--bs-rows, 1), 1fr);grid-template-columns:repeat(var(--bs-columns, 12), 1fr);gap:var(--bs-gap, 1.5rem)}.grid .g-col-1{grid-column:auto/span 1}.grid .g-col-2{grid-column:auto/span 2}.grid .g-col-3{grid-column:auto/span 3}.grid .g-col-4{grid-column:auto/span 4}.grid .g-col-5{grid-column:auto/span 5}.grid .g-col-6{grid-column:auto/span 6}.grid .g-col-7{grid-column:auto/span 7}.grid .g-col-8{grid-column:auto/span 8}.grid .g-col-9{grid-column:auto/span 9}.grid .g-col-10{grid-column:auto/span 10}.grid .g-col-11{grid-column:auto/span 11}.grid .g-col-12{grid-column:auto/span 12}.grid .g-start-1{grid-column-start:1}.grid .g-start-2{grid-column-start:2}.grid .g-start-3{grid-column-start:3}.grid .g-start-4{grid-column-start:4}.grid .g-start-5{grid-column-start:5}.grid .g-start-6{grid-column-start:6}.grid .g-start-7{grid-column-start:7}.grid .g-start-8{grid-column-start:8}.grid .g-start-9{grid-column-start:9}.grid .g-start-10{grid-column-start:10}.grid .g-start-11{grid-column-start:11}@media(min-width: 576px){.grid .g-col-sm-1{grid-column:auto/span 1}.grid .g-col-sm-2{grid-column:auto/span 2}.grid .g-col-sm-3{grid-column:auto/span 3}.grid .g-col-sm-4{grid-column:auto/span 4}.grid .g-col-sm-5{grid-column:auto/span 5}.grid .g-col-sm-6{grid-column:auto/span 6}.grid .g-col-sm-7{grid-column:auto/span 7}.grid .g-col-sm-8{grid-column:auto/span 8}.grid .g-col-sm-9{grid-column:auto/span 9}.grid .g-col-sm-10{grid-column:auto/span 10}.grid .g-col-sm-11{grid-column:auto/span 11}.grid .g-col-sm-12{grid-column:auto/span 12}.grid .g-start-sm-1{grid-column-start:1}.grid .g-start-sm-2{grid-column-start:2}.grid .g-start-sm-3{grid-column-start:3}.grid .g-start-sm-4{grid-column-start:4}.grid .g-start-sm-5{grid-column-start:5}.grid .g-start-sm-6{grid-column-start:6}.grid .g-start-sm-7{grid-column-start:7}.grid .g-start-sm-8{grid-column-start:8}.grid .g-start-sm-9{grid-column-start:9}.grid .g-start-sm-10{grid-column-start:10}.grid .g-start-sm-11{grid-column-start:11}}@media(min-width: 768px){.grid .g-col-md-1{grid-column:auto/span 1}.grid .g-col-md-2{grid-column:auto/span 2}.grid .g-col-md-3{grid-column:auto/span 3}.grid .g-col-md-4{grid-column:auto/span 4}.grid .g-col-md-5{grid-column:auto/span 5}.grid .g-col-md-6{grid-column:auto/span 6}.grid .g-col-md-7{grid-column:auto/span 7}.grid .g-col-md-8{grid-column:auto/span 8}.grid .g-col-md-9{grid-column:auto/span 9}.grid .g-col-md-10{grid-column:auto/span 10}.grid .g-col-md-11{grid-column:auto/span 11}.grid .g-col-md-12{grid-column:auto/span 12}.grid .g-start-md-1{grid-column-start:1}.grid .g-start-md-2{grid-column-start:2}.grid .g-start-md-3{grid-column-start:3}.grid .g-start-md-4{grid-column-start:4}.grid .g-start-md-5{grid-column-start:5}.grid .g-start-md-6{grid-column-start:6}.grid .g-start-md-7{grid-column-start:7}.grid .g-start-md-8{grid-column-start:8}.grid .g-start-md-9{grid-column-start:9}.grid .g-start-md-10{grid-column-start:10}.grid .g-start-md-11{grid-column-start:11}}@media(min-width: 992px){.grid .g-col-lg-1{grid-column:auto/span 1}.grid .g-col-lg-2{grid-column:auto/span 2}.grid .g-col-lg-3{grid-column:auto/span 3}.grid .g-col-lg-4{grid-column:auto/span 4}.grid .g-col-lg-5{grid-column:auto/span 5}.grid .g-col-lg-6{grid-column:auto/span 6}.grid .g-col-lg-7{grid-column:auto/span 7}.grid .g-col-lg-8{grid-column:auto/span 8}.grid .g-col-lg-9{grid-column:auto/span 9}.grid .g-col-lg-10{grid-column:auto/span 10}.grid .g-col-lg-11{grid-column:auto/span 11}.grid .g-col-lg-12{grid-column:auto/span 12}.grid .g-start-lg-1{grid-column-start:1}.grid .g-start-lg-2{grid-column-start:2}.grid .g-start-lg-3{grid-column-start:3}.grid .g-start-lg-4{grid-column-start:4}.grid .g-start-lg-5{grid-column-start:5}.grid .g-start-lg-6{grid-column-start:6}.grid .g-start-lg-7{grid-column-start:7}.grid .g-start-lg-8{grid-column-start:8}.grid .g-start-lg-9{grid-column-start:9}.grid .g-start-lg-10{grid-column-start:10}.grid .g-start-lg-11{grid-column-start:11}}@media(min-width: 1200px){.grid .g-col-xl-1{grid-column:auto/span 1}.grid .g-col-xl-2{grid-column:auto/span 2}.grid .g-col-xl-3{grid-column:auto/span 3}.grid .g-col-xl-4{grid-column:auto/span 4}.grid .g-col-xl-5{grid-column:auto/span 5}.grid .g-col-xl-6{grid-column:auto/span 6}.grid .g-col-xl-7{grid-column:auto/span 7}.grid .g-col-xl-8{grid-column:auto/span 8}.grid .g-col-xl-9{grid-column:auto/span 9}.grid .g-col-xl-10{grid-column:auto/span 10}.grid .g-col-xl-11{grid-column:auto/span 11}.grid .g-col-xl-12{grid-column:auto/span 12}.grid .g-start-xl-1{grid-column-start:1}.grid .g-start-xl-2{grid-column-start:2}.grid .g-start-xl-3{grid-column-start:3}.grid .g-start-xl-4{grid-column-start:4}.grid .g-start-xl-5{grid-column-start:5}.grid .g-start-xl-6{grid-column-start:6}.grid .g-start-xl-7{grid-column-start:7}.grid .g-start-xl-8{grid-column-start:8}.grid .g-start-xl-9{grid-column-start:9}.grid .g-start-xl-10{grid-column-start:10}.grid .g-start-xl-11{grid-column-start:11}}@media(min-width: 1400px){.grid .g-col-xxl-1{grid-column:auto/span 1}.grid .g-col-xxl-2{grid-column:auto/span 2}.grid .g-col-xxl-3{grid-column:auto/span 3}.grid .g-col-xxl-4{grid-column:auto/span 4}.grid .g-col-xxl-5{grid-column:auto/span 5}.grid .g-col-xxl-6{grid-column:auto/span 6}.grid .g-col-xxl-7{grid-column:auto/span 7}.grid .g-col-xxl-8{grid-column:auto/span 8}.grid .g-col-xxl-9{grid-column:auto/span 9}.grid .g-col-xxl-10{grid-column:auto/span 10}.grid .g-col-xxl-11{grid-column:auto/span 11}.grid .g-col-xxl-12{grid-column:auto/span 12}.grid .g-start-xxl-1{grid-column-start:1}.grid .g-start-xxl-2{grid-column-start:2}.grid .g-start-xxl-3{grid-column-start:3}.grid .g-start-xxl-4{grid-column-start:4}.grid .g-start-xxl-5{grid-column-start:5}.grid .g-start-xxl-6{grid-column-start:6}.grid .g-start-xxl-7{grid-column-start:7}.grid .g-start-xxl-8{grid-column-start:8}.grid .g-start-xxl-9{grid-column-start:9}.grid .g-start-xxl-10{grid-column-start:10}.grid .g-start-xxl-11{grid-column-start:11}}.table{--bs-table-bg: transparent;--bs-table-accent-bg: transparent;--bs-table-striped-color: #212529;--bs-table-striped-bg: rgba(0, 0, 0, 0.05);--bs-table-active-color: #212529;--bs-table-active-bg: rgba(0, 0, 0, 0.1);--bs-table-hover-color: #212529;--bs-table-hover-bg: rgba(0, 0, 0, 0.075);width:100%;margin-bottom:1rem;color:#212529;vertical-align:top;border-color:#dee2e6}.table>:not(caption)>*>*{padding:.5rem .5rem;background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-accent-bg)}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table>:not(:first-child){border-top:2px solid #9ba5ae}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.table-bordered>:not(caption)>*{border-width:1px 0}.table-bordered>:not(caption)>*>*{border-width:0 1px}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-accent-bg: var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}.table-active{--bs-table-accent-bg: var(--bs-table-active-bg);color:var(--bs-table-active-color)}.table-hover>tbody>tr:hover>*{--bs-table-accent-bg: var(--bs-table-hover-bg);color:var(--bs-table-hover-color)}.table-primary{--bs-table-bg: #2c3e50;--bs-table-striped-bg: #374859;--bs-table-striped-color: #fff;--bs-table-active-bg: #415162;--bs-table-active-color: #fff;--bs-table-hover-bg: #3c4c5d;--bs-table-hover-color: #fff;color:#fff;border-color:#415162}.table-secondary{--bs-table-bg: #6c757d;--bs-table-striped-bg: #737c84;--bs-table-striped-color: #fff;--bs-table-active-bg: #7b838a;--bs-table-active-color: #fff;--bs-table-hover-bg: #777f87;--bs-table-hover-color: #fff;color:#fff;border-color:#7b838a}.table-success{--bs-table-bg: #18bc9c;--bs-table-striped-bg: #24bfa1;--bs-table-striped-color: #fff;--bs-table-active-bg: #2fc3a6;--bs-table-active-color: #fff;--bs-table-hover-bg: #29c1a3;--bs-table-hover-color: #fff;color:#fff;border-color:#2fc3a6}.table-info{--bs-table-bg: #3498db;--bs-table-striped-bg: #3e9ddd;--bs-table-striped-color: #fff;--bs-table-active-bg: #48a2df;--bs-table-active-color: #fff;--bs-table-hover-bg: #43a0de;--bs-table-hover-color: #fff;color:#fff;border-color:#48a2df}.table-warning{--bs-table-bg: #f39c12;--bs-table-striped-bg: #f4a11e;--bs-table-striped-color: #fff;--bs-table-active-bg: #f4a62a;--bs-table-active-color: #000;--bs-table-hover-bg: #f4a324;--bs-table-hover-color: #fff;color:#fff;border-color:#f4a62a}.table-danger{--bs-table-bg: #e74c3c;--bs-table-striped-bg: #e85546;--bs-table-striped-color: #fff;--bs-table-active-bg: #e95e50;--bs-table-active-color: #fff;--bs-table-hover-bg: #e9594b;--bs-table-hover-color: #fff;color:#fff;border-color:#e95e50}.table-light{--bs-table-bg: #ecf0f1;--bs-table-striped-bg: #e0e4e5;--bs-table-striped-color: #000;--bs-table-active-bg: #d4d8d9;--bs-table-active-color: #000;--bs-table-hover-bg: #dadedf;--bs-table-hover-color: #000;color:#000;border-color:#d4d8d9}.table-dark{--bs-table-bg: #7b8a8b;--bs-table-striped-bg: #829091;--bs-table-striped-color: #fff;--bs-table-active-bg: #889697;--bs-table-active-color: #fff;--bs-table-hover-bg: #859394;--bs-table-hover-color: #fff;color:#fff;border-color:#889697}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media(max-width: 575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label,.shiny-input-container .control-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(0.375rem + 1px);padding-bottom:calc(0.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(0.5rem + 1px);padding-bottom:calc(0.5rem + 1px);font-size:1.25rem}.col-form-label-sm{padding-top:calc(0.25rem + 1px);padding-bottom:calc(0.25rem + 1px);font-size:0.875rem}.form-text{margin-top:.25rem;font-size:0.875em;color:#6c757d}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:#212529;background-color:#fff;border-color:#969fa8;outline:0;box-shadow:0 0 0 .25rem rgba(44,62,80,.25)}.form-control::-webkit-date-and-time-value{height:1.5em}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#ecf0f1;opacity:1}.form-control::file-selector-button{padding:.375rem .75rem;margin:-0.375rem -0.75rem;margin-inline-end:.75rem;color:#212529;background-color:#ecf0f1;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#e0e4e5}.form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-0.375rem -0.75rem;margin-inline-end:.75rem;color:#212529;background-color:#ecf0f1;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-control::-webkit-file-upload-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:#e0e4e5}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:#212529;background-color:rgba(0,0,0,0);border:solid rgba(0,0,0,0);border-width:1px 0}.form-control-plaintext.form-control-sm,.form-control-plaintext.form-control-lg{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + 0.5rem + 2px);padding:.25rem .5rem;font-size:0.875rem;border-radius:.2em}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-0.25rem -0.5rem;margin-inline-end:.5rem}.form-control-sm::-webkit-file-upload-button{padding:.25rem .5rem;margin:-0.25rem -0.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-0.5rem -1rem;margin-inline-end:1rem}.form-control-lg::-webkit-file-upload-button{padding:.5rem 1rem;margin:-0.5rem -1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + 0.75rem + 2px)}textarea.form-control-sm{min-height:calc(1.5em + 0.5rem + 2px)}textarea.form-control-lg{min-height:calc(1.5em + 1rem + 2px)}.form-control-color{width:3rem;height:auto;padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{height:1.5em;border-radius:.25rem}.form-control-color::-webkit-color-swatch{height:1.5em;border-radius:.25rem}.form-select{display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;-moz-padding-start:calc(0.75rem - 3px);font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none}@media(prefers-reduced-motion: reduce){.form-select{transition:none}}.form-select:focus{border-color:#969fa8;outline:0;box-shadow:0 0 0 .25rem rgba(44,62,80,.25)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:#ecf0f1}.form-select:-moz-focusring{color:rgba(0,0,0,0);text-shadow:0 0 0 #212529}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:0.875rem;border-radius:.2em}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem;border-radius:.3rem}.form-check,.shiny-input-container .checkbox,.shiny-input-container .radio{display:block;min-height:1.5rem;padding-left:0;margin-bottom:.125rem}.form-check .form-check-input,.form-check .shiny-input-container .checkbox input,.form-check .shiny-input-container .radio input,.shiny-input-container .checkbox .form-check-input,.shiny-input-container .checkbox .shiny-input-container .checkbox input,.shiny-input-container .checkbox .shiny-input-container .radio input,.shiny-input-container .radio .form-check-input,.shiny-input-container .radio .shiny-input-container .checkbox input,.shiny-input-container .radio .shiny-input-container .radio input{float:left;margin-left:0}.form-check-input,.shiny-input-container .checkbox input,.shiny-input-container .checkbox-inline input,.shiny-input-container .radio input,.shiny-input-container .radio-inline input{width:1em;height:1em;margin-top:.25em;vertical-align:top;background-color:#fff;background-repeat:no-repeat;background-position:center;background-size:contain;border:1px solid rgba(0,0,0,.25);appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;color-adjust:exact;-webkit-print-color-adjust:exact}.form-check-input[type=checkbox],.shiny-input-container .checkbox input[type=checkbox],.shiny-input-container .checkbox-inline input[type=checkbox],.shiny-input-container .radio input[type=checkbox],.shiny-input-container .radio-inline input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio],.shiny-input-container .checkbox input[type=radio],.shiny-input-container .checkbox-inline input[type=radio],.shiny-input-container .radio input[type=radio],.shiny-input-container .radio-inline input[type=radio]{border-radius:50%}.form-check-input:active,.shiny-input-container .checkbox input:active,.shiny-input-container .checkbox-inline input:active,.shiny-input-container .radio input:active,.shiny-input-container .radio-inline input:active{filter:brightness(90%)}.form-check-input:focus,.shiny-input-container .checkbox input:focus,.shiny-input-container .checkbox-inline input:focus,.shiny-input-container .radio input:focus,.shiny-input-container .radio-inline input:focus{border-color:#969fa8;outline:0;box-shadow:0 0 0 .25rem rgba(44,62,80,.25)}.form-check-input:checked,.shiny-input-container .checkbox input:checked,.shiny-input-container .checkbox-inline input:checked,.shiny-input-container .radio input:checked,.shiny-input-container .radio-inline input:checked{background-color:#2c3e50;border-color:#2c3e50}.form-check-input:checked[type=checkbox],.shiny-input-container .checkbox input:checked[type=checkbox],.shiny-input-container .checkbox-inline input:checked[type=checkbox],.shiny-input-container .radio input:checked[type=checkbox],.shiny-input-container .radio-inline input:checked[type=checkbox]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio],.shiny-input-container .checkbox input:checked[type=radio],.shiny-input-container .checkbox-inline input:checked[type=radio],.shiny-input-container .radio input:checked[type=radio],.shiny-input-container .radio-inline input:checked[type=radio]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate,.shiny-input-container .checkbox input[type=checkbox]:indeterminate,.shiny-input-container .checkbox-inline input[type=checkbox]:indeterminate,.shiny-input-container .radio input[type=checkbox]:indeterminate,.shiny-input-container .radio-inline input[type=checkbox]:indeterminate{background-color:#2c3e50;border-color:#2c3e50;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled,.shiny-input-container .checkbox input:disabled,.shiny-input-container .checkbox-inline input:disabled,.shiny-input-container .radio input:disabled,.shiny-input-container .radio-inline input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input[disabled]~.form-check-label,.form-check-input[disabled]~span,.form-check-input:disabled~.form-check-label,.form-check-input:disabled~span,.shiny-input-container .checkbox input[disabled]~.form-check-label,.shiny-input-container .checkbox input[disabled]~span,.shiny-input-container .checkbox input:disabled~.form-check-label,.shiny-input-container .checkbox input:disabled~span,.shiny-input-container .checkbox-inline input[disabled]~.form-check-label,.shiny-input-container .checkbox-inline input[disabled]~span,.shiny-input-container .checkbox-inline input:disabled~.form-check-label,.shiny-input-container .checkbox-inline input:disabled~span,.shiny-input-container .radio input[disabled]~.form-check-label,.shiny-input-container .radio input[disabled]~span,.shiny-input-container .radio input:disabled~.form-check-label,.shiny-input-container .radio input:disabled~span,.shiny-input-container .radio-inline input[disabled]~.form-check-label,.shiny-input-container .radio-inline input[disabled]~span,.shiny-input-container .radio-inline input:disabled~.form-check-label,.shiny-input-container .radio-inline input:disabled~span{opacity:.5}.form-check-label,.shiny-input-container .checkbox label,.shiny-input-container .checkbox-inline label,.shiny-input-container .radio label,.shiny-input-container .radio-inline label{cursor:pointer}.form-switch{padding-left:2.5em}.form-switch .form-check-input{width:2em;margin-left:-2.5em;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23969fa8'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-check-inline,.shiny-input-container .checkbox-inline,.shiny-input-container .radio-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.btn-check[disabled]+.btn,.btn-check:disabled+.btn{pointer-events:none;filter:none;opacity:.65}.form-range{width:100%;height:1.5rem;padding:0;background-color:rgba(0,0,0,0);appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(44,62,80,.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(44,62,80,.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-0.25rem;background-color:#2c3e50;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none}@media(prefers-reduced-motion: reduce){.form-range::-webkit-slider-thumb{transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#c0c5cb}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:rgba(0,0,0,0);cursor:pointer;background-color:#dee2e6;border-color:rgba(0,0,0,0);border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#2c3e50;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none}@media(prefers-reduced-motion: reduce){.form-range::-moz-range-thumb{transition:none}}.form-range::-moz-range-thumb:active{background-color:#c0c5cb}.form-range::-moz-range-track{width:100%;height:.5rem;color:rgba(0,0,0,0);cursor:pointer;background-color:#dee2e6;border-color:rgba(0,0,0,0);border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.form-range:disabled::-moz-range-thumb{background-color:#adb5bd}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-select{height:calc(3.5rem + 2px);line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;height:100%;padding:1rem .75rem;pointer-events:none;border:1px solid rgba(0,0,0,0);transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media(prefers-reduced-motion: reduce){.form-floating>label{transition:none}}.form-floating>.form-control{padding:1rem .75rem}.form-floating>.form-control::placeholder{color:rgba(0,0,0,0)}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{opacity:.65;transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem)}.form-floating>.form-control:-webkit-autofill~label{opacity:.65;transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem)}.input-group{position:relative;display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;align-items:stretch;-webkit-align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-select{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-select:focus{z-index:3}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:3}.input-group-text{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:center;white-space:nowrap;background-color:#ecf0f1;border:1px solid #ced4da;border-radius:.25rem}.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text,.input-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text,.input-group-sm>.btn{padding:.25rem .5rem;font-size:0.875rem;border-radius:.2em}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu),.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu),.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:0.875em;color:#18bc9c}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:0.875rem;color:#fff;background-color:rgba(24,188,156,.9);border-radius:.25rem}.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip,.is-valid~.valid-feedback,.is-valid~.valid-tooltip{display:block}.was-validated .form-control:valid,.form-control.is-valid{border-color:#18bc9c;padding-right:calc(1.5em + 0.75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2318bc9c' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(0.375em + 0.1875rem) center;background-size:calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-control:valid:focus,.form-control.is-valid:focus{border-color:#18bc9c;box-shadow:0 0 0 .25rem rgba(24,188,156,.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + 0.75rem);background-position:top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem)}.was-validated .form-select:valid,.form-select.is-valid{border-color:#18bc9c}.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"],.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2318bc9c' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-select:valid:focus,.form-select.is-valid:focus{border-color:#18bc9c;box-shadow:0 0 0 .25rem rgba(24,188,156,.25)}.was-validated .form-check-input:valid,.form-check-input.is-valid{border-color:#18bc9c}.was-validated .form-check-input:valid:checked,.form-check-input.is-valid:checked{background-color:#18bc9c}.was-validated .form-check-input:valid:focus,.form-check-input.is-valid:focus{box-shadow:0 0 0 .25rem rgba(24,188,156,.25)}.was-validated .form-check-input:valid~.form-check-label,.form-check-input.is-valid~.form-check-label{color:#18bc9c}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.was-validated .input-group .form-control:valid,.input-group .form-control.is-valid,.was-validated .input-group .form-select:valid,.input-group .form-select.is-valid{z-index:1}.was-validated .input-group .form-control:valid:focus,.input-group .form-control.is-valid:focus,.was-validated .input-group .form-select:valid:focus,.input-group .form-select.is-valid:focus{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:0.875em;color:#e74c3c}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:0.875rem;color:#fff;background-color:rgba(231,76,60,.9);border-radius:.25rem}.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip,.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip{display:block}.was-validated .form-control:invalid,.form-control.is-invalid{border-color:#e74c3c;padding-right:calc(1.5em + 0.75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23e74c3c'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23e74c3c' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(0.375em + 0.1875rem) center;background-size:calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:#e74c3c;box-shadow:0 0 0 .25rem rgba(231,76,60,.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + 0.75rem);background-position:top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem)}.was-validated .form-select:invalid,.form-select.is-invalid{border-color:#e74c3c}.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"],.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23e74c3c'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23e74c3c' stroke='none'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-select:invalid:focus,.form-select.is-invalid:focus{border-color:#e74c3c;box-shadow:0 0 0 .25rem rgba(231,76,60,.25)}.was-validated .form-check-input:invalid,.form-check-input.is-invalid{border-color:#e74c3c}.was-validated .form-check-input:invalid:checked,.form-check-input.is-invalid:checked{background-color:#e74c3c}.was-validated .form-check-input:invalid:focus,.form-check-input.is-invalid:focus{box-shadow:0 0 0 .25rem rgba(231,76,60,.25)}.was-validated .form-check-input:invalid~.form-check-label,.form-check-input.is-invalid~.form-check-label{color:#e74c3c}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.was-validated .input-group .form-control:invalid,.input-group .form-control.is-invalid,.was-validated .input-group .form-select:invalid,.input-group .form-select.is-invalid{z-index:2}.was-validated .input-group .form-control:invalid:focus,.input-group .form-control.is-invalid:focus,.was-validated .input-group .form-select:invalid:focus,.input-group .form-select.is-invalid:focus{z-index:3}.btn{display:inline-block;font-weight:400;line-height:1.5;color:#212529;text-align:center;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;background-color:rgba(0,0,0,0);border:1px solid rgba(0,0,0,0);padding:.375rem .75rem;font-size:1rem;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.btn{transition:none}}.btn:hover{color:#212529}.btn-check:focus+.btn,.btn:focus{outline:0;box-shadow:0 0 0 .25rem rgba(44,62,80,.25)}.btn:disabled,.btn.disabled,fieldset:disabled .btn{pointer-events:none;opacity:.65}.btn-default{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-default:hover{color:#fff;background-color:#5c636a;border-color:#565e64}.btn-check:focus+.btn-default,.btn-default:focus{color:#fff;background-color:#5c636a;border-color:#565e64;box-shadow:0 0 0 .25rem rgba(130,138,145,.5)}.btn-check:checked+.btn-default,.btn-check:active+.btn-default,.btn-default:active,.btn-default.active,.show>.btn-default.dropdown-toggle{color:#fff;background-color:#565e64;border-color:#51585e}.btn-check:checked+.btn-default:focus,.btn-check:active+.btn-default:focus,.btn-default:active:focus,.btn-default.active:focus,.show>.btn-default.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(130,138,145,.5)}.btn-default:disabled,.btn-default.disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-primary{color:#fff;background-color:#2c3e50;border-color:#2c3e50}.btn-primary:hover{color:#fff;background-color:#253544;border-color:#233240}.btn-check:focus+.btn-primary,.btn-primary:focus{color:#fff;background-color:#253544;border-color:#233240;box-shadow:0 0 0 .25rem rgba(76,91,106,.5)}.btn-check:checked+.btn-primary,.btn-check:active+.btn-primary,.btn-primary:active,.btn-primary.active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#233240;border-color:#212f3c}.btn-check:checked+.btn-primary:focus,.btn-check:active+.btn-primary:focus,.btn-primary:active:focus,.btn-primary.active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(76,91,106,.5)}.btn-primary:disabled,.btn-primary.disabled{color:#fff;background-color:#2c3e50;border-color:#2c3e50}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5c636a;border-color:#565e64}.btn-check:focus+.btn-secondary,.btn-secondary:focus{color:#fff;background-color:#5c636a;border-color:#565e64;box-shadow:0 0 0 .25rem rgba(130,138,145,.5)}.btn-check:checked+.btn-secondary,.btn-check:active+.btn-secondary,.btn-secondary:active,.btn-secondary.active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#565e64;border-color:#51585e}.btn-check:checked+.btn-secondary:focus,.btn-check:active+.btn-secondary:focus,.btn-secondary:active:focus,.btn-secondary.active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(130,138,145,.5)}.btn-secondary:disabled,.btn-secondary.disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-success{color:#fff;background-color:#18bc9c;border-color:#18bc9c}.btn-success:hover{color:#fff;background-color:#14a085;border-color:#13967d}.btn-check:focus+.btn-success,.btn-success:focus{color:#fff;background-color:#14a085;border-color:#13967d;box-shadow:0 0 0 .25rem rgba(59,198,171,.5)}.btn-check:checked+.btn-success,.btn-check:active+.btn-success,.btn-success:active,.btn-success.active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#13967d;border-color:#128d75}.btn-check:checked+.btn-success:focus,.btn-check:active+.btn-success:focus,.btn-success:active:focus,.btn-success.active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(59,198,171,.5)}.btn-success:disabled,.btn-success.disabled{color:#fff;background-color:#18bc9c;border-color:#18bc9c}.btn-info{color:#fff;background-color:#3498db;border-color:#3498db}.btn-info:hover{color:#fff;background-color:#2c81ba;border-color:#2a7aaf}.btn-check:focus+.btn-info,.btn-info:focus{color:#fff;background-color:#2c81ba;border-color:#2a7aaf;box-shadow:0 0 0 .25rem rgba(82,167,224,.5)}.btn-check:checked+.btn-info,.btn-check:active+.btn-info,.btn-info:active,.btn-info.active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#2a7aaf;border-color:#2772a4}.btn-check:checked+.btn-info:focus,.btn-check:active+.btn-info:focus,.btn-info:active:focus,.btn-info.active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(82,167,224,.5)}.btn-info:disabled,.btn-info.disabled{color:#fff;background-color:#3498db;border-color:#3498db}.btn-warning{color:#fff;background-color:#f39c12;border-color:#f39c12}.btn-warning:hover{color:#fff;background-color:#cf850f;border-color:#c27d0e}.btn-check:focus+.btn-warning,.btn-warning:focus{color:#fff;background-color:#cf850f;border-color:#c27d0e;box-shadow:0 0 0 .25rem rgba(245,171,54,.5)}.btn-check:checked+.btn-warning,.btn-check:active+.btn-warning,.btn-warning:active,.btn-warning.active,.show>.btn-warning.dropdown-toggle{color:#fff;background-color:#c27d0e;border-color:#b6750e}.btn-check:checked+.btn-warning:focus,.btn-check:active+.btn-warning:focus,.btn-warning:active:focus,.btn-warning.active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(245,171,54,.5)}.btn-warning:disabled,.btn-warning.disabled{color:#fff;background-color:#f39c12;border-color:#f39c12}.btn-danger{color:#fff;background-color:#e74c3c;border-color:#e74c3c}.btn-danger:hover{color:#fff;background-color:#c44133;border-color:#b93d30}.btn-check:focus+.btn-danger,.btn-danger:focus{color:#fff;background-color:#c44133;border-color:#b93d30;box-shadow:0 0 0 .25rem rgba(235,103,89,.5)}.btn-check:checked+.btn-danger,.btn-check:active+.btn-danger,.btn-danger:active,.btn-danger.active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#b93d30;border-color:#ad392d}.btn-check:checked+.btn-danger:focus,.btn-check:active+.btn-danger:focus,.btn-danger:active:focus,.btn-danger.active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(235,103,89,.5)}.btn-danger:disabled,.btn-danger.disabled{color:#fff;background-color:#e74c3c;border-color:#e74c3c}.btn-light{color:#000;background-color:#ecf0f1;border-color:#ecf0f1}.btn-light:hover{color:#000;background-color:#eff2f3;border-color:#eef2f2}.btn-check:focus+.btn-light,.btn-light:focus{color:#000;background-color:#eff2f3;border-color:#eef2f2;box-shadow:0 0 0 .25rem rgba(201,204,205,.5)}.btn-check:checked+.btn-light,.btn-check:active+.btn-light,.btn-light:active,.btn-light.active,.show>.btn-light.dropdown-toggle{color:#000;background-color:#f0f3f4;border-color:#eef2f2}.btn-check:checked+.btn-light:focus,.btn-check:active+.btn-light:focus,.btn-light:active:focus,.btn-light.active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(201,204,205,.5)}.btn-light:disabled,.btn-light.disabled{color:#000;background-color:#ecf0f1;border-color:#ecf0f1}.btn-dark{color:#fff;background-color:#7b8a8b;border-color:#7b8a8b}.btn-dark:hover{color:#fff;background-color:#697576;border-color:#626e6f}.btn-check:focus+.btn-dark,.btn-dark:focus{color:#fff;background-color:#697576;border-color:#626e6f;box-shadow:0 0 0 .25rem rgba(143,156,156,.5)}.btn-check:checked+.btn-dark,.btn-check:active+.btn-dark,.btn-dark:active,.btn-dark.active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#626e6f;border-color:#5c6868}.btn-check:checked+.btn-dark:focus,.btn-check:active+.btn-dark:focus,.btn-dark:active:focus,.btn-dark.active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(143,156,156,.5)}.btn-dark:disabled,.btn-dark.disabled{color:#fff;background-color:#7b8a8b;border-color:#7b8a8b}.btn-outline-default{color:#6c757d;border-color:#6c757d;background-color:rgba(0,0,0,0)}.btn-outline-default:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:focus+.btn-outline-default,.btn-outline-default:focus{box-shadow:0 0 0 .25rem rgba(108,117,125,.5)}.btn-check:checked+.btn-outline-default,.btn-check:active+.btn-outline-default,.btn-outline-default:active,.btn-outline-default.active,.btn-outline-default.dropdown-toggle.show{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:checked+.btn-outline-default:focus,.btn-check:active+.btn-outline-default:focus,.btn-outline-default:active:focus,.btn-outline-default.active:focus,.btn-outline-default.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem rgba(108,117,125,.5)}.btn-outline-default:disabled,.btn-outline-default.disabled{color:#6c757d;background-color:rgba(0,0,0,0)}.btn-outline-primary{color:#2c3e50;border-color:#2c3e50;background-color:rgba(0,0,0,0)}.btn-outline-primary:hover{color:#fff;background-color:#2c3e50;border-color:#2c3e50}.btn-check:focus+.btn-outline-primary,.btn-outline-primary:focus{box-shadow:0 0 0 .25rem rgba(44,62,80,.5)}.btn-check:checked+.btn-outline-primary,.btn-check:active+.btn-outline-primary,.btn-outline-primary:active,.btn-outline-primary.active,.btn-outline-primary.dropdown-toggle.show{color:#fff;background-color:#2c3e50;border-color:#2c3e50}.btn-check:checked+.btn-outline-primary:focus,.btn-check:active+.btn-outline-primary:focus,.btn-outline-primary:active:focus,.btn-outline-primary.active:focus,.btn-outline-primary.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem rgba(44,62,80,.5)}.btn-outline-primary:disabled,.btn-outline-primary.disabled{color:#2c3e50;background-color:rgba(0,0,0,0)}.btn-outline-secondary{color:#6c757d;border-color:#6c757d;background-color:rgba(0,0,0,0)}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:focus+.btn-outline-secondary,.btn-outline-secondary:focus{box-shadow:0 0 0 .25rem rgba(108,117,125,.5)}.btn-check:checked+.btn-outline-secondary,.btn-check:active+.btn-outline-secondary,.btn-outline-secondary:active,.btn-outline-secondary.active,.btn-outline-secondary.dropdown-toggle.show{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:checked+.btn-outline-secondary:focus,.btn-check:active+.btn-outline-secondary:focus,.btn-outline-secondary:active:focus,.btn-outline-secondary.active:focus,.btn-outline-secondary.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem rgba(108,117,125,.5)}.btn-outline-secondary:disabled,.btn-outline-secondary.disabled{color:#6c757d;background-color:rgba(0,0,0,0)}.btn-outline-success{color:#18bc9c;border-color:#18bc9c;background-color:rgba(0,0,0,0)}.btn-outline-success:hover{color:#fff;background-color:#18bc9c;border-color:#18bc9c}.btn-check:focus+.btn-outline-success,.btn-outline-success:focus{box-shadow:0 0 0 .25rem rgba(24,188,156,.5)}.btn-check:checked+.btn-outline-success,.btn-check:active+.btn-outline-success,.btn-outline-success:active,.btn-outline-success.active,.btn-outline-success.dropdown-toggle.show{color:#fff;background-color:#18bc9c;border-color:#18bc9c}.btn-check:checked+.btn-outline-success:focus,.btn-check:active+.btn-outline-success:focus,.btn-outline-success:active:focus,.btn-outline-success.active:focus,.btn-outline-success.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem rgba(24,188,156,.5)}.btn-outline-success:disabled,.btn-outline-success.disabled{color:#18bc9c;background-color:rgba(0,0,0,0)}.btn-outline-info{color:#3498db;border-color:#3498db;background-color:rgba(0,0,0,0)}.btn-outline-info:hover{color:#fff;background-color:#3498db;border-color:#3498db}.btn-check:focus+.btn-outline-info,.btn-outline-info:focus{box-shadow:0 0 0 .25rem rgba(52,152,219,.5)}.btn-check:checked+.btn-outline-info,.btn-check:active+.btn-outline-info,.btn-outline-info:active,.btn-outline-info.active,.btn-outline-info.dropdown-toggle.show{color:#fff;background-color:#3498db;border-color:#3498db}.btn-check:checked+.btn-outline-info:focus,.btn-check:active+.btn-outline-info:focus,.btn-outline-info:active:focus,.btn-outline-info.active:focus,.btn-outline-info.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem rgba(52,152,219,.5)}.btn-outline-info:disabled,.btn-outline-info.disabled{color:#3498db;background-color:rgba(0,0,0,0)}.btn-outline-warning{color:#f39c12;border-color:#f39c12;background-color:rgba(0,0,0,0)}.btn-outline-warning:hover{color:#fff;background-color:#f39c12;border-color:#f39c12}.btn-check:focus+.btn-outline-warning,.btn-outline-warning:focus{box-shadow:0 0 0 .25rem rgba(243,156,18,.5)}.btn-check:checked+.btn-outline-warning,.btn-check:active+.btn-outline-warning,.btn-outline-warning:active,.btn-outline-warning.active,.btn-outline-warning.dropdown-toggle.show{color:#fff;background-color:#f39c12;border-color:#f39c12}.btn-check:checked+.btn-outline-warning:focus,.btn-check:active+.btn-outline-warning:focus,.btn-outline-warning:active:focus,.btn-outline-warning.active:focus,.btn-outline-warning.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem rgba(243,156,18,.5)}.btn-outline-warning:disabled,.btn-outline-warning.disabled{color:#f39c12;background-color:rgba(0,0,0,0)}.btn-outline-danger{color:#e74c3c;border-color:#e74c3c;background-color:rgba(0,0,0,0)}.btn-outline-danger:hover{color:#fff;background-color:#e74c3c;border-color:#e74c3c}.btn-check:focus+.btn-outline-danger,.btn-outline-danger:focus{box-shadow:0 0 0 .25rem rgba(231,76,60,.5)}.btn-check:checked+.btn-outline-danger,.btn-check:active+.btn-outline-danger,.btn-outline-danger:active,.btn-outline-danger.active,.btn-outline-danger.dropdown-toggle.show{color:#fff;background-color:#e74c3c;border-color:#e74c3c}.btn-check:checked+.btn-outline-danger:focus,.btn-check:active+.btn-outline-danger:focus,.btn-outline-danger:active:focus,.btn-outline-danger.active:focus,.btn-outline-danger.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem rgba(231,76,60,.5)}.btn-outline-danger:disabled,.btn-outline-danger.disabled{color:#e74c3c;background-color:rgba(0,0,0,0)}.btn-outline-light{color:#ecf0f1;border-color:#ecf0f1;background-color:rgba(0,0,0,0)}.btn-outline-light:hover{color:#000;background-color:#ecf0f1;border-color:#ecf0f1}.btn-check:focus+.btn-outline-light,.btn-outline-light:focus{box-shadow:0 0 0 .25rem rgba(236,240,241,.5)}.btn-check:checked+.btn-outline-light,.btn-check:active+.btn-outline-light,.btn-outline-light:active,.btn-outline-light.active,.btn-outline-light.dropdown-toggle.show{color:#000;background-color:#ecf0f1;border-color:#ecf0f1}.btn-check:checked+.btn-outline-light:focus,.btn-check:active+.btn-outline-light:focus,.btn-outline-light:active:focus,.btn-outline-light.active:focus,.btn-outline-light.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem rgba(236,240,241,.5)}.btn-outline-light:disabled,.btn-outline-light.disabled{color:#ecf0f1;background-color:rgba(0,0,0,0)}.btn-outline-dark{color:#7b8a8b;border-color:#7b8a8b;background-color:rgba(0,0,0,0)}.btn-outline-dark:hover{color:#fff;background-color:#7b8a8b;border-color:#7b8a8b}.btn-check:focus+.btn-outline-dark,.btn-outline-dark:focus{box-shadow:0 0 0 .25rem rgba(123,138,139,.5)}.btn-check:checked+.btn-outline-dark,.btn-check:active+.btn-outline-dark,.btn-outline-dark:active,.btn-outline-dark.active,.btn-outline-dark.dropdown-toggle.show{color:#fff;background-color:#7b8a8b;border-color:#7b8a8b}.btn-check:checked+.btn-outline-dark:focus,.btn-check:active+.btn-outline-dark:focus,.btn-outline-dark:active:focus,.btn-outline-dark.active:focus,.btn-outline-dark.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem rgba(123,138,139,.5)}.btn-outline-dark:disabled,.btn-outline-dark.disabled{color:#7b8a8b;background-color:rgba(0,0,0,0)}.btn-link{font-weight:400;color:#18bc9c;text-decoration:underline;-webkit-text-decoration:underline;-moz-text-decoration:underline;-ms-text-decoration:underline;-o-text-decoration:underline}.btn-link:hover{color:#13967d}.btn-link:disabled,.btn-link.disabled{color:#6c757d}.btn-lg,.btn-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.btn-sm,.btn-group-sm>.btn{padding:.25rem .5rem;font-size:0.875rem;border-radius:.2em}.fade{transition:opacity .15s linear}@media(prefers-reduced-motion: reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .2s ease}@media(prefers-reduced-motion: reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media(prefers-reduced-motion: reduce){.collapsing.collapse-horizontal{transition:none}}.dropup,.dropend,.dropdown,.dropstart{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid rgba(0,0,0,0);border-bottom:0;border-left:.3em solid rgba(0,0,0,0)}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;z-index:1000;display:none;min-width:10rem;padding:.5rem 0;margin:0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:.125rem}.dropdown-menu-start{--bs-position: start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position: end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media(min-width: 576px){.dropdown-menu-sm-start{--bs-position: start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position: end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 768px){.dropdown-menu-md-start{--bs-position: start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position: end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 992px){.dropdown-menu-lg-start{--bs-position: start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position: end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 1200px){.dropdown-menu-xl-start{--bs-position: start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position: end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 1400px){.dropdown-menu-xxl-start{--bs-position: start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position: end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid rgba(0,0,0,0);border-bottom:.3em solid;border-left:.3em solid rgba(0,0,0,0)}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropend .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid rgba(0,0,0,0);border-right:0;border-bottom:.3em solid rgba(0,0,0,0);border-left:.3em solid}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropstart .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle::after{display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid rgba(0,0,0,0);border-right:.3em solid;border-bottom:.3em solid rgba(0,0,0,0)}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid rgba(0,0,0,.15)}.dropdown-item{display:block;width:100%;padding:.25rem 1rem;clear:both;font-weight:400;color:#7b8a8b;text-align:inherit;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;white-space:nowrap;background-color:rgba(0,0,0,0);border:0}.dropdown-item:hover,.dropdown-item:focus{color:#fff;background-color:#2c3e50}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#2c3e50}.dropdown-item.disabled,.dropdown-item:disabled{color:#adb5bd;pointer-events:none;background-color:rgba(0,0,0,0)}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1rem;margin-bottom:0;font-size:0.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1rem;color:#7b8a8b}.dropdown-menu-dark{color:#dee2e6;background-color:#343a40;border-color:rgba(0,0,0,.15)}.dropdown-menu-dark .dropdown-item{color:#dee2e6}.dropdown-menu-dark .dropdown-item:hover,.dropdown-menu-dark .dropdown-item:focus{color:#fff;background-color:rgba(255,255,255,.15)}.dropdown-menu-dark .dropdown-item.active,.dropdown-menu-dark .dropdown-item:active{color:#fff;background-color:#2c3e50}.dropdown-menu-dark .dropdown-item.disabled,.dropdown-menu-dark .dropdown-item:disabled{color:#adb5bd}.dropdown-menu-dark .dropdown-divider{border-color:rgba(0,0,0,.15)}.dropdown-menu-dark .dropdown-item-text{color:#dee2e6}.dropdown-menu-dark .dropdown-header{color:#adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto}.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn:hover,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:1}.btn-toolbar{display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;justify-content:flex-start;-webkit-justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn:not(:first-child),.btn-group>.btn-group:not(:first-child){margin-left:-1px}.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn,.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after{margin-left:0}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;-webkit-flex-direction:column;align-items:flex-start;-webkit-align-items:flex-start;justify-content:center;-webkit-justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn~.btn,.btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 2rem;color:#18bc9c;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media(prefers-reduced-motion: reduce){.nav-link{transition:none}}.nav-link:hover,.nav-link:focus{color:#13967d}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #ecf0f1}.nav-tabs .nav-link{margin-bottom:-1px;background:none;border:1px solid rgba(0,0,0,0);border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{border-color:#ecf0f1 #ecf0f1 #ecf0f1;isolation:isolate}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:rgba(0,0,0,0);border-color:rgba(0,0,0,0)}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:#7b8a8b;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{background:none;border:0;border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#2c3e50}.nav-fill>.nav-link,.nav-fill .nav-item{flex:1 1 auto;-webkit-flex:1 1 auto;text-align:center}.nav-justified>.nav-link,.nav-justified .nav-item{flex-basis:0;-webkit-flex-basis:0;flex-grow:1;-webkit-flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding-top:1rem;padding-bottom:1rem}.navbar>.container-xxl,.navbar>.container-xl,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container,.navbar>.container-fluid{display:flex;display:-webkit-flex;flex-wrap:inherit;-webkit-flex-wrap:inherit;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between}.navbar-brand{padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;white-space:nowrap}.navbar-nav{display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;-webkit-flex-basis:100%;flex-grow:1;-webkit-flex-grow:1;align-items:center;-webkit-align-items:center}.navbar-toggler{padding:.25 0;font-size:1.25rem;line-height:1;background-color:rgba(0,0,0,0);border:1px solid rgba(0,0,0,0);border-radius:.25rem;transition:box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 .25rem}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height, 75vh);overflow-y:auto}@media(min-width: 576px){.navbar-expand-sm{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas-header{display:none}.navbar-expand-sm .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;-webkit-flex-grow:1;visibility:visible !important;background-color:rgba(0,0,0,0);border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-sm .offcanvas-top,.navbar-expand-sm .offcanvas-bottom{height:auto;border-top:0;border-bottom:0}.navbar-expand-sm .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 768px){.navbar-expand-md{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas-header{display:none}.navbar-expand-md .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;-webkit-flex-grow:1;visibility:visible !important;background-color:rgba(0,0,0,0);border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-md .offcanvas-top,.navbar-expand-md .offcanvas-bottom{height:auto;border-top:0;border-bottom:0}.navbar-expand-md .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 992px){.navbar-expand-lg{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas-header{display:none}.navbar-expand-lg .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;-webkit-flex-grow:1;visibility:visible !important;background-color:rgba(0,0,0,0);border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-lg .offcanvas-top,.navbar-expand-lg .offcanvas-bottom{height:auto;border-top:0;border-bottom:0}.navbar-expand-lg .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 1200px){.navbar-expand-xl{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas-header{display:none}.navbar-expand-xl .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;-webkit-flex-grow:1;visibility:visible !important;background-color:rgba(0,0,0,0);border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-xl .offcanvas-top,.navbar-expand-xl .offcanvas-bottom{height:auto;border-top:0;border-bottom:0}.navbar-expand-xl .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 1400px){.navbar-expand-xxl{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;-webkit-flex-grow:1;visibility:visible !important;background-color:rgba(0,0,0,0);border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-xxl .offcanvas-top,.navbar-expand-xxl .offcanvas-bottom{height:auto;border-top:0;border-bottom:0}.navbar-expand-xxl .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas-header{display:none}.navbar-expand .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;-webkit-flex-grow:1;visibility:visible !important;background-color:rgba(0,0,0,0);border-right:0;border-left:0;transition:none;transform:none}.navbar-expand .offcanvas-top,.navbar-expand .offcanvas-bottom{height:auto;border-top:0;border-bottom:0}.navbar-expand .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}.navbar-light{background-color:#2c3e50}.navbar-light .navbar-brand{color:#ccd1d5}.navbar-light .navbar-brand:hover,.navbar-light .navbar-brand:focus{color:#fff}.navbar-light .navbar-nav .nav-link{color:#ccd1d5}.navbar-light .navbar-nav .nav-link:hover,.navbar-light .navbar-nav .nav-link:focus{color:rgba(255,255,255,.8)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(204,209,213,.75)}.navbar-light .navbar-nav .show>.nav-link,.navbar-light .navbar-nav .nav-link.active{color:#fff}.navbar-light .navbar-toggler{color:#ccd1d5;border-color:rgba(204,209,213,0)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='%23ccd1d5' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:#ccd1d5}.navbar-light .navbar-text a,.navbar-light .navbar-text a:hover,.navbar-light .navbar-text a:focus{color:#fff}.navbar-dark{background-color:#2c3e50}.navbar-dark .navbar-brand{color:#ccd1d5}.navbar-dark .navbar-brand:hover,.navbar-dark .navbar-brand:focus{color:#fff}.navbar-dark .navbar-nav .nav-link{color:#ccd1d5}.navbar-dark .navbar-nav .nav-link:hover,.navbar-dark .navbar-nav .nav-link:focus{color:rgba(255,255,255,.8)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(204,209,213,.75)}.navbar-dark .navbar-nav .show>.nav-link,.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active{color:#fff}.navbar-dark .navbar-toggler{color:#ccd1d5;border-color:rgba(204,209,213,0)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='%23ccd1d5' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:#ccd1d5}.navbar-dark .navbar-text a,.navbar-dark .navbar-text a:hover,.navbar-dark .navbar-text a:focus{color:#fff}.card{position:relative;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(0.25rem - 1px);border-top-right-radius:calc(0.25rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(0.25rem - 1px);border-bottom-left-radius:calc(0.25rem - 1px)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;-webkit-flex:1 1 auto;padding:1rem 1rem}.card-title{margin-bottom:.5rem}.card-subtitle{margin-top:-0.25rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:1rem}.card-header{padding:.5rem 1rem;margin-bottom:0;background-color:#adb5bd;border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0}.card-footer{padding:.5rem 1rem;background-color:#adb5bd;border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(0.25rem - 1px) calc(0.25rem - 1px)}.card-header-tabs{margin-right:-0.5rem;margin-bottom:-0.5rem;margin-left:-0.5rem;border-bottom:0}.card-header-pills{margin-right:-0.5rem;margin-left:-0.5rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1rem;border-radius:calc(0.25rem - 1px)}.card-img,.card-img-top,.card-img-bottom{width:100%}.card-img,.card-img-top{border-top-left-radius:calc(0.25rem - 1px);border-top-right-radius:calc(0.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(0.25rem - 1px);border-bottom-left-radius:calc(0.25rem - 1px)}.card-group>.card{margin-bottom:.75rem}@media(min-width: 576px){.card-group{display:flex;display:-webkit-flex;flex-flow:row wrap;-webkit-flex-flow:row wrap}.card-group>.card{flex:1 0 0%;-webkit-flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-img-top,.card-group>.card:not(:last-child) .card-header{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-img-bottom,.card-group>.card:not(:last-child) .card-footer{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-img-top,.card-group>.card:not(:first-child) .card-header{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-img-bottom,.card-group>.card:not(:first-child) .card-footer{border-bottom-left-radius:0}}.accordion-button{position:relative;display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;width:100%;padding:1rem 1.25rem;font-size:1rem;color:#212529;text-align:left;background-color:#fff;border:0;border-radius:0;overflow-anchor:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,border-radius .15s ease}@media(prefers-reduced-motion: reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:#283848;background-color:#eaecee;box-shadow:inset 0 -1px 0 rgba(0,0,0,.125)}.accordion-button:not(.collapsed)::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23283848'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");transform:rotate(-180deg)}.accordion-button::after{flex-shrink:0;-webkit-flex-shrink:0;width:1.25rem;height:1.25rem;margin-left:auto;content:"";background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-size:1.25rem;transition:transform .2s ease-in-out}@media(prefers-reduced-motion: reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:#969fa8;outline:0;box-shadow:0 0 0 .25rem rgba(44,62,80,.25)}.accordion-header{margin-bottom:0}.accordion-item{background-color:#fff;border:1px solid rgba(0,0,0,.125)}.accordion-item:first-of-type{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.accordion-item:first-of-type .accordion-button{border-top-left-radius:calc(0.25rem - 1px);border-top-right-radius:calc(0.25rem - 1px)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:calc(0.25rem - 1px);border-bottom-left-radius:calc(0.25rem - 1px)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.accordion-body{padding:1rem 1.25rem}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button{border-radius:0}.breadcrumb{display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;padding:.375rem .75rem;margin-bottom:1rem;list-style:none;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:.5rem;color:#6c757d;content:var(--bs-breadcrumb-divider, ">") /* rtl: var(--bs-breadcrumb-divider, ">") */}.breadcrumb-item.active{color:#6c757d}.pagination{display:flex;display:-webkit-flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;color:#fff;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;background-color:#18bc9c;border:0 solid rgba(0,0,0,0);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:#fff;background-color:#0f7864;border-color:rgba(0,0,0,0)}.page-link:focus{z-index:3;color:#13967d;background-color:#ecf0f1;outline:0;box-shadow:0 0 0 .25rem rgba(44,62,80,.25)}.page-item:not(:first-child) .page-link{margin-left:0}.page-item.active .page-link{z-index:3;color:#fff;background-color:#0f7864;border-color:rgba(0,0,0,0)}.page-item.disabled .page-link{color:#ecf0f1;pointer-events:none;background-color:#3be6c4;border-color:rgba(0,0,0,0)}.page-link{padding:.375rem .75rem}.page-item:first-child .page-link{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:0.875rem}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2em;border-bottom-left-radius:.2em}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2em;border-bottom-right-radius:.2em}.badge{display:inline-block;padding:.35em .65em;font-size:0.75em;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{position:relative;padding:1rem 1rem;margin-bottom:1rem;border:1px solid rgba(0,0,0,0);border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-default{color:#41464b;background-color:#e2e3e5;border-color:#d3d6d8}.alert-default .alert-link{color:#34383c}.alert-primary{color:#1a2530;background-color:#d5d8dc;border-color:#c0c5cb}.alert-primary .alert-link{color:#151e26}.alert-secondary{color:#41464b;background-color:#e2e3e5;border-color:#d3d6d8}.alert-secondary .alert-link{color:#34383c}.alert-success{color:#0e715e;background-color:#d1f2eb;border-color:#baebe1}.alert-success .alert-link{color:#0b5a4b}.alert-info{color:#1f5b83;background-color:#d6eaf8;border-color:#c2e0f4}.alert-info .alert-link{color:#194969}.alert-warning{color:#925e0b;background-color:#fdebd0;border-color:#fbe1b8}.alert-warning .alert-link{color:#754b09}.alert-danger{color:#8b2e24;background-color:#fadbd8;border-color:#f8c9c5}.alert-danger .alert-link{color:#6f251d}.alert-light{color:#8e9091;background-color:#fbfcfc;border-color:#f9fbfb}.alert-light .alert-link{color:#727374}.alert-dark{color:#4a5353;background-color:#e5e8e8;border-color:#d7dcdc}.alert-dark .alert-link{color:#3b4242}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress{display:flex;display:-webkit-flex;height:1rem;overflow:hidden;font-size:0.75rem;background-color:#ecf0f1;border-radius:.25rem}.progress-bar{display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;justify-content:center;-webkit-justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#2c3e50;transition:width .6s ease}@media(prefers-reduced-motion: reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-size:1rem 1rem}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media(prefers-reduced-motion: reduce){.progress-bar-animated{animation:none}}.list-group{display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.25rem}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>li::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:#7b8a8b;text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{z-index:1;color:#7b8a8b;text-decoration:none;background-color:#ecf0f1}.list-group-item-action:active{color:#212529;background-color:#ecf0f1}.list-group-item{position:relative;display:block;padding:.5rem 1rem;color:#212529;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#ecf0f1}.list-group-item.active{z-index:2;color:#fff;background-color:#2c3e50;border-color:#2c3e50}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media(min-width: 576px){.list-group-horizontal-sm{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media(min-width: 768px){.list-group-horizontal-md{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media(min-width: 992px){.list-group-horizontal-lg{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media(min-width: 1200px){.list-group-horizontal-xl{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media(min-width: 1400px){.list-group-horizontal-xxl{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-default{color:#41464b;background-color:#e2e3e5}.list-group-item-default.list-group-item-action:hover,.list-group-item-default.list-group-item-action:focus{color:#41464b;background-color:#cbccce}.list-group-item-default.list-group-item-action.active{color:#fff;background-color:#41464b;border-color:#41464b}.list-group-item-primary{color:#1a2530;background-color:#d5d8dc}.list-group-item-primary.list-group-item-action:hover,.list-group-item-primary.list-group-item-action:focus{color:#1a2530;background-color:#c0c2c6}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#1a2530;border-color:#1a2530}.list-group-item-secondary{color:#41464b;background-color:#e2e3e5}.list-group-item-secondary.list-group-item-action:hover,.list-group-item-secondary.list-group-item-action:focus{color:#41464b;background-color:#cbccce}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#41464b;border-color:#41464b}.list-group-item-success{color:#0e715e;background-color:#d1f2eb}.list-group-item-success.list-group-item-action:hover,.list-group-item-success.list-group-item-action:focus{color:#0e715e;background-color:#bcdad4}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#0e715e;border-color:#0e715e}.list-group-item-info{color:#1f5b83;background-color:#d6eaf8}.list-group-item-info.list-group-item-action:hover,.list-group-item-info.list-group-item-action:focus{color:#1f5b83;background-color:#c1d3df}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#1f5b83;border-color:#1f5b83}.list-group-item-warning{color:#925e0b;background-color:#fdebd0}.list-group-item-warning.list-group-item-action:hover,.list-group-item-warning.list-group-item-action:focus{color:#925e0b;background-color:#e4d4bb}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#925e0b;border-color:#925e0b}.list-group-item-danger{color:#8b2e24;background-color:#fadbd8}.list-group-item-danger.list-group-item-action:hover,.list-group-item-danger.list-group-item-action:focus{color:#8b2e24;background-color:#e1c5c2}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#8b2e24;border-color:#8b2e24}.list-group-item-light{color:#8e9091;background-color:#fbfcfc}.list-group-item-light.list-group-item-action:hover,.list-group-item-light.list-group-item-action:focus{color:#8e9091;background-color:#e2e3e3}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#8e9091;border-color:#8e9091}.list-group-item-dark{color:#4a5353;background-color:#e5e8e8}.list-group-item-dark.list-group-item-action:hover,.list-group-item-dark.list-group-item-action:focus{color:#4a5353;background-color:#ced1d1}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#4a5353;border-color:#4a5353}.btn-close{box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:#fff;background:rgba(0,0,0,0) url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat;border:0;border-radius:.25rem;opacity:.4}.btn-close:hover{color:#fff;text-decoration:none;opacity:1}.btn-close:focus{outline:0;box-shadow:0 0 0 .25rem rgba(44,62,80,.25);opacity:1}.btn-close:disabled,.btn-close.disabled{pointer-events:none;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;opacity:.25}.btn-close-white{filter:invert(1) grayscale(100%) brightness(200%)}.toast{width:350px;max-width:100%;font-size:0.875rem;pointer-events:auto;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .5rem 1rem rgba(0,0,0,.15);border-radius:.25rem}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{width:max-content;width:-webkit-max-content;width:-moz-max-content;width:-ms-max-content;width:-o-max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:.75rem}.toast-header{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;padding:.5rem .75rem;color:#6c757d;background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:calc(0.25rem - 1px);border-top-right-radius:calc(0.25rem - 1px)}.toast-header .btn-close{margin-right:-0.375rem;margin-left:.75rem}.toast-body{padding:.75rem;word-wrap:break-word}.modal{position:fixed;top:0;left:0;z-index:1055;display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0, -50px)}@media(prefers-reduced-motion: reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;min-height:calc(100% - 1rem)}.modal-content{position:relative;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1050;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;display:-webkit-flex;flex-shrink:0;-webkit-flex-shrink:0;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(0.3rem - 1px);border-top-right-radius:calc(0.3rem - 1px)}.modal-header .btn-close{padding:.5rem .5rem;margin:-0.5rem -0.5rem -0.5rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto;padding:1rem}.modal-footer{display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;flex-shrink:0;-webkit-flex-shrink:0;align-items:center;-webkit-align-items:center;justify-content:flex-end;-webkit-justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(0.3rem - 1px);border-bottom-left-radius:calc(0.3rem - 1px)}.modal-footer>*{margin:.25rem}@media(min-width: 576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{height:calc(100% - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-sm{max-width:300px}}@media(min-width: 992px){.modal-lg,.modal-xl{max-width:800px}}@media(min-width: 1200px){.modal-xl{max-width:1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}.modal-fullscreen .modal-footer{border-radius:0}@media(max-width: 575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}.modal-fullscreen-sm-down .modal-footer{border-radius:0}}@media(max-width: 767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}.modal-fullscreen-md-down .modal-footer{border-radius:0}}@media(max-width: 991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}.modal-fullscreen-lg-down .modal-footer{border-radius:0}}@media(max-width: 1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}.modal-fullscreen-xl-down .modal-footer{border-radius:0}}@media(max-width: 1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}.modal-fullscreen-xxl-down .modal-footer{border-radius:0}}.tooltip{position:absolute;z-index:1080;display:block;margin:0;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:0.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .tooltip-arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:rgba(0,0,0,0);border-style:solid}.bs-tooltip-top,.bs-tooltip-auto[data-popper-placement^=top]{padding:.4rem 0}.bs-tooltip-top .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow{bottom:0}.bs-tooltip-top .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before{top:-1px;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-end,.bs-tooltip-auto[data-popper-placement^=right]{padding:0 .4rem}.bs-tooltip-end .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-end .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before{right:-1px;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-bottom,.bs-tooltip-auto[data-popper-placement^=bottom]{padding:.4rem 0}.bs-tooltip-bottom .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow{top:0}.bs-tooltip-bottom .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before{bottom:-1px;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-start,.bs-tooltip-auto[data-popper-placement^=left]{padding:0 .4rem}.bs-tooltip-start .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-start .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before{left:-1px;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0 /* rtl:ignore */;z-index:1070;display:block;max-width:276px;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:0.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .popover-arrow{position:absolute;display:block;width:1rem;height:.5rem}.popover .popover-arrow::before,.popover .popover-arrow::after{position:absolute;display:block;content:"";border-color:rgba(0,0,0,0);border-style:solid}.bs-popover-top>.popover-arrow,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow{bottom:calc(-0.5rem - 1px)}.bs-popover-top>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-top>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-end>.popover-arrow,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow{left:calc(-0.5rem - 1px);width:.5rem;height:1rem}.bs-popover-end>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-end>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-bottom>.popover-arrow,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow{top:calc(-0.5rem - 1px)}.bs-popover-bottom>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-bottom>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-bottom .popover-header::before,.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-0.5rem;content:"";border-bottom:1px solid #f0f0f0}.bs-popover-start>.popover-arrow,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow{right:calc(-0.5rem - 1px);width:.5rem;height:1rem}.bs-popover-start>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-start>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem 1rem;margin-bottom:0;font-size:1rem;background-color:#f0f0f0;border-bottom:1px solid rgba(0,0,0,.2);border-top-left-radius:calc(0.3rem - 1px);border-top-right-radius:calc(0.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:1rem 1rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y;-webkit-touch-action:pan-y;-moz-touch-action:pan-y;-ms-touch-action:pan-y;-o-touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-o-backface-visibility:hidden;transition:transform .6s ease-in-out}@media(prefers-reduced-motion: reduce){.carousel-item{transition:none}}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next:not(.carousel-item-start),.active.carousel-item-end{transform:translateX(100%)}.carousel-item-prev:not(.carousel-item-end),.active.carousel-item-start{transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item.active,.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end{z-index:1;opacity:1}.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{z-index:0;opacity:0;transition:opacity 0s .6s}@media(prefers-reduced-motion: reduce){.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{transition:none}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;z-index:1;display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;justify-content:center;-webkit-justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:none;border:0;opacity:.5;transition:opacity .15s ease}@media(prefers-reduced-motion: reduce){.carousel-control-prev,.carousel-control-next{transition:none}}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;display:-webkit-flex;justify-content:center;-webkit-justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%;list-style:none}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;-webkit-flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid rgba(0,0,0,0);border-bottom:10px solid rgba(0,0,0,0);opacity:.5;transition:opacity .6s ease}@media(prefers-reduced-motion: reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-prev-icon,.carousel-dark .carousel-control-next-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}@keyframes spinner-border{to{transform:rotate(360deg) /* rtl:ignore */}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:-0.125em;border:.25em solid currentColor;border-right-color:rgba(0,0,0,0);border-radius:50%;animation:.75s linear infinite spinner-border}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:-0.125em;background-color:currentColor;border-radius:50%;opacity:0;animation:.75s linear infinite spinner-grow}.spinner-grow-sm{width:1rem;height:1rem}@media(prefers-reduced-motion: reduce){.spinner-border,.spinner-grow{animation-duration:1.5s;-webkit-animation-duration:1.5s;-moz-animation-duration:1.5s;-ms-animation-duration:1.5s;-o-animation-duration:1.5s}}.offcanvas{position:fixed;bottom:0;z-index:1045;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;visibility:hidden;background-color:#fff;background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}@media(prefers-reduced-motion: reduce){.offcanvas{transition:none}}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding:1rem 1rem}.offcanvas-header .btn-close{padding:.5rem .5rem;margin-top:-0.5rem;margin-right:-0.5rem;margin-bottom:-0.5rem}.offcanvas-title{margin-bottom:0;line-height:1.5}.offcanvas-body{flex-grow:1;-webkit-flex-grow:1;padding:1rem 1rem;overflow-y:auto}.offcanvas-start{top:0;left:0;width:400px;border-right:1px solid rgba(0,0,0,.2);transform:translateX(-100%)}.offcanvas-end{top:0;right:0;width:400px;border-left:1px solid rgba(0,0,0,.2);transform:translateX(100%)}.offcanvas-top{top:0;right:0;left:0;height:30vh;max-height:100%;border-bottom:1px solid rgba(0,0,0,.2);transform:translateY(-100%)}.offcanvas-bottom{right:0;left:0;height:30vh;max-height:100%;border-top:1px solid rgba(0,0,0,.2);transform:translateY(100%)}.offcanvas.show{transform:none}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentColor;opacity:.5}.placeholder.btn::before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{animation:placeholder-glow 2s ease-in-out infinite}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{mask-image:linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);-webkit-mask-image:linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);mask-size:200% 100%;-webkit-mask-size:200% 100%;animation:placeholder-wave 2s linear infinite}@keyframes placeholder-wave{100%{mask-position:-200% 0%;-webkit-mask-position:-200% 0%}}.clearfix::after{display:block;clear:both;content:""}.link-default{color:#6c757d}.link-default:hover,.link-default:focus{color:#565e64}.link-primary{color:#2c3e50}.link-primary:hover,.link-primary:focus{color:#233240}.link-secondary{color:#6c757d}.link-secondary:hover,.link-secondary:focus{color:#565e64}.link-success{color:#18bc9c}.link-success:hover,.link-success:focus{color:#13967d}.link-info{color:#3498db}.link-info:hover,.link-info:focus{color:#2a7aaf}.link-warning{color:#f39c12}.link-warning:hover,.link-warning:focus{color:#c27d0e}.link-danger{color:#e74c3c}.link-danger:hover,.link-danger:focus{color:#b93d30}.link-light{color:#ecf0f1}.link-light:hover,.link-light:focus{color:#f0f3f4}.link-dark{color:#7b8a8b}.link-dark:hover,.link-dark:focus{color:#626e6f}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio: 100%}.ratio-4x3{--bs-aspect-ratio: 75%}.ratio-16x9{--bs-aspect-ratio: 56.25%}.ratio-21x9{--bs-aspect-ratio: 42.8571428571%}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:sticky;top:0;z-index:1020}@media(min-width: 576px){.sticky-sm-top{position:sticky;top:0;z-index:1020}}@media(min-width: 768px){.sticky-md-top{position:sticky;top:0;z-index:1020}}@media(min-width: 992px){.sticky-lg-top{position:sticky;top:0;z-index:1020}}@media(min-width: 1200px){.sticky-xl-top{position:sticky;top:0;z-index:1020}}@media(min-width: 1400px){.sticky-xxl-top{position:sticky;top:0;z-index:1020}}.hstack{display:flex;display:-webkit-flex;flex-direction:row;-webkit-flex-direction:row;align-items:center;-webkit-align-items:center;align-self:stretch;-webkit-align-self:stretch}.vstack{display:flex;display:-webkit-flex;flex:1 1 auto;-webkit-flex:1 1 auto;flex-direction:column;-webkit-flex-direction:column;align-self:stretch;-webkit-align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border:0 !important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;-webkit-align-self:stretch;width:1px;min-height:1em;background-color:currentColor;opacity:.25}.align-baseline{vertical-align:baseline !important}.align-top{vertical-align:top !important}.align-middle{vertical-align:middle !important}.align-bottom{vertical-align:bottom !important}.align-text-bottom{vertical-align:text-bottom !important}.align-text-top{vertical-align:text-top !important}.float-start{float:left !important}.float-end{float:right !important}.float-none{float:none !important}.opacity-0{opacity:0 !important}.opacity-25{opacity:.25 !important}.opacity-50{opacity:.5 !important}.opacity-75{opacity:.75 !important}.opacity-100{opacity:1 !important}.overflow-auto{overflow:auto !important}.overflow-hidden{overflow:hidden !important}.overflow-visible{overflow:visible !important}.overflow-scroll{overflow:scroll !important}.d-inline{display:inline !important}.d-inline-block{display:inline-block !important}.d-block{display:block !important}.d-grid{display:grid !important}.d-table{display:table !important}.d-table-row{display:table-row !important}.d-table-cell{display:table-cell !important}.d-flex{display:flex !important}.d-inline-flex{display:inline-flex !important}.d-none{display:none !important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15) !important}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075) !important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175) !important}.shadow-none{box-shadow:none !important}.position-static{position:static !important}.position-relative{position:relative !important}.position-absolute{position:absolute !important}.position-fixed{position:fixed !important}.position-sticky{position:sticky !important}.top-0{top:0 !important}.top-50{top:50% !important}.top-100{top:100% !important}.bottom-0{bottom:0 !important}.bottom-50{bottom:50% !important}.bottom-100{bottom:100% !important}.start-0{left:0 !important}.start-50{left:50% !important}.start-100{left:100% !important}.end-0{right:0 !important}.end-50{right:50% !important}.end-100{right:100% !important}.translate-middle{transform:translate(-50%, -50%) !important}.translate-middle-x{transform:translateX(-50%) !important}.translate-middle-y{transform:translateY(-50%) !important}.border{border:1px solid #dee2e6 !important}.border-0{border:0 !important}.border-top{border-top:1px solid #dee2e6 !important}.border-top-0{border-top:0 !important}.border-end{border-right:1px solid #dee2e6 !important}.border-end-0{border-right:0 !important}.border-bottom{border-bottom:1px solid #dee2e6 !important}.border-bottom-0{border-bottom:0 !important}.border-start{border-left:1px solid #dee2e6 !important}.border-start-0{border-left:0 !important}.border-default{border-color:#6c757d !important}.border-primary{border-color:#2c3e50 !important}.border-secondary{border-color:#6c757d !important}.border-success{border-color:#18bc9c !important}.border-info{border-color:#3498db !important}.border-warning{border-color:#f39c12 !important}.border-danger{border-color:#e74c3c !important}.border-light{border-color:#ecf0f1 !important}.border-dark{border-color:#7b8a8b !important}.border-white{border-color:#fff !important}.border-1{border-width:1px !important}.border-2{border-width:2px !important}.border-3{border-width:3px !important}.border-4{border-width:4px !important}.border-5{border-width:5px !important}.w-25{width:25% !important}.w-50{width:50% !important}.w-75{width:75% !important}.w-100{width:100% !important}.w-auto{width:auto !important}.mw-100{max-width:100% !important}.vw-100{width:100vw !important}.min-vw-100{min-width:100vw !important}.h-25{height:25% !important}.h-50{height:50% !important}.h-75{height:75% !important}.h-100{height:100% !important}.h-auto{height:auto !important}.mh-100{max-height:100% !important}.vh-100{height:100vh !important}.min-vh-100{min-height:100vh !important}.flex-fill{flex:1 1 auto !important}.flex-row{flex-direction:row !important}.flex-column{flex-direction:column !important}.flex-row-reverse{flex-direction:row-reverse !important}.flex-column-reverse{flex-direction:column-reverse !important}.flex-grow-0{flex-grow:0 !important}.flex-grow-1{flex-grow:1 !important}.flex-shrink-0{flex-shrink:0 !important}.flex-shrink-1{flex-shrink:1 !important}.flex-wrap{flex-wrap:wrap !important}.flex-nowrap{flex-wrap:nowrap !important}.flex-wrap-reverse{flex-wrap:wrap-reverse !important}.gap-0{gap:0 !important}.gap-1{gap:.25rem !important}.gap-2{gap:.5rem !important}.gap-3{gap:1rem !important}.gap-4{gap:1.5rem !important}.gap-5{gap:3rem !important}.justify-content-start{justify-content:flex-start !important}.justify-content-end{justify-content:flex-end !important}.justify-content-center{justify-content:center !important}.justify-content-between{justify-content:space-between !important}.justify-content-around{justify-content:space-around !important}.justify-content-evenly{justify-content:space-evenly !important}.align-items-start{align-items:flex-start !important}.align-items-end{align-items:flex-end !important}.align-items-center{align-items:center !important}.align-items-baseline{align-items:baseline !important}.align-items-stretch{align-items:stretch !important}.align-content-start{align-content:flex-start !important}.align-content-end{align-content:flex-end !important}.align-content-center{align-content:center !important}.align-content-between{align-content:space-between !important}.align-content-around{align-content:space-around !important}.align-content-stretch{align-content:stretch !important}.align-self-auto{align-self:auto !important}.align-self-start{align-self:flex-start !important}.align-self-end{align-self:flex-end !important}.align-self-center{align-self:center !important}.align-self-baseline{align-self:baseline !important}.align-self-stretch{align-self:stretch !important}.order-first{order:-1 !important}.order-0{order:0 !important}.order-1{order:1 !important}.order-2{order:2 !important}.order-3{order:3 !important}.order-4{order:4 !important}.order-5{order:5 !important}.order-last{order:6 !important}.m-0{margin:0 !important}.m-1{margin:.25rem !important}.m-2{margin:.5rem !important}.m-3{margin:1rem !important}.m-4{margin:1.5rem !important}.m-5{margin:3rem !important}.m-auto{margin:auto !important}.mx-0{margin-right:0 !important;margin-left:0 !important}.mx-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-3{margin-right:1rem !important;margin-left:1rem !important}.mx-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-5{margin-right:3rem !important;margin-left:3rem !important}.mx-auto{margin-right:auto !important;margin-left:auto !important}.my-0{margin-top:0 !important;margin-bottom:0 !important}.my-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-0{margin-top:0 !important}.mt-1{margin-top:.25rem !important}.mt-2{margin-top:.5rem !important}.mt-3{margin-top:1rem !important}.mt-4{margin-top:1.5rem !important}.mt-5{margin-top:3rem !important}.mt-auto{margin-top:auto !important}.me-0{margin-right:0 !important}.me-1{margin-right:.25rem !important}.me-2{margin-right:.5rem !important}.me-3{margin-right:1rem !important}.me-4{margin-right:1.5rem !important}.me-5{margin-right:3rem !important}.me-auto{margin-right:auto !important}.mb-0{margin-bottom:0 !important}.mb-1{margin-bottom:.25rem !important}.mb-2{margin-bottom:.5rem !important}.mb-3{margin-bottom:1rem !important}.mb-4{margin-bottom:1.5rem !important}.mb-5{margin-bottom:3rem !important}.mb-auto{margin-bottom:auto !important}.ms-0{margin-left:0 !important}.ms-1{margin-left:.25rem !important}.ms-2{margin-left:.5rem !important}.ms-3{margin-left:1rem !important}.ms-4{margin-left:1.5rem !important}.ms-5{margin-left:3rem !important}.ms-auto{margin-left:auto !important}.p-0{padding:0 !important}.p-1{padding:.25rem !important}.p-2{padding:.5rem !important}.p-3{padding:1rem !important}.p-4{padding:1.5rem !important}.p-5{padding:3rem !important}.px-0{padding-right:0 !important;padding-left:0 !important}.px-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-3{padding-right:1rem !important;padding-left:1rem !important}.px-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-5{padding-right:3rem !important;padding-left:3rem !important}.py-0{padding-top:0 !important;padding-bottom:0 !important}.py-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-0{padding-top:0 !important}.pt-1{padding-top:.25rem !important}.pt-2{padding-top:.5rem !important}.pt-3{padding-top:1rem !important}.pt-4{padding-top:1.5rem !important}.pt-5{padding-top:3rem !important}.pe-0{padding-right:0 !important}.pe-1{padding-right:.25rem !important}.pe-2{padding-right:.5rem !important}.pe-3{padding-right:1rem !important}.pe-4{padding-right:1.5rem !important}.pe-5{padding-right:3rem !important}.pb-0{padding-bottom:0 !important}.pb-1{padding-bottom:.25rem !important}.pb-2{padding-bottom:.5rem !important}.pb-3{padding-bottom:1rem !important}.pb-4{padding-bottom:1.5rem !important}.pb-5{padding-bottom:3rem !important}.ps-0{padding-left:0 !important}.ps-1{padding-left:.25rem !important}.ps-2{padding-left:.5rem !important}.ps-3{padding-left:1rem !important}.ps-4{padding-left:1.5rem !important}.ps-5{padding-left:3rem !important}.font-monospace{font-family:var(--bs-font-monospace) !important}.fs-1{font-size:calc(1.325rem + 0.9vw) !important}.fs-2{font-size:calc(1.29rem + 0.48vw) !important}.fs-3{font-size:calc(1.27rem + 0.24vw) !important}.fs-4{font-size:1.25rem !important}.fs-5{font-size:1.1rem !important}.fs-6{font-size:1rem !important}.fst-italic{font-style:italic !important}.fst-normal{font-style:normal !important}.fw-light{font-weight:300 !important}.fw-lighter{font-weight:lighter !important}.fw-normal{font-weight:400 !important}.fw-bold{font-weight:700 !important}.fw-bolder{font-weight:bolder !important}.lh-1{line-height:1 !important}.lh-sm{line-height:1.25 !important}.lh-base{line-height:1.5 !important}.lh-lg{line-height:2 !important}.text-start{text-align:left !important}.text-end{text-align:right !important}.text-center{text-align:center !important}.text-decoration-none{text-decoration:none !important}.text-decoration-underline{text-decoration:underline !important}.text-decoration-line-through{text-decoration:line-through !important}.text-lowercase{text-transform:lowercase !important}.text-uppercase{text-transform:uppercase !important}.text-capitalize{text-transform:capitalize !important}.text-wrap{white-space:normal !important}.text-nowrap{white-space:nowrap !important}.text-break{word-wrap:break-word !important;word-break:break-word !important}.text-default{--bs-text-opacity: 1;color:rgba(var(--bs-default-rgb), var(--bs-text-opacity)) !important}.text-primary{--bs-text-opacity: 1;color:rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important}.text-secondary{--bs-text-opacity: 1;color:rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important}.text-success{--bs-text-opacity: 1;color:rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important}.text-info{--bs-text-opacity: 1;color:rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important}.text-warning{--bs-text-opacity: 1;color:rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important}.text-danger{--bs-text-opacity: 1;color:rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important}.text-light{--bs-text-opacity: 1;color:rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important}.text-dark{--bs-text-opacity: 1;color:rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important}.text-black{--bs-text-opacity: 1;color:rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important}.text-white{--bs-text-opacity: 1;color:rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important}.text-body{--bs-text-opacity: 1;color:rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important}.text-muted{--bs-text-opacity: 1;color:#6c757d !important}.text-black-50{--bs-text-opacity: 1;color:rgba(0,0,0,.5) !important}.text-white-50{--bs-text-opacity: 1;color:rgba(255,255,255,.5) !important}.text-reset{--bs-text-opacity: 1;color:inherit !important}.text-opacity-25{--bs-text-opacity: 0.25}.text-opacity-50{--bs-text-opacity: 0.5}.text-opacity-75{--bs-text-opacity: 0.75}.text-opacity-100{--bs-text-opacity: 1}.bg-default{--bs-bg-opacity: 1;background-color:rgba(var(--bs-default-rgb), var(--bs-bg-opacity)) !important}.bg-primary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important}.bg-secondary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important}.bg-success{--bs-bg-opacity: 1;background-color:rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important}.bg-info{--bs-bg-opacity: 1;background-color:rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important}.bg-warning{--bs-bg-opacity: 1;background-color:rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important}.bg-danger{--bs-bg-opacity: 1;background-color:rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important}.bg-light{--bs-bg-opacity: 1;background-color:rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important}.bg-dark{--bs-bg-opacity: 1;background-color:rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important}.bg-black{--bs-bg-opacity: 1;background-color:rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important}.bg-white{--bs-bg-opacity: 1;background-color:rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important}.bg-body{--bs-bg-opacity: 1;background-color:rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important}.bg-transparent{--bs-bg-opacity: 1;background-color:rgba(0,0,0,0) !important}.bg-opacity-10{--bs-bg-opacity: 0.1}.bg-opacity-25{--bs-bg-opacity: 0.25}.bg-opacity-50{--bs-bg-opacity: 0.5}.bg-opacity-75{--bs-bg-opacity: 0.75}.bg-opacity-100{--bs-bg-opacity: 1}.bg-gradient{background-image:var(--bs-gradient) !important}.user-select-all{user-select:all !important}.user-select-auto{user-select:auto !important}.user-select-none{user-select:none !important}.pe-none{pointer-events:none !important}.pe-auto{pointer-events:auto !important}.rounded{border-radius:.25rem !important}.rounded-0{border-radius:0 !important}.rounded-1{border-radius:.2em !important}.rounded-2{border-radius:.25rem !important}.rounded-3{border-radius:.3rem !important}.rounded-circle{border-radius:50% !important}.rounded-pill{border-radius:50rem !important}.rounded-top{border-top-left-radius:.25rem !important;border-top-right-radius:.25rem !important}.rounded-end{border-top-right-radius:.25rem !important;border-bottom-right-radius:.25rem !important}.rounded-bottom{border-bottom-right-radius:.25rem !important;border-bottom-left-radius:.25rem !important}.rounded-start{border-bottom-left-radius:.25rem !important;border-top-left-radius:.25rem !important}.visible{visibility:visible !important}.invisible{visibility:hidden !important}@media(min-width: 576px){.float-sm-start{float:left !important}.float-sm-end{float:right !important}.float-sm-none{float:none !important}.d-sm-inline{display:inline !important}.d-sm-inline-block{display:inline-block !important}.d-sm-block{display:block !important}.d-sm-grid{display:grid !important}.d-sm-table{display:table !important}.d-sm-table-row{display:table-row !important}.d-sm-table-cell{display:table-cell !important}.d-sm-flex{display:flex !important}.d-sm-inline-flex{display:inline-flex !important}.d-sm-none{display:none !important}.flex-sm-fill{flex:1 1 auto !important}.flex-sm-row{flex-direction:row !important}.flex-sm-column{flex-direction:column !important}.flex-sm-row-reverse{flex-direction:row-reverse !important}.flex-sm-column-reverse{flex-direction:column-reverse !important}.flex-sm-grow-0{flex-grow:0 !important}.flex-sm-grow-1{flex-grow:1 !important}.flex-sm-shrink-0{flex-shrink:0 !important}.flex-sm-shrink-1{flex-shrink:1 !important}.flex-sm-wrap{flex-wrap:wrap !important}.flex-sm-nowrap{flex-wrap:nowrap !important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse !important}.gap-sm-0{gap:0 !important}.gap-sm-1{gap:.25rem !important}.gap-sm-2{gap:.5rem !important}.gap-sm-3{gap:1rem !important}.gap-sm-4{gap:1.5rem !important}.gap-sm-5{gap:3rem !important}.justify-content-sm-start{justify-content:flex-start !important}.justify-content-sm-end{justify-content:flex-end !important}.justify-content-sm-center{justify-content:center !important}.justify-content-sm-between{justify-content:space-between !important}.justify-content-sm-around{justify-content:space-around !important}.justify-content-sm-evenly{justify-content:space-evenly !important}.align-items-sm-start{align-items:flex-start !important}.align-items-sm-end{align-items:flex-end !important}.align-items-sm-center{align-items:center !important}.align-items-sm-baseline{align-items:baseline !important}.align-items-sm-stretch{align-items:stretch !important}.align-content-sm-start{align-content:flex-start !important}.align-content-sm-end{align-content:flex-end !important}.align-content-sm-center{align-content:center !important}.align-content-sm-between{align-content:space-between !important}.align-content-sm-around{align-content:space-around !important}.align-content-sm-stretch{align-content:stretch !important}.align-self-sm-auto{align-self:auto !important}.align-self-sm-start{align-self:flex-start !important}.align-self-sm-end{align-self:flex-end !important}.align-self-sm-center{align-self:center !important}.align-self-sm-baseline{align-self:baseline !important}.align-self-sm-stretch{align-self:stretch !important}.order-sm-first{order:-1 !important}.order-sm-0{order:0 !important}.order-sm-1{order:1 !important}.order-sm-2{order:2 !important}.order-sm-3{order:3 !important}.order-sm-4{order:4 !important}.order-sm-5{order:5 !important}.order-sm-last{order:6 !important}.m-sm-0{margin:0 !important}.m-sm-1{margin:.25rem !important}.m-sm-2{margin:.5rem !important}.m-sm-3{margin:1rem !important}.m-sm-4{margin:1.5rem !important}.m-sm-5{margin:3rem !important}.m-sm-auto{margin:auto !important}.mx-sm-0{margin-right:0 !important;margin-left:0 !important}.mx-sm-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-sm-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-sm-3{margin-right:1rem !important;margin-left:1rem !important}.mx-sm-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-sm-5{margin-right:3rem !important;margin-left:3rem !important}.mx-sm-auto{margin-right:auto !important;margin-left:auto !important}.my-sm-0{margin-top:0 !important;margin-bottom:0 !important}.my-sm-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-sm-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-sm-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-sm-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-sm-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-sm-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-sm-0{margin-top:0 !important}.mt-sm-1{margin-top:.25rem !important}.mt-sm-2{margin-top:.5rem !important}.mt-sm-3{margin-top:1rem !important}.mt-sm-4{margin-top:1.5rem !important}.mt-sm-5{margin-top:3rem !important}.mt-sm-auto{margin-top:auto !important}.me-sm-0{margin-right:0 !important}.me-sm-1{margin-right:.25rem !important}.me-sm-2{margin-right:.5rem !important}.me-sm-3{margin-right:1rem !important}.me-sm-4{margin-right:1.5rem !important}.me-sm-5{margin-right:3rem !important}.me-sm-auto{margin-right:auto !important}.mb-sm-0{margin-bottom:0 !important}.mb-sm-1{margin-bottom:.25rem !important}.mb-sm-2{margin-bottom:.5rem !important}.mb-sm-3{margin-bottom:1rem !important}.mb-sm-4{margin-bottom:1.5rem !important}.mb-sm-5{margin-bottom:3rem !important}.mb-sm-auto{margin-bottom:auto !important}.ms-sm-0{margin-left:0 !important}.ms-sm-1{margin-left:.25rem !important}.ms-sm-2{margin-left:.5rem !important}.ms-sm-3{margin-left:1rem !important}.ms-sm-4{margin-left:1.5rem !important}.ms-sm-5{margin-left:3rem !important}.ms-sm-auto{margin-left:auto !important}.p-sm-0{padding:0 !important}.p-sm-1{padding:.25rem !important}.p-sm-2{padding:.5rem !important}.p-sm-3{padding:1rem !important}.p-sm-4{padding:1.5rem !important}.p-sm-5{padding:3rem !important}.px-sm-0{padding-right:0 !important;padding-left:0 !important}.px-sm-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-sm-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-sm-3{padding-right:1rem !important;padding-left:1rem !important}.px-sm-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-sm-5{padding-right:3rem !important;padding-left:3rem !important}.py-sm-0{padding-top:0 !important;padding-bottom:0 !important}.py-sm-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-sm-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-sm-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-sm-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-sm-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-sm-0{padding-top:0 !important}.pt-sm-1{padding-top:.25rem !important}.pt-sm-2{padding-top:.5rem !important}.pt-sm-3{padding-top:1rem !important}.pt-sm-4{padding-top:1.5rem !important}.pt-sm-5{padding-top:3rem !important}.pe-sm-0{padding-right:0 !important}.pe-sm-1{padding-right:.25rem !important}.pe-sm-2{padding-right:.5rem !important}.pe-sm-3{padding-right:1rem !important}.pe-sm-4{padding-right:1.5rem !important}.pe-sm-5{padding-right:3rem !important}.pb-sm-0{padding-bottom:0 !important}.pb-sm-1{padding-bottom:.25rem !important}.pb-sm-2{padding-bottom:.5rem !important}.pb-sm-3{padding-bottom:1rem !important}.pb-sm-4{padding-bottom:1.5rem !important}.pb-sm-5{padding-bottom:3rem !important}.ps-sm-0{padding-left:0 !important}.ps-sm-1{padding-left:.25rem !important}.ps-sm-2{padding-left:.5rem !important}.ps-sm-3{padding-left:1rem !important}.ps-sm-4{padding-left:1.5rem !important}.ps-sm-5{padding-left:3rem !important}.text-sm-start{text-align:left !important}.text-sm-end{text-align:right !important}.text-sm-center{text-align:center !important}}@media(min-width: 768px){.float-md-start{float:left !important}.float-md-end{float:right !important}.float-md-none{float:none !important}.d-md-inline{display:inline !important}.d-md-inline-block{display:inline-block !important}.d-md-block{display:block !important}.d-md-grid{display:grid !important}.d-md-table{display:table !important}.d-md-table-row{display:table-row !important}.d-md-table-cell{display:table-cell !important}.d-md-flex{display:flex !important}.d-md-inline-flex{display:inline-flex !important}.d-md-none{display:none !important}.flex-md-fill{flex:1 1 auto !important}.flex-md-row{flex-direction:row !important}.flex-md-column{flex-direction:column !important}.flex-md-row-reverse{flex-direction:row-reverse !important}.flex-md-column-reverse{flex-direction:column-reverse !important}.flex-md-grow-0{flex-grow:0 !important}.flex-md-grow-1{flex-grow:1 !important}.flex-md-shrink-0{flex-shrink:0 !important}.flex-md-shrink-1{flex-shrink:1 !important}.flex-md-wrap{flex-wrap:wrap !important}.flex-md-nowrap{flex-wrap:nowrap !important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse !important}.gap-md-0{gap:0 !important}.gap-md-1{gap:.25rem !important}.gap-md-2{gap:.5rem !important}.gap-md-3{gap:1rem !important}.gap-md-4{gap:1.5rem !important}.gap-md-5{gap:3rem !important}.justify-content-md-start{justify-content:flex-start !important}.justify-content-md-end{justify-content:flex-end !important}.justify-content-md-center{justify-content:center !important}.justify-content-md-between{justify-content:space-between !important}.justify-content-md-around{justify-content:space-around !important}.justify-content-md-evenly{justify-content:space-evenly !important}.align-items-md-start{align-items:flex-start !important}.align-items-md-end{align-items:flex-end !important}.align-items-md-center{align-items:center !important}.align-items-md-baseline{align-items:baseline !important}.align-items-md-stretch{align-items:stretch !important}.align-content-md-start{align-content:flex-start !important}.align-content-md-end{align-content:flex-end !important}.align-content-md-center{align-content:center !important}.align-content-md-between{align-content:space-between !important}.align-content-md-around{align-content:space-around !important}.align-content-md-stretch{align-content:stretch !important}.align-self-md-auto{align-self:auto !important}.align-self-md-start{align-self:flex-start !important}.align-self-md-end{align-self:flex-end !important}.align-self-md-center{align-self:center !important}.align-self-md-baseline{align-self:baseline !important}.align-self-md-stretch{align-self:stretch !important}.order-md-first{order:-1 !important}.order-md-0{order:0 !important}.order-md-1{order:1 !important}.order-md-2{order:2 !important}.order-md-3{order:3 !important}.order-md-4{order:4 !important}.order-md-5{order:5 !important}.order-md-last{order:6 !important}.m-md-0{margin:0 !important}.m-md-1{margin:.25rem !important}.m-md-2{margin:.5rem !important}.m-md-3{margin:1rem !important}.m-md-4{margin:1.5rem !important}.m-md-5{margin:3rem !important}.m-md-auto{margin:auto !important}.mx-md-0{margin-right:0 !important;margin-left:0 !important}.mx-md-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-md-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-md-3{margin-right:1rem !important;margin-left:1rem !important}.mx-md-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-md-5{margin-right:3rem !important;margin-left:3rem !important}.mx-md-auto{margin-right:auto !important;margin-left:auto !important}.my-md-0{margin-top:0 !important;margin-bottom:0 !important}.my-md-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-md-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-md-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-md-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-md-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-md-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-md-0{margin-top:0 !important}.mt-md-1{margin-top:.25rem !important}.mt-md-2{margin-top:.5rem !important}.mt-md-3{margin-top:1rem !important}.mt-md-4{margin-top:1.5rem !important}.mt-md-5{margin-top:3rem !important}.mt-md-auto{margin-top:auto !important}.me-md-0{margin-right:0 !important}.me-md-1{margin-right:.25rem !important}.me-md-2{margin-right:.5rem !important}.me-md-3{margin-right:1rem !important}.me-md-4{margin-right:1.5rem !important}.me-md-5{margin-right:3rem !important}.me-md-auto{margin-right:auto !important}.mb-md-0{margin-bottom:0 !important}.mb-md-1{margin-bottom:.25rem !important}.mb-md-2{margin-bottom:.5rem !important}.mb-md-3{margin-bottom:1rem !important}.mb-md-4{margin-bottom:1.5rem !important}.mb-md-5{margin-bottom:3rem !important}.mb-md-auto{margin-bottom:auto !important}.ms-md-0{margin-left:0 !important}.ms-md-1{margin-left:.25rem !important}.ms-md-2{margin-left:.5rem !important}.ms-md-3{margin-left:1rem !important}.ms-md-4{margin-left:1.5rem !important}.ms-md-5{margin-left:3rem !important}.ms-md-auto{margin-left:auto !important}.p-md-0{padding:0 !important}.p-md-1{padding:.25rem !important}.p-md-2{padding:.5rem !important}.p-md-3{padding:1rem !important}.p-md-4{padding:1.5rem !important}.p-md-5{padding:3rem !important}.px-md-0{padding-right:0 !important;padding-left:0 !important}.px-md-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-md-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-md-3{padding-right:1rem !important;padding-left:1rem !important}.px-md-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-md-5{padding-right:3rem !important;padding-left:3rem !important}.py-md-0{padding-top:0 !important;padding-bottom:0 !important}.py-md-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-md-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-md-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-md-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-md-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-md-0{padding-top:0 !important}.pt-md-1{padding-top:.25rem !important}.pt-md-2{padding-top:.5rem !important}.pt-md-3{padding-top:1rem !important}.pt-md-4{padding-top:1.5rem !important}.pt-md-5{padding-top:3rem !important}.pe-md-0{padding-right:0 !important}.pe-md-1{padding-right:.25rem !important}.pe-md-2{padding-right:.5rem !important}.pe-md-3{padding-right:1rem !important}.pe-md-4{padding-right:1.5rem !important}.pe-md-5{padding-right:3rem !important}.pb-md-0{padding-bottom:0 !important}.pb-md-1{padding-bottom:.25rem !important}.pb-md-2{padding-bottom:.5rem !important}.pb-md-3{padding-bottom:1rem !important}.pb-md-4{padding-bottom:1.5rem !important}.pb-md-5{padding-bottom:3rem !important}.ps-md-0{padding-left:0 !important}.ps-md-1{padding-left:.25rem !important}.ps-md-2{padding-left:.5rem !important}.ps-md-3{padding-left:1rem !important}.ps-md-4{padding-left:1.5rem !important}.ps-md-5{padding-left:3rem !important}.text-md-start{text-align:left !important}.text-md-end{text-align:right !important}.text-md-center{text-align:center !important}}@media(min-width: 992px){.float-lg-start{float:left !important}.float-lg-end{float:right !important}.float-lg-none{float:none !important}.d-lg-inline{display:inline !important}.d-lg-inline-block{display:inline-block !important}.d-lg-block{display:block !important}.d-lg-grid{display:grid !important}.d-lg-table{display:table !important}.d-lg-table-row{display:table-row !important}.d-lg-table-cell{display:table-cell !important}.d-lg-flex{display:flex !important}.d-lg-inline-flex{display:inline-flex !important}.d-lg-none{display:none !important}.flex-lg-fill{flex:1 1 auto !important}.flex-lg-row{flex-direction:row !important}.flex-lg-column{flex-direction:column !important}.flex-lg-row-reverse{flex-direction:row-reverse !important}.flex-lg-column-reverse{flex-direction:column-reverse !important}.flex-lg-grow-0{flex-grow:0 !important}.flex-lg-grow-1{flex-grow:1 !important}.flex-lg-shrink-0{flex-shrink:0 !important}.flex-lg-shrink-1{flex-shrink:1 !important}.flex-lg-wrap{flex-wrap:wrap !important}.flex-lg-nowrap{flex-wrap:nowrap !important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse !important}.gap-lg-0{gap:0 !important}.gap-lg-1{gap:.25rem !important}.gap-lg-2{gap:.5rem !important}.gap-lg-3{gap:1rem !important}.gap-lg-4{gap:1.5rem !important}.gap-lg-5{gap:3rem !important}.justify-content-lg-start{justify-content:flex-start !important}.justify-content-lg-end{justify-content:flex-end !important}.justify-content-lg-center{justify-content:center !important}.justify-content-lg-between{justify-content:space-between !important}.justify-content-lg-around{justify-content:space-around !important}.justify-content-lg-evenly{justify-content:space-evenly !important}.align-items-lg-start{align-items:flex-start !important}.align-items-lg-end{align-items:flex-end !important}.align-items-lg-center{align-items:center !important}.align-items-lg-baseline{align-items:baseline !important}.align-items-lg-stretch{align-items:stretch !important}.align-content-lg-start{align-content:flex-start !important}.align-content-lg-end{align-content:flex-end !important}.align-content-lg-center{align-content:center !important}.align-content-lg-between{align-content:space-between !important}.align-content-lg-around{align-content:space-around !important}.align-content-lg-stretch{align-content:stretch !important}.align-self-lg-auto{align-self:auto !important}.align-self-lg-start{align-self:flex-start !important}.align-self-lg-end{align-self:flex-end !important}.align-self-lg-center{align-self:center !important}.align-self-lg-baseline{align-self:baseline !important}.align-self-lg-stretch{align-self:stretch !important}.order-lg-first{order:-1 !important}.order-lg-0{order:0 !important}.order-lg-1{order:1 !important}.order-lg-2{order:2 !important}.order-lg-3{order:3 !important}.order-lg-4{order:4 !important}.order-lg-5{order:5 !important}.order-lg-last{order:6 !important}.m-lg-0{margin:0 !important}.m-lg-1{margin:.25rem !important}.m-lg-2{margin:.5rem !important}.m-lg-3{margin:1rem !important}.m-lg-4{margin:1.5rem !important}.m-lg-5{margin:3rem !important}.m-lg-auto{margin:auto !important}.mx-lg-0{margin-right:0 !important;margin-left:0 !important}.mx-lg-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-lg-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-lg-3{margin-right:1rem !important;margin-left:1rem !important}.mx-lg-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-lg-5{margin-right:3rem !important;margin-left:3rem !important}.mx-lg-auto{margin-right:auto !important;margin-left:auto !important}.my-lg-0{margin-top:0 !important;margin-bottom:0 !important}.my-lg-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-lg-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-lg-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-lg-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-lg-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-lg-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-lg-0{margin-top:0 !important}.mt-lg-1{margin-top:.25rem !important}.mt-lg-2{margin-top:.5rem !important}.mt-lg-3{margin-top:1rem !important}.mt-lg-4{margin-top:1.5rem !important}.mt-lg-5{margin-top:3rem !important}.mt-lg-auto{margin-top:auto !important}.me-lg-0{margin-right:0 !important}.me-lg-1{margin-right:.25rem !important}.me-lg-2{margin-right:.5rem !important}.me-lg-3{margin-right:1rem !important}.me-lg-4{margin-right:1.5rem !important}.me-lg-5{margin-right:3rem !important}.me-lg-auto{margin-right:auto !important}.mb-lg-0{margin-bottom:0 !important}.mb-lg-1{margin-bottom:.25rem !important}.mb-lg-2{margin-bottom:.5rem !important}.mb-lg-3{margin-bottom:1rem !important}.mb-lg-4{margin-bottom:1.5rem !important}.mb-lg-5{margin-bottom:3rem !important}.mb-lg-auto{margin-bottom:auto !important}.ms-lg-0{margin-left:0 !important}.ms-lg-1{margin-left:.25rem !important}.ms-lg-2{margin-left:.5rem !important}.ms-lg-3{margin-left:1rem !important}.ms-lg-4{margin-left:1.5rem !important}.ms-lg-5{margin-left:3rem !important}.ms-lg-auto{margin-left:auto !important}.p-lg-0{padding:0 !important}.p-lg-1{padding:.25rem !important}.p-lg-2{padding:.5rem !important}.p-lg-3{padding:1rem !important}.p-lg-4{padding:1.5rem !important}.p-lg-5{padding:3rem !important}.px-lg-0{padding-right:0 !important;padding-left:0 !important}.px-lg-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-lg-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-lg-3{padding-right:1rem !important;padding-left:1rem !important}.px-lg-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-lg-5{padding-right:3rem !important;padding-left:3rem !important}.py-lg-0{padding-top:0 !important;padding-bottom:0 !important}.py-lg-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-lg-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-lg-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-lg-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-lg-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-lg-0{padding-top:0 !important}.pt-lg-1{padding-top:.25rem !important}.pt-lg-2{padding-top:.5rem !important}.pt-lg-3{padding-top:1rem !important}.pt-lg-4{padding-top:1.5rem !important}.pt-lg-5{padding-top:3rem !important}.pe-lg-0{padding-right:0 !important}.pe-lg-1{padding-right:.25rem !important}.pe-lg-2{padding-right:.5rem !important}.pe-lg-3{padding-right:1rem !important}.pe-lg-4{padding-right:1.5rem !important}.pe-lg-5{padding-right:3rem !important}.pb-lg-0{padding-bottom:0 !important}.pb-lg-1{padding-bottom:.25rem !important}.pb-lg-2{padding-bottom:.5rem !important}.pb-lg-3{padding-bottom:1rem !important}.pb-lg-4{padding-bottom:1.5rem !important}.pb-lg-5{padding-bottom:3rem !important}.ps-lg-0{padding-left:0 !important}.ps-lg-1{padding-left:.25rem !important}.ps-lg-2{padding-left:.5rem !important}.ps-lg-3{padding-left:1rem !important}.ps-lg-4{padding-left:1.5rem !important}.ps-lg-5{padding-left:3rem !important}.text-lg-start{text-align:left !important}.text-lg-end{text-align:right !important}.text-lg-center{text-align:center !important}}@media(min-width: 1200px){.float-xl-start{float:left !important}.float-xl-end{float:right !important}.float-xl-none{float:none !important}.d-xl-inline{display:inline !important}.d-xl-inline-block{display:inline-block !important}.d-xl-block{display:block !important}.d-xl-grid{display:grid !important}.d-xl-table{display:table !important}.d-xl-table-row{display:table-row !important}.d-xl-table-cell{display:table-cell !important}.d-xl-flex{display:flex !important}.d-xl-inline-flex{display:inline-flex !important}.d-xl-none{display:none !important}.flex-xl-fill{flex:1 1 auto !important}.flex-xl-row{flex-direction:row !important}.flex-xl-column{flex-direction:column !important}.flex-xl-row-reverse{flex-direction:row-reverse !important}.flex-xl-column-reverse{flex-direction:column-reverse !important}.flex-xl-grow-0{flex-grow:0 !important}.flex-xl-grow-1{flex-grow:1 !important}.flex-xl-shrink-0{flex-shrink:0 !important}.flex-xl-shrink-1{flex-shrink:1 !important}.flex-xl-wrap{flex-wrap:wrap !important}.flex-xl-nowrap{flex-wrap:nowrap !important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse !important}.gap-xl-0{gap:0 !important}.gap-xl-1{gap:.25rem !important}.gap-xl-2{gap:.5rem !important}.gap-xl-3{gap:1rem !important}.gap-xl-4{gap:1.5rem !important}.gap-xl-5{gap:3rem !important}.justify-content-xl-start{justify-content:flex-start !important}.justify-content-xl-end{justify-content:flex-end !important}.justify-content-xl-center{justify-content:center !important}.justify-content-xl-between{justify-content:space-between !important}.justify-content-xl-around{justify-content:space-around !important}.justify-content-xl-evenly{justify-content:space-evenly !important}.align-items-xl-start{align-items:flex-start !important}.align-items-xl-end{align-items:flex-end !important}.align-items-xl-center{align-items:center !important}.align-items-xl-baseline{align-items:baseline !important}.align-items-xl-stretch{align-items:stretch !important}.align-content-xl-start{align-content:flex-start !important}.align-content-xl-end{align-content:flex-end !important}.align-content-xl-center{align-content:center !important}.align-content-xl-between{align-content:space-between !important}.align-content-xl-around{align-content:space-around !important}.align-content-xl-stretch{align-content:stretch !important}.align-self-xl-auto{align-self:auto !important}.align-self-xl-start{align-self:flex-start !important}.align-self-xl-end{align-self:flex-end !important}.align-self-xl-center{align-self:center !important}.align-self-xl-baseline{align-self:baseline !important}.align-self-xl-stretch{align-self:stretch !important}.order-xl-first{order:-1 !important}.order-xl-0{order:0 !important}.order-xl-1{order:1 !important}.order-xl-2{order:2 !important}.order-xl-3{order:3 !important}.order-xl-4{order:4 !important}.order-xl-5{order:5 !important}.order-xl-last{order:6 !important}.m-xl-0{margin:0 !important}.m-xl-1{margin:.25rem !important}.m-xl-2{margin:.5rem !important}.m-xl-3{margin:1rem !important}.m-xl-4{margin:1.5rem !important}.m-xl-5{margin:3rem !important}.m-xl-auto{margin:auto !important}.mx-xl-0{margin-right:0 !important;margin-left:0 !important}.mx-xl-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-xl-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-xl-3{margin-right:1rem !important;margin-left:1rem !important}.mx-xl-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-xl-5{margin-right:3rem !important;margin-left:3rem !important}.mx-xl-auto{margin-right:auto !important;margin-left:auto !important}.my-xl-0{margin-top:0 !important;margin-bottom:0 !important}.my-xl-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-xl-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-xl-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-xl-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-xl-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-xl-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-xl-0{margin-top:0 !important}.mt-xl-1{margin-top:.25rem !important}.mt-xl-2{margin-top:.5rem !important}.mt-xl-3{margin-top:1rem !important}.mt-xl-4{margin-top:1.5rem !important}.mt-xl-5{margin-top:3rem !important}.mt-xl-auto{margin-top:auto !important}.me-xl-0{margin-right:0 !important}.me-xl-1{margin-right:.25rem !important}.me-xl-2{margin-right:.5rem !important}.me-xl-3{margin-right:1rem !important}.me-xl-4{margin-right:1.5rem !important}.me-xl-5{margin-right:3rem !important}.me-xl-auto{margin-right:auto !important}.mb-xl-0{margin-bottom:0 !important}.mb-xl-1{margin-bottom:.25rem !important}.mb-xl-2{margin-bottom:.5rem !important}.mb-xl-3{margin-bottom:1rem !important}.mb-xl-4{margin-bottom:1.5rem !important}.mb-xl-5{margin-bottom:3rem !important}.mb-xl-auto{margin-bottom:auto !important}.ms-xl-0{margin-left:0 !important}.ms-xl-1{margin-left:.25rem !important}.ms-xl-2{margin-left:.5rem !important}.ms-xl-3{margin-left:1rem !important}.ms-xl-4{margin-left:1.5rem !important}.ms-xl-5{margin-left:3rem !important}.ms-xl-auto{margin-left:auto !important}.p-xl-0{padding:0 !important}.p-xl-1{padding:.25rem !important}.p-xl-2{padding:.5rem !important}.p-xl-3{padding:1rem !important}.p-xl-4{padding:1.5rem !important}.p-xl-5{padding:3rem !important}.px-xl-0{padding-right:0 !important;padding-left:0 !important}.px-xl-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-xl-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-xl-3{padding-right:1rem !important;padding-left:1rem !important}.px-xl-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-xl-5{padding-right:3rem !important;padding-left:3rem !important}.py-xl-0{padding-top:0 !important;padding-bottom:0 !important}.py-xl-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-xl-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-xl-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-xl-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-xl-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-xl-0{padding-top:0 !important}.pt-xl-1{padding-top:.25rem !important}.pt-xl-2{padding-top:.5rem !important}.pt-xl-3{padding-top:1rem !important}.pt-xl-4{padding-top:1.5rem !important}.pt-xl-5{padding-top:3rem !important}.pe-xl-0{padding-right:0 !important}.pe-xl-1{padding-right:.25rem !important}.pe-xl-2{padding-right:.5rem !important}.pe-xl-3{padding-right:1rem !important}.pe-xl-4{padding-right:1.5rem !important}.pe-xl-5{padding-right:3rem !important}.pb-xl-0{padding-bottom:0 !important}.pb-xl-1{padding-bottom:.25rem !important}.pb-xl-2{padding-bottom:.5rem !important}.pb-xl-3{padding-bottom:1rem !important}.pb-xl-4{padding-bottom:1.5rem !important}.pb-xl-5{padding-bottom:3rem !important}.ps-xl-0{padding-left:0 !important}.ps-xl-1{padding-left:.25rem !important}.ps-xl-2{padding-left:.5rem !important}.ps-xl-3{padding-left:1rem !important}.ps-xl-4{padding-left:1.5rem !important}.ps-xl-5{padding-left:3rem !important}.text-xl-start{text-align:left !important}.text-xl-end{text-align:right !important}.text-xl-center{text-align:center !important}}@media(min-width: 1400px){.float-xxl-start{float:left !important}.float-xxl-end{float:right !important}.float-xxl-none{float:none !important}.d-xxl-inline{display:inline !important}.d-xxl-inline-block{display:inline-block !important}.d-xxl-block{display:block !important}.d-xxl-grid{display:grid !important}.d-xxl-table{display:table !important}.d-xxl-table-row{display:table-row !important}.d-xxl-table-cell{display:table-cell !important}.d-xxl-flex{display:flex !important}.d-xxl-inline-flex{display:inline-flex !important}.d-xxl-none{display:none !important}.flex-xxl-fill{flex:1 1 auto !important}.flex-xxl-row{flex-direction:row !important}.flex-xxl-column{flex-direction:column !important}.flex-xxl-row-reverse{flex-direction:row-reverse !important}.flex-xxl-column-reverse{flex-direction:column-reverse !important}.flex-xxl-grow-0{flex-grow:0 !important}.flex-xxl-grow-1{flex-grow:1 !important}.flex-xxl-shrink-0{flex-shrink:0 !important}.flex-xxl-shrink-1{flex-shrink:1 !important}.flex-xxl-wrap{flex-wrap:wrap !important}.flex-xxl-nowrap{flex-wrap:nowrap !important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse !important}.gap-xxl-0{gap:0 !important}.gap-xxl-1{gap:.25rem !important}.gap-xxl-2{gap:.5rem !important}.gap-xxl-3{gap:1rem !important}.gap-xxl-4{gap:1.5rem !important}.gap-xxl-5{gap:3rem !important}.justify-content-xxl-start{justify-content:flex-start !important}.justify-content-xxl-end{justify-content:flex-end !important}.justify-content-xxl-center{justify-content:center !important}.justify-content-xxl-between{justify-content:space-between !important}.justify-content-xxl-around{justify-content:space-around !important}.justify-content-xxl-evenly{justify-content:space-evenly !important}.align-items-xxl-start{align-items:flex-start !important}.align-items-xxl-end{align-items:flex-end !important}.align-items-xxl-center{align-items:center !important}.align-items-xxl-baseline{align-items:baseline !important}.align-items-xxl-stretch{align-items:stretch !important}.align-content-xxl-start{align-content:flex-start !important}.align-content-xxl-end{align-content:flex-end !important}.align-content-xxl-center{align-content:center !important}.align-content-xxl-between{align-content:space-between !important}.align-content-xxl-around{align-content:space-around !important}.align-content-xxl-stretch{align-content:stretch !important}.align-self-xxl-auto{align-self:auto !important}.align-self-xxl-start{align-self:flex-start !important}.align-self-xxl-end{align-self:flex-end !important}.align-self-xxl-center{align-self:center !important}.align-self-xxl-baseline{align-self:baseline !important}.align-self-xxl-stretch{align-self:stretch !important}.order-xxl-first{order:-1 !important}.order-xxl-0{order:0 !important}.order-xxl-1{order:1 !important}.order-xxl-2{order:2 !important}.order-xxl-3{order:3 !important}.order-xxl-4{order:4 !important}.order-xxl-5{order:5 !important}.order-xxl-last{order:6 !important}.m-xxl-0{margin:0 !important}.m-xxl-1{margin:.25rem !important}.m-xxl-2{margin:.5rem !important}.m-xxl-3{margin:1rem !important}.m-xxl-4{margin:1.5rem !important}.m-xxl-5{margin:3rem !important}.m-xxl-auto{margin:auto !important}.mx-xxl-0{margin-right:0 !important;margin-left:0 !important}.mx-xxl-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-xxl-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-xxl-3{margin-right:1rem !important;margin-left:1rem !important}.mx-xxl-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-xxl-5{margin-right:3rem !important;margin-left:3rem !important}.mx-xxl-auto{margin-right:auto !important;margin-left:auto !important}.my-xxl-0{margin-top:0 !important;margin-bottom:0 !important}.my-xxl-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-xxl-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-xxl-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-xxl-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-xxl-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-xxl-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-xxl-0{margin-top:0 !important}.mt-xxl-1{margin-top:.25rem !important}.mt-xxl-2{margin-top:.5rem !important}.mt-xxl-3{margin-top:1rem !important}.mt-xxl-4{margin-top:1.5rem !important}.mt-xxl-5{margin-top:3rem !important}.mt-xxl-auto{margin-top:auto !important}.me-xxl-0{margin-right:0 !important}.me-xxl-1{margin-right:.25rem !important}.me-xxl-2{margin-right:.5rem !important}.me-xxl-3{margin-right:1rem !important}.me-xxl-4{margin-right:1.5rem !important}.me-xxl-5{margin-right:3rem !important}.me-xxl-auto{margin-right:auto !important}.mb-xxl-0{margin-bottom:0 !important}.mb-xxl-1{margin-bottom:.25rem !important}.mb-xxl-2{margin-bottom:.5rem !important}.mb-xxl-3{margin-bottom:1rem !important}.mb-xxl-4{margin-bottom:1.5rem !important}.mb-xxl-5{margin-bottom:3rem !important}.mb-xxl-auto{margin-bottom:auto !important}.ms-xxl-0{margin-left:0 !important}.ms-xxl-1{margin-left:.25rem !important}.ms-xxl-2{margin-left:.5rem !important}.ms-xxl-3{margin-left:1rem !important}.ms-xxl-4{margin-left:1.5rem !important}.ms-xxl-5{margin-left:3rem !important}.ms-xxl-auto{margin-left:auto !important}.p-xxl-0{padding:0 !important}.p-xxl-1{padding:.25rem !important}.p-xxl-2{padding:.5rem !important}.p-xxl-3{padding:1rem !important}.p-xxl-4{padding:1.5rem !important}.p-xxl-5{padding:3rem !important}.px-xxl-0{padding-right:0 !important;padding-left:0 !important}.px-xxl-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-xxl-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-xxl-3{padding-right:1rem !important;padding-left:1rem !important}.px-xxl-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-xxl-5{padding-right:3rem !important;padding-left:3rem !important}.py-xxl-0{padding-top:0 !important;padding-bottom:0 !important}.py-xxl-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-xxl-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-xxl-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-xxl-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-xxl-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-xxl-0{padding-top:0 !important}.pt-xxl-1{padding-top:.25rem !important}.pt-xxl-2{padding-top:.5rem !important}.pt-xxl-3{padding-top:1rem !important}.pt-xxl-4{padding-top:1.5rem !important}.pt-xxl-5{padding-top:3rem !important}.pe-xxl-0{padding-right:0 !important}.pe-xxl-1{padding-right:.25rem !important}.pe-xxl-2{padding-right:.5rem !important}.pe-xxl-3{padding-right:1rem !important}.pe-xxl-4{padding-right:1.5rem !important}.pe-xxl-5{padding-right:3rem !important}.pb-xxl-0{padding-bottom:0 !important}.pb-xxl-1{padding-bottom:.25rem !important}.pb-xxl-2{padding-bottom:.5rem !important}.pb-xxl-3{padding-bottom:1rem !important}.pb-xxl-4{padding-bottom:1.5rem !important}.pb-xxl-5{padding-bottom:3rem !important}.ps-xxl-0{padding-left:0 !important}.ps-xxl-1{padding-left:.25rem !important}.ps-xxl-2{padding-left:.5rem !important}.ps-xxl-3{padding-left:1rem !important}.ps-xxl-4{padding-left:1.5rem !important}.ps-xxl-5{padding-left:3rem !important}.text-xxl-start{text-align:left !important}.text-xxl-end{text-align:right !important}.text-xxl-center{text-align:center !important}}.bg-default{color:#fff}.bg-primary{color:#fff}.bg-secondary{color:#fff}.bg-success{color:#fff}.bg-info{color:#fff}.bg-warning{color:#fff}.bg-danger{color:#fff}.bg-light{color:#000}.bg-dark{color:#fff}@media(min-width: 1200px){.fs-1{font-size:2rem !important}.fs-2{font-size:1.65rem !important}.fs-3{font-size:1.45rem !important}}@media print{.d-print-inline{display:inline !important}.d-print-inline-block{display:inline-block !important}.d-print-block{display:block !important}.d-print-grid{display:grid !important}.d-print-table{display:table !important}.d-print-table-row{display:table-row !important}.d-print-table-cell{display:table-cell !important}.d-print-flex{display:flex !important}.d-print-inline-flex{display:inline-flex !important}.d-print-none{display:none !important}}.quarto-container{min-height:calc(100vh - 132px)}footer.footer .nav-footer,#quarto-header>nav{padding-left:1em;padding-right:1em}nav[role=doc-toc]{padding-left:.5em}#quarto-content>*{padding-top:14px}@media(max-width: 991.98px){#quarto-content>*{padding-top:0}#quarto-content .subtitle{padding-top:14px}#quarto-content section:first-of-type h2:first-of-type,#quarto-content section:first-of-type .h2:first-of-type{margin-top:1rem}}.headroom-target,header.headroom{will-change:transform;transition:position 200ms linear;transition:all 200ms linear}header.headroom--pinned{transform:translateY(0%)}header.headroom--unpinned{transform:translateY(-100%)}.navbar-container{width:100%}.navbar-brand{overflow:hidden;text-overflow:ellipsis}.navbar-brand-container{max-width:calc(100% - 115px);min-width:0;display:flex;align-items:center}@media(min-width: 992px){.navbar-brand-container{margin-right:1em}}.navbar-brand.navbar-brand-logo{margin-right:4px;display:inline-flex}.navbar-toggler{flex-basis:content;flex-shrink:0}.navbar .navbar-toggler{order:-1;margin-right:.5em}.navbar-logo{max-height:24px;width:auto;padding-right:4px}nav .nav-item:not(.compact){padding-top:1px}nav .nav-link i,nav .dropdown-item i{padding-right:1px}.navbar-expand-lg .navbar-nav .nav-link{padding-left:.6rem;padding-right:.6rem}nav .nav-item.compact .nav-link{padding-left:.5rem;padding-right:.5rem;font-size:1.1rem}.navbar .quarto-navbar-tools div.dropdown{display:inline-block}.navbar .quarto-navbar-tools .quarto-navigation-tool{color:#ccd1d5}.navbar .quarto-navbar-tools .quarto-navigation-tool:hover{color:#fff}@media(max-width: 991.98px){.navbar .quarto-navbar-tools{margin-top:.25em;padding-top:.75em;display:block;color:solid #495259 1px;text-align:center;vertical-align:middle;margin-right:auto}}.navbar-nav .dropdown-menu{min-width:220px;font-size:.9rem}.navbar .navbar-nav .nav-link.dropdown-toggle::after{opacity:.75;vertical-align:.175em}.navbar ul.dropdown-menu{padding-top:0;padding-bottom:0}.navbar .dropdown-header{text-transform:uppercase;font-size:.8rem;padding:0 .5rem}.navbar .dropdown-item{padding:.4rem .5rem}.navbar .dropdown-item>i.bi{margin-left:.1rem;margin-right:.25em}.sidebar #quarto-search{margin-top:-1px}.sidebar #quarto-search svg.aa-SubmitIcon{width:16px;height:16px}.sidebar-navigation a{color:inherit}.sidebar-title{margin-top:.25rem;padding-bottom:.5rem;font-size:1.3rem;line-height:1.6rem;visibility:visible}.sidebar-title>a{font-size:inherit;text-decoration:none}.sidebar-title .sidebar-tools-main{margin-top:-6px}@media(max-width: 991.98px){#quarto-sidebar div.sidebar-header{padding-top:.2em}}.sidebar-header-stacked .sidebar-title{margin-top:.6rem}.sidebar-logo{max-width:90%;padding-bottom:.5rem}.sidebar-logo-link{text-decoration:none}.sidebar-navigation li a{text-decoration:none}.sidebar-navigation .quarto-navigation-tool{opacity:.7;font-size:.875rem}#quarto-sidebar>nav>.sidebar-tools-main{margin-left:14px}.sidebar-tools-main{display:inline-flex;margin-left:0px;order:2}.sidebar-tools-main:not(.tools-wide){vertical-align:middle}.sidebar-navigation .quarto-navigation-tool.dropdown-toggle::after{display:none}.sidebar.sidebar-navigation>*{padding-top:1em}.sidebar-item{margin-bottom:.2em}.sidebar-section{margin-top:.2em;padding-left:.5em;padding-bottom:.2em}.sidebar-item .sidebar-item-container{display:flex;justify-content:space-between}.sidebar-item-toggle:hover{cursor:pointer}.sidebar-item .sidebar-item-toggle .bi{font-size:.7rem;text-align:center}.sidebar-item .sidebar-item-toggle .bi-chevron-right::before{transition:transform 200ms ease}.sidebar-item .sidebar-item-toggle[aria-expanded=false] .bi-chevron-right::before{transform:none}.sidebar-item .sidebar-item-toggle[aria-expanded=true] .bi-chevron-right::before{transform:rotate(90deg)}.sidebar-navigation .sidebar-divider{margin-left:0;margin-right:0;margin-top:.5rem;margin-bottom:.5rem}@media(max-width: 991.98px){.quarto-secondary-nav{display:block}.quarto-secondary-nav button.quarto-search-button{padding-right:0em;padding-left:2em}.quarto-secondary-nav button.quarto-btn-toggle{margin-left:-0.75rem;margin-right:.15rem}.quarto-secondary-nav nav.quarto-page-breadcrumbs{display:flex;align-items:center;padding-right:1em;margin-left:-0.25em}.quarto-secondary-nav nav.quarto-page-breadcrumbs a{text-decoration:none}.quarto-secondary-nav nav.quarto-page-breadcrumbs ol.breadcrumb{margin-bottom:0}}@media(min-width: 992px){.quarto-secondary-nav{display:none}}.quarto-secondary-nav .quarto-btn-toggle{color:#4e4f50}.quarto-secondary-nav[aria-expanded=false] .quarto-btn-toggle .bi-chevron-right::before{transform:none}.quarto-secondary-nav[aria-expanded=true] .quarto-btn-toggle .bi-chevron-right::before{transform:rotate(90deg)}.quarto-secondary-nav .quarto-btn-toggle .bi-chevron-right::before{transition:transform 200ms ease}.quarto-secondary-nav{cursor:pointer}.quarto-secondary-nav-title{margin-top:.3em;color:#4e4f50;padding-top:4px}.quarto-secondary-nav nav.quarto-page-breadcrumbs{color:#4e4f50}.quarto-secondary-nav nav.quarto-page-breadcrumbs a{color:#4e4f50}.quarto-secondary-nav nav.quarto-page-breadcrumbs a:hover{color:rgba(12,90,75,.8)}.quarto-secondary-nav nav.quarto-page-breadcrumbs .breadcrumb-item::before{color:#808284}div.sidebar-item-container{color:#4e4f50}div.sidebar-item-container:hover,div.sidebar-item-container:focus{color:rgba(12,90,75,.8)}div.sidebar-item-container.disabled{color:rgba(78,79,80,.75)}div.sidebar-item-container .active,div.sidebar-item-container .show>.nav-link,div.sidebar-item-container .sidebar-link>code{color:#0c5a4b}div.sidebar.sidebar-navigation.rollup.quarto-sidebar-toggle-contents,nav.sidebar.sidebar-navigation:not(.rollup){background-color:#ecf0f1}.sidebar.sidebar-navigation:not(.rollup){border-right:1px solid #dee2e6 !important}@media(max-width: 991.98px){.sidebar-navigation .sidebar-item a,.nav-page .nav-page-text,.sidebar-navigation{font-size:1rem}.sidebar-navigation ul.sidebar-section.depth1 .sidebar-section-item{font-size:1.1rem}.sidebar-logo{display:none}.sidebar.sidebar-navigation{position:static;border-bottom:1px solid #dee2e6}.sidebar.sidebar-navigation.collapsing{position:fixed;z-index:1000}.sidebar.sidebar-navigation.show{position:fixed;z-index:1000}.sidebar.sidebar-navigation{min-height:100%}nav.quarto-secondary-nav{background-color:#ecf0f1;border-bottom:1px solid #dee2e6}.sidebar .sidebar-footer{visibility:visible;padding-top:1rem;position:inherit}.sidebar-tools-collapse{display:block}}#quarto-sidebar{transition:width .15s ease-in}#quarto-sidebar>*{padding-right:1em}@media(max-width: 991.98px){#quarto-sidebar .sidebar-menu-container{white-space:nowrap;min-width:225px}#quarto-sidebar.show{transition:width .15s ease-out}}@media(min-width: 992px){#quarto-sidebar{display:flex;flex-direction:column}.nav-page .nav-page-text,.sidebar-navigation .sidebar-section .sidebar-item{font-size:.875rem}.sidebar-navigation .sidebar-item{font-size:.925rem}.sidebar.sidebar-navigation{display:block;position:sticky}.sidebar-search{width:100%}.sidebar .sidebar-footer{visibility:visible}}@media(max-width: 991.98px){#quarto-sidebar-glass{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(255,255,255,0);transition:background-color .15s ease-in;z-index:-1}#quarto-sidebar-glass.collapsing{z-index:1000}#quarto-sidebar-glass.show{transition:background-color .15s ease-out;background-color:rgba(102,102,102,.4);z-index:1000}}.sidebar .sidebar-footer{padding:.5rem 1rem;align-self:flex-end;color:#6c757d;width:100%}.quarto-page-breadcrumbs .breadcrumb-item+.breadcrumb-item,.quarto-page-breadcrumbs .breadcrumb-item{padding-right:.33em;padding-left:0}.quarto-page-breadcrumbs .breadcrumb-item::before{padding-right:.33em}.quarto-sidebar-footer{font-size:.875em}.sidebar-section .bi-chevron-right{vertical-align:middle}.sidebar-section .bi-chevron-right::before{font-size:.9em}.notransition{-webkit-transition:none !important;-moz-transition:none !important;-o-transition:none !important;transition:none !important}.btn:focus:not(:focus-visible){box-shadow:none}.page-navigation{display:flex;justify-content:space-between}.nav-page{padding-bottom:.75em}.nav-page .bi{font-size:1.8rem;vertical-align:middle}.nav-page .nav-page-text{padding-left:.25em;padding-right:.25em}.nav-page a{color:#6c757d;text-decoration:none;display:flex;align-items:center}.nav-page a:hover{color:#13967d}.toc-actions{display:flex}.toc-actions p{margin-block-start:0;margin-block-end:0}.toc-actions a{text-decoration:none;color:inherit;font-weight:400}.toc-actions a:hover{color:#13967d}.toc-actions .action-links{margin-left:4px}.sidebar nav[role=doc-toc] .toc-actions .bi{margin-left:-4px;font-size:.7rem;color:#6c757d}.sidebar nav[role=doc-toc] .toc-actions .bi:before{padding-top:3px}#quarto-margin-sidebar .toc-actions .bi:before{margin-top:.3rem;font-size:.7rem;color:#6c757d;vertical-align:top}.sidebar nav[role=doc-toc] .toc-actions>div:first-of-type{margin-top:-3px}#quarto-margin-sidebar .toc-actions p,.sidebar nav[role=doc-toc] .toc-actions p{font-size:.875rem}.nav-footer .toc-actions{padding-bottom:.5em;padding-top:.5em}.nav-footer .toc-actions :first-child{margin-left:auto}.nav-footer .toc-actions :last-child{margin-right:auto}.nav-footer .toc-actions .action-links{display:flex}.nav-footer .toc-actions .action-links p{padding-right:1.5em}.nav-footer .toc-actions .action-links p:last-of-type{padding-right:0}.nav-footer{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between;align-items:baseline;text-align:center;padding-top:.5rem;padding-bottom:.5rem;background-color:#fff}body.nav-fixed{padding-top:82px}body .nav-footer{border-top:1px solid #dee2e6}.nav-footer-contents{color:#6c757d;margin-top:.25rem}.nav-footer{min-height:3.5em;color:#757575}.nav-footer a{color:#757575}.nav-footer .nav-footer-left{font-size:.825em}.nav-footer .nav-footer-center{font-size:.825em}.nav-footer .nav-footer-right{font-size:.825em}.nav-footer-left .footer-items,.nav-footer-center .footer-items,.nav-footer-right .footer-items{display:inline-flex;padding-top:.3em;padding-bottom:.3em;margin-bottom:0em}.nav-footer-left .footer-items .nav-link,.nav-footer-center .footer-items .nav-link,.nav-footer-right .footer-items .nav-link{padding-left:.6em;padding-right:.6em}.nav-footer-left{flex:1 1 0px;text-align:left}.nav-footer-right{flex:1 1 0px;text-align:right}.nav-footer-center{flex:1 1 0px;min-height:3em;text-align:center}.nav-footer-center .footer-items{justify-content:center}@media(max-width: 767.98px){.nav-footer-center{margin-top:3em}}.navbar .quarto-reader-toggle.reader .quarto-reader-toggle-btn{background-color:#ccd1d5;border-radius:3px}.quarto-reader-toggle.reader.quarto-navigation-tool .quarto-reader-toggle-btn{background-color:#4e4f50;border-radius:3px}.quarto-reader-toggle .quarto-reader-toggle-btn{display:inline-flex;padding-left:.2em;padding-right:.2em;margin-left:-0.2em;margin-right:-0.2em;text-align:center}.navbar .quarto-reader-toggle:not(.reader) .bi::before{background-image:url('data:image/svg+xml,')}.navbar .quarto-reader-toggle.reader .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-reader-toggle:not(.reader) .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-reader-toggle.reader .bi::before{background-image:url('data:image/svg+xml,')}#quarto-back-to-top{display:none;position:fixed;bottom:50px;background-color:#fff;border-radius:.25rem;box-shadow:0 .2rem .5rem #6c757d,0 0 .05rem #6c757d;color:#6c757d;text-decoration:none;font-size:.9em;text-align:center;left:50%;padding:.4rem .8rem;transform:translate(-50%, 0)}.aa-DetachedOverlay ul.aa-List,#quarto-search-results ul.aa-List{list-style:none;padding-left:0}.aa-DetachedOverlay .aa-Panel,#quarto-search-results .aa-Panel{background-color:#fff;position:absolute;z-index:2000}#quarto-search-results .aa-Panel{max-width:400px}#quarto-search input{font-size:.925rem}@media(min-width: 992px){.navbar #quarto-search{margin-left:.25rem;order:999}}@media(max-width: 991.98px){#quarto-sidebar .sidebar-search{display:none}}#quarto-sidebar .sidebar-search .aa-Autocomplete{width:100%}.navbar .aa-Autocomplete .aa-Form{width:180px}.navbar #quarto-search.type-overlay .aa-Autocomplete{width:40px}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form{background-color:inherit;border:none}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form:focus-within{box-shadow:none;outline:none}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form .aa-InputWrapper{display:none}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form .aa-InputWrapper:focus-within{display:inherit}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form .aa-Label svg,.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form .aa-LoadingIndicator svg{width:26px;height:26px;color:#ccd1d5;opacity:1}.navbar #quarto-search.type-overlay .aa-Autocomplete svg.aa-SubmitIcon{width:26px;height:26px;color:#ccd1d5;opacity:1}.aa-Autocomplete .aa-Form,.aa-DetachedFormContainer .aa-Form{align-items:center;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem;color:#212529;display:flex;line-height:1em;margin:0;position:relative;width:100%}.aa-Autocomplete .aa-Form:focus-within,.aa-DetachedFormContainer .aa-Form:focus-within{box-shadow:rgba(44,62,80,.6) 0 0 0 1px;outline:currentColor none medium}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix{align-items:center;display:flex;flex-shrink:0;order:1}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-Label,.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-Label,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator{cursor:initial;flex-shrink:0;padding:0;text-align:left}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-Label svg,.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator svg,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-Label svg,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator svg{color:#212529;opacity:.5}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-SubmitButton,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-SubmitButton{appearance:none;background:none;border:0;margin:0}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator{align-items:center;display:flex;justify-content:center}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator[hidden],.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator[hidden]{display:none}.aa-Autocomplete .aa-Form .aa-InputWrapper,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper{order:3;position:relative;width:100%}.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input{appearance:none;background:none;border:0;color:#212529;font:inherit;height:calc(1.5em + .1rem + 2px);padding:0;width:100%}.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::placeholder,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::placeholder{color:#212529;opacity:.8}.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input:focus,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input:focus{border-color:none;box-shadow:none;outline:none}.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-decoration,.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-cancel-button,.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-results-button,.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-results-decoration,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-decoration,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-cancel-button,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-results-button,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-results-decoration{display:none}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix{align-items:center;display:flex;order:4}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton{align-items:center;background:none;border:0;color:#212529;opacity:.8;cursor:pointer;display:flex;margin:0;width:calc(1.5em + .1rem + 2px)}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton:hover,.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton:focus,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton:hover,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton:focus{color:#212529;opacity:.8}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton[hidden],.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton[hidden]{display:none}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton svg,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton svg{width:calc(1.5em + 0.75rem + 2px)}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-CopyButton,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-CopyButton{border:none;align-items:center;background:none;color:#212529;opacity:.4;font-size:.7rem;cursor:pointer;display:none;margin:0;width:calc(1em + .1rem + 2px)}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-CopyButton:hover,.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-CopyButton:focus,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-CopyButton:hover,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-CopyButton:focus{color:#212529;opacity:.8}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-CopyButton[hidden],.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-CopyButton[hidden]{display:none}.aa-PanelLayout:empty{display:none}.quarto-search-no-results.no-query{display:none}.aa-Source:has(.no-query){display:none}#quarto-search-results .aa-Panel{border:solid #ced4da 1px}#quarto-search-results .aa-SourceNoResults{width:398px}.aa-DetachedOverlay .aa-Panel,#quarto-search-results .aa-Panel{max-height:65vh;overflow-y:auto;font-size:.925rem}.aa-DetachedOverlay .aa-SourceNoResults,#quarto-search-results .aa-SourceNoResults{height:60px;display:flex;justify-content:center;align-items:center}.aa-DetachedOverlay .search-error,#quarto-search-results .search-error{padding-top:10px;padding-left:20px;padding-right:20px;cursor:default}.aa-DetachedOverlay .search-error .search-error-title,#quarto-search-results .search-error .search-error-title{font-size:1.1rem;margin-bottom:.5rem}.aa-DetachedOverlay .search-error .search-error-title .search-error-icon,#quarto-search-results .search-error .search-error-title .search-error-icon{margin-right:8px}.aa-DetachedOverlay .search-error .search-error-text,#quarto-search-results .search-error .search-error-text{font-weight:300}.aa-DetachedOverlay .search-result-text,#quarto-search-results .search-result-text{font-weight:300;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.2rem;max-height:2.4rem}.aa-DetachedOverlay .aa-SourceHeader .search-result-header,#quarto-search-results .aa-SourceHeader .search-result-header{font-size:.875rem;background-color:#f2f2f2;padding-left:14px;padding-bottom:4px;padding-top:4px}.aa-DetachedOverlay .aa-SourceHeader .search-result-header-no-results,#quarto-search-results .aa-SourceHeader .search-result-header-no-results{display:none}.aa-DetachedOverlay .aa-SourceFooter .algolia-search-logo,#quarto-search-results .aa-SourceFooter .algolia-search-logo{width:110px;opacity:.85;margin:8px;float:right}.aa-DetachedOverlay .search-result-section,#quarto-search-results .search-result-section{font-size:.925em}.aa-DetachedOverlay a.search-result-link,#quarto-search-results a.search-result-link{color:inherit;text-decoration:none}.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item,#quarto-search-results li.aa-Item[aria-selected=true] .search-item{background-color:#2c3e50}.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item.search-result-more,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-result-section,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-result-text,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-result-title-container,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-result-text-container,#quarto-search-results li.aa-Item[aria-selected=true] .search-item.search-result-more,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-result-section,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-result-text,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-result-title-container,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-result-text-container{color:#fff;background-color:#2c3e50}.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item mark.search-match,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-match.mark,#quarto-search-results li.aa-Item[aria-selected=true] .search-item mark.search-match,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-match.mark{color:#fff;background-color:#3a526a}.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item,#quarto-search-results li.aa-Item[aria-selected=false] .search-item{background-color:#fff}.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item.search-result-more,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-result-section,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-result-text,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-result-title-container,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-result-text-container,#quarto-search-results li.aa-Item[aria-selected=false] .search-item.search-result-more,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-result-section,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-result-text,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-result-title-container,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-result-text-container{color:#212529}.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item mark.search-match,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-match.mark,#quarto-search-results li.aa-Item[aria-selected=false] .search-item mark.search-match,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-match.mark{color:inherit;background-color:#90a9c2}.aa-DetachedOverlay .aa-Item .search-result-doc:not(.document-selectable) .search-result-title-container,#quarto-search-results .aa-Item .search-result-doc:not(.document-selectable) .search-result-title-container{background-color:#fff;color:#212529}.aa-DetachedOverlay .aa-Item .search-result-doc:not(.document-selectable) .search-result-text-container,#quarto-search-results .aa-Item .search-result-doc:not(.document-selectable) .search-result-text-container{padding-top:0px}.aa-DetachedOverlay li.aa-Item .search-result-doc.document-selectable .search-result-text-container,#quarto-search-results li.aa-Item .search-result-doc.document-selectable .search-result-text-container{margin-top:-4px}.aa-DetachedOverlay .aa-Item,#quarto-search-results .aa-Item{cursor:pointer}.aa-DetachedOverlay .aa-Item .search-item,#quarto-search-results .aa-Item .search-item{border-left:none;border-right:none;border-top:none;background-color:#fff;border-color:#ced4da;color:#212529}.aa-DetachedOverlay .aa-Item .search-item p,#quarto-search-results .aa-Item .search-item p{margin-top:0;margin-bottom:0}.aa-DetachedOverlay .aa-Item .search-item i.bi,#quarto-search-results .aa-Item .search-item i.bi{padding-left:8px;padding-right:8px;font-size:1.3em}.aa-DetachedOverlay .aa-Item .search-item .search-result-title,#quarto-search-results .aa-Item .search-item .search-result-title{margin-top:.3em;margin-bottom:.1rem}.aa-DetachedOverlay .aa-Item .search-result-title-container,#quarto-search-results .aa-Item .search-result-title-container{font-size:1em;display:flex;padding:6px 4px 6px 4px}.aa-DetachedOverlay .aa-Item .search-result-text-container,#quarto-search-results .aa-Item .search-result-text-container{padding-bottom:8px;padding-right:8px;margin-left:44px}.aa-DetachedOverlay .aa-Item .search-result-doc-section,.aa-DetachedOverlay .aa-Item .search-result-more,#quarto-search-results .aa-Item .search-result-doc-section,#quarto-search-results .aa-Item .search-result-more{padding-top:8px;padding-bottom:8px;padding-left:44px}.aa-DetachedOverlay .aa-Item .search-result-more,#quarto-search-results .aa-Item .search-result-more{font-size:.8em;font-weight:400}.aa-DetachedOverlay .aa-Item .search-result-doc,#quarto-search-results .aa-Item .search-result-doc{border-top:1px solid #ced4da}.aa-DetachedSearchButton{background:none;border:none}.aa-DetachedSearchButton .aa-DetachedSearchButtonPlaceholder{display:none}.navbar .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon{color:#ccd1d5}.sidebar-tools-collapse #quarto-search,.sidebar-tools-main #quarto-search{display:inline}.sidebar-tools-collapse #quarto-search .aa-Autocomplete,.sidebar-tools-main #quarto-search .aa-Autocomplete{display:inline}.sidebar-tools-collapse #quarto-search .aa-DetachedSearchButton,.sidebar-tools-main #quarto-search .aa-DetachedSearchButton{padding-left:4px;padding-right:4px}.sidebar-tools-collapse #quarto-search .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon,.sidebar-tools-main #quarto-search .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon{color:#4e4f50}.sidebar-tools-collapse #quarto-search .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon .aa-SubmitIcon,.sidebar-tools-main #quarto-search .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon .aa-SubmitIcon{margin-top:-3px}.aa-DetachedContainer{background:rgba(255,255,255,.65);width:90%;bottom:0;box-shadow:rgba(206,212,218,.6) 0 0 0 1px;outline:currentColor none medium;display:flex;flex-direction:column;left:0;margin:0;overflow:hidden;padding:0;position:fixed;right:0;top:0;z-index:1101}.aa-DetachedContainer::after{height:32px}.aa-DetachedContainer .aa-SourceHeader{margin:var(--aa-spacing-half) 0 var(--aa-spacing-half) 2px}.aa-DetachedContainer .aa-Panel{background-color:#fff;border-radius:0;box-shadow:none;flex-grow:1;margin:0;padding:0;position:relative}.aa-DetachedContainer .aa-PanelLayout{bottom:0;box-shadow:none;left:0;margin:0;max-height:none;overflow-y:auto;position:absolute;right:0;top:0;width:100%}.aa-DetachedFormContainer{background-color:#fff;border-bottom:1px solid #ced4da;display:flex;flex-direction:row;justify-content:space-between;margin:0;padding:.5em}.aa-DetachedCancelButton{background:none;font-size:.8em;border:0;border-radius:3px;color:#212529;cursor:pointer;margin:0 0 0 .5em;padding:0 .5em}.aa-DetachedCancelButton:hover,.aa-DetachedCancelButton:focus{box-shadow:rgba(44,62,80,.6) 0 0 0 1px;outline:currentColor none medium}.aa-DetachedContainer--modal{bottom:inherit;height:auto;margin:0 auto;position:absolute;top:100px;border-radius:6px;max-width:850px}@media(max-width: 575.98px){.aa-DetachedContainer--modal{width:100%;top:0px;border-radius:0px;border:none}}.aa-DetachedContainer--modal .aa-PanelLayout{max-height:var(--aa-detached-modal-max-height);padding-bottom:var(--aa-spacing-half);position:static}.aa-Detached{height:100vh;overflow:hidden}.aa-DetachedOverlay{background-color:rgba(33,37,41,.4);position:fixed;left:0;right:0;top:0;margin:0;padding:0;height:100vh;z-index:1100}.quarto-listing{padding-bottom:1em}.listing-pagination{padding-top:.5em}ul.pagination{float:right;padding-left:8px;padding-top:.5em}ul.pagination li{padding-right:.75em}ul.pagination li.disabled a,ul.pagination li.active a{color:#212529;text-decoration:none}ul.pagination li:last-of-type{padding-right:0}.listing-actions-group{display:flex}.quarto-listing-filter{margin-bottom:1em;width:200px;margin-left:auto}.quarto-listing-sort{margin-bottom:1em;margin-right:auto;width:auto}.quarto-listing-sort .input-group-text{font-size:.8em}.input-group-text{border-right:none}.quarto-listing-sort select.form-select{font-size:.8em}.listing-no-matching{text-align:center;padding-top:2em;padding-bottom:3em;font-size:1em}#quarto-margin-sidebar .quarto-listing-category{padding-top:0;font-size:1rem}#quarto-margin-sidebar .quarto-listing-category-title{cursor:pointer;font-weight:600;font-size:1rem}.quarto-listing-category .category{cursor:pointer}.quarto-listing-category .category.active{font-weight:600}.quarto-listing-category.category-cloud{display:flex;flex-wrap:wrap;align-items:baseline}.quarto-listing-category.category-cloud .category{padding-right:5px}.quarto-listing-category.category-cloud .category-cloud-1{font-size:.75em}.quarto-listing-category.category-cloud .category-cloud-2{font-size:.95em}.quarto-listing-category.category-cloud .category-cloud-3{font-size:1.15em}.quarto-listing-category.category-cloud .category-cloud-4{font-size:1.35em}.quarto-listing-category.category-cloud .category-cloud-5{font-size:1.55em}.quarto-listing-category.category-cloud .category-cloud-6{font-size:1.75em}.quarto-listing-category.category-cloud .category-cloud-7{font-size:1.95em}.quarto-listing-category.category-cloud .category-cloud-8{font-size:2.15em}.quarto-listing-category.category-cloud .category-cloud-9{font-size:2.35em}.quarto-listing-category.category-cloud .category-cloud-10{font-size:2.55em}.quarto-listing-cols-1{grid-template-columns:repeat(1, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-1{grid-template-columns:repeat(1, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-1{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-2{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-2{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-2{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-3{grid-template-columns:repeat(3, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-3{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-3{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-4{grid-template-columns:repeat(4, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-4{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-4{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-5{grid-template-columns:repeat(5, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-5{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-5{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-6{grid-template-columns:repeat(6, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-6{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-6{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-7{grid-template-columns:repeat(7, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-7{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-7{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-8{grid-template-columns:repeat(8, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-8{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-8{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-9{grid-template-columns:repeat(9, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-9{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-9{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-10{grid-template-columns:repeat(10, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-10{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-10{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-11{grid-template-columns:repeat(11, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-11{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-11{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-12{grid-template-columns:repeat(12, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-12{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-12{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-grid{gap:1.5em}.quarto-grid-item.borderless{border:none}.quarto-grid-item.borderless .listing-categories .listing-category:last-of-type,.quarto-grid-item.borderless .listing-categories .listing-category:first-of-type{padding-left:0}.quarto-grid-item.borderless .listing-categories .listing-category{border:0}.quarto-grid-link{text-decoration:none;color:inherit}.quarto-grid-link:hover{text-decoration:none;color:inherit}.quarto-grid-item h5.title,.quarto-grid-item .title.h5{margin-top:0;margin-bottom:0}.quarto-grid-item .card-footer{display:flex;justify-content:space-between;font-size:.8em}.quarto-grid-item .card-footer p{margin-bottom:0}.quarto-grid-item p.card-img-top{margin-bottom:0}.quarto-grid-item p.card-img-top>img{object-fit:cover}.quarto-grid-item .card-other-values{margin-top:.5em;font-size:.8em}.quarto-grid-item .card-other-values tr{margin-bottom:.5em}.quarto-grid-item .card-other-values tr>td:first-of-type{font-weight:600;padding-right:1em;padding-left:1em;vertical-align:top}.quarto-grid-item div.post-contents{display:flex;flex-direction:column;text-decoration:none;height:100%}.quarto-grid-item .listing-item-img-placeholder{background-color:#adb5bd;flex-shrink:0}.quarto-grid-item .card-attribution{padding-top:1em;display:flex;gap:1em;text-transform:uppercase;color:#6c757d;font-weight:500;flex-grow:10;align-items:flex-end}.quarto-grid-item .description{padding-bottom:1em}.quarto-grid-item .card-attribution .date{align-self:flex-end}.quarto-grid-item .card-attribution.justify{justify-content:space-between}.quarto-grid-item .card-attribution.start{justify-content:flex-start}.quarto-grid-item .card-attribution.end{justify-content:flex-end}.quarto-grid-item .card-title{margin-bottom:.1em}.quarto-grid-item .card-subtitle{padding-top:.25em}.quarto-grid-item .card-text{font-size:.9em}.quarto-grid-item .listing-reading-time{padding-bottom:.25em}.quarto-grid-item .card-text-small{font-size:.8em}.quarto-grid-item .card-subtitle.subtitle{font-size:.9em;font-weight:600;padding-bottom:.5em}.quarto-grid-item .listing-categories{display:flex;flex-wrap:wrap;padding-bottom:5px}.quarto-grid-item .listing-categories .listing-category{color:#6c757d;border:solid 1px #dee2e6;border-radius:.25rem;text-transform:uppercase;font-size:.65em;padding-left:.5em;padding-right:.5em;padding-top:.15em;padding-bottom:.15em;cursor:pointer;margin-right:4px;margin-bottom:4px}.quarto-grid-item.card-right{text-align:right}.quarto-grid-item.card-right .listing-categories{justify-content:flex-end}.quarto-grid-item.card-left{text-align:left}.quarto-grid-item.card-center{text-align:center}.quarto-grid-item.card-center .listing-description{text-align:justify}.quarto-grid-item.card-center .listing-categories{justify-content:center}table.quarto-listing-table td.image{padding:0px}table.quarto-listing-table td.image img{width:100%;max-width:50px;object-fit:contain}table.quarto-listing-table a{text-decoration:none}table.quarto-listing-table th a{color:inherit}table.quarto-listing-table th a.asc:after{margin-bottom:-2px;margin-left:5px;display:inline-block;height:1rem;width:1rem;background-repeat:no-repeat;background-size:1rem 1rem;background-image:url('data:image/svg+xml,');content:""}table.quarto-listing-table th a.desc:after{margin-bottom:-2px;margin-left:5px;display:inline-block;height:1rem;width:1rem;background-repeat:no-repeat;background-size:1rem 1rem;background-image:url('data:image/svg+xml,');content:""}table.quarto-listing-table.table-hover td{cursor:pointer}.quarto-post.image-left{flex-direction:row}.quarto-post.image-right{flex-direction:row-reverse}@media(max-width: 767.98px){.quarto-post.image-right,.quarto-post.image-left{gap:0em;flex-direction:column}.quarto-post .metadata{padding-bottom:1em;order:2}.quarto-post .body{order:1}.quarto-post .thumbnail{order:3}}.list.quarto-listing-default div:last-of-type{border-bottom:none}@media(min-width: 992px){.quarto-listing-container-default{margin-right:2em}}div.quarto-post{display:flex;gap:2em;margin-bottom:1.5em;border-bottom:1px solid #dee2e6}@media(max-width: 767.98px){div.quarto-post{padding-bottom:1em}}div.quarto-post .metadata{flex-basis:20%;flex-grow:0;margin-top:.2em;flex-shrink:10}div.quarto-post .thumbnail{flex-basis:30%;flex-grow:0;flex-shrink:0}div.quarto-post .thumbnail img{margin-top:.4em;width:100%;object-fit:cover}div.quarto-post .body{flex-basis:45%;flex-grow:1;flex-shrink:0}div.quarto-post .body h3.listing-title,div.quarto-post .body .listing-title.h3{margin-top:0px;margin-bottom:0px;border-bottom:none}div.quarto-post .body .listing-subtitle{font-size:.875em;margin-bottom:.5em;margin-top:.2em}div.quarto-post .body .description{font-size:.9em}div.quarto-post a{color:#212529;display:flex;flex-direction:column;text-decoration:none}div.quarto-post a div.description{flex-shrink:0}div.quarto-post .metadata{display:flex;flex-direction:column;font-size:.8em;font-family:var(--bs-font-sans-serif);flex-basis:33%}div.quarto-post .listing-categories{display:flex;flex-wrap:wrap;padding-bottom:5px}div.quarto-post .listing-categories .listing-category{color:#6c757d;border:solid 1px #dee2e6;border-radius:.25rem;text-transform:uppercase;font-size:.65em;padding-left:.5em;padding-right:.5em;padding-top:.15em;padding-bottom:.15em;cursor:pointer;margin-right:4px;margin-bottom:4px}div.quarto-post .listing-description{margin-bottom:.5em}div.quarto-about-jolla{display:flex !important;flex-direction:column;align-items:center;margin-top:10%;padding-bottom:1em}div.quarto-about-jolla .about-image{object-fit:cover;margin-left:auto;margin-right:auto;margin-bottom:1.5em}div.quarto-about-jolla img.round{border-radius:50%}div.quarto-about-jolla img.rounded{border-radius:10px}div.quarto-about-jolla .quarto-title h1.title,div.quarto-about-jolla .quarto-title .title.h1{text-align:center}div.quarto-about-jolla .quarto-title .description{text-align:center}div.quarto-about-jolla h2,div.quarto-about-jolla .h2{border-bottom:none}div.quarto-about-jolla .about-sep{width:60%}div.quarto-about-jolla main{text-align:center}div.quarto-about-jolla .about-links{display:flex}@media(min-width: 992px){div.quarto-about-jolla .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-jolla .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-jolla .about-link{color:#4e5862;text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-jolla .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-jolla .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-jolla .about-link:hover{color:#18bc9c}div.quarto-about-jolla .about-link i.bi{margin-right:.15em}div.quarto-about-solana{display:flex !important;flex-direction:column;padding-top:3em !important;padding-bottom:1em}div.quarto-about-solana .about-entity{display:flex !important;align-items:start;justify-content:space-between}@media(min-width: 992px){div.quarto-about-solana .about-entity{flex-direction:row}}@media(max-width: 991.98px){div.quarto-about-solana .about-entity{flex-direction:column-reverse;align-items:center;text-align:center}}div.quarto-about-solana .about-entity .entity-contents{display:flex;flex-direction:column}@media(max-width: 767.98px){div.quarto-about-solana .about-entity .entity-contents{width:100%}}div.quarto-about-solana .about-entity .about-image{object-fit:cover}@media(max-width: 991.98px){div.quarto-about-solana .about-entity .about-image{margin-bottom:1.5em}}div.quarto-about-solana .about-entity img.round{border-radius:50%}div.quarto-about-solana .about-entity img.rounded{border-radius:10px}div.quarto-about-solana .about-entity .about-links{display:flex;justify-content:left;padding-bottom:1.2em}@media(min-width: 992px){div.quarto-about-solana .about-entity .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-solana .about-entity .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-solana .about-entity .about-link{color:#4e5862;text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-solana .about-entity .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-solana .about-entity .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-solana .about-entity .about-link:hover{color:#18bc9c}div.quarto-about-solana .about-entity .about-link i.bi{margin-right:.15em}div.quarto-about-solana .about-contents{padding-right:1.5em;flex-basis:0;flex-grow:1}div.quarto-about-solana .about-contents main.content{margin-top:0}div.quarto-about-solana .about-contents h2,div.quarto-about-solana .about-contents .h2{border-bottom:none}div.quarto-about-trestles{display:flex !important;flex-direction:row;padding-top:3em !important;padding-bottom:1em}@media(max-width: 991.98px){div.quarto-about-trestles{flex-direction:column;padding-top:0em !important}}div.quarto-about-trestles .about-entity{display:flex !important;flex-direction:column;align-items:center;text-align:center;padding-right:1em}@media(min-width: 992px){div.quarto-about-trestles .about-entity{flex:0 0 42%}}div.quarto-about-trestles .about-entity .about-image{object-fit:cover;margin-bottom:1.5em}div.quarto-about-trestles .about-entity img.round{border-radius:50%}div.quarto-about-trestles .about-entity img.rounded{border-radius:10px}div.quarto-about-trestles .about-entity .about-links{display:flex;justify-content:center}@media(min-width: 992px){div.quarto-about-trestles .about-entity .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-trestles .about-entity .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-trestles .about-entity .about-link{color:#4e5862;text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-trestles .about-entity .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-trestles .about-entity .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-trestles .about-entity .about-link:hover{color:#18bc9c}div.quarto-about-trestles .about-entity .about-link i.bi{margin-right:.15em}div.quarto-about-trestles .about-contents{flex-basis:0;flex-grow:1}div.quarto-about-trestles .about-contents h2,div.quarto-about-trestles .about-contents .h2{border-bottom:none}@media(min-width: 992px){div.quarto-about-trestles .about-contents{border-left:solid 1px #dee2e6;padding-left:1.5em}}div.quarto-about-trestles .about-contents main.content{margin-top:0}div.quarto-about-marquee{padding-bottom:1em}div.quarto-about-marquee .about-contents{display:flex;flex-direction:column}div.quarto-about-marquee .about-image{max-height:550px;margin-bottom:1.5em;object-fit:cover}div.quarto-about-marquee img.round{border-radius:50%}div.quarto-about-marquee img.rounded{border-radius:10px}div.quarto-about-marquee h2,div.quarto-about-marquee .h2{border-bottom:none}div.quarto-about-marquee .about-links{display:flex;justify-content:center;padding-top:1.5em}@media(min-width: 992px){div.quarto-about-marquee .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-marquee .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-marquee .about-link{color:#4e5862;text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-marquee .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-marquee .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-marquee .about-link:hover{color:#18bc9c}div.quarto-about-marquee .about-link i.bi{margin-right:.15em}@media(min-width: 992px){div.quarto-about-marquee .about-link{border:none}}div.quarto-about-broadside{display:flex;flex-direction:column;padding-bottom:1em}div.quarto-about-broadside .about-main{display:flex !important;padding-top:0 !important}@media(min-width: 992px){div.quarto-about-broadside .about-main{flex-direction:row;align-items:flex-start}}@media(max-width: 991.98px){div.quarto-about-broadside .about-main{flex-direction:column}}@media(max-width: 991.98px){div.quarto-about-broadside .about-main .about-entity{flex-shrink:0;width:100%;height:450px;margin-bottom:1.5em;background-size:cover;background-repeat:no-repeat}}@media(min-width: 992px){div.quarto-about-broadside .about-main .about-entity{flex:0 10 50%;margin-right:1.5em;width:100%;height:100%;background-size:100%;background-repeat:no-repeat}}div.quarto-about-broadside .about-main .about-contents{padding-top:14px;flex:0 0 50%}div.quarto-about-broadside h2,div.quarto-about-broadside .h2{border-bottom:none}div.quarto-about-broadside .about-sep{margin-top:1.5em;width:60%;align-self:center}div.quarto-about-broadside .about-links{display:flex;justify-content:center;column-gap:20px;padding-top:1.5em}@media(min-width: 992px){div.quarto-about-broadside .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-broadside .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-broadside .about-link{color:#4e5862;text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-broadside .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-broadside .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-broadside .about-link:hover{color:#18bc9c}div.quarto-about-broadside .about-link i.bi{margin-right:.15em}@media(min-width: 992px){div.quarto-about-broadside .about-link{border:none}}.tippy-box[data-theme~=quarto]{background-color:#fff;border:solid 1px #dee2e6;border-radius:.25rem;color:#212529;font-size:.875rem}.tippy-box[data-theme~=quarto]>.tippy-backdrop{background-color:#fff}.tippy-box[data-theme~=quarto]>.tippy-arrow:after,.tippy-box[data-theme~=quarto]>.tippy-svg-arrow:after{content:"";position:absolute;z-index:-1}.tippy-box[data-theme~=quarto]>.tippy-arrow:after{border-color:rgba(0,0,0,0);border-style:solid}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-6px}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-6px}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-6px}.tippy-box[data-placement^=left]>.tippy-arrow:before{right:-6px}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-arrow:before{border-top-color:#fff}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-arrow:after{border-top-color:#dee2e6;border-width:7px 7px 0;top:17px;left:1px}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-svg-arrow>svg{top:16px}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-svg-arrow:after{top:17px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-arrow:before{border-bottom-color:#fff;bottom:16px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-arrow:after{border-bottom-color:#dee2e6;border-width:0 7px 7px;bottom:17px;left:1px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-svg-arrow>svg{bottom:15px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-svg-arrow:after{bottom:17px}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-arrow:before{border-left-color:#fff}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-arrow:after{border-left-color:#dee2e6;border-width:7px 0 7px 7px;left:17px;top:1px}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-svg-arrow>svg{left:11px}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-svg-arrow:after{left:12px}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-arrow:before{border-right-color:#fff;right:16px}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-arrow:after{border-width:7px 7px 7px 0;right:17px;top:1px;border-right-color:#dee2e6}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-svg-arrow>svg{right:11px}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-svg-arrow:after{right:12px}.tippy-box[data-theme~=quarto]>.tippy-svg-arrow{fill:#212529}.tippy-box[data-theme~=quarto]>.tippy-svg-arrow:after{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMCA2czEuNzk2LS4wMTMgNC42Ny0zLjYxNUM1Ljg1MS45IDYuOTMuMDA2IDggMGMxLjA3LS4wMDYgMi4xNDguODg3IDMuMzQzIDIuMzg1QzE0LjIzMyA2LjAwNSAxNiA2IDE2IDZIMHoiIGZpbGw9InJnYmEoMCwgOCwgMTYsIDAuMikiLz48L3N2Zz4=);background-size:16px 6px;width:16px;height:6px}.top-right{position:absolute;top:1em;right:1em}.hidden{display:none !important}.zindex-bottom{z-index:-1 !important}.quarto-layout-panel{margin-bottom:1em}.quarto-layout-panel>figure{width:100%}.quarto-layout-panel>figure>figcaption,.quarto-layout-panel>.panel-caption{margin-top:10pt}.quarto-layout-panel>.table-caption{margin-top:0px}.table-caption p{margin-bottom:.5em}.quarto-layout-row{display:flex;flex-direction:row;align-items:flex-start}.quarto-layout-valign-top{align-items:flex-start}.quarto-layout-valign-bottom{align-items:flex-end}.quarto-layout-valign-center{align-items:center}.quarto-layout-cell{position:relative;margin-right:20px}.quarto-layout-cell:last-child{margin-right:0}.quarto-layout-cell figure,.quarto-layout-cell>p{margin:.2em}.quarto-layout-cell img{max-width:100%}.quarto-layout-cell .html-widget{width:100% !important}.quarto-layout-cell div figure p{margin:0}.quarto-layout-cell figure{display:inline-block;margin-inline-start:0;margin-inline-end:0}.quarto-layout-cell table{display:inline-table}.quarto-layout-cell-subref figcaption,figure .quarto-layout-row figure figcaption{text-align:center;font-style:italic}.quarto-figure{position:relative;margin-bottom:1em}.quarto-figure>figure{width:100%;margin-bottom:0}.quarto-figure-left>figure>p,.quarto-figure-left>figure>div{text-align:left}.quarto-figure-center>figure>p,.quarto-figure-center>figure>div{text-align:center}.quarto-figure-right>figure>p,.quarto-figure-right>figure>div{text-align:right}figure>p:empty{display:none}figure>p:first-child{margin-top:0;margin-bottom:0}figure>figcaption{margin-top:.5em}div[id^=tbl-]{position:relative}.quarto-figure>.anchorjs-link{position:absolute;top:.6em;right:.5em}div[id^=tbl-]>.anchorjs-link{position:absolute;top:.7em;right:.3em}.quarto-figure:hover>.anchorjs-link,div[id^=tbl-]:hover>.anchorjs-link,h2:hover>.anchorjs-link,.h2:hover>.anchorjs-link,h3:hover>.anchorjs-link,.h3:hover>.anchorjs-link,h4:hover>.anchorjs-link,.h4:hover>.anchorjs-link,h5:hover>.anchorjs-link,.h5:hover>.anchorjs-link,h6:hover>.anchorjs-link,.h6:hover>.anchorjs-link,.reveal-anchorjs-link>.anchorjs-link{opacity:1}#title-block-header{margin-block-end:1rem;position:relative;margin-top:-1px}#title-block-header .abstract{margin-block-start:1rem}#title-block-header .abstract .abstract-title{font-weight:600}#title-block-header a{text-decoration:none}#title-block-header .author,#title-block-header .date,#title-block-header .doi{margin-block-end:.2rem}#title-block-header .quarto-title-block>div{display:flex}#title-block-header .quarto-title-block>div>h1,#title-block-header .quarto-title-block>div>.h1{flex-grow:1}#title-block-header .quarto-title-block>div>button{flex-shrink:0;height:2.25rem;margin-top:0}@media(min-width: 992px){#title-block-header .quarto-title-block>div>button{margin-top:5px}}tr.header>th>p:last-of-type{margin-bottom:0px}table,.table{caption-side:top;margin-bottom:1.5rem}caption,.table-caption{padding-top:.5rem;padding-bottom:.5rem;text-align:center}.utterances{max-width:none;margin-left:-8px}iframe{margin-bottom:1em}details{margin-bottom:1em}details[show]{margin-bottom:0}details>summary{color:#6c757d}details>summary>p:only-child{display:inline}pre.sourceCode,code.sourceCode{position:relative}p code:not(.sourceCode){white-space:pre-wrap}code{white-space:pre}@media print{code{white-space:pre-wrap}}pre>code{display:block}pre>code.sourceCode{white-space:pre-wrap}pre>code.sourceCode>span>a:first-child::before{text-decoration:none}pre.code-overflow-wrap>code.sourceCode{white-space:pre-wrap}pre.code-overflow-scroll>code.sourceCode{white-space:pre}code a:any-link{color:inherit;text-decoration:none}code a:hover{color:inherit;text-decoration:underline}ul.task-list{padding-left:1em}[data-tippy-root]{display:inline-block}.tippy-content .footnote-back{display:none}.quarto-embedded-source-code{display:none}.quarto-unresolved-ref{font-weight:600}.quarto-cover-image{max-width:35%;float:right;margin-left:30px}.cell-output-display .widget-subarea{margin-bottom:1em}.cell-output-display:not(.no-overflow-x),.knitsql-table:not(.no-overflow-x){overflow-x:auto}.panel-input{margin-bottom:1em}.panel-input>div,.panel-input>div>div{display:inline-block;vertical-align:top;padding-right:12px}.panel-input>p:last-child{margin-bottom:0}.layout-sidebar{margin-bottom:1em}.layout-sidebar .tab-content{border:none}.tab-content>.page-columns.active{display:grid}div.sourceCode>iframe{width:100%;height:300px;margin-bottom:-0.5em}div.ansi-escaped-output{font-family:monospace;display:block}/*! +* +* ansi colors from IPython notebook's +* +*/.ansi-black-fg{color:#3e424d}.ansi-black-bg{background-color:#3e424d}.ansi-black-intense-fg{color:#282c36}.ansi-black-intense-bg{background-color:#282c36}.ansi-red-fg{color:#e75c58}.ansi-red-bg{background-color:#e75c58}.ansi-red-intense-fg{color:#b22b31}.ansi-red-intense-bg{background-color:#b22b31}.ansi-green-fg{color:#00a250}.ansi-green-bg{background-color:#00a250}.ansi-green-intense-fg{color:#007427}.ansi-green-intense-bg{background-color:#007427}.ansi-yellow-fg{color:#ddb62b}.ansi-yellow-bg{background-color:#ddb62b}.ansi-yellow-intense-fg{color:#b27d12}.ansi-yellow-intense-bg{background-color:#b27d12}.ansi-blue-fg{color:#208ffb}.ansi-blue-bg{background-color:#208ffb}.ansi-blue-intense-fg{color:#0065ca}.ansi-blue-intense-bg{background-color:#0065ca}.ansi-magenta-fg{color:#d160c4}.ansi-magenta-bg{background-color:#d160c4}.ansi-magenta-intense-fg{color:#a03196}.ansi-magenta-intense-bg{background-color:#a03196}.ansi-cyan-fg{color:#60c6c8}.ansi-cyan-bg{background-color:#60c6c8}.ansi-cyan-intense-fg{color:#258f8f}.ansi-cyan-intense-bg{background-color:#258f8f}.ansi-white-fg{color:#c5c1b4}.ansi-white-bg{background-color:#c5c1b4}.ansi-white-intense-fg{color:#a1a6b2}.ansi-white-intense-bg{background-color:#a1a6b2}.ansi-default-inverse-fg{color:#fff}.ansi-default-inverse-bg{background-color:#000}.ansi-bold{font-weight:bold}.ansi-underline{text-decoration:underline}:root{--quarto-body-bg: #fff;--quarto-body-color: #212529;--quarto-text-muted: #6c757d;--quarto-border-color: #dee2e6;--quarto-border-width: 1px;--quarto-border-radius: 0.25rem}table.gt_table{color:var(--quarto-body-color);font-size:1em;width:100%;background-color:rgba(0,0,0,0);border-top-width:inherit;border-bottom-width:inherit;border-color:var(--quarto-border-color)}table.gt_table th.gt_column_spanner_outer{color:var(--quarto-body-color);background-color:rgba(0,0,0,0);border-top-width:inherit;border-bottom-width:inherit;border-color:var(--quarto-border-color)}table.gt_table th.gt_col_heading{color:var(--quarto-body-color);font-weight:bold;background-color:rgba(0,0,0,0)}table.gt_table thead.gt_col_headings{border-bottom:1px solid currentColor;border-top-width:inherit;border-top-color:var(--quarto-border-color)}table.gt_table thead.gt_col_headings:not(:first-child){border-top-width:1px;border-top-color:var(--quarto-border-color)}table.gt_table td.gt_row{border-bottom-width:1px;border-bottom-color:var(--quarto-border-color);border-top-width:0px}table.gt_table tbody.gt_table_body{border-top-width:1px;border-bottom-width:1px;border-bottom-color:var(--quarto-border-color);border-top-color:currentColor}div.columns{display:initial;gap:initial}div.column{display:inline-block;overflow-x:initial;vertical-align:top;width:50%}.code-annotation-tip-content{word-wrap:break-word}.code-annotation-container-hidden{display:none !important}dl.code-annotation-container-grid{display:grid;grid-template-columns:min-content auto}dl.code-annotation-container-grid dt{grid-column:1}dl.code-annotation-container-grid dd{grid-column:2}pre.sourceCode.code-annotation-code{padding-right:0}code.sourceCode .code-annotation-anchor{z-index:100;position:absolute;right:.5em;left:inherit;background-color:rgba(0,0,0,0)}:root{--mermaid-bg-color: #fff;--mermaid-edge-color: #6c757d;--mermaid-node-fg-color: #212529;--mermaid-fg-color: #212529;--mermaid-fg-color--lighter: #383f45;--mermaid-fg-color--lightest: #4e5862;--mermaid-font-family: Lato, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;--mermaid-label-bg-color: #fff;--mermaid-label-fg-color: #2c3e50;--mermaid-node-bg-color: rgba(44, 62, 80, 0.1);--mermaid-node-fg-color: #212529}@media print{:root{font-size:11pt}#quarto-sidebar,#TOC,.nav-page{display:none}.page-columns .content{grid-column-start:page-start}.fixed-top{position:relative}.panel-caption,.figure-caption,figcaption{color:#666}}.code-copy-button{position:absolute;top:0;right:0;border:0;margin-top:5px;margin-right:5px;background-color:rgba(0,0,0,0);z-index:3}.code-copy-button:focus{outline:none}.code-copy-button-tooltip{font-size:.75em}.code-copy-button>.bi::before{display:inline-block;height:1rem;width:1rem;content:"";vertical-align:-0.125em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-size:1rem 1rem}.code-copy-button-checked>.bi::before{background-image:url('data:image/svg+xml,')}.code-copy-button:hover>.bi::before{background-image:url('data:image/svg+xml,')}.code-copy-button-checked:hover>.bi::before{background-image:url('data:image/svg+xml,')}main ol ol,main ul ul,main ol ul,main ul ol{margin-bottom:1em}ul>li:not(:has(>p))>ul,ol>li:not(:has(>p))>ul,ul>li:not(:has(>p))>ol,ol>li:not(:has(>p))>ol{margin-bottom:0}ul>li:not(:has(>p))>ul>li:has(>p),ol>li:not(:has(>p))>ul>li:has(>p),ul>li:not(:has(>p))>ol>li:has(>p),ol>li:not(:has(>p))>ol>li:has(>p){margin-top:1rem}body{margin:0}main.page-columns>header>h1.title,main.page-columns>header>.title.h1{margin-bottom:0}@media(min-width: 992px){body .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset] 2.8vw [body-start-outset] 2.8vw [body-start] 1.5em [body-content-start] minmax(500px, calc( 950px - 3em )) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.fullcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset] 2.8vw [body-start-outset] 2.8vw [body-start] 1.5em [body-content-start] minmax(500px, calc( 950px - 3em )) [body-content-end] 1.5em [body-end] 35px [body-end-outset] 35px [page-end-inset page-end] 5fr [screen-end-inset] 1.5em}body.slimcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset] 2.8vw [body-start-outset] 2.8vw [body-start] 1.5em [body-content-start] minmax(500px, calc( 950px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 2.8vw [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.listing:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(4vw, 8vw) [page-start-inset] 4vw [body-start-outset] 4vw [body-start] 1.5em [body-content-start] minmax(500px, calc( 950px - 3em )) [body-content-end] 3em [body-end] 4vw [body-end-outset] minmax(0px, 250px) [page-end-inset] minmax(4vw, 8vw) [page-end] 1fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 2.8vw [page-start-inset] minmax(0vw, 14vw) [body-start-outset] 2.8vw [body-start] 1.5em [body-content-start] minmax(450px, calc( 900px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 2.8vw [page-start-inset] minmax(0vw, 14vw) [body-start-outset] 2.8vw [body-start] 1.5em [body-content-start] minmax(450px, calc( 900px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] minmax(2vw, 4vw) [page-start-inset] minmax(4vw, 12vw) [body-start-outset] minmax(2vw, 4vw) [body-start] 1.5em [body-content-start] minmax(500px, calc( 900px - 3em )) [body-content-end] 1.5em [body-end] minmax(25px, 50px) [body-end-outset] minmax(50px, 150px) [page-end-inset] minmax(25px, 50px) [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(4vw, 8vw) [page-start-inset] 4vw [body-start-outset] 4vw [body-start] 1.5em [body-content-start] minmax(500px, calc( 1100px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(50px, 100px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(4vw, 8vw) [page-start-inset] 4vw [body-start-outset] 4vw [body-start] 1.5em [body-content-start] minmax(500px, calc( 1100px - 3em )) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 4vw [page-start-inset] minmax(4vw, 12vw) [body-start-outset] 4vw [body-start] 1.5em [body-content-start] minmax(500px, calc( 900px - 3em )) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(4vw, 8vw) [page-start-inset] 4vw [body-start-outset] 4vw [body-start] 1.5em [body-content-start] minmax(450px, calc( 850px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(4vw, 8vw) [page-start-inset] 4vw [body-start-outset] 4vw [body-start] 1.5em [body-content-start] minmax(500px, calc( 1100px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 4vw [page-start-inset] minmax(4vw, 12vw) [body-start-outset] 4vw [body-start] 1.5em [body-content-start] minmax(450px, calc( 850px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(50px, 150px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] minmax(2vw, 4vw) [page-start-inset] minmax(4vw, 12vw) [body-start-outset] minmax(2vw, 4vw) [body-start] 1.5em [body-content-start] minmax(500px, calc( 900px - 3em )) [body-content-end] 1.5em [body-end] minmax(25px, 50px) [body-end-outset] minmax(50px, 150px) [page-end-inset] minmax(25px, 50px) [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}}@media(max-width: 991.98px){body .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc( 900px - 3em )) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.fullcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc( 900px - 3em )) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.slimcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc( 900px - 3em )) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.listing:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc( 1350px - 3em )) [body-content-end body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 2.8vw [page-start-inset] minmax(0vw, 11.6vw) [body-start-outset] 2.8vw [body-start] 1.5em [body-content-start] minmax(450px, calc( 900px - 3em )) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 2.8vw [page-start-inset] minmax(0vw, 11.6vw) [body-start-outset] 2.8vw [body-start] 1.5em [body-content-start] minmax(450px, calc( 900px - 3em )) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1.5em [body-content-start] minmax(500px, calc( 850px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(75px, 150px) [page-end-inset] 25px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc( 850px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(25px, 50px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc( 1100px - 3em )) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1em [body-content-start] minmax(500px, calc( 900px - 3em )) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 4fr [screen-end-inset] 1.5em [screen-end]}body.docked.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc( 850px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(25px, 50px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc( 850px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(25px, 50px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1em [body-content-start] minmax(500px, calc( 850px - 3em )) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 4fr [screen-end-inset] 1.5em [screen-end]}body.floating.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1em [body-content-start] minmax(500px, calc( 850px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(75px, 150px) [page-end-inset] 25px [page-end] 4fr [screen-end-inset] 1.5em [screen-end]}}@media(max-width: 767.98px){body .page-columns,body.fullcontent:not(.floating):not(.docked) .page-columns,body.slimcontent:not(.floating):not(.docked) .page-columns,body.docked .page-columns,body.docked.slimcontent .page-columns,body.docked.fullcontent .page-columns,body.floating .page-columns,body.floating.slimcontent .page-columns,body.floating.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(0px, 1fr) [body-content-end body-end body-end-outset page-end-inset page-end screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(0px, 1fr) [body-content-end body-end body-end-outset page-end-inset page-end screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(0px, 1fr) [body-content-end body-end body-end-outset page-end-inset page-end screen-end-inset] 1.5em [screen-end]}nav[role=doc-toc]{display:none}}body,.page-row-navigation{grid-template-rows:[page-top] max-content [contents-top] max-content [contents-bottom] max-content [page-bottom]}.page-rows-contents{grid-template-rows:[content-top] minmax(max-content, 1fr) [content-bottom] minmax(60px, max-content) [page-bottom]}.page-full{grid-column:screen-start/screen-end !important}.page-columns>*{grid-column:body-content-start/body-content-end}.page-columns.column-page>*{grid-column:page-start/page-end}.page-columns.column-page-left>*{grid-column:page-start/body-content-end}.page-columns.column-page-right>*{grid-column:body-content-start/page-end}.page-rows{grid-auto-rows:auto}.header{grid-column:screen-start/screen-end;grid-row:page-top/contents-top}#quarto-content{padding:0;grid-column:screen-start/screen-end;grid-row:contents-top/contents-bottom}body.floating .sidebar.sidebar-navigation{grid-column:page-start/body-start;grid-row:content-top/page-bottom}body.docked .sidebar.sidebar-navigation{grid-column:screen-start/body-start;grid-row:content-top/page-bottom}.sidebar.toc-left{grid-column:page-start/body-start;grid-row:content-top/page-bottom}.sidebar.margin-sidebar{grid-column:body-end/page-end;grid-row:content-top/page-bottom}.page-columns .content{grid-column:body-content-start/body-content-end;grid-row:content-top/content-bottom;align-content:flex-start}.page-columns .page-navigation{grid-column:body-content-start/body-content-end;grid-row:content-bottom/page-bottom}.page-columns .footer{grid-column:screen-start/screen-end;grid-row:contents-bottom/page-bottom}.page-columns .column-body{grid-column:body-content-start/body-content-end}.page-columns .column-body-fullbleed{grid-column:body-start/body-end}.page-columns .column-body-outset{grid-column:body-start-outset/body-end-outset;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-body-outset table{background:#fff}.page-columns .column-body-outset-left{grid-column:body-start-outset/body-content-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-body-outset-left table{background:#fff}.page-columns .column-body-outset-right{grid-column:body-content-start/body-end-outset;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-body-outset-right table{background:#fff}.page-columns .column-page{grid-column:page-start/page-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-page table{background:#fff}.page-columns .column-page-inset{grid-column:page-start-inset/page-end-inset;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-page-inset table{background:#fff}.page-columns .column-page-inset-left{grid-column:page-start-inset/body-content-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-page-inset-left table{background:#fff}.page-columns .column-page-inset-right{grid-column:body-content-start/page-end-inset;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-page-inset-right figcaption table{background:#fff}.page-columns .column-page-left{grid-column:page-start/body-content-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-page-left table{background:#fff}.page-columns .column-page-right{grid-column:body-content-start/page-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-page-right figcaption table{background:#fff}#quarto-content.page-columns #quarto-margin-sidebar,#quarto-content.page-columns #quarto-sidebar{z-index:1}@media(max-width: 991.98px){#quarto-content.page-columns #quarto-margin-sidebar.collapse,#quarto-content.page-columns #quarto-sidebar.collapse,#quarto-content.page-columns #quarto-margin-sidebar.collapsing,#quarto-content.page-columns #quarto-sidebar.collapsing{z-index:1055}}#quarto-content.page-columns main.column-page,#quarto-content.page-columns main.column-page-right,#quarto-content.page-columns main.column-page-left{z-index:0}.page-columns .column-screen-inset{grid-column:screen-start-inset/screen-end-inset;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-inset table{background:#fff}.page-columns .column-screen-inset-left{grid-column:screen-start-inset/body-content-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-inset-left table{background:#fff}.page-columns .column-screen-inset-right{grid-column:body-content-start/screen-end-inset;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-inset-right table{background:#fff}.page-columns .column-screen{grid-column:screen-start/screen-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen table{background:#fff}.page-columns .column-screen-left{grid-column:screen-start/body-content-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-left table{background:#fff}.page-columns .column-screen-right{grid-column:body-content-start/screen-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-right table{background:#fff}.page-columns .column-screen-inset-shaded{grid-column:screen-start/screen-end;padding:1em;background:#ecf0f1;z-index:998;transform:translate3d(0, 0, 0);margin-bottom:1em}.zindex-content{z-index:998;transform:translate3d(0, 0, 0)}.zindex-modal{z-index:1055;transform:translate3d(0, 0, 0)}.zindex-over-content{z-index:999;transform:translate3d(0, 0, 0)}img.img-fluid.column-screen,img.img-fluid.column-screen-inset-shaded,img.img-fluid.column-screen-inset,img.img-fluid.column-screen-inset-left,img.img-fluid.column-screen-inset-right,img.img-fluid.column-screen-left,img.img-fluid.column-screen-right{width:100%}@media(min-width: 992px){.margin-caption,div.aside,aside,.column-margin{grid-column:body-end/page-end !important;z-index:998}.column-sidebar{grid-column:page-start/body-start !important;z-index:998}.column-leftmargin{grid-column:screen-start-inset/body-start !important;z-index:998}.no-row-height{height:1em;overflow:visible}}@media(max-width: 991.98px){.margin-caption,div.aside,aside,.column-margin{grid-column:body-end/page-end !important;z-index:998}.no-row-height{height:1em;overflow:visible}.page-columns.page-full{overflow:visible}.page-columns.toc-left .margin-caption,.page-columns.toc-left div.aside,.page-columns.toc-left aside,.page-columns.toc-left .column-margin{grid-column:body-content-start/body-content-end !important;z-index:998;transform:translate3d(0, 0, 0)}.page-columns.toc-left .no-row-height{height:initial;overflow:initial}}@media(max-width: 767.98px){.margin-caption,div.aside,aside,.column-margin{grid-column:body-content-start/body-content-end !important;z-index:998;transform:translate3d(0, 0, 0)}.no-row-height{height:initial;overflow:initial}#quarto-margin-sidebar{display:none}#quarto-sidebar-toc-left{display:none}.hidden-sm{display:none}}.panel-grid{display:grid;grid-template-rows:repeat(1, 1fr);grid-template-columns:repeat(24, 1fr);gap:1em}.panel-grid .g-col-1{grid-column:auto/span 1}.panel-grid .g-col-2{grid-column:auto/span 2}.panel-grid .g-col-3{grid-column:auto/span 3}.panel-grid .g-col-4{grid-column:auto/span 4}.panel-grid .g-col-5{grid-column:auto/span 5}.panel-grid .g-col-6{grid-column:auto/span 6}.panel-grid .g-col-7{grid-column:auto/span 7}.panel-grid .g-col-8{grid-column:auto/span 8}.panel-grid .g-col-9{grid-column:auto/span 9}.panel-grid .g-col-10{grid-column:auto/span 10}.panel-grid .g-col-11{grid-column:auto/span 11}.panel-grid .g-col-12{grid-column:auto/span 12}.panel-grid .g-col-13{grid-column:auto/span 13}.panel-grid .g-col-14{grid-column:auto/span 14}.panel-grid .g-col-15{grid-column:auto/span 15}.panel-grid .g-col-16{grid-column:auto/span 16}.panel-grid .g-col-17{grid-column:auto/span 17}.panel-grid .g-col-18{grid-column:auto/span 18}.panel-grid .g-col-19{grid-column:auto/span 19}.panel-grid .g-col-20{grid-column:auto/span 20}.panel-grid .g-col-21{grid-column:auto/span 21}.panel-grid .g-col-22{grid-column:auto/span 22}.panel-grid .g-col-23{grid-column:auto/span 23}.panel-grid .g-col-24{grid-column:auto/span 24}.panel-grid .g-start-1{grid-column-start:1}.panel-grid .g-start-2{grid-column-start:2}.panel-grid .g-start-3{grid-column-start:3}.panel-grid .g-start-4{grid-column-start:4}.panel-grid .g-start-5{grid-column-start:5}.panel-grid .g-start-6{grid-column-start:6}.panel-grid .g-start-7{grid-column-start:7}.panel-grid .g-start-8{grid-column-start:8}.panel-grid .g-start-9{grid-column-start:9}.panel-grid .g-start-10{grid-column-start:10}.panel-grid .g-start-11{grid-column-start:11}.panel-grid .g-start-12{grid-column-start:12}.panel-grid .g-start-13{grid-column-start:13}.panel-grid .g-start-14{grid-column-start:14}.panel-grid .g-start-15{grid-column-start:15}.panel-grid .g-start-16{grid-column-start:16}.panel-grid .g-start-17{grid-column-start:17}.panel-grid .g-start-18{grid-column-start:18}.panel-grid .g-start-19{grid-column-start:19}.panel-grid .g-start-20{grid-column-start:20}.panel-grid .g-start-21{grid-column-start:21}.panel-grid .g-start-22{grid-column-start:22}.panel-grid .g-start-23{grid-column-start:23}@media(min-width: 576px){.panel-grid .g-col-sm-1{grid-column:auto/span 1}.panel-grid .g-col-sm-2{grid-column:auto/span 2}.panel-grid .g-col-sm-3{grid-column:auto/span 3}.panel-grid .g-col-sm-4{grid-column:auto/span 4}.panel-grid .g-col-sm-5{grid-column:auto/span 5}.panel-grid .g-col-sm-6{grid-column:auto/span 6}.panel-grid .g-col-sm-7{grid-column:auto/span 7}.panel-grid .g-col-sm-8{grid-column:auto/span 8}.panel-grid .g-col-sm-9{grid-column:auto/span 9}.panel-grid .g-col-sm-10{grid-column:auto/span 10}.panel-grid .g-col-sm-11{grid-column:auto/span 11}.panel-grid .g-col-sm-12{grid-column:auto/span 12}.panel-grid .g-col-sm-13{grid-column:auto/span 13}.panel-grid .g-col-sm-14{grid-column:auto/span 14}.panel-grid .g-col-sm-15{grid-column:auto/span 15}.panel-grid .g-col-sm-16{grid-column:auto/span 16}.panel-grid .g-col-sm-17{grid-column:auto/span 17}.panel-grid .g-col-sm-18{grid-column:auto/span 18}.panel-grid .g-col-sm-19{grid-column:auto/span 19}.panel-grid .g-col-sm-20{grid-column:auto/span 20}.panel-grid .g-col-sm-21{grid-column:auto/span 21}.panel-grid .g-col-sm-22{grid-column:auto/span 22}.panel-grid .g-col-sm-23{grid-column:auto/span 23}.panel-grid .g-col-sm-24{grid-column:auto/span 24}.panel-grid .g-start-sm-1{grid-column-start:1}.panel-grid .g-start-sm-2{grid-column-start:2}.panel-grid .g-start-sm-3{grid-column-start:3}.panel-grid .g-start-sm-4{grid-column-start:4}.panel-grid .g-start-sm-5{grid-column-start:5}.panel-grid .g-start-sm-6{grid-column-start:6}.panel-grid .g-start-sm-7{grid-column-start:7}.panel-grid .g-start-sm-8{grid-column-start:8}.panel-grid .g-start-sm-9{grid-column-start:9}.panel-grid .g-start-sm-10{grid-column-start:10}.panel-grid .g-start-sm-11{grid-column-start:11}.panel-grid .g-start-sm-12{grid-column-start:12}.panel-grid .g-start-sm-13{grid-column-start:13}.panel-grid .g-start-sm-14{grid-column-start:14}.panel-grid .g-start-sm-15{grid-column-start:15}.panel-grid .g-start-sm-16{grid-column-start:16}.panel-grid .g-start-sm-17{grid-column-start:17}.panel-grid .g-start-sm-18{grid-column-start:18}.panel-grid .g-start-sm-19{grid-column-start:19}.panel-grid .g-start-sm-20{grid-column-start:20}.panel-grid .g-start-sm-21{grid-column-start:21}.panel-grid .g-start-sm-22{grid-column-start:22}.panel-grid .g-start-sm-23{grid-column-start:23}}@media(min-width: 768px){.panel-grid .g-col-md-1{grid-column:auto/span 1}.panel-grid .g-col-md-2{grid-column:auto/span 2}.panel-grid .g-col-md-3{grid-column:auto/span 3}.panel-grid .g-col-md-4{grid-column:auto/span 4}.panel-grid .g-col-md-5{grid-column:auto/span 5}.panel-grid .g-col-md-6{grid-column:auto/span 6}.panel-grid .g-col-md-7{grid-column:auto/span 7}.panel-grid .g-col-md-8{grid-column:auto/span 8}.panel-grid .g-col-md-9{grid-column:auto/span 9}.panel-grid .g-col-md-10{grid-column:auto/span 10}.panel-grid .g-col-md-11{grid-column:auto/span 11}.panel-grid .g-col-md-12{grid-column:auto/span 12}.panel-grid .g-col-md-13{grid-column:auto/span 13}.panel-grid .g-col-md-14{grid-column:auto/span 14}.panel-grid .g-col-md-15{grid-column:auto/span 15}.panel-grid .g-col-md-16{grid-column:auto/span 16}.panel-grid .g-col-md-17{grid-column:auto/span 17}.panel-grid .g-col-md-18{grid-column:auto/span 18}.panel-grid .g-col-md-19{grid-column:auto/span 19}.panel-grid .g-col-md-20{grid-column:auto/span 20}.panel-grid .g-col-md-21{grid-column:auto/span 21}.panel-grid .g-col-md-22{grid-column:auto/span 22}.panel-grid .g-col-md-23{grid-column:auto/span 23}.panel-grid .g-col-md-24{grid-column:auto/span 24}.panel-grid .g-start-md-1{grid-column-start:1}.panel-grid .g-start-md-2{grid-column-start:2}.panel-grid .g-start-md-3{grid-column-start:3}.panel-grid .g-start-md-4{grid-column-start:4}.panel-grid .g-start-md-5{grid-column-start:5}.panel-grid .g-start-md-6{grid-column-start:6}.panel-grid .g-start-md-7{grid-column-start:7}.panel-grid .g-start-md-8{grid-column-start:8}.panel-grid .g-start-md-9{grid-column-start:9}.panel-grid .g-start-md-10{grid-column-start:10}.panel-grid .g-start-md-11{grid-column-start:11}.panel-grid .g-start-md-12{grid-column-start:12}.panel-grid .g-start-md-13{grid-column-start:13}.panel-grid .g-start-md-14{grid-column-start:14}.panel-grid .g-start-md-15{grid-column-start:15}.panel-grid .g-start-md-16{grid-column-start:16}.panel-grid .g-start-md-17{grid-column-start:17}.panel-grid .g-start-md-18{grid-column-start:18}.panel-grid .g-start-md-19{grid-column-start:19}.panel-grid .g-start-md-20{grid-column-start:20}.panel-grid .g-start-md-21{grid-column-start:21}.panel-grid .g-start-md-22{grid-column-start:22}.panel-grid .g-start-md-23{grid-column-start:23}}@media(min-width: 992px){.panel-grid .g-col-lg-1{grid-column:auto/span 1}.panel-grid .g-col-lg-2{grid-column:auto/span 2}.panel-grid .g-col-lg-3{grid-column:auto/span 3}.panel-grid .g-col-lg-4{grid-column:auto/span 4}.panel-grid .g-col-lg-5{grid-column:auto/span 5}.panel-grid .g-col-lg-6{grid-column:auto/span 6}.panel-grid .g-col-lg-7{grid-column:auto/span 7}.panel-grid .g-col-lg-8{grid-column:auto/span 8}.panel-grid .g-col-lg-9{grid-column:auto/span 9}.panel-grid .g-col-lg-10{grid-column:auto/span 10}.panel-grid .g-col-lg-11{grid-column:auto/span 11}.panel-grid .g-col-lg-12{grid-column:auto/span 12}.panel-grid .g-col-lg-13{grid-column:auto/span 13}.panel-grid .g-col-lg-14{grid-column:auto/span 14}.panel-grid .g-col-lg-15{grid-column:auto/span 15}.panel-grid .g-col-lg-16{grid-column:auto/span 16}.panel-grid .g-col-lg-17{grid-column:auto/span 17}.panel-grid .g-col-lg-18{grid-column:auto/span 18}.panel-grid .g-col-lg-19{grid-column:auto/span 19}.panel-grid .g-col-lg-20{grid-column:auto/span 20}.panel-grid .g-col-lg-21{grid-column:auto/span 21}.panel-grid .g-col-lg-22{grid-column:auto/span 22}.panel-grid .g-col-lg-23{grid-column:auto/span 23}.panel-grid .g-col-lg-24{grid-column:auto/span 24}.panel-grid .g-start-lg-1{grid-column-start:1}.panel-grid .g-start-lg-2{grid-column-start:2}.panel-grid .g-start-lg-3{grid-column-start:3}.panel-grid .g-start-lg-4{grid-column-start:4}.panel-grid .g-start-lg-5{grid-column-start:5}.panel-grid .g-start-lg-6{grid-column-start:6}.panel-grid .g-start-lg-7{grid-column-start:7}.panel-grid .g-start-lg-8{grid-column-start:8}.panel-grid .g-start-lg-9{grid-column-start:9}.panel-grid .g-start-lg-10{grid-column-start:10}.panel-grid .g-start-lg-11{grid-column-start:11}.panel-grid .g-start-lg-12{grid-column-start:12}.panel-grid .g-start-lg-13{grid-column-start:13}.panel-grid .g-start-lg-14{grid-column-start:14}.panel-grid .g-start-lg-15{grid-column-start:15}.panel-grid .g-start-lg-16{grid-column-start:16}.panel-grid .g-start-lg-17{grid-column-start:17}.panel-grid .g-start-lg-18{grid-column-start:18}.panel-grid .g-start-lg-19{grid-column-start:19}.panel-grid .g-start-lg-20{grid-column-start:20}.panel-grid .g-start-lg-21{grid-column-start:21}.panel-grid .g-start-lg-22{grid-column-start:22}.panel-grid .g-start-lg-23{grid-column-start:23}}@media(min-width: 1200px){.panel-grid .g-col-xl-1{grid-column:auto/span 1}.panel-grid .g-col-xl-2{grid-column:auto/span 2}.panel-grid .g-col-xl-3{grid-column:auto/span 3}.panel-grid .g-col-xl-4{grid-column:auto/span 4}.panel-grid .g-col-xl-5{grid-column:auto/span 5}.panel-grid .g-col-xl-6{grid-column:auto/span 6}.panel-grid .g-col-xl-7{grid-column:auto/span 7}.panel-grid .g-col-xl-8{grid-column:auto/span 8}.panel-grid .g-col-xl-9{grid-column:auto/span 9}.panel-grid .g-col-xl-10{grid-column:auto/span 10}.panel-grid .g-col-xl-11{grid-column:auto/span 11}.panel-grid .g-col-xl-12{grid-column:auto/span 12}.panel-grid .g-col-xl-13{grid-column:auto/span 13}.panel-grid .g-col-xl-14{grid-column:auto/span 14}.panel-grid .g-col-xl-15{grid-column:auto/span 15}.panel-grid .g-col-xl-16{grid-column:auto/span 16}.panel-grid .g-col-xl-17{grid-column:auto/span 17}.panel-grid .g-col-xl-18{grid-column:auto/span 18}.panel-grid .g-col-xl-19{grid-column:auto/span 19}.panel-grid .g-col-xl-20{grid-column:auto/span 20}.panel-grid .g-col-xl-21{grid-column:auto/span 21}.panel-grid .g-col-xl-22{grid-column:auto/span 22}.panel-grid .g-col-xl-23{grid-column:auto/span 23}.panel-grid .g-col-xl-24{grid-column:auto/span 24}.panel-grid .g-start-xl-1{grid-column-start:1}.panel-grid .g-start-xl-2{grid-column-start:2}.panel-grid .g-start-xl-3{grid-column-start:3}.panel-grid .g-start-xl-4{grid-column-start:4}.panel-grid .g-start-xl-5{grid-column-start:5}.panel-grid .g-start-xl-6{grid-column-start:6}.panel-grid .g-start-xl-7{grid-column-start:7}.panel-grid .g-start-xl-8{grid-column-start:8}.panel-grid .g-start-xl-9{grid-column-start:9}.panel-grid .g-start-xl-10{grid-column-start:10}.panel-grid .g-start-xl-11{grid-column-start:11}.panel-grid .g-start-xl-12{grid-column-start:12}.panel-grid .g-start-xl-13{grid-column-start:13}.panel-grid .g-start-xl-14{grid-column-start:14}.panel-grid .g-start-xl-15{grid-column-start:15}.panel-grid .g-start-xl-16{grid-column-start:16}.panel-grid .g-start-xl-17{grid-column-start:17}.panel-grid .g-start-xl-18{grid-column-start:18}.panel-grid .g-start-xl-19{grid-column-start:19}.panel-grid .g-start-xl-20{grid-column-start:20}.panel-grid .g-start-xl-21{grid-column-start:21}.panel-grid .g-start-xl-22{grid-column-start:22}.panel-grid .g-start-xl-23{grid-column-start:23}}@media(min-width: 1400px){.panel-grid .g-col-xxl-1{grid-column:auto/span 1}.panel-grid .g-col-xxl-2{grid-column:auto/span 2}.panel-grid .g-col-xxl-3{grid-column:auto/span 3}.panel-grid .g-col-xxl-4{grid-column:auto/span 4}.panel-grid .g-col-xxl-5{grid-column:auto/span 5}.panel-grid .g-col-xxl-6{grid-column:auto/span 6}.panel-grid .g-col-xxl-7{grid-column:auto/span 7}.panel-grid .g-col-xxl-8{grid-column:auto/span 8}.panel-grid .g-col-xxl-9{grid-column:auto/span 9}.panel-grid .g-col-xxl-10{grid-column:auto/span 10}.panel-grid .g-col-xxl-11{grid-column:auto/span 11}.panel-grid .g-col-xxl-12{grid-column:auto/span 12}.panel-grid .g-col-xxl-13{grid-column:auto/span 13}.panel-grid .g-col-xxl-14{grid-column:auto/span 14}.panel-grid .g-col-xxl-15{grid-column:auto/span 15}.panel-grid .g-col-xxl-16{grid-column:auto/span 16}.panel-grid .g-col-xxl-17{grid-column:auto/span 17}.panel-grid .g-col-xxl-18{grid-column:auto/span 18}.panel-grid .g-col-xxl-19{grid-column:auto/span 19}.panel-grid .g-col-xxl-20{grid-column:auto/span 20}.panel-grid .g-col-xxl-21{grid-column:auto/span 21}.panel-grid .g-col-xxl-22{grid-column:auto/span 22}.panel-grid .g-col-xxl-23{grid-column:auto/span 23}.panel-grid .g-col-xxl-24{grid-column:auto/span 24}.panel-grid .g-start-xxl-1{grid-column-start:1}.panel-grid .g-start-xxl-2{grid-column-start:2}.panel-grid .g-start-xxl-3{grid-column-start:3}.panel-grid .g-start-xxl-4{grid-column-start:4}.panel-grid .g-start-xxl-5{grid-column-start:5}.panel-grid .g-start-xxl-6{grid-column-start:6}.panel-grid .g-start-xxl-7{grid-column-start:7}.panel-grid .g-start-xxl-8{grid-column-start:8}.panel-grid .g-start-xxl-9{grid-column-start:9}.panel-grid .g-start-xxl-10{grid-column-start:10}.panel-grid .g-start-xxl-11{grid-column-start:11}.panel-grid .g-start-xxl-12{grid-column-start:12}.panel-grid .g-start-xxl-13{grid-column-start:13}.panel-grid .g-start-xxl-14{grid-column-start:14}.panel-grid .g-start-xxl-15{grid-column-start:15}.panel-grid .g-start-xxl-16{grid-column-start:16}.panel-grid .g-start-xxl-17{grid-column-start:17}.panel-grid .g-start-xxl-18{grid-column-start:18}.panel-grid .g-start-xxl-19{grid-column-start:19}.panel-grid .g-start-xxl-20{grid-column-start:20}.panel-grid .g-start-xxl-21{grid-column-start:21}.panel-grid .g-start-xxl-22{grid-column-start:22}.panel-grid .g-start-xxl-23{grid-column-start:23}}main{margin-top:1em;margin-bottom:1em}h1,.h1,h2,.h2{opacity:.9;margin-top:2rem;margin-bottom:1rem;font-weight:600}h1.title,.title.h1{margin-top:0}h2,.h2{border-bottom:1px solid #dee2e6;padding-bottom:.5rem}h3,.h3{font-weight:600}h3,.h3,h4,.h4{opacity:.9;margin-top:1.5rem}h5,.h5,h6,.h6{opacity:.9}.header-section-number{color:#5a6570}.nav-link.active .header-section-number{color:inherit}mark,.mark{padding:0em}.panel-caption,caption,.figure-caption{font-size:.9rem}.panel-caption,.figure-caption,figcaption{color:#5a6570}.table-caption,caption{color:#212529}.quarto-layout-cell[data-ref-parent] caption{color:#5a6570}.column-margin figcaption,.margin-caption,div.aside,aside,.column-margin{color:#5a6570;font-size:.825rem}.panel-caption.margin-caption{text-align:inherit}.column-margin.column-container p{margin-bottom:0}.column-margin.column-container>*:not(.collapse){padding-top:.5em;padding-bottom:.5em;display:block}.column-margin.column-container>*.collapse:not(.show){display:none}@media(min-width: 768px){.column-margin.column-container .callout-margin-content:first-child{margin-top:4.5em}.column-margin.column-container .callout-margin-content-simple:first-child{margin-top:3.5em}}.margin-caption>*{padding-top:.5em;padding-bottom:.5em}@media(max-width: 767.98px){.quarto-layout-row{flex-direction:column}}.nav-tabs .nav-item{margin-top:1px;cursor:pointer}.tab-content{margin-top:0px;border-left:#ecf0f1 1px solid;border-right:#ecf0f1 1px solid;border-bottom:#ecf0f1 1px solid;margin-left:0;padding:1em;margin-bottom:1em}@media(max-width: 767.98px){.layout-sidebar{margin-left:0;margin-right:0}}.panel-sidebar,.panel-sidebar .form-control,.panel-input,.panel-input .form-control,.selectize-dropdown{font-size:.9rem}.panel-sidebar .form-control,.panel-input .form-control{padding-top:.1rem}.tab-pane div.sourceCode{margin-top:0px}.tab-pane>p{padding-top:1em}.tab-content>.tab-pane:not(.active){display:none !important}div.sourceCode{background-color:rgba(236,240,241,.65);border:1px solid rgba(236,240,241,.65);border-radius:.25rem}pre.sourceCode{background-color:rgba(0,0,0,0)}pre.sourceCode{border:none;font-size:.875em;overflow:visible !important;padding:.4em}.callout pre.sourceCode{padding-left:0}div.sourceCode{overflow-y:hidden}.callout div.sourceCode{margin-left:initial}.blockquote{font-size:inherit;padding-left:1rem;padding-right:1.5rem;color:#5a6570}.blockquote h1:first-child,.blockquote .h1:first-child,.blockquote h2:first-child,.blockquote .h2:first-child,.blockquote h3:first-child,.blockquote .h3:first-child,.blockquote h4:first-child,.blockquote .h4:first-child,.blockquote h5:first-child,.blockquote .h5:first-child{margin-top:0}pre{background-color:initial;padding:initial;border:initial}p code:not(.sourceCode),li code:not(.sourceCode),td code:not(.sourceCode){background-color:#f6f6f6;padding:.2em}nav p code:not(.sourceCode),nav li code:not(.sourceCode),nav td code:not(.sourceCode){background-color:rgba(0,0,0,0);padding:0}td code:not(.sourceCode){white-space:pre-wrap}#quarto-embedded-source-code-modal>.modal-dialog{max-width:1000px;padding-left:1.75rem;padding-right:1.75rem}#quarto-embedded-source-code-modal>.modal-dialog>.modal-content>.modal-body{padding:0}#quarto-embedded-source-code-modal>.modal-dialog>.modal-content>.modal-body div.sourceCode{margin:0;padding:.2rem .2rem;border-radius:0px;border:none}#quarto-embedded-source-code-modal>.modal-dialog>.modal-content>.modal-header{padding:.7rem}.code-tools-button{font-size:1rem;padding:.15rem .15rem;margin-left:5px;color:#6c757d;background-color:rgba(0,0,0,0);transition:initial;cursor:pointer}.code-tools-button>.bi::before{display:inline-block;height:1rem;width:1rem;content:"";vertical-align:-0.125em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-size:1rem 1rem}.code-tools-button:hover>.bi::before{background-image:url('data:image/svg+xml,')}#quarto-embedded-source-code-modal .code-copy-button>.bi::before{background-image:url('data:image/svg+xml,')}#quarto-embedded-source-code-modal .code-copy-button-checked>.bi::before{background-image:url('data:image/svg+xml,')}.sidebar{will-change:top;transition:top 200ms linear;position:sticky;overflow-y:auto;padding-top:1.2em;max-height:100vh}.sidebar.toc-left,.sidebar.margin-sidebar{top:0px;padding-top:1em}.sidebar.toc-left>*,.sidebar.margin-sidebar>*{padding-top:.5em}.sidebar.quarto-banner-title-block-sidebar>*{padding-top:1.65em}figure .quarto-notebook-link{margin-top:.5em}.quarto-notebook-link{font-size:.75em;color:#6c757d;margin-bottom:1em;text-decoration:none;display:block}.quarto-notebook-link:hover{text-decoration:underline;color:#18bc9c}.quarto-notebook-link::before{display:inline-block;height:.75rem;width:.75rem;margin-bottom:0em;margin-right:.25em;content:"";vertical-align:-0.125em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-size:.75rem .75rem}.quarto-alternate-notebooks i.bi,.quarto-alternate-formats i.bi{margin-right:.4em}.quarto-notebook .cell-container{display:flex}.quarto-notebook .cell-container .cell{flex-grow:4}.quarto-notebook .cell-container .cell-decorator{padding-top:1.5em;padding-right:1em;text-align:right}.quarto-notebook h2,.quarto-notebook .h2{border-bottom:none}.sidebar .quarto-alternate-formats a,.sidebar .quarto-alternate-notebooks a{text-decoration:none}.sidebar .quarto-alternate-formats a:hover,.sidebar .quarto-alternate-notebooks a:hover{color:#18bc9c}.sidebar .quarto-alternate-notebooks h2,.sidebar .quarto-alternate-notebooks .h2,.sidebar .quarto-alternate-formats h2,.sidebar .quarto-alternate-formats .h2,.sidebar nav[role=doc-toc]>h2,.sidebar nav[role=doc-toc]>.h2{font-size:.875rem;font-weight:400;margin-bottom:.5rem;margin-top:.3rem;font-family:inherit;border-bottom:0;padding-bottom:0;padding-top:0px}.sidebar .quarto-alternate-notebooks h2,.sidebar .quarto-alternate-notebooks .h2,.sidebar .quarto-alternate-formats h2,.sidebar .quarto-alternate-formats .h2{margin-top:1rem}.sidebar nav[role=doc-toc]>ul a{border-left:1px solid #ecf0f1;padding-left:.6rem}.sidebar .quarto-alternate-notebooks h2>ul a,.sidebar .quarto-alternate-notebooks .h2>ul a,.sidebar .quarto-alternate-formats h2>ul a,.sidebar .quarto-alternate-formats .h2>ul a{border-left:none;padding-left:.6rem}.sidebar .quarto-alternate-notebooks ul a:empty,.sidebar .quarto-alternate-formats ul a:empty,.sidebar nav[role=doc-toc]>ul a:empty{display:none}.sidebar .quarto-alternate-notebooks ul,.sidebar .quarto-alternate-formats ul,.sidebar nav[role=doc-toc] ul{padding-left:0;list-style:none;font-size:.875rem;font-weight:300}.sidebar .quarto-alternate-notebooks ul li a,.sidebar .quarto-alternate-formats ul li a,.sidebar nav[role=doc-toc]>ul li a{line-height:1.1rem;padding-bottom:.2rem;padding-top:.2rem;color:inherit}.sidebar nav[role=doc-toc] ul>li>ul>li>a{padding-left:1.2em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>a{padding-left:2.4em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>ul>li>a{padding-left:3.6em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>ul>li>ul>li>a{padding-left:4.8em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>ul>li>ul>li>ul>li>a{padding-left:6em}.sidebar nav[role=doc-toc] ul>li>a.active,.sidebar nav[role=doc-toc] ul>li>ul>li>a.active{border-left:1px solid #18bc9c;color:#18bc9c !important}.sidebar nav[role=doc-toc] ul>li>a:hover,.sidebar nav[role=doc-toc] ul>li>ul>li>a:hover{color:#18bc9c !important}kbd,.kbd{color:#212529;background-color:#f8f9fa;border:1px solid;border-radius:5px;border-color:#dee2e6}div.hanging-indent{margin-left:1em;text-indent:-1em}.citation a,.footnote-ref{text-decoration:none}.footnotes ol{padding-left:1em}.tippy-content>*{margin-bottom:.7em}.tippy-content>*:last-child{margin-bottom:0}.table a{word-break:break-word}.table>thead{border-top-width:1px;border-top-color:#dee2e6;border-bottom:1px solid #9ba5ae}.callout{margin-top:1.25rem;margin-bottom:1.25rem;border-radius:.25rem;overflow-wrap:break-word}.callout .callout-title-container{overflow-wrap:anywhere}.callout.callout-style-simple{padding:.4em .7em;border-left:5px solid;border-right:1px solid #dee2e6;border-top:1px solid #dee2e6;border-bottom:1px solid #dee2e6}.callout.callout-style-default{border-left:5px solid;border-right:1px solid #dee2e6;border-top:1px solid #dee2e6;border-bottom:1px solid #dee2e6}.callout .callout-body-container{flex-grow:1}.callout.callout-style-simple .callout-body{font-size:.9rem;font-weight:400}.callout.callout-style-default .callout-body{font-size:.9rem;font-weight:400}.callout.callout-titled .callout-body{margin-top:.2em}.callout:not(.no-icon).callout-titled.callout-style-simple .callout-body{padding-left:1.6em}.callout.callout-titled>.callout-header{padding-top:.2em;margin-bottom:-0.2em}.callout.callout-style-simple>div.callout-header{border-bottom:none;font-size:.9rem;font-weight:600;opacity:75%}.callout.callout-style-default>div.callout-header{border-bottom:none;font-weight:600;opacity:85%;font-size:.9rem;padding-left:.5em;padding-right:.5em}.callout.callout-style-default div.callout-body{padding-left:.5em;padding-right:.5em}.callout.callout-style-default div.callout-body>:first-child{margin-top:.5em}.callout>div.callout-header[data-bs-toggle=collapse]{cursor:pointer}.callout.callout-style-default .callout-header[aria-expanded=false],.callout.callout-style-default .callout-header[aria-expanded=true]{padding-top:0px;margin-bottom:0px;align-items:center}.callout.callout-titled .callout-body>:last-child:not(.sourceCode),.callout.callout-titled .callout-body>div>:last-child:not(.sourceCode){margin-bottom:.5rem}.callout:not(.callout-titled) .callout-body>:first-child,.callout:not(.callout-titled) .callout-body>div>:first-child{margin-top:.25rem}.callout:not(.callout-titled) .callout-body>:last-child,.callout:not(.callout-titled) .callout-body>div>:last-child{margin-bottom:.2rem}.callout.callout-style-simple .callout-icon::before,.callout.callout-style-simple .callout-toggle::before{height:1rem;width:1rem;display:inline-block;content:"";background-repeat:no-repeat;background-size:1rem 1rem}.callout.callout-style-default .callout-icon::before,.callout.callout-style-default .callout-toggle::before{height:.9rem;width:.9rem;display:inline-block;content:"";background-repeat:no-repeat;background-size:.9rem .9rem}.callout.callout-style-default .callout-toggle::before{margin-top:5px}.callout .callout-btn-toggle .callout-toggle::before{transition:transform .2s linear}.callout .callout-header[aria-expanded=false] .callout-toggle::before{transform:rotate(-90deg)}.callout .callout-header[aria-expanded=true] .callout-toggle::before{transform:none}.callout.callout-style-simple:not(.no-icon) div.callout-icon-container{padding-top:.2em;padding-right:.55em}.callout.callout-style-default:not(.no-icon) div.callout-icon-container{padding-top:.1em;padding-right:.35em}.callout.callout-style-default:not(.no-icon) div.callout-title-container{margin-top:-1px}.callout.callout-style-default.callout-caution:not(.no-icon) div.callout-icon-container{padding-top:.3em;padding-right:.35em}.callout>.callout-body>.callout-icon-container>.no-icon,.callout>.callout-header>.callout-icon-container>.no-icon{display:none}div.callout.callout{border-left-color:#6c757d}div.callout.callout-style-default>.callout-header{background-color:#6c757d}div.callout-note.callout{border-left-color:#2c3e50}div.callout-note.callout-style-default>.callout-header{background-color:#eaecee}div.callout-note:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-note.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-note .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-tip.callout{border-left-color:#18bc9c}div.callout-tip.callout-style-default>.callout-header{background-color:#e8f8f5}div.callout-tip:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-tip.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-tip .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-warning.callout{border-left-color:#f39c12}div.callout-warning.callout-style-default>.callout-header{background-color:#fef5e7}div.callout-warning:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-warning.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-warning .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-caution.callout{border-left-color:#fd7e14}div.callout-caution.callout-style-default>.callout-header{background-color:#fff2e8}div.callout-caution:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-caution.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-caution .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-important.callout{border-left-color:#e74c3c}div.callout-important.callout-style-default>.callout-header{background-color:#fdedec}div.callout-important:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-important.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-important .callout-toggle::before{background-image:url('data:image/svg+xml,')}.quarto-toggle-container{display:flex;align-items:center}.quarto-reader-toggle .bi::before,.quarto-color-scheme-toggle .bi::before{display:inline-block;height:1rem;width:1rem;content:"";background-repeat:no-repeat;background-size:1rem 1rem}.sidebar-navigation{padding-left:20px}.navbar .quarto-color-scheme-toggle:not(.alternate) .bi::before{background-image:url('data:image/svg+xml,')}.navbar .quarto-color-scheme-toggle.alternate .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-color-scheme-toggle:not(.alternate) .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-color-scheme-toggle.alternate .bi::before{background-image:url('data:image/svg+xml,')}.quarto-sidebar-toggle{border-color:#dee2e6;border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem;border-style:solid;border-width:1px;overflow:hidden;border-top-width:0px;padding-top:0px !important}.quarto-sidebar-toggle-title{cursor:pointer;padding-bottom:2px;margin-left:.25em;text-align:center;font-weight:400;font-size:.775em}#quarto-content .quarto-sidebar-toggle{background:#fafafa}#quarto-content .quarto-sidebar-toggle-title{color:#212529}.quarto-sidebar-toggle-icon{color:#dee2e6;margin-right:.5em;float:right;transition:transform .2s ease}.quarto-sidebar-toggle-icon::before{padding-top:5px}.quarto-sidebar-toggle.expanded .quarto-sidebar-toggle-icon{transform:rotate(-180deg)}.quarto-sidebar-toggle.expanded .quarto-sidebar-toggle-title{border-bottom:solid #dee2e6 1px}.quarto-sidebar-toggle-contents{background-color:#fff;padding-right:10px;padding-left:10px;margin-top:0px !important;transition:max-height .5s ease}.quarto-sidebar-toggle.expanded .quarto-sidebar-toggle-contents{padding-top:1em;padding-bottom:10px}.quarto-sidebar-toggle:not(.expanded) .quarto-sidebar-toggle-contents{padding-top:0px !important;padding-bottom:0px}nav[role=doc-toc]{z-index:1020}#quarto-sidebar>*,nav[role=doc-toc]>*{transition:opacity .1s ease,border .1s ease}#quarto-sidebar.slow>*,nav[role=doc-toc].slow>*{transition:opacity .4s ease,border .4s ease}.quarto-color-scheme-toggle:not(.alternate).top-right .bi::before{background-image:url('data:image/svg+xml,')}.quarto-color-scheme-toggle.alternate.top-right .bi::before{background-image:url('data:image/svg+xml,')}#quarto-appendix.default{border-top:1px solid #dee2e6}#quarto-appendix.default{background-color:#fff;padding-top:1.5em;margin-top:2em;z-index:998}#quarto-appendix.default .quarto-appendix-heading{margin-top:0;line-height:1.4em;font-weight:600;opacity:.9;border-bottom:none;margin-bottom:0}#quarto-appendix.default .footnotes ol,#quarto-appendix.default .footnotes ol li>p:last-of-type,#quarto-appendix.default .quarto-appendix-contents>p:last-of-type{margin-bottom:0}#quarto-appendix.default .quarto-appendix-secondary-label{margin-bottom:.4em}#quarto-appendix.default .quarto-appendix-bibtex{font-size:.7em;padding:1em;border:solid 1px #dee2e6;margin-bottom:1em}#quarto-appendix.default .quarto-appendix-bibtex code.sourceCode{white-space:pre-wrap}#quarto-appendix.default .quarto-appendix-citeas{font-size:.9em;padding:1em;border:solid 1px #dee2e6;margin-bottom:1em}#quarto-appendix.default .quarto-appendix-heading{font-size:1em !important}#quarto-appendix.default *[role=doc-endnotes]>ol,#quarto-appendix.default .quarto-appendix-contents>*:not(h2):not(.h2){font-size:.9em}#quarto-appendix.default section{padding-bottom:1.5em}#quarto-appendix.default section *[role=doc-endnotes],#quarto-appendix.default section>*:not(a){opacity:.9;word-wrap:break-word}.btn.btn-quarto,div.cell-output-display .btn-quarto{color:#fefefe;background-color:#6c757d;border-color:#6c757d}.btn.btn-quarto:hover,div.cell-output-display .btn-quarto:hover{color:#fefefe;background-color:#828a91;border-color:#7b838a}.btn-check:focus+.btn.btn-quarto,.btn.btn-quarto:focus,.btn-check:focus+div.cell-output-display .btn-quarto,div.cell-output-display .btn-quarto:focus{color:#fefefe;background-color:#828a91;border-color:#7b838a;box-shadow:0 0 0 .25rem rgba(130,138,144,.5)}.btn-check:checked+.btn.btn-quarto,.btn-check:active+.btn.btn-quarto,.btn.btn-quarto:active,.btn.btn-quarto.active,.show>.btn.btn-quarto.dropdown-toggle,.btn-check:checked+div.cell-output-display .btn-quarto,.btn-check:active+div.cell-output-display .btn-quarto,div.cell-output-display .btn-quarto:active,div.cell-output-display .btn-quarto.active,.show>div.cell-output-display .btn-quarto.dropdown-toggle{color:#fff;background-color:#899197;border-color:#7b838a}.btn-check:checked+.btn.btn-quarto:focus,.btn-check:active+.btn.btn-quarto:focus,.btn.btn-quarto:active:focus,.btn.btn-quarto.active:focus,.show>.btn.btn-quarto.dropdown-toggle:focus,.btn-check:checked+div.cell-output-display .btn-quarto:focus,.btn-check:active+div.cell-output-display .btn-quarto:focus,div.cell-output-display .btn-quarto:active:focus,div.cell-output-display .btn-quarto.active:focus,.show>div.cell-output-display .btn-quarto.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(130,138,144,.5)}.btn.btn-quarto:disabled,.btn.btn-quarto.disabled,div.cell-output-display .btn-quarto:disabled,div.cell-output-display .btn-quarto.disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}nav.quarto-secondary-nav.color-navbar{background-color:#2c3e50;color:#ccd1d5}nav.quarto-secondary-nav.color-navbar h1,nav.quarto-secondary-nav.color-navbar .h1,nav.quarto-secondary-nav.color-navbar .quarto-btn-toggle{color:#ccd1d5}@media(max-width: 991.98px){body.nav-sidebar .quarto-title-banner{margin-bottom:0;padding-bottom:0}body.nav-sidebar #title-block-header{margin-block-end:0}}p.subtitle{margin-top:.25em;margin-bottom:.5em}code a:any-link{color:inherit;text-decoration-color:#6c757d}/*! light */div.observablehq table thead tr th{background-color:var(--bs-body-bg)}input,button,select,optgroup,textarea{background-color:var(--bs-body-bg)}.code-annotated .code-copy-button{margin-right:1.25em;margin-top:0;padding-bottom:0;padding-top:3px}.code-annotation-gutter-bg{background-color:#fff}.code-annotation-gutter{background-color:rgba(236,240,241,.65)}.code-annotation-gutter,.code-annotation-gutter-bg{height:100%;width:calc(20px + .5em);position:absolute;top:0;right:0}dl.code-annotation-container-grid dt{margin-right:1em;margin-top:.25rem}dl.code-annotation-container-grid dt{font-family:var(--bs-font-monospace);color:#383f45;border:solid #383f45 1px;border-radius:50%;height:22px;width:22px;line-height:22px;font-size:11px;text-align:center;vertical-align:middle;text-decoration:none}dl.code-annotation-container-grid dt[data-target-cell]{cursor:pointer}dl.code-annotation-container-grid dt[data-target-cell].code-annotation-active{color:#fff;border:solid #aaa 1px;background-color:#aaa}pre.code-annotation-code{padding-top:0;padding-bottom:0}pre.code-annotation-code code{z-index:3}#code-annotation-line-highlight-gutter{width:100%;border-top:solid rgba(170,170,170,.2666666667) 1px;border-bottom:solid rgba(170,170,170,.2666666667) 1px;z-index:2;background-color:rgba(170,170,170,.1333333333)}#code-annotation-line-highlight{margin-left:-4em;width:calc(100% + 4em);border-top:solid rgba(170,170,170,.2666666667) 1px;border-bottom:solid rgba(170,170,170,.2666666667) 1px;z-index:2;background-color:rgba(170,170,170,.1333333333)}code.sourceCode .code-annotation-anchor.code-annotation-active{background-color:var(--quarto-hl-normal-color, #aaaaaa);border:solid var(--quarto-hl-normal-color, #aaaaaa) 1px;color:#ecf0f1;font-weight:bolder}code.sourceCode .code-annotation-anchor{font-family:var(--bs-font-monospace);color:var(--quarto-hl-co-color);border:solid var(--quarto-hl-co-color) 1px;border-radius:50%;height:18px;width:18px;font-size:9px;margin-top:2px}code.sourceCode button.code-annotation-anchor{padding:2px}code.sourceCode a.code-annotation-anchor{line-height:18px;text-align:center;vertical-align:middle;cursor:default;text-decoration:none}@media print{.page-columns .column-screen-inset{grid-column:page-start-inset/page-end-inset;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-inset table{background:#fff}.page-columns .column-screen-inset-left{grid-column:page-start-inset/body-content-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-inset-left table{background:#fff}.page-columns .column-screen-inset-right{grid-column:body-content-start/page-end-inset;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-inset-right table{background:#fff}.page-columns .column-screen{grid-column:page-start/page-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen table{background:#fff}.page-columns .column-screen-left{grid-column:page-start/body-content-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-left table{background:#fff}.page-columns .column-screen-right{grid-column:body-content-start/page-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-right table{background:#fff}.page-columns .column-screen-inset-shaded{grid-column:page-start-inset/page-end-inset;padding:1em;background:#ecf0f1;z-index:998;transform:translate3d(0, 0, 0);margin-bottom:1em}}.quarto-video{margin-bottom:1em}.table>thead{border-top-width:0}.table>:not(caption)>*:not(:last-child)>*{border-bottom-color:#d3d8dc;border-bottom-style:solid;border-bottom-width:1px}.table>:not(:first-child){border-top:1px solid #9ba5ae;border-bottom:1px solid inherit}.table tbody{border-bottom-color:#9ba5ae}a.external:after{display:inline-block;height:.75rem;width:.75rem;margin-bottom:.15em;margin-left:.25em;content:"";vertical-align:-0.125em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-size:.75rem .75rem}div.sourceCode code a.external:after{content:none}a.external:after:hover{cursor:pointer}.quarto-ext-icon{display:inline-block;font-size:.75em;padding-left:.3em}.code-with-filename .code-with-filename-file{margin-bottom:0;padding-bottom:2px;padding-top:2px;padding-left:.7em;border:var(--quarto-border-width) solid var(--quarto-border-color);border-radius:var(--quarto-border-radius);border-bottom:0;border-bottom-left-radius:0%;border-bottom-right-radius:0%}.code-with-filename div.sourceCode,.reveal .code-with-filename div.sourceCode{margin-top:0;border-top-left-radius:0%;border-top-right-radius:0%}.code-with-filename .code-with-filename-file pre{margin-bottom:0}.code-with-filename .code-with-filename-file,.code-with-filename .code-with-filename-file pre{background-color:rgba(219,219,219,.8)}.quarto-dark .code-with-filename .code-with-filename-file,.quarto-dark .code-with-filename .code-with-filename-file pre{background-color:#555}.code-with-filename .code-with-filename-file strong{font-weight:400}.quarto-title-banner{margin-bottom:1em;color:#ccd1d5;background:#2c3e50}.quarto-title-banner .code-tools-button{color:#949fa7}.quarto-title-banner .code-tools-button:hover{color:#ccd1d5}.quarto-title-banner .code-tools-button>.bi::before{background-image:url('data:image/svg+xml,')}.quarto-title-banner .code-tools-button:hover>.bi::before{background-image:url('data:image/svg+xml,')}.quarto-title-banner .quarto-title .title{font-weight:600}.quarto-title-banner .quarto-categories{margin-top:.75em}@media(min-width: 992px){.quarto-title-banner{padding-top:2.5em;padding-bottom:2.5em}}@media(max-width: 991.98px){.quarto-title-banner{padding-top:1em;padding-bottom:1em}}main.quarto-banner-title-block>section:first-child>h2,main.quarto-banner-title-block>section:first-child>.h2,main.quarto-banner-title-block>section:first-child>h3,main.quarto-banner-title-block>section:first-child>.h3,main.quarto-banner-title-block>section:first-child>h4,main.quarto-banner-title-block>section:first-child>.h4{margin-top:0}.quarto-title .quarto-categories{display:flex;flex-wrap:wrap;row-gap:.5em;column-gap:.4em;padding-bottom:.5em;margin-top:.75em}.quarto-title .quarto-categories .quarto-category{padding:.25em .75em;font-size:.65em;text-transform:uppercase;border:solid 1px;border-radius:.25rem;opacity:.6}.quarto-title .quarto-categories .quarto-category a{color:inherit}#title-block-header.quarto-title-block.default .quarto-title-meta{display:grid;grid-template-columns:repeat(2, 1fr)}#title-block-header.quarto-title-block.default .quarto-title .title{margin-bottom:0}#title-block-header.quarto-title-block.default .quarto-title-author-orcid img{margin-top:-5px}#title-block-header.quarto-title-block.default .quarto-description p:last-of-type{margin-bottom:0}#title-block-header.quarto-title-block.default .quarto-title-meta-contents p,#title-block-header.quarto-title-block.default .quarto-title-authors p,#title-block-header.quarto-title-block.default .quarto-title-affiliations p{margin-bottom:.1em}#title-block-header.quarto-title-block.default .quarto-title-meta-heading{text-transform:uppercase;margin-top:1em;font-size:.8em;opacity:.8;font-weight:400}#title-block-header.quarto-title-block.default .quarto-title-meta-contents{font-size:.9em}#title-block-header.quarto-title-block.default .quarto-title-meta-contents a{color:#212529}#title-block-header.quarto-title-block.default .quarto-title-meta-contents p.affiliation:last-of-type{margin-bottom:.7em}#title-block-header.quarto-title-block.default p.affiliation{margin-bottom:.1em}#title-block-header.quarto-title-block.default .description,#title-block-header.quarto-title-block.default .abstract{margin-top:0}#title-block-header.quarto-title-block.default .description>p,#title-block-header.quarto-title-block.default .abstract>p{font-size:.9em}#title-block-header.quarto-title-block.default .description>p:last-of-type,#title-block-header.quarto-title-block.default .abstract>p:last-of-type{margin-bottom:0}#title-block-header.quarto-title-block.default .description .abstract-title,#title-block-header.quarto-title-block.default .abstract .abstract-title{margin-top:1em;text-transform:uppercase;font-size:.8em;opacity:.8;font-weight:400}#title-block-header.quarto-title-block.default .quarto-title-meta-author{display:grid;grid-template-columns:1fr 1fr}.quarto-title-tools-only{display:flex;justify-content:right}.bg-primary .navbar-nav .show>.nav-link,.bg-primary .navbar-nav .nav-link.active,.bg-primary .navbar-nav .nav-link:hover,.bg-primary .navbar-nav .nav-link:focus{color:#18bc9c !important}.nav-tabs .nav-link.active,.nav-tabs .nav-link.active:focus,.nav-tabs .nav-link.active:hover,.nav-tabs .nav-item.open .nav-link,.nav-tabs .nav-item.open .nav-link:focus,.nav-tabs .nav-item.open .nav-link:hover{color:#2c3e50}.pagination a:hover{text-decoration:none}.badge.bg-light{color:#7b8a8b}.alert{border:none;color:#fff}.alert a,.alert .alert-link{color:#fff;text-decoration:underline}.alert-default{background-color:#6c757d}.alert-primary{background-color:#2c3e50}.alert-secondary{background-color:#6c757d}.alert-success{background-color:#18bc9c}.alert-info{background-color:#3498db}.alert-warning{background-color:#f39c12}.alert-danger{background-color:#e74c3c}.alert-light{background-color:#ecf0f1}.alert-dark{background-color:#7b8a8b}.alert-light,.alert-light a,.alert-light .alert-link{color:#212529}.modal .btn-close,.toast .btn-close{background-image:url("data:image/svg+xml,")}/*# sourceMappingURL=9161419e6f82ea4435380a70856fa72b.css.map */ diff --git a/pr-preview/pr-46/site_libs/bootstrap/bootstrap.min.js b/pr-preview/pr-46/site_libs/bootstrap/bootstrap.min.js new file mode 100644 index 00000000..cc0a2556 --- /dev/null +++ b/pr-preview/pr-46/site_libs/bootstrap/bootstrap.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v5.1.3 (https://getbootstrap.com/) + * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap=e()}(this,(function(){"use strict";const t="transitionend",e=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let i=t.getAttribute("href");if(!i||!i.includes("#")&&!i.startsWith("."))return null;i.includes("#")&&!i.startsWith("#")&&(i=`#${i.split("#")[1]}`),e=i&&"#"!==i?i.trim():null}return e},i=t=>{const i=e(t);return i&&document.querySelector(i)?i:null},n=t=>{const i=e(t);return i?document.querySelector(i):null},s=e=>{e.dispatchEvent(new Event(t))},o=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),r=t=>o(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(t):null,a=(t,e,i)=>{Object.keys(i).forEach((n=>{const s=i[n],r=e[n],a=r&&o(r)?"element":null==(l=r)?`${l}`:{}.toString.call(l).match(/\s([a-z]+)/i)[1].toLowerCase();var l;if(!new RegExp(s).test(a))throw new TypeError(`${t.toUpperCase()}: Option "${n}" provided type "${a}" but expected type "${s}".`)}))},l=t=>!(!o(t)||0===t.getClientRects().length)&&"visible"===getComputedStyle(t).getPropertyValue("visibility"),c=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),h=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?h(t.parentNode):null},d=()=>{},u=t=>{t.offsetHeight},f=()=>{const{jQuery:t}=window;return t&&!document.body.hasAttribute("data-bs-no-jquery")?t:null},p=[],m=()=>"rtl"===document.documentElement.dir,g=t=>{var e;e=()=>{const e=f();if(e){const i=t.NAME,n=e.fn[i];e.fn[i]=t.jQueryInterface,e.fn[i].Constructor=t,e.fn[i].noConflict=()=>(e.fn[i]=n,t.jQueryInterface)}},"loading"===document.readyState?(p.length||document.addEventListener("DOMContentLoaded",(()=>{p.forEach((t=>t()))})),p.push(e)):e()},_=t=>{"function"==typeof t&&t()},b=(e,i,n=!0)=>{if(!n)return void _(e);const o=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:i}=window.getComputedStyle(t);const n=Number.parseFloat(e),s=Number.parseFloat(i);return n||s?(e=e.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(i))):0})(i)+5;let r=!1;const a=({target:n})=>{n===i&&(r=!0,i.removeEventListener(t,a),_(e))};i.addEventListener(t,a),setTimeout((()=>{r||s(i)}),o)},v=(t,e,i,n)=>{let s=t.indexOf(e);if(-1===s)return t[!i&&n?t.length-1:0];const o=t.length;return s+=i?1:-1,n&&(s=(s+o)%o),t[Math.max(0,Math.min(s,o-1))]},y=/[^.]*(?=\..*)\.|.*/,w=/\..*/,E=/::\d+$/,A={};let T=1;const O={mouseenter:"mouseover",mouseleave:"mouseout"},C=/^(mouseenter|mouseleave)/i,k=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function L(t,e){return e&&`${e}::${T++}`||t.uidEvent||T++}function x(t){const e=L(t);return t.uidEvent=e,A[e]=A[e]||{},A[e]}function D(t,e,i=null){const n=Object.keys(t);for(let s=0,o=n.length;sfunction(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};n?n=t(n):i=t(i)}const[o,r,a]=S(e,i,n),l=x(t),c=l[a]||(l[a]={}),h=D(c,r,o?i:null);if(h)return void(h.oneOff=h.oneOff&&s);const d=L(r,e.replace(y,"")),u=o?function(t,e,i){return function n(s){const o=t.querySelectorAll(e);for(let{target:r}=s;r&&r!==this;r=r.parentNode)for(let a=o.length;a--;)if(o[a]===r)return s.delegateTarget=r,n.oneOff&&j.off(t,s.type,e,i),i.apply(r,[s]);return null}}(t,i,n):function(t,e){return function i(n){return n.delegateTarget=t,i.oneOff&&j.off(t,n.type,e),e.apply(t,[n])}}(t,i);u.delegationSelector=o?i:null,u.originalHandler=r,u.oneOff=s,u.uidEvent=d,c[d]=u,t.addEventListener(a,u,o)}function I(t,e,i,n,s){const o=D(e[i],n,s);o&&(t.removeEventListener(i,o,Boolean(s)),delete e[i][o.uidEvent])}function P(t){return t=t.replace(w,""),O[t]||t}const j={on(t,e,i,n){N(t,e,i,n,!1)},one(t,e,i,n){N(t,e,i,n,!0)},off(t,e,i,n){if("string"!=typeof e||!t)return;const[s,o,r]=S(e,i,n),a=r!==e,l=x(t),c=e.startsWith(".");if(void 0!==o){if(!l||!l[r])return;return void I(t,l,r,o,s?i:null)}c&&Object.keys(l).forEach((i=>{!function(t,e,i,n){const s=e[i]||{};Object.keys(s).forEach((o=>{if(o.includes(n)){const n=s[o];I(t,e,i,n.originalHandler,n.delegationSelector)}}))}(t,l,i,e.slice(1))}));const h=l[r]||{};Object.keys(h).forEach((i=>{const n=i.replace(E,"");if(!a||e.includes(n)){const e=h[i];I(t,l,r,e.originalHandler,e.delegationSelector)}}))},trigger(t,e,i){if("string"!=typeof e||!t)return null;const n=f(),s=P(e),o=e!==s,r=k.has(s);let a,l=!0,c=!0,h=!1,d=null;return o&&n&&(a=n.Event(e,i),n(t).trigger(a),l=!a.isPropagationStopped(),c=!a.isImmediatePropagationStopped(),h=a.isDefaultPrevented()),r?(d=document.createEvent("HTMLEvents"),d.initEvent(s,l,!0)):d=new CustomEvent(e,{bubbles:l,cancelable:!0}),void 0!==i&&Object.keys(i).forEach((t=>{Object.defineProperty(d,t,{get:()=>i[t]})})),h&&d.preventDefault(),c&&t.dispatchEvent(d),d.defaultPrevented&&void 0!==a&&a.preventDefault(),d}},M=new Map,H={set(t,e,i){M.has(t)||M.set(t,new Map);const n=M.get(t);n.has(e)||0===n.size?n.set(e,i):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(n.keys())[0]}.`)},get:(t,e)=>M.has(t)&&M.get(t).get(e)||null,remove(t,e){if(!M.has(t))return;const i=M.get(t);i.delete(e),0===i.size&&M.delete(t)}};class B{constructor(t){(t=r(t))&&(this._element=t,H.set(this._element,this.constructor.DATA_KEY,this))}dispose(){H.remove(this._element,this.constructor.DATA_KEY),j.off(this._element,this.constructor.EVENT_KEY),Object.getOwnPropertyNames(this).forEach((t=>{this[t]=null}))}_queueCallback(t,e,i=!0){b(t,e,i)}static getInstance(t){return H.get(r(t),this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.1.3"}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}}const R=(t,e="hide")=>{const i=`click.dismiss${t.EVENT_KEY}`,s=t.NAME;j.on(document,i,`[data-bs-dismiss="${s}"]`,(function(i){if(["A","AREA"].includes(this.tagName)&&i.preventDefault(),c(this))return;const o=n(this)||this.closest(`.${s}`);t.getOrCreateInstance(o)[e]()}))};class W extends B{static get NAME(){return"alert"}close(){if(j.trigger(this._element,"close.bs.alert").defaultPrevented)return;this._element.classList.remove("show");const t=this._element.classList.contains("fade");this._queueCallback((()=>this._destroyElement()),this._element,t)}_destroyElement(){this._element.remove(),j.trigger(this._element,"closed.bs.alert"),this.dispose()}static jQueryInterface(t){return this.each((function(){const e=W.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}R(W,"close"),g(W);const $='[data-bs-toggle="button"]';class z extends B{static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(t){return this.each((function(){const e=z.getOrCreateInstance(this);"toggle"===t&&e[t]()}))}}function q(t){return"true"===t||"false"!==t&&(t===Number(t).toString()?Number(t):""===t||"null"===t?null:t)}function F(t){return t.replace(/[A-Z]/g,(t=>`-${t.toLowerCase()}`))}j.on(document,"click.bs.button.data-api",$,(t=>{t.preventDefault();const e=t.target.closest($);z.getOrCreateInstance(e).toggle()})),g(z);const U={setDataAttribute(t,e,i){t.setAttribute(`data-bs-${F(e)}`,i)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${F(e)}`)},getDataAttributes(t){if(!t)return{};const e={};return Object.keys(t.dataset).filter((t=>t.startsWith("bs"))).forEach((i=>{let n=i.replace(/^bs/,"");n=n.charAt(0).toLowerCase()+n.slice(1,n.length),e[n]=q(t.dataset[i])})),e},getDataAttribute:(t,e)=>q(t.getAttribute(`data-bs-${F(e)}`)),offset(t){const e=t.getBoundingClientRect();return{top:e.top+window.pageYOffset,left:e.left+window.pageXOffset}},position:t=>({top:t.offsetTop,left:t.offsetLeft})},V={find:(t,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=>Element.prototype.querySelector.call(e,t),children:(t,e)=>[].concat(...t.children).filter((t=>t.matches(e))),parents(t,e){const i=[];let n=t.parentNode;for(;n&&n.nodeType===Node.ELEMENT_NODE&&3!==n.nodeType;)n.matches(e)&&i.push(n),n=n.parentNode;return i},prev(t,e){let i=t.previousElementSibling;for(;i;){if(i.matches(e))return[i];i=i.previousElementSibling}return[]},next(t,e){let i=t.nextElementSibling;for(;i;){if(i.matches(e))return[i];i=i.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((t=>`${t}:not([tabindex^="-"])`)).join(", ");return this.find(e,t).filter((t=>!c(t)&&l(t)))}},K="carousel",X={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0,touch:!0},Y={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean",touch:"boolean"},Q="next",G="prev",Z="left",J="right",tt={ArrowLeft:J,ArrowRight:Z},et="slid.bs.carousel",it="active",nt=".active.carousel-item";class st extends B{constructor(t,e){super(t),this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this.touchStartX=0,this.touchDeltaX=0,this._config=this._getConfig(e),this._indicatorsElement=V.findOne(".carousel-indicators",this._element),this._touchSupported="ontouchstart"in document.documentElement||navigator.maxTouchPoints>0,this._pointerEvent=Boolean(window.PointerEvent),this._addEventListeners()}static get Default(){return X}static get NAME(){return K}next(){this._slide(Q)}nextWhenVisible(){!document.hidden&&l(this._element)&&this.next()}prev(){this._slide(G)}pause(t){t||(this._isPaused=!0),V.findOne(".carousel-item-next, .carousel-item-prev",this._element)&&(s(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null}cycle(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config&&this._config.interval&&!this._isPaused&&(this._updateInterval(),this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))}to(t){this._activeElement=V.findOne(nt,this._element);const e=this._getItemIndex(this._activeElement);if(t>this._items.length-1||t<0)return;if(this._isSliding)return void j.one(this._element,et,(()=>this.to(t)));if(e===t)return this.pause(),void this.cycle();const i=t>e?Q:G;this._slide(i,this._items[t])}_getConfig(t){return t={...X,...U.getDataAttributes(this._element),..."object"==typeof t?t:{}},a(K,t,Y),t}_handleSwipe(){const t=Math.abs(this.touchDeltaX);if(t<=40)return;const e=t/this.touchDeltaX;this.touchDeltaX=0,e&&this._slide(e>0?J:Z)}_addEventListeners(){this._config.keyboard&&j.on(this._element,"keydown.bs.carousel",(t=>this._keydown(t))),"hover"===this._config.pause&&(j.on(this._element,"mouseenter.bs.carousel",(t=>this.pause(t))),j.on(this._element,"mouseleave.bs.carousel",(t=>this.cycle(t)))),this._config.touch&&this._touchSupported&&this._addTouchEventListeners()}_addTouchEventListeners(){const t=t=>this._pointerEvent&&("pen"===t.pointerType||"touch"===t.pointerType),e=e=>{t(e)?this.touchStartX=e.clientX:this._pointerEvent||(this.touchStartX=e.touches[0].clientX)},i=t=>{this.touchDeltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this.touchStartX},n=e=>{t(e)&&(this.touchDeltaX=e.clientX-this.touchStartX),this._handleSwipe(),"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout((t=>this.cycle(t)),500+this._config.interval))};V.find(".carousel-item img",this._element).forEach((t=>{j.on(t,"dragstart.bs.carousel",(t=>t.preventDefault()))})),this._pointerEvent?(j.on(this._element,"pointerdown.bs.carousel",(t=>e(t))),j.on(this._element,"pointerup.bs.carousel",(t=>n(t))),this._element.classList.add("pointer-event")):(j.on(this._element,"touchstart.bs.carousel",(t=>e(t))),j.on(this._element,"touchmove.bs.carousel",(t=>i(t))),j.on(this._element,"touchend.bs.carousel",(t=>n(t))))}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=tt[t.key];e&&(t.preventDefault(),this._slide(e))}_getItemIndex(t){return this._items=t&&t.parentNode?V.find(".carousel-item",t.parentNode):[],this._items.indexOf(t)}_getItemByOrder(t,e){const i=t===Q;return v(this._items,e,i,this._config.wrap)}_triggerSlideEvent(t,e){const i=this._getItemIndex(t),n=this._getItemIndex(V.findOne(nt,this._element));return j.trigger(this._element,"slide.bs.carousel",{relatedTarget:t,direction:e,from:n,to:i})}_setActiveIndicatorElement(t){if(this._indicatorsElement){const e=V.findOne(".active",this._indicatorsElement);e.classList.remove(it),e.removeAttribute("aria-current");const i=V.find("[data-bs-target]",this._indicatorsElement);for(let e=0;e{j.trigger(this._element,et,{relatedTarget:o,direction:d,from:s,to:r})};if(this._element.classList.contains("slide")){o.classList.add(h),u(o),n.classList.add(c),o.classList.add(c);const t=()=>{o.classList.remove(c,h),o.classList.add(it),n.classList.remove(it,h,c),this._isSliding=!1,setTimeout(f,0)};this._queueCallback(t,n,!0)}else n.classList.remove(it),o.classList.add(it),this._isSliding=!1,f();a&&this.cycle()}_directionToOrder(t){return[J,Z].includes(t)?m()?t===Z?G:Q:t===Z?Q:G:t}_orderToDirection(t){return[Q,G].includes(t)?m()?t===G?Z:J:t===G?J:Z:t}static carouselInterface(t,e){const i=st.getOrCreateInstance(t,e);let{_config:n}=i;"object"==typeof e&&(n={...n,...e});const s="string"==typeof e?e:n.slide;if("number"==typeof e)i.to(e);else if("string"==typeof s){if(void 0===i[s])throw new TypeError(`No method named "${s}"`);i[s]()}else n.interval&&n.ride&&(i.pause(),i.cycle())}static jQueryInterface(t){return this.each((function(){st.carouselInterface(this,t)}))}static dataApiClickHandler(t){const e=n(this);if(!e||!e.classList.contains("carousel"))return;const i={...U.getDataAttributes(e),...U.getDataAttributes(this)},s=this.getAttribute("data-bs-slide-to");s&&(i.interval=!1),st.carouselInterface(e,i),s&&st.getInstance(e).to(s),t.preventDefault()}}j.on(document,"click.bs.carousel.data-api","[data-bs-slide], [data-bs-slide-to]",st.dataApiClickHandler),j.on(window,"load.bs.carousel.data-api",(()=>{const t=V.find('[data-bs-ride="carousel"]');for(let e=0,i=t.length;et===this._element));null!==s&&o.length&&(this._selector=s,this._triggerArray.push(e))}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return rt}static get NAME(){return ot}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t,e=[];if(this._config.parent){const t=V.find(ut,this._config.parent);e=V.find(".collapse.show, .collapse.collapsing",this._config.parent).filter((e=>!t.includes(e)))}const i=V.findOne(this._selector);if(e.length){const n=e.find((t=>i!==t));if(t=n?pt.getInstance(n):null,t&&t._isTransitioning)return}if(j.trigger(this._element,"show.bs.collapse").defaultPrevented)return;e.forEach((e=>{i!==e&&pt.getOrCreateInstance(e,{toggle:!1}).hide(),t||H.set(e,"bs.collapse",null)}));const n=this._getDimension();this._element.classList.remove(ct),this._element.classList.add(ht),this._element.style[n]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const s=`scroll${n[0].toUpperCase()+n.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(ht),this._element.classList.add(ct,lt),this._element.style[n]="",j.trigger(this._element,"shown.bs.collapse")}),this._element,!0),this._element.style[n]=`${this._element[s]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(j.trigger(this._element,"hide.bs.collapse").defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,u(this._element),this._element.classList.add(ht),this._element.classList.remove(ct,lt);const e=this._triggerArray.length;for(let t=0;t{this._isTransitioning=!1,this._element.classList.remove(ht),this._element.classList.add(ct),j.trigger(this._element,"hidden.bs.collapse")}),this._element,!0)}_isShown(t=this._element){return t.classList.contains(lt)}_getConfig(t){return(t={...rt,...U.getDataAttributes(this._element),...t}).toggle=Boolean(t.toggle),t.parent=r(t.parent),a(ot,t,at),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=V.find(ut,this._config.parent);V.find(ft,this._config.parent).filter((e=>!t.includes(e))).forEach((t=>{const e=n(t);e&&this._addAriaAndCollapsedClass([t],this._isShown(e))}))}_addAriaAndCollapsedClass(t,e){t.length&&t.forEach((t=>{e?t.classList.remove(dt):t.classList.add(dt),t.setAttribute("aria-expanded",e)}))}static jQueryInterface(t){return this.each((function(){const e={};"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1);const i=pt.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t]()}}))}}j.on(document,"click.bs.collapse.data-api",ft,(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();const e=i(this);V.find(e).forEach((t=>{pt.getOrCreateInstance(t,{toggle:!1}).toggle()}))})),g(pt);var mt="top",gt="bottom",_t="right",bt="left",vt="auto",yt=[mt,gt,_t,bt],wt="start",Et="end",At="clippingParents",Tt="viewport",Ot="popper",Ct="reference",kt=yt.reduce((function(t,e){return t.concat([e+"-"+wt,e+"-"+Et])}),[]),Lt=[].concat(yt,[vt]).reduce((function(t,e){return t.concat([e,e+"-"+wt,e+"-"+Et])}),[]),xt="beforeRead",Dt="read",St="afterRead",Nt="beforeMain",It="main",Pt="afterMain",jt="beforeWrite",Mt="write",Ht="afterWrite",Bt=[xt,Dt,St,Nt,It,Pt,jt,Mt,Ht];function Rt(t){return t?(t.nodeName||"").toLowerCase():null}function Wt(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function $t(t){return t instanceof Wt(t).Element||t instanceof Element}function zt(t){return t instanceof Wt(t).HTMLElement||t instanceof HTMLElement}function qt(t){return"undefined"!=typeof ShadowRoot&&(t instanceof Wt(t).ShadowRoot||t instanceof ShadowRoot)}const Ft={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var i=e.styles[t]||{},n=e.attributes[t]||{},s=e.elements[t];zt(s)&&Rt(s)&&(Object.assign(s.style,i),Object.keys(n).forEach((function(t){var e=n[t];!1===e?s.removeAttribute(t):s.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,i={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,i.popper),e.styles=i,e.elements.arrow&&Object.assign(e.elements.arrow.style,i.arrow),function(){Object.keys(e.elements).forEach((function(t){var n=e.elements[t],s=e.attributes[t]||{},o=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:i[t]).reduce((function(t,e){return t[e]="",t}),{});zt(n)&&Rt(n)&&(Object.assign(n.style,o),Object.keys(s).forEach((function(t){n.removeAttribute(t)})))}))}},requires:["computeStyles"]};function Ut(t){return t.split("-")[0]}function Vt(t,e){var i=t.getBoundingClientRect();return{width:i.width/1,height:i.height/1,top:i.top/1,right:i.right/1,bottom:i.bottom/1,left:i.left/1,x:i.left/1,y:i.top/1}}function Kt(t){var e=Vt(t),i=t.offsetWidth,n=t.offsetHeight;return Math.abs(e.width-i)<=1&&(i=e.width),Math.abs(e.height-n)<=1&&(n=e.height),{x:t.offsetLeft,y:t.offsetTop,width:i,height:n}}function Xt(t,e){var i=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(i&&qt(i)){var n=e;do{if(n&&t.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function Yt(t){return Wt(t).getComputedStyle(t)}function Qt(t){return["table","td","th"].indexOf(Rt(t))>=0}function Gt(t){return(($t(t)?t.ownerDocument:t.document)||window.document).documentElement}function Zt(t){return"html"===Rt(t)?t:t.assignedSlot||t.parentNode||(qt(t)?t.host:null)||Gt(t)}function Jt(t){return zt(t)&&"fixed"!==Yt(t).position?t.offsetParent:null}function te(t){for(var e=Wt(t),i=Jt(t);i&&Qt(i)&&"static"===Yt(i).position;)i=Jt(i);return i&&("html"===Rt(i)||"body"===Rt(i)&&"static"===Yt(i).position)?e:i||function(t){var e=-1!==navigator.userAgent.toLowerCase().indexOf("firefox");if(-1!==navigator.userAgent.indexOf("Trident")&&zt(t)&&"fixed"===Yt(t).position)return null;for(var i=Zt(t);zt(i)&&["html","body"].indexOf(Rt(i))<0;){var n=Yt(i);if("none"!==n.transform||"none"!==n.perspective||"paint"===n.contain||-1!==["transform","perspective"].indexOf(n.willChange)||e&&"filter"===n.willChange||e&&n.filter&&"none"!==n.filter)return i;i=i.parentNode}return null}(t)||e}function ee(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}var ie=Math.max,ne=Math.min,se=Math.round;function oe(t,e,i){return ie(t,ne(e,i))}function re(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function ae(t,e){return e.reduce((function(e,i){return e[i]=t,e}),{})}const le={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,i=t.state,n=t.name,s=t.options,o=i.elements.arrow,r=i.modifiersData.popperOffsets,a=Ut(i.placement),l=ee(a),c=[bt,_t].indexOf(a)>=0?"height":"width";if(o&&r){var h=function(t,e){return re("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:ae(t,yt))}(s.padding,i),d=Kt(o),u="y"===l?mt:bt,f="y"===l?gt:_t,p=i.rects.reference[c]+i.rects.reference[l]-r[l]-i.rects.popper[c],m=r[l]-i.rects.reference[l],g=te(o),_=g?"y"===l?g.clientHeight||0:g.clientWidth||0:0,b=p/2-m/2,v=h[u],y=_-d[c]-h[f],w=_/2-d[c]/2+b,E=oe(v,w,y),A=l;i.modifiersData[n]=((e={})[A]=E,e.centerOffset=E-w,e)}},effect:function(t){var e=t.state,i=t.options.element,n=void 0===i?"[data-popper-arrow]":i;null!=n&&("string"!=typeof n||(n=e.elements.popper.querySelector(n)))&&Xt(e.elements.popper,n)&&(e.elements.arrow=n)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function ce(t){return t.split("-")[1]}var he={top:"auto",right:"auto",bottom:"auto",left:"auto"};function de(t){var e,i=t.popper,n=t.popperRect,s=t.placement,o=t.variation,r=t.offsets,a=t.position,l=t.gpuAcceleration,c=t.adaptive,h=t.roundOffsets,d=!0===h?function(t){var e=t.x,i=t.y,n=window.devicePixelRatio||1;return{x:se(se(e*n)/n)||0,y:se(se(i*n)/n)||0}}(r):"function"==typeof h?h(r):r,u=d.x,f=void 0===u?0:u,p=d.y,m=void 0===p?0:p,g=r.hasOwnProperty("x"),_=r.hasOwnProperty("y"),b=bt,v=mt,y=window;if(c){var w=te(i),E="clientHeight",A="clientWidth";w===Wt(i)&&"static"!==Yt(w=Gt(i)).position&&"absolute"===a&&(E="scrollHeight",A="scrollWidth"),w=w,s!==mt&&(s!==bt&&s!==_t||o!==Et)||(v=gt,m-=w[E]-n.height,m*=l?1:-1),s!==bt&&(s!==mt&&s!==gt||o!==Et)||(b=_t,f-=w[A]-n.width,f*=l?1:-1)}var T,O=Object.assign({position:a},c&&he);return l?Object.assign({},O,((T={})[v]=_?"0":"",T[b]=g?"0":"",T.transform=(y.devicePixelRatio||1)<=1?"translate("+f+"px, "+m+"px)":"translate3d("+f+"px, "+m+"px, 0)",T)):Object.assign({},O,((e={})[v]=_?m+"px":"",e[b]=g?f+"px":"",e.transform="",e))}const ue={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,i=t.options,n=i.gpuAcceleration,s=void 0===n||n,o=i.adaptive,r=void 0===o||o,a=i.roundOffsets,l=void 0===a||a,c={placement:Ut(e.placement),variation:ce(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:s};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,de(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:r,roundOffsets:l})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,de(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}};var fe={passive:!0};const pe={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,i=t.instance,n=t.options,s=n.scroll,o=void 0===s||s,r=n.resize,a=void 0===r||r,l=Wt(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return o&&c.forEach((function(t){t.addEventListener("scroll",i.update,fe)})),a&&l.addEventListener("resize",i.update,fe),function(){o&&c.forEach((function(t){t.removeEventListener("scroll",i.update,fe)})),a&&l.removeEventListener("resize",i.update,fe)}},data:{}};var me={left:"right",right:"left",bottom:"top",top:"bottom"};function ge(t){return t.replace(/left|right|bottom|top/g,(function(t){return me[t]}))}var _e={start:"end",end:"start"};function be(t){return t.replace(/start|end/g,(function(t){return _e[t]}))}function ve(t){var e=Wt(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function ye(t){return Vt(Gt(t)).left+ve(t).scrollLeft}function we(t){var e=Yt(t),i=e.overflow,n=e.overflowX,s=e.overflowY;return/auto|scroll|overlay|hidden/.test(i+s+n)}function Ee(t){return["html","body","#document"].indexOf(Rt(t))>=0?t.ownerDocument.body:zt(t)&&we(t)?t:Ee(Zt(t))}function Ae(t,e){var i;void 0===e&&(e=[]);var n=Ee(t),s=n===(null==(i=t.ownerDocument)?void 0:i.body),o=Wt(n),r=s?[o].concat(o.visualViewport||[],we(n)?n:[]):n,a=e.concat(r);return s?a:a.concat(Ae(Zt(r)))}function Te(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function Oe(t,e){return e===Tt?Te(function(t){var e=Wt(t),i=Gt(t),n=e.visualViewport,s=i.clientWidth,o=i.clientHeight,r=0,a=0;return n&&(s=n.width,o=n.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(r=n.offsetLeft,a=n.offsetTop)),{width:s,height:o,x:r+ye(t),y:a}}(t)):zt(e)?function(t){var e=Vt(t);return e.top=e.top+t.clientTop,e.left=e.left+t.clientLeft,e.bottom=e.top+t.clientHeight,e.right=e.left+t.clientWidth,e.width=t.clientWidth,e.height=t.clientHeight,e.x=e.left,e.y=e.top,e}(e):Te(function(t){var e,i=Gt(t),n=ve(t),s=null==(e=t.ownerDocument)?void 0:e.body,o=ie(i.scrollWidth,i.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),r=ie(i.scrollHeight,i.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),a=-n.scrollLeft+ye(t),l=-n.scrollTop;return"rtl"===Yt(s||i).direction&&(a+=ie(i.clientWidth,s?s.clientWidth:0)-o),{width:o,height:r,x:a,y:l}}(Gt(t)))}function Ce(t){var e,i=t.reference,n=t.element,s=t.placement,o=s?Ut(s):null,r=s?ce(s):null,a=i.x+i.width/2-n.width/2,l=i.y+i.height/2-n.height/2;switch(o){case mt:e={x:a,y:i.y-n.height};break;case gt:e={x:a,y:i.y+i.height};break;case _t:e={x:i.x+i.width,y:l};break;case bt:e={x:i.x-n.width,y:l};break;default:e={x:i.x,y:i.y}}var c=o?ee(o):null;if(null!=c){var h="y"===c?"height":"width";switch(r){case wt:e[c]=e[c]-(i[h]/2-n[h]/2);break;case Et:e[c]=e[c]+(i[h]/2-n[h]/2)}}return e}function ke(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=void 0===n?t.placement:n,o=i.boundary,r=void 0===o?At:o,a=i.rootBoundary,l=void 0===a?Tt:a,c=i.elementContext,h=void 0===c?Ot:c,d=i.altBoundary,u=void 0!==d&&d,f=i.padding,p=void 0===f?0:f,m=re("number"!=typeof p?p:ae(p,yt)),g=h===Ot?Ct:Ot,_=t.rects.popper,b=t.elements[u?g:h],v=function(t,e,i){var n="clippingParents"===e?function(t){var e=Ae(Zt(t)),i=["absolute","fixed"].indexOf(Yt(t).position)>=0&&zt(t)?te(t):t;return $t(i)?e.filter((function(t){return $t(t)&&Xt(t,i)&&"body"!==Rt(t)})):[]}(t):[].concat(e),s=[].concat(n,[i]),o=s[0],r=s.reduce((function(e,i){var n=Oe(t,i);return e.top=ie(n.top,e.top),e.right=ne(n.right,e.right),e.bottom=ne(n.bottom,e.bottom),e.left=ie(n.left,e.left),e}),Oe(t,o));return r.width=r.right-r.left,r.height=r.bottom-r.top,r.x=r.left,r.y=r.top,r}($t(b)?b:b.contextElement||Gt(t.elements.popper),r,l),y=Vt(t.elements.reference),w=Ce({reference:y,element:_,strategy:"absolute",placement:s}),E=Te(Object.assign({},_,w)),A=h===Ot?E:y,T={top:v.top-A.top+m.top,bottom:A.bottom-v.bottom+m.bottom,left:v.left-A.left+m.left,right:A.right-v.right+m.right},O=t.modifiersData.offset;if(h===Ot&&O){var C=O[s];Object.keys(T).forEach((function(t){var e=[_t,gt].indexOf(t)>=0?1:-1,i=[mt,gt].indexOf(t)>=0?"y":"x";T[t]+=C[i]*e}))}return T}function Le(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=i.boundary,o=i.rootBoundary,r=i.padding,a=i.flipVariations,l=i.allowedAutoPlacements,c=void 0===l?Lt:l,h=ce(n),d=h?a?kt:kt.filter((function(t){return ce(t)===h})):yt,u=d.filter((function(t){return c.indexOf(t)>=0}));0===u.length&&(u=d);var f=u.reduce((function(e,i){return e[i]=ke(t,{placement:i,boundary:s,rootBoundary:o,padding:r})[Ut(i)],e}),{});return Object.keys(f).sort((function(t,e){return f[t]-f[e]}))}const xe={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name;if(!e.modifiersData[n]._skip){for(var s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0===r||r,l=i.fallbackPlacements,c=i.padding,h=i.boundary,d=i.rootBoundary,u=i.altBoundary,f=i.flipVariations,p=void 0===f||f,m=i.allowedAutoPlacements,g=e.options.placement,_=Ut(g),b=l||(_!==g&&p?function(t){if(Ut(t)===vt)return[];var e=ge(t);return[be(t),e,be(e)]}(g):[ge(g)]),v=[g].concat(b).reduce((function(t,i){return t.concat(Ut(i)===vt?Le(e,{placement:i,boundary:h,rootBoundary:d,padding:c,flipVariations:p,allowedAutoPlacements:m}):i)}),[]),y=e.rects.reference,w=e.rects.popper,E=new Map,A=!0,T=v[0],O=0;O=0,D=x?"width":"height",S=ke(e,{placement:C,boundary:h,rootBoundary:d,altBoundary:u,padding:c}),N=x?L?_t:bt:L?gt:mt;y[D]>w[D]&&(N=ge(N));var I=ge(N),P=[];if(o&&P.push(S[k]<=0),a&&P.push(S[N]<=0,S[I]<=0),P.every((function(t){return t}))){T=C,A=!1;break}E.set(C,P)}if(A)for(var j=function(t){var e=v.find((function(e){var i=E.get(e);if(i)return i.slice(0,t).every((function(t){return t}))}));if(e)return T=e,"break"},M=p?3:1;M>0&&"break"!==j(M);M--);e.placement!==T&&(e.modifiersData[n]._skip=!0,e.placement=T,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function De(t,e,i){return void 0===i&&(i={x:0,y:0}),{top:t.top-e.height-i.y,right:t.right-e.width+i.x,bottom:t.bottom-e.height+i.y,left:t.left-e.width-i.x}}function Se(t){return[mt,_t,gt,bt].some((function(e){return t[e]>=0}))}const Ne={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,i=t.name,n=e.rects.reference,s=e.rects.popper,o=e.modifiersData.preventOverflow,r=ke(e,{elementContext:"reference"}),a=ke(e,{altBoundary:!0}),l=De(r,n),c=De(a,s,o),h=Se(l),d=Se(c);e.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:h,hasPopperEscaped:d},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":h,"data-popper-escaped":d})}},Ie={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.offset,o=void 0===s?[0,0]:s,r=Lt.reduce((function(t,i){return t[i]=function(t,e,i){var n=Ut(t),s=[bt,mt].indexOf(n)>=0?-1:1,o="function"==typeof i?i(Object.assign({},e,{placement:t})):i,r=o[0],a=o[1];return r=r||0,a=(a||0)*s,[bt,_t].indexOf(n)>=0?{x:a,y:r}:{x:r,y:a}}(i,e.rects,o),t}),{}),a=r[e.placement],l=a.x,c=a.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=c),e.modifiersData[n]=r}},Pe={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,i=t.name;e.modifiersData[i]=Ce({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}},je={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0!==r&&r,l=i.boundary,c=i.rootBoundary,h=i.altBoundary,d=i.padding,u=i.tether,f=void 0===u||u,p=i.tetherOffset,m=void 0===p?0:p,g=ke(e,{boundary:l,rootBoundary:c,padding:d,altBoundary:h}),_=Ut(e.placement),b=ce(e.placement),v=!b,y=ee(_),w="x"===y?"y":"x",E=e.modifiersData.popperOffsets,A=e.rects.reference,T=e.rects.popper,O="function"==typeof m?m(Object.assign({},e.rects,{placement:e.placement})):m,C={x:0,y:0};if(E){if(o||a){var k="y"===y?mt:bt,L="y"===y?gt:_t,x="y"===y?"height":"width",D=E[y],S=E[y]+g[k],N=E[y]-g[L],I=f?-T[x]/2:0,P=b===wt?A[x]:T[x],j=b===wt?-T[x]:-A[x],M=e.elements.arrow,H=f&&M?Kt(M):{width:0,height:0},B=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},R=B[k],W=B[L],$=oe(0,A[x],H[x]),z=v?A[x]/2-I-$-R-O:P-$-R-O,q=v?-A[x]/2+I+$+W+O:j+$+W+O,F=e.elements.arrow&&te(e.elements.arrow),U=F?"y"===y?F.clientTop||0:F.clientLeft||0:0,V=e.modifiersData.offset?e.modifiersData.offset[e.placement][y]:0,K=E[y]+z-V-U,X=E[y]+q-V;if(o){var Y=oe(f?ne(S,K):S,D,f?ie(N,X):N);E[y]=Y,C[y]=Y-D}if(a){var Q="x"===y?mt:bt,G="x"===y?gt:_t,Z=E[w],J=Z+g[Q],tt=Z-g[G],et=oe(f?ne(J,K):J,Z,f?ie(tt,X):tt);E[w]=et,C[w]=et-Z}}e.modifiersData[n]=C}},requiresIfExists:["offset"]};function Me(t,e,i){void 0===i&&(i=!1);var n=zt(e);zt(e)&&function(t){var e=t.getBoundingClientRect();e.width,t.offsetWidth,e.height,t.offsetHeight}(e);var s,o,r=Gt(e),a=Vt(t),l={scrollLeft:0,scrollTop:0},c={x:0,y:0};return(n||!n&&!i)&&(("body"!==Rt(e)||we(r))&&(l=(s=e)!==Wt(s)&&zt(s)?{scrollLeft:(o=s).scrollLeft,scrollTop:o.scrollTop}:ve(s)),zt(e)?((c=Vt(e)).x+=e.clientLeft,c.y+=e.clientTop):r&&(c.x=ye(r))),{x:a.left+l.scrollLeft-c.x,y:a.top+l.scrollTop-c.y,width:a.width,height:a.height}}function He(t){var e=new Map,i=new Set,n=[];function s(t){i.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach((function(t){if(!i.has(t)){var n=e.get(t);n&&s(n)}})),n.push(t)}return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){i.has(t.name)||s(t)})),n}var Be={placement:"bottom",modifiers:[],strategy:"absolute"};function Re(){for(var t=arguments.length,e=new Array(t),i=0;ij.on(t,"mouseover",d))),this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.add(Je),this._element.classList.add(Je),j.trigger(this._element,"shown.bs.dropdown",t)}hide(){if(c(this._element)||!this._isShown(this._menu))return;const t={relatedTarget:this._element};this._completeHide(t)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_completeHide(t){j.trigger(this._element,"hide.bs.dropdown",t).defaultPrevented||("ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach((t=>j.off(t,"mouseover",d))),this._popper&&this._popper.destroy(),this._menu.classList.remove(Je),this._element.classList.remove(Je),this._element.setAttribute("aria-expanded","false"),U.removeDataAttribute(this._menu,"popper"),j.trigger(this._element,"hidden.bs.dropdown",t))}_getConfig(t){if(t={...this.constructor.Default,...U.getDataAttributes(this._element),...t},a(Ue,t,this.constructor.DefaultType),"object"==typeof t.reference&&!o(t.reference)&&"function"!=typeof t.reference.getBoundingClientRect)throw new TypeError(`${Ue.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return t}_createPopper(t){if(void 0===Fe)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let e=this._element;"parent"===this._config.reference?e=t:o(this._config.reference)?e=r(this._config.reference):"object"==typeof this._config.reference&&(e=this._config.reference);const i=this._getPopperConfig(),n=i.modifiers.find((t=>"applyStyles"===t.name&&!1===t.enabled));this._popper=qe(e,this._menu,i),n&&U.setDataAttribute(this._menu,"popper","static")}_isShown(t=this._element){return t.classList.contains(Je)}_getMenuElement(){return V.next(this._element,ei)[0]}_getPlacement(){const t=this._element.parentNode;if(t.classList.contains("dropend"))return ri;if(t.classList.contains("dropstart"))return ai;const e="end"===getComputedStyle(this._menu).getPropertyValue("--bs-position").trim();return t.classList.contains("dropup")?e?ni:ii:e?oi:si}_detectNavbar(){return null!==this._element.closest(".navbar")}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return"static"===this._config.display&&(t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,..."function"==typeof this._config.popperConfig?this._config.popperConfig(t):this._config.popperConfig}}_selectMenuItem({key:t,target:e}){const i=V.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter(l);i.length&&v(i,e,t===Ye,!i.includes(e)).focus()}static jQueryInterface(t){return this.each((function(){const e=hi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}static clearMenus(t){if(t&&(2===t.button||"keyup"===t.type&&"Tab"!==t.key))return;const e=V.find(ti);for(let i=0,n=e.length;ie+t)),this._setElementAttributes(di,"paddingRight",(e=>e+t)),this._setElementAttributes(ui,"marginRight",(e=>e-t))}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,e,i){const n=this.getWidth();this._applyManipulationCallback(t,(t=>{if(t!==this._element&&window.innerWidth>t.clientWidth+n)return;this._saveInitialAttribute(t,e);const s=window.getComputedStyle(t)[e];t.style[e]=`${i(Number.parseFloat(s))}px`}))}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,"paddingRight"),this._resetElementAttributes(di,"paddingRight"),this._resetElementAttributes(ui,"marginRight")}_saveInitialAttribute(t,e){const i=t.style[e];i&&U.setDataAttribute(t,e,i)}_resetElementAttributes(t,e){this._applyManipulationCallback(t,(t=>{const i=U.getDataAttribute(t,e);void 0===i?t.style.removeProperty(e):(U.removeDataAttribute(t,e),t.style[e]=i)}))}_applyManipulationCallback(t,e){o(t)?e(t):V.find(t,this._element).forEach(e)}isOverflowing(){return this.getWidth()>0}}const pi={className:"modal-backdrop",isVisible:!0,isAnimated:!1,rootElement:"body",clickCallback:null},mi={className:"string",isVisible:"boolean",isAnimated:"boolean",rootElement:"(element|string)",clickCallback:"(function|null)"},gi="show",_i="mousedown.bs.backdrop";class bi{constructor(t){this._config=this._getConfig(t),this._isAppended=!1,this._element=null}show(t){this._config.isVisible?(this._append(),this._config.isAnimated&&u(this._getElement()),this._getElement().classList.add(gi),this._emulateAnimation((()=>{_(t)}))):_(t)}hide(t){this._config.isVisible?(this._getElement().classList.remove(gi),this._emulateAnimation((()=>{this.dispose(),_(t)}))):_(t)}_getElement(){if(!this._element){const t=document.createElement("div");t.className=this._config.className,this._config.isAnimated&&t.classList.add("fade"),this._element=t}return this._element}_getConfig(t){return(t={...pi,..."object"==typeof t?t:{}}).rootElement=r(t.rootElement),a("backdrop",t,mi),t}_append(){this._isAppended||(this._config.rootElement.append(this._getElement()),j.on(this._getElement(),_i,(()=>{_(this._config.clickCallback)})),this._isAppended=!0)}dispose(){this._isAppended&&(j.off(this._element,_i),this._element.remove(),this._isAppended=!1)}_emulateAnimation(t){b(t,this._getElement(),this._config.isAnimated)}}const vi={trapElement:null,autofocus:!0},yi={trapElement:"element",autofocus:"boolean"},wi=".bs.focustrap",Ei="backward";class Ai{constructor(t){this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}activate(){const{trapElement:t,autofocus:e}=this._config;this._isActive||(e&&t.focus(),j.off(document,wi),j.on(document,"focusin.bs.focustrap",(t=>this._handleFocusin(t))),j.on(document,"keydown.tab.bs.focustrap",(t=>this._handleKeydown(t))),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,j.off(document,wi))}_handleFocusin(t){const{target:e}=t,{trapElement:i}=this._config;if(e===document||e===i||i.contains(e))return;const n=V.focusableChildren(i);0===n.length?i.focus():this._lastTabNavDirection===Ei?n[n.length-1].focus():n[0].focus()}_handleKeydown(t){"Tab"===t.key&&(this._lastTabNavDirection=t.shiftKey?Ei:"forward")}_getConfig(t){return t={...vi,..."object"==typeof t?t:{}},a("focustrap",t,yi),t}}const Ti="modal",Oi="Escape",Ci={backdrop:!0,keyboard:!0,focus:!0},ki={backdrop:"(boolean|string)",keyboard:"boolean",focus:"boolean"},Li="hidden.bs.modal",xi="show.bs.modal",Di="resize.bs.modal",Si="click.dismiss.bs.modal",Ni="keydown.dismiss.bs.modal",Ii="mousedown.dismiss.bs.modal",Pi="modal-open",ji="show",Mi="modal-static";class Hi extends B{constructor(t,e){super(t),this._config=this._getConfig(e),this._dialog=V.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._ignoreBackdropClick=!1,this._isTransitioning=!1,this._scrollBar=new fi}static get Default(){return Ci}static get NAME(){return Ti}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||j.trigger(this._element,xi,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isAnimated()&&(this._isTransitioning=!0),this._scrollBar.hide(),document.body.classList.add(Pi),this._adjustDialog(),this._setEscapeEvent(),this._setResizeEvent(),j.on(this._dialog,Ii,(()=>{j.one(this._element,"mouseup.dismiss.bs.modal",(t=>{t.target===this._element&&(this._ignoreBackdropClick=!0)}))})),this._showBackdrop((()=>this._showElement(t))))}hide(){if(!this._isShown||this._isTransitioning)return;if(j.trigger(this._element,"hide.bs.modal").defaultPrevented)return;this._isShown=!1;const t=this._isAnimated();t&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),this._focustrap.deactivate(),this._element.classList.remove(ji),j.off(this._element,Si),j.off(this._dialog,Ii),this._queueCallback((()=>this._hideModal()),this._element,t)}dispose(){[window,this._dialog].forEach((t=>j.off(t,".bs.modal"))),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new bi({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new Ai({trapElement:this._element})}_getConfig(t){return t={...Ci,...U.getDataAttributes(this._element),..."object"==typeof t?t:{}},a(Ti,t,ki),t}_showElement(t){const e=this._isAnimated(),i=V.findOne(".modal-body",this._dialog);this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0,i&&(i.scrollTop=0),e&&u(this._element),this._element.classList.add(ji),this._queueCallback((()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,j.trigger(this._element,"shown.bs.modal",{relatedTarget:t})}),this._dialog,e)}_setEscapeEvent(){this._isShown?j.on(this._element,Ni,(t=>{this._config.keyboard&&t.key===Oi?(t.preventDefault(),this.hide()):this._config.keyboard||t.key!==Oi||this._triggerBackdropTransition()})):j.off(this._element,Ni)}_setResizeEvent(){this._isShown?j.on(window,Di,(()=>this._adjustDialog())):j.off(window,Di)}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide((()=>{document.body.classList.remove(Pi),this._resetAdjustments(),this._scrollBar.reset(),j.trigger(this._element,Li)}))}_showBackdrop(t){j.on(this._element,Si,(t=>{this._ignoreBackdropClick?this._ignoreBackdropClick=!1:t.target===t.currentTarget&&(!0===this._config.backdrop?this.hide():"static"===this._config.backdrop&&this._triggerBackdropTransition())})),this._backdrop.show(t)}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(j.trigger(this._element,"hidePrevented.bs.modal").defaultPrevented)return;const{classList:t,scrollHeight:e,style:i}=this._element,n=e>document.documentElement.clientHeight;!n&&"hidden"===i.overflowY||t.contains(Mi)||(n||(i.overflowY="hidden"),t.add(Mi),this._queueCallback((()=>{t.remove(Mi),n||this._queueCallback((()=>{i.overflowY=""}),this._dialog)}),this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._scrollBar.getWidth(),i=e>0;(!i&&t&&!m()||i&&!t&&m())&&(this._element.style.paddingLeft=`${e}px`),(i&&!t&&!m()||!i&&t&&m())&&(this._element.style.paddingRight=`${e}px`)}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,e){return this.each((function(){const i=Hi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t](e)}}))}}j.on(document,"click.bs.modal.data-api",'[data-bs-toggle="modal"]',(function(t){const e=n(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),j.one(e,xi,(t=>{t.defaultPrevented||j.one(e,Li,(()=>{l(this)&&this.focus()}))}));const i=V.findOne(".modal.show");i&&Hi.getInstance(i).hide(),Hi.getOrCreateInstance(e).toggle(this)})),R(Hi),g(Hi);const Bi="offcanvas",Ri={backdrop:!0,keyboard:!0,scroll:!1},Wi={backdrop:"boolean",keyboard:"boolean",scroll:"boolean"},$i="show",zi=".offcanvas.show",qi="hidden.bs.offcanvas";class Fi extends B{constructor(t,e){super(t),this._config=this._getConfig(e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get NAME(){return Bi}static get Default(){return Ri}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||j.trigger(this._element,"show.bs.offcanvas",{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._element.style.visibility="visible",this._backdrop.show(),this._config.scroll||(new fi).hide(),this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add($i),this._queueCallback((()=>{this._config.scroll||this._focustrap.activate(),j.trigger(this._element,"shown.bs.offcanvas",{relatedTarget:t})}),this._element,!0))}hide(){this._isShown&&(j.trigger(this._element,"hide.bs.offcanvas").defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.remove($i),this._backdrop.hide(),this._queueCallback((()=>{this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._element.style.visibility="hidden",this._config.scroll||(new fi).reset(),j.trigger(this._element,qi)}),this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_getConfig(t){return t={...Ri,...U.getDataAttributes(this._element),..."object"==typeof t?t:{}},a(Bi,t,Wi),t}_initializeBackDrop(){return new bi({className:"offcanvas-backdrop",isVisible:this._config.backdrop,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:()=>this.hide()})}_initializeFocusTrap(){return new Ai({trapElement:this._element})}_addEventListeners(){j.on(this._element,"keydown.dismiss.bs.offcanvas",(t=>{this._config.keyboard&&"Escape"===t.key&&this.hide()}))}static jQueryInterface(t){return this.each((function(){const e=Fi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}j.on(document,"click.bs.offcanvas.data-api",'[data-bs-toggle="offcanvas"]',(function(t){const e=n(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),c(this))return;j.one(e,qi,(()=>{l(this)&&this.focus()}));const i=V.findOne(zi);i&&i!==e&&Fi.getInstance(i).hide(),Fi.getOrCreateInstance(e).toggle(this)})),j.on(window,"load.bs.offcanvas.data-api",(()=>V.find(zi).forEach((t=>Fi.getOrCreateInstance(t).show())))),R(Fi),g(Fi);const Ui=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),Vi=/^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i,Ki=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i,Xi=(t,e)=>{const i=t.nodeName.toLowerCase();if(e.includes(i))return!Ui.has(i)||Boolean(Vi.test(t.nodeValue)||Ki.test(t.nodeValue));const n=e.filter((t=>t instanceof RegExp));for(let t=0,e=n.length;t{Xi(t,r)||i.removeAttribute(t.nodeName)}))}return n.body.innerHTML}const Qi="tooltip",Gi=new Set(["sanitize","allowList","sanitizeFn"]),Zi={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(array|string|function)",container:"(string|element|boolean)",fallbackPlacements:"array",boundary:"(string|element)",customClass:"(string|function)",sanitize:"boolean",sanitizeFn:"(null|function)",allowList:"object",popperConfig:"(null|object|function)"},Ji={AUTO:"auto",TOP:"top",RIGHT:m()?"left":"right",BOTTOM:"bottom",LEFT:m()?"right":"left"},tn={animation:!0,template:'',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:[0,0],container:!1,fallbackPlacements:["top","right","bottom","left"],boundary:"clippingParents",customClass:"",sanitize:!0,sanitizeFn:null,allowList:{"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},popperConfig:null},en={HIDE:"hide.bs.tooltip",HIDDEN:"hidden.bs.tooltip",SHOW:"show.bs.tooltip",SHOWN:"shown.bs.tooltip",INSERTED:"inserted.bs.tooltip",CLICK:"click.bs.tooltip",FOCUSIN:"focusin.bs.tooltip",FOCUSOUT:"focusout.bs.tooltip",MOUSEENTER:"mouseenter.bs.tooltip",MOUSELEAVE:"mouseleave.bs.tooltip"},nn="fade",sn="show",on="show",rn="out",an=".tooltip-inner",ln=".modal",cn="hide.bs.modal",hn="hover",dn="focus";class un extends B{constructor(t,e){if(void 0===Fe)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t),this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this._config=this._getConfig(e),this.tip=null,this._setListeners()}static get Default(){return tn}static get NAME(){return Qi}static get Event(){return en}static get DefaultType(){return Zi}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(t){if(this._isEnabled)if(t){const e=this._initializeOnDelegatedTarget(t);e._activeTrigger.click=!e._activeTrigger.click,e._isWithActiveTrigger()?e._enter(null,e):e._leave(null,e)}else{if(this.getTipElement().classList.contains(sn))return void this._leave(null,this);this._enter(null,this)}}dispose(){clearTimeout(this._timeout),j.off(this._element.closest(ln),cn,this._hideModalHandler),this.tip&&this.tip.remove(),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this.isWithContent()||!this._isEnabled)return;const t=j.trigger(this._element,this.constructor.Event.SHOW),e=h(this._element),i=null===e?this._element.ownerDocument.documentElement.contains(this._element):e.contains(this._element);if(t.defaultPrevented||!i)return;"tooltip"===this.constructor.NAME&&this.tip&&this.getTitle()!==this.tip.querySelector(an).innerHTML&&(this._disposePopper(),this.tip.remove(),this.tip=null);const n=this.getTipElement(),s=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME);n.setAttribute("id",s),this._element.setAttribute("aria-describedby",s),this._config.animation&&n.classList.add(nn);const o="function"==typeof this._config.placement?this._config.placement.call(this,n,this._element):this._config.placement,r=this._getAttachment(o);this._addAttachmentClass(r);const{container:a}=this._config;H.set(n,this.constructor.DATA_KEY,this),this._element.ownerDocument.documentElement.contains(this.tip)||(a.append(n),j.trigger(this._element,this.constructor.Event.INSERTED)),this._popper?this._popper.update():this._popper=qe(this._element,n,this._getPopperConfig(r)),n.classList.add(sn);const l=this._resolvePossibleFunction(this._config.customClass);l&&n.classList.add(...l.split(" ")),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach((t=>{j.on(t,"mouseover",d)}));const c=this.tip.classList.contains(nn);this._queueCallback((()=>{const t=this._hoverState;this._hoverState=null,j.trigger(this._element,this.constructor.Event.SHOWN),t===rn&&this._leave(null,this)}),this.tip,c)}hide(){if(!this._popper)return;const t=this.getTipElement();if(j.trigger(this._element,this.constructor.Event.HIDE).defaultPrevented)return;t.classList.remove(sn),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach((t=>j.off(t,"mouseover",d))),this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1;const e=this.tip.classList.contains(nn);this._queueCallback((()=>{this._isWithActiveTrigger()||(this._hoverState!==on&&t.remove(),this._cleanTipClass(),this._element.removeAttribute("aria-describedby"),j.trigger(this._element,this.constructor.Event.HIDDEN),this._disposePopper())}),this.tip,e),this._hoverState=""}update(){null!==this._popper&&this._popper.update()}isWithContent(){return Boolean(this.getTitle())}getTipElement(){if(this.tip)return this.tip;const t=document.createElement("div");t.innerHTML=this._config.template;const e=t.children[0];return this.setContent(e),e.classList.remove(nn,sn),this.tip=e,this.tip}setContent(t){this._sanitizeAndSetContent(t,this.getTitle(),an)}_sanitizeAndSetContent(t,e,i){const n=V.findOne(i,t);e||!n?this.setElementContent(n,e):n.remove()}setElementContent(t,e){if(null!==t)return o(e)?(e=r(e),void(this._config.html?e.parentNode!==t&&(t.innerHTML="",t.append(e)):t.textContent=e.textContent)):void(this._config.html?(this._config.sanitize&&(e=Yi(e,this._config.allowList,this._config.sanitizeFn)),t.innerHTML=e):t.textContent=e)}getTitle(){const t=this._element.getAttribute("data-bs-original-title")||this._config.title;return this._resolvePossibleFunction(t)}updateAttachment(t){return"right"===t?"end":"left"===t?"start":t}_initializeOnDelegatedTarget(t,e){return e||this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return"function"==typeof t?t.call(this._element):t}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"onChange",enabled:!0,phase:"afterWrite",fn:t=>this._handlePopperPlacementChange(t)}],onFirstUpdate:t=>{t.options.placement!==t.placement&&this._handlePopperPlacementChange(t)}};return{...e,..."function"==typeof this._config.popperConfig?this._config.popperConfig(e):this._config.popperConfig}}_addAttachmentClass(t){this.getTipElement().classList.add(`${this._getBasicClassPrefix()}-${this.updateAttachment(t)}`)}_getAttachment(t){return Ji[t.toUpperCase()]}_setListeners(){this._config.trigger.split(" ").forEach((t=>{if("click"===t)j.on(this._element,this.constructor.Event.CLICK,this._config.selector,(t=>this.toggle(t)));else if("manual"!==t){const e=t===hn?this.constructor.Event.MOUSEENTER:this.constructor.Event.FOCUSIN,i=t===hn?this.constructor.Event.MOUSELEAVE:this.constructor.Event.FOCUSOUT;j.on(this._element,e,this._config.selector,(t=>this._enter(t))),j.on(this._element,i,this._config.selector,(t=>this._leave(t)))}})),this._hideModalHandler=()=>{this._element&&this.hide()},j.on(this._element.closest(ln),cn,this._hideModalHandler),this._config.selector?this._config={...this._config,trigger:"manual",selector:""}:this._fixTitle()}_fixTitle(){const t=this._element.getAttribute("title"),e=typeof this._element.getAttribute("data-bs-original-title");(t||"string"!==e)&&(this._element.setAttribute("data-bs-original-title",t||""),!t||this._element.getAttribute("aria-label")||this._element.textContent||this._element.setAttribute("aria-label",t),this._element.setAttribute("title",""))}_enter(t,e){e=this._initializeOnDelegatedTarget(t,e),t&&(e._activeTrigger["focusin"===t.type?dn:hn]=!0),e.getTipElement().classList.contains(sn)||e._hoverState===on?e._hoverState=on:(clearTimeout(e._timeout),e._hoverState=on,e._config.delay&&e._config.delay.show?e._timeout=setTimeout((()=>{e._hoverState===on&&e.show()}),e._config.delay.show):e.show())}_leave(t,e){e=this._initializeOnDelegatedTarget(t,e),t&&(e._activeTrigger["focusout"===t.type?dn:hn]=e._element.contains(t.relatedTarget)),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState=rn,e._config.delay&&e._config.delay.hide?e._timeout=setTimeout((()=>{e._hoverState===rn&&e.hide()}),e._config.delay.hide):e.hide())}_isWithActiveTrigger(){for(const t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1}_getConfig(t){const e=U.getDataAttributes(this._element);return Object.keys(e).forEach((t=>{Gi.has(t)&&delete e[t]})),(t={...this.constructor.Default,...e,..."object"==typeof t&&t?t:{}}).container=!1===t.container?document.body:r(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),a(Qi,t,this.constructor.DefaultType),t.sanitize&&(t.template=Yi(t.template,t.allowList,t.sanitizeFn)),t}_getDelegateConfig(){const t={};for(const e in this._config)this.constructor.Default[e]!==this._config[e]&&(t[e]=this._config[e]);return t}_cleanTipClass(){const t=this.getTipElement(),e=new RegExp(`(^|\\s)${this._getBasicClassPrefix()}\\S+`,"g"),i=t.getAttribute("class").match(e);null!==i&&i.length>0&&i.map((t=>t.trim())).forEach((e=>t.classList.remove(e)))}_getBasicClassPrefix(){return"bs-tooltip"}_handlePopperPlacementChange(t){const{state:e}=t;e&&(this.tip=e.elements.popper,this._cleanTipClass(),this._addAttachmentClass(this._getAttachment(e.placement)))}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null)}static jQueryInterface(t){return this.each((function(){const e=un.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}g(un);const fn={...un.Default,placement:"right",offset:[0,8],trigger:"click",content:"",template:''},pn={...un.DefaultType,content:"(string|element|function)"},mn={HIDE:"hide.bs.popover",HIDDEN:"hidden.bs.popover",SHOW:"show.bs.popover",SHOWN:"shown.bs.popover",INSERTED:"inserted.bs.popover",CLICK:"click.bs.popover",FOCUSIN:"focusin.bs.popover",FOCUSOUT:"focusout.bs.popover",MOUSEENTER:"mouseenter.bs.popover",MOUSELEAVE:"mouseleave.bs.popover"};class gn extends un{static get Default(){return fn}static get NAME(){return"popover"}static get Event(){return mn}static get DefaultType(){return pn}isWithContent(){return this.getTitle()||this._getContent()}setContent(t){this._sanitizeAndSetContent(t,this.getTitle(),".popover-header"),this._sanitizeAndSetContent(t,this._getContent(),".popover-body")}_getContent(){return this._resolvePossibleFunction(this._config.content)}_getBasicClassPrefix(){return"bs-popover"}static jQueryInterface(t){return this.each((function(){const e=gn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}g(gn);const _n="scrollspy",bn={offset:10,method:"auto",target:""},vn={offset:"number",method:"string",target:"(string|element)"},yn="active",wn=".nav-link, .list-group-item, .dropdown-item",En="position";class An extends B{constructor(t,e){super(t),this._scrollElement="BODY"===this._element.tagName?window:this._element,this._config=this._getConfig(e),this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,j.on(this._scrollElement,"scroll.bs.scrollspy",(()=>this._process())),this.refresh(),this._process()}static get Default(){return bn}static get NAME(){return _n}refresh(){const t=this._scrollElement===this._scrollElement.window?"offset":En,e="auto"===this._config.method?t:this._config.method,n=e===En?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),V.find(wn,this._config.target).map((t=>{const s=i(t),o=s?V.findOne(s):null;if(o){const t=o.getBoundingClientRect();if(t.width||t.height)return[U[e](o).top+n,s]}return null})).filter((t=>t)).sort(((t,e)=>t[0]-e[0])).forEach((t=>{this._offsets.push(t[0]),this._targets.push(t[1])}))}dispose(){j.off(this._scrollElement,".bs.scrollspy"),super.dispose()}_getConfig(t){return(t={...bn,...U.getDataAttributes(this._element),..."object"==typeof t&&t?t:{}}).target=r(t.target)||document.documentElement,a(_n,t,vn),t}_getScrollTop(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop}_getScrollHeight(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)}_getOffsetHeight(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height}_process(){const t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),i=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=i){const t=this._targets[this._targets.length-1];this._activeTarget!==t&&this._activate(t)}else{if(this._activeTarget&&t0)return this._activeTarget=null,void this._clear();for(let e=this._offsets.length;e--;)this._activeTarget!==this._targets[e]&&t>=this._offsets[e]&&(void 0===this._offsets[e+1]||t`${e}[data-bs-target="${t}"],${e}[href="${t}"]`)),i=V.findOne(e.join(","),this._config.target);i.classList.add(yn),i.classList.contains("dropdown-item")?V.findOne(".dropdown-toggle",i.closest(".dropdown")).classList.add(yn):V.parents(i,".nav, .list-group").forEach((t=>{V.prev(t,".nav-link, .list-group-item").forEach((t=>t.classList.add(yn))),V.prev(t,".nav-item").forEach((t=>{V.children(t,".nav-link").forEach((t=>t.classList.add(yn)))}))})),j.trigger(this._scrollElement,"activate.bs.scrollspy",{relatedTarget:t})}_clear(){V.find(wn,this._config.target).filter((t=>t.classList.contains(yn))).forEach((t=>t.classList.remove(yn)))}static jQueryInterface(t){return this.each((function(){const e=An.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}j.on(window,"load.bs.scrollspy.data-api",(()=>{V.find('[data-bs-spy="scroll"]').forEach((t=>new An(t)))})),g(An);const Tn="active",On="fade",Cn="show",kn=".active",Ln=":scope > li > .active";class xn extends B{static get NAME(){return"tab"}show(){if(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&this._element.classList.contains(Tn))return;let t;const e=n(this._element),i=this._element.closest(".nav, .list-group");if(i){const e="UL"===i.nodeName||"OL"===i.nodeName?Ln:kn;t=V.find(e,i),t=t[t.length-1]}const s=t?j.trigger(t,"hide.bs.tab",{relatedTarget:this._element}):null;if(j.trigger(this._element,"show.bs.tab",{relatedTarget:t}).defaultPrevented||null!==s&&s.defaultPrevented)return;this._activate(this._element,i);const o=()=>{j.trigger(t,"hidden.bs.tab",{relatedTarget:this._element}),j.trigger(this._element,"shown.bs.tab",{relatedTarget:t})};e?this._activate(e,e.parentNode,o):o()}_activate(t,e,i){const n=(!e||"UL"!==e.nodeName&&"OL"!==e.nodeName?V.children(e,kn):V.find(Ln,e))[0],s=i&&n&&n.classList.contains(On),o=()=>this._transitionComplete(t,n,i);n&&s?(n.classList.remove(Cn),this._queueCallback(o,t,!0)):o()}_transitionComplete(t,e,i){if(e){e.classList.remove(Tn);const t=V.findOne(":scope > .dropdown-menu .active",e.parentNode);t&&t.classList.remove(Tn),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!1)}t.classList.add(Tn),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!0),u(t),t.classList.contains(On)&&t.classList.add(Cn);let n=t.parentNode;if(n&&"LI"===n.nodeName&&(n=n.parentNode),n&&n.classList.contains("dropdown-menu")){const e=t.closest(".dropdown");e&&V.find(".dropdown-toggle",e).forEach((t=>t.classList.add(Tn))),t.setAttribute("aria-expanded",!0)}i&&i()}static jQueryInterface(t){return this.each((function(){const e=xn.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}j.on(document,"click.bs.tab.data-api",'[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',(function(t){["A","AREA"].includes(this.tagName)&&t.preventDefault(),c(this)||xn.getOrCreateInstance(this).show()})),g(xn);const Dn="toast",Sn="hide",Nn="show",In="showing",Pn={animation:"boolean",autohide:"boolean",delay:"number"},jn={animation:!0,autohide:!0,delay:5e3};class Mn extends B{constructor(t,e){super(t),this._config=this._getConfig(e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get DefaultType(){return Pn}static get Default(){return jn}static get NAME(){return Dn}show(){j.trigger(this._element,"show.bs.toast").defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove(Sn),u(this._element),this._element.classList.add(Nn),this._element.classList.add(In),this._queueCallback((()=>{this._element.classList.remove(In),j.trigger(this._element,"shown.bs.toast"),this._maybeScheduleHide()}),this._element,this._config.animation))}hide(){this._element.classList.contains(Nn)&&(j.trigger(this._element,"hide.bs.toast").defaultPrevented||(this._element.classList.add(In),this._queueCallback((()=>{this._element.classList.add(Sn),this._element.classList.remove(In),this._element.classList.remove(Nn),j.trigger(this._element,"hidden.bs.toast")}),this._element,this._config.animation)))}dispose(){this._clearTimeout(),this._element.classList.contains(Nn)&&this._element.classList.remove(Nn),super.dispose()}_getConfig(t){return t={...jn,...U.getDataAttributes(this._element),..."object"==typeof t&&t?t:{}},a(Dn,t,this.constructor.DefaultType),t}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout((()=>{this.hide()}),this._config.delay)))}_onInteraction(t,e){switch(t.type){case"mouseover":case"mouseout":this._hasMouseInteraction=e;break;case"focusin":case"focusout":this._hasKeyboardInteraction=e}if(e)return void this._clearTimeout();const i=t.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){j.on(this._element,"mouseover.bs.toast",(t=>this._onInteraction(t,!0))),j.on(this._element,"mouseout.bs.toast",(t=>this._onInteraction(t,!1))),j.on(this._element,"focusin.bs.toast",(t=>this._onInteraction(t,!0))),j.on(this._element,"focusout.bs.toast",(t=>this._onInteraction(t,!1)))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){const e=Mn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}return R(Mn),g(Mn),{Alert:W,Button:z,Carousel:st,Collapse:pt,Dropdown:hi,Modal:Hi,Offcanvas:Fi,Popover:gn,ScrollSpy:An,Tab:xn,Toast:Mn,Tooltip:un}})); +//# sourceMappingURL=bootstrap.bundle.min.js.map \ No newline at end of file diff --git a/pr-preview/pr-46/site_libs/clipboard/clipboard.min.js b/pr-preview/pr-46/site_libs/clipboard/clipboard.min.js new file mode 100644 index 00000000..1103f811 --- /dev/null +++ b/pr-preview/pr-46/site_libs/clipboard/clipboard.min.js @@ -0,0 +1,7 @@ +/*! + * clipboard.js v2.0.11 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return n={686:function(t,e,n){"use strict";n.d(e,{default:function(){return b}});var e=n(279),i=n.n(e),e=n(370),u=n.n(e),e=n(817),r=n.n(e);function c(t){try{return document.execCommand(t)}catch(t){return}}var a=function(t){t=r()(t);return c("cut"),t};function o(t,e){var n,o,t=(n=t,o="rtl"===document.documentElement.getAttribute("dir"),(t=document.createElement("textarea")).style.fontSize="12pt",t.style.border="0",t.style.padding="0",t.style.margin="0",t.style.position="absolute",t.style[o?"right":"left"]="-9999px",o=window.pageYOffset||document.documentElement.scrollTop,t.style.top="".concat(o,"px"),t.setAttribute("readonly",""),t.value=n,t);return e.container.appendChild(t),e=r()(t),c("copy"),t.remove(),e}var f=function(t){var e=1.anchorjs-link,.anchorjs-link:focus{opacity:1}",u.sheet.cssRules.length),u.sheet.insertRule("[data-anchorjs-icon]::after{content:attr(data-anchorjs-icon)}",u.sheet.cssRules.length),u.sheet.insertRule('@font-face{font-family:anchorjs-icons;src:url(data:n/a;base64,AAEAAAALAIAAAwAwT1MvMg8yG2cAAAE4AAAAYGNtYXDp3gC3AAABpAAAAExnYXNwAAAAEAAAA9wAAAAIZ2x5ZlQCcfwAAAH4AAABCGhlYWQHFvHyAAAAvAAAADZoaGVhBnACFwAAAPQAAAAkaG10eASAADEAAAGYAAAADGxvY2EACACEAAAB8AAAAAhtYXhwAAYAVwAAARgAAAAgbmFtZQGOH9cAAAMAAAAAunBvc3QAAwAAAAADvAAAACAAAQAAAAEAAHzE2p9fDzz1AAkEAAAAAADRecUWAAAAANQA6R8AAAAAAoACwAAAAAgAAgAAAAAAAAABAAADwP/AAAACgAAA/9MCrQABAAAAAAAAAAAAAAAAAAAAAwABAAAAAwBVAAIAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAMCQAGQAAUAAAKZAswAAACPApkCzAAAAesAMwEJAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAQAAg//0DwP/AAEADwABAAAAAAQAAAAAAAAAAAAAAIAAAAAAAAAIAAAACgAAxAAAAAwAAAAMAAAAcAAEAAwAAABwAAwABAAAAHAAEADAAAAAIAAgAAgAAACDpy//9//8AAAAg6cv//f///+EWNwADAAEAAAAAAAAAAAAAAAAACACEAAEAAAAAAAAAAAAAAAAxAAACAAQARAKAAsAAKwBUAAABIiYnJjQ3NzY2MzIWFxYUBwcGIicmNDc3NjQnJiYjIgYHBwYUFxYUBwYGIwciJicmNDc3NjIXFhQHBwYUFxYWMzI2Nzc2NCcmNDc2MhcWFAcHBgYjARQGDAUtLXoWOR8fORYtLTgKGwoKCjgaGg0gEhIgDXoaGgkJBQwHdR85Fi0tOAobCgoKOBoaDSASEiANehoaCQkKGwotLXoWOR8BMwUFLYEuehYXFxYugC44CQkKGwo4GkoaDQ0NDXoaShoKGwoFBe8XFi6ALjgJCQobCjgaShoNDQ0NehpKGgobCgoKLYEuehYXAAAADACWAAEAAAAAAAEACAAAAAEAAAAAAAIAAwAIAAEAAAAAAAMACAAAAAEAAAAAAAQACAAAAAEAAAAAAAUAAQALAAEAAAAAAAYACAAAAAMAAQQJAAEAEAAMAAMAAQQJAAIABgAcAAMAAQQJAAMAEAAMAAMAAQQJAAQAEAAMAAMAAQQJAAUAAgAiAAMAAQQJAAYAEAAMYW5jaG9yanM0MDBAAGEAbgBjAGgAbwByAGoAcwA0ADAAMABAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAH//wAP) format("truetype")}',u.sheet.cssRules.length)),u=document.querySelectorAll("[id]"),t=[].map.call(u,function(A){return A.id}),i=0;i\]./()*\\\n\t\b\v\u00A0]/g,"-").replace(/-{2,}/g,"-").substring(0,this.options.truncate).replace(/^-+|-+$/gm,"").toLowerCase()},this.hasAnchorJSLink=function(A){var e=A.firstChild&&-1<(" "+A.firstChild.className+" ").indexOf(" anchorjs-link "),A=A.lastChild&&-1<(" "+A.lastChild.className+" ").indexOf(" anchorjs-link ");return e||A||!1}}}); +// @license-end \ No newline at end of file diff --git a/pr-preview/pr-46/site_libs/quarto-html/popper.min.js b/pr-preview/pr-46/site_libs/quarto-html/popper.min.js new file mode 100644 index 00000000..2269d669 --- /dev/null +++ b/pr-preview/pr-46/site_libs/quarto-html/popper.min.js @@ -0,0 +1,6 @@ +/** + * @popperjs/core v2.11.4 - MIT License + */ + +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).Popper={})}(this,(function(e){"use strict";function t(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function n(e){return e instanceof t(e).Element||e instanceof Element}function r(e){return e instanceof t(e).HTMLElement||e instanceof HTMLElement}function o(e){return"undefined"!=typeof ShadowRoot&&(e instanceof t(e).ShadowRoot||e instanceof ShadowRoot)}var i=Math.max,a=Math.min,s=Math.round;function f(e,t){void 0===t&&(t=!1);var n=e.getBoundingClientRect(),o=1,i=1;if(r(e)&&t){var a=e.offsetHeight,f=e.offsetWidth;f>0&&(o=s(n.width)/f||1),a>0&&(i=s(n.height)/a||1)}return{width:n.width/o,height:n.height/i,top:n.top/i,right:n.right/o,bottom:n.bottom/i,left:n.left/o,x:n.left/o,y:n.top/i}}function c(e){var n=t(e);return{scrollLeft:n.pageXOffset,scrollTop:n.pageYOffset}}function p(e){return e?(e.nodeName||"").toLowerCase():null}function u(e){return((n(e)?e.ownerDocument:e.document)||window.document).documentElement}function l(e){return f(u(e)).left+c(e).scrollLeft}function d(e){return t(e).getComputedStyle(e)}function h(e){var t=d(e),n=t.overflow,r=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+r)}function m(e,n,o){void 0===o&&(o=!1);var i,a,d=r(n),m=r(n)&&function(e){var t=e.getBoundingClientRect(),n=s(t.width)/e.offsetWidth||1,r=s(t.height)/e.offsetHeight||1;return 1!==n||1!==r}(n),v=u(n),g=f(e,m),y={scrollLeft:0,scrollTop:0},b={x:0,y:0};return(d||!d&&!o)&&(("body"!==p(n)||h(v))&&(y=(i=n)!==t(i)&&r(i)?{scrollLeft:(a=i).scrollLeft,scrollTop:a.scrollTop}:c(i)),r(n)?((b=f(n,!0)).x+=n.clientLeft,b.y+=n.clientTop):v&&(b.x=l(v))),{x:g.left+y.scrollLeft-b.x,y:g.top+y.scrollTop-b.y,width:g.width,height:g.height}}function v(e){var t=f(e),n=e.offsetWidth,r=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-r)<=1&&(r=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:r}}function g(e){return"html"===p(e)?e:e.assignedSlot||e.parentNode||(o(e)?e.host:null)||u(e)}function y(e){return["html","body","#document"].indexOf(p(e))>=0?e.ownerDocument.body:r(e)&&h(e)?e:y(g(e))}function b(e,n){var r;void 0===n&&(n=[]);var o=y(e),i=o===(null==(r=e.ownerDocument)?void 0:r.body),a=t(o),s=i?[a].concat(a.visualViewport||[],h(o)?o:[]):o,f=n.concat(s);return i?f:f.concat(b(g(s)))}function x(e){return["table","td","th"].indexOf(p(e))>=0}function w(e){return r(e)&&"fixed"!==d(e).position?e.offsetParent:null}function O(e){for(var n=t(e),i=w(e);i&&x(i)&&"static"===d(i).position;)i=w(i);return i&&("html"===p(i)||"body"===p(i)&&"static"===d(i).position)?n:i||function(e){var t=-1!==navigator.userAgent.toLowerCase().indexOf("firefox");if(-1!==navigator.userAgent.indexOf("Trident")&&r(e)&&"fixed"===d(e).position)return null;var n=g(e);for(o(n)&&(n=n.host);r(n)&&["html","body"].indexOf(p(n))<0;){var i=d(n);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||t&&"filter"===i.willChange||t&&i.filter&&"none"!==i.filter)return n;n=n.parentNode}return null}(e)||n}var j="top",E="bottom",D="right",A="left",L="auto",P=[j,E,D,A],M="start",k="end",W="viewport",B="popper",H=P.reduce((function(e,t){return e.concat([t+"-"+M,t+"-"+k])}),[]),T=[].concat(P,[L]).reduce((function(e,t){return e.concat([t,t+"-"+M,t+"-"+k])}),[]),R=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function S(e){var t=new Map,n=new Set,r=[];function o(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!n.has(e)){var r=t.get(e);r&&o(r)}})),r.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||o(e)})),r}function C(e){return e.split("-")[0]}function q(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&o(n)){var r=t;do{if(r&&e.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function V(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function N(e,r){return r===W?V(function(e){var n=t(e),r=u(e),o=n.visualViewport,i=r.clientWidth,a=r.clientHeight,s=0,f=0;return o&&(i=o.width,a=o.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(s=o.offsetLeft,f=o.offsetTop)),{width:i,height:a,x:s+l(e),y:f}}(e)):n(r)?function(e){var t=f(e);return t.top=t.top+e.clientTop,t.left=t.left+e.clientLeft,t.bottom=t.top+e.clientHeight,t.right=t.left+e.clientWidth,t.width=e.clientWidth,t.height=e.clientHeight,t.x=t.left,t.y=t.top,t}(r):V(function(e){var t,n=u(e),r=c(e),o=null==(t=e.ownerDocument)?void 0:t.body,a=i(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=i(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),f=-r.scrollLeft+l(e),p=-r.scrollTop;return"rtl"===d(o||n).direction&&(f+=i(n.clientWidth,o?o.clientWidth:0)-a),{width:a,height:s,x:f,y:p}}(u(e)))}function I(e,t,o){var s="clippingParents"===t?function(e){var t=b(g(e)),o=["absolute","fixed"].indexOf(d(e).position)>=0&&r(e)?O(e):e;return n(o)?t.filter((function(e){return n(e)&&q(e,o)&&"body"!==p(e)})):[]}(e):[].concat(t),f=[].concat(s,[o]),c=f[0],u=f.reduce((function(t,n){var r=N(e,n);return t.top=i(r.top,t.top),t.right=a(r.right,t.right),t.bottom=a(r.bottom,t.bottom),t.left=i(r.left,t.left),t}),N(e,c));return u.width=u.right-u.left,u.height=u.bottom-u.top,u.x=u.left,u.y=u.top,u}function _(e){return e.split("-")[1]}function F(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function U(e){var t,n=e.reference,r=e.element,o=e.placement,i=o?C(o):null,a=o?_(o):null,s=n.x+n.width/2-r.width/2,f=n.y+n.height/2-r.height/2;switch(i){case j:t={x:s,y:n.y-r.height};break;case E:t={x:s,y:n.y+n.height};break;case D:t={x:n.x+n.width,y:f};break;case A:t={x:n.x-r.width,y:f};break;default:t={x:n.x,y:n.y}}var c=i?F(i):null;if(null!=c){var p="y"===c?"height":"width";switch(a){case M:t[c]=t[c]-(n[p]/2-r[p]/2);break;case k:t[c]=t[c]+(n[p]/2-r[p]/2)}}return t}function z(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function X(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}function Y(e,t){void 0===t&&(t={});var r=t,o=r.placement,i=void 0===o?e.placement:o,a=r.boundary,s=void 0===a?"clippingParents":a,c=r.rootBoundary,p=void 0===c?W:c,l=r.elementContext,d=void 0===l?B:l,h=r.altBoundary,m=void 0!==h&&h,v=r.padding,g=void 0===v?0:v,y=z("number"!=typeof g?g:X(g,P)),b=d===B?"reference":B,x=e.rects.popper,w=e.elements[m?b:d],O=I(n(w)?w:w.contextElement||u(e.elements.popper),s,p),A=f(e.elements.reference),L=U({reference:A,element:x,strategy:"absolute",placement:i}),M=V(Object.assign({},x,L)),k=d===B?M:A,H={top:O.top-k.top+y.top,bottom:k.bottom-O.bottom+y.bottom,left:O.left-k.left+y.left,right:k.right-O.right+y.right},T=e.modifiersData.offset;if(d===B&&T){var R=T[i];Object.keys(H).forEach((function(e){var t=[D,E].indexOf(e)>=0?1:-1,n=[j,E].indexOf(e)>=0?"y":"x";H[e]+=R[n]*t}))}return H}var G={placement:"bottom",modifiers:[],strategy:"absolute"};function J(){for(var e=arguments.length,t=new Array(e),n=0;n=0?-1:1,i="function"==typeof n?n(Object.assign({},t,{placement:e})):n,a=i[0],s=i[1];return a=a||0,s=(s||0)*o,[A,D].indexOf(r)>=0?{x:s,y:a}:{x:a,y:s}}(n,t.rects,i),e}),{}),s=a[t.placement],f=s.x,c=s.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=f,t.modifiersData.popperOffsets.y+=c),t.modifiersData[r]=a}},ie={left:"right",right:"left",bottom:"top",top:"bottom"};function ae(e){return e.replace(/left|right|bottom|top/g,(function(e){return ie[e]}))}var se={start:"end",end:"start"};function fe(e){return e.replace(/start|end/g,(function(e){return se[e]}))}function ce(e,t){void 0===t&&(t={});var n=t,r=n.placement,o=n.boundary,i=n.rootBoundary,a=n.padding,s=n.flipVariations,f=n.allowedAutoPlacements,c=void 0===f?T:f,p=_(r),u=p?s?H:H.filter((function(e){return _(e)===p})):P,l=u.filter((function(e){return c.indexOf(e)>=0}));0===l.length&&(l=u);var d=l.reduce((function(t,n){return t[n]=Y(e,{placement:n,boundary:o,rootBoundary:i,padding:a})[C(n)],t}),{});return Object.keys(d).sort((function(e,t){return d[e]-d[t]}))}var pe={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name;if(!t.modifiersData[r]._skip){for(var o=n.mainAxis,i=void 0===o||o,a=n.altAxis,s=void 0===a||a,f=n.fallbackPlacements,c=n.padding,p=n.boundary,u=n.rootBoundary,l=n.altBoundary,d=n.flipVariations,h=void 0===d||d,m=n.allowedAutoPlacements,v=t.options.placement,g=C(v),y=f||(g===v||!h?[ae(v)]:function(e){if(C(e)===L)return[];var t=ae(e);return[fe(e),t,fe(t)]}(v)),b=[v].concat(y).reduce((function(e,n){return e.concat(C(n)===L?ce(t,{placement:n,boundary:p,rootBoundary:u,padding:c,flipVariations:h,allowedAutoPlacements:m}):n)}),[]),x=t.rects.reference,w=t.rects.popper,O=new Map,P=!0,k=b[0],W=0;W=0,S=R?"width":"height",q=Y(t,{placement:B,boundary:p,rootBoundary:u,altBoundary:l,padding:c}),V=R?T?D:A:T?E:j;x[S]>w[S]&&(V=ae(V));var N=ae(V),I=[];if(i&&I.push(q[H]<=0),s&&I.push(q[V]<=0,q[N]<=0),I.every((function(e){return e}))){k=B,P=!1;break}O.set(B,I)}if(P)for(var F=function(e){var t=b.find((function(t){var n=O.get(t);if(n)return n.slice(0,e).every((function(e){return e}))}));if(t)return k=t,"break"},U=h?3:1;U>0;U--){if("break"===F(U))break}t.placement!==k&&(t.modifiersData[r]._skip=!0,t.placement=k,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function ue(e,t,n){return i(e,a(t,n))}var le={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name,o=n.mainAxis,s=void 0===o||o,f=n.altAxis,c=void 0!==f&&f,p=n.boundary,u=n.rootBoundary,l=n.altBoundary,d=n.padding,h=n.tether,m=void 0===h||h,g=n.tetherOffset,y=void 0===g?0:g,b=Y(t,{boundary:p,rootBoundary:u,padding:d,altBoundary:l}),x=C(t.placement),w=_(t.placement),L=!w,P=F(x),k="x"===P?"y":"x",W=t.modifiersData.popperOffsets,B=t.rects.reference,H=t.rects.popper,T="function"==typeof y?y(Object.assign({},t.rects,{placement:t.placement})):y,R="number"==typeof T?{mainAxis:T,altAxis:T}:Object.assign({mainAxis:0,altAxis:0},T),S=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,q={x:0,y:0};if(W){if(s){var V,N="y"===P?j:A,I="y"===P?E:D,U="y"===P?"height":"width",z=W[P],X=z+b[N],G=z-b[I],J=m?-H[U]/2:0,K=w===M?B[U]:H[U],Q=w===M?-H[U]:-B[U],Z=t.elements.arrow,$=m&&Z?v(Z):{width:0,height:0},ee=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},te=ee[N],ne=ee[I],re=ue(0,B[U],$[U]),oe=L?B[U]/2-J-re-te-R.mainAxis:K-re-te-R.mainAxis,ie=L?-B[U]/2+J+re+ne+R.mainAxis:Q+re+ne+R.mainAxis,ae=t.elements.arrow&&O(t.elements.arrow),se=ae?"y"===P?ae.clientTop||0:ae.clientLeft||0:0,fe=null!=(V=null==S?void 0:S[P])?V:0,ce=z+ie-fe,pe=ue(m?a(X,z+oe-fe-se):X,z,m?i(G,ce):G);W[P]=pe,q[P]=pe-z}if(c){var le,de="x"===P?j:A,he="x"===P?E:D,me=W[k],ve="y"===k?"height":"width",ge=me+b[de],ye=me-b[he],be=-1!==[j,A].indexOf(x),xe=null!=(le=null==S?void 0:S[k])?le:0,we=be?ge:me-B[ve]-H[ve]-xe+R.altAxis,Oe=be?me+B[ve]+H[ve]-xe-R.altAxis:ye,je=m&&be?function(e,t,n){var r=ue(e,t,n);return r>n?n:r}(we,me,Oe):ue(m?we:ge,me,m?Oe:ye);W[k]=je,q[k]=je-me}t.modifiersData[r]=q}},requiresIfExists:["offset"]};var de={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,r=e.name,o=e.options,i=n.elements.arrow,a=n.modifiersData.popperOffsets,s=C(n.placement),f=F(s),c=[A,D].indexOf(s)>=0?"height":"width";if(i&&a){var p=function(e,t){return z("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:X(e,P))}(o.padding,n),u=v(i),l="y"===f?j:A,d="y"===f?E:D,h=n.rects.reference[c]+n.rects.reference[f]-a[f]-n.rects.popper[c],m=a[f]-n.rects.reference[f],g=O(i),y=g?"y"===f?g.clientHeight||0:g.clientWidth||0:0,b=h/2-m/2,x=p[l],w=y-u[c]-p[d],L=y/2-u[c]/2+b,M=ue(x,L,w),k=f;n.modifiersData[r]=((t={})[k]=M,t.centerOffset=M-L,t)}},effect:function(e){var t=e.state,n=e.options.element,r=void 0===n?"[data-popper-arrow]":n;null!=r&&("string"!=typeof r||(r=t.elements.popper.querySelector(r)))&&q(t.elements.popper,r)&&(t.elements.arrow=r)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function he(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function me(e){return[j,D,E,A].some((function(t){return e[t]>=0}))}var ve={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,n=e.name,r=t.rects.reference,o=t.rects.popper,i=t.modifiersData.preventOverflow,a=Y(t,{elementContext:"reference"}),s=Y(t,{altBoundary:!0}),f=he(a,r),c=he(s,o,i),p=me(f),u=me(c);t.modifiersData[n]={referenceClippingOffsets:f,popperEscapeOffsets:c,isReferenceHidden:p,hasPopperEscaped:u},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":p,"data-popper-escaped":u})}},ge=K({defaultModifiers:[Z,$,ne,re]}),ye=[Z,$,ne,re,oe,pe,le,de,ve],be=K({defaultModifiers:ye});e.applyStyles=re,e.arrow=de,e.computeStyles=ne,e.createPopper=be,e.createPopperLite=ge,e.defaultModifiers=ye,e.detectOverflow=Y,e.eventListeners=Z,e.flip=pe,e.hide=ve,e.offset=oe,e.popperGenerator=K,e.popperOffsets=$,e.preventOverflow=le,Object.defineProperty(e,"__esModule",{value:!0})})); + diff --git a/pr-preview/pr-46/site_libs/quarto-html/quarto-syntax-highlighting-dark.css b/pr-preview/pr-46/site_libs/quarto-html/quarto-syntax-highlighting-dark.css new file mode 100644 index 00000000..343d2f80 --- /dev/null +++ b/pr-preview/pr-46/site_libs/quarto-html/quarto-syntax-highlighting-dark.css @@ -0,0 +1,189 @@ +/* quarto syntax highlight colors */ +:root { + --quarto-hl-al-color: #f07178; + --quarto-hl-an-color: #d4d0ab; + --quarto-hl-at-color: #00e0e0; + --quarto-hl-bn-color: #d4d0ab; + --quarto-hl-bu-color: #abe338; + --quarto-hl-ch-color: #abe338; + --quarto-hl-co-color: #f8f8f2; + --quarto-hl-cv-color: #ffd700; + --quarto-hl-cn-color: #ffd700; + --quarto-hl-cf-color: #ffa07a; + --quarto-hl-dt-color: #ffa07a; + --quarto-hl-dv-color: #d4d0ab; + --quarto-hl-do-color: #f8f8f2; + --quarto-hl-er-color: #f07178; + --quarto-hl-ex-color: #00e0e0; + --quarto-hl-fl-color: #d4d0ab; + --quarto-hl-fu-color: #ffa07a; + --quarto-hl-im-color: #abe338; + --quarto-hl-in-color: #d4d0ab; + --quarto-hl-kw-color: #ffa07a; + --quarto-hl-op-color: #ffa07a; + --quarto-hl-ot-color: #00e0e0; + --quarto-hl-pp-color: #dcc6e0; + --quarto-hl-re-color: #00e0e0; + --quarto-hl-sc-color: #abe338; + --quarto-hl-ss-color: #abe338; + --quarto-hl-st-color: #abe338; + --quarto-hl-va-color: #00e0e0; + --quarto-hl-vs-color: #abe338; + --quarto-hl-wa-color: #dcc6e0; +} + +/* other quarto variables */ +:root { + --quarto-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; +} + +code span.al { + background-color: #2a0f15; + font-weight: bold; + color: #f07178; +} + +code span.an { + color: #d4d0ab; +} + +code span.at { + color: #00e0e0; +} + +code span.bn { + color: #d4d0ab; +} + +code span.bu { + color: #abe338; +} + +code span.ch { + color: #abe338; +} + +code span.co { + font-style: italic; + color: #f8f8f2; +} + +code span.cv { + color: #ffd700; +} + +code span.cn { + color: #ffd700; +} + +code span.cf { + font-weight: bold; + color: #ffa07a; +} + +code span.dt { + color: #ffa07a; +} + +code span.dv { + color: #d4d0ab; +} + +code span.do { + color: #f8f8f2; +} + +code span.er { + color: #f07178; + text-decoration: underline; +} + +code span.ex { + font-weight: bold; + color: #00e0e0; +} + +code span.fl { + color: #d4d0ab; +} + +code span.fu { + color: #ffa07a; +} + +code span.im { + color: #abe338; +} + +code span.in { + color: #d4d0ab; +} + +code span.kw { + font-weight: bold; + color: #ffa07a; +} + +pre > code.sourceCode > span { + color: #f8f8f2; +} + +code span { + color: #f8f8f2; +} + +code.sourceCode > span { + color: #f8f8f2; +} + +div.sourceCode, +div.sourceCode pre.sourceCode { + color: #f8f8f2; +} + +code span.op { + color: #ffa07a; +} + +code span.ot { + color: #00e0e0; +} + +code span.pp { + color: #dcc6e0; +} + +code span.re { + background-color: #f8f8f2; + color: #00e0e0; +} + +code span.sc { + color: #abe338; +} + +code span.ss { + color: #abe338; +} + +code span.st { + color: #abe338; +} + +code span.va { + color: #00e0e0; +} + +code span.vs { + color: #abe338; +} + +code span.wa { + color: #dcc6e0; +} + +.prevent-inlining { + content: " code.sourceCode > span { + color: #003B4F; +} + +code span { + color: #003B4F; +} + +code.sourceCode > span { + color: #003B4F; +} + +div.sourceCode, +div.sourceCode pre.sourceCode { + color: #003B4F; +} + +code span.ot { + color: #003B4F; + font-style: inherit; +} + +code span.at { + color: #657422; + font-style: inherit; +} + +code span.ss { + color: #20794D; + font-style: inherit; +} + +code span.an { + color: #5E5E5E; + font-style: inherit; +} + +code span.fu { + color: #4758AB; + font-style: inherit; +} + +code span.st { + color: #20794D; + font-style: inherit; +} + +code span.cf { + color: #003B4F; + font-style: inherit; +} + +code span.op { + color: #5E5E5E; + font-style: inherit; +} + +code span.er { + color: #AD0000; + font-style: inherit; +} + +code span.bn { + color: #AD0000; + font-style: inherit; +} + +code span.al { + color: #AD0000; + font-style: inherit; +} + +code span.va { + color: #111111; + font-style: inherit; +} + +code span.bu { + font-style: inherit; +} + +code span.ex { + font-style: inherit; +} + +code span.pp { + color: #AD0000; + font-style: inherit; +} + +code span.in { + color: #5E5E5E; + font-style: inherit; +} + +code span.vs { + color: #20794D; + font-style: inherit; +} + +code span.wa { + color: #5E5E5E; + font-style: italic; +} + +code span.do { + color: #5E5E5E; + font-style: italic; +} + +code span.im { + color: #00769E; + font-style: inherit; +} + +code span.ch { + color: #20794D; + font-style: inherit; +} + +code span.dt { + color: #AD0000; + font-style: inherit; +} + +code span.fl { + color: #AD0000; + font-style: inherit; +} + +code span.co { + color: #5E5E5E; + font-style: inherit; +} + +code span.cv { + color: #5E5E5E; + font-style: italic; +} + +code span.cn { + color: #8f5902; + font-style: inherit; +} + +code span.sc { + color: #5E5E5E; + font-style: inherit; +} + +code span.dv { + color: #AD0000; + font-style: inherit; +} + +code span.kw { + color: #003B4F; + font-style: inherit; +} + +.prevent-inlining { + content: " { + // Find any conflicting margin elements and add margins to the + // top to prevent overlap + const marginChildren = window.document.querySelectorAll( + ".column-margin.column-container > * " + ); + + let lastBottom = 0; + for (const marginChild of marginChildren) { + if (marginChild.offsetParent !== null) { + // clear the top margin so we recompute it + marginChild.style.marginTop = null; + const top = marginChild.getBoundingClientRect().top + window.scrollY; + console.log({ + childtop: marginChild.getBoundingClientRect().top, + scroll: window.scrollY, + top, + lastBottom, + }); + if (top < lastBottom) { + const margin = lastBottom - top; + marginChild.style.marginTop = `${margin}px`; + } + const styles = window.getComputedStyle(marginChild); + const marginTop = parseFloat(styles["marginTop"]); + + console.log({ + top, + height: marginChild.getBoundingClientRect().height, + marginTop, + total: top + marginChild.getBoundingClientRect().height + marginTop, + }); + lastBottom = top + marginChild.getBoundingClientRect().height + marginTop; + } + } +}; + +window.document.addEventListener("DOMContentLoaded", function (_event) { + // Recompute the position of margin elements anytime the body size changes + if (window.ResizeObserver) { + const resizeObserver = new window.ResizeObserver( + throttle(layoutMarginEls, 50) + ); + resizeObserver.observe(window.document.body); + } + + const tocEl = window.document.querySelector('nav.toc-active[role="doc-toc"]'); + const sidebarEl = window.document.getElementById("quarto-sidebar"); + const leftTocEl = window.document.getElementById("quarto-sidebar-toc-left"); + const marginSidebarEl = window.document.getElementById( + "quarto-margin-sidebar" + ); + // function to determine whether the element has a previous sibling that is active + const prevSiblingIsActiveLink = (el) => { + const sibling = el.previousElementSibling; + if (sibling && sibling.tagName === "A") { + return sibling.classList.contains("active"); + } else { + return false; + } + }; + + // fire slideEnter for bootstrap tab activations (for htmlwidget resize behavior) + function fireSlideEnter(e) { + const event = window.document.createEvent("Event"); + event.initEvent("slideenter", true, true); + window.document.dispatchEvent(event); + } + const tabs = window.document.querySelectorAll('a[data-bs-toggle="tab"]'); + tabs.forEach((tab) => { + tab.addEventListener("shown.bs.tab", fireSlideEnter); + }); + + // fire slideEnter for tabby tab activations (for htmlwidget resize behavior) + document.addEventListener("tabby", fireSlideEnter, false); + + // Track scrolling and mark TOC links as active + // get table of contents and sidebar (bail if we don't have at least one) + const tocLinks = tocEl + ? [...tocEl.querySelectorAll("a[data-scroll-target]")] + : []; + const makeActive = (link) => tocLinks[link].classList.add("active"); + const removeActive = (link) => tocLinks[link].classList.remove("active"); + const removeAllActive = () => + [...Array(tocLinks.length).keys()].forEach((link) => removeActive(link)); + + // activate the anchor for a section associated with this TOC entry + tocLinks.forEach((link) => { + link.addEventListener("click", () => { + if (link.href.indexOf("#") !== -1) { + const anchor = link.href.split("#")[1]; + const heading = window.document.querySelector( + `[data-anchor-id=${anchor}]` + ); + if (heading) { + // Add the class + heading.classList.add("reveal-anchorjs-link"); + + // function to show the anchor + const handleMouseout = () => { + heading.classList.remove("reveal-anchorjs-link"); + heading.removeEventListener("mouseout", handleMouseout); + }; + + // add a function to clear the anchor when the user mouses out of it + heading.addEventListener("mouseout", handleMouseout); + } + } + }); + }); + + const sections = tocLinks.map((link) => { + const target = link.getAttribute("data-scroll-target"); + if (target.startsWith("#")) { + return window.document.getElementById(decodeURI(`${target.slice(1)}`)); + } else { + return window.document.querySelector(decodeURI(`${target}`)); + } + }); + + const sectionMargin = 200; + let currentActive = 0; + // track whether we've initialized state the first time + let init = false; + + const updateActiveLink = () => { + // The index from bottom to top (e.g. reversed list) + let sectionIndex = -1; + if ( + window.innerHeight + window.pageYOffset >= + window.document.body.offsetHeight + ) { + sectionIndex = 0; + } else { + sectionIndex = [...sections].reverse().findIndex((section) => { + if (section) { + return window.pageYOffset >= section.offsetTop - sectionMargin; + } else { + return false; + } + }); + } + if (sectionIndex > -1) { + const current = sections.length - sectionIndex - 1; + if (current !== currentActive) { + removeAllActive(); + currentActive = current; + makeActive(current); + if (init) { + window.dispatchEvent(sectionChanged); + } + init = true; + } + } + }; + + const inHiddenRegion = (top, bottom, hiddenRegions) => { + for (const region of hiddenRegions) { + if (top <= region.bottom && bottom >= region.top) { + return true; + } + } + return false; + }; + + const categorySelector = "header.quarto-title-block .quarto-category"; + const activateCategories = (href) => { + // Find any categories + // Surround them with a link pointing back to: + // #category=Authoring + try { + const categoryEls = window.document.querySelectorAll(categorySelector); + for (const categoryEl of categoryEls) { + const categoryText = categoryEl.textContent; + if (categoryText) { + const link = `${href}#category=${encodeURIComponent(categoryText)}`; + const linkEl = window.document.createElement("a"); + linkEl.setAttribute("href", link); + for (const child of categoryEl.childNodes) { + linkEl.append(child); + } + categoryEl.appendChild(linkEl); + } + } + } catch { + // Ignore errors + } + }; + function hasTitleCategories() { + return window.document.querySelector(categorySelector) !== null; + } + + function offsetRelativeUrl(url) { + const offset = getMeta("quarto:offset"); + return offset ? offset + url : url; + } + + function offsetAbsoluteUrl(url) { + const offset = getMeta("quarto:offset"); + const baseUrl = new URL(offset, window.location); + + const projRelativeUrl = url.replace(baseUrl, ""); + if (projRelativeUrl.startsWith("/")) { + return projRelativeUrl; + } else { + return "/" + projRelativeUrl; + } + } + + // read a meta tag value + function getMeta(metaName) { + const metas = window.document.getElementsByTagName("meta"); + for (let i = 0; i < metas.length; i++) { + if (metas[i].getAttribute("name") === metaName) { + return metas[i].getAttribute("content"); + } + } + return ""; + } + + async function findAndActivateCategories() { + const currentPagePath = offsetAbsoluteUrl(window.location.href); + const response = await fetch(offsetRelativeUrl("listings.json")); + if (response.status == 200) { + return response.json().then(function (listingPaths) { + const listingHrefs = []; + for (const listingPath of listingPaths) { + const pathWithoutLeadingSlash = listingPath.listing.substring(1); + for (const item of listingPath.items) { + if ( + item === currentPagePath || + item === currentPagePath + "index.html" + ) { + // Resolve this path against the offset to be sure + // we already are using the correct path to the listing + // (this adjusts the listing urls to be rooted against + // whatever root the page is actually running against) + const relative = offsetRelativeUrl(pathWithoutLeadingSlash); + const baseUrl = window.location; + const resolvedPath = new URL(relative, baseUrl); + listingHrefs.push(resolvedPath.pathname); + break; + } + } + } + + // Look up the tree for a nearby linting and use that if we find one + const nearestListing = findNearestParentListing( + offsetAbsoluteUrl(window.location.pathname), + listingHrefs + ); + if (nearestListing) { + activateCategories(nearestListing); + } else { + // See if the referrer is a listing page for this item + const referredRelativePath = offsetAbsoluteUrl(document.referrer); + const referrerListing = listingHrefs.find((listingHref) => { + const isListingReferrer = + listingHref === referredRelativePath || + listingHref === referredRelativePath + "index.html"; + return isListingReferrer; + }); + + if (referrerListing) { + // Try to use the referrer if possible + activateCategories(referrerListing); + } else if (listingHrefs.length > 0) { + // Otherwise, just fall back to the first listing + activateCategories(listingHrefs[0]); + } + } + }); + } + } + if (hasTitleCategories()) { + findAndActivateCategories(); + } + + const findNearestParentListing = (href, listingHrefs) => { + if (!href || !listingHrefs) { + return undefined; + } + // Look up the tree for a nearby linting and use that if we find one + const relativeParts = href.substring(1).split("/"); + while (relativeParts.length > 0) { + const path = relativeParts.join("/"); + for (const listingHref of listingHrefs) { + if (listingHref.startsWith(path)) { + return listingHref; + } + } + relativeParts.pop(); + } + + return undefined; + }; + + const manageSidebarVisiblity = (el, placeholderDescriptor) => { + let isVisible = true; + let elRect; + + return (hiddenRegions) => { + if (el === null) { + return; + } + + // Find the last element of the TOC + const lastChildEl = el.lastElementChild; + + if (lastChildEl) { + // Converts the sidebar to a menu + const convertToMenu = () => { + for (const child of el.children) { + child.style.opacity = 0; + child.style.overflow = "hidden"; + } + + nexttick(() => { + const toggleContainer = window.document.createElement("div"); + toggleContainer.style.width = "100%"; + toggleContainer.classList.add("zindex-over-content"); + toggleContainer.classList.add("quarto-sidebar-toggle"); + toggleContainer.classList.add("headroom-target"); // Marks this to be managed by headeroom + toggleContainer.id = placeholderDescriptor.id; + toggleContainer.style.position = "fixed"; + + const toggleIcon = window.document.createElement("i"); + toggleIcon.classList.add("quarto-sidebar-toggle-icon"); + toggleIcon.classList.add("bi"); + toggleIcon.classList.add("bi-caret-down-fill"); + + const toggleTitle = window.document.createElement("div"); + const titleEl = window.document.body.querySelector( + placeholderDescriptor.titleSelector + ); + if (titleEl) { + toggleTitle.append( + titleEl.textContent || titleEl.innerText, + toggleIcon + ); + } + toggleTitle.classList.add("zindex-over-content"); + toggleTitle.classList.add("quarto-sidebar-toggle-title"); + toggleContainer.append(toggleTitle); + + const toggleContents = window.document.createElement("div"); + toggleContents.classList = el.classList; + toggleContents.classList.add("zindex-over-content"); + toggleContents.classList.add("quarto-sidebar-toggle-contents"); + for (const child of el.children) { + if (child.id === "toc-title") { + continue; + } + + const clone = child.cloneNode(true); + clone.style.opacity = 1; + clone.style.display = null; + toggleContents.append(clone); + } + toggleContents.style.height = "0px"; + const positionToggle = () => { + // position the element (top left of parent, same width as parent) + if (!elRect) { + elRect = el.getBoundingClientRect(); + } + toggleContainer.style.left = `${elRect.left}px`; + toggleContainer.style.top = `${elRect.top}px`; + toggleContainer.style.width = `${elRect.width}px`; + }; + positionToggle(); + + toggleContainer.append(toggleContents); + el.parentElement.prepend(toggleContainer); + + // Process clicks + let tocShowing = false; + // Allow the caller to control whether this is dismissed + // when it is clicked (e.g. sidebar navigation supports + // opening and closing the nav tree, so don't dismiss on click) + const clickEl = placeholderDescriptor.dismissOnClick + ? toggleContainer + : toggleTitle; + + const closeToggle = () => { + if (tocShowing) { + toggleContainer.classList.remove("expanded"); + toggleContents.style.height = "0px"; + tocShowing = false; + } + }; + + // Get rid of any expanded toggle if the user scrolls + window.document.addEventListener( + "scroll", + throttle(() => { + closeToggle(); + }, 50) + ); + + // Handle positioning of the toggle + window.addEventListener( + "resize", + throttle(() => { + elRect = undefined; + positionToggle(); + }, 50) + ); + + window.addEventListener("quarto-hrChanged", () => { + elRect = undefined; + }); + + // Process the click + clickEl.onclick = () => { + if (!tocShowing) { + toggleContainer.classList.add("expanded"); + toggleContents.style.height = null; + tocShowing = true; + } else { + closeToggle(); + } + }; + }); + }; + + // Converts a sidebar from a menu back to a sidebar + const convertToSidebar = () => { + for (const child of el.children) { + child.style.opacity = 1; + child.style.overflow = null; + } + + const placeholderEl = window.document.getElementById( + placeholderDescriptor.id + ); + if (placeholderEl) { + placeholderEl.remove(); + } + + el.classList.remove("rollup"); + }; + + if (isReaderMode()) { + convertToMenu(); + isVisible = false; + } else { + // Find the top and bottom o the element that is being managed + const elTop = el.offsetTop; + const elBottom = + elTop + lastChildEl.offsetTop + lastChildEl.offsetHeight; + + if (!isVisible) { + // If the element is current not visible reveal if there are + // no conflicts with overlay regions + if (!inHiddenRegion(elTop, elBottom, hiddenRegions)) { + convertToSidebar(); + isVisible = true; + } + } else { + // If the element is visible, hide it if it conflicts with overlay regions + // and insert a placeholder toggle (or if we're in reader mode) + if (inHiddenRegion(elTop, elBottom, hiddenRegions)) { + convertToMenu(); + isVisible = false; + } + } + } + } + }; + }; + + const tabEls = document.querySelectorAll('a[data-bs-toggle="tab"]'); + for (const tabEl of tabEls) { + const id = tabEl.getAttribute("data-bs-target"); + if (id) { + const columnEl = document.querySelector( + `${id} .column-margin, .tabset-margin-content` + ); + if (columnEl) + tabEl.addEventListener("shown.bs.tab", function (event) { + const el = event.srcElement; + if (el) { + const visibleCls = `${el.id}-margin-content`; + // walk up until we find a parent tabset + let panelTabsetEl = el.parentElement; + while (panelTabsetEl) { + if (panelTabsetEl.classList.contains("panel-tabset")) { + break; + } + panelTabsetEl = panelTabsetEl.parentElement; + } + + if (panelTabsetEl) { + const prevSib = panelTabsetEl.previousElementSibling; + if ( + prevSib && + prevSib.classList.contains("tabset-margin-container") + ) { + const childNodes = prevSib.querySelectorAll( + ".tabset-margin-content" + ); + for (const childEl of childNodes) { + if (childEl.classList.contains(visibleCls)) { + childEl.classList.remove("collapse"); + } else { + childEl.classList.add("collapse"); + } + } + } + } + } + + layoutMarginEls(); + }); + } + } + + // Manage the visibility of the toc and the sidebar + const marginScrollVisibility = manageSidebarVisiblity(marginSidebarEl, { + id: "quarto-toc-toggle", + titleSelector: "#toc-title", + dismissOnClick: true, + }); + const sidebarScrollVisiblity = manageSidebarVisiblity(sidebarEl, { + id: "quarto-sidebarnav-toggle", + titleSelector: ".title", + dismissOnClick: false, + }); + let tocLeftScrollVisibility; + if (leftTocEl) { + tocLeftScrollVisibility = manageSidebarVisiblity(leftTocEl, { + id: "quarto-lefttoc-toggle", + titleSelector: "#toc-title", + dismissOnClick: true, + }); + } + + // Find the first element that uses formatting in special columns + const conflictingEls = window.document.body.querySelectorAll( + '[class^="column-"], [class*=" column-"], aside, [class*="margin-caption"], [class*=" margin-caption"], [class*="margin-ref"], [class*=" margin-ref"]' + ); + + // Filter all the possibly conflicting elements into ones + // the do conflict on the left or ride side + const arrConflictingEls = Array.from(conflictingEls); + const leftSideConflictEls = arrConflictingEls.filter((el) => { + if (el.tagName === "ASIDE") { + return false; + } + return Array.from(el.classList).find((className) => { + return ( + className !== "column-body" && + className.startsWith("column-") && + !className.endsWith("right") && + !className.endsWith("container") && + className !== "column-margin" + ); + }); + }); + const rightSideConflictEls = arrConflictingEls.filter((el) => { + if (el.tagName === "ASIDE") { + return true; + } + + const hasMarginCaption = Array.from(el.classList).find((className) => { + return className == "margin-caption"; + }); + if (hasMarginCaption) { + return true; + } + + return Array.from(el.classList).find((className) => { + return ( + className !== "column-body" && + !className.endsWith("container") && + className.startsWith("column-") && + !className.endsWith("left") + ); + }); + }); + + const kOverlapPaddingSize = 10; + function toRegions(els) { + return els.map((el) => { + const boundRect = el.getBoundingClientRect(); + const top = + boundRect.top + + document.documentElement.scrollTop - + kOverlapPaddingSize; + return { + top, + bottom: top + el.scrollHeight + 2 * kOverlapPaddingSize, + }; + }); + } + + let hasObserved = false; + const visibleItemObserver = (els) => { + let visibleElements = [...els]; + const intersectionObserver = new IntersectionObserver( + (entries, _observer) => { + entries.forEach((entry) => { + if (entry.isIntersecting) { + if (visibleElements.indexOf(entry.target) === -1) { + visibleElements.push(entry.target); + } + } else { + visibleElements = visibleElements.filter((visibleEntry) => { + return visibleEntry !== entry; + }); + } + }); + + if (!hasObserved) { + hideOverlappedSidebars(); + } + hasObserved = true; + }, + {} + ); + els.forEach((el) => { + intersectionObserver.observe(el); + }); + + return { + getVisibleEntries: () => { + return visibleElements; + }, + }; + }; + + const rightElementObserver = visibleItemObserver(rightSideConflictEls); + const leftElementObserver = visibleItemObserver(leftSideConflictEls); + + const hideOverlappedSidebars = () => { + marginScrollVisibility(toRegions(rightElementObserver.getVisibleEntries())); + sidebarScrollVisiblity(toRegions(leftElementObserver.getVisibleEntries())); + if (tocLeftScrollVisibility) { + tocLeftScrollVisibility( + toRegions(leftElementObserver.getVisibleEntries()) + ); + } + }; + + window.quartoToggleReader = () => { + // Applies a slow class (or removes it) + // to update the transition speed + const slowTransition = (slow) => { + const manageTransition = (id, slow) => { + const el = document.getElementById(id); + if (el) { + if (slow) { + el.classList.add("slow"); + } else { + el.classList.remove("slow"); + } + } + }; + + manageTransition("TOC", slow); + manageTransition("quarto-sidebar", slow); + }; + const readerMode = !isReaderMode(); + setReaderModeValue(readerMode); + + // If we're entering reader mode, slow the transition + if (readerMode) { + slowTransition(readerMode); + } + highlightReaderToggle(readerMode); + hideOverlappedSidebars(); + + // If we're exiting reader mode, restore the non-slow transition + if (!readerMode) { + slowTransition(!readerMode); + } + }; + + const highlightReaderToggle = (readerMode) => { + const els = document.querySelectorAll(".quarto-reader-toggle"); + if (els) { + els.forEach((el) => { + if (readerMode) { + el.classList.add("reader"); + } else { + el.classList.remove("reader"); + } + }); + } + }; + + const setReaderModeValue = (val) => { + if (window.location.protocol !== "file:") { + window.localStorage.setItem("quarto-reader-mode", val); + } else { + localReaderMode = val; + } + }; + + const isReaderMode = () => { + if (window.location.protocol !== "file:") { + return window.localStorage.getItem("quarto-reader-mode") === "true"; + } else { + return localReaderMode; + } + }; + let localReaderMode = null; + + const tocOpenDepthStr = tocEl?.getAttribute("data-toc-expanded"); + const tocOpenDepth = tocOpenDepthStr ? Number(tocOpenDepthStr) : 1; + + // Walk the TOC and collapse/expand nodes + // Nodes are expanded if: + // - they are top level + // - they have children that are 'active' links + // - they are directly below an link that is 'active' + const walk = (el, depth) => { + // Tick depth when we enter a UL + if (el.tagName === "UL") { + depth = depth + 1; + } + + // It this is active link + let isActiveNode = false; + if (el.tagName === "A" && el.classList.contains("active")) { + isActiveNode = true; + } + + // See if there is an active child to this element + let hasActiveChild = false; + for (child of el.children) { + hasActiveChild = walk(child, depth) || hasActiveChild; + } + + // Process the collapse state if this is an UL + if (el.tagName === "UL") { + if (tocOpenDepth === -1 && depth > 1) { + el.classList.add("collapse"); + } else if ( + depth <= tocOpenDepth || + hasActiveChild || + prevSiblingIsActiveLink(el) + ) { + el.classList.remove("collapse"); + } else { + el.classList.add("collapse"); + } + + // untick depth when we leave a UL + depth = depth - 1; + } + return hasActiveChild || isActiveNode; + }; + + // walk the TOC and expand / collapse any items that should be shown + + if (tocEl) { + walk(tocEl, 0); + updateActiveLink(); + } + + // Throttle the scroll event and walk peridiocally + window.document.addEventListener( + "scroll", + throttle(() => { + if (tocEl) { + updateActiveLink(); + walk(tocEl, 0); + } + if (!isReaderMode()) { + hideOverlappedSidebars(); + } + }, 5) + ); + window.addEventListener( + "resize", + throttle(() => { + if (!isReaderMode()) { + hideOverlappedSidebars(); + } + }, 10) + ); + hideOverlappedSidebars(); + highlightReaderToggle(isReaderMode()); +}); + +// grouped tabsets +window.addEventListener("pageshow", (_event) => { + function getTabSettings() { + const data = localStorage.getItem("quarto-persistent-tabsets-data"); + if (!data) { + localStorage.setItem("quarto-persistent-tabsets-data", "{}"); + return {}; + } + if (data) { + return JSON.parse(data); + } + } + + function setTabSettings(data) { + localStorage.setItem( + "quarto-persistent-tabsets-data", + JSON.stringify(data) + ); + } + + function setTabState(groupName, groupValue) { + const data = getTabSettings(); + data[groupName] = groupValue; + setTabSettings(data); + } + + function toggleTab(tab, active) { + const tabPanelId = tab.getAttribute("aria-controls"); + const tabPanel = document.getElementById(tabPanelId); + if (active) { + tab.classList.add("active"); + tabPanel.classList.add("active"); + } else { + tab.classList.remove("active"); + tabPanel.classList.remove("active"); + } + } + + function toggleAll(selectedGroup, selectorsToSync) { + for (const [thisGroup, tabs] of Object.entries(selectorsToSync)) { + const active = selectedGroup === thisGroup; + for (const tab of tabs) { + toggleTab(tab, active); + } + } + } + + function findSelectorsToSyncByLanguage() { + const result = {}; + const tabs = Array.from( + document.querySelectorAll(`div[data-group] a[id^='tabset-']`) + ); + for (const item of tabs) { + const div = item.parentElement.parentElement.parentElement; + const group = div.getAttribute("data-group"); + if (!result[group]) { + result[group] = {}; + } + const selectorsToSync = result[group]; + const value = item.innerHTML; + if (!selectorsToSync[value]) { + selectorsToSync[value] = []; + } + selectorsToSync[value].push(item); + } + return result; + } + + function setupSelectorSync() { + const selectorsToSync = findSelectorsToSyncByLanguage(); + Object.entries(selectorsToSync).forEach(([group, tabSetsByValue]) => { + Object.entries(tabSetsByValue).forEach(([value, items]) => { + items.forEach((item) => { + item.addEventListener("click", (_event) => { + setTabState(group, value); + toggleAll(value, selectorsToSync[group]); + }); + }); + }); + }); + return selectorsToSync; + } + + const selectorsToSync = setupSelectorSync(); + for (const [group, selectedName] of Object.entries(getTabSettings())) { + const selectors = selectorsToSync[group]; + // it's possible that stale state gives us empty selections, so we explicitly check here. + if (selectors) { + toggleAll(selectedName, selectors); + } + } +}); + +function throttle(func, wait) { + let waiting = false; + return function () { + if (!waiting) { + func.apply(this, arguments); + waiting = true; + setTimeout(function () { + waiting = false; + }, wait); + } + }; +} + +function nexttick(func) { + return setTimeout(func, 0); +} diff --git a/pr-preview/pr-46/site_libs/quarto-html/tippy.css b/pr-preview/pr-46/site_libs/quarto-html/tippy.css new file mode 100644 index 00000000..e6ae635c --- /dev/null +++ b/pr-preview/pr-46/site_libs/quarto-html/tippy.css @@ -0,0 +1 @@ +.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1} \ No newline at end of file diff --git a/pr-preview/pr-46/site_libs/quarto-html/tippy.umd.min.js b/pr-preview/pr-46/site_libs/quarto-html/tippy.umd.min.js new file mode 100644 index 00000000..ca292be3 --- /dev/null +++ b/pr-preview/pr-46/site_libs/quarto-html/tippy.umd.min.js @@ -0,0 +1,2 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("@popperjs/core")):"function"==typeof define&&define.amd?define(["@popperjs/core"],t):(e=e||self).tippy=t(e.Popper)}(this,(function(e){"use strict";var t={passive:!0,capture:!0},n=function(){return document.body};function r(e,t,n){if(Array.isArray(e)){var r=e[t];return null==r?Array.isArray(n)?n[t]:n:r}return e}function o(e,t){var n={}.toString.call(e);return 0===n.indexOf("[object")&&n.indexOf(t+"]")>-1}function i(e,t){return"function"==typeof e?e.apply(void 0,t):e}function a(e,t){return 0===t?e:function(r){clearTimeout(n),n=setTimeout((function(){e(r)}),t)};var n}function s(e,t){var n=Object.assign({},e);return t.forEach((function(e){delete n[e]})),n}function u(e){return[].concat(e)}function c(e,t){-1===e.indexOf(t)&&e.push(t)}function p(e){return e.split("-")[0]}function f(e){return[].slice.call(e)}function l(e){return Object.keys(e).reduce((function(t,n){return void 0!==e[n]&&(t[n]=e[n]),t}),{})}function d(){return document.createElement("div")}function v(e){return["Element","Fragment"].some((function(t){return o(e,t)}))}function m(e){return o(e,"MouseEvent")}function g(e){return!(!e||!e._tippy||e._tippy.reference!==e)}function h(e){return v(e)?[e]:function(e){return o(e,"NodeList")}(e)?f(e):Array.isArray(e)?e:f(document.querySelectorAll(e))}function b(e,t){e.forEach((function(e){e&&(e.style.transitionDuration=t+"ms")}))}function y(e,t){e.forEach((function(e){e&&e.setAttribute("data-state",t)}))}function w(e){var t,n=u(e)[0];return null!=n&&null!=(t=n.ownerDocument)&&t.body?n.ownerDocument:document}function E(e,t,n){var r=t+"EventListener";["transitionend","webkitTransitionEnd"].forEach((function(t){e[r](t,n)}))}function O(e,t){for(var n=t;n;){var r;if(e.contains(n))return!0;n=null==n.getRootNode||null==(r=n.getRootNode())?void 0:r.host}return!1}var x={isTouch:!1},C=0;function T(){x.isTouch||(x.isTouch=!0,window.performance&&document.addEventListener("mousemove",A))}function A(){var e=performance.now();e-C<20&&(x.isTouch=!1,document.removeEventListener("mousemove",A)),C=e}function L(){var e=document.activeElement;if(g(e)){var t=e._tippy;e.blur&&!t.state.isVisible&&e.blur()}}var D=!!("undefined"!=typeof window&&"undefined"!=typeof document)&&!!window.msCrypto,R=Object.assign({appendTo:n,aria:{content:"auto",expanded:"auto"},delay:0,duration:[300,250],getReferenceClientRect:null,hideOnClick:!0,ignoreAttributes:!1,interactive:!1,interactiveBorder:2,interactiveDebounce:0,moveTransition:"",offset:[0,10],onAfterUpdate:function(){},onBeforeUpdate:function(){},onCreate:function(){},onDestroy:function(){},onHidden:function(){},onHide:function(){},onMount:function(){},onShow:function(){},onShown:function(){},onTrigger:function(){},onUntrigger:function(){},onClickOutside:function(){},placement:"top",plugins:[],popperOptions:{},render:null,showOnCreate:!1,touch:!0,trigger:"mouseenter focus",triggerTarget:null},{animateFill:!1,followCursor:!1,inlinePositioning:!1,sticky:!1},{allowHTML:!1,animation:"fade",arrow:!0,content:"",inertia:!1,maxWidth:350,role:"tooltip",theme:"",zIndex:9999}),k=Object.keys(R);function P(e){var t=(e.plugins||[]).reduce((function(t,n){var r,o=n.name,i=n.defaultValue;o&&(t[o]=void 0!==e[o]?e[o]:null!=(r=R[o])?r:i);return t}),{});return Object.assign({},e,t)}function j(e,t){var n=Object.assign({},t,{content:i(t.content,[e])},t.ignoreAttributes?{}:function(e,t){return(t?Object.keys(P(Object.assign({},R,{plugins:t}))):k).reduce((function(t,n){var r=(e.getAttribute("data-tippy-"+n)||"").trim();if(!r)return t;if("content"===n)t[n]=r;else try{t[n]=JSON.parse(r)}catch(e){t[n]=r}return t}),{})}(e,t.plugins));return n.aria=Object.assign({},R.aria,n.aria),n.aria={expanded:"auto"===n.aria.expanded?t.interactive:n.aria.expanded,content:"auto"===n.aria.content?t.interactive?null:"describedby":n.aria.content},n}function M(e,t){e.innerHTML=t}function V(e){var t=d();return!0===e?t.className="tippy-arrow":(t.className="tippy-svg-arrow",v(e)?t.appendChild(e):M(t,e)),t}function I(e,t){v(t.content)?(M(e,""),e.appendChild(t.content)):"function"!=typeof t.content&&(t.allowHTML?M(e,t.content):e.textContent=t.content)}function S(e){var t=e.firstElementChild,n=f(t.children);return{box:t,content:n.find((function(e){return e.classList.contains("tippy-content")})),arrow:n.find((function(e){return e.classList.contains("tippy-arrow")||e.classList.contains("tippy-svg-arrow")})),backdrop:n.find((function(e){return e.classList.contains("tippy-backdrop")}))}}function N(e){var t=d(),n=d();n.className="tippy-box",n.setAttribute("data-state","hidden"),n.setAttribute("tabindex","-1");var r=d();function o(n,r){var o=S(t),i=o.box,a=o.content,s=o.arrow;r.theme?i.setAttribute("data-theme",r.theme):i.removeAttribute("data-theme"),"string"==typeof r.animation?i.setAttribute("data-animation",r.animation):i.removeAttribute("data-animation"),r.inertia?i.setAttribute("data-inertia",""):i.removeAttribute("data-inertia"),i.style.maxWidth="number"==typeof r.maxWidth?r.maxWidth+"px":r.maxWidth,r.role?i.setAttribute("role",r.role):i.removeAttribute("role"),n.content===r.content&&n.allowHTML===r.allowHTML||I(a,e.props),r.arrow?s?n.arrow!==r.arrow&&(i.removeChild(s),i.appendChild(V(r.arrow))):i.appendChild(V(r.arrow)):s&&i.removeChild(s)}return r.className="tippy-content",r.setAttribute("data-state","hidden"),I(r,e.props),t.appendChild(n),n.appendChild(r),o(e.props,e.props),{popper:t,onUpdate:o}}N.$$tippy=!0;var B=1,H=[],U=[];function _(o,s){var v,g,h,C,T,A,L,k,M=j(o,Object.assign({},R,P(l(s)))),V=!1,I=!1,N=!1,_=!1,F=[],W=a(we,M.interactiveDebounce),X=B++,Y=(k=M.plugins).filter((function(e,t){return k.indexOf(e)===t})),$={id:X,reference:o,popper:d(),popperInstance:null,props:M,state:{isEnabled:!0,isVisible:!1,isDestroyed:!1,isMounted:!1,isShown:!1},plugins:Y,clearDelayTimeouts:function(){clearTimeout(v),clearTimeout(g),cancelAnimationFrame(h)},setProps:function(e){if($.state.isDestroyed)return;ae("onBeforeUpdate",[$,e]),be();var t=$.props,n=j(o,Object.assign({},t,l(e),{ignoreAttributes:!0}));$.props=n,he(),t.interactiveDebounce!==n.interactiveDebounce&&(ce(),W=a(we,n.interactiveDebounce));t.triggerTarget&&!n.triggerTarget?u(t.triggerTarget).forEach((function(e){e.removeAttribute("aria-expanded")})):n.triggerTarget&&o.removeAttribute("aria-expanded");ue(),ie(),J&&J(t,n);$.popperInstance&&(Ce(),Ae().forEach((function(e){requestAnimationFrame(e._tippy.popperInstance.forceUpdate)})));ae("onAfterUpdate",[$,e])},setContent:function(e){$.setProps({content:e})},show:function(){var e=$.state.isVisible,t=$.state.isDestroyed,o=!$.state.isEnabled,a=x.isTouch&&!$.props.touch,s=r($.props.duration,0,R.duration);if(e||t||o||a)return;if(te().hasAttribute("disabled"))return;if(ae("onShow",[$],!1),!1===$.props.onShow($))return;$.state.isVisible=!0,ee()&&(z.style.visibility="visible");ie(),de(),$.state.isMounted||(z.style.transition="none");if(ee()){var u=re(),p=u.box,f=u.content;b([p,f],0)}A=function(){var e;if($.state.isVisible&&!_){if(_=!0,z.offsetHeight,z.style.transition=$.props.moveTransition,ee()&&$.props.animation){var t=re(),n=t.box,r=t.content;b([n,r],s),y([n,r],"visible")}se(),ue(),c(U,$),null==(e=$.popperInstance)||e.forceUpdate(),ae("onMount",[$]),$.props.animation&&ee()&&function(e,t){me(e,t)}(s,(function(){$.state.isShown=!0,ae("onShown",[$])}))}},function(){var e,t=$.props.appendTo,r=te();e=$.props.interactive&&t===n||"parent"===t?r.parentNode:i(t,[r]);e.contains(z)||e.appendChild(z);$.state.isMounted=!0,Ce()}()},hide:function(){var e=!$.state.isVisible,t=$.state.isDestroyed,n=!$.state.isEnabled,o=r($.props.duration,1,R.duration);if(e||t||n)return;if(ae("onHide",[$],!1),!1===$.props.onHide($))return;$.state.isVisible=!1,$.state.isShown=!1,_=!1,V=!1,ee()&&(z.style.visibility="hidden");if(ce(),ve(),ie(!0),ee()){var i=re(),a=i.box,s=i.content;$.props.animation&&(b([a,s],o),y([a,s],"hidden"))}se(),ue(),$.props.animation?ee()&&function(e,t){me(e,(function(){!$.state.isVisible&&z.parentNode&&z.parentNode.contains(z)&&t()}))}(o,$.unmount):$.unmount()},hideWithInteractivity:function(e){ne().addEventListener("mousemove",W),c(H,W),W(e)},enable:function(){$.state.isEnabled=!0},disable:function(){$.hide(),$.state.isEnabled=!1},unmount:function(){$.state.isVisible&&$.hide();if(!$.state.isMounted)return;Te(),Ae().forEach((function(e){e._tippy.unmount()})),z.parentNode&&z.parentNode.removeChild(z);U=U.filter((function(e){return e!==$})),$.state.isMounted=!1,ae("onHidden",[$])},destroy:function(){if($.state.isDestroyed)return;$.clearDelayTimeouts(),$.unmount(),be(),delete o._tippy,$.state.isDestroyed=!0,ae("onDestroy",[$])}};if(!M.render)return $;var q=M.render($),z=q.popper,J=q.onUpdate;z.setAttribute("data-tippy-root",""),z.id="tippy-"+$.id,$.popper=z,o._tippy=$,z._tippy=$;var G=Y.map((function(e){return e.fn($)})),K=o.hasAttribute("aria-expanded");return he(),ue(),ie(),ae("onCreate",[$]),M.showOnCreate&&Le(),z.addEventListener("mouseenter",(function(){$.props.interactive&&$.state.isVisible&&$.clearDelayTimeouts()})),z.addEventListener("mouseleave",(function(){$.props.interactive&&$.props.trigger.indexOf("mouseenter")>=0&&ne().addEventListener("mousemove",W)})),$;function Q(){var e=$.props.touch;return Array.isArray(e)?e:[e,0]}function Z(){return"hold"===Q()[0]}function ee(){var e;return!(null==(e=$.props.render)||!e.$$tippy)}function te(){return L||o}function ne(){var e=te().parentNode;return e?w(e):document}function re(){return S(z)}function oe(e){return $.state.isMounted&&!$.state.isVisible||x.isTouch||C&&"focus"===C.type?0:r($.props.delay,e?0:1,R.delay)}function ie(e){void 0===e&&(e=!1),z.style.pointerEvents=$.props.interactive&&!e?"":"none",z.style.zIndex=""+$.props.zIndex}function ae(e,t,n){var r;(void 0===n&&(n=!0),G.forEach((function(n){n[e]&&n[e].apply(n,t)})),n)&&(r=$.props)[e].apply(r,t)}function se(){var e=$.props.aria;if(e.content){var t="aria-"+e.content,n=z.id;u($.props.triggerTarget||o).forEach((function(e){var r=e.getAttribute(t);if($.state.isVisible)e.setAttribute(t,r?r+" "+n:n);else{var o=r&&r.replace(n,"").trim();o?e.setAttribute(t,o):e.removeAttribute(t)}}))}}function ue(){!K&&$.props.aria.expanded&&u($.props.triggerTarget||o).forEach((function(e){$.props.interactive?e.setAttribute("aria-expanded",$.state.isVisible&&e===te()?"true":"false"):e.removeAttribute("aria-expanded")}))}function ce(){ne().removeEventListener("mousemove",W),H=H.filter((function(e){return e!==W}))}function pe(e){if(!x.isTouch||!N&&"mousedown"!==e.type){var t=e.composedPath&&e.composedPath()[0]||e.target;if(!$.props.interactive||!O(z,t)){if(u($.props.triggerTarget||o).some((function(e){return O(e,t)}))){if(x.isTouch)return;if($.state.isVisible&&$.props.trigger.indexOf("click")>=0)return}else ae("onClickOutside",[$,e]);!0===$.props.hideOnClick&&($.clearDelayTimeouts(),$.hide(),I=!0,setTimeout((function(){I=!1})),$.state.isMounted||ve())}}}function fe(){N=!0}function le(){N=!1}function de(){var e=ne();e.addEventListener("mousedown",pe,!0),e.addEventListener("touchend",pe,t),e.addEventListener("touchstart",le,t),e.addEventListener("touchmove",fe,t)}function ve(){var e=ne();e.removeEventListener("mousedown",pe,!0),e.removeEventListener("touchend",pe,t),e.removeEventListener("touchstart",le,t),e.removeEventListener("touchmove",fe,t)}function me(e,t){var n=re().box;function r(e){e.target===n&&(E(n,"remove",r),t())}if(0===e)return t();E(n,"remove",T),E(n,"add",r),T=r}function ge(e,t,n){void 0===n&&(n=!1),u($.props.triggerTarget||o).forEach((function(r){r.addEventListener(e,t,n),F.push({node:r,eventType:e,handler:t,options:n})}))}function he(){var e;Z()&&(ge("touchstart",ye,{passive:!0}),ge("touchend",Ee,{passive:!0})),(e=$.props.trigger,e.split(/\s+/).filter(Boolean)).forEach((function(e){if("manual"!==e)switch(ge(e,ye),e){case"mouseenter":ge("mouseleave",Ee);break;case"focus":ge(D?"focusout":"blur",Oe);break;case"focusin":ge("focusout",Oe)}}))}function be(){F.forEach((function(e){var t=e.node,n=e.eventType,r=e.handler,o=e.options;t.removeEventListener(n,r,o)})),F=[]}function ye(e){var t,n=!1;if($.state.isEnabled&&!xe(e)&&!I){var r="focus"===(null==(t=C)?void 0:t.type);C=e,L=e.currentTarget,ue(),!$.state.isVisible&&m(e)&&H.forEach((function(t){return t(e)})),"click"===e.type&&($.props.trigger.indexOf("mouseenter")<0||V)&&!1!==$.props.hideOnClick&&$.state.isVisible?n=!0:Le(e),"click"===e.type&&(V=!n),n&&!r&&De(e)}}function we(e){var t=e.target,n=te().contains(t)||z.contains(t);"mousemove"===e.type&&n||function(e,t){var n=t.clientX,r=t.clientY;return e.every((function(e){var t=e.popperRect,o=e.popperState,i=e.props.interactiveBorder,a=p(o.placement),s=o.modifiersData.offset;if(!s)return!0;var u="bottom"===a?s.top.y:0,c="top"===a?s.bottom.y:0,f="right"===a?s.left.x:0,l="left"===a?s.right.x:0,d=t.top-r+u>i,v=r-t.bottom-c>i,m=t.left-n+f>i,g=n-t.right-l>i;return d||v||m||g}))}(Ae().concat(z).map((function(e){var t,n=null==(t=e._tippy.popperInstance)?void 0:t.state;return n?{popperRect:e.getBoundingClientRect(),popperState:n,props:M}:null})).filter(Boolean),e)&&(ce(),De(e))}function Ee(e){xe(e)||$.props.trigger.indexOf("click")>=0&&V||($.props.interactive?$.hideWithInteractivity(e):De(e))}function Oe(e){$.props.trigger.indexOf("focusin")<0&&e.target!==te()||$.props.interactive&&e.relatedTarget&&z.contains(e.relatedTarget)||De(e)}function xe(e){return!!x.isTouch&&Z()!==e.type.indexOf("touch")>=0}function Ce(){Te();var t=$.props,n=t.popperOptions,r=t.placement,i=t.offset,a=t.getReferenceClientRect,s=t.moveTransition,u=ee()?S(z).arrow:null,c=a?{getBoundingClientRect:a,contextElement:a.contextElement||te()}:o,p=[{name:"offset",options:{offset:i}},{name:"preventOverflow",options:{padding:{top:2,bottom:2,left:5,right:5}}},{name:"flip",options:{padding:5}},{name:"computeStyles",options:{adaptive:!s}},{name:"$$tippy",enabled:!0,phase:"beforeWrite",requires:["computeStyles"],fn:function(e){var t=e.state;if(ee()){var n=re().box;["placement","reference-hidden","escaped"].forEach((function(e){"placement"===e?n.setAttribute("data-placement",t.placement):t.attributes.popper["data-popper-"+e]?n.setAttribute("data-"+e,""):n.removeAttribute("data-"+e)})),t.attributes.popper={}}}}];ee()&&u&&p.push({name:"arrow",options:{element:u,padding:3}}),p.push.apply(p,(null==n?void 0:n.modifiers)||[]),$.popperInstance=e.createPopper(c,z,Object.assign({},n,{placement:r,onFirstUpdate:A,modifiers:p}))}function Te(){$.popperInstance&&($.popperInstance.destroy(),$.popperInstance=null)}function Ae(){return f(z.querySelectorAll("[data-tippy-root]"))}function Le(e){$.clearDelayTimeouts(),e&&ae("onTrigger",[$,e]),de();var t=oe(!0),n=Q(),r=n[0],o=n[1];x.isTouch&&"hold"===r&&o&&(t=o),t?v=setTimeout((function(){$.show()}),t):$.show()}function De(e){if($.clearDelayTimeouts(),ae("onUntrigger",[$,e]),$.state.isVisible){if(!($.props.trigger.indexOf("mouseenter")>=0&&$.props.trigger.indexOf("click")>=0&&["mouseleave","mousemove"].indexOf(e.type)>=0&&V)){var t=oe(!1);t?g=setTimeout((function(){$.state.isVisible&&$.hide()}),t):h=requestAnimationFrame((function(){$.hide()}))}}else ve()}}function F(e,n){void 0===n&&(n={});var r=R.plugins.concat(n.plugins||[]);document.addEventListener("touchstart",T,t),window.addEventListener("blur",L);var o=Object.assign({},n,{plugins:r}),i=h(e).reduce((function(e,t){var n=t&&_(t,o);return n&&e.push(n),e}),[]);return v(e)?i[0]:i}F.defaultProps=R,F.setDefaultProps=function(e){Object.keys(e).forEach((function(t){R[t]=e[t]}))},F.currentInput=x;var W=Object.assign({},e.applyStyles,{effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow)}}),X={mouseover:"mouseenter",focusin:"focus",click:"click"};var Y={name:"animateFill",defaultValue:!1,fn:function(e){var t;if(null==(t=e.props.render)||!t.$$tippy)return{};var n=S(e.popper),r=n.box,o=n.content,i=e.props.animateFill?function(){var e=d();return e.className="tippy-backdrop",y([e],"hidden"),e}():null;return{onCreate:function(){i&&(r.insertBefore(i,r.firstElementChild),r.setAttribute("data-animatefill",""),r.style.overflow="hidden",e.setProps({arrow:!1,animation:"shift-away"}))},onMount:function(){if(i){var e=r.style.transitionDuration,t=Number(e.replace("ms",""));o.style.transitionDelay=Math.round(t/10)+"ms",i.style.transitionDuration=e,y([i],"visible")}},onShow:function(){i&&(i.style.transitionDuration="0ms")},onHide:function(){i&&y([i],"hidden")}}}};var $={clientX:0,clientY:0},q=[];function z(e){var t=e.clientX,n=e.clientY;$={clientX:t,clientY:n}}var J={name:"followCursor",defaultValue:!1,fn:function(e){var t=e.reference,n=w(e.props.triggerTarget||t),r=!1,o=!1,i=!0,a=e.props;function s(){return"initial"===e.props.followCursor&&e.state.isVisible}function u(){n.addEventListener("mousemove",f)}function c(){n.removeEventListener("mousemove",f)}function p(){r=!0,e.setProps({getReferenceClientRect:null}),r=!1}function f(n){var r=!n.target||t.contains(n.target),o=e.props.followCursor,i=n.clientX,a=n.clientY,s=t.getBoundingClientRect(),u=i-s.left,c=a-s.top;!r&&e.props.interactive||e.setProps({getReferenceClientRect:function(){var e=t.getBoundingClientRect(),n=i,r=a;"initial"===o&&(n=e.left+u,r=e.top+c);var s="horizontal"===o?e.top:r,p="vertical"===o?e.right:n,f="horizontal"===o?e.bottom:r,l="vertical"===o?e.left:n;return{width:p-l,height:f-s,top:s,right:p,bottom:f,left:l}}})}function l(){e.props.followCursor&&(q.push({instance:e,doc:n}),function(e){e.addEventListener("mousemove",z)}(n))}function d(){0===(q=q.filter((function(t){return t.instance!==e}))).filter((function(e){return e.doc===n})).length&&function(e){e.removeEventListener("mousemove",z)}(n)}return{onCreate:l,onDestroy:d,onBeforeUpdate:function(){a=e.props},onAfterUpdate:function(t,n){var i=n.followCursor;r||void 0!==i&&a.followCursor!==i&&(d(),i?(l(),!e.state.isMounted||o||s()||u()):(c(),p()))},onMount:function(){e.props.followCursor&&!o&&(i&&(f($),i=!1),s()||u())},onTrigger:function(e,t){m(t)&&($={clientX:t.clientX,clientY:t.clientY}),o="focus"===t.type},onHidden:function(){e.props.followCursor&&(p(),c(),i=!0)}}}};var G={name:"inlinePositioning",defaultValue:!1,fn:function(e){var t,n=e.reference;var r=-1,o=!1,i=[],a={name:"tippyInlinePositioning",enabled:!0,phase:"afterWrite",fn:function(o){var a=o.state;e.props.inlinePositioning&&(-1!==i.indexOf(a.placement)&&(i=[]),t!==a.placement&&-1===i.indexOf(a.placement)&&(i.push(a.placement),e.setProps({getReferenceClientRect:function(){return function(e){return function(e,t,n,r){if(n.length<2||null===e)return t;if(2===n.length&&r>=0&&n[0].left>n[1].right)return n[r]||t;switch(e){case"top":case"bottom":var o=n[0],i=n[n.length-1],a="top"===e,s=o.top,u=i.bottom,c=a?o.left:i.left,p=a?o.right:i.right;return{top:s,bottom:u,left:c,right:p,width:p-c,height:u-s};case"left":case"right":var f=Math.min.apply(Math,n.map((function(e){return e.left}))),l=Math.max.apply(Math,n.map((function(e){return e.right}))),d=n.filter((function(t){return"left"===e?t.left===f:t.right===l})),v=d[0].top,m=d[d.length-1].bottom;return{top:v,bottom:m,left:f,right:l,width:l-f,height:m-v};default:return t}}(p(e),n.getBoundingClientRect(),f(n.getClientRects()),r)}(a.placement)}})),t=a.placement)}};function s(){var t;o||(t=function(e,t){var n;return{popperOptions:Object.assign({},e.popperOptions,{modifiers:[].concat(((null==(n=e.popperOptions)?void 0:n.modifiers)||[]).filter((function(e){return e.name!==t.name})),[t])})}}(e.props,a),o=!0,e.setProps(t),o=!1)}return{onCreate:s,onAfterUpdate:s,onTrigger:function(t,n){if(m(n)){var o=f(e.reference.getClientRects()),i=o.find((function(e){return e.left-2<=n.clientX&&e.right+2>=n.clientX&&e.top-2<=n.clientY&&e.bottom+2>=n.clientY})),a=o.indexOf(i);r=a>-1?a:r}},onHidden:function(){r=-1}}}};var K={name:"sticky",defaultValue:!1,fn:function(e){var t=e.reference,n=e.popper;function r(t){return!0===e.props.sticky||e.props.sticky===t}var o=null,i=null;function a(){var s=r("reference")?(e.popperInstance?e.popperInstance.state.elements.reference:t).getBoundingClientRect():null,u=r("popper")?n.getBoundingClientRect():null;(s&&Q(o,s)||u&&Q(i,u))&&e.popperInstance&&e.popperInstance.update(),o=s,i=u,e.state.isMounted&&requestAnimationFrame(a)}return{onMount:function(){e.props.sticky&&a()}}}};function Q(e,t){return!e||!t||(e.top!==t.top||e.right!==t.right||e.bottom!==t.bottom||e.left!==t.left)}return F.setDefaultProps({plugins:[Y,J,G,K],render:N}),F.createSingleton=function(e,t){var n;void 0===t&&(t={});var r,o=e,i=[],a=[],c=t.overrides,p=[],f=!1;function l(){a=o.map((function(e){return u(e.props.triggerTarget||e.reference)})).reduce((function(e,t){return e.concat(t)}),[])}function v(){i=o.map((function(e){return e.reference}))}function m(e){o.forEach((function(t){e?t.enable():t.disable()}))}function g(e){return o.map((function(t){var n=t.setProps;return t.setProps=function(o){n(o),t.reference===r&&e.setProps(o)},function(){t.setProps=n}}))}function h(e,t){var n=a.indexOf(t);if(t!==r){r=t;var s=(c||[]).concat("content").reduce((function(e,t){return e[t]=o[n].props[t],e}),{});e.setProps(Object.assign({},s,{getReferenceClientRect:"function"==typeof s.getReferenceClientRect?s.getReferenceClientRect:function(){var e;return null==(e=i[n])?void 0:e.getBoundingClientRect()}}))}}m(!1),v(),l();var b={fn:function(){return{onDestroy:function(){m(!0)},onHidden:function(){r=null},onClickOutside:function(e){e.props.showOnCreate&&!f&&(f=!0,r=null)},onShow:function(e){e.props.showOnCreate&&!f&&(f=!0,h(e,i[0]))},onTrigger:function(e,t){h(e,t.currentTarget)}}}},y=F(d(),Object.assign({},s(t,["overrides"]),{plugins:[b].concat(t.plugins||[]),triggerTarget:a,popperOptions:Object.assign({},t.popperOptions,{modifiers:[].concat((null==(n=t.popperOptions)?void 0:n.modifiers)||[],[W])})})),w=y.show;y.show=function(e){if(w(),!r&&null==e)return h(y,i[0]);if(!r||null!=e){if("number"==typeof e)return i[e]&&h(y,i[e]);if(o.indexOf(e)>=0){var t=e.reference;return h(y,t)}return i.indexOf(e)>=0?h(y,e):void 0}},y.showNext=function(){var e=i[0];if(!r)return y.show(0);var t=i.indexOf(r);y.show(i[t+1]||e)},y.showPrevious=function(){var e=i[i.length-1];if(!r)return y.show(e);var t=i.indexOf(r),n=i[t-1]||e;y.show(n)};var E=y.setProps;return y.setProps=function(e){c=e.overrides||c,E(e)},y.setInstances=function(e){m(!0),p.forEach((function(e){return e()})),o=e,m(!1),v(),l(),p=g(y),y.setProps({triggerTarget:a})},p=g(y),y},F.delegate=function(e,n){var r=[],o=[],i=!1,a=n.target,c=s(n,["target"]),p=Object.assign({},c,{trigger:"manual",touch:!1}),f=Object.assign({touch:R.touch},c,{showOnCreate:!0}),l=F(e,p);function d(e){if(e.target&&!i){var t=e.target.closest(a);if(t){var r=t.getAttribute("data-tippy-trigger")||n.trigger||R.trigger;if(!t._tippy&&!("touchstart"===e.type&&"boolean"==typeof f.touch||"touchstart"!==e.type&&r.indexOf(X[e.type])<0)){var s=F(t,f);s&&(o=o.concat(s))}}}}function v(e,t,n,o){void 0===o&&(o=!1),e.addEventListener(t,n,o),r.push({node:e,eventType:t,handler:n,options:o})}return u(l).forEach((function(e){var n=e.destroy,a=e.enable,s=e.disable;e.destroy=function(e){void 0===e&&(e=!0),e&&o.forEach((function(e){e.destroy()})),o=[],r.forEach((function(e){var t=e.node,n=e.eventType,r=e.handler,o=e.options;t.removeEventListener(n,r,o)})),r=[],n()},e.enable=function(){a(),o.forEach((function(e){return e.enable()})),i=!1},e.disable=function(){s(),o.forEach((function(e){return e.disable()})),i=!0},function(e){var n=e.reference;v(n,"touchstart",d,t),v(n,"mouseover",d),v(n,"focusin",d),v(n,"click",d)}(e)})),l},F.hideAll=function(e){var t=void 0===e?{}:e,n=t.exclude,r=t.duration;U.forEach((function(e){var t=!1;if(n&&(t=g(n)?e.reference===n:e.popper===n.popper),!t){var o=e.props.duration;e.setProps({duration:r}),e.hide(),e.state.isDestroyed||e.setProps({duration:o})}}))},F.roundArrow='',F})); + diff --git a/pr-preview/pr-46/site_libs/quarto-nav/quarto-nav.js b/pr-preview/pr-46/site_libs/quarto-nav/quarto-nav.js new file mode 100644 index 00000000..3b21201f --- /dev/null +++ b/pr-preview/pr-46/site_libs/quarto-nav/quarto-nav.js @@ -0,0 +1,277 @@ +const headroomChanged = new CustomEvent("quarto-hrChanged", { + detail: {}, + bubbles: true, + cancelable: false, + composed: false, +}); + +window.document.addEventListener("DOMContentLoaded", function () { + let init = false; + + // Manage the back to top button, if one is present. + let lastScrollTop = window.pageYOffset || document.documentElement.scrollTop; + const scrollDownBuffer = 5; + const scrollUpBuffer = 35; + const btn = document.getElementById("quarto-back-to-top"); + const hideBackToTop = () => { + btn.style.display = "none"; + }; + const showBackToTop = () => { + btn.style.display = "inline-block"; + }; + if (btn) { + window.document.addEventListener( + "scroll", + function () { + const currentScrollTop = + window.pageYOffset || document.documentElement.scrollTop; + + // Shows and hides the button 'intelligently' as the user scrolls + if (currentScrollTop - scrollDownBuffer > lastScrollTop) { + hideBackToTop(); + lastScrollTop = currentScrollTop <= 0 ? 0 : currentScrollTop; + } else if (currentScrollTop < lastScrollTop - scrollUpBuffer) { + showBackToTop(); + lastScrollTop = currentScrollTop <= 0 ? 0 : currentScrollTop; + } + + // Show the button at the bottom, hides it at the top + if (currentScrollTop <= 0) { + hideBackToTop(); + } else if ( + window.innerHeight + currentScrollTop >= + document.body.offsetHeight + ) { + showBackToTop(); + } + }, + false + ); + } + + function throttle(func, wait) { + var timeout; + return function () { + const context = this; + const args = arguments; + const later = function () { + clearTimeout(timeout); + timeout = null; + func.apply(context, args); + }; + + if (!timeout) { + timeout = setTimeout(later, wait); + } + }; + } + + function headerOffset() { + // Set an offset if there is are fixed top navbar + const headerEl = window.document.querySelector("header.fixed-top"); + if (headerEl) { + return headerEl.clientHeight; + } else { + return 0; + } + } + + function footerOffset() { + const footerEl = window.document.querySelector("footer.footer"); + if (footerEl) { + return footerEl.clientHeight; + } else { + return 0; + } + } + + function updateDocumentOffsetWithoutAnimation() { + updateDocumentOffset(false); + } + + function updateDocumentOffset(animated) { + // set body offset + const topOffset = headerOffset(); + const bodyOffset = topOffset + footerOffset(); + const bodyEl = window.document.body; + bodyEl.setAttribute("data-bs-offset", topOffset); + bodyEl.style.paddingTop = topOffset + "px"; + + // deal with sidebar offsets + const sidebars = window.document.querySelectorAll( + ".sidebar, .headroom-target" + ); + sidebars.forEach((sidebar) => { + if (!animated) { + sidebar.classList.add("notransition"); + // Remove the no transition class after the animation has time to complete + setTimeout(function () { + sidebar.classList.remove("notransition"); + }, 201); + } + + if (window.Headroom && sidebar.classList.contains("sidebar-unpinned")) { + sidebar.style.top = "0"; + sidebar.style.maxHeight = "100vh"; + } else { + sidebar.style.top = topOffset + "px"; + sidebar.style.maxHeight = "calc(100vh - " + topOffset + "px)"; + } + }); + + // allow space for footer + const mainContainer = window.document.querySelector(".quarto-container"); + if (mainContainer) { + mainContainer.style.minHeight = "calc(100vh - " + bodyOffset + "px)"; + } + + // link offset + let linkStyle = window.document.querySelector("#quarto-target-style"); + if (!linkStyle) { + linkStyle = window.document.createElement("style"); + linkStyle.setAttribute("id", "quarto-target-style"); + window.document.head.appendChild(linkStyle); + } + while (linkStyle.firstChild) { + linkStyle.removeChild(linkStyle.firstChild); + } + if (topOffset > 0) { + linkStyle.appendChild( + window.document.createTextNode(` + section:target::before { + content: ""; + display: block; + height: ${topOffset}px; + margin: -${topOffset}px 0 0; + }`) + ); + } + if (init) { + window.dispatchEvent(headroomChanged); + } + init = true; + } + + // initialize headroom + var header = window.document.querySelector("#quarto-header"); + if (header && window.Headroom) { + const headroom = new window.Headroom(header, { + tolerance: 5, + onPin: function () { + const sidebars = window.document.querySelectorAll( + ".sidebar, .headroom-target" + ); + sidebars.forEach((sidebar) => { + sidebar.classList.remove("sidebar-unpinned"); + }); + updateDocumentOffset(); + }, + onUnpin: function () { + const sidebars = window.document.querySelectorAll( + ".sidebar, .headroom-target" + ); + sidebars.forEach((sidebar) => { + sidebar.classList.add("sidebar-unpinned"); + }); + updateDocumentOffset(); + }, + }); + headroom.init(); + + let frozen = false; + window.quartoToggleHeadroom = function () { + if (frozen) { + headroom.unfreeze(); + frozen = false; + } else { + headroom.freeze(); + frozen = true; + } + }; + } + + window.addEventListener( + "hashchange", + function (e) { + if ( + getComputedStyle(document.documentElement).scrollBehavior !== "smooth" + ) { + window.scrollTo(0, window.pageYOffset - headerOffset()); + } + }, + false + ); + + // Observe size changed for the header + const headerEl = window.document.querySelector("header.fixed-top"); + if (headerEl && window.ResizeObserver) { + const observer = new window.ResizeObserver( + updateDocumentOffsetWithoutAnimation + ); + observer.observe(headerEl, { + attributes: true, + childList: true, + characterData: true, + }); + } else { + window.addEventListener( + "resize", + throttle(updateDocumentOffsetWithoutAnimation, 50) + ); + } + setTimeout(updateDocumentOffsetWithoutAnimation, 250); + + // fixup index.html links if we aren't on the filesystem + if (window.location.protocol !== "file:") { + const links = window.document.querySelectorAll("a"); + for (let i = 0; i < links.length; i++) { + if (links[i].href) { + links[i].href = links[i].href.replace(/\/index\.html/, "/"); + } + } + + // Fixup any sharing links that require urls + // Append url to any sharing urls + const sharingLinks = window.document.querySelectorAll( + "a.sidebar-tools-main-item" + ); + for (let i = 0; i < sharingLinks.length; i++) { + const sharingLink = sharingLinks[i]; + const href = sharingLink.getAttribute("href"); + if (href) { + sharingLink.setAttribute( + "href", + href.replace("|url|", window.location.href) + ); + } + } + + // Scroll the active navigation item into view, if necessary + const navSidebar = window.document.querySelector("nav#quarto-sidebar"); + if (navSidebar) { + // Find the active item + const activeItem = navSidebar.querySelector("li.sidebar-item a.active"); + if (activeItem) { + // Wait for the scroll height and height to resolve by observing size changes on the + // nav element that is scrollable + const resizeObserver = new ResizeObserver((_entries) => { + // The bottom of the element + const elBottom = activeItem.offsetTop; + const viewBottom = navSidebar.scrollTop + navSidebar.clientHeight; + + // The element height and scroll height are the same, then we are still loading + if (viewBottom !== navSidebar.scrollHeight) { + // Determine if the item isn't visible and scroll to it + if (elBottom >= viewBottom) { + navSidebar.scrollTop = elBottom; + } + + // stop observing now since we've completed the scroll + resizeObserver.unobserve(navSidebar); + } + }); + resizeObserver.observe(navSidebar); + } + } + } +}); diff --git a/pr-preview/pr-46/site_libs/quarto-search/autocomplete.umd.js b/pr-preview/pr-46/site_libs/quarto-search/autocomplete.umd.js new file mode 100644 index 00000000..619c57cc --- /dev/null +++ b/pr-preview/pr-46/site_libs/quarto-search/autocomplete.umd.js @@ -0,0 +1,3 @@ +/*! @algolia/autocomplete-js 1.7.3 | MIT License | © Algolia, Inc. and contributors | https://github.com/algolia/autocomplete */ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["@algolia/autocomplete-js"]={})}(this,(function(e){"use strict";function t(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function n(e){for(var n=1;n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function a(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==n)return;var r,o,i=[],u=!0,a=!1;try{for(n=n.call(e);!(u=(r=n.next()).done)&&(i.push(r.value),!t||i.length!==t);u=!0);}catch(e){a=!0,o=e}finally{try{u||null==n.return||n.return()}finally{if(a)throw o}}return i}(e,t)||l(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function c(e){return function(e){if(Array.isArray(e))return s(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||l(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function l(e,t){if(e){if("string"==typeof e)return s(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?s(e,t):void 0}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n=n?null===r?null:0:o}function S(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function I(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function E(e,t){var n=[];return Promise.resolve(e(t)).then((function(e){return Promise.all(e.filter((function(e){return Boolean(e)})).map((function(e){if(e.sourceId,n.includes(e.sourceId))throw new Error("[Autocomplete] The `sourceId` ".concat(JSON.stringify(e.sourceId)," is not unique."));n.push(e.sourceId);var t=function(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);ne.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var ae,ce,le,se=null,pe=(ae=-1,ce=-1,le=void 0,function(e){var t=++ae;return Promise.resolve(e).then((function(e){return le&&t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var ye=["props","refresh","store"],be=["inputElement","formElement","panelElement"],Oe=["inputElement"],_e=["inputElement","maxLength"],Pe=["item","source"];function je(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function we(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function Ee(e){var t=e.props,n=e.refresh,r=e.store,o=Ie(e,ye);return{getEnvironmentProps:function(e){var n=e.inputElement,o=e.formElement,i=e.panelElement;function u(e){!r.getState().isOpen&&r.pendingRequests.isEmpty()||e.target===n||!1===[o,i].some((function(t){return n=t,r=e.target,n===r||n.contains(r);var n,r}))&&(r.dispatch("blur",null),t.debug||r.pendingRequests.cancelAll())}return we({onTouchStart:u,onMouseDown:u,onTouchMove:function(e){!1!==r.getState().isOpen&&n===t.environment.document.activeElement&&e.target!==n&&n.blur()}},Ie(e,be))},getRootProps:function(e){return we({role:"combobox","aria-expanded":r.getState().isOpen,"aria-haspopup":"listbox","aria-owns":r.getState().isOpen?"".concat(t.id,"-list"):void 0,"aria-labelledby":"".concat(t.id,"-label")},e)},getFormProps:function(e){return e.inputElement,we({action:"",noValidate:!0,role:"search",onSubmit:function(i){var u;i.preventDefault(),t.onSubmit(we({event:i,refresh:n,state:r.getState()},o)),r.dispatch("submit",null),null===(u=e.inputElement)||void 0===u||u.blur()},onReset:function(i){var u;i.preventDefault(),t.onReset(we({event:i,refresh:n,state:r.getState()},o)),r.dispatch("reset",null),null===(u=e.inputElement)||void 0===u||u.focus()}},Ie(e,Oe))},getLabelProps:function(e){return we({htmlFor:"".concat(t.id,"-input"),id:"".concat(t.id,"-label")},e)},getInputProps:function(e){var i;function u(e){(t.openOnFocus||Boolean(r.getState().query))&&fe(we({event:e,props:t,query:r.getState().completion||r.getState().query,refresh:n,store:r},o)),r.dispatch("focus",null)}var a=e||{};a.inputElement;var c=a.maxLength,l=void 0===c?512:c,s=Ie(a,_e),p=A(r.getState()),f=function(e){return Boolean(e&&e.match(C))}((null===(i=t.environment.navigator)||void 0===i?void 0:i.userAgent)||""),d=null!=p&&p.itemUrl&&!f?"go":"search";return we({"aria-autocomplete":"both","aria-activedescendant":r.getState().isOpen&&null!==r.getState().activeItemId?"".concat(t.id,"-item-").concat(r.getState().activeItemId):void 0,"aria-controls":r.getState().isOpen?"".concat(t.id,"-list"):void 0,"aria-labelledby":"".concat(t.id,"-label"),value:r.getState().completion||r.getState().query,id:"".concat(t.id,"-input"),autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",enterKeyHint:d,spellCheck:"false",autoFocus:t.autoFocus,placeholder:t.placeholder,maxLength:l,type:"search",onChange:function(e){fe(we({event:e,props:t,query:e.currentTarget.value.slice(0,l),refresh:n,store:r},o))},onKeyDown:function(e){!function(e){var t=e.event,n=e.props,r=e.refresh,o=e.store,i=ge(e,de);if("ArrowUp"===t.key||"ArrowDown"===t.key){var u=function(){var e=n.environment.document.getElementById("".concat(n.id,"-item-").concat(o.getState().activeItemId));e&&(e.scrollIntoViewIfNeeded?e.scrollIntoViewIfNeeded(!1):e.scrollIntoView(!1))},a=function(){var e=A(o.getState());if(null!==o.getState().activeItemId&&e){var n=e.item,u=e.itemInputValue,a=e.itemUrl,c=e.source;c.onActive(ve({event:t,item:n,itemInputValue:u,itemUrl:a,refresh:r,source:c,state:o.getState()},i))}};t.preventDefault(),!1===o.getState().isOpen&&(n.openOnFocus||Boolean(o.getState().query))?fe(ve({event:t,props:n,query:o.getState().query,refresh:r,store:o},i)).then((function(){o.dispatch(t.key,{nextActiveItemId:n.defaultActiveItemId}),a(),setTimeout(u,0)})):(o.dispatch(t.key,{}),a(),u())}else if("Escape"===t.key)t.preventDefault(),o.dispatch(t.key,null),o.pendingRequests.cancelAll();else if("Tab"===t.key)o.dispatch("blur",null),o.pendingRequests.cancelAll();else if("Enter"===t.key){if(null===o.getState().activeItemId||o.getState().collections.every((function(e){return 0===e.items.length})))return void(n.debug||o.pendingRequests.cancelAll());t.preventDefault();var c=A(o.getState()),l=c.item,s=c.itemInputValue,p=c.itemUrl,f=c.source;if(t.metaKey||t.ctrlKey)void 0!==p&&(f.onSelect(ve({event:t,item:l,itemInputValue:s,itemUrl:p,refresh:r,source:f,state:o.getState()},i)),n.navigator.navigateNewTab({itemUrl:p,item:l,state:o.getState()}));else if(t.shiftKey)void 0!==p&&(f.onSelect(ve({event:t,item:l,itemInputValue:s,itemUrl:p,refresh:r,source:f,state:o.getState()},i)),n.navigator.navigateNewWindow({itemUrl:p,item:l,state:o.getState()}));else if(t.altKey);else{if(void 0!==p)return f.onSelect(ve({event:t,item:l,itemInputValue:s,itemUrl:p,refresh:r,source:f,state:o.getState()},i)),void n.navigator.navigate({itemUrl:p,item:l,state:o.getState()});fe(ve({event:t,nextState:{isOpen:!1},props:n,query:s,refresh:r,store:o},i)).then((function(){f.onSelect(ve({event:t,item:l,itemInputValue:s,itemUrl:p,refresh:r,source:f,state:o.getState()},i))}))}}}(we({event:e,props:t,refresh:n,store:r},o))},onFocus:u,onBlur:y,onClick:function(n){e.inputElement!==t.environment.document.activeElement||r.getState().isOpen||u(n)}},s)},getPanelProps:function(e){return we({onMouseDown:function(e){e.preventDefault()},onMouseLeave:function(){r.dispatch("mouseleave",null)}},e)},getListProps:function(e){return we({role:"listbox","aria-labelledby":"".concat(t.id,"-label"),id:"".concat(t.id,"-list")},e)},getItemProps:function(e){var i=e.item,u=e.source,a=Ie(e,Pe);return we({id:"".concat(t.id,"-item-").concat(i.__autocomplete_id),role:"option","aria-selected":r.getState().activeItemId===i.__autocomplete_id,onMouseMove:function(e){if(i.__autocomplete_id!==r.getState().activeItemId){r.dispatch("mousemove",i.__autocomplete_id);var t=A(r.getState());if(null!==r.getState().activeItemId&&t){var u=t.item,a=t.itemInputValue,c=t.itemUrl,l=t.source;l.onActive(we({event:e,item:u,itemInputValue:a,itemUrl:c,refresh:n,source:l,state:r.getState()},o))}}},onMouseDown:function(e){e.preventDefault()},onClick:function(e){var a=u.getItemInputValue({item:i,state:r.getState()}),c=u.getItemUrl({item:i,state:r.getState()});(c?Promise.resolve():fe(we({event:e,nextState:{isOpen:!1},props:t,query:a,refresh:n,store:r},o))).then((function(){u.onSelect(we({event:e,item:i,itemInputValue:a,itemUrl:c,refresh:n,source:u,state:r.getState()},o))}))}},a)}}}function Ae(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Ce(e){for(var t=1;t0},reshape:function(e){return e.sources}},e),{},{id:null!==(n=e.id)&&void 0!==n?n:v(),plugins:o,initialState:H({activeItemId:null,query:"",completion:null,collections:[],isOpen:!1,status:"idle",context:{}},e.initialState),onStateChange:function(t){var n;null===(n=e.onStateChange)||void 0===n||n.call(e,t),o.forEach((function(e){var n;return null===(n=e.onStateChange)||void 0===n?void 0:n.call(e,t)}))},onSubmit:function(t){var n;null===(n=e.onSubmit)||void 0===n||n.call(e,t),o.forEach((function(e){var n;return null===(n=e.onSubmit)||void 0===n?void 0:n.call(e,t)}))},onReset:function(t){var n;null===(n=e.onReset)||void 0===n||n.call(e,t),o.forEach((function(e){var n;return null===(n=e.onReset)||void 0===n?void 0:n.call(e,t)}))},getSources:function(n){return Promise.all([].concat(F(o.map((function(e){return e.getSources}))),[e.getSources]).filter(Boolean).map((function(e){return E(e,n)}))).then((function(e){return d(e)})).then((function(e){return e.map((function(e){return H(H({},e),{},{onSelect:function(n){e.onSelect(n),t.forEach((function(e){var t;return null===(t=e.onSelect)||void 0===t?void 0:t.call(e,n)}))},onActive:function(n){e.onActive(n),t.forEach((function(e){var t;return null===(t=e.onActive)||void 0===t?void 0:t.call(e,n)}))}})}))}))},navigator:H({navigate:function(e){var t=e.itemUrl;r.location.assign(t)},navigateNewTab:function(e){var t=e.itemUrl,n=r.open(t,"_blank","noopener");null==n||n.focus()},navigateNewWindow:function(e){var t=e.itemUrl;r.open(t,"_blank","noopener")}},e.navigator)})}(e,t),r=R(Te,n,(function(e){var t=e.prevState,r=e.state;n.onStateChange(Be({prevState:t,state:r,refresh:u},o))})),o=function(e){var t=e.store;return{setActiveItemId:function(e){t.dispatch("setActiveItemId",e)},setQuery:function(e){t.dispatch("setQuery",e)},setCollections:function(e){var n=0,r=e.map((function(e){return L(L({},e),{},{items:d(e.items).map((function(e){return L(L({},e),{},{__autocomplete_id:n++})}))})}));t.dispatch("setCollections",r)},setIsOpen:function(e){t.dispatch("setIsOpen",e)},setStatus:function(e){t.dispatch("setStatus",e)},setContext:function(e){t.dispatch("setContext",e)}}}({store:r}),i=Ee(Be({props:n,refresh:u,store:r},o));function u(){return fe(Be({event:new Event("input"),nextState:{isOpen:r.getState().isOpen},props:n,query:r.getState().query,refresh:u,store:r},o))}return n.plugins.forEach((function(e){var n;return null===(n=e.subscribe)||void 0===n?void 0:n.call(e,Be(Be({},o),{},{refresh:u,onSelect:function(e){t.push({onSelect:e})},onActive:function(e){t.push({onActive:e})}}))})),function(e){var t,n,r=e.metadata,o=e.environment;if(null===(t=o.navigator)||void 0===t||null===(n=t.userAgent)||void 0===n?void 0:n.includes("Algolia Crawler")){var i=o.document.createElement("meta"),u=o.document.querySelector("head");i.name="algolia:metadata",setTimeout((function(){i.content=JSON.stringify(r),u.appendChild(i)}),0)}}({metadata:ke({plugins:n.plugins,options:e}),environment:n.environment}),Be(Be({refresh:u},i),o)}var Ue=function(e,t,n,r){var o;t[0]=0;for(var i=1;i=5&&((o||!e&&5===r)&&(u.push(r,0,o,n),r=6),e&&(u.push(r,e,0,n),r=6)),o=""},c=0;c"===t?(r=1,o=""):o=t+o[0]:i?t===i?i="":o+=t:'"'===t||"'"===t?i=t:">"===t?(a(),r=1):r&&("="===t?(r=5,n=o,o=""):"/"===t&&(r<5||">"===e[c][l+1])?(a(),3===r&&(u=u[0]),r=u,(u=u[0]).push(2,0,r),r=0):" "===t||"\t"===t||"\n"===t||"\r"===t?(a(),r=2):o+=t),3===r&&"!--"===o&&(r=4,u=u[0])}return a(),u}(e)),t),arguments,[])).length>1?t:t[0]}var We=function(e){var t=e.environment,n=t.document.createElementNS("http://www.w3.org/2000/svg","svg");n.setAttribute("class","aa-ClearIcon"),n.setAttribute("viewBox","0 0 24 24"),n.setAttribute("width","18"),n.setAttribute("height","18"),n.setAttribute("fill","currentColor");var r=t.document.createElementNS("http://www.w3.org/2000/svg","path");return r.setAttribute("d","M5.293 6.707l5.293 5.293-5.293 5.293c-0.391 0.391-0.391 1.024 0 1.414s1.024 0.391 1.414 0l5.293-5.293 5.293 5.293c0.391 0.391 1.024 0.391 1.414 0s0.391-1.024 0-1.414l-5.293-5.293 5.293-5.293c0.391-0.391 0.391-1.024 0-1.414s-1.024-0.391-1.414 0l-5.293 5.293-5.293-5.293c-0.391-0.391-1.024-0.391-1.414 0s-0.391 1.024 0 1.414z"),n.appendChild(r),n};function Qe(e,t){if("string"==typeof t){var n=e.document.querySelector(t);return"The element ".concat(JSON.stringify(t)," is not in the document."),n}return t}function $e(){for(var e=arguments.length,t=new Array(e),n=0;n2&&(u.children=arguments.length>3?lt.call(arguments,2):n),"function"==typeof e&&null!=e.defaultProps)for(i in e.defaultProps)void 0===u[i]&&(u[i]=e.defaultProps[i]);return _t(e,u,r,o,null)}function _t(e,t,n,r,o){var i={type:e,props:t,key:n,ref:r,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:null==o?++pt:o};return null==o&&null!=st.vnode&&st.vnode(i),i}function Pt(e){return e.children}function jt(e,t){this.props=e,this.context=t}function wt(e,t){if(null==t)return e.__?wt(e.__,e.__.__k.indexOf(e)+1):null;for(var n;t0?_t(d.type,d.props,d.key,null,d.__v):d)){if(d.__=n,d.__b=n.__b+1,null===(f=g[s])||f&&d.key==f.key&&d.type===f.type)g[s]=void 0;else for(p=0;p0&&void 0!==arguments[0]?arguments[0]:[];return{get:function(){return e},add:function(t){var n=e[e.length-1];(null==n?void 0:n.isHighlighted)===t.isHighlighted?e[e.length-1]={value:n.value+t.value,isHighlighted:n.isHighlighted}:e.push(t)}}}(n?[{value:n,isHighlighted:!1}]:[]);return t.forEach((function(e){var t=e.split(Ht);r.add({value:t[0],isHighlighted:!0}),""!==t[1]&&r.add({value:t[1],isHighlighted:!1})})),r.get()}function Wt(e){return function(e){if(Array.isArray(e))return Qt(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return Qt(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Qt(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Qt(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n",""":'"',"'":"'"},Gt=new RegExp(/\w/i),Kt=/&(amp|quot|lt|gt|#39);/g,Jt=RegExp(Kt.source);function Yt(e,t){var n,r,o,i=e[t],u=(null===(n=e[t+1])||void 0===n?void 0:n.isHighlighted)||!0,a=(null===(r=e[t-1])||void 0===r?void 0:r.isHighlighted)||!0;return Gt.test((o=i.value)&&Jt.test(o)?o.replace(Kt,(function(e){return zt[e]})):o)||a!==u?i.isHighlighted:a}function Xt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Zt(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function mn(e){return function(e){if(Array.isArray(e))return vn(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return vn(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return vn(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function vn(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n0;if(!O.value.core.openOnFocus&&!t.query)return n;var r=Boolean(h.current||O.value.renderer.renderNoResults);return!n&&r||n},__autocomplete_metadata:{userAgents:Sn,options:e}}))})),j=p(n({collections:[],completion:null,context:{},isOpen:!1,query:"",activeItemId:null,status:"idle"},O.value.core.initialState)),w={getEnvironmentProps:O.value.renderer.getEnvironmentProps,getFormProps:O.value.renderer.getFormProps,getInputProps:O.value.renderer.getInputProps,getItemProps:O.value.renderer.getItemProps,getLabelProps:O.value.renderer.getLabelProps,getListProps:O.value.renderer.getListProps,getPanelProps:O.value.renderer.getPanelProps,getRootProps:O.value.renderer.getRootProps},S={setActiveItemId:P.value.setActiveItemId,setQuery:P.value.setQuery,setCollections:P.value.setCollections,setIsOpen:P.value.setIsOpen,setStatus:P.value.setStatus,setContext:P.value.setContext,refresh:P.value.refresh},I=d((function(){return Ve.bind(O.value.renderer.renderer.createElement)})),E=d((function(){return ct({autocomplete:P.value,autocompleteScopeApi:S,classNames:O.value.renderer.classNames,environment:O.value.core.environment,isDetached:_.value,placeholder:O.value.core.placeholder,propGetters:w,setIsModalOpen:k,state:j.current,translations:O.value.renderer.translations})}));function A(){tt(E.value.panel,{style:_.value?{}:wn({panelPlacement:O.value.renderer.panelPlacement,container:E.value.root,form:E.value.form,environment:O.value.core.environment})})}function C(e){j.current=e;var t={autocomplete:P.value,autocompleteScopeApi:S,classNames:O.value.renderer.classNames,components:O.value.renderer.components,container:O.value.renderer.container,html:I.value,dom:E.value,panelContainer:_.value?E.value.detachedContainer:O.value.renderer.panelContainer,propGetters:w,state:j.current,renderer:O.value.renderer.renderer},r=!g(e)&&!h.current&&O.value.renderer.renderNoResults||O.value.renderer.render;!function(e){var t=e.autocomplete,r=e.autocompleteScopeApi,o=e.dom,i=e.propGetters,u=e.state;nt(o.root,i.getRootProps(n({state:u,props:t.getRootProps({})},r))),nt(o.input,i.getInputProps(n({state:u,props:t.getInputProps({inputElement:o.input}),inputElement:o.input},r))),tt(o.label,{hidden:"stalled"===u.status}),tt(o.loadingIndicator,{hidden:"stalled"!==u.status}),tt(o.clearButton,{hidden:!u.query})}(t),function(e,t){var r=t.autocomplete,o=t.autocompleteScopeApi,u=t.classNames,a=t.html,c=t.dom,l=t.panelContainer,s=t.propGetters,p=t.state,f=t.components,d=t.renderer;if(p.isOpen){l.contains(c.panel)||"loading"===p.status||l.appendChild(c.panel),c.panel.classList.toggle("aa-Panel--stalled","stalled"===p.status);var m=p.collections.filter((function(e){var t=e.source,n=e.items;return t.templates.noResults||n.length>0})).map((function(e,t){var c=e.source,l=e.items;return d.createElement("section",{key:t,className:u.source,"data-autocomplete-source-id":c.sourceId},c.templates.header&&d.createElement("div",{className:u.sourceHeader},c.templates.header({components:f,createElement:d.createElement,Fragment:d.Fragment,items:l,source:c,state:p,html:a})),c.templates.noResults&&0===l.length?d.createElement("div",{className:u.sourceNoResults},c.templates.noResults({components:f,createElement:d.createElement,Fragment:d.Fragment,source:c,state:p,html:a})):d.createElement("ul",i({className:u.list},s.getListProps(n({state:p,props:r.getListProps({})},o))),l.map((function(e){var t=r.getItemProps({item:e,source:c});return d.createElement("li",i({key:t.id,className:u.item},s.getItemProps(n({state:p,props:t},o))),c.templates.item({components:f,createElement:d.createElement,Fragment:d.Fragment,item:e,state:p,html:a}))}))),c.templates.footer&&d.createElement("div",{className:u.sourceFooter},c.templates.footer({components:f,createElement:d.createElement,Fragment:d.Fragment,items:l,source:c,state:p,html:a})))})),v=d.createElement(d.Fragment,null,d.createElement("div",{className:u.panelLayout},m),d.createElement("div",{className:"aa-GradientBottom"})),h=m.reduce((function(e,t){return e[t.props["data-autocomplete-source-id"]]=t,e}),{});e(n(n({children:v,state:p,sections:m,elements:h},d),{},{components:f,html:a},o),c.panel)}else l.contains(c.panel)&&l.removeChild(c.panel)}(r,t)}function D(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};c();var t=O.value.renderer,n=t.components,r=u(t,In);y.current=Ge(r,O.value.core,{components:Ke(n,(function(e){return!e.value.hasOwnProperty("__autocomplete_componentName")})),initialState:j.current},e),m(),l(),P.value.refresh().then((function(){C(j.current)}))}function k(e){requestAnimationFrame((function(){var t=O.value.core.environment.document.body.contains(E.value.detachedOverlay);e!==t&&(e?(O.value.core.environment.document.body.appendChild(E.value.detachedOverlay),O.value.core.environment.document.body.classList.add("aa-Detached"),E.value.input.focus()):(O.value.core.environment.document.body.removeChild(E.value.detachedOverlay),O.value.core.environment.document.body.classList.remove("aa-Detached"),P.value.setQuery(""),P.value.refresh()))}))}return a((function(){var e=P.value.getEnvironmentProps({formElement:E.value.form,panelElement:E.value.panel,inputElement:E.value.input});return tt(O.value.core.environment,e),function(){tt(O.value.core.environment,Object.keys(e).reduce((function(e,t){return n(n({},e),{},o({},t,void 0))}),{}))}})),a((function(){var e=_.value?O.value.core.environment.document.body:O.value.renderer.panelContainer,t=_.value?E.value.detachedOverlay:E.value.panel;return _.value&&j.current.isOpen&&k(!0),C(j.current),function(){e.contains(t)&&e.removeChild(t)}})),a((function(){var e=O.value.renderer.container;return e.appendChild(E.value.root),function(){e.removeChild(E.value.root)}})),a((function(){var e=f((function(e){C(e.state)}),0);return b.current=function(t){var n=t.state,r=t.prevState;(_.value&&r.isOpen!==n.isOpen&&k(n.isOpen),_.value||!n.isOpen||r.isOpen||A(),n.query!==r.query)&&O.value.core.environment.document.querySelectorAll(".aa-Panel--scrollable").forEach((function(e){0!==e.scrollTop&&(e.scrollTop=0)}));e({state:n})},function(){b.current=void 0}})),a((function(){var e=f((function(){var e=_.value;_.value=O.value.core.environment.matchMedia(O.value.renderer.detachedMediaQuery).matches,e!==_.value?D({}):requestAnimationFrame(A)}),20);return O.value.core.environment.addEventListener("resize",e),function(){O.value.core.environment.removeEventListener("resize",e)}})),a((function(){if(!_.value)return function(){};function e(e){E.value.detachedContainer.classList.toggle("aa-DetachedContainer--modal",e)}function t(t){e(t.matches)}var n=O.value.core.environment.matchMedia(getComputedStyle(O.value.core.environment.document.documentElement).getPropertyValue("--aa-detached-modal-media-query"));e(n.matches);var r=Boolean(n.addEventListener);return r?n.addEventListener("change",t):n.addListener(t),function(){r?n.removeEventListener("change",t):n.removeListener(t)}})),a((function(){return requestAnimationFrame(A),function(){}})),n(n({},S),{},{update:D,destroy:function(){c()}})},e.getAlgoliaFacets=function(e){var t=En({transformResponse:function(e){return e.facetHits}}),r=e.queries.map((function(e){return n(n({},e),{},{type:"facet"})}));return t(n(n({},e),{},{queries:r}))},e.getAlgoliaResults=An,Object.defineProperty(e,"__esModule",{value:!0})})); + diff --git a/pr-preview/pr-46/site_libs/quarto-search/fuse.min.js b/pr-preview/pr-46/site_libs/quarto-search/fuse.min.js new file mode 100644 index 00000000..adc28356 --- /dev/null +++ b/pr-preview/pr-46/site_libs/quarto-search/fuse.min.js @@ -0,0 +1,9 @@ +/** + * Fuse.js v6.6.2 - Lightweight fuzzy-search (http://fusejs.io) + * + * Copyright (c) 2022 Kiro Risk (http://kiro.me) + * All Rights Reserved. Apache Software License 2.0 + * + * http://www.apache.org/licenses/LICENSE-2.0 + */ +var e,t;e=this,t=function(){"use strict";function e(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function t(t){for(var n=1;ne.length)&&(t=e.length);for(var n=0,r=new Array(t);n0&&void 0!==arguments[0]?arguments[0]:1,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:3,n=new Map,r=Math.pow(10,t);return{get:function(t){var i=t.match(C).length;if(n.has(i))return n.get(i);var o=1/Math.pow(i,.5*e),c=parseFloat(Math.round(o*r)/r);return n.set(i,c),c},clear:function(){n.clear()}}}var $=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.getFn,i=void 0===n?I.getFn:n,o=t.fieldNormWeight,c=void 0===o?I.fieldNormWeight:o;r(this,e),this.norm=E(c,3),this.getFn=i,this.isCreated=!1,this.setIndexRecords()}return o(e,[{key:"setSources",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.docs=e}},{key:"setIndexRecords",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.records=e}},{key:"setKeys",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.keys=t,this._keysMap={},t.forEach((function(t,n){e._keysMap[t.id]=n}))}},{key:"create",value:function(){var e=this;!this.isCreated&&this.docs.length&&(this.isCreated=!0,g(this.docs[0])?this.docs.forEach((function(t,n){e._addString(t,n)})):this.docs.forEach((function(t,n){e._addObject(t,n)})),this.norm.clear())}},{key:"add",value:function(e){var t=this.size();g(e)?this._addString(e,t):this._addObject(e,t)}},{key:"removeAt",value:function(e){this.records.splice(e,1);for(var t=e,n=this.size();t2&&void 0!==arguments[2]?arguments[2]:{},r=n.getFn,i=void 0===r?I.getFn:r,o=n.fieldNormWeight,c=void 0===o?I.fieldNormWeight:o,a=new $({getFn:i,fieldNormWeight:c});return a.setKeys(e.map(_)),a.setSources(t),a.create(),a}function R(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.errors,r=void 0===n?0:n,i=t.currentLocation,o=void 0===i?0:i,c=t.expectedLocation,a=void 0===c?0:c,s=t.distance,u=void 0===s?I.distance:s,h=t.ignoreLocation,l=void 0===h?I.ignoreLocation:h,f=r/e.length;if(l)return f;var d=Math.abs(a-o);return u?f+d/u:d?1:f}function N(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:I.minMatchCharLength,n=[],r=-1,i=-1,o=0,c=e.length;o=t&&n.push([r,i]),r=-1)}return e[o-1]&&o-r>=t&&n.push([r,o-1]),n}var P=32;function W(e){for(var t={},n=0,r=e.length;n1&&void 0!==arguments[1]?arguments[1]:{},o=i.location,c=void 0===o?I.location:o,a=i.threshold,s=void 0===a?I.threshold:a,u=i.distance,h=void 0===u?I.distance:u,l=i.includeMatches,f=void 0===l?I.includeMatches:l,d=i.findAllMatches,v=void 0===d?I.findAllMatches:d,g=i.minMatchCharLength,y=void 0===g?I.minMatchCharLength:g,p=i.isCaseSensitive,m=void 0===p?I.isCaseSensitive:p,k=i.ignoreLocation,M=void 0===k?I.ignoreLocation:k;if(r(this,e),this.options={location:c,threshold:s,distance:h,includeMatches:f,findAllMatches:v,minMatchCharLength:y,isCaseSensitive:m,ignoreLocation:M},this.pattern=m?t:t.toLowerCase(),this.chunks=[],this.pattern.length){var b=function(e,t){n.chunks.push({pattern:e,alphabet:W(e),startIndex:t})},x=this.pattern.length;if(x>P){for(var w=0,L=x%P,S=x-L;w3&&void 0!==arguments[3]?arguments[3]:{},i=r.location,o=void 0===i?I.location:i,c=r.distance,a=void 0===c?I.distance:c,s=r.threshold,u=void 0===s?I.threshold:s,h=r.findAllMatches,l=void 0===h?I.findAllMatches:h,f=r.minMatchCharLength,d=void 0===f?I.minMatchCharLength:f,v=r.includeMatches,g=void 0===v?I.includeMatches:v,y=r.ignoreLocation,p=void 0===y?I.ignoreLocation:y;if(t.length>P)throw new Error(w(P));for(var m,k=t.length,M=e.length,b=Math.max(0,Math.min(o,M)),x=u,L=b,S=d>1||g,_=S?Array(M):[];(m=e.indexOf(t,L))>-1;){var O=R(t,{currentLocation:m,expectedLocation:b,distance:a,ignoreLocation:p});if(x=Math.min(O,x),L=m+k,S)for(var j=0;j=z;q-=1){var B=q-1,J=n[e.charAt(B)];if(S&&(_[B]=+!!J),K[q]=(K[q+1]<<1|1)&J,F&&(K[q]|=(A[q+1]|A[q])<<1|1|A[q+1]),K[q]&$&&(C=R(t,{errors:F,currentLocation:B,expectedLocation:b,distance:a,ignoreLocation:p}))<=x){if(x=C,(L=B)<=b)break;z=Math.max(1,2*b-L)}}if(R(t,{errors:F+1,currentLocation:b,expectedLocation:b,distance:a,ignoreLocation:p})>x)break;A=K}var U={isMatch:L>=0,score:Math.max(.001,C)};if(S){var V=N(_,d);V.length?g&&(U.indices=V):U.isMatch=!1}return U}(e,n,i,{location:c+o,distance:a,threshold:s,findAllMatches:u,minMatchCharLength:h,includeMatches:r,ignoreLocation:l}),p=y.isMatch,m=y.score,k=y.indices;p&&(g=!0),v+=m,p&&k&&(d=[].concat(f(d),f(k)))}));var y={isMatch:g,score:g?v/this.chunks.length:1};return g&&r&&(y.indices=d),y}}]),e}(),z=function(){function e(t){r(this,e),this.pattern=t}return o(e,[{key:"search",value:function(){}}],[{key:"isMultiMatch",value:function(e){return D(e,this.multiRegex)}},{key:"isSingleMatch",value:function(e){return D(e,this.singleRegex)}}]),e}();function D(e,t){var n=e.match(t);return n?n[1]:null}var K=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){var t=e===this.pattern;return{isMatch:t,score:t?0:1,indices:[0,this.pattern.length-1]}}}],[{key:"type",get:function(){return"exact"}},{key:"multiRegex",get:function(){return/^="(.*)"$/}},{key:"singleRegex",get:function(){return/^=(.*)$/}}]),n}(z),q=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){var t=-1===e.indexOf(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,e.length-1]}}}],[{key:"type",get:function(){return"inverse-exact"}},{key:"multiRegex",get:function(){return/^!"(.*)"$/}},{key:"singleRegex",get:function(){return/^!(.*)$/}}]),n}(z),B=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){var t=e.startsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,this.pattern.length-1]}}}],[{key:"type",get:function(){return"prefix-exact"}},{key:"multiRegex",get:function(){return/^\^"(.*)"$/}},{key:"singleRegex",get:function(){return/^\^(.*)$/}}]),n}(z),J=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){var t=!e.startsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,e.length-1]}}}],[{key:"type",get:function(){return"inverse-prefix-exact"}},{key:"multiRegex",get:function(){return/^!\^"(.*)"$/}},{key:"singleRegex",get:function(){return/^!\^(.*)$/}}]),n}(z),U=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){var t=e.endsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[e.length-this.pattern.length,e.length-1]}}}],[{key:"type",get:function(){return"suffix-exact"}},{key:"multiRegex",get:function(){return/^"(.*)"\$$/}},{key:"singleRegex",get:function(){return/^(.*)\$$/}}]),n}(z),V=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){var t=!e.endsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,e.length-1]}}}],[{key:"type",get:function(){return"inverse-suffix-exact"}},{key:"multiRegex",get:function(){return/^!"(.*)"\$$/}},{key:"singleRegex",get:function(){return/^!(.*)\$$/}}]),n}(z),G=function(e){a(n,e);var t=l(n);function n(e){var i,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},c=o.location,a=void 0===c?I.location:c,s=o.threshold,u=void 0===s?I.threshold:s,h=o.distance,l=void 0===h?I.distance:h,f=o.includeMatches,d=void 0===f?I.includeMatches:f,v=o.findAllMatches,g=void 0===v?I.findAllMatches:v,y=o.minMatchCharLength,p=void 0===y?I.minMatchCharLength:y,m=o.isCaseSensitive,k=void 0===m?I.isCaseSensitive:m,M=o.ignoreLocation,b=void 0===M?I.ignoreLocation:M;return r(this,n),(i=t.call(this,e))._bitapSearch=new T(e,{location:a,threshold:u,distance:l,includeMatches:d,findAllMatches:g,minMatchCharLength:p,isCaseSensitive:k,ignoreLocation:b}),i}return o(n,[{key:"search",value:function(e){return this._bitapSearch.searchIn(e)}}],[{key:"type",get:function(){return"fuzzy"}},{key:"multiRegex",get:function(){return/^"(.*)"$/}},{key:"singleRegex",get:function(){return/^(.*)$/}}]),n}(z),H=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){for(var t,n=0,r=[],i=this.pattern.length;(t=e.indexOf(this.pattern,n))>-1;)n=t+i,r.push([t,n-1]);var o=!!r.length;return{isMatch:o,score:o?0:1,indices:r}}}],[{key:"type",get:function(){return"include"}},{key:"multiRegex",get:function(){return/^'"(.*)"$/}},{key:"singleRegex",get:function(){return/^'(.*)$/}}]),n}(z),Q=[K,H,B,J,V,U,q,G],X=Q.length,Y=/ +(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)/;function Z(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return e.split("|").map((function(e){for(var n=e.trim().split(Y).filter((function(e){return e&&!!e.trim()})),r=[],i=0,o=n.length;i1&&void 0!==arguments[1]?arguments[1]:{},i=n.isCaseSensitive,o=void 0===i?I.isCaseSensitive:i,c=n.includeMatches,a=void 0===c?I.includeMatches:c,s=n.minMatchCharLength,u=void 0===s?I.minMatchCharLength:s,h=n.ignoreLocation,l=void 0===h?I.ignoreLocation:h,f=n.findAllMatches,d=void 0===f?I.findAllMatches:f,v=n.location,g=void 0===v?I.location:v,y=n.threshold,p=void 0===y?I.threshold:y,m=n.distance,k=void 0===m?I.distance:m;r(this,e),this.query=null,this.options={isCaseSensitive:o,includeMatches:a,minMatchCharLength:u,findAllMatches:d,ignoreLocation:l,location:g,threshold:p,distance:k},this.pattern=o?t:t.toLowerCase(),this.query=Z(this.pattern,this.options)}return o(e,[{key:"searchIn",value:function(e){var t=this.query;if(!t)return{isMatch:!1,score:1};var n=this.options,r=n.includeMatches;e=n.isCaseSensitive?e:e.toLowerCase();for(var i=0,o=[],c=0,a=0,s=t.length;a-1&&(n.refIndex=e.idx),t.matches.push(n)}}))}function ve(e,t){t.score=e.score}function ge(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.includeMatches,i=void 0===r?I.includeMatches:r,o=n.includeScore,c=void 0===o?I.includeScore:o,a=[];return i&&a.push(de),c&&a.push(ve),e.map((function(e){var n=e.idx,r={item:t[n],refIndex:n};return a.length&&a.forEach((function(t){t(e,r)})),r}))}var ye=function(){function e(n){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2?arguments[2]:void 0;r(this,e),this.options=t(t({},I),i),this.options.useExtendedSearch,this._keyStore=new S(this.options.keys),this.setCollection(n,o)}return o(e,[{key:"setCollection",value:function(e,t){if(this._docs=e,t&&!(t instanceof $))throw new Error("Incorrect 'index' type");this._myIndex=t||F(this.options.keys,this._docs,{getFn:this.options.getFn,fieldNormWeight:this.options.fieldNormWeight})}},{key:"add",value:function(e){k(e)&&(this._docs.push(e),this._myIndex.add(e))}},{key:"remove",value:function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(){return!1},t=[],n=0,r=this._docs.length;n1&&void 0!==arguments[1]?arguments[1]:{},n=t.limit,r=void 0===n?-1:n,i=this.options,o=i.includeMatches,c=i.includeScore,a=i.shouldSort,s=i.sortFn,u=i.ignoreFieldNorm,h=g(e)?g(this._docs[0])?this._searchStringList(e):this._searchObjectList(e):this._searchLogical(e);return fe(h,{ignoreFieldNorm:u}),a&&h.sort(s),y(r)&&r>-1&&(h=h.slice(0,r)),ge(h,this._docs,{includeMatches:o,includeScore:c})}},{key:"_searchStringList",value:function(e){var t=re(e,this.options),n=this._myIndex.records,r=[];return n.forEach((function(e){var n=e.v,i=e.i,o=e.n;if(k(n)){var c=t.searchIn(n),a=c.isMatch,s=c.score,u=c.indices;a&&r.push({item:n,idx:i,matches:[{score:s,value:n,norm:o,indices:u}]})}})),r}},{key:"_searchLogical",value:function(e){var t=this,n=function(e,t){var n=(arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}).auto,r=void 0===n||n,i=function e(n){var i=Object.keys(n),o=ue(n);if(!o&&i.length>1&&!se(n))return e(le(n));if(he(n)){var c=o?n[ce]:i[0],a=o?n[ae]:n[c];if(!g(a))throw new Error(x(c));var s={keyId:j(c),pattern:a};return r&&(s.searcher=re(a,t)),s}var u={children:[],operator:i[0]};return i.forEach((function(t){var r=n[t];v(r)&&r.forEach((function(t){u.children.push(e(t))}))})),u};return se(e)||(e=le(e)),i(e)}(e,this.options),r=function e(n,r,i){if(!n.children){var o=n.keyId,c=n.searcher,a=t._findMatches({key:t._keyStore.get(o),value:t._myIndex.getValueForItemAtKeyId(r,o),searcher:c});return a&&a.length?[{idx:i,item:r,matches:a}]:[]}for(var s=[],u=0,h=n.children.length;u1&&void 0!==arguments[1]?arguments[1]:{},n=t.getFn,r=void 0===n?I.getFn:n,i=t.fieldNormWeight,o=void 0===i?I.fieldNormWeight:i,c=e.keys,a=e.records,s=new $({getFn:r,fieldNormWeight:o});return s.setKeys(c),s.setIndexRecords(a),s},ye.config=I,function(){ne.push.apply(ne,arguments)}(te),ye},"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).Fuse=t(); \ No newline at end of file diff --git a/pr-preview/pr-46/site_libs/quarto-search/quarto-search.js b/pr-preview/pr-46/site_libs/quarto-search/quarto-search.js new file mode 100644 index 00000000..f5d852d1 --- /dev/null +++ b/pr-preview/pr-46/site_libs/quarto-search/quarto-search.js @@ -0,0 +1,1140 @@ +const kQueryArg = "q"; +const kResultsArg = "show-results"; + +// If items don't provide a URL, then both the navigator and the onSelect +// function aren't called (and therefore, the default implementation is used) +// +// We're using this sentinel URL to signal to those handlers that this +// item is a more item (along with the type) and can be handled appropriately +const kItemTypeMoreHref = "0767FDFD-0422-4E5A-BC8A-3BE11E5BBA05"; + +window.document.addEventListener("DOMContentLoaded", function (_event) { + // Ensure that search is available on this page. If it isn't, + // should return early and not do anything + var searchEl = window.document.getElementById("quarto-search"); + if (!searchEl) return; + + const { autocomplete } = window["@algolia/autocomplete-js"]; + + let quartoSearchOptions = {}; + let language = {}; + const searchOptionEl = window.document.getElementById( + "quarto-search-options" + ); + if (searchOptionEl) { + const jsonStr = searchOptionEl.textContent; + quartoSearchOptions = JSON.parse(jsonStr); + language = quartoSearchOptions.language; + } + + // note the search mode + if (quartoSearchOptions.type === "overlay") { + searchEl.classList.add("type-overlay"); + } else { + searchEl.classList.add("type-textbox"); + } + + // Used to determine highlighting behavior for this page + // A `q` query param is expected when the user follows a search + // to this page + const currentUrl = new URL(window.location); + const query = currentUrl.searchParams.get(kQueryArg); + const showSearchResults = currentUrl.searchParams.get(kResultsArg); + const mainEl = window.document.querySelector("main"); + + // highlight matches on the page + if (query !== null && mainEl) { + // perform any highlighting + highlight(escapeRegExp(query), mainEl); + + // fix up the URL to remove the q query param + const replacementUrl = new URL(window.location); + replacementUrl.searchParams.delete(kQueryArg); + window.history.replaceState({}, "", replacementUrl); + } + + // function to clear highlighting on the page when the search query changes + // (e.g. if the user edits the query or clears it) + let highlighting = true; + const resetHighlighting = (searchTerm) => { + if (mainEl && highlighting && query !== null && searchTerm !== query) { + clearHighlight(query, mainEl); + highlighting = false; + } + }; + + // Clear search highlighting when the user scrolls sufficiently + const resetFn = () => { + resetHighlighting(""); + window.removeEventListener("quarto-hrChanged", resetFn); + window.removeEventListener("quarto-sectionChanged", resetFn); + }; + + // Register this event after the initial scrolling and settling of events + // on the page + window.addEventListener("quarto-hrChanged", resetFn); + window.addEventListener("quarto-sectionChanged", resetFn); + + // Responsively switch to overlay mode if the search is present on the navbar + // Note that switching the sidebar to overlay mode requires more coordinate (not just + // the media query since we generate different HTML for sidebar overlays than we do + // for sidebar input UI) + const detachedMediaQuery = + quartoSearchOptions.type === "overlay" ? "all" : "(max-width: 991px)"; + + // If configured, include the analytics client to send insights + const plugins = configurePlugins(quartoSearchOptions); + + let lastState = null; + const { setIsOpen, setQuery, setCollections } = autocomplete({ + container: searchEl, + detachedMediaQuery: detachedMediaQuery, + defaultActiveItemId: 0, + panelContainer: "#quarto-search-results", + panelPlacement: quartoSearchOptions["panel-placement"], + debug: false, + openOnFocus: true, + plugins, + classNames: { + form: "d-flex", + }, + translations: { + clearButtonTitle: language["search-clear-button-title"], + detachedCancelButtonText: language["search-detached-cancel-button-title"], + submitButtonTitle: language["search-submit-button-title"], + }, + initialState: { + query, + }, + getItemUrl({ item }) { + return item.href; + }, + onStateChange({ state }) { + // Perhaps reset highlighting + resetHighlighting(state.query); + + // If the panel just opened, ensure the panel is positioned properly + if (state.isOpen) { + if (lastState && !lastState.isOpen) { + setTimeout(() => { + positionPanel(quartoSearchOptions["panel-placement"]); + }, 150); + } + } + + // Perhaps show the copy link + showCopyLink(state.query, quartoSearchOptions); + + lastState = state; + }, + reshape({ sources, state }) { + return sources.map((source) => { + try { + const items = source.getItems(); + + // Validate the items + validateItems(items); + + // group the items by document + const groupedItems = new Map(); + items.forEach((item) => { + const hrefParts = item.href.split("#"); + const baseHref = hrefParts[0]; + const isDocumentItem = hrefParts.length === 1; + + const items = groupedItems.get(baseHref); + if (!items) { + groupedItems.set(baseHref, [item]); + } else { + // If the href for this item matches the document + // exactly, place this item first as it is the item that represents + // the document itself + if (isDocumentItem) { + items.unshift(item); + } else { + items.push(item); + } + groupedItems.set(baseHref, items); + } + }); + + const reshapedItems = []; + let count = 1; + for (const [_key, value] of groupedItems) { + const firstItem = value[0]; + reshapedItems.push({ + ...firstItem, + type: kItemTypeDoc, + }); + + const collapseMatches = quartoSearchOptions["collapse-after"]; + const collapseCount = + typeof collapseMatches === "number" ? collapseMatches : 1; + + if (value.length > 1) { + const target = `search-more-${count}`; + const isExpanded = + state.context.expanded && + state.context.expanded.includes(target); + + const remainingCount = value.length - collapseCount; + + for (let i = 1; i < value.length; i++) { + if (collapseMatches && i === collapseCount) { + reshapedItems.push({ + target, + title: isExpanded + ? language["search-hide-matches-text"] + : remainingCount === 1 + ? `${remainingCount} ${language["search-more-match-text"]}` + : `${remainingCount} ${language["search-more-matches-text"]}`, + type: kItemTypeMore, + href: kItemTypeMoreHref, + }); + } + + if (isExpanded || !collapseMatches || i < collapseCount) { + reshapedItems.push({ + ...value[i], + type: kItemTypeItem, + target, + }); + } + } + } + count += 1; + } + + return { + ...source, + getItems() { + return reshapedItems; + }, + }; + } catch (error) { + // Some form of error occurred + return { + ...source, + getItems() { + return [ + { + title: error.name || "An Error Occurred While Searching", + text: + error.message || + "An unknown error occurred while attempting to perform the requested search.", + type: kItemTypeError, + }, + ]; + }, + }; + } + }); + }, + navigator: { + navigate({ itemUrl }) { + if (itemUrl !== offsetURL(kItemTypeMoreHref)) { + window.location.assign(itemUrl); + } + }, + navigateNewTab({ itemUrl }) { + if (itemUrl !== offsetURL(kItemTypeMoreHref)) { + const windowReference = window.open(itemUrl, "_blank", "noopener"); + if (windowReference) { + windowReference.focus(); + } + } + }, + navigateNewWindow({ itemUrl }) { + if (itemUrl !== offsetURL(kItemTypeMoreHref)) { + window.open(itemUrl, "_blank", "noopener"); + } + }, + }, + getSources({ state, setContext, setActiveItemId, refresh }) { + return [ + { + sourceId: "documents", + getItemUrl({ item }) { + if (item.href) { + return offsetURL(item.href); + } else { + return undefined; + } + }, + onSelect({ + item, + state, + setContext, + setIsOpen, + setActiveItemId, + refresh, + }) { + if (item.type === kItemTypeMore) { + toggleExpanded(item, state, setContext, setActiveItemId, refresh); + + // Toggle more + setIsOpen(true); + } + }, + getItems({ query }) { + if (query === null || query === "") { + return []; + } + + const limit = quartoSearchOptions.limit; + if (quartoSearchOptions.algolia) { + return algoliaSearch(query, limit, quartoSearchOptions.algolia); + } else { + // Fuse search options + const fuseSearchOptions = { + isCaseSensitive: false, + shouldSort: true, + minMatchCharLength: 2, + limit: limit, + }; + + return readSearchData().then(function (fuse) { + return fuseSearch(query, fuse, fuseSearchOptions); + }); + } + }, + templates: { + noResults({ createElement }) { + const hasQuery = lastState.query; + + return createElement( + "div", + { + class: `quarto-search-no-results${ + hasQuery ? "" : " no-query" + }`, + }, + language["search-no-results-text"] + ); + }, + header({ items, createElement }) { + // count the documents + const count = items.filter((item) => { + return item.type === kItemTypeDoc; + }).length; + + if (count > 0) { + return createElement( + "div", + { class: "search-result-header" }, + `${count} ${language["search-matching-documents-text"]}` + ); + } else { + return createElement( + "div", + { class: "search-result-header-no-results" }, + `` + ); + } + }, + footer({ _items, createElement }) { + if ( + quartoSearchOptions.algolia && + quartoSearchOptions.algolia["show-logo"] + ) { + const libDir = quartoSearchOptions.algolia["libDir"]; + const logo = createElement("img", { + src: offsetURL( + `${libDir}/quarto-search/search-by-algolia.svg` + ), + class: "algolia-search-logo", + }); + return createElement( + "a", + { href: "http://www.algolia.com/" }, + logo + ); + } + }, + + item({ item, createElement }) { + return renderItem( + item, + createElement, + state, + setActiveItemId, + setContext, + refresh + ); + }, + }, + }, + ]; + }, + }); + + window.quartoOpenSearch = () => { + setIsOpen(false); + setIsOpen(true); + focusSearchInput(); + }; + + // Remove the labeleledby attribute since it is pointing + // to a non-existent label + if (quartoSearchOptions.type === "overlay") { + const inputEl = window.document.querySelector( + "#quarto-search .aa-Autocomplete" + ); + if (inputEl) { + inputEl.removeAttribute("aria-labelledby"); + } + } + + // If the main document scrolls dismiss the search results + // (otherwise, since they're floating in the document they can scroll with the document) + window.document.body.onscroll = () => { + setIsOpen(false); + }; + + if (showSearchResults) { + setIsOpen(true); + focusSearchInput(); + } +}); + +function configurePlugins(quartoSearchOptions) { + const autocompletePlugins = []; + const algoliaOptions = quartoSearchOptions.algolia; + if ( + algoliaOptions && + algoliaOptions["analytics-events"] && + algoliaOptions["search-only-api-key"] && + algoliaOptions["application-id"] + ) { + const apiKey = algoliaOptions["search-only-api-key"]; + const appId = algoliaOptions["application-id"]; + + // Aloglia insights may not be loaded because they require cookie consent + // Use deferred loading so events will start being recorded when/if consent + // is granted. + const algoliaInsightsDeferredPlugin = deferredLoadPlugin(() => { + if ( + window.aa && + window["@algolia/autocomplete-plugin-algolia-insights"] + ) { + window.aa("init", { + appId, + apiKey, + useCookie: true, + }); + + const { createAlgoliaInsightsPlugin } = + window["@algolia/autocomplete-plugin-algolia-insights"]; + // Register the insights client + const algoliaInsightsPlugin = createAlgoliaInsightsPlugin({ + insightsClient: window.aa, + onItemsChange({ insights, insightsEvents }) { + const events = insightsEvents.map((event) => { + const maxEvents = event.objectIDs.slice(0, 20); + return { + ...event, + objectIDs: maxEvents, + }; + }); + + insights.viewedObjectIDs(...events); + }, + }); + return algoliaInsightsPlugin; + } + }); + + // Add the plugin + autocompletePlugins.push(algoliaInsightsDeferredPlugin); + return autocompletePlugins; + } +} + +// For plugins that may not load immediately, create a wrapper +// plugin and forward events and plugin data once the plugin +// is initialized. This is useful for cases like cookie consent +// which may prevent the analytics insights event plugin from initializing +// immediately. +function deferredLoadPlugin(createPlugin) { + let plugin = undefined; + let subscribeObj = undefined; + const wrappedPlugin = () => { + if (!plugin && subscribeObj) { + plugin = createPlugin(); + if (plugin && plugin.subscribe) { + plugin.subscribe(subscribeObj); + } + } + return plugin; + }; + + return { + subscribe: (obj) => { + subscribeObj = obj; + }, + onStateChange: (obj) => { + const plugin = wrappedPlugin(); + if (plugin && plugin.onStateChange) { + plugin.onStateChange(obj); + } + }, + onSubmit: (obj) => { + const plugin = wrappedPlugin(); + if (plugin && plugin.onSubmit) { + plugin.onSubmit(obj); + } + }, + onReset: (obj) => { + const plugin = wrappedPlugin(); + if (plugin && plugin.onReset) { + plugin.onReset(obj); + } + }, + getSources: (obj) => { + const plugin = wrappedPlugin(); + if (plugin && plugin.getSources) { + return plugin.getSources(obj); + } else { + return Promise.resolve([]); + } + }, + data: (obj) => { + const plugin = wrappedPlugin(); + if (plugin && plugin.data) { + plugin.data(obj); + } + }, + }; +} + +function validateItems(items) { + // Validate the first item + if (items.length > 0) { + const item = items[0]; + const missingFields = []; + if (item.href == undefined) { + missingFields.push("href"); + } + if (!item.title == undefined) { + missingFields.push("title"); + } + if (!item.text == undefined) { + missingFields.push("text"); + } + + if (missingFields.length === 1) { + throw { + name: `Error: Search index is missing the ${missingFields[0]} field.`, + message: `The items being returned for this search do not include all the required fields. Please ensure that your index items include the ${missingFields[0]} field or use index-fields in your _quarto.yml file to specify the field names.`, + }; + } else if (missingFields.length > 1) { + const missingFieldList = missingFields + .map((field) => { + return `${field}`; + }) + .join(", "); + + throw { + name: `Error: Search index is missing the following fields: ${missingFieldList}.`, + message: `The items being returned for this search do not include all the required fields. Please ensure that your index items includes the following fields: ${missingFieldList}, or use index-fields in your _quarto.yml file to specify the field names.`, + }; + } + } +} + +let lastQuery = null; +function showCopyLink(query, options) { + const language = options.language; + lastQuery = query; + // Insert share icon + const inputSuffixEl = window.document.body.querySelector( + ".aa-Form .aa-InputWrapperSuffix" + ); + + if (inputSuffixEl) { + let copyButtonEl = window.document.body.querySelector( + ".aa-Form .aa-InputWrapperSuffix .aa-CopyButton" + ); + + if (copyButtonEl === null) { + copyButtonEl = window.document.createElement("button"); + copyButtonEl.setAttribute("class", "aa-CopyButton"); + copyButtonEl.setAttribute("type", "button"); + copyButtonEl.setAttribute("title", language["search-copy-link-title"]); + copyButtonEl.onmousedown = (e) => { + e.preventDefault(); + e.stopPropagation(); + }; + + const linkIcon = "bi-clipboard"; + const checkIcon = "bi-check2"; + + const shareIconEl = window.document.createElement("i"); + shareIconEl.setAttribute("class", `bi ${linkIcon}`); + copyButtonEl.appendChild(shareIconEl); + inputSuffixEl.prepend(copyButtonEl); + + const clipboard = new window.ClipboardJS(".aa-CopyButton", { + text: function (_trigger) { + const copyUrl = new URL(window.location); + copyUrl.searchParams.set(kQueryArg, lastQuery); + copyUrl.searchParams.set(kResultsArg, "1"); + return copyUrl.toString(); + }, + }); + clipboard.on("success", function (e) { + // Focus the input + + // button target + const button = e.trigger; + const icon = button.querySelector("i.bi"); + + // flash "checked" + icon.classList.add(checkIcon); + icon.classList.remove(linkIcon); + setTimeout(function () { + icon.classList.remove(checkIcon); + icon.classList.add(linkIcon); + }, 1000); + }); + } + + // If there is a query, show the link icon + if (copyButtonEl) { + if (lastQuery && options["copy-button"]) { + copyButtonEl.style.display = "flex"; + } else { + copyButtonEl.style.display = "none"; + } + } + } +} + +/* Search Index Handling */ +// create the index +var fuseIndex = undefined; +async function readSearchData() { + // Initialize the search index on demand + if (fuseIndex === undefined) { + // create fuse index + const options = { + keys: [ + { name: "title", weight: 20 }, + { name: "section", weight: 20 }, + { name: "text", weight: 10 }, + ], + ignoreLocation: true, + threshold: 0.1, + }; + const fuse = new window.Fuse([], options); + + // fetch the main search.json + const response = await fetch(offsetURL("search.json")); + if (response.status == 200) { + return response.json().then(function (searchDocs) { + searchDocs.forEach(function (searchDoc) { + fuse.add(searchDoc); + }); + fuseIndex = fuse; + return fuseIndex; + }); + } else { + return Promise.reject( + new Error( + "Unexpected status from search index request: " + response.status + ) + ); + } + } + return fuseIndex; +} + +function inputElement() { + return window.document.body.querySelector(".aa-Form .aa-Input"); +} + +function focusSearchInput() { + setTimeout(() => { + const inputEl = inputElement(); + if (inputEl) { + inputEl.focus(); + } + }, 50); +} + +/* Panels */ +const kItemTypeDoc = "document"; +const kItemTypeMore = "document-more"; +const kItemTypeItem = "document-item"; +const kItemTypeError = "error"; + +function renderItem( + item, + createElement, + state, + setActiveItemId, + setContext, + refresh +) { + switch (item.type) { + case kItemTypeDoc: + return createDocumentCard( + createElement, + "file-richtext", + item.title, + item.section, + item.text, + item.href + ); + case kItemTypeMore: + return createMoreCard( + createElement, + item, + state, + setActiveItemId, + setContext, + refresh + ); + case kItemTypeItem: + return createSectionCard( + createElement, + item.section, + item.text, + item.href + ); + case kItemTypeError: + return createErrorCard(createElement, item.title, item.text); + default: + return undefined; + } +} + +function createDocumentCard(createElement, icon, title, section, text, href) { + const iconEl = createElement("i", { + class: `bi bi-${icon} search-result-icon`, + }); + const titleEl = createElement("p", { class: "search-result-title" }, title); + const titleContainerEl = createElement( + "div", + { class: "search-result-title-container" }, + [iconEl, titleEl] + ); + + const textEls = []; + if (section) { + const sectionEl = createElement( + "p", + { class: "search-result-section" }, + section + ); + textEls.push(sectionEl); + } + const descEl = createElement("p", { + class: "search-result-text", + dangerouslySetInnerHTML: { + __html: text, + }, + }); + textEls.push(descEl); + + const textContainerEl = createElement( + "div", + { class: "search-result-text-container" }, + textEls + ); + + const containerEl = createElement( + "div", + { + class: "search-result-container", + }, + [titleContainerEl, textContainerEl] + ); + + const linkEl = createElement( + "a", + { + href: offsetURL(href), + class: "search-result-link", + }, + containerEl + ); + + const classes = ["search-result-doc", "search-item"]; + if (!section) { + classes.push("document-selectable"); + } + + return createElement( + "div", + { + class: classes.join(" "), + }, + linkEl + ); +} + +function createMoreCard( + createElement, + item, + state, + setActiveItemId, + setContext, + refresh +) { + const moreCardEl = createElement( + "div", + { + class: "search-result-more search-item", + onClick: (e) => { + // Handle expanding the sections by adding the expanded + // section to the list of expanded sections + toggleExpanded(item, state, setContext, setActiveItemId, refresh); + e.stopPropagation(); + }, + }, + item.title + ); + + return moreCardEl; +} + +function toggleExpanded(item, state, setContext, setActiveItemId, refresh) { + const expanded = state.context.expanded || []; + if (expanded.includes(item.target)) { + setContext({ + expanded: expanded.filter((target) => target !== item.target), + }); + } else { + setContext({ expanded: [...expanded, item.target] }); + } + + refresh(); + setActiveItemId(item.__autocomplete_id); +} + +function createSectionCard(createElement, section, text, href) { + const sectionEl = createSection(createElement, section, text, href); + return createElement( + "div", + { + class: "search-result-doc-section search-item", + }, + sectionEl + ); +} + +function createSection(createElement, title, text, href) { + const descEl = createElement("p", { + class: "search-result-text", + dangerouslySetInnerHTML: { + __html: text, + }, + }); + + const titleEl = createElement("p", { class: "search-result-section" }, title); + const linkEl = createElement( + "a", + { + href: offsetURL(href), + class: "search-result-link", + }, + [titleEl, descEl] + ); + return linkEl; +} + +function createErrorCard(createElement, title, text) { + const descEl = createElement("p", { + class: "search-error-text", + dangerouslySetInnerHTML: { + __html: text, + }, + }); + + const titleEl = createElement("p", { + class: "search-error-title", + dangerouslySetInnerHTML: { + __html: ` ${title}`, + }, + }); + const errorEl = createElement("div", { class: "search-error" }, [ + titleEl, + descEl, + ]); + return errorEl; +} + +function positionPanel(pos) { + const panelEl = window.document.querySelector( + "#quarto-search-results .aa-Panel" + ); + const inputEl = window.document.querySelector( + "#quarto-search .aa-Autocomplete" + ); + + if (panelEl && inputEl) { + panelEl.style.top = `${Math.round(panelEl.offsetTop)}px`; + if (pos === "start") { + panelEl.style.left = `${Math.round(inputEl.left)}px`; + } else { + panelEl.style.right = `${Math.round(inputEl.offsetRight)}px`; + } + } +} + +/* Highlighting */ +// highlighting functions +function highlightMatch(query, text) { + if (text) { + const start = text.toLowerCase().indexOf(query.toLowerCase()); + if (start !== -1) { + const startMark = ""; + const endMark = ""; + + const end = start + query.length; + text = + text.slice(0, start) + + startMark + + text.slice(start, end) + + endMark + + text.slice(end); + const startInfo = clipStart(text, start); + const endInfo = clipEnd( + text, + startInfo.position + startMark.length + endMark.length + ); + text = + startInfo.prefix + + text.slice(startInfo.position, endInfo.position) + + endInfo.suffix; + + return text; + } else { + return text; + } + } else { + return text; + } +} + +function clipStart(text, pos) { + const clipStart = pos - 50; + if (clipStart < 0) { + // This will just return the start of the string + return { + position: 0, + prefix: "", + }; + } else { + // We're clipping before the start of the string, walk backwards to the first space. + const spacePos = findSpace(text, pos, -1); + return { + position: spacePos.position, + prefix: "", + }; + } +} + +function clipEnd(text, pos) { + const clipEnd = pos + 200; + if (clipEnd > text.length) { + return { + position: text.length, + suffix: "", + }; + } else { + const spacePos = findSpace(text, clipEnd, 1); + return { + position: spacePos.position, + suffix: spacePos.clipped ? "…" : "", + }; + } +} + +function findSpace(text, start, step) { + let stepPos = start; + while (stepPos > -1 && stepPos < text.length) { + const char = text[stepPos]; + if (char === " " || char === "," || char === ":") { + return { + position: step === 1 ? stepPos : stepPos - step, + clipped: stepPos > 1 && stepPos < text.length, + }; + } + stepPos = stepPos + step; + } + + return { + position: stepPos - step, + clipped: false, + }; +} + +// removes highlighting as implemented by the mark tag +function clearHighlight(searchterm, el) { + const childNodes = el.childNodes; + for (let i = childNodes.length - 1; i >= 0; i--) { + const node = childNodes[i]; + if (node.nodeType === Node.ELEMENT_NODE) { + if ( + node.tagName === "MARK" && + node.innerText.toLowerCase() === searchterm.toLowerCase() + ) { + el.replaceChild(document.createTextNode(node.innerText), node); + } else { + clearHighlight(searchterm, node); + } + } + } +} + +function escapeRegExp(string) { + return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string +} + +// highlight matches +function highlight(term, el) { + const termRegex = new RegExp(term, "ig"); + const childNodes = el.childNodes; + + // walk back to front avoid mutating elements in front of us + for (let i = childNodes.length - 1; i >= 0; i--) { + const node = childNodes[i]; + + if (node.nodeType === Node.TEXT_NODE) { + // Search text nodes for text to highlight + const text = node.nodeValue; + + let startIndex = 0; + let matchIndex = text.search(termRegex); + if (matchIndex > -1) { + const markFragment = document.createDocumentFragment(); + while (matchIndex > -1) { + const prefix = text.slice(startIndex, matchIndex); + markFragment.appendChild(document.createTextNode(prefix)); + + const mark = document.createElement("mark"); + mark.appendChild( + document.createTextNode( + text.slice(matchIndex, matchIndex + term.length) + ) + ); + markFragment.appendChild(mark); + + startIndex = matchIndex + term.length; + matchIndex = text.slice(startIndex).search(new RegExp(term, "ig")); + if (matchIndex > -1) { + matchIndex = startIndex + matchIndex; + } + } + if (startIndex < text.length) { + markFragment.appendChild( + document.createTextNode(text.slice(startIndex, text.length)) + ); + } + + el.replaceChild(markFragment, node); + } + } else if (node.nodeType === Node.ELEMENT_NODE) { + // recurse through elements + highlight(term, node); + } + } +} + +/* Link Handling */ +// get the offset from this page for a given site root relative url +function offsetURL(url) { + var offset = getMeta("quarto:offset"); + return offset ? offset + url : url; +} + +// read a meta tag value +function getMeta(metaName) { + var metas = window.document.getElementsByTagName("meta"); + for (let i = 0; i < metas.length; i++) { + if (metas[i].getAttribute("name") === metaName) { + return metas[i].getAttribute("content"); + } + } + return ""; +} + +function algoliaSearch(query, limit, algoliaOptions) { + const { getAlgoliaResults } = window["@algolia/autocomplete-preset-algolia"]; + + const applicationId = algoliaOptions["application-id"]; + const searchOnlyApiKey = algoliaOptions["search-only-api-key"]; + const indexName = algoliaOptions["index-name"]; + const indexFields = algoliaOptions["index-fields"]; + const searchClient = window.algoliasearch(applicationId, searchOnlyApiKey); + const searchParams = algoliaOptions["params"]; + const searchAnalytics = !!algoliaOptions["analytics-events"]; + + return getAlgoliaResults({ + searchClient, + queries: [ + { + indexName: indexName, + query, + params: { + hitsPerPage: limit, + clickAnalytics: searchAnalytics, + ...searchParams, + }, + }, + ], + transformResponse: (response) => { + if (!indexFields) { + return response.hits.map((hit) => { + return hit.map((item) => { + return { + ...item, + text: highlightMatch(query, item.text), + }; + }); + }); + } else { + const remappedHits = response.hits.map((hit) => { + return hit.map((item) => { + const newItem = { ...item }; + ["href", "section", "title", "text"].forEach((keyName) => { + const mappedName = indexFields[keyName]; + if ( + mappedName && + item[mappedName] !== undefined && + mappedName !== keyName + ) { + newItem[keyName] = item[mappedName]; + delete newItem[mappedName]; + } + }); + newItem.text = highlightMatch(query, newItem.text); + return newItem; + }); + }); + return remappedHits; + } + }, + }); +} + +function fuseSearch(query, fuse, fuseOptions) { + return fuse.search(query, fuseOptions).map((result) => { + const addParam = (url, name, value) => { + const anchorParts = url.split("#"); + const baseUrl = anchorParts[0]; + const sep = baseUrl.search("\\?") > 0 ? "&" : "?"; + anchorParts[0] = baseUrl + sep + name + "=" + value; + return anchorParts.join("#"); + }; + + return { + title: result.item.title, + section: result.item.section, + href: addParam(result.item.href, kQueryArg, query), + text: highlightMatch(query, result.item.text), + }; + }); +} diff --git a/pr-preview/pr-46/sitemap.xml b/pr-preview/pr-46/sitemap.xml new file mode 100644 index 00000000..4436a58a --- /dev/null +++ b/pr-preview/pr-46/sitemap.xml @@ -0,0 +1,211 @@ + + + + https://us-ghg-center.github.io/ghgc-docs/user_data_notebooks/emit-ch4plume-v1_User_Notebook.html + 2023-11-09T15:15:01.388Z + + + https://us-ghg-center.github.io/ghgc-docs/user_data_notebooks/tm54dvar-ch4flux-monthgrid-v1_User_Notebook.html + 2023-11-09T15:14:59.836Z + + + https://us-ghg-center.github.io/ghgc-docs/user_data_notebooks/oco2geos-co2-daygrid-v10r_User_Notebook.html + 2023-11-09T15:14:58.268Z + + + https://us-ghg-center.github.io/ghgc-docs/user_data_notebooks/casagfed-carbonflux-monthgrid-v3_User_Notebook.html + 2023-11-09T15:14:56.936Z + + + https://us-ghg-center.github.io/ghgc-docs/user_data_notebooks/odiac-ffco2-monthgrid-v2022_User_Notebook.html + 2023-11-09T15:14:55.520Z + + + https://us-ghg-center.github.io/ghgc-docs/user_data_notebooks/epa-ch4emission-grid-v2express_User_Notebook.html + 2023-11-09T15:14:54.016Z + + + https://us-ghg-center.github.io/ghgc-docs/processing_and_verification_reports/odiac-ffco2-monthgrid-v2022_Processing and Verification Report.html + 2023-11-09T15:14:52.792Z + + + https://us-ghg-center.github.io/ghgc-docs/processing_and_verification_reports/epa-ch4emission-grid-v2express_Processing and Verification Report.html + 2023-11-09T15:14:51.956Z + + + https://us-ghg-center.github.io/ghgc-docs/processing_and_verification_reports/oco2-mip-co2budget-yeargrid-v1_Processing and Verification Report.html + 2023-11-09T15:14:51.088Z + + + https://us-ghg-center.github.io/ghgc-docs/processing_and_verification_reports/gosat-based-ch4budget-yeargrid-v1_Processing and Verification Report.html + 2023-11-09T15:14:50.252Z + + + https://us-ghg-center.github.io/ghgc-docs/processing_and_verification_reports/casagfed-carbonflux-monthgrid-v3_Processing and Verification Report.html + 2023-11-09T15:14:49.400Z + + + https://us-ghg-center.github.io/ghgc-docs/processing_and_verification_reports/sedac-popdensity-yeargrid5yr-v4.11_Processing and Verification Report.html + 2023-11-09T15:14:48.568Z + + + https://us-ghg-center.github.io/ghgc-docs/cog_transformation/casagfed-carbonflux-monthgrid-v3.html + 2023-11-09T15:14:47.684Z + + + https://us-ghg-center.github.io/ghgc-docs/cog_transformation/eccodarwin-co2flux-monthgrid-v5.html + 2023-11-09T15:14:46.752Z + + + https://us-ghg-center.github.io/ghgc-docs/cog_transformation/epa-ch4emission-grid-v2express.html + 2023-11-09T15:14:45.844Z + + + https://us-ghg-center.github.io/ghgc-docs/cog_transformation/sedac-popdensity-yeargrid5yr-v4.11.html + 2023-11-09T15:14:44.876Z + + + https://us-ghg-center.github.io/ghgc-docs/cog_transformation/oco2geos-co2-daygrid-v10r.html + 2023-11-09T15:14:43.952Z + + + https://us-ghg-center.github.io/ghgc-docs/cog_transformation/odiac-ffco2-monthgrid-v2022.html + 2023-11-09T15:14:43.016Z + + + https://us-ghg-center.github.io/ghgc-docs/cog_transformation/lpjwsl-wetlandch4-daygrid-v1.html + 2023-11-09T15:14:42.064Z + + + https://us-ghg-center.github.io/ghgc-docs/services/apis.html + 2023-11-09T15:14:41.140Z + + + https://us-ghg-center.github.io/ghgc-docs/data_workflow/oco2-mip-co2budget-yeargrid-v1_Data_Flow.html + 2023-11-09T15:14:40.224Z + + + https://us-ghg-center.github.io/ghgc-docs/data_workflow/lpjwsl-wetlandch4-grid-v1_Data_Flow.html + 2023-11-09T15:14:39.416Z + + + https://us-ghg-center.github.io/ghgc-docs/data_workflow/casagfed-carbonflux-monthgrid-v3_Data_Flow.html + 2023-11-09T15:14:38.592Z + + + https://us-ghg-center.github.io/ghgc-docs/data_workflow/sedac-popdensity-yeargrid5yr-v4.11_Data_Flow.html + 2023-11-09T15:14:37.772Z + + + https://us-ghg-center.github.io/ghgc-docs/data_workflow/epa-ch4emission-grid-v2express_Data_Flow.html + 2023-11-09T15:14:36.916Z + + + https://us-ghg-center.github.io/ghgc-docs/data_workflow/odiac-ffco2-monthgrid-v2022_Data_Flow.html + 2023-11-09T15:14:36.100Z + + + https://us-ghg-center.github.io/ghgc-docs/data_workflow/eccodarwin-co2flux-monthgrid-v5_Data_Flow.html + 2023-11-09T15:14:33.988Z + + + https://us-ghg-center.github.io/ghgc-docs/data_workflow/gosat-based-ch4budget-yeargrid-v1_Data_Flow.html + 2023-11-09T15:14:36.520Z + + + https://us-ghg-center.github.io/ghgc-docs/data_workflow/emit-ch4plume-v1_Data_Flow.html + 2023-11-09T15:14:37.368Z + + + https://us-ghg-center.github.io/ghgc-docs/data_workflow/oco2geos-co2-daygrid-v10r_Data_Flow.html + 2023-11-09T15:14:38.176Z + + + https://us-ghg-center.github.io/ghgc-docs/data_workflow/noaa-insitu_Data_Flow.html + 2023-11-09T15:14:39.016Z + + + https://us-ghg-center.github.io/ghgc-docs/data_workflow/tm54dvar-ch4flux-monthgrid-v1_Data_Flow.html + 2023-11-09T15:14:39.816Z + + + https://us-ghg-center.github.io/ghgc-docs/index.html + 2023-11-09T15:14:40.700Z + + + https://us-ghg-center.github.io/ghgc-docs/services/jupyterhub.html + 2023-11-09T15:14:41.576Z + + + https://us-ghg-center.github.io/ghgc-docs/cog_transformation/lpjwsl-wetlandch4-monthgrid-v1.html + 2023-11-09T15:14:42.572Z + + + https://us-ghg-center.github.io/ghgc-docs/cog_transformation/gosat-based-ch4budget-yeargrid-v1.html + 2023-11-09T15:14:43.476Z + + + https://us-ghg-center.github.io/ghgc-docs/cog_transformation/epa-ch4emission-grid-v2express_layers_update.html + 2023-11-09T15:14:44.428Z + + + https://us-ghg-center.github.io/ghgc-docs/cog_transformation/epa-ch4emission-monthgrid-v2.html + 2023-11-09T15:14:45.340Z + + + https://us-ghg-center.github.io/ghgc-docs/cog_transformation/emit-ch4plume-v1.html + 2023-11-09T15:14:46.280Z + + + https://us-ghg-center.github.io/ghgc-docs/cog_transformation/oco2-mip-co2budget-yeargrid-v1.html + 2023-11-09T15:14:47.204Z + + + https://us-ghg-center.github.io/ghgc-docs/cog_transformation/tm54dvar-ch4flux-monthgrid-v1.html + 2023-11-09T15:14:48.148Z + + + https://us-ghg-center.github.io/ghgc-docs/processing_and_verification_reports/eccodarwin-co2flux-monthgrid-v5_Processing and Verification Report.html + 2023-11-09T15:14:48.980Z + + + https://us-ghg-center.github.io/ghgc-docs/processing_and_verification_reports/emit-ch4plume-v1_Processing and Verification Report.html + 2023-11-09T15:14:49.844Z + + + https://us-ghg-center.github.io/ghgc-docs/processing_and_verification_reports/oco2geos-co2-daygrid-v10r_Processing and Verification Report.html + 2023-11-09T15:14:50.672Z + + + https://us-ghg-center.github.io/ghgc-docs/processing_and_verification_reports/lpjwsl-wetlandch4-grid-v1_Processing and Verification Report.html + 2023-11-09T15:14:51.532Z + + + https://us-ghg-center.github.io/ghgc-docs/processing_and_verification_reports/tm54dvar-ch4flux-monthgrid-v1_Processing and Verification Report.html + 2023-11-09T15:14:52.376Z + + + https://us-ghg-center.github.io/ghgc-docs/user_data_notebooks/noaa-insitu_User_Notebook.html + 2023-11-09T15:14:53.368Z + + + https://us-ghg-center.github.io/ghgc-docs/user_data_notebooks/oco2-mip-co2budget-yeargrid-v1_User_Notebook.html + 2023-11-09T15:14:54.640Z + + + https://us-ghg-center.github.io/ghgc-docs/user_data_notebooks/gosat-based-ch4budget-yeargrid-v1_User_Notebook.html + 2023-11-09T15:14:56.296Z + + + https://us-ghg-center.github.io/ghgc-docs/user_data_notebooks/sedac-popdensity-yeargrid5yr-v4.11_User_Notebook.html + 2023-11-09T15:14:57.580Z + + + https://us-ghg-center.github.io/ghgc-docs/user_data_notebooks/lpjwsl-wetlandch4-grid-v1_User_Notebook.html + 2023-11-09T15:14:58.904Z + + + https://us-ghg-center.github.io/ghgc-docs/user_data_notebooks/eccodarwin-co2flux-monthgrid-v5_User_Notebook.html + 2023-11-09T15:15:00.500Z + + diff --git a/pr-preview/pr-46/styles.css b/pr-preview/pr-46/styles.css new file mode 100644 index 00000000..9be27fe2 --- /dev/null +++ b/pr-preview/pr-46/styles.css @@ -0,0 +1,11 @@ +.sidebar-item { + margin: 10px; +} + +/* .sidebar-item-text::before { + content: '>' +} */ + +.content { + padding: 0 48px 0 12px; +} diff --git a/pr-preview/pr-46/user_data_notebooks/casagfed-carbonflux-monthgrid-v3_User_Notebook.html b/pr-preview/pr-46/user_data_notebooks/casagfed-carbonflux-monthgrid-v3_User_Notebook.html new file mode 100644 index 00000000..1d9edd96 --- /dev/null +++ b/pr-preview/pr-46/user_data_notebooks/casagfed-carbonflux-monthgrid-v3_User_Notebook.html @@ -0,0 +1,1237 @@ + + + + + + + + + + +U.S. Greenhouse Gas Center Documentation - CASA-GFED3 Land Carbon Flux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + +
+ + + +
+ +
+
+

CASA-GFED3 Land Carbon Flux

+
+ +
+
+ Global, monthly 0.5 degree resolution Net Primary Production (NPP), heterotrophic respiration (Rh), wildfire emissions (FIRE), and fuel wood burning emissions (FUEL) derived from the (CASA-GFED3) model, version 3 +
+
+ + +
+ +
+
Author
+
+

Siddharth Chaudhary, Vishal Gaur

+
+
+ + + +
+ + +
+ +
+

Approach

+
    +
  1. Identify available dates and temporal frequency of observations for the given collection using the GHGC API /stac endpoint. The collection processed in this notebook is the Land-Atmoshpere Carbon Flux data product.
  2. +
  3. Pass the STAC item into the raster API /stac/tilejson.jsonendpoint.
  4. +
  5. Using folium.plugins.DualMap, visualize two tiles (side-by-side), allowing time point comparison.
  6. +
  7. After the visualization, perform zonal statistics for a given polygon.
  8. +
+
+
+

About the Data

+

This dataset presents a variety of carbon flux parameters derived from the Carnegie-Ames-Stanford-Approach – Global Fire Emissions Database version 3 (CASA-GFED3) model. The model’s input data includes air temperature, precipitation, incident solar radiation, a soil classification map, and a number of satellite derived products. All model calculations are driven by analyzed meteorological data from NASA’s Modern-Era Retrospective analysis for Research and Application, Version 2 (MERRA-2). The resulting product provides monthly, global data at 0.5 degree resolution from January 2003 through December 2017. It includes the following carbon flux variables expressed in units of kilograms of carbon per square meter per month (kg Carbon m²/mon) from the following sources: net primary production (NPP), net ecosystem exchange (NEE), heterotrophic respiration (Rh), wildfire emissions (FIRE), and fuel wood burning emissions (FUEL). This product and earlier versions of MERRA-driven CASA-GFED carbon fluxes have been used in a number of atmospheric CO₂ transport studies, and through the support of NASA’s Carbon Monitoring System (CMS), it helps characterize, quantify, understand and predict the evolution of global carbon sources and sinks.

+
+
+

Installing the Required Libraries

+

Please run the next cell to install all the required libraries to run the notebook.

+
+
%pip install requests
+%pip install folium
+%pip install rasterstats
+%pip install pystac_client
+
+
+

Querying the STAC API

+
+
import requests
+from folium import Map, TileLayer
+from pystac_client import Client
+
+
+
# Provide STAC and RASTER API endpoints
+STAC_API_URL = "http://ghg.center/api/stac"
+RASTER_API_URL = "https://ghg.center/api/raster"
+
+# Please use the collection name similar to the one used in STAC collection.
+# Name of the collection for CASA GFED Land-Atmosphere Carbon Flux monthly emissions. 
+collection_name = "casagfed-carbonflux-monthgrid-v3"
+
+
+
# Fetching the collection from STAC collections using appropriate endpoint.
+collection = requests.get(f"{STAC_API_URL}/collections/{collection_name}").json()
+collection
+
+

Examining the contents of our collection under the temporal variable, we see that the data is available from January 2003 to December 2017. By looking at the dashboard:time density, we observe that the periodic frequency of these observations is monthly.

+
+
def get_item_count(collection_id):
+    count = 0
+    items_url = f"{STAC_API_URL}/collections/{collection_id}/items"
+
+    while True:
+        response = requests.get(items_url)
+
+        if not response.ok:
+            print("error getting items")
+            exit()
+
+        stac = response.json()
+        count += int(stac["context"].get("returned", 0))
+        next = [link for link in stac["links"] if link["rel"] == "next"]
+
+        if not next:
+            break
+        items_url = next[0]["href"]
+
+    return count
+
+
+
# Check the total number of items available
+number_of_items = get_item_count(collection_name)
+items = requests.get(f"{STAC_API_URL}/collections/{collection_name}/items?limit={number_of_items}").json()["features"]
+print(f"Found {len(items)} items")
+
+
+
# Examining the first item in the collection
+items[0]
+
+

Below, we are entering the minimum and maximum values to provide our upper and lower bounds in rescale_values.

+
+
+

Exploring Changes in Carbon Flux Levels Using the Raster API

+

We will explore changes in land atmosphere Carbon flux Heterotrophic Respiration. In this notebook, we’ll explore the impacts of these emissions and explore these changes over time. We’ll then visualize the outputs on a map using folium.

+
+
# To access the year value from each item more easily, this will let us query more explicity by year and month (e.g., 2020-02)
+items = {item["properties"]["start_datetime"][:7]: item for item in items} 
+# rh = Heterotrophic Respiration
+asset_name = "rh"
+
+
+
rescale_values = {"max":items[list(items.keys())[0]]["assets"][asset_name]["raster:bands"][0]["histogram"]["max"], "min":items[list(items.keys())[0]]["assets"][asset_name]["raster:bands"][0]["histogram"]["min"]}
+
+

Now, we will pass the item id, collection name, and rescaling_factor to the Raster API endpoint. We will do this twice, once for December 2003 and again for December 2017, so that we can visualize each event independently.

+
+
color_map = "purd" # please select the color ramp from matplotlib library.
+december_2003_tile = requests.get(
+    f"{RASTER_API_URL}/stac/tilejson.json?collection={items['2003-12']['collection']}&item={items['2003-12']['id']}"
+    f"&assets={asset_name}"
+    f"&color_formula=gamma+r+1.05&colormap_name={color_map}"
+    f"&rescale={rescale_values['min']},{rescale_values['max']}", 
+).json()
+december_2003_tile
+
+
+
december_2017_tile = requests.get(
+    f"{RASTER_API_URL}/stac/tilejson.json?collection={items['2017-12']['collection']}&item={items['2017-12']['id']}"
+    f"&assets={asset_name}"
+    f"&color_formula=gamma+r+1.05&colormap_name={color_map}"
+    f"&rescale={rescale_values['min']},{rescale_values['max']}", 
+).json()
+december_2017_tile
+
+
+
+

Visualizing Land-Atmosphere Carbon Flux (Heterotrophic Respiration)

+
+
# We will import folium to map and folium.plugins to allow mapping side-by-side
+import folium
+import folium.plugins
+
+# Set initial zoom and center of map for CO₂ Layer
+map_ = folium.plugins.DualMap(location=(34, -118), zoom_start=6)
+
+# December 2003
+map_layer_2003 = TileLayer(
+    tiles=december_2003_tile["tiles"][0],
+    attr="GHG",
+    opacity=0.8,
+)
+map_layer_2003.add_to(map_.m1)
+
+# December 2017
+map_layer_2017 = TileLayer(
+    tiles=december_2017_tile["tiles"][0],
+    attr="GHG",
+    opacity=0.8,
+)
+map_layer_2017.add_to(map_.m2)
+
+# visualising the map
+map_
+
+
+
+
+
+

Calculating Zonal Statistics

+

To perform zonal statistics, first we need to create a polygon. In this use case we are creating a polygon in Texas (USA).

+
+
# Texas, Dallas, USA AOI
+texas_dallas_aoi = {
+    "type": "Feature",
+    "properties": {},
+    "geometry": {
+        "coordinates": [
+            [
+                # [longitude, latitude]
+                [-95, 29],
+                [-95, 33],
+                [-104, 33],
+                [-104,29],
+                [-95, 29]
+            ]
+        ],
+        "type": "Polygon",
+    },
+}
+
+
+
# We will plug in the coordinates for a location inside the the polygon and a zoom level
+
+import folium
+
+aoi_map = Map(
+    tiles="OpenStreetMap",
+    location=[
+        32.81,-96.93,
+    ],
+    zoom_start=6,
+)
+
+folium.GeoJson(texas_dallas_aoi, name="Texas, Dallas").add_to(aoi_map)
+aoi_map
+
+
+
# Check total number of items available
+items = requests.get(
+    f"{STAC_API_URL}/collections/{collection_name}/items?limit=600"
+).json()["features"]
+print(f"Found {len(items)} items")
+
+
+
# Explore the first item
+items[0]
+
+
+
# The bounding box should be passed to the geojson param as a geojson Feature or FeatureCollection
+def generate_stats(item, geojson):
+    result = requests.post(
+        f"{RASTER_API_URL}/cog/statistics",
+        params={"url": item["assets"][asset_name]["href"]},
+        json=geojson,
+    ).json()
+    print(result)
+    return {
+        **result["properties"],
+        "start_datetime": item["properties"]["start_datetime"],
+    }
+
+
+
for item in items:
+    print(item["properties"]["start_datetime"])
+    break
+
+

With the function above, we can generate the statistics for the area of interest.

+
+
%%time
+stats = [generate_stats(item, texas_dallas_aoi) for item in items]
+
+
+
stats[0]
+
+
+
import pandas as pd
+
+
+def clean_stats(stats_json) -> pd.DataFrame:
+    df = pd.json_normalize(stats_json)
+    df.columns = [col.replace("statistics.b1.", "") for col in df.columns]
+    df["date"] = pd.to_datetime(df["start_datetime"])
+    return df
+
+
+df = clean_stats(stats)
+df.head(5)
+
+
+

Visualizing the Data as a Time Series

+

We can now explore the Heterotrophic Respiration time series (January 2017 -December 2017) available for the Dallas, Texas area of the U.S. We can plot the data set using the code below:

+
+
import matplotlib.pyplot as plt
+
+fig = plt.figure(figsize=(20, 10))
+
+
+plt.plot(
+    df["date"],
+    df["max"],
+    color="red",
+    linestyle="-",
+    linewidth=0.5,
+    label="Max monthly Carbon emissions",
+)
+
+plt.legend()
+plt.xlabel("Years")
+plt.ylabel("kg Carbon/m2/month")
+plt.title("Heterotrophic Respiration Values for Texas, Dallas (2003-2017)")
+
+
+
print(items[2]["properties"]["start_datetime"])
+
+
+
october_tile = requests.get(
+    f"{RASTER_API_URL}/stac/tilejson.json?collection={items[2]['collection']}&item={items[2]['id']}"
+    f"&assets={asset_name}"
+    f"&color_formula=gamma+r+1.05&colormap_name={color_map}"
+    f"&rescale={rescale_values['min']},{rescale_values['max']}",
+).json()
+october_tile
+
+
+
# Use bbox initial zoom and map
+# Set up a map located w/in event bounds
+import folium
+
+aoi_map_bbox = Map(
+    tiles="OpenStreetMap",
+    location=[
+        -22.421460,
+        14.268801,
+    ],
+    zoom_start=8,
+)
+
+map_layer = TileLayer(
+    tiles=october_tile["tiles"][0],
+    attr="GHG", opacity = 0.8
+)
+
+map_layer.add_to(aoi_map_bbox)
+
+aoi_map_bbox
+
+
+
+

Summary

+

In this notebook we have successfully explored, analyzed, and visualized the STAC collection for CASA GFED Land-Atmosphere Carbon Flux.

+ + +
+
+ + Back to top
+ + +
+
+ +
+ + + + \ No newline at end of file diff --git a/pr-preview/pr-46/user_data_notebooks/eccodarwin-co2flux-monthgrid-v5_User_Notebook.html b/pr-preview/pr-46/user_data_notebooks/eccodarwin-co2flux-monthgrid-v5_User_Notebook.html new file mode 100644 index 00000000..05284a1f --- /dev/null +++ b/pr-preview/pr-46/user_data_notebooks/eccodarwin-co2flux-monthgrid-v5_User_Notebook.html @@ -0,0 +1,1241 @@ + + + + + + + + + + + + +U.S. Greenhouse Gas Center Documentation - Air-Sea CO₂ Flux, ECCO-Darwin Model v5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + +
+ + + +
+ +
+
+

Air-Sea CO₂ Flux, ECCO-Darwin Model v5

+
+ +
+
+ Global, monthly average air-sea CO₂ flux at ~1/3° resolution from 2020 to 2022 +
+
+ + +
+ +
+
Author
+
+

Siddharth Chaudhary, Vishal Gaur

+
+
+ +
+
Published
+
+

August 29, 2023

+
+
+ + +
+ + +
+ +
+

Approach

+
    +
  1. Identify available dates and temporal frequency of observations for the given collection using the GHGC API /stac endpoint. The collection processed in this notebook is the Air-Sea CO₂ Flux, ECCO-Darwin Model v5 Data product.
  2. +
  3. Pass the STAC item into the raster API /stac/tilejson.jsonendpoint.
  4. +
  5. Using folium.plugins.DualMap, we will visualize two tiles (side-by-side), allowing us to compare time points.
  6. +
  7. After the visualization, we will perform zonal statistics for a given polygon.
  8. +
+
+
+

About the Data

+

The ocean is a major sink for atmospheric carbon dioxide (CO2), largely due to the presence of phytoplankton that use the CO₂ to grow. Studies have shown that global ocean CO₂ uptake has increased over recent decades however there is uncertainty in the various mechanisms that affect ocean CO₂ flux and storage and how the ocean carbon sink will respond to future climate change. Because CO₂ fluxes can vary significantly across space and time, combined with deficiencies in ocean and atmosphere CO₂ observations, there is a need for models that can thoroughly represent these processes. Ocean biogeochemical models (OBMs) have the ability to resolve the physical and biogeochemical mechanisms contributing to spatial and temporal variations in air-sea CO₂ fluxes but previous OBMs do not integrate observations to improve model accuracy and have not be able to operate on the seasonal and multi-decadal timescales needed to adequately characterize these processes. The ECCO-Darwin model is an OBM that assimilates Estimating the Circulation and Climate of the Ocean (ECCO) consortium ocean circulation estimates and biogeochemical processes from the Massachusetts Institute of Technology (MIT) Darwin Project. A pilot study using ECCO-Darwin was completed by Brix et al. (2015) however an improved version of the model was developed by Carroll et al. (2020) in which issues present in the first model were addressed using data assimilation and adjustments were made to initial conditions and biogeochemical parameters. The updated ECCO-Darwin model was compared with interpolation-based products to estimate surface ocean partial pressure (pCO2) and air-sea CO₂ flux. This dataset contains the gridded global, monthly mean air-sea CO₂ fluxes from version 5 of the ECCO-Darwin model. The data are available at ~1/3° horizontal resolution at the equator (~18 km at high latitudes) from January 2020 through December 2022.

+
+
+

Installing the required libraries

+

Please run the cell below to install the libraries required to run this notebook.

+
+
%pip install requests
+%pip install folium
+%pip install pystac_client
+
+
+
+

Querying the STAC API

+
+
import requests
+from folium import Map, TileLayer
+from pystac_client import Client
+
+
+
# Provide STAC and RASTER API endpoints
+STAC_API_URL = "http://ghg.center/api/stac"
+RASTER_API_URL = "https://ghg.center/api/raster"
+
+# Please use the collection name similar to the one used in STAC collection.
+# Name of the collection for Ecco Darwin CO₂ flux dataset. 
+collection_name = "eccodarwin-co2flux-monthgrid-v5"
+
+
+
# Fetching the collection from STAC collections using appropriate endpoint.
+collection = requests.get(f"{STAC_API_URL}/collections/{collection_name}").json()
+collection
+
+

Examining the contents of our collection under the temporal variable, we see that the data is available from January 2020 to December 2022. By looking at the dashboard:time density, we observe that the data is periodic with monthly time density.

+
+
def get_item_count(collection_id):
+    count = 0
+    items_url = f"{STAC_API_URL}/collections/{collection_id}/items"
+
+    while True:
+        response = requests.get(items_url)
+
+        if not response.ok:
+            print("error getting items")
+            exit()
+
+        stac = response.json()
+        count += int(stac["context"].get("returned", 0))
+        next = [link for link in stac["links"] if link["rel"] == "next"]
+
+        if not next:
+            break
+        items_url = next[0]["href"]
+
+    return count
+
+
+
# Check total number of items available
+number_of_items = get_item_count(collection_name)
+items = requests.get(f"{STAC_API_URL}/collections/{collection_name}/items?limit={number_of_items}").json()["features"]
+print(f"Found {len(items)} items")
+
+
+
# Examining the first item in the collection
+items[0]
+
+

Below, we are entering the minimum and maximum values to provide our upper and lower bounds in rescale_values.

+
+
+

Exploring Changes in CO₂ Levels Using the Raster API

+

In this notebook, we will explore the global changes of CO₂ flux over time in urban regions. We will visualize the outputs on a map using folium.

+
+
# to access the year value from each item more easily, this will let us query more explicity by year and month (e.g., 2020-02)
+items = {item["properties"]["start_datetime"]: item for item in items} 
+asset_name = "co2"
+
+
+
# Fetching the min and max values for a specific item
+rescale_values = {"max":0.05544506255821962, "min":-0.0560546997598733}
+
+

Now, we will pass the item id, collection name, and rescaling_factor to the Raster API endpoint. We will do this twice so that we can visualize each event independently.

+
+
color_map = "magma"
+co2_flux_1 = requests.get(
+    f"{RASTER_API_URL}/stac/tilejson.json?collection={items[list(items.keys())[0]]['collection']}&item={items[list(items.keys())[0]]['id']}"
+    f"&assets={asset_name}"
+    f"&color_formula=gamma+r+1.05&colormap_name={color_map}"
+    f"&rescale={rescale_values['min']},{rescale_values['max']}", 
+).json()
+co2_flux_1
+
+
+
co2_flux_2 = requests.get(
+    f"{RASTER_API_URL}/stac/tilejson.json?collection={items[list(items.keys())[20]]['collection']}&item={items[list(items.keys())[20]]['id']}"
+    f"&assets={asset_name}"
+    f"&color_formula=gamma+r+1.05&colormap_name={color_map}"
+    f"&rescale={rescale_values['min']},{rescale_values['max']}", 
+).json()
+co2_flux_2
+
+
+
+

Visualizing CO₂ flux Emissions

+
+
# We'll import folium to map and folium.plugins to allow mapping side-by-side
+import folium
+import folium.plugins
+
+# Set initial zoom and center of map for CO₂ Layer
+# Centre of map [latitude,longitude]
+map_ = folium.plugins.DualMap(location=(34, -118), zoom_start=6)
+
+
+map_layer_1 = TileLayer(
+    tiles=co2_flux_1["tiles"][0],
+    attr="GHG",
+    opacity=0.8,
+)
+map_layer_1.add_to(map_.m1)
+
+map_layer_2 = TileLayer(
+    tiles=co2_flux_2["tiles"][0],
+    attr="GHG",
+    opacity=0.8,
+)
+map_layer_2.add_to(map_.m2)
+
+# visualising the map
+map_
+
+
+
+
+

Calculating Zonal Statistics

+

To perform zonal statistics, first we need to create a polygon. In this use case we are creating a polygon in Texas (USA).

+
+
# Texas, USA
+gulf_mexico_aoi = {
+    "type": "Feature",
+    "properties": {},
+    "geometry": {
+        "coordinates": [
+            [
+                [-94, 27],
+                [-84, 27],
+                [-85, 23],
+                [-94,23],
+                [-94, 27]
+            ]
+        ],
+        "type": "Polygon",
+    },
+}
+
+
+
# We'll plug in the coordinates for a location
+# central to the study area and a reasonable zoom level
+
+import folium
+
+aoi_map = Map(
+    tiles="OpenStreetMap",
+    location=[
+        25,-90
+    ],
+    zoom_start=6,
+)
+
+folium.GeoJson(gulf_mexico_aoi, name="Gulf of Mexico").add_to(aoi_map)
+aoi_map
+
+
+
# Check total number of items available
+items = requests.get(
+    f"{STAC_API_URL}/collections/{collection_name}/items?limit=600"
+).json()["features"]
+print(f"Found {len(items)} items")
+
+
+
# Explore the first item
+items[0]
+
+
+
# The bounding box should be passed to the geojson param as a geojson Feature or FeatureCollection
+def generate_stats(item, geojson):
+    result = requests.post(
+        f"{RASTER_API_URL}/cog/statistics",
+        params={"url": item["assets"][asset_name]["href"]},
+        json=geojson,
+    ).json()
+    print(result)
+    return {
+        **result["properties"],
+        "datetime": item["properties"]["start_datetime"],
+    }
+
+
+
for item in items:
+    print(item["properties"]["start_datetime"])
+    break
+
+

With the function above we can generate the statistics for the AOI.

+
+
%%time
+stats = [generate_stats(item, texas_aoi) for item in items]
+
+
+
stats[0]
+
+
+
import pandas as pd
+
+
+def clean_stats(stats_json) -> pd.DataFrame:
+    df = pd.json_normalize(stats_json)
+    df.columns = [col.replace("statistics.b1.", "") for col in df.columns]
+    df["date"] = pd.to_datetime(df["datetime"])
+    return df
+
+
+df = clean_stats(stats)
+df.head(5)
+
+
+

Visualizing the Data as a Time Series

+

We can now explore the fossil fuel emission time series (January 2020 -December 2022) available for the Dallas, Texas area of the U.S. We can plot the data set using the code below:

+
+
import matplotlib.pyplot as plt
+
+fig = plt.figure(figsize=(20, 10))
+
+
+plt.plot(
+    df["datetime"],
+    df["max"],
+    color="red",
+    linestyle="-",
+    linewidth=0.5,
+    label="CO2 emissions",
+)
+
+plt.legend()
+plt.xlabel("Years")
+plt.ylabel("CO2 emissions mmol m²/s")
+plt.title("CO2 emission Values for Gulf of Mexico (2020-2022)")
+
+
+
print(items[2]["properties"]["start_datetime"])
+
+
+
co2_flux_3 = requests.get(
+    f"{RASTER_API_URL}/stac/tilejson.json?collection={items[2]['collection']}&item={items[2]['id']}"
+    f"&assets={asset_name}"
+    f"&color_formula=gamma+r+1.05&colormap_name={color_map}"
+    f"&rescale={rescale_values['min']},{rescale_values['max']}",
+).json()
+co2_flux_3
+
+
+
# Use bbox initial zoom and map
+# Set up a map located w/in event bounds
+import folium
+
+aoi_map_bbox = Map(
+    tiles="OpenStreetMap",
+    location=[
+        30,-100
+    ],
+    zoom_start=6.8,
+)
+
+map_layer = TileLayer(
+    tiles=co2_flux_3["tiles"][0],
+    attr="GHG", opacity = 0.7
+)
+
+map_layer.add_to(aoi_map_bbox)
+
+aoi_map_bbox
+
+
+
+

Summary

+

In this notebook we have successfully explored, analyzed, and visualized the STAC collection for ECCO Darwin CO₂ flux dataset

+ + +
+
+ + Back to top
+ + +
+
+ +
+ + + + \ No newline at end of file diff --git a/pr-preview/pr-46/user_data_notebooks/emit-ch4plume-v1_User_Notebook.html b/pr-preview/pr-46/user_data_notebooks/emit-ch4plume-v1_User_Notebook.html new file mode 100644 index 00000000..14715865 --- /dev/null +++ b/pr-preview/pr-46/user_data_notebooks/emit-ch4plume-v1_User_Notebook.html @@ -0,0 +1,2632 @@ + + + + + + + + + + +U.S. Greenhouse Gas Center Documentation - EMIT Methane Point Source Plume Complexes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + +
+ + + +
+ +
+
+

EMIT Methane Point Source Plume Complexes

+
+ +
+
+ Daily aggregated, global point source methane emission plume estimates from the EMIT instrument on the International Space Station (ISS) +
+
+ + +
+ +
+
Author
+
+

Siddharth Chaudhary, Vishal Gaur

+
+
+ + + +
+ + +
+ +
+

Approach

+
    +
  1. Identify available dates and temporal frequency of observations for the given collection using the GHGC API /stac endpoint. The collection processed in this notebook is the Earth Surface Mineral Dust Source Investigation (EMIT) methane emission plumes data product.
  2. +
  3. Pass the STAC item into the raster API /stac/tilejson.json endpoint.
  4. +
  5. Using folium.Map, visualize the plumes.
  6. +
  7. After the visualization, perform zonal statistics for a given polygon.
  8. +
+
+
+

About the Data

+

The EMIT instrument builds upon NASA’s long history of developing advanced imaging spectrometers for new science and applications. EMIT launched to the International Space Station (ISS) on July 14, 2022. The data shows high-confidence research grade methane plumes from point source emitters - updated as they are identified - in keeping with JPL Open Science and Open Data policy.

+
+
+

Installing the Required Libraries

+

Please run the next cell to install all the required libraries to run the notebook.

+
+
%pip install requests
+%pip install folium
+%pip install rasterstats
+%pip install pystac_client
+
+
Requirement already satisfied: requests in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (2.31.0)
+Requirement already satisfied: urllib3<3,>=1.21.1 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from requests) (1.26.16)
+Requirement already satisfied: idna<4,>=2.5 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from requests) (3.4)
+Requirement already satisfied: charset-normalizer<4,>=2 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from requests) (3.1.0)
+Requirement already satisfied: certifi>=2017.4.17 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from requests) (2023.7.22)
+Note: you may need to restart the kernel to use updated packages.
+Requirement already satisfied: folium in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (0.14.0)
+Requirement already satisfied: branca>=0.6.0 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from folium) (0.6.0)
+Requirement already satisfied: requests in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from folium) (2.31.0)
+Requirement already satisfied: jinja2>=2.9 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from folium) (3.1.2)
+Requirement already satisfied: numpy in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from folium) (1.24.3)
+Requirement already satisfied: MarkupSafe>=2.0 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from jinja2>=2.9->folium) (2.1.3)
+Requirement already satisfied: urllib3<3,>=1.21.1 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from requests->folium) (1.26.16)
+Requirement already satisfied: certifi>=2017.4.17 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from requests->folium) (2023.7.22)
+Requirement already satisfied: charset-normalizer<4,>=2 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from requests->folium) (3.1.0)
+Requirement already satisfied: idna<4,>=2.5 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from requests->folium) (3.4)
+Note: you may need to restart the kernel to use updated packages.
+Requirement already satisfied: rasterstats in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (0.19.0)
+Requirement already satisfied: shapely in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from rasterstats) (2.0.1)
+Requirement already satisfied: simplejson in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from rasterstats) (3.19.1)
+Requirement already satisfied: numpy>=1.9 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from rasterstats) (1.24.3)
+Requirement already satisfied: rasterio>=1.0 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from rasterstats) (1.3.6)
+Requirement already satisfied: cligj>=0.4 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from rasterstats) (0.7.2)
+Requirement already satisfied: affine in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from rasterstats) (2.4.0)
+Requirement already satisfied: fiona in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from rasterstats) (1.9.4.post1)
+Requirement already satisfied: click>7.1 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from rasterstats) (8.1.3)
+Requirement already satisfied: setuptools in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from rasterio>=1.0->rasterstats) (66.0.0)
+Requirement already satisfied: attrs in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from rasterio>=1.0->rasterstats) (22.2.0)
+Requirement already satisfied: click-plugins in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from rasterio>=1.0->rasterstats) (1.1.1)
+Requirement already satisfied: snuggs>=1.4.1 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from rasterio>=1.0->rasterstats) (1.4.7)
+Requirement already satisfied: certifi in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from rasterio>=1.0->rasterstats) (2023.7.22)
+Requirement already satisfied: six in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from fiona->rasterstats) (1.16.0)
+Requirement already satisfied: importlib-metadata in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from fiona->rasterstats) (6.0.0)
+Requirement already satisfied: pyparsing>=2.1.6 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from snuggs>=1.4.1->rasterio>=1.0->rasterstats) (3.0.9)
+Requirement already satisfied: zipp>=0.5 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from importlib-metadata->fiona->rasterstats) (3.15.0)
+Note: you may need to restart the kernel to use updated packages.
+Requirement already satisfied: pystac_client in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (0.7.2)
+Requirement already satisfied: python-dateutil>=2.8.2 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from pystac_client) (2.8.2)
+Requirement already satisfied: requests>=2.28.2 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from pystac_client) (2.31.0)
+Requirement already satisfied: pystac[validation]>=1.7.2 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from pystac_client) (1.7.3)
+Requirement already satisfied: jsonschema>=4.0.1 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from pystac[validation]>=1.7.2->pystac_client) (4.17.3)
+Requirement already satisfied: six>=1.5 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from python-dateutil>=2.8.2->pystac_client) (1.16.0)
+Requirement already satisfied: idna<4,>=2.5 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from requests>=2.28.2->pystac_client) (3.4)
+Requirement already satisfied: urllib3<3,>=1.21.1 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from requests>=2.28.2->pystac_client) (1.26.16)
+Requirement already satisfied: charset-normalizer<4,>=2 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from requests>=2.28.2->pystac_client) (3.1.0)
+Requirement already satisfied: certifi>=2017.4.17 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from requests>=2.28.2->pystac_client) (2023.7.22)
+Requirement already satisfied: attrs>=17.4.0 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from jsonschema>=4.0.1->pystac[validation]>=1.7.2->pystac_client) (22.2.0)
+Requirement already satisfied: pyrsistent!=0.17.0,!=0.17.1,!=0.17.2,>=0.14.0 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from jsonschema>=4.0.1->pystac[validation]>=1.7.2->pystac_client) (0.19.3)
+Note: you may need to restart the kernel to use updated packages.
+
+
+
+

Querying the STAC API

+
+
import requests
+from folium import Map, TileLayer
+from pystac_client import Client
+
+
+
# Provide STAC and RASTER API endpoints
+STAC_API_URL = "http://ghg.center/api/stac"
+RASTER_API_URL = "https://ghg.center/api/raster"
+
+#Please use the collection name similar to the one used in STAC collection.
+
+# Name of the collection for methane emission plumes. 
+collection_name = "emit-ch4plume-v1"
+
+
+
# Fetching the collection from STAC collections using appropriate endpoint.
+collection = requests.get(f"{STAC_API_URL}/collections/{collection_name}").json()
+collection
+
+
{'id': 'emit-ch4plume-v1',
+ 'type': 'Collection',
+ 'links': [{'rel': 'items',
+   'type': 'application/geo+json',
+   'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/collections/emit-ch4plume-v1/items'},
+  {'rel': 'parent',
+   'type': 'application/json',
+   'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/'},
+  {'rel': 'root',
+   'type': 'application/json',
+   'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/'},
+  {'rel': 'self',
+   'type': 'application/json',
+   'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/collections/emit-ch4plume-v1'}],
+ 'title': 'Methane Point Source Plume Complexes',
+ 'assets': None,
+ 'extent': {'spatial': {'bbox': [[-118.65756225585938,
+     -38.788387298583984,
+     151.0906524658203,
+     50.24619674682617]]},
+  'temporal': {'interval': [['2022-08-10T06:49:57+00:00',
+     '2023-07-29T10:06:30+00:00']]}},
+ 'license': 'CC0-1.0',
+ 'keywords': None,
+ 'providers': None,
+ 'summaries': {'datetime': ['2022-08-10T06:49:57Z',
+   '2022-08-10T06:50:21Z',
+   '2022-08-10T06:51:32Z',
+   '2022-08-11T04:26:30Z',
+   '2022-08-14T05:14:12Z',
+   '2022-08-15T04:28:26Z',
+   '2022-08-15T04:28:38Z',
+   '2022-08-15T07:46:45Z',
+   '2022-08-15T14:08:23Z',
+   '2022-08-16T03:44:09Z',
+   '2022-08-16T10:10:35Z',
+   '2022-08-16T10:10:58Z',
+   '2022-08-16T11:45:05Z',
+   '2022-08-17T04:32:35Z',
+   '2022-08-17T09:20:38Z',
+   '2022-08-18T03:42:31Z',
+   '2022-08-18T07:01:05Z',
+   '2022-08-18T08:35:06Z',
+   '2022-08-18T11:44:40Z',
+   '2022-08-19T09:22:31Z',
+   '2022-08-19T12:30:47Z',
+   '2022-08-20T05:28:04Z',
+   '2022-08-20T08:33:24Z',
+   '2022-08-22T06:57:13Z',
+   '2022-08-22T10:06:53Z',
+   '2022-08-23T07:45:04Z',
+   '2022-08-26T06:54:35Z',
+   '2022-08-26T08:29:15Z',
+   '2022-08-26T17:46:42Z',
+   '2022-08-27T06:07:30Z',
+   '2022-08-27T06:07:53Z',
+   '2022-08-27T07:40:30Z',
+   '2022-08-27T10:49:27Z',
+   '2022-08-28T05:18:53Z',
+   '2022-08-28T05:19:05Z',
+   '2022-08-28T05:19:17Z',
+   '2022-08-28T05:19:29Z',
+   '2022-08-28T05:19:41Z',
+   '2022-08-28T06:53:00Z',
+   '2022-08-28T06:53:24Z',
+   '2022-08-28T06:55:50Z',
+   '2022-08-28T08:28:47Z',
+   '2022-08-29T06:06:27Z',
+   '2022-08-29T06:09:13Z',
+   '2022-08-29T16:55:53Z',
+   '2022-08-30T06:52:44Z',
+   '2022-08-31T06:07:02Z',
+   '2022-09-01T03:43:18Z',
+   '2022-09-01T05:17:09Z',
+   '2022-09-01T05:17:20Z',
+   '2022-09-01T05:19:20Z',
+   '2022-09-01T08:25:25Z',
+   '2022-09-03T05:19:24Z',
+   '2022-09-03T06:52:42Z',
+   '2022-09-03T08:25:37Z',
+   '2022-09-09T07:02:54Z',
+   '2022-09-09T07:03:06Z',
+   '2023-01-07T14:38:18Z',
+   '2023-01-11T13:01:07Z',
+   '2023-01-11T13:02:18Z',
+   '2023-01-19T04:02:23Z',
+   '2023-01-21T16:18:34Z',
+   '2023-01-22T15:31:51Z',
+   '2023-01-23T08:53:11Z',
+   '2023-01-25T00:47:44Z',
+   '2023-01-26T06:27:16Z',
+   '2023-01-26T12:43:35Z',
+   '2023-01-27T16:21:04Z',
+   '2023-01-28T12:41:18Z',
+   '2023-01-28T12:41:30Z',
+   '2023-01-29T08:46:11Z',
+   '2023-01-29T13:03:21Z',
+   '2023-01-29T13:03:33Z',
+   '2023-01-30T09:35:55Z',
+   '2023-01-30T18:49:23Z',
+   '2023-01-31T05:39:24Z',
+   '2023-01-31T05:39:36Z',
+   '2023-01-31T05:43:17Z',
+   '2023-01-31T05:43:40Z',
+   '2023-01-31T08:49:13Z',
+   '2023-02-01T07:53:26Z',
+   '2023-02-02T07:08:03Z',
+   '2023-02-02T19:38:21Z',
+   '2023-02-03T06:22:56Z',
+   '2023-02-03T06:26:29Z',
+   '2023-02-03T17:14:34Z',
+   '2023-02-04T04:06:49Z',
+   '2023-02-04T04:10:09Z',
+   '2023-02-04T07:07:01Z',
+   '2023-02-04T07:11:17Z',
+   '2023-02-04T07:11:44Z',
+   '2023-02-04T08:41:39Z',
+   '2023-02-04T08:42:03Z',
+   '2023-02-05T17:12:44Z',
+   '2023-02-05T17:12:55Z',
+   '2023-02-06T16:25:14Z',
+   '2023-02-14T07:24:57Z',
+   '2023-02-14T08:57:15Z',
+   '2023-02-14T10:34:22Z',
+   '2023-02-14T10:34:57Z',
+   '2023-02-15T06:36:26Z',
+   '2023-02-15T11:19:33Z',
+   '2023-02-15T20:33:54Z',
+   '2023-02-16T13:36:26Z',
+   '2023-02-16T13:37:01Z',
+   '2023-02-17T06:32:21Z',
+   '2023-02-17T11:16:03Z',
+   '2023-02-17T20:31:34Z',
+   '2023-02-17T20:34:32Z',
+   '2023-02-18T08:56:51Z',
+   '2023-02-18T08:57:03Z',
+   '2023-02-18T08:57:39Z',
+   '2023-02-18T10:27:23Z',
+   '2023-02-18T12:02:10Z',
+   '2023-02-18T18:10:54Z',
+   '2023-02-19T06:31:55Z',
+   '2023-02-19T08:05:03Z',
+   '2023-02-19T08:05:27Z',
+   '2023-02-19T08:05:39Z',
+   '2023-02-19T09:39:08Z',
+   '2023-02-19T09:39:43Z',
+   '2023-02-19T09:41:18Z',
+   '2023-02-19T09:41:30Z',
+   '2023-02-19T19:05:39Z',
+   '2023-02-20T05:45:40Z',
+   '2023-02-20T07:15:30Z',
+   '2023-02-20T10:32:20Z',
+   '2023-02-20T19:43:24Z',
+   '2023-02-20T19:45:46Z',
+   '2023-02-20T19:47:23Z',
+   '2023-02-21T04:56:04Z',
+   '2023-02-21T06:30:01Z',
+   '2023-02-21T09:39:54Z',
+   '2023-02-22T08:51:06Z',
+   '2023-02-23T04:56:45Z',
+   '2023-02-23T04:57:20Z',
+   '2023-02-23T06:30:22Z',
+   '2023-02-23T06:30:33Z',
+   '2023-02-23T06:30:57Z',
+   '2023-02-23T06:31:09Z',
+   '2023-02-23T08:04:47Z',
+   '2023-02-23T08:04:59Z',
+   '2023-02-24T04:11:58Z',
+   '2023-02-24T08:58:31Z',
+   '2023-02-24T10:22:19Z',
+   '2023-02-24T18:10:00Z',
+   '2023-02-24T18:14:29Z',
+   '2023-02-24T18:14:41Z',
+   '2023-02-25T05:06:19Z',
+   '2023-02-25T08:05:31Z',
+   '2023-02-25T08:05:43Z',
+   '2023-02-26T04:10:22Z',
+   '2023-02-26T05:47:14Z',
+   '2023-02-27T15:57:14Z',
+   '2023-03-11T12:59:54Z',
+   '2023-03-18T04:52:50Z',
+   '2023-03-24T09:49:19Z',
+   '2023-03-24T09:49:43Z',
+   '2023-03-25T12:11:18Z',
+   '2023-03-25T13:41:23Z',
+   '2023-03-25T13:41:35Z',
+   '2023-03-25T13:41:47Z',
+   '2023-03-25T15:17:28Z',
+   '2023-03-26T08:19:55Z',
+   '2023-03-26T11:25:21Z',
+   '2023-03-26T14:30:19Z',
+   '2023-03-27T07:33:31Z',
+   '2023-03-30T09:49:34Z',
+   '2023-03-30T09:50:33Z',
+   '2023-03-30T09:50:45Z',
+   '2023-03-30T12:52:50Z',
+   '2023-03-30T12:53:02Z',
+   '2023-03-31T07:23:49Z',
+   '2023-03-31T19:49:37Z',
+   '2023-04-03T08:10:31Z',
+   '2023-04-03T08:12:19Z',
+   '2023-04-03T08:14:57Z',
+   '2023-04-03T09:45:39Z',
+   '2023-04-03T11:18:37Z',
+   '2023-04-03T11:18:49Z',
+   '2023-04-04T08:58:44Z',
+   '2023-04-04T08:59:08Z',
+   '2023-04-04T09:00:19Z',
+   '2023-04-04T09:00:31Z',
+   '2023-04-04T09:00:42Z',
+   '2023-04-05T06:35:43Z',
+   '2023-04-05T08:12:46Z',
+   '2023-04-13T09:57:29Z',
+   '2023-04-16T12:22:03Z',
+   '2023-04-16T21:37:35Z',
+   '2023-04-17T09:58:36Z',
+   '2023-04-17T09:58:48Z',
+   '2023-04-18T06:06:02Z',
+   '2023-04-18T06:06:25Z',
+   '2023-04-18T09:11:52Z',
+   '2023-04-18T09:12:16Z',
+   '2023-04-18T20:01:18Z',
+   '2023-04-19T08:23:52Z',
+   '2023-04-19T13:06:50Z',
+   '2023-04-20T06:01:48Z',
+   '2023-04-20T10:45:34Z',
+   '2023-04-21T08:23:29Z',
+   '2023-04-21T08:26:38Z',
+   '2023-04-21T10:00:17Z',
+   '2023-04-21T19:14:23Z',
+   '2023-04-22T07:34:37Z',
+   '2023-04-22T09:10:58Z',
+   '2023-04-22T09:11:10Z',
+   '2023-04-23T05:15:16Z',
+   '2023-04-23T06:44:21Z',
+   '2023-04-23T08:22:23Z',
+   '2023-04-23T10:01:36Z',
+   '2023-04-23T11:26:19Z',
+   '2023-04-23T11:29:08Z',
+   '2023-04-23T19:12:32Z',
+   '2023-04-24T04:24:44Z',
+   '2023-04-24T06:08:59Z',
+   '2023-04-24T09:08:18Z',
+   '2023-04-24T16:49:49Z',
+   '2023-04-25T03:40:28Z',
+   '2023-04-25T03:40:40Z',
+   '2023-04-25T05:12:16Z',
+   '2023-04-25T08:19:23Z',
+   '2023-04-26T02:53:02Z',
+   '2023-04-26T05:57:03Z',
+   '2023-04-26T07:31:30Z',
+   '2023-04-26T18:22:39Z',
+   '2023-04-27T06:44:04Z',
+   '2023-04-27T06:44:16Z',
+   '2023-04-27T17:36:30Z',
+   '2023-04-28T02:49:00Z',
+   '2023-04-28T05:55:24Z',
+   '2023-04-28T05:55:36Z',
+   '2023-04-28T09:03:09Z',
+   '2023-04-29T05:08:11Z',
+   '2023-04-29T05:08:23Z',
+   '2023-04-30T05:55:56Z',
+   '2023-04-30T05:56:08Z',
+   '2023-04-30T07:28:53Z',
+   '2023-04-30T16:44:07Z',
+   '2023-05-02T04:22:34Z',
+   '2023-05-02T04:22:58Z',
+   '2023-05-02T07:27:54Z',
+   '2023-05-04T13:54:42Z',
+   '2023-05-04T13:54:54Z',
+   '2023-05-26T14:21:26Z',
+   '2023-05-27T13:32:35Z',
+   '2023-05-29T11:57:40Z',
+   '2023-05-30T09:37:28Z',
+   '2023-06-03T07:59:26Z',
+   '2023-06-03T08:03:27Z',
+   '2023-06-04T07:06:41Z',
+   '2023-06-04T18:02:05Z',
+   '2023-06-04T18:02:17Z',
+   '2023-06-04T18:02:29Z',
+   '2023-06-05T08:00:26Z',
+   '2023-06-06T05:35:23Z',
+   '2023-06-06T10:14:59Z',
+   '2023-06-07T09:26:29Z',
+   '2023-06-07T09:26:41Z',
+   '2023-06-09T04:51:06Z',
+   '2023-06-09T07:50:16Z',
+   '2023-06-09T17:10:10Z',
+   '2023-06-09T17:11:33Z',
+   '2023-06-10T03:57:59Z',
+   '2023-06-10T05:30:19Z',
+   '2023-06-10T16:21:55Z',
+   '2023-06-11T04:44:27Z',
+   '2023-06-11T04:45:26Z',
+   '2023-06-11T06:16:38Z',
+   '2023-06-13T04:43:14Z',
+   '2023-06-13T11:13:48Z',
+   '2023-06-14T10:24:03Z',
+   '2023-06-14T10:24:15Z',
+   '2023-06-14T10:24:39Z',
+   '2023-06-14T10:24:51Z',
+   '2023-06-14T19:37:06Z',
+   '2023-06-20T08:44:14Z',
+   '2023-06-20T08:44:26Z',
+   '2023-06-22T11:50:37Z',
+   '2023-06-24T05:29:00Z',
+   '2023-06-24T05:30:36Z',
+   '2023-06-25T06:16:49Z',
+   '2023-06-25T06:18:46Z',
+   '2023-06-26T08:40:04Z',
+   '2023-06-26T10:12:32Z',
+   '2023-06-27T03:08:22Z',
+   '2023-06-27T04:42:31Z',
+   '2023-06-27T07:52:01Z',
+   '2023-06-28T05:29:39Z',
+   '2023-06-28T05:32:36Z',
+   '2023-06-28T05:33:24Z',
+   '2023-06-28T16:19:24Z',
+   '2023-06-29T01:34:53Z',
+   '2023-06-29T04:40:14Z',
+   '2023-06-29T06:14:16Z',
+   '2023-06-29T06:15:03Z',
+   '2023-06-29T06:16:26Z',
+   '2023-06-29T06:16:38Z',
+   '2023-06-29T06:16:50Z',
+   '2023-06-29T15:40:42Z',
+   '2023-06-30T07:06:49Z',
+   '2023-07-29T10:06:30Z']},
+ 'description': 'Methane plume complexes from point source emitters',
+ 'item_assets': {'ch4-plume-emissions': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'Methane Plume Complex',
+   'description': 'Methane plume complexes from point source emitters.'}},
+ 'stac_version': '1.0.0',
+ 'stac_extensions': None,
+ 'dashboard:is_periodic': False,
+ 'dashboard:time_density': 'day'}
+
+
+

Examining the contents of our collection under the temporal variable, we note that data is available from August 2022 to May 2023. By looking at the dashboard: time density, we can see that observations are conducted daily and non-periodically (i.e., there are plumes emissions for multiple places on the same dates).

+
+
def get_item_count(collection_id):
+    count = 0
+    items_url = f"{STAC_API_URL}/collections/{collection_id}/items"
+
+    while True:
+        response = requests.get(items_url)
+
+        if not response.ok:
+            print("error getting items")
+            exit()
+
+        stac = response.json()
+        count += int(stac["context"].get("returned", 0))
+        next = [link for link in stac["links"] if link["rel"] == "next"]
+
+        if not next:
+            break
+        items_url = next[0]["href"]
+
+    return count
+
+
+
# Check total number of items available
+number_of_items = get_item_count(collection_name)
+items = requests.get(f"{STAC_API_URL}/collections/{collection_name}/items?limit={number_of_items}").json()["features"]
+print(f"Found {len(items)} items")
+
+
Found 505 items
+
+
+
+
# Examining the first item in the collection
+items[0]
+
+
{'id': 'EMIT_L2B_CH4PLM_001_20230729T100630_000234',
+ 'bbox': [61.67975744168143,
+  39.96112852373608,
+  61.690059859566304,
+  39.97739549934377],
+ 'type': 'Feature',
+ 'links': [{'rel': 'collection',
+   'type': 'application/json',
+   'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/collections/emit-ch4plume-v1'},
+  {'rel': 'parent',
+   'type': 'application/json',
+   'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/collections/emit-ch4plume-v1'},
+  {'rel': 'root',
+   'type': 'application/json',
+   'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/'},
+  {'rel': 'self',
+   'type': 'application/geo+json',
+   'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/collections/emit-ch4plume-v1/items/EMIT_L2B_CH4PLM_001_20230729T100630_000234'}],
+ 'assets': {'ch4-plume-emissions': {'href': 's3://lp-prod-protected/EMITL2BCH4PLM.001/EMIT_L2B_CH4PLM_001_20230729T100630_000234/EMIT_L2B_CH4PLM_001_20230729T100630_000234.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'Methane Plume Complex',
+   'proj:bbox': [61.67975744168143,
+    39.96112852373608,
+    61.690059859566304,
+    39.97739549934377],
+   'proj:epsg': 4326.0,
+   'proj:shape': [30.0, 19.0],
+   'description': 'Methane plume complexes from point source emitters.',
+   'raster:bands': [{'scale': 1.0,
+     'nodata': -9999.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 1693.932861328125,
+      'min': -394.7409973144531,
+      'count': 11.0,
+      'buckets': [27.0, 61.0, 97.0, 86.0, 48.0, 38.0, 15.0, 1.0, 3.0, 2.0]},
+     'statistics': {'mean': 280.35348462301585,
+      'stddev': 345.7089519227557,
+      'maximum': 1693.932861328125,
+      'minimum': -394.7409973144531,
+      'valid_percent': 66.3157894736842}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[61.67975744168143, 39.96112852373608],
+      [61.690059859566304, 39.96112852373608],
+      [61.690059859566304, 39.97739549934377],
+      [61.67975744168143, 39.97739549934377],
+      [61.67975744168143, 39.96112852373608]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [0.000542232520256367,
+    0.0,
+    61.67975744168143,
+    0.0,
+    -0.000542232520256367,
+    39.97739549934377,
+    0.0,
+    0.0,
+    1.0]}},
+ 'geometry': {'type': 'Polygon',
+  'coordinates': [[[61.67975744168143, 39.96112852373608],
+    [61.690059859566304, 39.96112852373608],
+    [61.690059859566304, 39.97739549934377],
+    [61.67975744168143, 39.97739549934377],
+    [61.67975744168143, 39.96112852373608]]]},
+ 'collection': 'emit-ch4plume-v1',
+ 'properties': {'datetime': '2023-07-29T10:06:30+00:00'},
+ 'stac_version': '1.0.0',
+ 'stac_extensions': []}
+
+
+

Below, we are entering the minimum and maximum values to provide our upper and lower bounds in rescale_values.

+
+
+

Exploring Methane Emission Plumes (CH₄) using the Raster API

+

In this notebook, we will explore global methane emission plumes from point sources. We will visualize the outputs on a map using folium.

+
+
# To access the year value from each item more easily, this will let us query more explicity by year and month (e.g., 2020-02)
+items = {item["id"][20:]: item for item in items} 
+asset_name = "ch4-plume-emissions"
+
+
+
# Fetching the min and max values for a specific item
+rescale_values = {"max":items[list(items.keys())[0]]["assets"][asset_name]["raster:bands"][0]["histogram"]["max"], "min":items[list(items.keys())[0]]["assets"][asset_name]["raster:bands"][0]["histogram"]["min"]}
+
+

Now we will pass the item id, collection name, and rescaling_factor to the Raster API endpoint. We will do this for only one item so that we can visualize the event.

+
+
# Select the item ID which you want to visualize. Item ID is in the format yyyymmdd followed by the timestamp. This ID can be extracted from the COG name as well.
+item_id = "20230418T200118_000829"
+color_map = "magma"
+methane_plume_tile = requests.get(
+    f"{RASTER_API_URL}/stac/tilejson.json?collection={items[item_id]['collection']}&item={items[item_id]['id']}"
+    f"&assets={asset_name}"
+    f"&color_formula=gamma+r+1.05&colormap_name={color_map}"
+    f"&rescale={rescale_values['min']},{rescale_values['max']}", 
+).json()
+methane_plume_tile
+
+
{'tilejson': '2.2.0',
+ 'version': '1.0.0',
+ 'scheme': 'xyz',
+ 'tiles': ['https://1w7hfngnp7.execute-api.us-west-2.amazonaws.com/api/raster/stac/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?collection=emit-ch4plume-v1&item=EMIT_L2B_CH4PLM_001_20230418T200118_000829&assets=ch4-plume-emissions&color_formula=gamma+r+1.05&colormap_name=magma&rescale=-394.7409973144531%2C1693.932861328125'],
+ 'minzoom': 0,
+ 'maxzoom': 24,
+ 'bounds': [-104.76285251117253,
+  39.85322425220504,
+  -104.74658553556483,
+  39.86515336765068],
+ 'center': [-104.75471902336868, 39.85918880992786, 0]}
+
+
+
+
+

Visualizing CH₄ Emission Plume

+
+
# We will import folium to map and folium.plugins to allow side-by-side mapping
+import folium
+import folium.plugins
+
+# Set initial zoom and center of map for plume Layer
+map_ = folium.Map(location=(methane_plume_tile["center"][1], methane_plume_tile["center"][0]), zoom_start=13)
+
+# December 2001
+map_layer = TileLayer(
+    tiles=methane_plume_tile["tiles"][0],
+    attr="GHG",
+    opacity=1,
+)
+map_layer.add_to(map_)
+
+# visualising the map
+map_
+
+
+
Make this Notebook Trusted to load map: File -> Trust Notebook
+
+
+
+
+
+

Calculating Zonal Statistics

+

To perform zonal statistics, first we need to create a polygon. In this use case we will create a polygon around the plume.

+
+
# Plume AOI 
+plumes_coordinates = items[item_id]["geometry"]["coordinates"]
+methane_plume_aoi = {
+    "type": "Feature",
+    "properties": {},
+    "geometry": {
+        "coordinates":
+            plumes_coordinates,
+        "type": "Polygon",
+    },
+}
+
+
+
# We'll plug in the coordinates for a location
+# central to the study area and a reasonable zoom level
+
+import folium
+region_name = "Place_Holder" # please put the name of the place you are trying to visualize
+aoi_map = Map(
+    tiles="OpenStreetMap",
+    location=[
+        plumes_coordinates[0][0][1],
+        plumes_coordinates[0][0][0]
+    ],
+    zoom_start=12,
+)
+
+folium.GeoJson(methane_plume_aoi, name=region_name).add_to(aoi_map)
+aoi_map
+
+
Make this Notebook Trusted to load map: File -> Trust Notebook
+
+
+
+
# Check total number of items available
+items = requests.get(
+    f"{STAC_API_URL}/collections/{collection_name}/items?limit={number_of_items}"
+).json()["features"]
+print(f"Found {len(items)} items")
+
+
Found 505 items
+
+
+
+
# Explore the first item
+items[0]
+
+
{'id': 'EMIT_L2B_CH4PLM_001_20230729T100630_000234',
+ 'bbox': [61.67975744168143,
+  39.96112852373608,
+  61.690059859566304,
+  39.97739549934377],
+ 'type': 'Feature',
+ 'links': [{'rel': 'collection',
+   'type': 'application/json',
+   'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/collections/emit-ch4plume-v1'},
+  {'rel': 'parent',
+   'type': 'application/json',
+   'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/collections/emit-ch4plume-v1'},
+  {'rel': 'root',
+   'type': 'application/json',
+   'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/'},
+  {'rel': 'self',
+   'type': 'application/geo+json',
+   'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/collections/emit-ch4plume-v1/items/EMIT_L2B_CH4PLM_001_20230729T100630_000234'}],
+ 'assets': {'ch4-plume-emissions': {'href': 's3://lp-prod-protected/EMITL2BCH4PLM.001/EMIT_L2B_CH4PLM_001_20230729T100630_000234/EMIT_L2B_CH4PLM_001_20230729T100630_000234.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'Methane Plume Complex',
+   'proj:bbox': [61.67975744168143,
+    39.96112852373608,
+    61.690059859566304,
+    39.97739549934377],
+   'proj:epsg': 4326.0,
+   'proj:shape': [30.0, 19.0],
+   'description': 'Methane plume complexes from point source emitters.',
+   'raster:bands': [{'scale': 1.0,
+     'nodata': -9999.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 1693.932861328125,
+      'min': -394.7409973144531,
+      'count': 11.0,
+      'buckets': [27.0, 61.0, 97.0, 86.0, 48.0, 38.0, 15.0, 1.0, 3.0, 2.0]},
+     'statistics': {'mean': 280.35348462301585,
+      'stddev': 345.7089519227557,
+      'maximum': 1693.932861328125,
+      'minimum': -394.7409973144531,
+      'valid_percent': 66.3157894736842}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[61.67975744168143, 39.96112852373608],
+      [61.690059859566304, 39.96112852373608],
+      [61.690059859566304, 39.97739549934377],
+      [61.67975744168143, 39.97739549934377],
+      [61.67975744168143, 39.96112852373608]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [0.000542232520256367,
+    0.0,
+    61.67975744168143,
+    0.0,
+    -0.000542232520256367,
+    39.97739549934377,
+    0.0,
+    0.0,
+    1.0]}},
+ 'geometry': {'type': 'Polygon',
+  'coordinates': [[[61.67975744168143, 39.96112852373608],
+    [61.690059859566304, 39.96112852373608],
+    [61.690059859566304, 39.97739549934377],
+    [61.67975744168143, 39.97739549934377],
+    [61.67975744168143, 39.96112852373608]]]},
+ 'collection': 'emit-ch4plume-v1',
+ 'properties': {'datetime': '2023-07-29T10:06:30+00:00'},
+ 'stac_version': '1.0.0',
+ 'stac_extensions': []}
+
+
+
+
# The bounding box should be passed to the geojson param as a geojson Feature or FeatureCollection
+def generate_stats(item, geojson):
+    result = requests.post(
+        f"{RASTER_API_URL}/cog/statistics",
+        params={"url": item["assets"][asset_name]["href"]},
+        json=geojson,
+    ).json()
+    print(result)
+    return {
+        **result["properties"],
+        "item_id": item["id"][20:],
+    }
+
+
+
for item in items:
+    print(item["id"])
+    break
+
+
EMIT_L2B_CH4PLM_001_20230729T100630_000234
+
+
+

With the function above, we can generate the statistics for the area of interest.

+
+
%%time
+stats = [generate_stats(item, methane_plume_aoi) for item in items]
+stats = [ stat for stat in stats if stat["statistics"]["b1"]["mean"] != None]
+
+
{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_98': None, 'percentile_2': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_98': None, 'percentile_2': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_98': None, 'percentile_2': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_98': None, 'percentile_2': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_98': None, 'percentile_2': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_98': None, 'percentile_2': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_98': None, 'percentile_2': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_98': None, 'percentile_2': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_98': None, 'percentile_2': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_98': None, 'percentile_2': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_98': None, 'percentile_2': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_98': None, 'percentile_2': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_98': None, 'percentile_2': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_98': None, 'percentile_2': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_98': None, 'percentile_2': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_98': None, 'percentile_2': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_98': None, 'percentile_2': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': -701.0960693359375, 'max': 2024.4886474609375, 'mean': 186.8564189189189, 'count': 444.0, 'sum': 82964.25, 'std': 434.20145199818154, 'median': 140.47622680664062, 'majority': -242.4915008544922, 'minority': -526.822265625, 'unique': 289.0, 'histogram': [[22.0, 74.0, 108.0, 123.0, 63.0, 32.0, 8.0, 4.0, 7.0, 3.0], [-701.0960693359375, -428.53759765625, -155.9791259765625, 116.579345703125, 389.1378173828125, 661.6962890625, 934.2547607421875, 1206.813232421875, 1479.3717041015625, 1751.93017578125, 2024.4886474609375]], 'valid_percent': 67.27, 'masked_pixels': 216.0, 'valid_pixels': 444.0, 'percentile_2': -489.86597045898435, 'percentile_98': 1493.952343749999}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-104.76285251117253, 39.85322425220504], [-104.74658553556483, 39.85322425220504], [-104.74658553556483, 39.86515336765068], [-104.76285251117253, 39.86515336765068], [-104.76285251117253, 39.85322425220504]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': None, 'max': None, 'mean': None, 'count': 0.0, 'sum': None, '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.0, 0.0, 0.0, 0.0], [0.0, 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5, 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0]], 'valid_percent': 0.0, 'masked_pixels': 660.0, 'valid_pixels': 0.0, 'percentile_2': None, 'percentile_98': None}}}}
+CPU times: user 13.9 s, sys: 1.75 s, total: 15.6 s
+Wall time: 2min 39s
+
+
+
+

+stats
+
+
[{'statistics': {'b1': {'min': -701.0960693359375,
+    'max': 2024.4886474609375,
+    'mean': 186.8564189189189,
+    'count': 444.0,
+    'sum': 82964.25,
+    'std': 434.20145199818154,
+    'median': 140.47622680664062,
+    'majority': -242.4915008544922,
+    'minority': -526.822265625,
+    'unique': 289.0,
+    'histogram': [[22.0, 74.0, 108.0, 123.0, 63.0, 32.0, 8.0, 4.0, 7.0, 3.0],
+     [-701.0960693359375,
+      -428.53759765625,
+      -155.9791259765625,
+      116.579345703125,
+      389.1378173828125,
+      661.6962890625,
+      934.2547607421875,
+      1206.813232421875,
+      1479.3717041015625,
+      1751.93017578125,
+      2024.4886474609375]],
+    'valid_percent': 67.27,
+    'masked_pixels': 216.0,
+    'valid_pixels': 444.0,
+    'percentile_2': -489.86597045898435,
+    'percentile_98': 1493.952343749999}},
+  'item_id': '20230418T200118_000829'}]
+
+
+
+
import pandas as pd
+
+
+def clean_stats(stats_json) -> pd.DataFrame:
+    df = pd.json_normalize(stats_json)
+    df.columns = [col.replace("statistics.b1.", "") for col in df.columns]
+    # df["date"] = pd.to_datetime(df["datetime"])
+    return df
+
+
+df = clean_stats(stats)
+df
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
item_idminmaxmeancountsumstdmedianmajorityminorityuniquehistogramvalid_percentmasked_pixelsvalid_pixelspercentile_2percentile_98
020230418T200118_000829-701.0960692024.488647186.856419444.082964.25434.201452140.476227-242.491501-526.822266289.0[[22.0, 74.0, 108.0, 123.0, 63.0, 32.0, 8.0, 4...67.27216.0444.0-489.865971493.952344
+ +
+
+
+
+
plume_tile_2 = requests.get(
+    f"{RASTER_API_URL}/stac/tilejson.json?collection={items[0]['collection']}&item={items[0]['id']}"
+    f"&assets={asset_name}"
+    f"&color_formula=gamma+r+1.05&colormap_name={color_map}"
+    f"&rescale={rescale_values['min']},{rescale_values['max']}",
+).json()
+plume_tile_2
+
+
{'tilejson': '2.2.0',
+ 'version': '1.0.0',
+ 'scheme': 'xyz',
+ 'tiles': ['https://1w7hfngnp7.execute-api.us-west-2.amazonaws.com/api/raster/stac/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?collection=emit-ch4plume-v1&item=EMIT_L2B_CH4PLM_001_20230729T100630_000234&assets=ch4-plume-emissions&color_formula=gamma+r+1.05&colormap_name=magma&rescale=-394.7409973144531%2C1693.932861328125'],
+ 'minzoom': 0,
+ 'maxzoom': 24,
+ 'bounds': [61.67975744168143,
+  39.96112852373608,
+  61.690059859566304,
+  39.97739549934377],
+ 'center': [61.68490865062387, 39.969262011539925, 0]}
+
+
+
+
# Use bbox initial zoom and map
+# Set up a map located w/in event bounds
+import folium
+plume_tile_2_coordinates = items[0]["geometry"]["coordinates"]
+aoi_map_bbox = Map(
+    tiles="OpenStreetMap",
+    location=[
+        plume_tile_2_coordinates[0][0][1],
+        plume_tile_2_coordinates[0][0][0]
+    ],
+    zoom_start=13,
+)
+
+map_layer = TileLayer(
+    tiles=plume_tile_2["tiles"][0],
+    attr="GHG", opacity = 1
+)
+
+map_layer.add_to(aoi_map_bbox)
+
+aoi_map_bbox
+
+
Make this Notebook Trusted to load map: File -> Trust Notebook
+
+
+
+

Summary

+

In this notebook we have successfully explored, analyzed, and visualized the STAC collection for EMIT methane emission plumes.

+ + +
+
+ + Back to top
+ + +
+
+ +
+ + + + \ No newline at end of file diff --git a/pr-preview/pr-46/user_data_notebooks/epa-ch4emission-grid-v2express_User_Notebook.html b/pr-preview/pr-46/user_data_notebooks/epa-ch4emission-grid-v2express_User_Notebook.html new file mode 100644 index 00000000..5c81e7de --- /dev/null +++ b/pr-preview/pr-46/user_data_notebooks/epa-ch4emission-grid-v2express_User_Notebook.html @@ -0,0 +1,1240 @@ + + + + + + + + + + +U.S. Greenhouse Gas Center Documentation - Gridded Anthropogenic Methane Emissions Inventory + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + +
+ + + +
+ +
+
+

Gridded Anthropogenic Methane Emissions Inventory

+
+ +
+
+ Spatially disaggregated 0.1°x 0.1° annual maps of U.S. anthropogenic methane emissions, consistent with the U.S. Inventory of Greenhouse Gas Emissions and Sinks +
+
+ + +
+ +
+
Author
+
+

Siddharth Chaudhary, Vishal Gaur

+
+
+ + + +
+ + +
+ +
+

Approach

+
    +
  1. Identify available dates and temporal frequency of observations for the given collection using the GHGC API /stac endpoint. The collection processed in this notebook is the gridded methane emissions data product.
  2. +
  3. Pass the STAC item into the raster API /stac/tilejson.jsonendpoint.
  4. +
  5. Using folium.plugins.DualMap, we will visualize two tiles (side-by-side), allowing us to compare time points.
  6. +
  7. After the visualization, we will perform zonal statistics for a given polygon.
  8. +
+
+
+

About the Data

+

The gridded EPA U.S. anthropogenic methane greenhouse gas inventory (gridded GHGI) includes spatially disaggregated (0.1 deg x 0.1 deg or approximately 10 x 10 km resolution) maps of annual anthropogenic methane emissions (for the contiguous United States (CONUS), consistent with national annual U.S. anthropogenic methane emissions reported in the U.S. EPA Inventory of U.S. Greenhouse Gas Emissions and Sinks (U.S. GHGI). This V2 Express Extension dataset contains methane emissions provided as fluxes, in units of molecules of methane per square cm per second, for over 25 individual emission source categories, including those from agriculture, petroleum and natural gas systems, coal mining, and waste. The data have been converted from their original NetCDF format to Cloud-Optimized GeoTIFF (COG) for use in the US GHG Center, thereby enabling user exploration of spatial anthropogenic methane emissions and their trends.

+
+
+

Installing the Required Libraries

+

Please run the next cell to install all the required libraries to run the notebook.

+
+
%pip install requests
+%pip install folium
+%pip install rasterstats
+%pip install pystac_client
+
+
+

Querying the STAC API

+
+
import requests
+from folium import Map, TileLayer
+from pystac_client import Client
+
+
+
# Provide STAC and RASTER API endpoints
+STAC_API_URL = "http://ghg.center/api/stac"
+RASTER_API_URL = "https://ghg.center/api/raster"
+
+# Please use the collection name similar to the one used in STAC collection.
+
+# Name of the collection for gridded methane dataset. 
+collection_name = "epa-ch4emission-yeargrid-v2"
+
+
+
# Fetching the collection from STAC collections using appropriate endpoint.
+collection = requests.get(f"{STAC_API_URL}/collections/{collection_name}").json()
+collection
+
+

Examining the contents of our collection under the temporal variable, we see that the data is available from January 2012 to December 2020. By looking at the dashboard:time density, we observe that the periodic frequency of these observations is yearly.

+
+
def get_item_count(collection_id):
+    count = 0
+    items_url = f"{STAC_API_URL}/collections/{collection_id}/items"
+
+    while True:
+        response = requests.get(items_url)
+
+        if not response.ok:
+            print("error getting items")
+            exit()
+
+        stac = response.json()
+        count += int(stac["context"].get("returned", 0))
+        next = [link for link in stac["links"] if link["rel"] == "next"]
+
+        if not next:
+            break
+        items_url = next[0]["href"]
+
+    return count
+
+
+
# Check total number of items available
+number_of_items = get_item_count(collection_name)
+items = requests.get(f"{STAC_API_URL}/collections/{collection_name}/items?limit={number_of_items}").json()["features"]
+print(f"Found {len(items)} items")
+
+
+
# Examining the first item in the collection
+items[0]
+
+

This makes sense as there are 9 years between 2012 - 2020, meaning 9 records in total.

+

Below, we enter minimum and maximum values to provide our upper and lower bounds in rescale_values.

+
+
+

Exploring Changes in Methane (CH4) Levels Using the Raster API

+

In this notebook, we will explore the impacts of methane emissions and by examining changes over time in urban regions. We will visualize the outputs on a map using folium.

+
+
# To access the year value from each item more easily, this will let us query more explicity by year and month (e.g., 2020-02)
+items = {item["properties"]["datetime"][:7]: item for item in items} 
+asset_name = "surface-coal"
+
+
+
# Fetching the min and max values for a specific item
+rescale_values = {"max":items[list(items.keys())[0]]["assets"][asset_name]["raster:bands"][0]["histogram"]["max"], "min":items[list(items.keys())[0]]["assets"][asset_name]["raster:bands"][0]["histogram"]["min"]}
+
+
+
items
+
+

Now, we will pass the item id, collection name, and rescaling_factor to the Raster API endpoint. We will do this twice, once for January 2018 and again for January 2012, so that we can visualize each event independently.

+
+
color_map = "rainbow" # please select the color ramp from matplotlib library.
+january_2018_tile = requests.get(
+    f"{RASTER_API_URL}/stac/tilejson.json?collection={items['2018-01']['collection']}&item={items['2018-01']['id']}"
+    f"&assets={asset_name}"
+    f"&color_formula=gamma+r+1.05&colormap_name={color_map}"
+    f"&rescale={rescale_values['min']},{rescale_values['max']}", 
+).json()
+january_2018_tile
+
+
+
january_2012_tile = requests.get(
+    f"{RASTER_API_URL}/stac/tilejson.json?collection={items['2012-01']['collection']}&item={items['2012-01']['id']}"
+    f"&assets={asset_name}"
+    f"&color_formula=gamma+r+1.05&colormap_name={color_map}"
+    f"&rescale={rescale_values['min']},{rescale_values['max']}", 
+).json()
+january_2012_tile
+
+
+
+

Visualizing CH₄ emissions

+
+
# We will import folium to map and folium.plugins to allow side-by-side mapping
+import folium
+import folium.plugins
+
+# Set initial zoom and center of map for CH₄ Layer
+# Centre of map [latitude,longitude]
+map_ = folium.plugins.DualMap(location=(34, -118), zoom_start=6)
+
+# January 2018
+map_layer_2018 = TileLayer(
+    tiles=january_2018_tile["tiles"][0],
+    attr="GHG",
+    opacity=0.7,
+)
+map_layer_2018.add_to(map_.m1)
+
+# January 2012
+map_layer_2012 = TileLayer(
+    tiles=january_2012_tile["tiles"][0],
+    attr="GHG",
+    opacity=0.7,
+)
+map_layer_2012.add_to(map_.m2)
+
+# visualising the map
+map_
+
+
+
+
+
+

Calculating Zonal Statistics

+

To perform zonal statistics, first we need to create a polygon. In this use case we are creating a polygon in Texas (USA).

+
+
# Texas, USA
+texas_aoi = {
+    "type": "Feature",
+    "properties": {},
+    "geometry": {
+        "coordinates": [
+            [
+                # [13.686159004559698, -21.700046934333145],
+                # [13.686159004559698, -23.241974326585833],
+                # [14.753560168039911, -23.241974326585833],
+                # [14.753560168039911, -21.700046934333145],
+                # [13.686159004559698, -21.700046934333145],
+                [-95, 29],
+                [-95, 33],
+                [-104, 33],
+                [-104,29],
+                [-95, 29]
+            ]
+        ],
+        "type": "Polygon",
+    },
+}
+
+
+
# We will plug in the coordinates for a location inside the the polygon and a zoom level
+
+import folium
+
+aoi_map = Map(
+    tiles="OpenStreetMap",
+    location=[
+        30,-100
+    ],
+    zoom_start=6,
+)
+
+folium.GeoJson(texas_aoi, name="Texas, USA").add_to(aoi_map)
+aoi_map
+
+
+
# Check total number of items available
+items = requests.get(
+    f"{STAC_API_URL}/collections/{collection_name}/items?limit=300"
+).json()["features"]
+print(f"Found {len(items)} items")
+
+
+
# Explore the first item
+items[0]
+
+
+
# The bounding box should be passed to the geojson param as a geojson Feature or FeatureCollection
+def generate_stats(item, geojson):
+    result = requests.post(
+        f"{RASTER_API_URL}/cog/statistics",
+        params={"url": item["assets"][asset_name]["href"]},
+        json=geojson,
+    ).json()
+    return {
+        **result["properties"],
+        "datetime": item["properties"]["datetime"],
+    }
+
+

With the function above we can generate the statistics for the AOI.

+
+
%%time
+stats = [generate_stats(item, texas_aoi) for item in items]
+
+
+
stats[0]
+
+
+
import pandas as pd
+
+
+def clean_stats(stats_json) -> pd.DataFrame:
+    df = pd.json_normalize(stats_json)
+    df.columns = [col.replace("statistics.b1.", "") for col in df.columns]
+    df["date"] = pd.to_datetime(df["datetime"])
+    return df
+
+
+df = clean_stats(stats)
+df.head(5)
+
+
+

Visualizing the Data as a Time Series

+

We can now explore the gridded methane emission (Domestic Wastewater Treatment & Discharge (5D)) time series (January 2000 -December 2021) available for the Dallas, Texas area of the U.S. We can plot the data set using the code below:

+
+
import matplotlib.pyplot as plt
+
+fig = plt.figure(figsize=(20, 10))
+
+
+plt.plot(
+    df["date"],
+    df["max"],
+    color="red",
+    linestyle="-",
+    linewidth=0.5,
+    label="Max monthly CO₂ emissions",
+)
+
+plt.legend()
+plt.xlabel("Years")
+plt.ylabel("CH4 emissions Molecules CH₄/cm²/s")
+plt.title("CH4 gridded methane emission from Domestic Wastewater Treatment & Discharge (5D) for Texas, Dallas (2012-202)")
+
+
+
print(items[2]["properties"]["datetime"])
+
+
+
tile_2016 = requests.get(
+    f"{RASTER_API_URL}/stac/tilejson.json?collection={items[2]['collection']}&item={items[2]['id']}"
+    f"&assets={asset_name}"
+    f"&color_formula=gamma+r+1.05&colormap_name={color_map}"
+    f"&rescale={rescale_values['min']},{rescale_values['max']}",
+).json()
+tile_2016
+
+
+
# Use bbox initial zoom and map
+# Set up a map located w/in event bounds
+import folium
+
+aoi_map_bbox = Map(
+    tiles="OpenStreetMap",
+    location=[
+        30,-100
+    ],
+    zoom_start=8,
+)
+
+map_layer = TileLayer(
+    tiles=tile_2016["tiles"][0],
+    attr="GHG", opacity = 0.5
+)
+
+map_layer.add_to(aoi_map_bbox)
+
+aoi_map_bbox
+
+
+
+

Summary

+

In this notebook we have successfully explored, analyzed, and visualized the STAC collection for gridded methane emissions.

+ + +
+
+ + Back to top
+ + +
+
+ +
+ + + + \ No newline at end of file diff --git a/pr-preview/pr-46/user_data_notebooks/gosat-based-ch4budget-yeargrid-v1_User_Notebook.html b/pr-preview/pr-46/user_data_notebooks/gosat-based-ch4budget-yeargrid-v1_User_Notebook.html new file mode 100644 index 00000000..6cb3fe79 --- /dev/null +++ b/pr-preview/pr-46/user_data_notebooks/gosat-based-ch4budget-yeargrid-v1_User_Notebook.html @@ -0,0 +1,5342 @@ + + + + + + + + + + + + +U.S. Greenhouse Gas Center Documentation - GOSAT-based Top-down Total and Natural Methane Emissions + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + +
+ + + +
+ +
+
+

GOSAT-based Top-down Total and Natural Methane Emissions

+
+ +
+
+ Total and natural methane emissions for 2019 summed to a 1° resolution grid. Methane values for both prior to and after inclusion of GOSAT data to the GEOS-Chem global chemistry transport model, version 1.0 +
+
+ + +
+ +
+
Author
+
+

Siddharth Chaudhary, Vishal Gaur

+
+
+ +
+
Published
+
+

September 21, 2023

+
+
+ + +
+ + +
+ +
+

Approach

+
    +
  1. Identify available dates and temporal frequency of observations for the given collection using the GHGC API /stac endpoint. The collection processed in this notebook is the gridded methane emissions data product.
  2. +
  3. Pass the STAC item into the raster API /stac/tilejson.jsonendpoint.
  4. +
  5. Using folium.plugins.DualMap, we will visualize two tiles (side-by-side), allowing us to compare time points.
  6. +
  7. After the visualization, we will perform zonal statistics for a given polygon.
  8. +
+
+
+

About the Data

+

The NASA Carbon Monitoring System Flux (CMS-Flux) team analyzed remote sensing observations from Japan’s Greenhouse gases Observing SATellite (GOSAT) to produce the global Committee on Earth Observation Satellites (CEOS) CH₄ Emissions data product. They used an analytic Bayesian inversion approach and the GEOS-Chem global chemistry transport model to quantify annual methane (CH₄) emissions and their uncertainties at a spatial resolution of 1° by 1° and then projected these to each country for 2019.

+
+
+

Installing the Required Libraries

+

Please run the next cell to install all the required libraries to run the notebook.

+
+
%pip install requests
+%pip install folium
+%pip install rasterstats
+%pip install pystac_client
+
+
Requirement already satisfied: requests in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (2.31.0)
+Requirement already satisfied: certifi>=2017.4.17 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from requests) (2023.7.22)
+Requirement already satisfied: charset-normalizer<4,>=2 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from requests) (3.1.0)
+Requirement already satisfied: urllib3<3,>=1.21.1 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from requests) (1.26.16)
+Requirement already satisfied: idna<4,>=2.5 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from requests) (3.4)
+Note: you may need to restart the kernel to use updated packages.
+Requirement already satisfied: folium in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (0.14.0)
+Requirement already satisfied: numpy in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from folium) (1.24.3)
+Requirement already satisfied: requests in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from folium) (2.31.0)
+Requirement already satisfied: jinja2>=2.9 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from folium) (3.1.2)
+Requirement already satisfied: branca>=0.6.0 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from folium) (0.6.0)
+Requirement already satisfied: MarkupSafe>=2.0 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from jinja2>=2.9->folium) (2.1.3)
+Requirement already satisfied: charset-normalizer<4,>=2 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from requests->folium) (3.1.0)
+Requirement already satisfied: certifi>=2017.4.17 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from requests->folium) (2023.7.22)
+Requirement already satisfied: idna<4,>=2.5 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from requests->folium) (3.4)
+Requirement already satisfied: urllib3<3,>=1.21.1 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from requests->folium) (1.26.16)
+Note: you may need to restart the kernel to use updated packages.
+Requirement already satisfied: rasterstats in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (0.19.0)
+Requirement already satisfied: simplejson in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from rasterstats) (3.19.1)
+Requirement already satisfied: click>7.1 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from rasterstats) (8.1.3)
+Requirement already satisfied: fiona in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from rasterstats) (1.9.4.post1)
+Requirement already satisfied: affine in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from rasterstats) (2.4.0)
+Requirement already satisfied: cligj>=0.4 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from rasterstats) (0.7.2)
+Requirement already satisfied: shapely in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from rasterstats) (2.0.1)
+Requirement already satisfied: rasterio>=1.0 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from rasterstats) (1.3.6)
+Requirement already satisfied: numpy>=1.9 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from rasterstats) (1.24.3)
+Requirement already satisfied: setuptools in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from rasterio>=1.0->rasterstats) (66.0.0)
+Requirement already satisfied: certifi in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from rasterio>=1.0->rasterstats) (2023.7.22)
+Requirement already satisfied: snuggs>=1.4.1 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from rasterio>=1.0->rasterstats) (1.4.7)
+Requirement already satisfied: attrs in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from rasterio>=1.0->rasterstats) (22.2.0)
+Requirement already satisfied: click-plugins in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from rasterio>=1.0->rasterstats) (1.1.1)
+Requirement already satisfied: six in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from fiona->rasterstats) (1.16.0)
+Requirement already satisfied: importlib-metadata in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from fiona->rasterstats) (6.0.0)
+Requirement already satisfied: pyparsing>=2.1.6 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from snuggs>=1.4.1->rasterio>=1.0->rasterstats) (3.0.9)
+Requirement already satisfied: zipp>=0.5 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from importlib-metadata->fiona->rasterstats) (3.15.0)
+Note: you may need to restart the kernel to use updated packages.
+Requirement already satisfied: pystac_client in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (0.7.2)
+Requirement already satisfied: pystac[validation]>=1.7.2 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from pystac_client) (1.7.3)
+Requirement already satisfied: requests>=2.28.2 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from pystac_client) (2.31.0)
+Requirement already satisfied: python-dateutil>=2.8.2 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from pystac_client) (2.8.2)
+Requirement already satisfied: jsonschema>=4.0.1 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from pystac[validation]>=1.7.2->pystac_client) (4.17.3)
+Requirement already satisfied: six>=1.5 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from python-dateutil>=2.8.2->pystac_client) (1.16.0)
+Requirement already satisfied: urllib3<3,>=1.21.1 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from requests>=2.28.2->pystac_client) (1.26.16)
+Requirement already satisfied: idna<4,>=2.5 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from requests>=2.28.2->pystac_client) (3.4)
+Requirement already satisfied: charset-normalizer<4,>=2 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from requests>=2.28.2->pystac_client) (3.1.0)
+Requirement already satisfied: certifi>=2017.4.17 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from requests>=2.28.2->pystac_client) (2023.7.22)
+Requirement already satisfied: pyrsistent!=0.17.0,!=0.17.1,!=0.17.2,>=0.14.0 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from jsonschema>=4.0.1->pystac[validation]>=1.7.2->pystac_client) (0.19.3)
+Requirement already satisfied: attrs>=17.4.0 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from jsonschema>=4.0.1->pystac[validation]>=1.7.2->pystac_client) (22.2.0)
+Note: you may need to restart the kernel to use updated packages.
+
+
+
+

Querying the STAC API

+
+
import requests
+from folium import Map, TileLayer
+from pystac_client import Client
+
+
+
# Provide STAC and RASTER API endpoints
+STAC_API_URL = "http://ghg.center/api/stac"
+RASTER_API_URL = "https://ghg.center/api/raster"
+
+# Please use the collection name similar to the one used in STAC collection.
+
+# Name of the collection for gosat budget methane. 
+collection_name = "gosat-based-ch4budget-yeargrid-v1"
+
+
+
# Fetching the collection from STAC collections using appropriate endpoint.
+collection = requests.get(f"{STAC_API_URL}/collections/{collection_name}").json()
+collection
+
+
{'id': 'gosat-based-ch4budget-yeargrid-v1',
+ 'type': 'Collection',
+ 'links': [{'rel': 'items',
+   'type': 'application/geo+json',
+   'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/collections/gosat-based-ch4budget-yeargrid-v1/items'},
+  {'rel': 'parent',
+   'type': 'application/json',
+   'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/'},
+  {'rel': 'root',
+   'type': 'application/json',
+   'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/'},
+  {'rel': 'self',
+   'type': 'application/json',
+   'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/collections/gosat-based-ch4budget-yeargrid-v1'}],
+ 'title': 'GOSAT-based Top-down Methane Budgets.',
+ 'assets': None,
+ 'extent': {'spatial': {'bbox': [[-180.5, -90.5, 179.5, 89.5]]},
+  'temporal': {'interval': [['2019-01-01T00:00:00+00:00',
+     '2019-12-31T00:00:00+00:00']]}},
+ 'license': 'CC-BY-4.0',
+ 'keywords': None,
+ 'providers': None,
+ 'summaries': {'datetime': ['2019-01-01T00:00:00Z']},
+ 'description': 'Annual methane emissions gridded globally at 1° resolution for 2019, version.',
+ 'item_assets': {'post-gas': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'description': 'TBD'},
+  'post-geo': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'description': 'TBD'},
+  'post-oil': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'description': 'TBD'},
+  'post-coal': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'description': 'TBD'},
+  'post-fire': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'description': 'TBD'},
+  'post-rice': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'description': 'TBD'},
+  'prior-gas': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'description': 'TBD'},
+  'prior-geo': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'description': 'TBD'},
+  'prior-oil': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'description': 'TBD'},
+  'post-total': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'description': 'TBD'},
+  'post-waste': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'description': 'TBD'},
+  'prior-coal': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'description': 'TBD'},
+  'prior-fire': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'description': 'TBD'},
+  'prior-rice': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'description': 'TBD'},
+  'prior-total': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'description': 'TBD'},
+  'prior-waste': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'description': 'TBD'},
+  'post-wetland': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'description': 'TBD'},
+  'prior-wetland': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'description': 'TBD'},
+  'post-livestock': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'description': 'TBD'},
+  'prior-livestock': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'description': 'TBD'},
+  'post-gas-uncertainty': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'description': 'TBD'},
+  'post-geo-uncertainty': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'description': 'TBD'},
+  'post-oil-uncertainty': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'description': 'TBD'},
+  'post-coal-uncertainty': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'description': 'TBD'},
+  'post-fire-uncertainty': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'description': 'TBD'},
+  'post-rice-uncertainty': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'description': 'TBD'},
+  'prior-gas-uncertainty': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'description': 'TBD'},
+  'prior-geo-uncertainty': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'description': 'TBD'},
+  'prior-oil-uncertainty': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'description': 'TBD'},
+  'post-waste-uncertainty': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'description': 'TBD'},
+  'prior-coal-uncertainty': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'description': 'TBD'},
+  'prior-rice-uncertainty': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'description': 'TBD'},
+  'prior-waste-uncertainty': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'description': 'TBD'},
+  'post-wetland-uncertainty': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'description': 'TBD'},
+  'prior-wetland-uncertainty': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'description': 'TBD'},
+  'post-livestock-uncertainty': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'description': 'TBD'},
+  'prior-livestock-uncertainty': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'description': 'TBD'}},
+ 'stac_version': '1.0.0',
+ 'stac_extensions': None,
+ 'dashboard:is_periodic': False,
+ 'dashboard:time_density': 'year'}
+
+
+

Examining the contents of our collection under the temporal variable, we see that the data is available from January 2012 to December 2018. By looking at the dashboard:time density, we observe that the data is available for only one year, i.e. 2019.

+
+
def get_item_count(collection_id):
+    count = 0
+    items_url = f"{STAC_API_URL}/collections/{collection_id}/items"
+
+    while True:
+        response = requests.get(items_url)
+
+        if not response.ok:
+            print("error getting items")
+            exit()
+
+        stac = response.json()
+        count += int(stac["context"].get("returned", 0))
+        next = [link for link in stac["links"] if link["rel"] == "next"]
+
+        if not next:
+            break
+        items_url = next[0]["href"]
+
+    return count
+
+
+
# Check total number of items available
+number_of_items = get_item_count(collection_name)
+items = requests.get(f"{STAC_API_URL}/collections/{collection_name}/items?limit={number_of_items}").json()["features"]
+print(f"Found {len(items)} items")
+
+
Found 1 items
+
+
+
+
# Examining the first item in the collection
+items[0]
+
+
{'id': 'gosat-based-ch4budget-yeargrid-v1-2019',
+ 'bbox': [-180.5, -90.5, 179.5, 89.5],
+ 'type': 'Feature',
+ 'links': [{'rel': 'collection',
+   'type': 'application/json',
+   'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/collections/gosat-based-ch4budget-yeargrid-v1'},
+  {'rel': 'parent',
+   'type': 'application/json',
+   'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/collections/gosat-based-ch4budget-yeargrid-v1'},
+  {'rel': 'root',
+   'type': 'application/json',
+   'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/'},
+  {'rel': 'self',
+   'type': 'application/geo+json',
+   'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/collections/gosat-based-ch4budget-yeargrid-v1/items/gosat-based-ch4budget-yeargrid-v1-2019'}],
+ 'assets': {'post-gas': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_post_gas_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 0.6140491962432861,
+      'min': -0.4103066623210907,
+      'count': 11.0,
+      'buckets': [1.0, 0.0, 2.0, 23.0, 64734.0, 30.0, 7.0, 2.0, 0.0, 1.0]},
+     'statistics': {'mean': 0.00043242290848866105,
+      'stddev': 0.006180576980113983,
+      'maximum': 0.6140491962432861,
+      'minimum': -0.4103066623210907,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'post-geo': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_post_geo_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 1.0034276247024536,
+      'min': -1.0016025304794312,
+      'count': 11.0,
+      'buckets': [1.0, 0.0, 1.0, 5.0, 63425.0, 1354.0, 10.0, 2.0, 1.0, 1.0]},
+     'statistics': {'mean': 0.0003479516308289021,
+      'stddev': 0.0093332938849926,
+      'maximum': 1.0034276247024536,
+      'minimum': -1.0016025304794312,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'post-oil': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_post_oil_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 3.457329273223877,
+      'min': -0.7987076640129089,
+      'count': 11.0,
+      'buckets': [2.0, 64681.0, 108.0, 4.0, 3.0, 1.0, 0.0, 0.0, 0.0, 1.0]},
+     'statistics': {'mean': 0.0004447368555702269,
+      'stddev': 0.01879083551466465,
+      'maximum': 3.457329273223877,
+      'minimum': -0.7987076640129089,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'post-coal': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_post_coal_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 1.1035711765289307,
+      'min': -0.9143016934394836,
+      'count': 11.0,
+      'buckets': [1.0, 1.0, 1.0, 1.0, 64710.0, 62.0, 19.0, 3.0, 1.0, 1.0]},
+     'statistics': {'mean': 0.0003904950572177768,
+      'stddev': 0.01172551792114973,
+      'maximum': 1.1035711765289307,
+      'minimum': -0.9143016934394836,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'post-fire': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_post_fire_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 0.7065173387527466,
+      'min': -0.08211488276720047,
+      'count': 11.0,
+      'buckets': [103.0, 64685.0, 11.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0]},
+     'statistics': {'mean': 0.00020585705351550132,
+      'stddev': 0.00356540665961802,
+      'maximum': 0.7065173387527466,
+      'minimum': -0.08211488276720047,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'post-rice': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_post_rice_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 1.3836066722869873,
+      'min': -1.1384793519973755,
+      'count': 11.0,
+      'buckets': [1.0, 4.0, 12.0, 20.0, 64581.0, 132.0, 30.0, 11.0, 4.0, 5.0]},
+     'statistics': {'mean': 0.0010437712771818042,
+      'stddev': 0.024994080886244774,
+      'maximum': 1.3836066722869873,
+      'minimum': -1.1384793519973755,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'prior-gas': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_prior_gas_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 0.2977725863456726,
+      'min': 0.0,
+      'count': 11.0,
+      'buckets': [64659.0, 93.0, 27.0, 8.0, 2.0, 4.0, 2.0, 2.0, 2.0, 1.0]},
+     'statistics': {'mean': 0.00037746498128399253,
+      'stddev': 0.00403926195576787,
+      'maximum': 0.2977725863456726,
+      'minimum': 0.0,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'prior-geo': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_prior_geo_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 1.8356599807739258,
+      'min': 0.0,
+      'count': 11.0,
+      'buckets': [64780.0, 15.0, 4.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0]},
+     'statistics': {'mean': 0.0004932624287903309,
+      'stddev': 0.009640775620937347,
+      'maximum': 1.8356599807739258,
+      'minimum': 0.0,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'prior-oil': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_prior_oil_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 1.287477731704712,
+      'min': 0.0,
+      'count': 11.0,
+      'buckets': [64734.0, 40.0, 15.0, 3.0, 1.0, 4.0, 0.0, 1.0, 1.0, 1.0]},
+     'statistics': {'mean': 0.0006414719391614199,
+      'stddev': 0.01284099742770195,
+      'maximum': 1.287477731704712,
+      'minimum': 0.0,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'post-total': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_post_total_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 3.621621608734131,
+      'min': -1.157373309135437,
+      'count': 11.0,
+      'buckets': [8.0, 69.0, 64300.0, 366.0, 41.0, 13.0, 2.0, 0.0, 0.0, 1.0]},
+     'statistics': {'mean': 0.008661163039505482,
+      'stddev': 0.057076238095760345,
+      'maximum': 3.621621608734131,
+      'minimum': -1.157373309135437,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'post-waste': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_post_waste_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 1.2296125888824463,
+      'min': -0.5908117294311523,
+      'count': 11.0,
+      'buckets': [1.0, 2.0, 10.0, 64753.0, 26.0, 5.0, 1.0, 1.0, 0.0, 1.0]},
+     'statistics': {'mean': 0.0007660945411771536,
+      'stddev': 0.010033484548330307,
+      'maximum': 1.2296125888824463,
+      'minimum': -0.5908117294311523,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'prior-coal': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_prior_coal_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 1.3838224411010742,
+      'min': 0.0,
+      'count': 11.0,
+      'buckets': [64746.0, 29.0, 11.0, 2.0, 5.0, 2.0, 2.0, 2.0, 0.0, 1.0]},
+     'statistics': {'mean': 0.0004846722586080432,
+      'stddev': 0.01380141545087099,
+      'maximum': 1.3838224411010742,
+      'minimum': 0.0,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'prior-fire': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_prior_fire_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 0.498909056186676,
+      'min': 0.0,
+      'count': 11.0,
+      'buckets': [64786.0, 7.0, 1.0, 3.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0]},
+     'statistics': {'mean': 0.0002329142007511109,
+      'stddev': 0.0032598471734672785,
+      'maximum': 0.498909056186676,
+      'minimum': 0.0,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'prior-rice': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_prior_rice_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 0.5223113298416138,
+      'min': 0.0,
+      'count': 11.0,
+      'buckets': [64539.0, 154.0, 55.0, 25.0, 16.0, 8.0, 2.0, 0.0, 0.0, 1.0]},
+     'statistics': {'mean': 0.000768911384511739,
+      'stddev': 0.008794998750090599,
+      'maximum': 0.5223113298416138,
+      'minimum': 0.0,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'prior-total': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_prior_total_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 2.121816635131836,
+      'min': 0.0,
+      'count': 11.0,
+      'buckets': [64390.0, 297.0, 63.0, 26.0, 13.0, 7.0, 3.0, 0.0, 0.0, 1.0]},
+     'statistics': {'mean': 0.008324408903717995,
+      'stddev': 0.04165573790669441,
+      'maximum': 2.121816635131836,
+      'minimum': 0.0,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'prior-waste': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_prior_waste_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 1.4146164655685425,
+      'min': 0.0,
+      'count': 11.0,
+      'buckets': [64750.0, 36.0, 6.0, 4.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0]},
+     'statistics': {'mean': 0.0008899783715605736,
+      'stddev': 0.011600765399634838,
+      'maximum': 1.4146164655685425,
+      'minimum': 0.0,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'post-wetland': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_post_wetland_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 2.0359816551208496,
+      'min': -0.8375182747840881,
+      'count': 11.0,
+      'buckets': [5.0, 15.0, 63361.0, 1288.0, 94.0, 24.0, 7.0, 2.0, 2.0, 2.0]},
+     'statistics': {'mean': 0.0027753026224672794,
+      'stddev': 0.033493757247924805,
+      'maximum': 2.0359816551208496,
+      'minimum': -0.8375182747840881,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'prior-wetland': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_prior_wetland_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 1.2217899560928345,
+      'min': 0.0,
+      'count': 11.0,
+      'buckets': [64489.0, 188.0, 52.0, 29.0, 17.0, 11.0, 3.0, 4.0, 3.0, 4.0]},
+     'statistics': {'mean': 0.0030836397781968117,
+      'stddev': 0.026006272062659264,
+      'maximum': 1.2217899560928345,
+      'minimum': 0.0,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'post-livestock': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_post_livestock_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 0.4482361972332001,
+      'min': -0.2484263777732849,
+      'count': 11.0,
+      'buckets': [2.0,
+       10.0,
+       56.0,
+       63290.0,
+       1110.0,
+       239.0,
+       61.0,
+       14.0,
+       13.0,
+       5.0]},
+     'statistics': {'mean': 0.0022545307874679565,
+      'stddev': 0.014899863861501217,
+      'maximum': 0.4482361972332001,
+      'minimum': -0.2484263777732849,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'prior-livestock': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_prior_livestock_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 0.1304568201303482,
+      'min': 0.0,
+      'count': 11.0,
+      'buckets': [62701.0,
+       1246.0,
+       462.0,
+       214.0,
+       61.0,
+       40.0,
+       41.0,
+       21.0,
+       11.0,
+       3.0]},
+     'statistics': {'mean': 0.0013520935317501426,
+      'stddev': 0.006176645867526531,
+      'maximum': 0.1304568201303482,
+      'minimum': 0.0,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'post-gas-uncertainty': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_post_unc_gas_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 0.026829414069652557,
+      'min': 0.0,
+      'count': 11.0,
+      'buckets': [64766.0, 20.0, 4.0, 6.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0]},
+     'statistics': {'mean': 8.39770473248791e-06,
+      'stddev': 0.00022043172793928534,
+      'maximum': 0.026829414069652557,
+      'minimum': 0.0,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'post-geo-uncertainty': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_post_unc_geo_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 0.25446972250938416,
+      'min': 0.0,
+      'count': 11.0,
+      'buckets': [64793.0, 5.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0]},
+     'statistics': {'mean': 1.9521785361575894e-05,
+      'stddev': 0.0011142849689349532,
+      'maximum': 0.25446972250938416,
+      'minimum': 0.0,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'post-oil-uncertainty': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_post_unc_oil_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 0.20816677808761597,
+      'min': 0.0,
+      'count': 11.0,
+      'buckets': [64775.0, 15.0, 2.0, 5.0, 1.0, 0.0, 0.0, 0.0, 1.0, 1.0]},
+     'statistics': {'mean': 3.7560705095529556e-05,
+      'stddev': 0.0014476124197244644,
+      'maximum': 0.20816677808761597,
+      'minimum': 0.0,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'post-coal-uncertainty': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_post_unc_coal_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 0.28081363439559937,
+      'min': 0.0,
+      'count': 11.0,
+      'buckets': [64778.0, 7.0, 5.0, 1.0, 3.0, 3.0, 2.0, 0.0, 0.0, 1.0]},
+     'statistics': {'mean': 4.5709952246397734e-05,
+      'stddev': 0.0022045010700821877,
+      'maximum': 0.28081363439559937,
+      'minimum': 0.0,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'post-fire-uncertainty': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_post_unc_fire_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 0.04287702962756157,
+      'min': 0.0,
+      'count': 11.0,
+      'buckets': [64794.0, 3.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0]},
+     'statistics': {'mean': 3.030148036486935e-06,
+      'stddev': 0.00021067954367026687,
+      'maximum': 0.04287702962756157,
+      'minimum': 0.0,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'post-rice-uncertainty': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_post_unc_rice_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 0.085321806371212,
+      'min': 0.0,
+      'count': 11.0,
+      'buckets': [64609.0, 88.0, 42.0, 26.0, 15.0, 9.0, 2.0, 4.0, 3.0, 2.0]},
+     'statistics': {'mean': 8.745533705223352e-05,
+      'stddev': 0.0015292511088773608,
+      'maximum': 0.085321806371212,
+      'minimum': 0.0,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'prior-gas-uncertainty': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_prior_unc_gas_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 0.035356033593416214,
+      'min': 0.0,
+      'count': 11.0,
+      'buckets': [64766.0, 17.0, 5.0, 3.0, 3.0, 0.0, 1.0, 1.0, 0.0, 4.0]},
+     'statistics': {'mean': 1.1367864317435306e-05,
+      'stddev': 0.0003570150875020772,
+      'maximum': 0.035356033593416214,
+      'minimum': 0.0,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'prior-geo-uncertainty': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_prior_unc_geo_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 1.6511273384094238,
+      'min': 0.0,
+      'count': 11.0,
+      'buckets': [64799.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0]},
+     'statistics': {'mean': 4.881064160144888e-05,
+      'stddev': 0.006545887794345617,
+      'maximum': 1.6511273384094238,
+      'minimum': 0.0,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'prior-oil-uncertainty': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_prior_unc_oil_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 0.8458506464958191,
+      'min': 0.0,
+      'count': 11.0,
+      'buckets': [64787.0, 5.0, 5.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 2.0]},
+     'statistics': {'mean': 9.116153523791581e-05,
+      'stddev': 0.00547912297770381,
+      'maximum': 0.8458506464958191,
+      'minimum': 0.0,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'post-waste-uncertainty': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_post_unc_waste_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 0.10136520117521286,
+      'min': 0.0,
+      'count': 11.0,
+      'buckets': [64759.0, 19.0, 6.0, 8.0, 2.0, 1.0, 2.0, 0.0, 1.0, 2.0]},
+     'statistics': {'mean': 3.903839024133049e-05,
+      'stddev': 0.0009961748728528619,
+      'maximum': 0.10136520117521286,
+      'minimum': 0.0,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'prior-coal-uncertainty': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_prior_unc_coal_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 0.9433419704437256,
+      'min': 0.0,
+      'count': 11.0,
+      'buckets': [64785.0, 5.0, 4.0, 2.0, 1.0, 2.0, 0.0, 0.0, 0.0, 1.0]},
+     'statistics': {'mean': 9.546576620778069e-05,
+      'stddev': 0.00589930871501565,
+      'maximum': 0.9433419704437256,
+      'minimum': 0.0,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'prior-rice-uncertainty': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_prior_unc_rice_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 0.2505281865596771,
+      'min': 0.0,
+      'count': 11.0,
+      'buckets': [64710.0, 52.0, 26.0, 5.0, 3.0, 3.0, 0.0, 0.0, 0.0, 1.0]},
+     'statistics': {'mean': 0.00012143573985667899,
+      'stddev': 0.002463066717609763,
+      'maximum': 0.2505281865596771,
+      'minimum': 0.0,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'prior-waste-uncertainty': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_prior_unc_waste_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 1.3018296957015991,
+      'min': 0.0,
+      'count': 11.0,
+      'buckets': [64793.0, 4.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0]},
+     'statistics': {'mean': 0.0001001738928607665,
+      'stddev': 0.006979630794376135,
+      'maximum': 1.3018296957015991,
+      'minimum': 0.0,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'post-wetland-uncertainty': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_post_unc_wetland_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 0.36633968353271484,
+      'min': 0.0,
+      'count': 11.0,
+      'buckets': [64677.0, 68.0, 19.0, 14.0, 5.0, 8.0, 3.0, 4.0, 0.0, 2.0]},
+     'statistics': {'mean': 0.00034577888436615467,
+      'stddev': 0.005308355204761028,
+      'maximum': 0.36633968353271484,
+      'minimum': 0.0,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'prior-wetland-uncertainty': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_prior_unc_wetland_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 1.5251290798187256,
+      'min': 0.0,
+      'count': 11.0,
+      'buckets': [64704.0, 49.0, 21.0, 11.0, 2.0, 3.0, 3.0, 3.0, 1.0, 3.0]},
+     'statistics': {'mean': 0.0009943766053766012,
+      'stddev': 0.020392030477523804,
+      'maximum': 1.5251290798187256,
+      'minimum': 0.0,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'post-livestock-uncertainty': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_post_unc_livestock_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 0.016047537326812744,
+      'min': 0.0,
+      'count': 11.0,
+      'buckets': [64206.0,
+       360.0,
+       119.0,
+       35.0,
+       30.0,
+       20.0,
+       14.0,
+       9.0,
+       6.0,
+       1.0]},
+     'statistics': {'mean': 5.696367225027643e-05,
+      'stddev': 0.00044628031901083887,
+      'maximum': 0.016047537326812744,
+      'minimum': 0.0,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'prior-livestock-uncertainty': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_prior_unc_livestock_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 0.021834801882505417,
+      'min': 0.0,
+      'count': 11.0,
+      'buckets': [64219.0,
+       326.0,
+       127.0,
+       34.0,
+       19.0,
+       25.0,
+       25.0,
+       17.0,
+       5.0,
+       3.0]},
+     'statistics': {'mean': 7.657577225472778e-05,
+      'stddev': 0.0006582040223293006,
+      'maximum': 0.021834801882505417,
+      'minimum': 0.0,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]}},
+ 'geometry': {'type': 'Polygon',
+  'coordinates': [[[-180.5, -90.5],
+    [179.5, -90.5],
+    [179.5, 89.5],
+    [-180.5, 89.5],
+    [-180.5, -90.5]]]},
+ 'collection': 'gosat-based-ch4budget-yeargrid-v1',
+ 'properties': {'end_datetime': '2019-12-31T00:00:00+00:00',
+  'start_datetime': '2019-01-01T00:00:00+00:00'},
+ 'stac_version': '1.0.0',
+ 'stac_extensions': []}
+
+
+

Below, we enter minimum and maximum values to provide our upper and lower bounds in rescale_values.

+
+
+

Exploring Changes in GOSAT Methane budgets (CH4) Levels Using the Raster API

+

In this notebook, we will explore the impacts of methane emissions and by examining changes over time in urban regions. We will visualize the outputs on a map using folium.

+
+
# To access the year value from each item more easily, this will let us query more explicity by year and month (e.g., 2020-02)
+items = {item["properties"]["start_datetime"][:10]: item for item in items} 
+asset_name = "prior-total"
+
+
+
# Fetching the min and max values for a specific item
+rescale_values = {"max":items[list(items.keys())[0]]["assets"][asset_name]["raster:bands"][0]["histogram"]["max"], "min":items[list(items.keys())[0]]["assets"][asset_name]["raster:bands"][0]["histogram"]["min"]}
+
+
+
items.keys()
+
+
dict_keys(['2019-01-01'])
+
+
+

Now, we will pass the item id, collection name, and rescaling_factor to the Raster API endpoint. We will do this for first January 2019.

+
+
color_map = "rainbow" # please select the color ramp from matplotlib library.
+january_2019_tile = requests.get(
+    f"{RASTER_API_URL}/stac/tilejson.json?collection={items['2019-01-01']['collection']}&item={items['2019-01-01']['id']}"
+    f"&assets={asset_name}"
+    f"&color_formula=gamma+r+1.05&colormap_name={color_map}"
+    f"&rescale={rescale_values['min']},{rescale_values['max']}", 
+).json()
+january_2019_tile
+
+
{'tilejson': '2.2.0',
+ 'version': '1.0.0',
+ 'scheme': 'xyz',
+ 'tiles': ['https://1w7hfngnp7.execute-api.us-west-2.amazonaws.com/api/raster/stac/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?collection=gosat-based-ch4budget-yeargrid-v1&item=gosat-based-ch4budget-yeargrid-v1-2019&assets=prior-total&color_formula=gamma+r+1.05&colormap_name=rainbow&rescale=0.0%2C2.121816635131836'],
+ 'minzoom': 0,
+ 'maxzoom': 24,
+ 'bounds': [-180.5, -90.5, 179.5, 89.5],
+ 'center': [-0.5, -0.5, 0]}
+
+
+
+
+

Visualizing CH₄ Emissions

+
+
# We will import folium to map and folium.plugins to allow side-by-side mapping
+import folium
+import folium.plugins
+
+# Set initial zoom and center of map for CH₄ Layer
+# Centre of map [latitude,longitude]
+map_ = folium.Map(location=(34, -118), zoom_start=6)
+
+# January 2019
+map_layer_2019 = TileLayer(
+    tiles=january_2019_tile["tiles"][0],
+    attr="GHG",
+    opacity=0.7,
+)
+map_layer_2019.add_to(map_)
+
+# # January 2012
+# map_layer_2012 = TileLayer(
+#     tiles=january_2012_tile["tiles"][0],
+#     attr="GHG",
+#     opacity=0.7,
+# )
+# map_layer_2012.add_to(map_.m2)
+
+# visualising the map
+map_
+
+
+
Make this Notebook Trusted to load map: File -> Trust Notebook
+
+
+
+
+
+

Calculating Zonal Statistics

+

To perform zonal statistics, first we need to create a polygon. In this use case we are creating a polygon in Texas (USA).

+
+
# Texas, USA
+texas_aoi = {
+    "type": "Feature",
+    "properties": {},
+    "geometry": {
+        "coordinates": [
+            [
+                # [13.686159004559698, -21.700046934333145],
+                # [13.686159004559698, -23.241974326585833],
+                # [14.753560168039911, -23.241974326585833],
+                # [14.753560168039911, -21.700046934333145],
+                # [13.686159004559698, -21.700046934333145],
+                [-95, 29],
+                [-95, 33],
+                [-104, 33],
+                [-104,29],
+                [-95, 29]
+            ]
+        ],
+        "type": "Polygon",
+    },
+}
+
+
+
# We will plug in the coordinates for a location inside the the polygon and a zoom level
+
+import folium
+
+aoi_map = Map(
+    tiles="OpenStreetMap",
+    location=[
+        30,-100
+    ],
+    zoom_start=6,
+)
+
+folium.GeoJson(texas_aoi, name="Texas, USA").add_to(aoi_map)
+aoi_map
+
+
Make this Notebook Trusted to load map: File -> Trust Notebook
+
+
+
+
# Check total number of items available
+items = requests.get(
+    f"{STAC_API_URL}/collections/{collection_name}/items?limit=300"
+).json()["features"]
+print(f"Found {len(items)} items")
+
+
Found 1 items
+
+
+
+
# Explore the first item
+items[0]
+
+
{'id': 'gosat-based-ch4budget-yeargrid-v1-2019',
+ 'bbox': [-180.5, -90.5, 179.5, 89.5],
+ 'type': 'Feature',
+ 'links': [{'rel': 'collection',
+   'type': 'application/json',
+   'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/collections/gosat-based-ch4budget-yeargrid-v1'},
+  {'rel': 'parent',
+   'type': 'application/json',
+   'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/collections/gosat-based-ch4budget-yeargrid-v1'},
+  {'rel': 'root',
+   'type': 'application/json',
+   'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/'},
+  {'rel': 'self',
+   'type': 'application/geo+json',
+   'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/collections/gosat-based-ch4budget-yeargrid-v1/items/gosat-based-ch4budget-yeargrid-v1-2019'}],
+ 'assets': {'post-gas': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_post_gas_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 0.6140491962432861,
+      'min': -0.4103066623210907,
+      'count': 11.0,
+      'buckets': [1.0, 0.0, 2.0, 23.0, 64734.0, 30.0, 7.0, 2.0, 0.0, 1.0]},
+     'statistics': {'mean': 0.00043242290848866105,
+      'stddev': 0.006180576980113983,
+      'maximum': 0.6140491962432861,
+      'minimum': -0.4103066623210907,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'post-geo': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_post_geo_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 1.0034276247024536,
+      'min': -1.0016025304794312,
+      'count': 11.0,
+      'buckets': [1.0, 0.0, 1.0, 5.0, 63425.0, 1354.0, 10.0, 2.0, 1.0, 1.0]},
+     'statistics': {'mean': 0.0003479516308289021,
+      'stddev': 0.0093332938849926,
+      'maximum': 1.0034276247024536,
+      'minimum': -1.0016025304794312,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'post-oil': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_post_oil_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 3.457329273223877,
+      'min': -0.7987076640129089,
+      'count': 11.0,
+      'buckets': [2.0, 64681.0, 108.0, 4.0, 3.0, 1.0, 0.0, 0.0, 0.0, 1.0]},
+     'statistics': {'mean': 0.0004447368555702269,
+      'stddev': 0.01879083551466465,
+      'maximum': 3.457329273223877,
+      'minimum': -0.7987076640129089,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'post-coal': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_post_coal_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 1.1035711765289307,
+      'min': -0.9143016934394836,
+      'count': 11.0,
+      'buckets': [1.0, 1.0, 1.0, 1.0, 64710.0, 62.0, 19.0, 3.0, 1.0, 1.0]},
+     'statistics': {'mean': 0.0003904950572177768,
+      'stddev': 0.01172551792114973,
+      'maximum': 1.1035711765289307,
+      'minimum': -0.9143016934394836,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'post-fire': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_post_fire_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 0.7065173387527466,
+      'min': -0.08211488276720047,
+      'count': 11.0,
+      'buckets': [103.0, 64685.0, 11.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0]},
+     'statistics': {'mean': 0.00020585705351550132,
+      'stddev': 0.00356540665961802,
+      'maximum': 0.7065173387527466,
+      'minimum': -0.08211488276720047,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'post-rice': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_post_rice_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 1.3836066722869873,
+      'min': -1.1384793519973755,
+      'count': 11.0,
+      'buckets': [1.0, 4.0, 12.0, 20.0, 64581.0, 132.0, 30.0, 11.0, 4.0, 5.0]},
+     'statistics': {'mean': 0.0010437712771818042,
+      'stddev': 0.024994080886244774,
+      'maximum': 1.3836066722869873,
+      'minimum': -1.1384793519973755,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'prior-gas': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_prior_gas_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 0.2977725863456726,
+      'min': 0.0,
+      'count': 11.0,
+      'buckets': [64659.0, 93.0, 27.0, 8.0, 2.0, 4.0, 2.0, 2.0, 2.0, 1.0]},
+     'statistics': {'mean': 0.00037746498128399253,
+      'stddev': 0.00403926195576787,
+      'maximum': 0.2977725863456726,
+      'minimum': 0.0,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'prior-geo': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_prior_geo_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 1.8356599807739258,
+      'min': 0.0,
+      'count': 11.0,
+      'buckets': [64780.0, 15.0, 4.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0]},
+     'statistics': {'mean': 0.0004932624287903309,
+      'stddev': 0.009640775620937347,
+      'maximum': 1.8356599807739258,
+      'minimum': 0.0,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'prior-oil': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_prior_oil_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 1.287477731704712,
+      'min': 0.0,
+      'count': 11.0,
+      'buckets': [64734.0, 40.0, 15.0, 3.0, 1.0, 4.0, 0.0, 1.0, 1.0, 1.0]},
+     'statistics': {'mean': 0.0006414719391614199,
+      'stddev': 0.01284099742770195,
+      'maximum': 1.287477731704712,
+      'minimum': 0.0,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'post-total': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_post_total_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 3.621621608734131,
+      'min': -1.157373309135437,
+      'count': 11.0,
+      'buckets': [8.0, 69.0, 64300.0, 366.0, 41.0, 13.0, 2.0, 0.0, 0.0, 1.0]},
+     'statistics': {'mean': 0.008661163039505482,
+      'stddev': 0.057076238095760345,
+      'maximum': 3.621621608734131,
+      'minimum': -1.157373309135437,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'post-waste': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_post_waste_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 1.2296125888824463,
+      'min': -0.5908117294311523,
+      'count': 11.0,
+      'buckets': [1.0, 2.0, 10.0, 64753.0, 26.0, 5.0, 1.0, 1.0, 0.0, 1.0]},
+     'statistics': {'mean': 0.0007660945411771536,
+      'stddev': 0.010033484548330307,
+      'maximum': 1.2296125888824463,
+      'minimum': -0.5908117294311523,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'prior-coal': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_prior_coal_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 1.3838224411010742,
+      'min': 0.0,
+      'count': 11.0,
+      'buckets': [64746.0, 29.0, 11.0, 2.0, 5.0, 2.0, 2.0, 2.0, 0.0, 1.0]},
+     'statistics': {'mean': 0.0004846722586080432,
+      'stddev': 0.01380141545087099,
+      'maximum': 1.3838224411010742,
+      'minimum': 0.0,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'prior-fire': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_prior_fire_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 0.498909056186676,
+      'min': 0.0,
+      'count': 11.0,
+      'buckets': [64786.0, 7.0, 1.0, 3.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0]},
+     'statistics': {'mean': 0.0002329142007511109,
+      'stddev': 0.0032598471734672785,
+      'maximum': 0.498909056186676,
+      'minimum': 0.0,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'prior-rice': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_prior_rice_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 0.5223113298416138,
+      'min': 0.0,
+      'count': 11.0,
+      'buckets': [64539.0, 154.0, 55.0, 25.0, 16.0, 8.0, 2.0, 0.0, 0.0, 1.0]},
+     'statistics': {'mean': 0.000768911384511739,
+      'stddev': 0.008794998750090599,
+      'maximum': 0.5223113298416138,
+      'minimum': 0.0,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'prior-total': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_prior_total_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 2.121816635131836,
+      'min': 0.0,
+      'count': 11.0,
+      'buckets': [64390.0, 297.0, 63.0, 26.0, 13.0, 7.0, 3.0, 0.0, 0.0, 1.0]},
+     'statistics': {'mean': 0.008324408903717995,
+      'stddev': 0.04165573790669441,
+      'maximum': 2.121816635131836,
+      'minimum': 0.0,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'prior-waste': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_prior_waste_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 1.4146164655685425,
+      'min': 0.0,
+      'count': 11.0,
+      'buckets': [64750.0, 36.0, 6.0, 4.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0]},
+     'statistics': {'mean': 0.0008899783715605736,
+      'stddev': 0.011600765399634838,
+      'maximum': 1.4146164655685425,
+      'minimum': 0.0,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'post-wetland': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_post_wetland_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 2.0359816551208496,
+      'min': -0.8375182747840881,
+      'count': 11.0,
+      'buckets': [5.0, 15.0, 63361.0, 1288.0, 94.0, 24.0, 7.0, 2.0, 2.0, 2.0]},
+     'statistics': {'mean': 0.0027753026224672794,
+      'stddev': 0.033493757247924805,
+      'maximum': 2.0359816551208496,
+      'minimum': -0.8375182747840881,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'prior-wetland': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_prior_wetland_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 1.2217899560928345,
+      'min': 0.0,
+      'count': 11.0,
+      'buckets': [64489.0, 188.0, 52.0, 29.0, 17.0, 11.0, 3.0, 4.0, 3.0, 4.0]},
+     'statistics': {'mean': 0.0030836397781968117,
+      'stddev': 0.026006272062659264,
+      'maximum': 1.2217899560928345,
+      'minimum': 0.0,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'post-livestock': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_post_livestock_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 0.4482361972332001,
+      'min': -0.2484263777732849,
+      'count': 11.0,
+      'buckets': [2.0,
+       10.0,
+       56.0,
+       63290.0,
+       1110.0,
+       239.0,
+       61.0,
+       14.0,
+       13.0,
+       5.0]},
+     'statistics': {'mean': 0.0022545307874679565,
+      'stddev': 0.014899863861501217,
+      'maximum': 0.4482361972332001,
+      'minimum': -0.2484263777732849,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'prior-livestock': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_prior_livestock_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 0.1304568201303482,
+      'min': 0.0,
+      'count': 11.0,
+      'buckets': [62701.0,
+       1246.0,
+       462.0,
+       214.0,
+       61.0,
+       40.0,
+       41.0,
+       21.0,
+       11.0,
+       3.0]},
+     'statistics': {'mean': 0.0013520935317501426,
+      'stddev': 0.006176645867526531,
+      'maximum': 0.1304568201303482,
+      'minimum': 0.0,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'post-gas-uncertainty': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_post_unc_gas_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 0.026829414069652557,
+      'min': 0.0,
+      'count': 11.0,
+      'buckets': [64766.0, 20.0, 4.0, 6.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0]},
+     'statistics': {'mean': 8.39770473248791e-06,
+      'stddev': 0.00022043172793928534,
+      'maximum': 0.026829414069652557,
+      'minimum': 0.0,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'post-geo-uncertainty': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_post_unc_geo_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 0.25446972250938416,
+      'min': 0.0,
+      'count': 11.0,
+      'buckets': [64793.0, 5.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0]},
+     'statistics': {'mean': 1.9521785361575894e-05,
+      'stddev': 0.0011142849689349532,
+      'maximum': 0.25446972250938416,
+      'minimum': 0.0,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'post-oil-uncertainty': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_post_unc_oil_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 0.20816677808761597,
+      'min': 0.0,
+      'count': 11.0,
+      'buckets': [64775.0, 15.0, 2.0, 5.0, 1.0, 0.0, 0.0, 0.0, 1.0, 1.0]},
+     'statistics': {'mean': 3.7560705095529556e-05,
+      'stddev': 0.0014476124197244644,
+      'maximum': 0.20816677808761597,
+      'minimum': 0.0,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'post-coal-uncertainty': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_post_unc_coal_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 0.28081363439559937,
+      'min': 0.0,
+      'count': 11.0,
+      'buckets': [64778.0, 7.0, 5.0, 1.0, 3.0, 3.0, 2.0, 0.0, 0.0, 1.0]},
+     'statistics': {'mean': 4.5709952246397734e-05,
+      'stddev': 0.0022045010700821877,
+      'maximum': 0.28081363439559937,
+      'minimum': 0.0,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'post-fire-uncertainty': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_post_unc_fire_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 0.04287702962756157,
+      'min': 0.0,
+      'count': 11.0,
+      'buckets': [64794.0, 3.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0]},
+     'statistics': {'mean': 3.030148036486935e-06,
+      'stddev': 0.00021067954367026687,
+      'maximum': 0.04287702962756157,
+      'minimum': 0.0,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'post-rice-uncertainty': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_post_unc_rice_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 0.085321806371212,
+      'min': 0.0,
+      'count': 11.0,
+      'buckets': [64609.0, 88.0, 42.0, 26.0, 15.0, 9.0, 2.0, 4.0, 3.0, 2.0]},
+     'statistics': {'mean': 8.745533705223352e-05,
+      'stddev': 0.0015292511088773608,
+      'maximum': 0.085321806371212,
+      'minimum': 0.0,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'prior-gas-uncertainty': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_prior_unc_gas_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 0.035356033593416214,
+      'min': 0.0,
+      'count': 11.0,
+      'buckets': [64766.0, 17.0, 5.0, 3.0, 3.0, 0.0, 1.0, 1.0, 0.0, 4.0]},
+     'statistics': {'mean': 1.1367864317435306e-05,
+      'stddev': 0.0003570150875020772,
+      'maximum': 0.035356033593416214,
+      'minimum': 0.0,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'prior-geo-uncertainty': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_prior_unc_geo_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 1.6511273384094238,
+      'min': 0.0,
+      'count': 11.0,
+      'buckets': [64799.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0]},
+     'statistics': {'mean': 4.881064160144888e-05,
+      'stddev': 0.006545887794345617,
+      'maximum': 1.6511273384094238,
+      'minimum': 0.0,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'prior-oil-uncertainty': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_prior_unc_oil_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 0.8458506464958191,
+      'min': 0.0,
+      'count': 11.0,
+      'buckets': [64787.0, 5.0, 5.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 2.0]},
+     'statistics': {'mean': 9.116153523791581e-05,
+      'stddev': 0.00547912297770381,
+      'maximum': 0.8458506464958191,
+      'minimum': 0.0,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'post-waste-uncertainty': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_post_unc_waste_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 0.10136520117521286,
+      'min': 0.0,
+      'count': 11.0,
+      'buckets': [64759.0, 19.0, 6.0, 8.0, 2.0, 1.0, 2.0, 0.0, 1.0, 2.0]},
+     'statistics': {'mean': 3.903839024133049e-05,
+      'stddev': 0.0009961748728528619,
+      'maximum': 0.10136520117521286,
+      'minimum': 0.0,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'prior-coal-uncertainty': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_prior_unc_coal_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 0.9433419704437256,
+      'min': 0.0,
+      'count': 11.0,
+      'buckets': [64785.0, 5.0, 4.0, 2.0, 1.0, 2.0, 0.0, 0.0, 0.0, 1.0]},
+     'statistics': {'mean': 9.546576620778069e-05,
+      'stddev': 0.00589930871501565,
+      'maximum': 0.9433419704437256,
+      'minimum': 0.0,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'prior-rice-uncertainty': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_prior_unc_rice_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 0.2505281865596771,
+      'min': 0.0,
+      'count': 11.0,
+      'buckets': [64710.0, 52.0, 26.0, 5.0, 3.0, 3.0, 0.0, 0.0, 0.0, 1.0]},
+     'statistics': {'mean': 0.00012143573985667899,
+      'stddev': 0.002463066717609763,
+      'maximum': 0.2505281865596771,
+      'minimum': 0.0,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'prior-waste-uncertainty': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_prior_unc_waste_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 1.3018296957015991,
+      'min': 0.0,
+      'count': 11.0,
+      'buckets': [64793.0, 4.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0]},
+     'statistics': {'mean': 0.0001001738928607665,
+      'stddev': 0.006979630794376135,
+      'maximum': 1.3018296957015991,
+      'minimum': 0.0,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'post-wetland-uncertainty': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_post_unc_wetland_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 0.36633968353271484,
+      'min': 0.0,
+      'count': 11.0,
+      'buckets': [64677.0, 68.0, 19.0, 14.0, 5.0, 8.0, 3.0, 4.0, 0.0, 2.0]},
+     'statistics': {'mean': 0.00034577888436615467,
+      'stddev': 0.005308355204761028,
+      'maximum': 0.36633968353271484,
+      'minimum': 0.0,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'prior-wetland-uncertainty': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_prior_unc_wetland_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 1.5251290798187256,
+      'min': 0.0,
+      'count': 11.0,
+      'buckets': [64704.0, 49.0, 21.0, 11.0, 2.0, 3.0, 3.0, 3.0, 1.0, 3.0]},
+     'statistics': {'mean': 0.0009943766053766012,
+      'stddev': 0.020392030477523804,
+      'maximum': 1.5251290798187256,
+      'minimum': 0.0,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'post-livestock-uncertainty': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_post_unc_livestock_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 0.016047537326812744,
+      'min': 0.0,
+      'count': 11.0,
+      'buckets': [64206.0,
+       360.0,
+       119.0,
+       35.0,
+       30.0,
+       20.0,
+       14.0,
+       9.0,
+       6.0,
+       1.0]},
+     'statistics': {'mean': 5.696367225027643e-05,
+      'stddev': 0.00044628031901083887,
+      'maximum': 0.016047537326812744,
+      'minimum': 0.0,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]},
+  'prior-livestock-uncertainty': {'href': 's3://ghgc-data-store/gosat-based-ch4budget-yeargrid-v1/TopDownEmissions_GOSAT_prior_unc_livestock_GEOS_CHEM_2019.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'TBD',
+   'proj:bbox': [-180.5, -90.5, 179.5, 89.5],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'TBD',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 0.021834801882505417,
+      'min': 0.0,
+      'count': 11.0,
+      'buckets': [64219.0,
+       326.0,
+       127.0,
+       34.0,
+       19.0,
+       25.0,
+       25.0,
+       17.0,
+       5.0,
+       3.0]},
+     'statistics': {'mean': 7.657577225472778e-05,
+      'stddev': 0.0006582040223293006,
+      'maximum': 0.021834801882505417,
+      'minimum': 0.0,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.5, -90.5],
+      [179.5, -90.5],
+      [179.5, 89.5],
+      [-180.5, 89.5],
+      [-180.5, -90.5]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.5, 0.0, -1.0, 89.5, 0.0, 0.0, 1.0]}},
+ 'geometry': {'type': 'Polygon',
+  'coordinates': [[[-180.5, -90.5],
+    [179.5, -90.5],
+    [179.5, 89.5],
+    [-180.5, 89.5],
+    [-180.5, -90.5]]]},
+ 'collection': 'gosat-based-ch4budget-yeargrid-v1',
+ 'properties': {'end_datetime': '2019-12-31T00:00:00+00:00',
+  'start_datetime': '2019-01-01T00:00:00+00:00'},
+ 'stac_version': '1.0.0',
+ 'stac_extensions': []}
+
+
+
+
# The bounding box should be passed to the geojson param as a geojson Feature or FeatureCollection
+def generate_stats(item, geojson):
+    result = requests.post(
+        f"{RASTER_API_URL}/cog/statistics",
+        params={"url": item["assets"][asset_name]["href"]},
+        json=geojson,
+    ).json()
+    return {
+        **result["properties"],
+        "datetime": item["properties"]["start_datetime"][:10],
+    }
+
+

With the function above we can generate the statistics for the AOI.

+
+
%%time
+stats = [generate_stats(item, texas_aoi) for item in items]
+
+
CPU times: user 12 ms, sys: 1.59 ms, total: 13.6 ms
+Wall time: 234 ms
+
+
+
+
stats[0]
+
+
{'statistics': {'b1': {'min': 0.0056354631669819355,
+   'max': 0.2015725076198578,
+   'mean': 0.06195338567097982,
+   'count': 24.0,
+   'sum': 1.4868812561035156,
+   'std': 0.04585536439075071,
+   'median': 0.059481002390384674,
+   'majority': 0.0056354631669819355,
+   'minority': 0.0056354631669819355,
+   'unique': 24.0,
+   'histogram': [[6.0, 3.0, 4.0, 5.0, 3.0, 1.0, 1.0, 0.0, 0.0, 1.0],
+    [0.0056354631669819355,
+     0.025229167193174362,
+     0.044822871685028076,
+     0.06441657990217209,
+     0.0840102806687355,
+     0.10360398888587952,
+     0.12319768965244293,
+     0.14279139041900635,
+     0.16238510608673096,
+     0.18197880685329437,
+     0.2015725076198578]],
+   'valid_percent': 66.67,
+   'masked_pixels': 12.0,
+   'valid_pixels': 24.0,
+   'percentile_98': 0.17223968714475626,
+   'percentile_2': 0.006904181102290749}},
+ 'datetime': '2019-01-01'}
+
+
+
+
import pandas as pd
+
+
+def clean_stats(stats_json) -> pd.DataFrame:
+    df = pd.json_normalize(stats_json)
+    df.columns = [col.replace("statistics.b1.", "") for col in df.columns]
+    df["date"] = pd.to_datetime(df["datetime"])
+    return df
+
+
+df = clean_stats(stats)
+df.head(5)
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
datetimeminmaxmeancountsumstdmedianmajorityminorityuniquehistogramvalid_percentmasked_pixelsvalid_pixelspercentile_98percentile_2date
02019-01-010.0056350.2015730.06195324.01.4868810.0458550.0594810.0056350.00563524.0[[6.0, 3.0, 4.0, 5.0, 3.0, 1.0, 1.0, 0.0, 0.0,...66.6712.024.00.172240.0069042019-01-01
+ +
+
+
+
+
print(items[0]["properties"]["start_datetime"][:10])
+
+
2019-01-01
+
+
+
+
tile_2016 = requests.get(
+    f"{RASTER_API_URL}/stac/tilejson.json?collection={items[0]['collection']}&item={items[0]['id']}"
+    f"&assets={asset_name}"
+    f"&color_formula=gamma+r+1.05&colormap_name={color_map}"
+    f"&rescale={rescale_values['min']},{rescale_values['max']}",
+).json()
+tile_2016
+
+
{'tilejson': '2.2.0',
+ 'version': '1.0.0',
+ 'scheme': 'xyz',
+ 'tiles': ['https://1w7hfngnp7.execute-api.us-west-2.amazonaws.com/api/raster/stac/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?collection=gosat-based-ch4budget-yeargrid-v1&item=gosat-based-ch4budget-yeargrid-v1-2019&assets=prior-total&color_formula=gamma+r+1.05&colormap_name=rainbow&rescale=0.0%2C2.121816635131836'],
+ 'minzoom': 0,
+ 'maxzoom': 24,
+ 'bounds': [-180.5, -90.5, 179.5, 89.5],
+ 'center': [-0.5, -0.5, 0]}
+
+
+
+
# Use bbox initial zoom and map
+# Set up a map located w/in event bounds
+import folium
+
+aoi_map_bbox = Map(
+    tiles="OpenStreetMap",
+    location=[
+        30,-100
+    ],
+    zoom_start=8,
+)
+
+map_layer = TileLayer(
+    tiles=tile_2016["tiles"][0],
+    attr="GHG", opacity = 0.5
+)
+
+map_layer.add_to(aoi_map_bbox)
+
+aoi_map_bbox
+
+
Make this Notebook Trusted to load map: File -> Trust Notebook
+
+
+
+

Summary

+

In this notebook we have successfully explored, analyzed, and visualized the STAC collection for GOSAT-based Top-down Total and Natural Methane Emissions.

+ + +
+
+ + Back to top
+ + +
+
+ +
+ + + + \ No newline at end of file diff --git a/pr-preview/pr-46/user_data_notebooks/lpjwsl-wetlandch4-grid-v1_User_Notebook.html b/pr-preview/pr-46/user_data_notebooks/lpjwsl-wetlandch4-grid-v1_User_Notebook.html new file mode 100644 index 00000000..6f7b64f6 --- /dev/null +++ b/pr-preview/pr-46/user_data_notebooks/lpjwsl-wetlandch4-grid-v1_User_Notebook.html @@ -0,0 +1,1229 @@ + + + + + + + + + + +U.S. Greenhouse Gas Center Documentation - Wetland Methane Emissions, LPJ-wsl Model + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + +
+ + + +
+ +
+
+

Wetland Methane Emissions, LPJ-wsl Model

+
+ +
+
+ Global, daily and monthly 0.5 degree resolution methane emission estimates from wetlands, LPJ-wsl model +
+
+ + +
+ +
+
Author
+
+

Siddharth Chaudhary, Vishal Gaur

+
+
+ + + +
+ + +
+ +
+

Approach

+
    +
  1. Identify available dates and temporal frequency of observations for the given collection using the GHGC API /stac endpoint. The collection processed in this notebook is the Wetland Methane Emissions, LPJ-wsl Model data product.
  2. +
  3. Pass the STAC item into the raster API /stac/tilejson.jsonendpoint.
  4. +
  5. Using folium.plugins.DualMap, visualize two tiles (side-by-side), allowing time point comparison.
  6. +
  7. After the visualization, perform zonal statistics for a given polygon.
  8. +
+
+
+

About the Data

+

Methane (CH₄) emissions from wetlands are estimated to be the largest natural source of methane in the global CH₄ budget, contributing to roughly one third of the total of natural and anthropogenic emissions. Wetland CH₄ is produced by microbes breaking down organic matter in the oxygen deprived environment of inundated soils. Due to limited data availability, the details of the role of wetland CH₄ emissions has thus far been underrepresented. Using the Wald Schnee und Landschaft version (LPJ-wsl) of the Lund-Potsdam-Jena Dynamic Global Vegetation Model (LPJ-DGVM) global CH₄ emissions from wetlands are estimated at 0.5 x 0.5 degree resolution by simulating wetland extent and using characteristics of these inundated areas, such as soil moisture, temperature, and carbon content, to estimate CH₄ quantities emitted into the atmosphere. Highlighted areas displayed in this dataset show concentrated methane sources from tropical and high latitude ecosystems. The LPJ-wsl Wetland Methane Emissions data product presented here consists of global daily and monthly model estimates of terrestrial wetland CH₄ emissions from 1980 - 2021. These data are regularly used in conjunction with NASA’s Goddard Earth Observing System (GEOS) model to simulate the impact of wetlands and other methane sources on atmospheric methane concentrations, to compare against satellite and airborne data, and to improve understanding and prediction of wetland emissions.

+
+
+

Installing the Required Libraries

+

Please run the next cell to install all the required libraries to run the notebook.

+
+
%pip install requests
+%pip install folium
+%pip install rasterstats
+%pip install pystac_client
+
+
+

Querying the STAC API

+
+
import requests
+from folium import Map, TileLayer
+from pystac_client import Client
+
+
+
# Provide STAC and RASTER API endpoints
+STAC_API_URL = "http://ghg.center/api/stac"
+RASTER_API_URL = "https://ghg.center/api/raster"
+
+# Please use the collection name similar to the one used in STAC collection.
+
+# Name of the collection for wetland methane monthly emissions. 
+collection_name = "lpjwsl-wetlandch4-monthgrid-v1"
+
+
+
# Fetching the collection from STAC collections using appropriate endpoint.
+collection = requests.get(f"{STAC_API_URL}/collections/{collection_name}").json()
+collection
+
+

Examining the contents of our collection under summaries, we see that the data is available from January 1980 to December 2021. By looking at dashboard: time density, we can see that these observations are collected monthly.

+
+
def get_item_count(collection_id):
+    count = 0
+    items_url = f"{STAC_API_URL}/collections/{collection_id}/items"
+
+    while True:
+        response = requests.get(items_url)
+
+        if not response.ok:
+            print("error getting items")
+            exit()
+
+        stac = response.json()
+        count += int(stac["context"].get("returned", 0))
+        next = [link for link in stac["links"] if link["rel"] == "next"]
+
+        if not next:
+            break
+        items_url = next[0]["href"]
+
+    return count
+
+
+
# Check total number of items available
+number_of_items = get_item_count(collection_name)
+items = requests.get(f"{STAC_API_URL}/collections/{collection_name}/items?limit={number_of_items}").json()["features"]
+print(f"Found {len(items)} items")
+
+
+
# Examining the first item in the collection
+items[0]
+
+

Below, we enter minimum and maximum values to provide our upper and lower bounds in rescale_values.

+
+
rescale_values = {'max': 0.2, 'min': 0.0}
+
+
+
+

Exploring Changes in Methane (CH4) Emission Levels Using the Raster API

+

In this notebook, we will explore the temporal impacts of methane emissions. We will visualize the outputs on a map using folium.

+
+
# To access the year value from each item more easily, this will let us query more explicity by year and month (e.g., 2020-02)
+items = {item["properties"]["datetime"][:7]: item for item in items} 
+
+

Now, we will pass the item id, collection name, and rescaling_factor to the Raster API endpoint. We will do this twice, once for December 2001 and again for December 2021, so we can visualize each event independently.

+
+
color_map = "magma" # select the color ramp from matplotlib library.
+december_2001_tile = requests.get(
+    f"{RASTER_API_URL}/stac/tilejson.json?collection={items['2001-12']['collection']}&item={items['2001-12']['id']}"
+    "&assets=ch4-wetlands-emissions"
+    f"&color_formula=gamma+r+1.05&colormap_name={color_map}"
+    f"&rescale={rescale_values['min']},{rescale_values['max']}", 
+).json()
+december_2001_tile
+
+
+
december_2021_tile = requests.get(
+    f"{RASTER_API_URL}/stac/tilejson.json?collection={items['2021-12']['collection']}&item={items['2021-12']['id']}"
+    "&assets=ch4-wetlands-emissions"
+    f"&color_formula=gamma+r+1.05&colormap_name={color_map}"
+    f"&rescale={rescale_values['min']},{rescale_values['max']}", 
+).json()
+december_2021_tile
+
+
+
+

Visualizing CH₄ Emissions

+
+
# We will import folium to map and folium.plugins to allow side-by-side mapping
+import folium
+import folium.plugins
+
+# Set initial zoom and center of map for CH₄ Layer
+# Centre of map [latitude,longitude]
+map_ = folium.plugins.DualMap(location=(34, -118), zoom_start=6)
+
+# December 2001
+map_layer_2001 = TileLayer(
+    tiles=december_2001_tile["tiles"][0],
+    attr="GHG",
+    opacity=0.5,
+)
+map_layer_2001.add_to(map_.m1)
+
+# December 2021
+map_layer_2021 = TileLayer(
+    tiles=december_2021_tile["tiles"][0],
+    attr="GHG",
+    opacity=0.5,
+)
+map_layer_2021.add_to(map_.m2)
+
+# visualising the map
+map_
+
+
+
+
+
+

Calculating Zonal Statistics

+

To perform zonal statistics, first we need to create a polygon. In this use case, we are creating a polygon in Texas (USA).

+
+
# Texas, USA
+texas_aoi = {
+    "type": "Feature",
+    "properties": {},
+    "geometry": {
+        "coordinates": [
+            [
+                [-95, 29],
+                [-95, 33],
+                [-104, 33],
+                [-104,29],
+                [-95, 29]
+            ]
+        ],
+        "type": "Polygon",
+    },
+}
+
+
+
# We will plug in the coordinates for a location inside the the polygon and a zoom level
+
+import folium
+
+aoi_map = Map(
+    tiles="OpenStreetMap",
+    location=[
+        30,-101
+    ],
+    zoom_start=6,
+)
+
+folium.GeoJson(texas_aoi, name="Texas, USA").add_to(aoi_map)
+aoi_map
+
+
+
# Check total number of items available
+items = requests.get(
+    f"{STAC_API_URL}/collections/{collection_name}/items?limit=600"
+).json()["features"]
+print(f"Found {len(items)} items")
+
+
+
# Explore the first item
+items[0]
+
+
+
# The bounding box should be passed to the geojson param as a geojson Feature or FeatureCollection
+def generate_stats(item, geojson):
+    result = requests.post(
+        f"{RASTER_API_URL}/cog/statistics",
+        params={"url": item["assets"]["ch4-wetlands-emissions"]["href"]},
+        json=geojson,
+    ).json()
+    return {
+        **result["properties"],
+        "datetime": item["properties"]["datetime"],
+    }
+
+

With the function above, we can generate the statistics for the area of interest.

+
+
%%time
+stats = [generate_stats(item, texas_aoi) for item in items]
+
+
+
stats[0]
+
+
+
import pandas as pd
+
+
+def clean_stats(stats_json) -> pd.DataFrame:
+    df = pd.json_normalize(stats_json)
+    df.columns = [col.replace("statistics.b1.", "") for col in df.columns]
+    df["date"] = pd.to_datetime(df["datetime"])
+    return df
+
+
+df = clean_stats(stats)
+df.head(5)
+
+
+

Visualizing the Data as a Time Series

+

We can now explore the wetland methane emissions time series (January 1980 – December 2021) available for the Dallas, Texas area of the U.S. We can plot the data set using the code below:

+
+
import matplotlib.pyplot as plt
+
+fig = plt.figure(figsize=(20, 10))
+
+
+plt.plot(
+    df["date"],
+    df["max"],
+    color="red",
+    linestyle="-",
+    linewidth=0.5,
+    label="Max monthly CH₄ emissions",
+)
+
+plt.legend()
+plt.xlabel("Years")
+plt.ylabel("CH4 emissions g/m2")
+plt.title("CH4 emission Values for Texas, Dallas (1980-2021)")
+
+
+
print(items[2]["properties"]["datetime"])
+
+
+
october_tile = requests.get(
+    f"{RASTER_API_URL}/stac/tilejson.json?collection={items[2]['collection']}&item={items[2]['id']}"
+    "&assets=ch4-wetlands-emissions"
+    f"&color_formula=gamma+r+1.05&colormap_name={color_map}"
+    f"&rescale={rescale_values['min']},{rescale_values['max']}",
+).json()
+october_tile
+
+
+
# Use bbox initial zoom and map
+# Set up a map located w/in event bounds
+import folium
+
+aoi_map_bbox = Map(
+    tiles="OpenStreetMap",
+    location=[
+        30,-100
+    ],
+    zoom_start=8,
+)
+
+map_layer = TileLayer(
+    tiles=october_tile["tiles"][0],
+    attr="GHG", opacity = 0.5
+)
+
+map_layer.add_to(aoi_map_bbox)
+
+aoi_map_bbox
+
+
+
+

Summary

+

In this notebook, we have successfully explored, analyzed, and visualized the STAC collection for wetland methane emissions.

+ + +
+
+ + Back to top
+ + +
+
+ +
+ + + + \ No newline at end of file diff --git a/pr-preview/pr-46/user_data_notebooks/noaa-insitu_User_Notebook.html b/pr-preview/pr-46/user_data_notebooks/noaa-insitu_User_Notebook.html new file mode 100644 index 00000000..594b9d95 --- /dev/null +++ b/pr-preview/pr-46/user_data_notebooks/noaa-insitu_User_Notebook.html @@ -0,0 +1,1125 @@ + + + + + + + + + + + + +U.S. Greenhouse Gas Center Documentation - Atmospheric Carbon Dioxide Concentrations from NOAA Global Monitoring Laboratory + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + +
+ + + +
+ +
+
+

Atmospheric Carbon Dioxide Concentrations from NOAA Global Monitoring Laboratory

+
+ +
+
+ Atmospheric concentrations of carbon dioxide (CO₂) from discrete air samples collected since 1968 at globally distributed surface sites. +
+
+ + +
+ +
+
Author
+
+

Siddharth Chaudhary, Vishal Gaur

+
+
+ +
+
Published
+
+

September 22, 2023

+
+
+ + +
+ + +
+ +
+

Approach

+
    +
  1. Identify available dates and temporal frequency of observations for the given data. The collection processed in this notebook is the Atmospheric Carbon Dioxide Concentrations from NOAA Global Monitoring Laboratory.
  2. +
  3. Visualize the time series data
  4. +
+
+
+

About the Data

+

The Global Greenhouse Gas Reference Network (GGGRN) for the Carbon Cycle and Greenhouse Gases (CCGG) Group is part of NOAA’S Global Monitoring Laboratory (GML) in Boulder, CO. The Reference Network measures the atmospheric distribution and trends of the three main long-term drivers of climate change, carbon dioxide (CO₂), methane (CH₄), and nitrous oxide (N2O), as well as carbon monoxide (CO) and many other trace gases which help interpretation of the main GHGs. The Reference Network measurement program includes continuous in-situ measurements at 4 baseline observatories (global background sites) and 8 tall towers, as well as flask-air samples collected by volunteers at over 50 additional regional background sites and from small aircraft conducting regular vertical profiles. The air samples are returned to GML for analysis where measurements of about 55 trace gases are done. NOAA’s GGGRN maintains the World Meteorological Organization international calibration scales for CO₂, CH₄, CO, N2O, and SF6 in air. The measurements from the GGGRN serve as a comparison with measurements made by many other international laboratories, and with regional studies. They are widely used in modeling studies that infer space-time patterns of emissions and removals of greenhouse gases that are optimally consistent with the atmospheric observations, given wind patterns. These data serve as an early warning for climate “surprises”. The measurements are also helpful for the ongoing evaluation of remote sensing technologies.

+
+
+

Installing the required libraries

+

Please run the cell below to install the libraries required to run this notebook.

+
+
%pip install matplotlib
+%pip install pandas
+%pip install requests
+
+
Requirement already satisfied: matplotlib in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (3.7.1)
+Requirement already satisfied: contourpy>=1.0.1 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from matplotlib) (1.0.5)
+Requirement already satisfied: cycler>=0.10 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from matplotlib) (0.11.0)
+Requirement already satisfied: packaging>=20.0 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from matplotlib) (23.1)
+Requirement already satisfied: pillow>=6.2.0 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from matplotlib) (9.5.0)
+Requirement already satisfied: pyparsing>=2.3.1 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from matplotlib) (3.0.9)
+Requirement already satisfied: numpy>=1.20 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from matplotlib) (1.24.3)
+Requirement already satisfied: fonttools>=4.22.0 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from matplotlib) (4.25.0)
+Requirement already satisfied: python-dateutil>=2.7 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from matplotlib) (2.8.2)
+Requirement already satisfied: importlib-resources>=3.2.0 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from matplotlib) (5.12.0)
+Requirement already satisfied: kiwisolver>=1.0.1 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from matplotlib) (1.4.4)
+Requirement already satisfied: zipp>=3.1.0 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from importlib-resources>=3.2.0->matplotlib) (3.15.0)
+Requirement already satisfied: six>=1.5 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from python-dateutil>=2.7->matplotlib) (1.16.0)
+Note: you may need to restart the kernel to use updated packages.
+Requirement already satisfied: pandas in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (2.0.3)
+Requirement already satisfied: numpy>=1.20.3 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from pandas) (1.24.3)
+Requirement already satisfied: python-dateutil>=2.8.2 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from pandas) (2.8.2)
+Requirement already satisfied: tzdata>=2022.1 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from pandas) (2023.3)
+Requirement already satisfied: pytz>=2020.1 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from pandas) (2023.3)
+Requirement already satisfied: six>=1.5 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from python-dateutil>=2.8.2->pandas) (1.16.0)
+Note: you may need to restart the kernel to use updated packages.
+Requirement already satisfied: requests in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (2.31.0)
+Requirement already satisfied: certifi>=2017.4.17 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from requests) (2023.7.22)
+Requirement already satisfied: urllib3<3,>=1.21.1 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from requests) (1.26.16)
+Requirement already satisfied: idna<4,>=2.5 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from requests) (3.4)
+Requirement already satisfied: charset-normalizer<4,>=2 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from requests) (3.1.0)
+Note: you may need to restart the kernel to use updated packages.
+
+
+
+

Importing required libraries

+
+
import numpy as np
+import pandas as pd
+from glob import glob
+from io import StringIO
+import matplotlib.pyplot as plt
+import requests
+
+
+
+
+

Reading the NOAA data from GitHub repo

+
+
github_repo_owner = "NASA-IMPACT"
+github_repo_name = "noaa-viz"
+folder_path_ch4, folder_path_co2 = "flask/ch4", "flask/c02"
+combined_df_co2, combined_df_ch4 = pd.DataFrame(), pd.DataFrame()
+
+
+# Function to fetch and append a file from GitHub
+def append_github_file(file_url):
+    response = requests.get(file_url)
+    response.raise_for_status()
+    return response.text
+
+# Get the list of CH4 files in the specified directory using GitHub API
+github_api_url = f"https://api.github.com/repos/{github_repo_owner}/{github_repo_name}/contents/{folder_path_ch4}"
+response = requests.get(github_api_url)
+response.raise_for_status()
+file_list_ch4 = response.json()
+
+# Get the list of CO2 files in the specified directory using GitHub API
+github_api_url = f"https://api.github.com/repos/{github_repo_owner}/{github_repo_name}/contents/{folder_path_ch4}"
+response = requests.get(github_api_url)
+response.raise_for_status()
+file_list_co2 = response.json()
+
+
+
+

Concatenating the CH4 data into a single DataFrame

+
+
for file_info in file_list_ch4:
+    if file_info["name"].endswith("txt"):
+        file_content = append_github_file(file_info["download_url"])
+        Lines = file_content.splitlines()
+        index = Lines.index("# VARIABLE ORDER")+2
+        df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
+        combined_df_ch4 = pd.concat([combined_df_ch4, df], ignore_index=True)
+        
+
+
+
+

Concatenating the CO2 data into a single DataFrame

+
+
for file_info in file_list_co2:
+    if file_info["name"].endswith("txt"):
+        file_content = append_github_file(file_info["download_url"])
+        Lines = file_content.splitlines()
+        index = Lines.index("# VARIABLE ORDER")+2
+        df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
+        combined_df_co2 = pd.concat([combined_df_co2, df], ignore_index=True)
+        
+
+
+
+

Visualizing the NOAA data for CH4 and CO2

+
+
site_to_filter = 'ABP'
+filtered_df = combined_df_co2[combined_df_co2['site_code'] == site_to_filter]
+
+filtered_df['datetime'] = pd.to_datetime(filtered_df['datetime'])
+
+# Set the "Date" column as the index
+filtered_df.set_index('datetime', inplace=True)
+
+# Create a time series plot for 'Data' and 'Value'
+plt.figure(figsize=(12, 6))
+plt.plot(filtered_df.index, filtered_df['value'], label='Carbon Dioxide(CO2) Concentration (ppm)')
+plt.xlabel("Observed Date/Time")
+plt.ylabel("Carbon Dioxide(CO2) Concentration (ppm)")
+plt.title(f"Observed Co2 Concentration {site_to_filter}")
+plt.legend()
+plt.grid(True)
+# plt.show()
+
+
/var/folders/7b/5rrvrjx51l54jchgs0tqps0c0000gn/T/ipykernel_66140/2606016741.py:4: SettingWithCopyWarning: 
+A value is trying to be set on a copy of a slice from a DataFrame.
+Try using .loc[row_indexer,col_indexer] = value instead
+
+See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
+  filtered_df['datetime'] = pd.to_datetime(filtered_df['datetime'])
+
+
+

+
+
+
+
site_to_filter = 'ABP'
+filtered_df = combined_df_ch4[combined_df_ch4['site_code'] == site_to_filter]
+filtered_df['datetime'] = pd.to_datetime(filtered_df['datetime'])
+
+# Set the "Date" column as the index
+filtered_df.set_index('datetime', inplace=True)
+
+# Create a time series plot for 'Data' and 'Value'
+plt.figure(figsize=(12, 6))
+plt.plot(filtered_df.index, filtered_df['value'], label='Methane Ch4 Concentration (ppb)')
+plt.xlabel("Observation Date/Time")
+plt.ylabel("Methane Ch4 Concentration (ppb)")
+plt.title(f"Observed CH4 Concentration {site_to_filter}")
+plt.legend()
+plt.grid(True)
+plt.show()
+
+
/var/folders/7b/5rrvrjx51l54jchgs0tqps0c0000gn/T/ipykernel_66140/1635934907.py:3: SettingWithCopyWarning: 
+A value is trying to be set on a copy of a slice from a DataFrame.
+Try using .loc[row_indexer,col_indexer] = value instead
+
+See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
+  filtered_df['datetime'] = pd.to_datetime(filtered_df['datetime'])
+
+
+

+
+
+
+
+

Summary

+

In this notebook we have successfully visualized the data for Atmospheric Carbon Dioxide Concentrations from NOAA Global Monitoring Laboratory.

+ + +
+ + Back to top
+ + +
+
+ +
+ + + + \ No newline at end of file diff --git a/pr-preview/pr-46/user_data_notebooks/noaa-insitu_User_Notebook_files/figure-html/cell-7-output-2.png b/pr-preview/pr-46/user_data_notebooks/noaa-insitu_User_Notebook_files/figure-html/cell-7-output-2.png new file mode 100644 index 00000000..2c77c7fb Binary files /dev/null and b/pr-preview/pr-46/user_data_notebooks/noaa-insitu_User_Notebook_files/figure-html/cell-7-output-2.png differ diff --git a/pr-preview/pr-46/user_data_notebooks/noaa-insitu_User_Notebook_files/figure-html/cell-8-output-2.png b/pr-preview/pr-46/user_data_notebooks/noaa-insitu_User_Notebook_files/figure-html/cell-8-output-2.png new file mode 100644 index 00000000..cfe1877b Binary files /dev/null and b/pr-preview/pr-46/user_data_notebooks/noaa-insitu_User_Notebook_files/figure-html/cell-8-output-2.png differ diff --git a/pr-preview/pr-46/user_data_notebooks/oco2-mip-co2budget-yeargrid-v1_User_Notebook.html b/pr-preview/pr-46/user_data_notebooks/oco2-mip-co2budget-yeargrid-v1_User_Notebook.html new file mode 100644 index 00000000..8b9978b6 --- /dev/null +++ b/pr-preview/pr-46/user_data_notebooks/oco2-mip-co2budget-yeargrid-v1_User_Notebook.html @@ -0,0 +1,1242 @@ + + + + + + + + + + + + +U.S. Greenhouse Gas Center Documentation - OCO-2 MIP Top-Down CO₂ Budgets + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + +
+ + + +
+ +
+
+

OCO-2 MIP Top-Down CO₂ Budgets

+
+ +
+
+ Global, 1 degree resolution pilot top-down budgets of carbon dioxide emissions at 5 year intervals and national scales, version 1. +
+
+ + +
+ +
+
Author
+
+

Siddharth Chaudhary, Vishal Gaur

+
+
+ +
+
Published
+
+

August 1, 2023

+
+
+ + +
+ + +
+ +
+

Approach

+
    +
  1. Identify available dates and temporal frequency of observations for the given collection using the GHGC API /stac endpoint. The collection processed in this notebook is the OCO-2 MIP Top-Down CO₂ Budgets data product.
  2. +
  3. Pass the STAC item into the raster API /stac/tilejson.jsonendpoint.
  4. +
  5. Using folium.plugins.DualMap, we will visualize two tiles (side-by-side), allowing us to compare time points.
  6. +
  7. After the visualization, we will perform zonal statistics for a given polygon.
  8. +
+
+
+

About the Data

+

The Committee on Earth Observation Satellites (CEOS) Atmospheric Composition - Virtual Constellation (AC-VC) Greenhouse Gas (GHG) team has generated the CEOS CO₂ Budgets dataset, which provides annual top-down carbon dioxide (CO2) emissions and removals from 2015 - 2020 gridded globally at 1° resolution, and as national totals. Data is provided in units of grams of carbon dioxide per square meter per year (g CO2/m2/yr). Only a subset of the full dataset is displayed in the GHG Center explore view.

+
+
+

Installing the required libraries

+

Please run the cell below to install the libraries required to run this notebook.

+
+
%pip install requests
+%pip install folium
+%pip install rasterstats
+%pip install pystac_client
+
+
+
+

Querying the STAC API

+
+
import requests
+from folium import Map, TileLayer
+from pystac_client import Client
+
+
+
# Provide STAC and RASTER API endpoints
+STAC_API_URL = "http://ghg.center/api/stac"
+RASTER_API_URL = "https://ghg.center/api/raster"
+
+# Please use the collection name similar to the one used in STAC collection.
+# Name of the collection for CEOS National Top-Down CO₂ Budgets dataset. 
+collection_name = "oco2-mip-co2budget-yeargrid-v1"
+
+
+
# Fetching the collection from STAC collections using appropriate endpoint.
+collection = requests.get(f"{STAC_API_URL}/collections/{collection_name}").json()
+collection
+
+

Examining the contents of our collection under the temporal variable, we see that the data is available from January 2015 to December 2020. By looking at the dashboard:time density, we observe that the periodic frequency of these observations is yearly.

+
+
def get_item_count(collection_id):
+    count = 0
+    items_url = f"{STAC_API_URL}/collections/{collection_id}/items"
+
+    while True:
+        response = requests.get(items_url)
+
+        if not response.ok:
+            print("error getting items")
+            exit()
+
+        stac = response.json()
+        count += int(stac["context"].get("returned", 0))
+        next = [link for link in stac["links"] if link["rel"] == "next"]
+
+        if not next:
+            break
+        items_url = next[0]["href"]
+
+    return count
+
+
+
# Check total number of items available
+number_of_items = get_item_count(collection_name)
+items = requests.get(f"{STAC_API_URL}/collections/{collection_name}/items?limit={number_of_items}").json()["features"]
+print(f"Found {len(items)} items")
+
+
+
# Examining the first item in the collection
+items[0]
+
+

Below, we are entering the minimum and maximum values to provide our upper and lower bounds in rescale_values.

+
+
+

Exploring Changes in CO₂ Levels Using the Raster API

+

In this notebook, we will explore the global changes of CO₂ budgets over time in urban regions. We will visualize the outputs on a map using folium.

+
+
# to access the year value from each item more easily, this will let us query more explicity by year and month (e.g., 2020-02)
+items = {item["properties"]["datetime"]: item for item in items} 
+asset_name = "ff" #fossil fuel
+
+
+
# Fetching the min and max values for a specific item
+rescale_values = {"max":items[list(items.keys())[0]]["assets"][asset_name]["raster:bands"][0]["histogram"]["max"], "min":items[list(items.keys())[0]]["assets"][asset_name]["raster:bands"][0]["histogram"]["min"]}
+
+

Now, we will pass the item id, collection name, and rescaling_factor to the Raster API endpoint. We will do this twice, once for 2020 and again for 2019, so that we can visualize each event independently.

+
+
color_map = "magma"
+co2_flux_1 = requests.get(
+    f"{RASTER_API_URL}/stac/tilejson.json?collection={items[list(items.keys())[0]]['collection']}&item={items[list(items.keys())[0]]['id']}"
+    f"&assets={asset_name}"
+    f"&color_formula=gamma+r+1.05&colormap_name={color_map}"
+    f"&rescale={rescale_values['min']},{rescale_values['max']}", 
+).json()
+co2_flux_1
+
+
+
co2_flux_2 = requests.get(
+    f"{RASTER_API_URL}/stac/tilejson.json?collection={items[list(items.keys())[1]]['collection']}&item={items[list(items.keys())[1]]['id']}"
+    f"&assets={asset_name}"
+    f"&color_formula=gamma+r+1.05&colormap_name={color_map}"
+    f"&rescale={rescale_values['min']},{rescale_values['max']}", 
+).json()
+co2_flux_2
+
+
+
+

Visualizing CO₂ Emissions

+
+
# We'll import folium to map and folium.plugins to allow mapping side-by-side
+import folium
+import folium.plugins
+
+# Set initial zoom and center of map for CO₂ Layer
+# Centre of map [latitude,longitude]
+map_ = folium.plugins.DualMap(location=(34, -118), zoom_start=6)
+
+
+map_layer_2020 = TileLayer(
+    tiles=co2_flux_1["tiles"][0],
+    attr="GHG",
+    opacity=0.5,
+)
+map_layer_2020.add_to(map_.m1)
+
+map_layer_2019 = TileLayer(
+    tiles=co2_flux_2["tiles"][0],
+    attr="GHG",
+    opacity=0.5,
+)
+map_layer_2019.add_to(map_.m2)
+
+# visualising the map
+map_
+
+
+
+
+

Calculating Zonal Statistics

+

To perform zonal statistics, first we need to create a polygon. In this use case we are creating a polygon in Texas (USA).

+
+
# Texas, USA
+texas_aoi = {
+    "type": "Feature",
+    "properties": {},
+    "geometry": {
+        "coordinates": [
+            [
+                [-95, 29],
+                [-95, 33],
+                [-104, 33],
+                [-104,29],
+                [-95, 29]
+            ]
+        ],
+        "type": "Polygon",
+    },
+}
+
+
+
# We'll plug in the coordinates for a location
+# central to the study area and a reasonable zoom level
+
+import folium
+
+aoi_map = Map(
+    tiles="OpenStreetMap",
+    location=[
+        30,-100
+    ],
+    zoom_start=6,
+)
+
+folium.GeoJson(texas_aoi, name="Texas, USA").add_to(aoi_map)
+aoi_map
+
+
+
# Check total number of items available
+items = requests.get(
+    f"{STAC_API_URL}/collections/{collection_name}/items?limit=600"
+).json()["features"]
+print(f"Found {len(items)} items")
+
+
+
# Explore the first item
+items[0]
+
+
+
# The bounding box should be passed to the geojson param as a geojson Feature or FeatureCollection
+def generate_stats(item, geojson):
+    result = requests.post(
+        f"{RASTER_API_URL}/cog/statistics",
+        params={"url": item["assets"][asset_name]["href"]},
+        json=geojson,
+    ).json()
+    print(result)
+    return {
+        **result["properties"],
+        "datetime": item["properties"]["datetime"],
+    }
+
+
+
for item in items:
+    print(item["properties"]["datetime"])
+    break
+
+

With the function above we can generate the statistics for the AOI.

+
+
%%time
+stats = [generate_stats(item, texas_aoi) for item in items]
+
+
+
stats[0]
+
+
+
import pandas as pd
+
+
+def clean_stats(stats_json) -> pd.DataFrame:
+    df = pd.json_normalize(stats_json)
+    df.columns = [col.replace("statistics.b1.", "") for col in df.columns]
+    df["date"] = pd.to_datetime(df["datetime"])
+    return df
+
+
+df = clean_stats(stats)
+df.head(5)
+
+
+

Visualizing the Data as a Time Series

+

We can now explore the fossil fuel emission time series (January 2015 -December 2020) available for the Dallas, Texas area of the U.S. We can plot the data set using the code below:

+
+
import matplotlib.pyplot as plt
+
+fig = plt.figure(figsize=(20, 10))
+
+
+plt.plot(
+    df["datetime"],
+    df["max"],
+    color="red",
+    linestyle="-",
+    linewidth=0.5,
+    label="CO2 emissions",
+)
+
+plt.legend()
+plt.xlabel("Years")
+plt.ylabel("CO2 emissions gC/m2/year1")
+plt.title("CO2 emission Values for Texas, Dallas (2015-2020)")
+
+
+
print(items[2]["properties"]["datetime"])
+
+
+
co2_flux_3 = requests.get(
+    f"{RASTER_API_URL}/stac/tilejson.json?collection={items[2]['collection']}&item={items[2]['id']}"
+    f"&assets={asset_name}"
+    f"&color_formula=gamma+r+1.05&colormap_name={color_map}"
+    f"&rescale={rescale_values['min']},{rescale_values['max']}",
+).json()
+co2_flux_3
+
+
+
# Use bbox initial zoom and map
+# Set up a map located w/in event bounds
+import folium
+
+aoi_map_bbox = Map(
+    tiles="OpenStreetMap",
+    location=[
+        30,-100
+    ],
+    zoom_start=6.8,
+)
+
+map_layer = TileLayer(
+    tiles=co2_flux_3["tiles"][0],
+    attr="GHG", opacity = 0.7
+)
+
+map_layer.add_to(aoi_map_bbox)
+
+aoi_map_bbox
+
+
+
+

Summary

+

In this notebook we have successfully explored, analyzed, and visualized the STAC collection for OCO-2 MIP Top-Down CO₂ Budgets.

+ + +
+
+ + Back to top
+ + +
+
+ +
+ + + + \ No newline at end of file diff --git a/pr-preview/pr-46/user_data_notebooks/oco2geos-co2-daygrid-v10r_User_Notebook.html b/pr-preview/pr-46/user_data_notebooks/oco2geos-co2-daygrid-v10r_User_Notebook.html new file mode 100644 index 00000000..45840086 --- /dev/null +++ b/pr-preview/pr-46/user_data_notebooks/oco2geos-co2-daygrid-v10r_User_Notebook.html @@ -0,0 +1,1243 @@ + + + + + + + + + + + + +U.S. Greenhouse Gas Center Documentation - OCO-2 GEOS Column CO₂ Concentrations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + +
+ + + +
+ +
+
+

OCO-2 GEOS Column CO₂ Concentrations

+
+ +
+
+ Daily, global 0.5 x 0.625 degree column CO₂ concentrations derived from OCO-2 satellite data, version 10r. +
+
+ + +
+ +
+
Author
+
+

Siddharth Chaudhary, Vishal Gaur

+
+
+ +
+
Published
+
+

August 22, 2023

+
+
+ + +
+ + +
+ +
+

Approach

+
    +
  1. Identify available dates and temporal frequency of observations for the given collection using the GHGC API /stac endpoint. The collection processed in this notebook is the OCO-2 GEOS Column CO₂ Concentrations data product.
  2. +
  3. Pass the STAC item into the raster API /stac/tilejson.json endpoint.
  4. +
  5. Using folium.plugins.DualMap, visualize two tiles (side-by-side), allowing time point comparison.
  6. +
  7. After the visualization, perform zonal statistics for a given polygon.
  8. +
+
+
+

About the Data

+

In July 2014, NASA successfully launched the first dedicated Earth remote sensing satellite to study atmospheric carbon dioxide (CO₂) from space. The Orbiting Carbon Observatory-2 (OCO-2) is an exploratory science mission designed to collect space-based global measurements of atmospheric CO₂ with the precision, resolution, and coverage needed to characterize sources and sinks (fluxes) on regional scales (≥1000 km). This dataset provides global gridded, daily column-averaged carbon dioxide (XCO₂) concentrations from January 1, 2015 - February 28, 2022. The data are derived from OCO-2 observations that were input to the Goddard Earth Observing System (GEOS) Constituent Data Assimilation System (CoDAS), a modeling and data assimilation system maintained by NASA’s Global Modeling and Assimilation Office (GMAO). Concentrations are measured in moles of carbon dioxide per mole of dry air (mol CO₂/mol dry) at a spatial resolution of 0.5° x 0.625°. Data assimilation synthesizes simulations and observations, adjusting modeled atmospheric constituents like CO₂ to reflect observed values. With the support of NASA’s Carbon Monitoring System (CMS) Program and the OCO Science Team, this dataset was produced as part of the OCO-2 mission which provides the highest quality space-based XCO₂ retrievals to date.

+
+
+

Installing the Required Libraries

+

Please run the next cell to install all the required libraries to run the notebook.

+
+
%pip install requests
+%pip install folium
+%pip install rasterstats
+%pip install pystac_client
+
+
+
import requests
+from folium import Map, TileLayer
+from pystac_client import Client
+
+
+

Querying the STAC API

+
+
# Provide STAC and RASTER API endpoints
+STAC_API_URL = "http://ghg.center/api/stac"
+RASTER_API_URL = "https://ghg.center/api/raster"
+
+# Please use the collection name similar to the one used in STAC collection.
+# Name of the collection for OCO-2 GEOS Column CO₂ Concentrations. 
+collection_name = "oco2geos-co2-daygrid-v10r"
+
+
+
# Fetching the collection from STAC collections using appropriate endpoint.
+collection = requests.get(f"{STAC_API_URL}/collections/{collection_name}").json()
+collection
+
+

Examining the contents of our collection under the temporal variable, we see that the data is available from January 2015 to February 2022. By looking at the dashboard:time density, we can see that these observations are collected daily.

+
+
def get_item_count(collection_id):
+    count = 0
+    items_url = f"{STAC_API_URL}/collections/{collection_id}/items"
+
+    while True:
+        response = requests.get(items_url)
+
+        if not response.ok:
+            print("error getting items")
+            exit()
+
+        stac = response.json()
+        count += int(stac["context"].get("returned", 0))
+        next = [link for link in stac["links"] if link["rel"] == "next"]
+
+        if not next:
+            break
+        items_url = next[0]["href"]
+
+    return count
+
+
+
# Check total number of items available
+number_of_items = get_item_count(collection_name)
+items = requests.get(f"{STAC_API_URL}/collections/{collection_name}/items?limit={number_of_items}").json()["features"]
+print(f"Found {len(items)} items")
+
+
+
# Examining the first item in the collection
+items[0]
+
+

Below, we enter minimum and maximum values to provide our upper and lower bounds in rescale_values.

+
+
+

Exploring Changes in Column-Averaged XCO₂ Concentrations Levels Using the Raster API

+

In this notebook, we will explore the temporal impacts of CO₂ emissions. We will visualize the outputs on a map using folium.

+
+
# To access the year value from each item more easily, this will let us query more explicitly by year and month (e.g., 2020-02)
+items = {item["properties"]["datetime"]: item for item in items} 
+asset_name = "xco2" #fossil fuel
+
+
+
# Fetching the min and max values for a specific item
+rescale_values = {"max":items[list(items.keys())[0]]["assets"][asset_name]["raster:bands"][0]["histogram"]["max"], "min":items[list(items.keys())[0]]["assets"][asset_name]["raster:bands"][0]["histogram"]["min"]}
+
+

Now, we will pass the item id, collection name, and rescaling_factor to the Raster API endpoint. We will do this twice, once for 2022-02-08 and again for 2022-01-27, so that we can visualize each event independently.

+
+
color_map = "magma"
+oco2_1 = requests.get(
+    f"{RASTER_API_URL}/stac/tilejson.json?collection={items[list(items.keys())[0]]['collection']}&item={items[list(items.keys())[0]]['id']}"
+    f"&assets={asset_name}"
+    f"&color_formula=gamma+r+1.05&colormap_name={color_map}"
+    f"&rescale={rescale_values['min']},{rescale_values['max']}", 
+).json()
+oco2_1
+
+
+
oco2_2 = requests.get(
+    f"{RASTER_API_URL}/stac/tilejson.json?collection={items[list(items.keys())[1]]['collection']}&item={items[list(items.keys())[1]]['id']}"
+    f"&assets={asset_name}"
+    f"&color_formula=gamma+r+1.05&colormap_name={color_map}"
+    f"&rescale={rescale_values['min']},{rescale_values['max']}", 
+).json()
+oco2_2
+
+
+
+

Visualizing Daily Column-Averaged XCO₂ Concentrations

+
+
# We will import folium to map and folium.plugins to allow mapping side-by-side
+import folium
+import folium.plugins
+
+# Set initial zoom and center of map for XCO₂ Layer
+# Centre of map [latitude,longitude]
+map_ = folium.plugins.DualMap(location=(34, -118), zoom_start=6)
+
+
+map_layer_2020 = TileLayer(
+    tiles=oco2_1["tiles"][0],
+    attr="GHG",
+    opacity=0.5,
+)
+map_layer_2020.add_to(map_.m1)
+
+map_layer_2019 = TileLayer(
+    tiles=oco2_2["tiles"][0],
+    attr="GHG",
+    opacity=0.5,
+)
+map_layer_2019.add_to(map_.m2)
+
+# visualising the map
+map_
+
+
+
+
+
+

Calculating Zonal Statistics

+

To perform zonal statistics, first we need to create a polygon. In this use case we are creating a polygon in Texas (USA).

+
+
# Texas, USA
+texas_aoi = {
+    "type": "Feature",
+    "properties": {},
+    "geometry": {
+        "coordinates": [
+            [
+                [-95, 29],
+                [-95, 33],
+                [-104, 33],
+                [-104,29],
+                [-95, 29]
+            ]
+        ],
+        "type": "Polygon",
+    },
+}
+
+
+
# We will plug in the coordinates for a location inside the the polygon and a zoom level
+
+import folium
+
+aoi_map = Map(
+    tiles="OpenStreetMap",
+    location=[
+        30,-100
+    ],
+    zoom_start=6,
+)
+
+folium.GeoJson(texas_aoi, name="Texas, USA").add_to(aoi_map)
+aoi_map
+
+
+
# Check total number of items available
+items = requests.get(
+    f"{STAC_API_URL}/collections/{collection_name}/items?limit=600"
+).json()["features"]
+print(f"Found {len(items)} items")
+
+
+
# Explore the first item
+items[0]
+
+
+
# The bounding box should be passed to the geojson param as a geojson Feature or FeatureCollection
+def generate_stats(item, geojson):
+    result = requests.post(
+        f"{RASTER_API_URL}/cog/statistics",
+        params={"url": item["assets"][asset_name]["href"]},
+        json=geojson,
+    ).json()
+    print(result)
+    return {
+        **result["properties"],
+        "datetime": item["properties"]["datetime"],
+    }
+
+
+
for item in items:
+    print(item["properties"]["datetime"])
+    break
+
+

With the function above we can generate the statistics for the AOI.

+
+
%%time
+stats = [generate_stats(item, texas_aoi) for item in items]
+
+
+
stats[0]
+
+
+
import pandas as pd
+
+
+def clean_stats(stats_json) -> pd.DataFrame:
+    df = pd.json_normalize(stats_json)
+    df.columns = [col.replace("statistics.b1.", "") for col in df.columns]
+    df["date"] = pd.to_datetime(df["datetime"])
+    return df
+
+
+df = clean_stats(stats)
+df.head(5)
+
+
+

Visualizing the Data as a Time Series

+

We can now explore the XCO₂ concentrations time series (January 1, 2015 - February 28, 2022) available for the Dallas, Texas area of the U.S. We can plot the data set using the code below:

+
+
import matplotlib.pyplot as plt
+
+fig = plt.figure(figsize=(20, 10))
+
+
+plt.plot(
+    df["datetime"],
+    df["max"],
+    color="red",
+    linestyle="-",
+    linewidth=0.5,
+    label="CO₂ concentrations",
+)
+
+plt.legend()
+plt.xlabel("Years")
+plt.ylabel("CO2 concentrations ppm")
+plt.title("CO₂ concentrations Values for Texas, Dallas (Jan 2015- Feb 2022)")
+
+
+
print(items[2]["properties"]["datetime"])
+
+
+
oco2_3 = requests.get(
+    f"{RASTER_API_URL}/stac/tilejson.json?collection={items[2]['collection']}&item={items[2]['id']}"
+    f"&assets={asset_name}"
+    f"&color_formula=gamma+r+1.05&colormap_name={color_map}"
+    f"&rescale={rescale_values['min']},{rescale_values['max']}",
+).json()
+oco2_3
+
+
+
# Use bbox initial zoom and map
+# Set up a map located w/in event bounds
+import folium
+
+aoi_map_bbox = Map(
+    tiles="OpenStreetMap",
+    location=[
+        30,-100
+    ],
+    zoom_start=6.8,
+)
+
+map_layer = TileLayer(
+    tiles=oco2_3["tiles"][0],
+    attr="GHG", opacity = 0.7
+)
+
+map_layer.add_to(aoi_map_bbox)
+
+aoi_map_bbox
+
+
+
+

Summary

+

In this notebook, we have successfully explored, analyzed, and visualized the STAC collection for OCO-2 GEOS Column CO₂ Concentrations.

+ + +
+
+ + Back to top
+ + +
+
+ +
+ + + + \ No newline at end of file diff --git a/pr-preview/pr-46/user_data_notebooks/odiac-ffco2-monthgrid-v2022_User_Notebook.html b/pr-preview/pr-46/user_data_notebooks/odiac-ffco2-monthgrid-v2022_User_Notebook.html new file mode 100644 index 00000000..3373a262 --- /dev/null +++ b/pr-preview/pr-46/user_data_notebooks/odiac-ffco2-monthgrid-v2022_User_Notebook.html @@ -0,0 +1,2013 @@ + + + + + + + + + + + + +U.S. Greenhouse Gas Center Documentation - ODIAC Fossil Fuel CO₂ Emissions + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + +
+ + + +
+ +
+
+

ODIAC Fossil Fuel CO₂ Emissions

+
+ +
+
+ The Open-Data Inventory for Anthropogenic Carbon dioxide (ODIAC) is a high-spatial resolution global emission data product of CO₂ emissions from fossil fuel combustion (Oda and Maksyutov, 2011). ODIAC pioneered the combined use of space-based nighttime light data and individual power plant emission/location profiles to estimate the global spatial extent of fossil fuel CO₂ emissions. With the innovative emission modeling approach, ODIAC achieved the fine picture of global fossil fuel CO₂ emissions at a 1x1km.. +
+
+ + +
+ +
+
Author
+
+

Siddharth Chaudhary, Vishal Gaur

+
+
+ +
+
Published
+
+

June 29, 2023

+
+
+ + +
+ + +
+ +
+

Approach

+
    +
  1. Identify available dates and temporal frequency of observations for the given collection using the GHGC API /stac endpoint. Collection processed in this notebook is ODIAC CO₂ emissions version 2022.
  2. +
  3. Pass the STAC item into raster API /stac/tilejson.json endpoint
  4. +
  5. We’ll visualize two tiles (side-by-side) allowing for comparison of each of the time points using folium.plugins.DualMap
  6. +
  7. After the visualization, we’ll perform zonal statistics for a given polygon.
  8. +
+
+
+

About the Data

+

The Open-Data Inventory for Anthropogenic Carbon dioxide (ODIAC) is a high-spatial resolution global emission data product of CO₂ emissions from fossil fuel combustion (Oda and Maksyutov, 2011). ODIAC pioneered the combined use of space-based nighttime light data and individual power plant emission/location profiles to estimate the global spatial extent of fossil fuel CO₂ emissions. With the innovative emission modeling approach, ODIAC achieved the fine picture of global fossil fuel CO₂ emissions at a 1x1km.

+
+
+

Installing the required libraries.

+

Please run the next cell to install all the required libraries to run the notebook.

+
+
%pip install requests
+%pip install folium
+%pip install rasterstats
+%pip install pystac_client
+
+
Requirement already satisfied: requests in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (2.31.0)
+Requirement already satisfied: certifi>=2017.4.17 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from requests) (2023.7.22)
+Requirement already satisfied: idna<4,>=2.5 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from requests) (3.4)
+Requirement already satisfied: charset-normalizer<4,>=2 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from requests) (3.1.0)
+Requirement already satisfied: urllib3<3,>=1.21.1 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from requests) (1.26.16)
+Note: you may need to restart the kernel to use updated packages.
+Requirement already satisfied: folium in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (0.14.0)
+Requirement already satisfied: jinja2>=2.9 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from folium) (3.1.2)
+Requirement already satisfied: branca>=0.6.0 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from folium) (0.6.0)
+Requirement already satisfied: numpy in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from folium) (1.24.3)
+Requirement already satisfied: requests in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from folium) (2.31.0)
+Requirement already satisfied: MarkupSafe>=2.0 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from jinja2>=2.9->folium) (2.1.3)
+Requirement already satisfied: certifi>=2017.4.17 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from requests->folium) (2023.7.22)
+Requirement already satisfied: idna<4,>=2.5 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from requests->folium) (3.4)
+Requirement already satisfied: urllib3<3,>=1.21.1 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from requests->folium) (1.26.16)
+Requirement already satisfied: charset-normalizer<4,>=2 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from requests->folium) (3.1.0)
+Note: you may need to restart the kernel to use updated packages.
+Requirement already satisfied: rasterstats in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (0.19.0)
+Requirement already satisfied: fiona in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from rasterstats) (1.9.4.post1)
+Requirement already satisfied: shapely in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from rasterstats) (2.0.1)
+Requirement already satisfied: rasterio>=1.0 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from rasterstats) (1.3.6)
+Requirement already satisfied: cligj>=0.4 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from rasterstats) (0.7.2)
+Requirement already satisfied: simplejson in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from rasterstats) (3.19.1)
+Requirement already satisfied: affine in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from rasterstats) (2.4.0)
+Requirement already satisfied: numpy>=1.9 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from rasterstats) (1.24.3)
+Requirement already satisfied: click>7.1 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from rasterstats) (8.1.3)
+Requirement already satisfied: click-plugins in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from rasterio>=1.0->rasterstats) (1.1.1)
+Requirement already satisfied: certifi in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from rasterio>=1.0->rasterstats) (2023.7.22)
+Requirement already satisfied: attrs in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from rasterio>=1.0->rasterstats) (22.2.0)
+Requirement already satisfied: setuptools in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from rasterio>=1.0->rasterstats) (66.0.0)
+Requirement already satisfied: snuggs>=1.4.1 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from rasterio>=1.0->rasterstats) (1.4.7)
+Requirement already satisfied: importlib-metadata in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from fiona->rasterstats) (6.0.0)
+Requirement already satisfied: six in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from fiona->rasterstats) (1.16.0)
+Requirement already satisfied: pyparsing>=2.1.6 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from snuggs>=1.4.1->rasterio>=1.0->rasterstats) (3.0.9)
+Requirement already satisfied: zipp>=0.5 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from importlib-metadata->fiona->rasterstats) (3.15.0)
+Note: you may need to restart the kernel to use updated packages.
+Requirement already satisfied: pystac_client in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (0.7.2)
+Requirement already satisfied: python-dateutil>=2.8.2 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from pystac_client) (2.8.2)
+Requirement already satisfied: pystac[validation]>=1.7.2 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from pystac_client) (1.7.3)
+Requirement already satisfied: requests>=2.28.2 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from pystac_client) (2.31.0)
+Requirement already satisfied: jsonschema>=4.0.1 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from pystac[validation]>=1.7.2->pystac_client) (4.17.3)
+Requirement already satisfied: six>=1.5 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from python-dateutil>=2.8.2->pystac_client) (1.16.0)
+Requirement already satisfied: urllib3<3,>=1.21.1 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from requests>=2.28.2->pystac_client) (1.26.16)
+Requirement already satisfied: charset-normalizer<4,>=2 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from requests>=2.28.2->pystac_client) (3.1.0)
+Requirement already satisfied: certifi>=2017.4.17 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from requests>=2.28.2->pystac_client) (2023.7.22)
+Requirement already satisfied: idna<4,>=2.5 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from requests>=2.28.2->pystac_client) (3.4)
+Requirement already satisfied: pyrsistent!=0.17.0,!=0.17.1,!=0.17.2,>=0.14.0 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from jsonschema>=4.0.1->pystac[validation]>=1.7.2->pystac_client) (0.19.3)
+Requirement already satisfied: attrs>=17.4.0 in /Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages (from jsonschema>=4.0.1->pystac[validation]>=1.7.2->pystac_client) (22.2.0)
+Note: you may need to restart the kernel to use updated packages.
+
+
+
+

Querying the STAC API

+
+
import requests
+from folium import Map, TileLayer
+from pystac_client import Client
+
+
+
# Provide STAC and RASTER API endpoints
+STAC_API_URL = "http://ghg.center/api/stac"
+RASTER_API_URL = "https://ghg.center/api/raster"
+
+#Please use the collection name similar to the one used in STAC collection.
+# Name of the collection for ODIAC dataset. 
+collection_name = "odiac-ffco2-monthgrid-v2022"
+
+
+
# Fetching the collection from STAC collections using appropriate endpoint.
+collection = requests.get(f"{STAC_API_URL}/collections/{collection_name}").json()
+collection
+
+
{'id': 'odiac-ffco2-monthgrid-v2022',
+ 'type': 'Collection',
+ 'links': [{'rel': 'items',
+   'type': 'application/geo+json',
+   'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/collections/odiac-ffco2-monthgrid-v2022/items'},
+  {'rel': 'parent',
+   'type': 'application/json',
+   'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/'},
+  {'rel': 'root',
+   'type': 'application/json',
+   'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/'},
+  {'rel': 'self',
+   'type': 'application/json',
+   'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/collections/odiac-ffco2-monthgrid-v2022'}],
+ 'title': 'ODIAC Fossil Fuel CO₂ Emissions',
+ 'assets': None,
+ 'extent': {'spatial': {'bbox': [[-180, -90, 180, 90]]},
+  'temporal': {'interval': [['2000-01-01T00:00:00+00:00',
+     '2021-12-31T00:00:00+00:00']]}},
+ 'license': 'CC-BY-4.0',
+ 'keywords': None,
+ 'providers': [{'url': 'https://www.nies.go.jp',
+   'name': 'National Institute for Environmental Studies',
+   'roles': ['producer', 'licensor'],
+   'description': None}],
+ 'summaries': {'datetime': ['2000-01-01T00:00:00Z', '2021-12-31T00:00:00Z']},
+ 'description': 'The Open-Data Inventory for Anthropogenic Carbon dioxide (ODIAC) is a high-spatial resolution global emission data product of CO₂ emissions from fossil fuel combustion (Oda and Maksyutov, 2011). ODIAC pioneered the combined use of space-based nighttime light data and individual power plant emission/location profiles to estimate the global spatial extent of fossil fuel CO₂ emissions. With the innovative emission modeling approach, ODIAC achieved the fine picture of global fossil fuel CO₂ emissions at a 1x1km.',
+ 'item_assets': {'co2-emissions': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'Fossil Fuel CO₂ Emissions',
+   'description': 'CO₂ emissions from fossil fuel combustion, cement production and gas flaring.'}},
+ 'stac_version': '1.0.0',
+ 'stac_extensions': None,
+ 'dashboard:is_periodic': True,
+ 'dashboard:time_density': 'month'}
+
+
+

Examining the contents of our collection under summaries we see that the data is available from January 2000 to December 2021. By looking at the dashboard:time density we observe that the periodic frequency of these observations is monthly.

+
+
def get_item_count(collection_id):
+    count = 0
+    items_url = f"{STAC_API_URL}/collections/{collection_id}/items"
+
+    while True:
+        response = requests.get(items_url)
+
+        if not response.ok:
+            print("error getting items")
+            exit()
+
+        stac = response.json()
+        count += int(stac["context"].get("returned", 0))
+        next = [link for link in stac["links"] if link["rel"] == "next"]
+
+        if not next:
+            break
+        items_url = next[0]["href"]
+
+    return count
+
+
+
# Check total number of items available
+number_of_items = get_item_count(collection_name)
+items = requests.get(f"{STAC_API_URL}/collections/{collection_name}/items?limit={number_of_items}").json()["features"]
+print(f"Found {len(items)} items")
+
+
Found 264 items
+
+
+
+
items[0]
+
+
{'id': 'odiac-ffco2-monthgrid-v2022-202112',
+ 'bbox': [-180.0, -90.0, 180.0, 90.0],
+ 'type': 'Feature',
+ 'links': [{'rel': 'collection',
+   'type': 'application/json',
+   'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/collections/odiac-ffco2-monthgrid-v2022'},
+  {'rel': 'parent',
+   'type': 'application/json',
+   'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/collections/odiac-ffco2-monthgrid-v2022'},
+  {'rel': 'root',
+   'type': 'application/json',
+   'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/'},
+  {'rel': 'self',
+   'type': 'application/geo+json',
+   'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/collections/odiac-ffco2-monthgrid-v2022/items/odiac-ffco2-monthgrid-v2022-202112'}],
+ 'assets': {'co2-emissions': {'href': 's3://ghgc-data-store/odiac-ffco2-monthgrid-v2022/odiac2022_1km_excl_intl_202112.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'Fossil Fuel CO₂ Emissions',
+   'proj:bbox': [-180.0, -90.0, 180.0, 90.0],
+   'proj:epsg': 4326.0,
+   'proj:shape': [21600.0, 43200.0],
+   'description': 'CO₂ emissions from fossil fuel combustion, cement production and gas flaring.',
+   'raster:bands': [{'scale': 1.0,
+     'nodata': -9999.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 2497.01904296875,
+      'min': -138.71914672851562,
+      'count': 11.0,
+      'buckets': [523457.0, 691.0, 95.0, 28.0, 11.0, 2.0, 2.0, 1.0, 0.0, 1.0]},
+     'statistics': {'mean': 0.9804128408432007,
+      'stddev': 14.766693454324674,
+      'maximum': 2497.01904296875,
+      'minimum': -138.71914672851562,
+      'valid_percent': 100.0}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.0, -90.0],
+      [180.0, -90.0],
+      [180.0, 90.0],
+      [-180.0, 90.0],
+      [-180.0, -90.0]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [0.008333333333333333,
+    0.0,
+    -180.0,
+    0.0,
+    -0.008333333333333333,
+    90.0,
+    0.0,
+    0.0,
+    1.0]}},
+ 'geometry': {'type': 'Polygon',
+  'coordinates': [[[-180, -90],
+    [180, -90],
+    [180, 90],
+    [-180, 90],
+    [-180, -90]]]},
+ 'collection': 'odiac-ffco2-monthgrid-v2022',
+ 'properties': {'end_datetime': '2021-12-31T00:00:00+00:00',
+  'start_datetime': '2021-12-01T00:00:00+00:00'},
+ 'stac_version': '1.0.0',
+ 'stac_extensions': []}
+
+
+

This makes sense as there are 22 years between 2000 - 2021, with 12 months per year, meaning 264 records in total.

+

Below, we are entering the minimum and maximum values to provide our upper and lower bounds in rescale_values.

+
+
+

Exploring Changes in Carbon Dioxide (CO₂) levels using the Raster API

+

We will explore changes in fossil fuel emissions in urban egions. In this notebook, we’ll explore the impacts of these emissions and explore these changes over time. We’ll then visualize the outputs on a map using folium.

+
+
# to access the year value from each item more easily, this will let us query more explicity by year and month (e.g., 2020-02)
+items = {item["properties"]["start_datetime"][:7]: item for item in items} 
+asset_name = "co2-emissions"
+
+
+
rescale_values = {"max":items[list(items.keys())[0]]["assets"][asset_name]["raster:bands"][0]["histogram"]["max"], "min":items[list(items.keys())[0]]["assets"][asset_name]["raster:bands"][0]["histogram"]["min"]}
+
+

Now we will pass the item id, collection name, and rescaling_factor to the Raster API endpoint. We will do this twice, once for January 2020 and again for January 2000, so that we can visualize each event independently.

+
+
color_map = "rainbow" # please select the color ramp from matplotlib library.
+january_2020_tile = requests.get(
+    f"{RASTER_API_URL}/stac/tilejson.json?collection={items['2020-01']['collection']}&item={items['2020-01']['id']}"
+    f"&assets={asset_name}"
+    f"&color_formula=gamma+r+1.05&colormap_name={color_map}"
+    f"&rescale={rescale_values['min']},{rescale_values['max']}", 
+).json()
+january_2020_tile
+
+
{'tilejson': '2.2.0',
+ 'version': '1.0.0',
+ 'scheme': 'xyz',
+ 'tiles': ['https://1w7hfngnp7.execute-api.us-west-2.amazonaws.com/api/raster/stac/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?collection=odiac-ffco2-monthgrid-v2022&item=odiac-ffco2-monthgrid-v2022-202001&assets=co2-emissions&color_formula=gamma+r+1.05&colormap_name=rainbow&rescale=-138.71914672851562%2C2497.01904296875'],
+ 'minzoom': 0,
+ 'maxzoom': 24,
+ 'bounds': [-180.0, -90.0, 180.0, 90.0],
+ 'center': [0.0, 0.0, 0]}
+
+
+
+
january_2000_tile = requests.get(
+    f"{RASTER_API_URL}/stac/tilejson.json?collection={items['2000-01']['collection']}&item={items['2000-01']['id']}"
+    f"&assets={asset_name}"
+    f"&color_formula=gamma+r+1.05&colormap_name={color_map}"
+    f"&rescale={rescale_values['min']},{rescale_values['max']}", 
+).json()
+january_2000_tile
+
+
{'tilejson': '2.2.0',
+ 'version': '1.0.0',
+ 'scheme': 'xyz',
+ 'tiles': ['https://1w7hfngnp7.execute-api.us-west-2.amazonaws.com/api/raster/stac/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?collection=odiac-ffco2-monthgrid-v2022&item=odiac-ffco2-monthgrid-v2022-200001&assets=co2-emissions&color_formula=gamma+r+1.05&colormap_name=rainbow&rescale=-138.71914672851562%2C2497.01904296875'],
+ 'minzoom': 0,
+ 'maxzoom': 24,
+ 'bounds': [-180.0, -90.0, 180.0, 90.0],
+ 'center': [0.0, 0.0, 0]}
+
+
+
+
+

Visualizing CO₂ emissions

+
+
# We'll import folium to map and folium.plugins to allow mapping side-by-side
+import folium
+import folium.plugins
+
+# Set initial zoom and center of map for CO₂ Layer
+map_ = folium.plugins.DualMap(location=(34, -118), zoom_start=6)
+
+# December 2001
+map_layer_2020 = TileLayer(
+    tiles=january_2020_tile["tiles"][0],
+    attr="GHG",
+    opacity=0.8,
+)
+map_layer_2020.add_to(map_.m1)
+
+# December 2021
+map_layer_2000 = TileLayer(
+    tiles=january_2000_tile["tiles"][0],
+    attr="GHG",
+    opacity=0.8,
+)
+map_layer_2000.add_to(map_.m2)
+
+# visualising the map
+map_
+
+
+
Make this Notebook Trusted to load map: File -> Trust Notebook
+
+
+
+
+
+

Calculating the zonal statistics

+
+

+
+
# Texas, USA
+texas_aoi = {
+    "type": "Feature",
+    "properties": {},
+    "geometry": {
+        "coordinates": [
+            [
+                # [13.686159004559698, -21.700046934333145],
+                # [13.686159004559698, -23.241974326585833],
+                # [14.753560168039911, -23.241974326585833],
+                # [14.753560168039911, -21.700046934333145],
+                # [13.686159004559698, -21.700046934333145],
+                [-95, 29],
+                [-95, 33],
+                [-104, 33],
+                [-104,29],
+                [-95, 29]
+            ]
+        ],
+        "type": "Polygon",
+    },
+}
+
+
+
# We'll plug in the coordinates for a location
+# central to the study area and a reasonable zoom level
+
+import folium
+
+aoi_map = Map(
+    tiles="OpenStreetMap",
+    location=[
+        30,-100
+    ],
+    zoom_start=6,
+)
+
+folium.GeoJson(texas_aoi, name="Texas, USA").add_to(aoi_map)
+aoi_map
+
+
Make this Notebook Trusted to load map: File -> Trust Notebook
+
+
+
+
# Check total number of items available
+items = requests.get(
+    f"{STAC_API_URL}/collections/{collection_name}/items?limit=300"
+).json()["features"]
+print(f"Found {len(items)} items")
+
+
Found 264 items
+
+
+
+
# Explore one item to see what it contains
+items[0]
+
+
{'id': 'odiac-ffco2-monthgrid-v2022-202112',
+ 'bbox': [-180.0, -90.0, 180.0, 90.0],
+ 'type': 'Feature',
+ 'links': [{'rel': 'collection',
+   'type': 'application/json',
+   'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/collections/odiac-ffco2-monthgrid-v2022'},
+  {'rel': 'parent',
+   'type': 'application/json',
+   'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/collections/odiac-ffco2-monthgrid-v2022'},
+  {'rel': 'root',
+   'type': 'application/json',
+   'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/'},
+  {'rel': 'self',
+   'type': 'application/geo+json',
+   'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/collections/odiac-ffco2-monthgrid-v2022/items/odiac-ffco2-monthgrid-v2022-202112'}],
+ 'assets': {'co2-emissions': {'href': 's3://ghgc-data-store/odiac-ffco2-monthgrid-v2022/odiac2022_1km_excl_intl_202112.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'Fossil Fuel CO₂ Emissions',
+   'proj:bbox': [-180.0, -90.0, 180.0, 90.0],
+   'proj:epsg': 4326.0,
+   'proj:shape': [21600.0, 43200.0],
+   'description': 'CO₂ emissions from fossil fuel combustion, cement production and gas flaring.',
+   'raster:bands': [{'scale': 1.0,
+     'nodata': -9999.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float32',
+     'histogram': {'max': 2497.01904296875,
+      'min': -138.71914672851562,
+      'count': 11.0,
+      'buckets': [523457.0, 691.0, 95.0, 28.0, 11.0, 2.0, 2.0, 1.0, 0.0, 1.0]},
+     'statistics': {'mean': 0.9804128408432007,
+      'stddev': 14.766693454324674,
+      'maximum': 2497.01904296875,
+      'minimum': -138.71914672851562,
+      'valid_percent': 100.0}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.0, -90.0],
+      [180.0, -90.0],
+      [180.0, 90.0],
+      [-180.0, 90.0],
+      [-180.0, -90.0]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [0.008333333333333333,
+    0.0,
+    -180.0,
+    0.0,
+    -0.008333333333333333,
+    90.0,
+    0.0,
+    0.0,
+    1.0]}},
+ 'geometry': {'type': 'Polygon',
+  'coordinates': [[[-180, -90],
+    [180, -90],
+    [180, 90],
+    [-180, 90],
+    [-180, -90]]]},
+ 'collection': 'odiac-ffco2-monthgrid-v2022',
+ 'properties': {'end_datetime': '2021-12-31T00:00:00+00:00',
+  'start_datetime': '2021-12-01T00:00:00+00:00'},
+ 'stac_version': '1.0.0',
+ 'stac_extensions': []}
+
+
+
+
# the bounding box should be passed to the geojson param as a geojson Feature or FeatureCollection
+def generate_stats(item, geojson):
+    result = requests.post(
+        f"{RASTER_API_URL}/cog/statistics",
+        params={"url": item["assets"][asset_name]["href"]},
+        json=geojson,
+    ).json()
+    return {
+        **result["properties"],
+        "start_datetime": item["properties"]["start_datetime"][:7],
+    }
+
+

With the function above we can generate the statistics for the AOI.

+
+
%%time
+stats = [generate_stats(item, texas_aoi) for item in items]
+
+
CPU times: user 7.1 s, sys: 879 ms, total: 7.98 s
+Wall time: 5min 7s
+
+
+
+
stats[0]
+
+
{'statistics': {'b1': {'min': 0.0,
+   'max': 404594.21875,
+   'mean': 12.58496736225329,
+   'count': 466944.0,
+   'sum': 5876475.0,
+   'std': 1022.6532606034702,
+   'median': 0.0,
+   'majority': 0.0,
+   'minority': 0.8238743543624878,
+   'unique': 145410.0,
+   'histogram': [[466931.0, 7.0, 1.0, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0, 1.0],
+    [0.0,
+     40459.421875,
+     80918.84375,
+     121378.265625,
+     161837.6875,
+     202297.109375,
+     242756.53125,
+     283215.9375,
+     323675.375,
+     364134.8125,
+     404594.21875]],
+   'valid_percent': 100.0,
+   'masked_pixels': 0.0,
+   'valid_pixels': 466944.0,
+   'percentile_98': 120.89053268432629,
+   'percentile_2': 0.0}},
+ 'start_datetime': '2021-12-01T00:00:00+00:00'}
+
+
+
+
import pandas as pd
+
+
+def clean_stats(stats_json) -> pd.DataFrame:
+    df = pd.json_normalize(stats_json)
+    df.columns = [col.replace("statistics.b1.", "") for col in df.columns]
+    df["date"] = pd.to_datetime(df["start_datetime"])
+    return df
+
+
+df = clean_stats(stats)
+df.head(5)
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
start_datetimeminmaxmeancountsumstdmedianmajorityminorityuniquehistogramvalid_percentmasked_pixelsvalid_pixelspercentile_98percentile_2date
02021-12-01T00:00:00+00:000.0404594.2187512.584967466944.05876475.01022.6532610.00.00.823874145410.0[[466931.0, 7.0, 1.0, 0.0, 1.0, 1.0, 1.0, 0.0,...100.00.0466944.0120.8905330.02021-12-01 00:00:00+00:00
12021-11-01T00:00:00+00:000.0379500.7187511.807978466944.05513664.5959.2274520.00.00.773158145397.0[[466931.0, 7.0, 1.0, 0.0, 1.0, 1.0, 1.0, 0.0,...100.00.0466944.0113.4581570.02021-11-01 00:00:00+00:00
22021-10-01T00:00:00+00:000.0365564.1250011.382001466944.05314757.0924.0023970.00.00.745633145400.0[[466931.0, 7.0, 1.0, 0.0, 1.0, 1.0, 1.0, 0.0,...100.00.0466944.0109.4190100.02021-10-01 00:00:00+00:00
32021-09-01T00:00:00+00:000.0369532.5312511.499615466944.05369676.0934.0321330.00.00.753175145405.0[[466931.0, 7.0, 1.0, 0.0, 1.0, 1.0, 1.0, 0.0,...100.00.0466944.0110.4919980.02021-09-01 00:00:00+00:00
42021-08-01T00:00:00+00:000.0412252.3437512.818087466944.05985329.01042.0094480.00.00.839226145410.0[[466931.0, 7.0, 1.0, 0.0, 1.0, 1.0, 1.0, 0.0,...100.00.0466944.0122.9946100.02021-08-01 00:00:00+00:00
+ +
+
+
+
+
+

Visualizing the Data as a Time Series

+

We can now explore the ODIAC fossil fuel emission time series available (January 2000 -December 2021) for the Texas, Dallas area of USA. We can plot the data set using the code below:

+
+
import matplotlib.pyplot as plt
+
+fig = plt.figure(figsize=(20, 10))
+
+
+plt.plot(
+    df["date"],
+    df["max"],
+    color="red",
+    linestyle="-",
+    linewidth=0.5,
+    label="Max monthly CO₂ emissions",
+)
+
+plt.legend()
+plt.xlabel("Years")
+plt.ylabel("CO2 emissions gC/m2/d")
+plt.title("CO2 emission Values for Texas, Dallas (2000-2021)")
+
+
Text(0.5, 1.0, 'CO2 emission Values for Texas, Dallas (2000-2021)')
+
+
+

+
+
+
+
print(items[2]["properties"]["start_datetime"])
+
+
2021-10-01T00:00:00+00:00
+
+
+
+
october_tile = requests.get(
+    f"{RASTER_API_URL}/stac/tilejson.json?collection={items[2]['collection']}&item={items[2]['id']}"
+    f"&assets={asset_name}"
+    f"&color_formula=gamma+r+1.05&colormap_name={color_map}"
+    f"&rescale={rescale_values['min']},{rescale_values['max']}",
+).json()
+october_tile
+
+
{'tilejson': '2.2.0',
+ 'version': '1.0.0',
+ 'scheme': 'xyz',
+ 'tiles': ['https://1w7hfngnp7.execute-api.us-west-2.amazonaws.com/api/raster/stac/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?collection=odiac-ffco2-monthgrid-v2022&item=odiac-ffco2-monthgrid-v2022-202110&assets=co2-emissions&color_formula=gamma+r+1.05&colormap_name=rainbow&rescale=-138.71914672851562%2C2497.01904296875'],
+ 'minzoom': 0,
+ 'maxzoom': 24,
+ 'bounds': [-180.0, -90.0, 180.0, 90.0],
+ 'center': [0.0, 0.0, 0]}
+
+
+
+
# Use bbox initial zoom and map
+# Set up a map located w/in event bounds
+import folium
+
+aoi_map_bbox = Map(
+    tiles="OpenStreetMap",
+    location=[
+        30,-100
+    ],
+    zoom_start=8,
+)
+
+map_layer = TileLayer(
+    tiles=october_tile["tiles"][0],
+    attr="GHG", opacity = 0.5
+)
+
+map_layer.add_to(aoi_map_bbox)
+
+aoi_map_bbox
+
+
Make this Notebook Trusted to load map: File -> Trust Notebook
+
+
+
+
+

Summary

+

In this notebook we have successfully explored, analysed and visualized STAC collecetion for ODIAC C02 fossisl fuel emission (2022).

+ + +
+
+ + Back to top
+ + +
+
+ +
+ + + + \ No newline at end of file diff --git a/pr-preview/pr-46/user_data_notebooks/odiac-ffco2-monthgrid-v2022_User_Notebook_files/figure-html/cell-22-output-2.png b/pr-preview/pr-46/user_data_notebooks/odiac-ffco2-monthgrid-v2022_User_Notebook_files/figure-html/cell-22-output-2.png new file mode 100644 index 00000000..a733f742 Binary files /dev/null and b/pr-preview/pr-46/user_data_notebooks/odiac-ffco2-monthgrid-v2022_User_Notebook_files/figure-html/cell-22-output-2.png differ diff --git a/pr-preview/pr-46/user_data_notebooks/sedac-popdensity-yeargrid5yr-v4.11_User_Notebook.html b/pr-preview/pr-46/user_data_notebooks/sedac-popdensity-yeargrid5yr-v4.11_User_Notebook.html new file mode 100644 index 00000000..4d121986 --- /dev/null +++ b/pr-preview/pr-46/user_data_notebooks/sedac-popdensity-yeargrid5yr-v4.11_User_Notebook.html @@ -0,0 +1,1244 @@ + + + + + + + + + + + + +U.S. Greenhouse Gas Center Documentation - SEDAC Gridded World Population Density + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + +
+ + + +
+ +
+
+

SEDAC Gridded World Population Density

+
+ +
+
+ Global, 1 km resolution human population density estimates based on national censuses and population registers, version 4.11. +
+
+ + +
+ +
+
Author
+
+

Siddharth Chaudhary, Vishal Gaur

+
+
+ +
+
Published
+
+

June 29, 2023

+
+
+ + +
+ + +
+ +
+

Approach

+
    +
  1. Identify available dates and temporal frequency of observations for the given collection using the GHGC API /stac endpoint. Collection processed in this notebook is SEDAC gridded population density.
  2. +
  3. Pass the STAC item into raster API /stac/tilejson.json endpoint
  4. +
  5. We’ll visualize two tiles (side-by-side) allowing for comparison of each of the time points using folium.plugins.DualMap
  6. +
  7. After the visualization, we’ll perform zonal statistics for a given polygon.
  8. +
+
+
+

About the Data

+

The SEDAC Gridded Population of the World: Population Density, v4.11 dataset provides annual estimates of population density for the years 2000, 2005, 2010, 2015, and 2020 on a 30 arc-second (~1 km) grid. These data can be used for assessing disaster impacts, risk mapping, and any other applications that include a human dimension. This population density dataset is provided by NASA’s Socioeconomic Data and Applications Center (SEDAC) hosted by the Center for International Earth Science Information Network (CIESIN) at Columbia University. The population estimates are provided as a continuous raster for the entire globe.

+
+
+

Installing the Required Libraries.

+

Please run the next cell to install all the required libraries to run the notebook.

+
+
%pip install requests
+%pip install folium
+%pip install rasterstats
+%pip install pystac_client
+
+
+

Querying the STAC API

+
+
import requests
+from folium import Map, TileLayer
+from pystac_client import Client
+
+
+
# Provide STAC and RASTER API endpoints
+STAC_API_URL = "http://ghg.center/api/stac"
+RASTER_API_URL = "https://ghg.center/api/raster"
+
+#Please use the collection name similar to the one used in STAC collection.
+# Name of the collection for SEDAC population density dataset. 
+collection_name = "sedac-popdensity-yeargrid5yr-v4.11"
+
+
+
# Fetching the collection from STAC collections using appropriate endpoint.
+collection = requests.get(f"{STAC_API_URL}/collections/{collection_name}").json()
+collection
+
+

Examining the contents of our collection under summaries we see that the data is available from January 2000 to December 2020. By looking at the dashboard:time density we observe that the data is available for the years 2000, 2005, 2010, 2015, 2020.

+
+
def get_item_count(collection_id):
+    count = 0
+    items_url = f"{STAC_API_URL}/collections/{collection_id}/items"
+
+    while True:
+        response = requests.get(items_url)
+
+        if not response.ok:
+            print("error getting items")
+            exit()
+
+        stac = response.json()
+        count += int(stac["context"].get("returned", 0))
+        next = [link for link in stac["links"] if link["rel"] == "next"]
+
+        if not next:
+            break
+        items_url = next[0]["href"]
+
+    return count
+
+
+
# Check total number of items available
+number_of_items = get_item_count(collection_name)
+items = requests.get(f"{STAC_API_URL}/collections/{collection_name}/items?limit={number_of_items}").json()["features"]
+print(f"Found {len(items)} items")
+
+
+
items[0]
+
+

Below, we are entering the minimum and maximum values to provide our upper and lower bounds in rescale_values.

+
+
+

Exploring Changes in the World Population Density using the Raster API

+

We will explore changes in population density in urban regions. In this notebook, we’ll explore the changes in population density over time. We’ll then visualize the outputs on a map using folium.

+
+
# to access the year value from each item more easily, this will let us query more explicity by year and month (e.g., 2020-02)
+items = {item["properties"]["start_datetime"][:7]: item for item in items} 
+asset_name = "population-density"
+
+
+
rescale_values = {"max":items[list(items.keys())[0]]["assets"][asset_name]["raster:bands"][0]["histogram"]["max"], "min":items[list(items.keys())[0]]["assets"][asset_name]["raster:bands"][0]["histogram"]["min"]}
+
+

Now we will pass the item id, collection name, and rescaling_factor to the Raster API endpoint. We will do this twice, once for January 2000 and again for January 2020, so that we can visualize each event independently.

+
+
color_map = "rainbow" # please select the color ramp from matplotlib library.
+january_2020_tile = requests.get(
+    f"{RASTER_API_URL}/stac/tilejson.json?collection={items['2020-01']['collection']}&item={items['2020-01']['id']}"
+    f"&assets={asset_name}"
+    f"&color_formula=gamma+r+1.05&colormap_name={color_map}"
+    f"&rescale={rescale_values['min']},{rescale_values['max']}", 
+).json()
+january_2020_tile
+
+
+
january_2000_tile = requests.get(
+    f"{RASTER_API_URL}/stac/tilejson.json?collection={items['2000-01']['collection']}&item={items['2000-01']['id']}"
+    f"&assets={asset_name}"
+    f"&color_formula=gamma+r+1.05&colormap_name={color_map}"
+    f"&rescale={rescale_values['min']},{rescale_values['max']}", 
+).json()
+january_2000_tile
+
+
+
+

Visualizing Population Density.

+
+
# We'll import folium to map and folium.plugins to allow mapping side-by-side
+import folium
+import folium.plugins
+
+# Set initial zoom and center of map for population density Layer
+map_ = folium.plugins.DualMap(location=(34, -118), zoom_start=6)
+
+# January 2020
+map_layer_2020 = TileLayer(
+    tiles=january_2020_tile["tiles"][0],
+    attr="GHG",
+    opacity=1,
+)
+map_layer_2020.add_to(map_.m1)
+
+# January 2000
+map_layer_2000 = TileLayer(
+    tiles=january_2000_tile["tiles"][0],
+    attr="GHG",
+    opacity=1,
+)
+map_layer_2000.add_to(map_.m2)
+
+# visualising the map
+map_
+
+
+
+
+
+

Calculating Zonal Statistics

+
+

+
+
# Texas, USA
+texas_aoi = {
+    "type": "Feature",
+    "properties": {},
+    "geometry": {
+        "coordinates": [
+            [
+                # [13.686159004559698, -21.700046934333145],
+                # [13.686159004559698, -23.241974326585833],
+                # [14.753560168039911, -23.241974326585833],
+                # [14.753560168039911, -21.700046934333145],
+                # [13.686159004559698, -21.700046934333145],
+                [-95, 29],
+                [-95, 33],
+                [-104, 33],
+                [-104,29],
+                [-95, 29]
+            ]
+        ],
+        "type": "Polygon",
+    },
+}
+
+
+
# We'll plug in the coordinates for a location
+# central to the study area and a reasonable zoom level
+
+import folium
+
+aoi_map = Map(
+    tiles="OpenStreetMap",
+    location=[
+        30,-100
+    ],
+    zoom_start=6,
+)
+
+folium.GeoJson(texas_aoi, name="Texas, USA").add_to(aoi_map)
+aoi_map
+
+
+
# Check total number of items available
+items = requests.get(
+    f"{STAC_API_URL}/collections/{collection_name}/items?limit=300"
+).json()["features"]
+print(f"Found {len(items)} items")
+
+
+
# Explore one item to see what it contains
+items[0]
+
+
+
# the bounding box should be passed to the geojson param as a geojson Feature or FeatureCollection
+def generate_stats(item, geojson):
+    result = requests.post(
+        f"{RASTER_API_URL}/cog/statistics",
+        params={"url": item["assets"][asset_name]["href"]},
+        json=geojson,
+    ).json()
+    return {
+        **result["properties"],
+        "start_datetime": item["properties"]["start_datetime"],
+    }
+
+

With the function above we can generate the statistics for the AOI.

+
+
%%time
+stats = [generate_stats(item, texas_aoi) for item in items]
+
+
+
stats[0]
+
+
+
import pandas as pd
+
+
+def clean_stats(stats_json) -> pd.DataFrame:
+    df = pd.json_normalize(stats_json)
+    df.columns = [col.replace("statistics.b1.", "") for col in df.columns]
+    df["date"] = pd.to_datetime(df["start_datetime"])
+    return df
+
+
+df = clean_stats(stats)
+df.head(5)
+
+
+
+

Visualizing the Data as a Time Series

+

We can now explore the SEDAC population density dataset time series available for the Texas, Dallas area of USA. We can plot the dataset using the code below:

+
+
import matplotlib.pyplot as plt
+
+fig = plt.figure(figsize=(20, 10))
+
+
+plt.plot(
+    df["date"],
+    df["max"],
+    color="red",
+    linestyle="-",
+    linewidth=0.5,
+    label="Population density over the years",
+)
+
+plt.legend()
+plt.xlabel("Years")
+plt.ylabel("Population density")
+plt.title("Population density over Texas, Dallas (2000-2020)")
+
+
+
print(items[2]["properties"]["start_datetime"])
+
+
+
october_tile = requests.get(
+    f"{RASTER_API_URL}/stac/tilejson.json?collection={items[2]['collection']}&item={items[2]['id']}"
+    f"&assets={asset_name}"
+    f"&color_formula=gamma+r+1.05&colormap_name={color_map}"
+    f"&rescale={rescale_values['min']},{rescale_values['max']}",
+).json()
+october_tile
+
+
+
# Use bbox initial zoom and map
+# Set up a map located w/in event bounds
+import folium
+
+aoi_map_bbox = Map(
+    tiles="OpenStreetMap",
+    location=[
+        30,-100
+    ],
+    zoom_start=8,
+)
+
+map_layer = TileLayer(
+    tiles=october_tile["tiles"][0],
+    attr="GHG", opacity = 0.5
+)
+
+map_layer.add_to(aoi_map_bbox)
+
+aoi_map_bbox
+
+
+
+

Summary

+

In this notebook we have successfully explored, analyzed and visualized the STAC collection for the SEDAC Gridded World Population Density dataset.

+ + +
+
+ + Back to top
+ + +
+
+ +
+ + + + \ No newline at end of file diff --git a/pr-preview/pr-46/user_data_notebooks/tm54dvar-ch4flux-monthgrid-v1_User_Notebook.html b/pr-preview/pr-46/user_data_notebooks/tm54dvar-ch4flux-monthgrid-v1_User_Notebook.html new file mode 100644 index 00000000..8f6b29d8 --- /dev/null +++ b/pr-preview/pr-46/user_data_notebooks/tm54dvar-ch4flux-monthgrid-v1_User_Notebook.html @@ -0,0 +1,2441 @@ + + + + + + + + + + + + +U.S. Greenhouse Gas Center Documentation - TM5-4DVar Isotopic CH₄ Inverse Fluxes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + +
+ + + +
+ +
+
+

TM5-4DVar Isotopic CH₄ Inverse Fluxes

+
+ +
+
+ Global, monthly 1 degree resolution methane emission estimates from microbial, fossil and pyrogenic sources derived using inverse modeling, version 1. +
+
+ + +
+ +
+
Author
+
+

Siddharth Chaudhary, Vishal Gaur

+
+
+ +
+
Published
+
+

August 22, 2023

+
+
+ + +
+ + +
+ +
+

Approach

+
    +
  1. Identify available dates and temporal frequency of observations for the given collection using the GHGC API /stac endpoint. The collection processed in this notebook is the TM5-4DVar Isotopic CH₄ Inverse Fluxes Data product.
  2. +
  3. Pass the STAC item into the raster API /stac/tilejson.jsonendpoint.
  4. +
  5. Using folium.plugins.DualMap, we will visualize two tiles (side-by-side), allowing us to compare time points.
  6. +
  7. After the visualization, we will perform zonal statistics for a given polygon.
  8. +
+
+
+

About the Data

+

Surface methane (CH₄) emissions are derived from atmospheric measurements of methane and its ¹³C carbon isotope content. Different sources of methane contain different ratios of the two stable isotopologues, ¹²CH₄ and ¹³CH₄. This makes normally indistinguishable collocated sources of methane, say from agriculture and oil and gas exploration, distinguishable. The National Oceanic and Atmospheric Administration (NOAA) collects whole air samples from its global cooperative network of flasks (https://gml.noaa.gov/ccgg/about.html), which are then analyzed for methane and other trace gasses. A subset of those flasks are also analyzed for ¹³C of methane in collaboration with the Institute of Arctic and Alpine Research at the University of Colorado Boulder. Scientists at the National Aeronautics and Space Administration (NASA) and NOAA used those measurements of methane and ¹³C of methane in conjunction with a model of atmospheric circulation to estimate emissions of methane separated by three source types, microbial, fossil and pyrogenic.

+
+
+

Installing the required libraries

+

Please run the cell below to install the libraries required to run this notebook.

+

%pip install requests %pip install folium %pip install rasterstats %pip install pystac_client

+
+
+

Querying the STAC API

+
+
import requests
+from folium import Map, TileLayer
+from pystac_client import Client
+
+
+
# Provide STAC and RASTER API endpoints
+STAC_API_URL = "http://ghg.center/api/stac"
+RASTER_API_URL = "https://ghg.center/api/raster"
+
+# Please use the collection name similar to the one used in STAC collection.
+# Name of the collection for TM5 CH₄ inverse flux dataset. 
+collection_name = "tm54dvar-ch4flux-monthgrid-v1"
+
+
+
# Fetching the collection from STAC collections using appropriate endpoint.
+collection = requests.get(f"{STAC_API_URL}/collections/{collection_name}").json()
+collection
+
+
{'id': 'tm54dvar-ch4flux-monthgrid-v1',
+ 'type': 'Collection',
+ 'links': [{'rel': 'items',
+   'type': 'application/geo+json',
+   'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/collections/tm54dvar-ch4flux-monthgrid-v1/items'},
+  {'rel': 'parent',
+   'type': 'application/json',
+   'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/'},
+  {'rel': 'root',
+   'type': 'application/json',
+   'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/'},
+  {'rel': 'self',
+   'type': 'application/json',
+   'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/collections/tm54dvar-ch4flux-monthgrid-v1'}],
+ 'title': 'TM5-4DVar Isotopic CH4 Inverse Fluxes',
+ 'assets': None,
+ 'extent': {'spatial': {'bbox': [[-180, -90, 180, 90]]},
+  'temporal': {'interval': [['1999-01-01T00:00:00+00:00',
+     '2016-12-31T00:00:00+00:00']]}},
+ 'license': 'CC-BY-4.0',
+ 'keywords': None,
+ 'providers': None,
+ 'summaries': {'datetime': ['1999-01-01T00:00:00Z', '2016-12-31T00:00:00Z']},
+ 'description': 'Global, monthly 1 degree resolution methane emission estimates from microbial, fossil and pyrogenic sources derived using inverse modeling, version 1.',
+ 'item_assets': {'total': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'Total CH4 Emission',
+   'description': 'Total methane emission from microbial, fossil and pyrogenic sources'},
+  'fossil': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'Fossil CH4 Emission',
+   'description': 'Emission of methane from all fossil sources, such as oil and gas activities and coal mining.'},
+  'microbial': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'Microbial CH4 Emission',
+   'description': 'Emission of methane from all microbial sources, such as wetlands, agriculture and termites.'},
+  'pyrogenic': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'Pyrogenic CH4 Emission',
+   'description': 'Emission of methane from all sources of biomass burning, such as wildfires and crop burning.'}},
+ 'stac_version': '1.0.0',
+ 'stac_extensions': None,
+ 'dashboard:is_periodic': True,
+ 'dashboard:time_density': 'month'}
+
+
+

Examining the contents of our collection under the temporal variable, we see that the data is available from January 1999 to December 2016. By looking at the dashboard:time density, we observe that the data is periodic with monthly time density.

+
+
def get_item_count(collection_id):
+    count = 0
+    items_url = f"{STAC_API_URL}/collections/{collection_id}/items"
+
+    while True:
+        response = requests.get(items_url)
+
+        if not response.ok:
+            print("error getting items")
+            exit()
+
+        stac = response.json()
+        count += int(stac["context"].get("returned", 0))
+        next = [link for link in stac["links"] if link["rel"] == "next"]
+
+        if not next:
+            break
+        items_url = next[0]["href"]
+
+    return count
+
+
+
# Check total number of items available
+number_of_items = get_item_count(collection_name)
+items = requests.get(f"{STAC_API_URL}/collections/{collection_name}/items?limit={number_of_items}").json()["features"]
+print(f"Found {len(items)} items")
+
+
Found 216 items
+
+
+
+
# Examining the first item in the collection
+items[0]
+
+
{'id': 'tm54dvar-ch4flux-monthgrid-v1-201612',
+ 'bbox': [-180.0, -90.0, 180.0, 90.0],
+ 'type': 'Feature',
+ 'links': [{'rel': 'collection',
+   'type': 'application/json',
+   'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/collections/tm54dvar-ch4flux-monthgrid-v1'},
+  {'rel': 'parent',
+   'type': 'application/json',
+   'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/collections/tm54dvar-ch4flux-monthgrid-v1'},
+  {'rel': 'root',
+   'type': 'application/json',
+   'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/'},
+  {'rel': 'self',
+   'type': 'application/geo+json',
+   'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/collections/tm54dvar-ch4flux-monthgrid-v1/items/tm54dvar-ch4flux-monthgrid-v1-201612'}],
+ 'assets': {'total': {'href': 's3://ghgc-data-store/tm54dvar-ch4flux-monthgrid-v1/methane_emis_total_201612.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'Total CH4 Emission',
+   'proj:bbox': [-180.0, -90.0, 180.0, 90.0],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'Total methane emission from microbial, fossil and pyrogenic sources',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float64',
+     'histogram': {'max': 207.09559432166358,
+      'min': 0.0,
+      'count': 11.0,
+      'buckets': [64446.0, 253.0, 61.0, 16.0, 14.0, 4.0, 3.0, 0.0, 2.0, 1.0]},
+     'statistics': {'mean': 0.7699816366032659,
+      'stddev': 3.8996905358416045,
+      'maximum': 207.09559432166358,
+      'minimum': 0.0,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.0, -90.0],
+      [180.0, -90.0],
+      [180.0, 90.0],
+      [-180.0, 90.0],
+      [-180.0, -90.0]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.0, 0.0, -1.0, 90.0, 0.0, 0.0, 1.0]},
+  'fossil': {'href': 's3://ghgc-data-store/tm54dvar-ch4flux-monthgrid-v1/methane_emis_fossil_201612.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'Fossil CH4 Emission',
+   'proj:bbox': [-180.0, -90.0, 180.0, 90.0],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'Emission of methane from all fossil sources, such as oil and gas activities and coal mining.',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float64',
+     'histogram': {'max': 202.8189294183266,
+      'min': 0.0,
+      'count': 11.0,
+      'buckets': [64633.0, 107.0, 35.0, 11.0, 8.0, 3.0, 1.0, 1.0, 0.0, 1.0]},
+     'statistics': {'mean': 0.27127687553584495,
+      'stddev': 2.731411670166909,
+      'maximum': 202.8189294183266,
+      'minimum': 0.0,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.0, -90.0],
+      [180.0, -90.0],
+      [180.0, 90.0],
+      [-180.0, 90.0],
+      [-180.0, -90.0]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.0, 0.0, -1.0, 90.0, 0.0, 0.0, 1.0]},
+  'microbial': {'href': 's3://ghgc-data-store/tm54dvar-ch4flux-monthgrid-v1/methane_emis_microbial_201612.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'Microbial CH4 Emission',
+   'proj:bbox': [-180.0, -90.0, 180.0, 90.0],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'Emission of methane from all microbial sources, such as wetlands, agriculture and termites.',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float64',
+     'histogram': {'max': 161.4604621003495,
+      'min': 0.0,
+      'count': 11.0,
+      'buckets': [64610.0, 155.0, 22.0, 5.0, 2.0, 2.0, 2.0, 1.0, 0.0, 1.0]},
+     'statistics': {'mean': 0.46611433673211145,
+      'stddev': 2.2910210071489456,
+      'maximum': 161.4604621003495,
+      'minimum': 0.0,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.0, -90.0],
+      [180.0, -90.0],
+      [180.0, 90.0],
+      [-180.0, 90.0],
+      [-180.0, -90.0]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.0, 0.0, -1.0, 90.0, 0.0, 0.0, 1.0]},
+  'pyrogenic': {'href': 's3://ghgc-data-store/tm54dvar-ch4flux-monthgrid-v1/methane_emis_pyrogenic_201612.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'Pyrogenic CH4 Emission',
+   'proj:bbox': [-180.0, -90.0, 180.0, 90.0],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'Emission of methane from all sources of biomass burning, such as wildfires and crop burning.',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float64',
+     'histogram': {'max': 13.432528617097262,
+      'min': 0.0,
+      'count': 11.0,
+      'buckets': [64440.0, 221.0, 78.0, 24.0, 18.0, 8.0, 3.0, 1.0, 1.0, 6.0]},
+     'statistics': {'mean': 0.032590424335309266,
+      'stddev': 0.28279054181617735,
+      'maximum': 13.432528617097262,
+      'minimum': 0.0,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.0, -90.0],
+      [180.0, -90.0],
+      [180.0, 90.0],
+      [-180.0, 90.0],
+      [-180.0, -90.0]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.0, 0.0, -1.0, 90.0, 0.0, 0.0, 1.0]}},
+ 'geometry': {'type': 'Polygon',
+  'coordinates': [[[-180, -90],
+    [180, -90],
+    [180, 90],
+    [-180, 90],
+    [-180, -90]]]},
+ 'collection': 'tm54dvar-ch4flux-monthgrid-v1',
+ 'properties': {'end_datetime': '2016-12-31T00:00:00+00:00',
+  'start_datetime': '2016-12-01T00:00:00+00:00'},
+ 'stac_version': '1.0.0',
+ 'stac_extensions': []}
+
+
+

Below, we are entering the minimum and maximum values to provide our upper and lower bounds in rescale_values.

+
+
+

Exploring Changes in CH₄ flux Levels Using the Raster API

+

In this notebook, we will explore the global changes of CH₄ flux over time in urban regions. We will visualize the outputs on a map using folium.

+
+
# to access the year value from each item more easily, this will let us query more explicity by year and month (e.g., 2020-02)
+items = {item["properties"]["start_datetime"][:10]: item for item in items} 
+asset_name = "fossil" #fossil fuel
+
+
+
# Fetching the min and max values for a specific item
+rescale_values = {"max":items[list(items.keys())[0]]["assets"][asset_name]["raster:bands"][0]["histogram"]["max"], "min":items[list(items.keys())[0]]["assets"][asset_name]["raster:bands"][0]["histogram"]["min"]}
+
+

Now, we will pass the item id, collection name, and rescaling_factor to the Raster API endpoint. We will do this twice, once for 2020 and again for 2019, so that we can visualize each event independently.

+
+
color_map = "purd"
+co2_flux_1 = requests.get(
+    f"{RASTER_API_URL}/stac/tilejson.json?collection={items['2016-12-01']['collection']}&item={items['2016-12-01']['id']}"
+    f"&assets={asset_name}"
+    f"&color_formula=gamma+r+1.05&colormap_name={color_map}"
+    f"&rescale={rescale_values['min']},{rescale_values['max']}", 
+).json()
+co2_flux_1
+
+
{'tilejson': '2.2.0',
+ 'version': '1.0.0',
+ 'scheme': 'xyz',
+ 'tiles': ['https://1w7hfngnp7.execute-api.us-west-2.amazonaws.com/api/raster/stac/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?collection=tm54dvar-ch4flux-monthgrid-v1&item=tm54dvar-ch4flux-monthgrid-v1-201612&assets=fossil&color_formula=gamma+r+1.05&colormap_name=purd&rescale=0.0%2C202.8189294183266'],
+ 'minzoom': 0,
+ 'maxzoom': 24,
+ 'bounds': [-180.0, -90.0, 180.0, 90.0],
+ 'center': [0.0, 0.0, 0]}
+
+
+
+
co2_flux_2 = requests.get(
+    f"{RASTER_API_URL}/stac/tilejson.json?collection={items['1999-12-01']['collection']}&item={items['1999-12-01']['id']}"
+    f"&assets={asset_name}"
+    f"&color_formula=gamma+r+1.05&colormap_name={color_map}"
+    f"&rescale={rescale_values['min']},{rescale_values['max']}", 
+).json()
+co2_flux_2
+
+
{'tilejson': '2.2.0',
+ 'version': '1.0.0',
+ 'scheme': 'xyz',
+ 'tiles': ['https://1w7hfngnp7.execute-api.us-west-2.amazonaws.com/api/raster/stac/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?collection=tm54dvar-ch4flux-monthgrid-v1&item=tm54dvar-ch4flux-monthgrid-v1-199912&assets=fossil&color_formula=gamma+r+1.05&colormap_name=purd&rescale=0.0%2C202.8189294183266'],
+ 'minzoom': 0,
+ 'maxzoom': 24,
+ 'bounds': [-180.0, -90.0, 180.0, 90.0],
+ 'center': [0.0, 0.0, 0]}
+
+
+
+
+

Visualizing CH₄ flux Emissions from Fossil Fuel

+
+
# We'll import folium to map and folium.plugins to allow mapping side-by-side
+import folium
+import folium.plugins
+
+# Set initial zoom and center of map for CO₂ Layer
+# Centre of map [latitude,longitude]
+map_ = folium.plugins.DualMap(location=(34, -118), zoom_start=6)
+
+
+map_layer_2016 = TileLayer(
+    tiles=co2_flux_1["tiles"][0],
+    attr="GHG",
+    opacity=0.8,
+)
+map_layer_2016.add_to(map_.m1)
+
+map_layer_1999 = TileLayer(
+    tiles=co2_flux_2["tiles"][0],
+    attr="GHG",
+    opacity=0.8,
+)
+map_layer_1999.add_to(map_.m2)
+
+# visualising the map
+map_
+
+
+
Make this Notebook Trusted to load map: File -> Trust Notebook
+
+
+
+
+

Calculating Zonal Statistics

+

To perform zonal statistics, first we need to create a polygon. In this use case we are creating a polygon in Texas (USA).

+
+
# Texas, USA
+texas_aoi = {
+    "type": "Feature",
+    "properties": {},
+    "geometry": {
+        "coordinates": [
+            [
+                [-95, 29],
+                [-95, 33],
+                [-104, 33],
+                [-104,29],
+                [-95, 29]
+            ]
+        ],
+        "type": "Polygon",
+    },
+}
+
+
+
# We'll plug in the coordinates for a location
+# central to the study area and a reasonable zoom level
+
+import folium
+
+aoi_map = Map(
+    tiles="OpenStreetMap",
+    location=[
+        30,-100
+    ],
+    zoom_start=6,
+)
+
+folium.GeoJson(texas_aoi, name="Texas, USA").add_to(aoi_map)
+aoi_map
+
+
Make this Notebook Trusted to load map: File -> Trust Notebook
+
+
+
+
# Check total number of items available
+items = requests.get(
+    f"{STAC_API_URL}/collections/{collection_name}/items?limit=600"
+).json()["features"]
+print(f"Found {len(items)} items")
+
+
Found 216 items
+
+
+
+
# Explore the first item
+items[0]
+
+
{'id': 'tm54dvar-ch4flux-monthgrid-v1-201612',
+ 'bbox': [-180.0, -90.0, 180.0, 90.0],
+ 'type': 'Feature',
+ 'links': [{'rel': 'collection',
+   'type': 'application/json',
+   'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/collections/tm54dvar-ch4flux-monthgrid-v1'},
+  {'rel': 'parent',
+   'type': 'application/json',
+   'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/collections/tm54dvar-ch4flux-monthgrid-v1'},
+  {'rel': 'root',
+   'type': 'application/json',
+   'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/'},
+  {'rel': 'self',
+   'type': 'application/geo+json',
+   'href': 'https://e6v7j4ejp6.execute-api.us-west-2.amazonaws.com/api/stac/collections/tm54dvar-ch4flux-monthgrid-v1/items/tm54dvar-ch4flux-monthgrid-v1-201612'}],
+ 'assets': {'total': {'href': 's3://ghgc-data-store/tm54dvar-ch4flux-monthgrid-v1/methane_emis_total_201612.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'Total CH4 Emission',
+   'proj:bbox': [-180.0, -90.0, 180.0, 90.0],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'Total methane emission from microbial, fossil and pyrogenic sources',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float64',
+     'histogram': {'max': 207.09559432166358,
+      'min': 0.0,
+      'count': 11.0,
+      'buckets': [64446.0, 253.0, 61.0, 16.0, 14.0, 4.0, 3.0, 0.0, 2.0, 1.0]},
+     'statistics': {'mean': 0.7699816366032659,
+      'stddev': 3.8996905358416045,
+      'maximum': 207.09559432166358,
+      'minimum': 0.0,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.0, -90.0],
+      [180.0, -90.0],
+      [180.0, 90.0],
+      [-180.0, 90.0],
+      [-180.0, -90.0]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.0, 0.0, -1.0, 90.0, 0.0, 0.0, 1.0]},
+  'fossil': {'href': 's3://ghgc-data-store/tm54dvar-ch4flux-monthgrid-v1/methane_emis_fossil_201612.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'Fossil CH4 Emission',
+   'proj:bbox': [-180.0, -90.0, 180.0, 90.0],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'Emission of methane from all fossil sources, such as oil and gas activities and coal mining.',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float64',
+     'histogram': {'max': 202.8189294183266,
+      'min': 0.0,
+      'count': 11.0,
+      'buckets': [64633.0, 107.0, 35.0, 11.0, 8.0, 3.0, 1.0, 1.0, 0.0, 1.0]},
+     'statistics': {'mean': 0.27127687553584495,
+      'stddev': 2.731411670166909,
+      'maximum': 202.8189294183266,
+      'minimum': 0.0,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.0, -90.0],
+      [180.0, -90.0],
+      [180.0, 90.0],
+      [-180.0, 90.0],
+      [-180.0, -90.0]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.0, 0.0, -1.0, 90.0, 0.0, 0.0, 1.0]},
+  'microbial': {'href': 's3://ghgc-data-store/tm54dvar-ch4flux-monthgrid-v1/methane_emis_microbial_201612.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'Microbial CH4 Emission',
+   'proj:bbox': [-180.0, -90.0, 180.0, 90.0],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'Emission of methane from all microbial sources, such as wetlands, agriculture and termites.',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float64',
+     'histogram': {'max': 161.4604621003495,
+      'min': 0.0,
+      'count': 11.0,
+      'buckets': [64610.0, 155.0, 22.0, 5.0, 2.0, 2.0, 2.0, 1.0, 0.0, 1.0]},
+     'statistics': {'mean': 0.46611433673211145,
+      'stddev': 2.2910210071489456,
+      'maximum': 161.4604621003495,
+      'minimum': 0.0,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.0, -90.0],
+      [180.0, -90.0],
+      [180.0, 90.0],
+      [-180.0, 90.0],
+      [-180.0, -90.0]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.0, 0.0, -1.0, 90.0, 0.0, 0.0, 1.0]},
+  'pyrogenic': {'href': 's3://ghgc-data-store/tm54dvar-ch4flux-monthgrid-v1/methane_emis_pyrogenic_201612.tif',
+   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
+   'roles': ['data', 'layer'],
+   'title': 'Pyrogenic CH4 Emission',
+   'proj:bbox': [-180.0, -90.0, 180.0, 90.0],
+   'proj:epsg': 4326.0,
+   'proj:shape': [180.0, 360.0],
+   'description': 'Emission of methane from all sources of biomass burning, such as wildfires and crop burning.',
+   'raster:bands': [{'scale': 1.0,
+     'offset': 0.0,
+     'sampling': 'area',
+     'data_type': 'float64',
+     'histogram': {'max': 13.432528617097262,
+      'min': 0.0,
+      'count': 11.0,
+      'buckets': [64440.0, 221.0, 78.0, 24.0, 18.0, 8.0, 3.0, 1.0, 1.0, 6.0]},
+     'statistics': {'mean': 0.032590424335309266,
+      'stddev': 0.28279054181617735,
+      'maximum': 13.432528617097262,
+      'minimum': 0.0,
+      'valid_percent': 0.00154320987654321}}],
+   'proj:geometry': {'type': 'Polygon',
+    'coordinates': [[[-180.0, -90.0],
+      [180.0, -90.0],
+      [180.0, 90.0],
+      [-180.0, 90.0],
+      [-180.0, -90.0]]]},
+   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
+    'name': 'WGS 84',
+    'type': 'GeographicCRS',
+    'datum': {'name': 'World Geodetic System 1984',
+     'type': 'GeodeticReferenceFrame',
+     'ellipsoid': {'name': 'WGS 84',
+      'semi_major_axis': 6378137.0,
+      'inverse_flattening': 298.257223563}},
+    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
+    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
+       'unit': 'degree',
+       'direction': 'north',
+       'abbreviation': 'Lat'},
+      {'name': 'Geodetic longitude',
+       'unit': 'degree',
+       'direction': 'east',
+       'abbreviation': 'Lon'}],
+     'subtype': 'ellipsoidal'}},
+   'proj:transform': [1.0, 0.0, -180.0, 0.0, -1.0, 90.0, 0.0, 0.0, 1.0]}},
+ 'geometry': {'type': 'Polygon',
+  'coordinates': [[[-180, -90],
+    [180, -90],
+    [180, 90],
+    [-180, 90],
+    [-180, -90]]]},
+ 'collection': 'tm54dvar-ch4flux-monthgrid-v1',
+ 'properties': {'end_datetime': '2016-12-31T00:00:00+00:00',
+  'start_datetime': '2016-12-01T00:00:00+00:00'},
+ 'stac_version': '1.0.0',
+ 'stac_extensions': []}
+
+
+
+
# The bounding box should be passed to the geojson param as a geojson Feature or FeatureCollection
+def generate_stats(item, geojson):
+    result = requests.post(
+        f"{RASTER_API_URL}/cog/statistics",
+        params={"url": item["assets"][asset_name]["href"]},
+        json=geojson,
+    ).json()
+    print(result)
+    return {
+        **result["properties"],
+        "datetime": item["properties"]["start_datetime"][:10],
+    }
+
+
+
for item in items:
+    print(item["properties"]["start_datetime"][:10])
+    break
+
+
2016-12-01
+
+
+

With the function above we can generate the statistics for the AOI.

+
+
%%time
+stats = [generate_stats(item, texas_aoi) for item in items]
+
+
{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.0464402866499578, 'max': 49.61378870603235, 'mean': 9.039553150168388, 'count': 36.0, 'sum': 325.42391340606196, 'std': 11.97160706711745, 'median': 4.45260464610365, 'majority': 0.0464402866499578, 'minority': 0.0464402866499578, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.0464402866499578, 5.003175128588197, 9.959909970526436, 14.916644812464675, 19.873379654402914, 24.830114496341153, 29.786849338279392, 34.74358418021763, 39.700319022155874, 44.65705386409412, 49.61378870603235]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_2': 0.08155765896762883, 'percentile_98': 45.348544433662454}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.0464402866499578, 'max': 49.61378870603235, 'mean': 9.039553150168388, 'count': 36.0, 'sum': 325.42391340606196, 'std': 11.97160706711745, 'median': 4.45260464610365, 'majority': 0.0464402866499578, 'minority': 0.0464402866499578, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.0464402866499578, 5.003175128588197, 9.959909970526436, 14.916644812464675, 19.873379654402914, 24.830114496341153, 29.786849338279392, 34.74358418021763, 39.700319022155874, 44.65705386409412, 49.61378870603235]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_2': 0.08155765896762883, 'percentile_98': 45.348544433662454}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.0464402866499578, 'max': 49.61378870603235, 'mean': 9.039553150168388, 'count': 36.0, 'sum': 325.42391340606196, 'std': 11.97160706711745, 'median': 4.45260464610365, 'majority': 0.0464402866499578, 'minority': 0.0464402866499578, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.0464402866499578, 5.003175128588197, 9.959909970526436, 14.916644812464675, 19.873379654402914, 24.830114496341153, 29.786849338279392, 34.74358418021763, 39.700319022155874, 44.65705386409412, 49.61378870603235]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_2': 0.08155765896762883, 'percentile_98': 45.348544433662454}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.0464402866499578, 'max': 49.61378870603235, 'mean': 9.039553150168388, 'count': 36.0, 'sum': 325.42391340606196, 'std': 11.97160706711745, 'median': 4.45260464610365, 'majority': 0.0464402866499578, 'minority': 0.0464402866499578, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.0464402866499578, 5.003175128588197, 9.959909970526436, 14.916644812464675, 19.873379654402914, 24.830114496341153, 29.786849338279392, 34.74358418021763, 39.700319022155874, 44.65705386409412, 49.61378870603235]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_2': 0.08155765896762883, 'percentile_98': 45.348544433662454}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.0464402866499578, 'max': 49.61378870603235, 'mean': 9.039553150168388, 'count': 36.0, 'sum': 325.42391340606196, 'std': 11.97160706711745, 'median': 4.45260464610365, 'majority': 0.0464402866499578, 'minority': 0.0464402866499578, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.0464402866499578, 5.003175128588197, 9.959909970526436, 14.916644812464675, 19.873379654402914, 24.830114496341153, 29.786849338279392, 34.74358418021763, 39.700319022155874, 44.65705386409412, 49.61378870603235]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_2': 0.08155765896762883, 'percentile_98': 45.348544433662454}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.0464402866499578, 'max': 49.61378870603235, 'mean': 9.039553150168388, 'count': 36.0, 'sum': 325.42391340606196, 'std': 11.97160706711745, 'median': 4.45260464610365, 'majority': 0.0464402866499578, 'minority': 0.0464402866499578, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.0464402866499578, 5.003175128588197, 9.959909970526436, 14.916644812464675, 19.873379654402914, 24.830114496341153, 29.786849338279392, 34.74358418021763, 39.700319022155874, 44.65705386409412, 49.61378870603235]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_2': 0.08155765896762883, 'percentile_98': 45.348544433662454}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.0464402866499578, 'max': 49.61378870603235, 'mean': 9.039553150168388, 'count': 36.0, 'sum': 325.42391340606196, 'std': 11.97160706711745, 'median': 4.45260464610365, 'majority': 0.0464402866499578, 'minority': 0.0464402866499578, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.0464402866499578, 5.003175128588197, 9.959909970526436, 14.916644812464675, 19.873379654402914, 24.830114496341153, 29.786849338279392, 34.74358418021763, 39.700319022155874, 44.65705386409412, 49.61378870603235]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_2': 0.08155765896762883, 'percentile_98': 45.348544433662454}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.0464402866499578, 'max': 49.61378870603235, 'mean': 9.039553150168388, 'count': 36.0, 'sum': 325.42391340606196, 'std': 11.97160706711745, 'median': 4.45260464610365, 'majority': 0.0464402866499578, 'minority': 0.0464402866499578, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.0464402866499578, 5.003175128588197, 9.959909970526436, 14.916644812464675, 19.873379654402914, 24.830114496341153, 29.786849338279392, 34.74358418021763, 39.700319022155874, 44.65705386409412, 49.61378870603235]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 45.348544433662454, 'percentile_2': 0.08155765896762883}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.0464402866499578, 'max': 49.61378870603235, 'mean': 9.039553150168388, 'count': 36.0, 'sum': 325.42391340606196, 'std': 11.97160706711745, 'median': 4.45260464610365, 'majority': 0.0464402866499578, 'minority': 0.0464402866499578, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.0464402866499578, 5.003175128588197, 9.959909970526436, 14.916644812464675, 19.873379654402914, 24.830114496341153, 29.786849338279392, 34.74358418021763, 39.700319022155874, 44.65705386409412, 49.61378870603235]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 45.348544433662454, 'percentile_2': 0.08155765896762883}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.0464402866499578, 'max': 49.61378870603235, 'mean': 9.039553150168388, 'count': 36.0, 'sum': 325.42391340606196, 'std': 11.97160706711745, 'median': 4.45260464610365, 'majority': 0.0464402866499578, 'minority': 0.0464402866499578, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.0464402866499578, 5.003175128588197, 9.959909970526436, 14.916644812464675, 19.873379654402914, 24.830114496341153, 29.786849338279392, 34.74358418021763, 39.700319022155874, 44.65705386409412, 49.61378870603235]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 45.348544433662454, 'percentile_2': 0.08155765896762883}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.046440286649957814, 'max': 49.61378870603235, 'mean': 9.039553150168388, 'count': 36.0, 'sum': 325.42391340606196, 'std': 11.97160706711745, 'median': 4.452604646103651, 'majority': 0.046440286649957814, 'minority': 0.046440286649957814, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.046440286649957814, 5.003175128588197, 9.959909970526436, 14.916644812464675, 19.873379654402914, 24.830114496341153, 29.786849338279392, 34.74358418021763, 39.700319022155874, 44.65705386409412, 49.61378870603235]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 45.348544433662454, 'percentile_2': 0.08155765896762883}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.0464402866499578, 'max': 49.61378870603235, 'mean': 9.039553150168388, 'count': 36.0, 'sum': 325.42391340606196, 'std': 11.97160706711745, 'median': 4.45260464610365, 'majority': 0.0464402866499578, 'minority': 0.0464402866499578, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.0464402866499578, 5.003175128588197, 9.959909970526436, 14.916644812464675, 19.873379654402914, 24.830114496341153, 29.786849338279392, 34.74358418021763, 39.700319022155874, 44.65705386409412, 49.61378870603235]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 45.348544433662454, 'percentile_2': 0.08155765896762883}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.03709242852969095, 'max': 39.62714368102128, 'mean': 7.220002358949011, 'count': 36.0, 'sum': 259.9200849221644, 'std': 9.561869909840457, 'median': 3.5563501330524105, 'majority': 0.03709242852969095, 'minority': 0.03709242852969095, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.03709242852969095, 3.9960975537788497, 7.955102679028009, 11.914107804277167, 15.873112929526327, 19.832118054775485, 23.79112318002464, 27.7501283052738, 31.70913343052296, 35.66813855577212, 39.62714368102128]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 36.22044058448264, 'percentile_2': 0.0651411060208955}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.03709242852969095, 'max': 39.62714368102128, 'mean': 7.220002358949011, 'count': 36.0, 'sum': 259.9200849221644, 'std': 9.561869909840457, 'median': 3.556350133052411, 'majority': 0.03709242852969095, 'minority': 0.03709242852969095, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.03709242852969095, 3.9960975537788497, 7.955102679028009, 11.914107804277167, 15.873112929526327, 19.832118054775485, 23.79112318002464, 27.7501283052738, 31.70913343052296, 35.66813855577212, 39.62714368102128]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 36.22044058448264, 'percentile_2': 0.0651411060208955}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.03709242852969095, 'max': 39.62714368102128, 'mean': 7.220002358949011, 'count': 36.0, 'sum': 259.9200849221644, 'std': 9.561869909840457, 'median': 3.5563501330524105, 'majority': 0.03709242852969095, 'minority': 0.03709242852969095, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.03709242852969095, 3.9960975537788497, 7.955102679028009, 11.914107804277167, 15.873112929526327, 19.832118054775485, 23.79112318002464, 27.7501283052738, 31.70913343052296, 35.66813855577212, 39.62714368102128]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 36.22044058448264, 'percentile_2': 0.0651411060208955}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.03709242852969095, 'max': 39.62714368102128, 'mean': 7.220002358949011, 'count': 36.0, 'sum': 259.9200849221644, 'std': 9.561869909840457, 'median': 3.556350133052411, 'majority': 0.03709242852969095, 'minority': 0.03709242852969095, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.03709242852969095, 3.9960975537788497, 7.955102679028009, 11.914107804277167, 15.873112929526327, 19.832118054775485, 23.79112318002464, 27.7501283052738, 31.70913343052296, 35.66813855577212, 39.62714368102128]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 36.22044058448264, 'percentile_2': 0.0651411060208955}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.03709242852969095, 'max': 39.62714368102128, 'mean': 7.220002358949011, 'count': 36.0, 'sum': 259.9200849221644, 'std': 9.561869909840457, 'median': 3.5563501330524105, 'majority': 0.03709242852969095, 'minority': 0.03709242852969095, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.03709242852969095, 3.9960975537788497, 7.955102679028009, 11.914107804277167, 15.873112929526327, 19.832118054775485, 23.79112318002464, 27.7501283052738, 31.70913343052296, 35.66813855577212, 39.62714368102128]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 36.22044058448264, 'percentile_2': 0.0651411060208955}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.03709242852969095, 'max': 39.62714368102128, 'mean': 7.220002358949011, 'count': 36.0, 'sum': 259.9200849221644, 'std': 9.561869909840457, 'median': 3.5563501330524105, 'majority': 0.03709242852969095, 'minority': 0.03709242852969095, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.03709242852969095, 3.9960975537788497, 7.955102679028009, 11.914107804277167, 15.873112929526327, 19.832118054775485, 23.79112318002464, 27.7501283052738, 31.70913343052296, 35.66813855577212, 39.62714368102128]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 36.22044058448264, 'percentile_2': 0.0651411060208955}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.03709242852969095, 'max': 39.62714368102128, 'mean': 7.220002358949011, 'count': 36.0, 'sum': 259.9200849221644, 'std': 9.561869909840457, 'median': 3.556350133052411, 'majority': 0.03709242852969095, 'minority': 0.03709242852969095, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.03709242852969095, 3.9960975537788497, 7.955102679028009, 11.914107804277167, 15.873112929526327, 19.832118054775485, 23.79112318002464, 27.7501283052738, 31.70913343052296, 35.66813855577212, 39.62714368102128]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 36.22044058448264, 'percentile_2': 0.0651411060208955}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.03709242852969095, 'max': 39.62714368102128, 'mean': 7.220002358949011, 'count': 36.0, 'sum': 259.9200849221644, 'std': 9.561869909840457, 'median': 3.5563501330524105, 'majority': 0.03709242852969095, 'minority': 0.03709242852969095, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.03709242852969095, 3.9960975537788497, 7.955102679028009, 11.914107804277167, 15.873112929526327, 19.832118054775485, 23.79112318002464, 27.7501283052738, 31.70913343052296, 35.66813855577212, 39.62714368102128]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 36.22044058448264, 'percentile_2': 0.0651411060208955}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.03709242852969095, 'max': 39.62714368102128, 'mean': 7.220002358949011, 'count': 36.0, 'sum': 259.9200849221644, 'std': 9.561869909840457, 'median': 3.556350133052411, 'majority': 0.03709242852969095, 'minority': 0.03709242852969095, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.03709242852969095, 3.9960975537788497, 7.955102679028009, 11.914107804277167, 15.873112929526327, 19.832118054775485, 23.79112318002464, 27.7501283052738, 31.70913343052296, 35.66813855577212, 39.62714368102128]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 36.22044058448264, 'percentile_2': 0.0651411060208955}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.03709242852969095, 'max': 39.62714368102128, 'mean': 7.220002358949011, 'count': 36.0, 'sum': 259.9200849221644, 'std': 9.561869909840457, 'median': 3.5563501330524105, 'majority': 0.03709242852969095, 'minority': 0.03709242852969095, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.03709242852969095, 3.9960975537788497, 7.955102679028009, 11.914107804277167, 15.873112929526327, 19.832118054775485, 23.79112318002464, 27.7501283052738, 31.70913343052296, 35.66813855577212, 39.62714368102128]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 36.22044058448264, 'percentile_2': 0.0651411060208955}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.03709242852969095, 'max': 39.62714368102128, 'mean': 7.220002358949011, 'count': 36.0, 'sum': 259.9200849221644, 'std': 9.561869909840457, 'median': 3.556350133052411, 'majority': 0.03709242852969095, 'minority': 0.03709242852969095, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.03709242852969095, 3.9960975537788497, 7.955102679028009, 11.914107804277167, 15.873112929526327, 19.832118054775485, 23.79112318002464, 27.7501283052738, 31.70913343052296, 35.66813855577212, 39.62714368102128]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 36.22044058448264, 'percentile_2': 0.06514110602089551}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.03709242852969095, 'max': 39.62714368102128, 'mean': 7.220002358949011, 'count': 36.0, 'sum': 259.9200849221644, 'std': 9.561869909840457, 'median': 3.5563501330524105, 'majority': 0.03709242852969095, 'minority': 0.03709242852969095, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.03709242852969095, 3.9960975537788497, 7.955102679028009, 11.914107804277167, 15.873112929526327, 19.832118054775485, 23.79112318002464, 27.7501283052738, 31.70913343052296, 35.66813855577212, 39.62714368102128]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 36.22044058448264, 'percentile_2': 0.0651411060208955}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.049828655966481096, 'max': 53.233702609559955, 'mean': 9.69909568830946, 'count': 36.0, 'sum': 349.16744477914057, 'std': 12.845077688895602, 'median': 4.777474926840396, 'majority': 0.049828655966481096, 'minority': 0.049828655966481096, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.049828655966481096, 5.368216051325828, 10.686603446685176, 16.004990842044524, 21.323378237403873, 26.64176563276322, 31.960153028122566, 37.278540423481914, 42.59692781884126, 47.915315214200604, 53.233702609559955]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 48.65725821629272, 'percentile_2': 0.08750825680214142}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.049828655966481096, 'max': 53.233702609559955, 'mean': 9.69909568830946, 'count': 36.0, 'sum': 349.16744477914057, 'std': 12.845077688895602, 'median': 4.777474926840396, 'majority': 0.049828655966481096, 'minority': 0.049828655966481096, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.049828655966481096, 5.368216051325828, 10.686603446685176, 16.004990842044524, 21.323378237403873, 26.64176563276322, 31.960153028122566, 37.278540423481914, 42.59692781884126, 47.915315214200604, 53.233702609559955]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 48.65725821629272, 'percentile_2': 0.08750825680214142}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.049828655966481096, 'max': 53.233702609559955, 'mean': 9.69909568830946, 'count': 36.0, 'sum': 349.16744477914057, 'std': 12.845077688895602, 'median': 4.777474926840396, 'majority': 0.049828655966481096, 'minority': 0.049828655966481096, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.049828655966481096, 5.368216051325828, 10.686603446685176, 16.004990842044524, 21.323378237403873, 26.64176563276322, 31.960153028122566, 37.278540423481914, 42.59692781884126, 47.915315214200604, 53.233702609559955]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 48.65725821629272, 'percentile_2': 0.08750825680214142}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.049828655966481096, 'max': 53.233702609559955, 'mean': 9.69909568830946, 'count': 36.0, 'sum': 349.16744477914057, 'std': 12.845077688895602, 'median': 4.777474926840396, 'majority': 0.049828655966481096, 'minority': 0.049828655966481096, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.049828655966481096, 5.368216051325828, 10.686603446685176, 16.004990842044524, 21.323378237403873, 26.64176563276322, 31.960153028122566, 37.278540423481914, 42.59692781884126, 47.915315214200604, 53.233702609559955]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 48.65725821629272, 'percentile_2': 0.08750825680214142}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.049828655966481096, 'max': 53.233702609559955, 'mean': 9.69909568830946, 'count': 36.0, 'sum': 349.16744477914057, 'std': 12.845077688895602, 'median': 4.777474926840396, 'majority': 0.049828655966481096, 'minority': 0.049828655966481096, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.049828655966481096, 5.368216051325828, 10.686603446685176, 16.004990842044524, 21.323378237403873, 26.64176563276322, 31.960153028122566, 37.278540423481914, 42.59692781884126, 47.915315214200604, 53.233702609559955]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 48.65725821629272, 'percentile_2': 0.08750825680214142}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.049828655966481096, 'max': 53.233702609559955, 'mean': 9.69909568830946, 'count': 36.0, 'sum': 349.16744477914057, 'std': 12.845077688895602, 'median': 4.777474926840396, 'majority': 0.049828655966481096, 'minority': 0.049828655966481096, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.049828655966481096, 5.368216051325828, 10.686603446685176, 16.004990842044524, 21.323378237403873, 26.64176563276322, 31.960153028122566, 37.278540423481914, 42.59692781884126, 47.915315214200604, 53.233702609559955]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 48.65725821629272, 'percentile_2': 0.08750825680214142}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.049828655966481096, 'max': 53.233702609559955, 'mean': 9.69909568830946, 'count': 36.0, 'sum': 349.16744477914057, 'std': 12.845077688895602, 'median': 4.777474926840396, 'majority': 0.049828655966481096, 'minority': 0.049828655966481096, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.049828655966481096, 5.368216051325828, 10.686603446685176, 16.004990842044524, 21.323378237403873, 26.64176563276322, 31.960153028122566, 37.278540423481914, 42.59692781884126, 47.915315214200604, 53.233702609559955]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 48.65725821629272, 'percentile_2': 0.08750825680214142}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.049828655966481096, 'max': 53.233702609559955, 'mean': 9.69909568830946, 'count': 36.0, 'sum': 349.16744477914057, 'std': 12.845077688895602, 'median': 4.777474926840396, 'majority': 0.049828655966481096, 'minority': 0.049828655966481096, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.049828655966481096, 5.368216051325828, 10.686603446685176, 16.004990842044524, 21.323378237403873, 26.64176563276322, 31.960153028122566, 37.278540423481914, 42.59692781884126, 47.915315214200604, 53.233702609559955]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 48.65725821629272, 'percentile_2': 0.08750825680214142}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.049828655966481096, 'max': 53.233702609559955, 'mean': 9.69909568830946, 'count': 36.0, 'sum': 349.16744477914057, 'std': 12.845077688895602, 'median': 4.777474926840396, 'majority': 0.049828655966481096, 'minority': 0.049828655966481096, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.049828655966481096, 5.368216051325828, 10.686603446685176, 16.004990842044524, 21.323378237403873, 26.64176563276322, 31.960153028122566, 37.278540423481914, 42.59692781884126, 47.915315214200604, 53.233702609559955]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 48.65725821629272, 'percentile_2': 0.08750825680214142}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.049828655966481096, 'max': 53.233702609559955, 'mean': 9.69909568830946, 'count': 36.0, 'sum': 349.16744477914057, 'std': 12.845077688895602, 'median': 4.777474926840396, 'majority': 0.049828655966481096, 'minority': 0.049828655966481096, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.049828655966481096, 5.368216051325828, 10.686603446685176, 16.004990842044524, 21.323378237403873, 26.64176563276322, 31.960153028122566, 37.278540423481914, 42.59692781884126, 47.915315214200604, 53.233702609559955]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 48.65725821629272, 'percentile_2': 0.08750825680214142}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.0498286559664811, 'max': 53.233702609559955, 'mean': 9.69909568830946, 'count': 36.0, 'sum': 349.16744477914057, 'std': 12.845077688895602, 'median': 4.777474926840396, 'majority': 0.0498286559664811, 'minority': 0.0498286559664811, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.0498286559664811, 5.368216051325828, 10.686603446685176, 16.004990842044524, 21.323378237403873, 26.64176563276322, 31.960153028122566, 37.278540423481914, 42.59692781884126, 47.915315214200604, 53.233702609559955]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 48.65725821629272, 'percentile_2': 0.08750825680214143}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.049828655966481096, 'max': 53.233702609559955, 'mean': 9.69909568830946, 'count': 36.0, 'sum': 349.16744477914057, 'std': 12.845077688895602, 'median': 4.777474926840396, 'majority': 0.049828655966481096, 'minority': 0.049828655966481096, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.049828655966481096, 5.368216051325828, 10.686603446685176, 16.004990842044524, 21.323378237403873, 26.64176563276322, 31.960153028122566, 37.278540423481914, 42.59692781884126, 47.915315214200604, 53.233702609559955]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 48.65725821629272, 'percentile_2': 0.08750825680214142}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.04844368240797245, 'max': 51.754086731793784, 'mean': 9.429512035906917, 'count': 36.0, 'sum': 339.462433292649, 'std': 12.488052346528812, 'median': 4.6446863472214135, 'majority': 0.04844368240797245, 'minority': 0.04844368240797245, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.04844368240797245, 5.219007987346554, 10.389572292285136, 15.560136597223718, 20.730700902162297, 25.901265207100877, 31.07182951203946, 36.242393816978044, 41.412958121916624, 46.583522426855204, 51.754086731793784]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 47.304843330681024, 'percentile_2': 0.08507598927512491}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.04844368240797245, 'max': 51.754086731793784, 'mean': 9.429512035906917, 'count': 36.0, 'sum': 339.462433292649, 'std': 12.488052346528812, 'median': 4.6446863472214135, 'majority': 0.04844368240797245, 'minority': 0.04844368240797245, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.04844368240797245, 5.219007987346554, 10.389572292285136, 15.560136597223718, 20.730700902162297, 25.901265207100877, 31.07182951203946, 36.242393816978044, 41.412958121916624, 46.583522426855204, 51.754086731793784]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 47.304843330681024, 'percentile_2': 0.08507598927512491}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.04844368240797245, 'max': 51.754086731793784, 'mean': 9.429512035906917, 'count': 36.0, 'sum': 339.462433292649, 'std': 12.488052346528812, 'median': 4.6446863472214135, 'majority': 0.04844368240797245, 'minority': 0.04844368240797245, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.04844368240797245, 5.219007987346554, 10.389572292285136, 15.560136597223718, 20.730700902162297, 25.901265207100877, 31.07182951203946, 36.242393816978044, 41.412958121916624, 46.583522426855204, 51.754086731793784]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 47.304843330681024, 'percentile_2': 0.08507598927512491}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.04844368240797245, 'max': 51.754086731793784, 'mean': 9.429512035906917, 'count': 36.0, 'sum': 339.462433292649, 'std': 12.488052346528812, 'median': 4.6446863472214135, 'majority': 0.04844368240797245, 'minority': 0.04844368240797245, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.04844368240797245, 5.219007987346554, 10.389572292285136, 15.560136597223718, 20.730700902162297, 25.901265207100877, 31.07182951203946, 36.242393816978044, 41.412958121916624, 46.583522426855204, 51.754086731793784]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 47.304843330681024, 'percentile_2': 0.08507598927512491}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.04844368240797245, 'max': 51.754086731793784, 'mean': 9.429512035906917, 'count': 36.0, 'sum': 339.462433292649, 'std': 12.488052346528812, 'median': 4.6446863472214135, 'majority': 0.04844368240797245, 'minority': 0.04844368240797245, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.04844368240797245, 5.219007987346554, 10.389572292285136, 15.560136597223718, 20.730700902162297, 25.901265207100877, 31.07182951203946, 36.242393816978044, 41.412958121916624, 46.583522426855204, 51.754086731793784]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 47.304843330681024, 'percentile_2': 0.08507598927512491}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.04844368240797245, 'max': 51.754086731793784, 'mean': 9.429512035906917, 'count': 36.0, 'sum': 339.462433292649, 'std': 12.488052346528812, 'median': 4.6446863472214135, 'majority': 0.04844368240797245, 'minority': 0.04844368240797245, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.04844368240797245, 5.219007987346554, 10.389572292285136, 15.560136597223718, 20.730700902162297, 25.901265207100877, 31.07182951203946, 36.242393816978044, 41.412958121916624, 46.583522426855204, 51.754086731793784]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 47.304843330681024, 'percentile_2': 0.08507598927512491}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.04844368240797245, 'max': 51.754086731793784, 'mean': 9.429512035906917, 'count': 36.0, 'sum': 339.462433292649, 'std': 12.488052346528812, 'median': 4.6446863472214135, 'majority': 0.04844368240797245, 'minority': 0.04844368240797245, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.04844368240797245, 5.219007987346554, 10.389572292285136, 15.560136597223718, 20.730700902162297, 25.901265207100877, 31.07182951203946, 36.242393816978044, 41.412958121916624, 46.583522426855204, 51.754086731793784]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 47.304843330681024, 'percentile_2': 0.08507598927512491}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.04844368240797245, 'max': 51.754086731793784, 'mean': 9.429512035906917, 'count': 36.0, 'sum': 339.462433292649, 'std': 12.488052346528812, 'median': 4.6446863472214135, 'majority': 0.04844368240797245, 'minority': 0.04844368240797245, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.04844368240797245, 5.219007987346554, 10.389572292285136, 15.560136597223718, 20.730700902162297, 25.901265207100877, 31.07182951203946, 36.242393816978044, 41.412958121916624, 46.583522426855204, 51.754086731793784]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 47.304843330681024, 'percentile_2': 0.08507598927512491}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.04844368240797245, 'max': 51.754086731793784, 'mean': 9.429512035906917, 'count': 36.0, 'sum': 339.462433292649, 'std': 12.488052346528812, 'median': 4.6446863472214135, 'majority': 0.04844368240797245, 'minority': 0.04844368240797245, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.04844368240797245, 5.219007987346554, 10.389572292285136, 15.560136597223718, 20.730700902162297, 25.901265207100877, 31.07182951203946, 36.242393816978044, 41.412958121916624, 46.583522426855204, 51.754086731793784]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 47.304843330681024, 'percentile_2': 0.08507598927512491}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.04844368240797245, 'max': 51.754086731793784, 'mean': 9.429512035906917, 'count': 36.0, 'sum': 339.462433292649, 'std': 12.488052346528812, 'median': 4.6446863472214135, 'majority': 0.04844368240797245, 'minority': 0.04844368240797245, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.04844368240797245, 5.219007987346554, 10.389572292285136, 15.560136597223718, 20.730700902162297, 25.901265207100877, 31.07182951203946, 36.242393816978044, 41.412958121916624, 46.583522426855204, 51.754086731793784]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 47.304843330681024, 'percentile_2': 0.08507598927512491}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.04844368240797246, 'max': 51.754086731793784, 'mean': 9.429512035906917, 'count': 36.0, 'sum': 339.462433292649, 'std': 12.488052346528812, 'median': 4.6446863472214135, 'majority': 0.04844368240797246, 'minority': 0.04844368240797246, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.04844368240797246, 5.219007987346554, 10.389572292285136, 15.560136597223718, 20.730700902162297, 25.901265207100877, 31.07182951203946, 36.242393816978044, 41.412958121916624, 46.583522426855204, 51.754086731793784]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 47.304843330681024, 'percentile_2': 0.08507598927512491}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.04844368240797245, 'max': 51.754086731793784, 'mean': 9.429512035906917, 'count': 36.0, 'sum': 339.462433292649, 'std': 12.488052346528812, 'median': 4.6446863472214135, 'majority': 0.04844368240797245, 'minority': 0.04844368240797245, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.04844368240797245, 5.219007987346554, 10.389572292285136, 15.560136597223718, 20.730700902162297, 25.901265207100877, 31.07182951203946, 36.242393816978044, 41.412958121916624, 46.583522426855204, 51.754086731793784]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 47.304843330681024, 'percentile_2': 0.08507598927512491}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.041069475890559086, 'max': 43.875963007294224, 'mean': 7.994130461780975, 'count': 36.0, 'sum': 287.7886966241151, 'std': 10.587092873051281, 'median': 3.9376617233587075, 'majority': 0.041069475890559086, 'minority': 0.041069475890559086, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.041069475890559086, 4.424558829030926, 8.808048182171293, 13.19153753531166, 17.575026888452026, 21.958516241592392, 26.34200559473276, 30.725494947873127, 35.10898430101349, 39.49247365415386, 43.875963007294224]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 40.10399346430261, 'percentile_2': 0.0721255304453319}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.041069475890559086, 'max': 43.875963007294224, 'mean': 7.994130461780975, 'count': 36.0, 'sum': 287.7886966241151, 'std': 10.587092873051281, 'median': 3.9376617233587083, 'majority': 0.041069475890559086, 'minority': 0.041069475890559086, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.041069475890559086, 4.424558829030926, 8.808048182171293, 13.19153753531166, 17.575026888452026, 21.958516241592392, 26.34200559473276, 30.725494947873127, 35.10898430101349, 39.49247365415386, 43.875963007294224]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 40.10399346430261, 'percentile_2': 0.0721255304453319}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.041069475890559086, 'max': 43.875963007294224, 'mean': 7.994130461780975, 'count': 36.0, 'sum': 287.7886966241151, 'std': 10.587092873051281, 'median': 3.9376617233587075, 'majority': 0.041069475890559086, 'minority': 0.041069475890559086, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.041069475890559086, 4.424558829030926, 8.808048182171293, 13.19153753531166, 17.575026888452026, 21.958516241592392, 26.34200559473276, 30.725494947873127, 35.10898430101349, 39.49247365415386, 43.875963007294224]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 40.10399346430261, 'percentile_2': 0.0721255304453319}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.041069475890559086, 'max': 43.875963007294224, 'mean': 7.994130461780975, 'count': 36.0, 'sum': 287.7886966241151, 'std': 10.587092873051281, 'median': 3.9376617233587083, 'majority': 0.041069475890559086, 'minority': 0.041069475890559086, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.041069475890559086, 4.424558829030926, 8.808048182171293, 13.19153753531166, 17.575026888452026, 21.958516241592392, 26.34200559473276, 30.725494947873127, 35.10898430101349, 39.49247365415386, 43.875963007294224]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 40.10399346430261, 'percentile_2': 0.0721255304453319}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.041069475890559086, 'max': 43.875963007294224, 'mean': 7.994130461780975, 'count': 36.0, 'sum': 287.7886966241151, 'std': 10.587092873051281, 'median': 3.9376617233587075, 'majority': 0.041069475890559086, 'minority': 0.041069475890559086, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.041069475890559086, 4.424558829030926, 8.808048182171293, 13.19153753531166, 17.575026888452026, 21.958516241592392, 26.34200559473276, 30.725494947873127, 35.10898430101349, 39.49247365415386, 43.875963007294224]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 40.10399346430261, 'percentile_2': 0.0721255304453319}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.041069475890559086, 'max': 43.875963007294224, 'mean': 7.994130461780975, 'count': 36.0, 'sum': 287.7886966241151, 'std': 10.587092873051281, 'median': 3.9376617233587075, 'majority': 0.041069475890559086, 'minority': 0.041069475890559086, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.041069475890559086, 4.424558829030926, 8.808048182171293, 13.19153753531166, 17.575026888452026, 21.958516241592392, 26.34200559473276, 30.725494947873127, 35.10898430101349, 39.49247365415386, 43.875963007294224]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 40.10399346430261, 'percentile_2': 0.0721255304453319}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.041069475890559086, 'max': 43.875963007294224, 'mean': 7.994130461780975, 'count': 36.0, 'sum': 287.7886966241151, 'std': 10.587092873051281, 'median': 3.9376617233587083, 'majority': 0.041069475890559086, 'minority': 0.041069475890559086, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.041069475890559086, 4.424558829030926, 8.808048182171293, 13.19153753531166, 17.575026888452026, 21.958516241592392, 26.34200559473276, 30.725494947873127, 35.10898430101349, 39.49247365415386, 43.875963007294224]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 40.10399346430261, 'percentile_2': 0.0721255304453319}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.041069475890559086, 'max': 43.875963007294224, 'mean': 7.994130461780975, 'count': 36.0, 'sum': 287.7886966241151, 'std': 10.587092873051281, 'median': 3.9376617233587075, 'majority': 0.041069475890559086, 'minority': 0.041069475890559086, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.041069475890559086, 4.424558829030926, 8.808048182171293, 13.19153753531166, 17.575026888452026, 21.958516241592392, 26.34200559473276, 30.725494947873127, 35.10898430101349, 39.49247365415386, 43.875963007294224]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 40.10399346430261, 'percentile_2': 0.0721255304453319}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.041069475890559086, 'max': 43.875963007294224, 'mean': 7.994130461780975, 'count': 36.0, 'sum': 287.7886966241151, 'std': 10.587092873051281, 'median': 3.9376617233587083, 'majority': 0.041069475890559086, 'minority': 0.041069475890559086, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.041069475890559086, 4.424558829030926, 8.808048182171293, 13.19153753531166, 17.575026888452026, 21.958516241592392, 26.34200559473276, 30.725494947873127, 35.10898430101349, 39.49247365415386, 43.875963007294224]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 40.10399346430261, 'percentile_2': 0.0721255304453319}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.041069475890559086, 'max': 43.875963007294224, 'mean': 7.994130461780975, 'count': 36.0, 'sum': 287.7886966241151, 'std': 10.587092873051281, 'median': 3.9376617233587075, 'majority': 0.041069475890559086, 'minority': 0.041069475890559086, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.041069475890559086, 4.424558829030926, 8.808048182171293, 13.19153753531166, 17.575026888452026, 21.958516241592392, 26.34200559473276, 30.725494947873127, 35.10898430101349, 39.49247365415386, 43.875963007294224]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 40.10399346430261, 'percentile_2': 0.0721255304453319}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.0410694758905591, 'max': 43.875963007294224, 'mean': 7.994130461780975, 'count': 36.0, 'sum': 287.7886966241151, 'std': 10.587092873051281, 'median': 3.9376617233587083, 'majority': 0.0410694758905591, 'minority': 0.0410694758905591, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.0410694758905591, 4.424558829030926, 8.808048182171293, 13.19153753531166, 17.575026888452026, 21.958516241592392, 26.34200559473276, 30.725494947873127, 35.10898430101349, 39.49247365415386, 43.875963007294224]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 40.10399346430261, 'percentile_2': 0.0721255304453319}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.041069475890559086, 'max': 43.875963007294224, 'mean': 7.994130461780975, 'count': 36.0, 'sum': 287.7886966241151, 'std': 10.587092873051281, 'median': 3.9376617233587075, 'majority': 0.041069475890559086, 'minority': 0.041069475890559086, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.041069475890559086, 4.424558829030926, 8.808048182171293, 13.19153753531166, 17.575026888452026, 21.958516241592392, 26.34200559473276, 30.725494947873127, 35.10898430101349, 39.49247365415386, 43.875963007294224]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 40.10399346430261, 'percentile_2': 0.0721255304453319}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.04525232158395881, 'max': 43.218752482629654, 'mean': 8.01499072869041, 'count': 36.0, 'sum': 288.53966623285476, 'std': 10.403540190053944, 'median': 4.137984154342062, 'majority': 0.04525232158395881, 'minority': 0.04525232158395881, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.04525232158395881, 4.362602337688529, 8.679952353793098, 12.997302369897668, 17.314652386002237, 21.632002402106806, 25.949352418211376, 30.266702434315945, 34.584052450420515, 38.901402466525084, 43.218752482629654]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 39.44170954210687, 'percentile_2': 0.07944786893704293}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.04525232158395881, 'max': 43.218752482629654, 'mean': 8.01499072869041, 'count': 36.0, 'sum': 288.53966623285476, 'std': 10.403540190053944, 'median': 4.137984154342062, 'majority': 0.04525232158395881, 'minority': 0.04525232158395881, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.04525232158395881, 4.362602337688529, 8.679952353793098, 12.997302369897668, 17.314652386002237, 21.632002402106806, 25.949352418211376, 30.266702434315945, 34.584052450420515, 38.901402466525084, 43.218752482629654]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 39.44170954210687, 'percentile_2': 0.07944786893704293}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.04525232158395881, 'max': 43.218752482629654, 'mean': 8.01499072869041, 'count': 36.0, 'sum': 288.53966623285476, 'std': 10.403540190053944, 'median': 4.137984154342062, 'majority': 0.04525232158395881, 'minority': 0.04525232158395881, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.04525232158395881, 4.362602337688529, 8.679952353793098, 12.997302369897668, 17.314652386002237, 21.632002402106806, 25.949352418211376, 30.266702434315945, 34.584052450420515, 38.901402466525084, 43.218752482629654]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 39.44170954210687, 'percentile_2': 0.07944786893704293}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.04525232158395881, 'max': 43.218752482629654, 'mean': 8.01499072869041, 'count': 36.0, 'sum': 288.53966623285476, 'std': 10.403540190053944, 'median': 4.137984154342062, 'majority': 0.04525232158395881, 'minority': 0.04525232158395881, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.04525232158395881, 4.362602337688529, 8.679952353793098, 12.997302369897668, 17.314652386002237, 21.632002402106806, 25.949352418211376, 30.266702434315945, 34.584052450420515, 38.901402466525084, 43.218752482629654]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 39.44170954210687, 'percentile_2': 0.07944786893704293}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.04525232158395881, 'max': 43.218752482629654, 'mean': 8.01499072869041, 'count': 36.0, 'sum': 288.53966623285476, 'std': 10.403540190053944, 'median': 4.137984154342062, 'majority': 0.04525232158395881, 'minority': 0.04525232158395881, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.04525232158395881, 4.362602337688529, 8.679952353793098, 12.997302369897668, 17.314652386002237, 21.632002402106806, 25.949352418211376, 30.266702434315945, 34.584052450420515, 38.901402466525084, 43.218752482629654]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 39.44170954210687, 'percentile_2': 0.07944786893704293}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.04525232158395881, 'max': 43.218752482629654, 'mean': 8.01499072869041, 'count': 36.0, 'sum': 288.53966623285476, 'std': 10.403540190053944, 'median': 4.137984154342062, 'majority': 0.04525232158395881, 'minority': 0.04525232158395881, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.04525232158395881, 4.362602337688529, 8.679952353793098, 12.997302369897668, 17.314652386002237, 21.632002402106806, 25.949352418211376, 30.266702434315945, 34.584052450420515, 38.901402466525084, 43.218752482629654]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 39.44170954210687, 'percentile_2': 0.07944786893704293}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.04525232158395881, 'max': 43.218752482629654, 'mean': 8.01499072869041, 'count': 36.0, 'sum': 288.53966623285476, 'std': 10.403540190053944, 'median': 4.137984154342062, 'majority': 0.04525232158395881, 'minority': 0.04525232158395881, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.04525232158395881, 4.362602337688529, 8.679952353793098, 12.997302369897668, 17.314652386002237, 21.632002402106806, 25.949352418211376, 30.266702434315945, 34.584052450420515, 38.901402466525084, 43.218752482629654]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 39.44170954210687, 'percentile_2': 0.07944786893704293}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.04525232158395881, 'max': 43.218752482629654, 'mean': 8.01499072869041, 'count': 36.0, 'sum': 288.53966623285476, 'std': 10.403540190053944, 'median': 4.137984154342062, 'majority': 0.04525232158395881, 'minority': 0.04525232158395881, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.04525232158395881, 4.362602337688529, 8.679952353793098, 12.997302369897668, 17.314652386002237, 21.632002402106806, 25.949352418211376, 30.266702434315945, 34.584052450420515, 38.901402466525084, 43.218752482629654]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 39.44170954210687, 'percentile_2': 0.07944786893704293}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.04525232158395881, 'max': 43.218752482629654, 'mean': 8.01499072869041, 'count': 36.0, 'sum': 288.53966623285476, 'std': 10.403540190053944, 'median': 4.137984154342062, 'majority': 0.04525232158395881, 'minority': 0.04525232158395881, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.04525232158395881, 4.362602337688529, 8.679952353793098, 12.997302369897668, 17.314652386002237, 21.632002402106806, 25.949352418211376, 30.266702434315945, 34.584052450420515, 38.901402466525084, 43.218752482629654]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 39.44170954210687, 'percentile_2': 0.07944786893704293}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.04525232158395881, 'max': 43.218752482629654, 'mean': 8.01499072869041, 'count': 36.0, 'sum': 288.53966623285476, 'std': 10.403540190053944, 'median': 4.137984154342062, 'majority': 0.04525232158395881, 'minority': 0.04525232158395881, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.04525232158395881, 4.362602337688529, 8.679952353793098, 12.997302369897668, 17.314652386002237, 21.632002402106806, 25.949352418211376, 30.266702434315945, 34.584052450420515, 38.901402466525084, 43.218752482629654]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 39.44170954210687, 'percentile_2': 0.07944786893704293}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.04525232158395881, 'max': 43.218752482629654, 'mean': 8.014990728690412, 'count': 36.0, 'sum': 288.5396662328548, 'std': 10.403540190053944, 'median': 4.137984154342062, 'majority': 0.04525232158395881, 'minority': 0.04525232158395881, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.04525232158395881, 4.362602337688529, 8.679952353793098, 12.997302369897668, 17.314652386002237, 21.632002402106806, 25.949352418211376, 30.266702434315945, 34.584052450420515, 38.901402466525084, 43.218752482629654]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 39.44170954210687, 'percentile_2': 0.07944786893704293}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.04525232158395881, 'max': 43.218752482629654, 'mean': 8.01499072869041, 'count': 36.0, 'sum': 288.53966623285476, 'std': 10.403540190053944, 'median': 4.137984154342062, 'majority': 0.04525232158395881, 'minority': 0.04525232158395881, 'unique': 36.0, 'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0], [0.04525232158395881, 4.362602337688529, 8.679952353793098, 12.997302369897668, 17.314652386002237, 21.632002402106806, 25.949352418211376, 30.266702434315945, 34.584052450420515, 38.901402466525084, 43.218752482629654]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 39.44170954210687, 'percentile_2': 0.07944786893704293}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.07815699260652442, 'max': 30.207069000964125, 'mean': 4.937147649762869, 'count': 36.0, 'sum': 177.73731539146328, 'std': 5.60027520477858, 'median': 2.9485492145015955, 'majority': 0.07815699260652442, 'minority': 0.07815699260652442, 'unique': 36.0, 'histogram': [[18.0, 8.0, 6.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0], [0.07815699260652442, 3.0910481934422847, 6.103939394278045, 9.116830595113806, 12.129721795949566, 15.142612996785326, 18.155504197621084, 21.168395398456845, 24.181286599292605, 27.194177800128365, 30.207069000964125]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 19.882372608676018, 'percentile_2': 0.13718708480325872}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.07815699260652444, 'max': 30.207069000964125, 'mean': 4.937147649762869, 'count': 36.0, 'sum': 177.73731539146328, 'std': 5.600275204778581, 'median': 2.9485492145015955, 'majority': 0.07815699260652444, 'minority': 0.07815699260652444, 'unique': 36.0, 'histogram': [[18.0, 8.0, 6.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0], [0.07815699260652444, 3.0910481934422847, 6.103939394278045, 9.116830595113806, 12.129721795949566, 15.142612996785326, 18.155504197621084, 21.168395398456845, 24.181286599292605, 27.194177800128365, 30.207069000964125]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 19.882372608676018, 'percentile_2': 0.13718708480325872}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.07815699260652442, 'max': 30.207069000964125, 'mean': 4.937147649762869, 'count': 36.0, 'sum': 177.73731539146328, 'std': 5.60027520477858, 'median': 2.9485492145015955, 'majority': 0.07815699260652442, 'minority': 0.07815699260652442, 'unique': 36.0, 'histogram': [[18.0, 8.0, 6.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0], [0.07815699260652442, 3.0910481934422847, 6.103939394278045, 9.116830595113806, 12.129721795949566, 15.142612996785326, 18.155504197621084, 21.168395398456845, 24.181286599292605, 27.194177800128365, 30.207069000964125]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 19.882372608676018, 'percentile_2': 0.13718708480325872}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.07815699260652444, 'max': 30.207069000964125, 'mean': 4.937147649762869, 'count': 36.0, 'sum': 177.73731539146328, 'std': 5.600275204778581, 'median': 2.9485492145015955, 'majority': 0.07815699260652444, 'minority': 0.07815699260652444, 'unique': 36.0, 'histogram': [[18.0, 8.0, 6.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0], [0.07815699260652444, 3.0910481934422847, 6.103939394278045, 9.116830595113806, 12.129721795949566, 15.142612996785326, 18.155504197621084, 21.168395398456845, 24.181286599292605, 27.194177800128365, 30.207069000964125]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 19.882372608676018, 'percentile_2': 0.13718708480325872}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.07815699260652442, 'max': 30.207069000964125, 'mean': 4.937147649762869, 'count': 36.0, 'sum': 177.73731539146328, 'std': 5.60027520477858, 'median': 2.9485492145015955, 'majority': 0.07815699260652442, 'minority': 0.07815699260652442, 'unique': 36.0, 'histogram': [[18.0, 8.0, 6.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0], [0.07815699260652442, 3.0910481934422847, 6.103939394278045, 9.116830595113806, 12.129721795949566, 15.142612996785326, 18.155504197621084, 21.168395398456845, 24.181286599292605, 27.194177800128365, 30.207069000964125]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 19.882372608676018, 'percentile_2': 0.13718708480325872}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.07815699260652442, 'max': 30.207069000964125, 'mean': 4.937147649762869, 'count': 36.0, 'sum': 177.73731539146328, 'std': 5.60027520477858, 'median': 2.9485492145015955, 'majority': 0.07815699260652442, 'minority': 0.07815699260652442, 'unique': 36.0, 'histogram': [[18.0, 8.0, 6.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0], [0.07815699260652442, 3.0910481934422847, 6.103939394278045, 9.116830595113806, 12.129721795949566, 15.142612996785326, 18.155504197621084, 21.168395398456845, 24.181286599292605, 27.194177800128365, 30.207069000964125]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 19.882372608676018, 'percentile_2': 0.13718708480325872}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.07815699260652444, 'max': 30.207069000964125, 'mean': 4.937147649762869, 'count': 36.0, 'sum': 177.73731539146328, 'std': 5.600275204778581, 'median': 2.9485492145015955, 'majority': 0.07815699260652444, 'minority': 0.07815699260652444, 'unique': 36.0, 'histogram': [[18.0, 8.0, 6.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0], [0.07815699260652444, 3.0910481934422847, 6.103939394278045, 9.116830595113806, 12.129721795949566, 15.142612996785326, 18.155504197621084, 21.168395398456845, 24.181286599292605, 27.194177800128365, 30.207069000964125]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 19.882372608676018, 'percentile_2': 0.13718708480325872}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.07815699260652442, 'max': 30.207069000964125, 'mean': 4.937147649762869, 'count': 36.0, 'sum': 177.73731539146328, 'std': 5.60027520477858, 'median': 2.9485492145015955, 'majority': 0.07815699260652442, 'minority': 0.07815699260652442, 'unique': 36.0, 'histogram': [[18.0, 8.0, 6.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0], [0.07815699260652442, 3.0910481934422847, 6.103939394278045, 9.116830595113806, 12.129721795949566, 15.142612996785326, 18.155504197621084, 21.168395398456845, 24.181286599292605, 27.194177800128365, 30.207069000964125]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 19.882372608676018, 'percentile_2': 0.13718708480325872}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.07815699260652444, 'max': 30.207069000964125, 'mean': 4.937147649762869, 'count': 36.0, 'sum': 177.73731539146328, 'std': 5.600275204778581, 'median': 2.9485492145015955, 'majority': 0.07815699260652444, 'minority': 0.07815699260652444, 'unique': 36.0, 'histogram': [[18.0, 8.0, 6.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0], [0.07815699260652444, 3.0910481934422847, 6.103939394278045, 9.116830595113806, 12.129721795949566, 15.142612996785326, 18.155504197621084, 21.168395398456845, 24.181286599292605, 27.194177800128365, 30.207069000964125]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 19.882372608676018, 'percentile_2': 0.13718708480325872}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.07815699260652442, 'max': 30.207069000964125, 'mean': 4.937147649762869, 'count': 36.0, 'sum': 177.73731539146328, 'std': 5.60027520477858, 'median': 2.9485492145015955, 'majority': 0.07815699260652442, 'minority': 0.07815699260652442, 'unique': 36.0, 'histogram': [[18.0, 8.0, 6.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0], [0.07815699260652442, 3.0910481934422847, 6.103939394278045, 9.116830595113806, 12.129721795949566, 15.142612996785326, 18.155504197621084, 21.168395398456845, 24.181286599292605, 27.194177800128365, 30.207069000964125]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 19.882372608676018, 'percentile_2': 0.13718708480325872}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.07815699260652446, 'max': 30.207069000964125, 'mean': 4.93714764976287, 'count': 36.0, 'sum': 177.7373153914633, 'std': 5.600275204778581, 'median': 2.948549214501596, 'majority': 0.07815699260652446, 'minority': 0.07815699260652446, 'unique': 36.0, 'histogram': [[18.0, 8.0, 6.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0], [0.07815699260652446, 3.0910481934422847, 6.103939394278045, 9.116830595113806, 12.129721795949566, 15.142612996785326, 18.155504197621084, 21.168395398456845, 24.181286599292605, 27.194177800128365, 30.207069000964125]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 19.882372608676018, 'percentile_2': 0.13718708480325875}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.07815699260652442, 'max': 30.207069000964125, 'mean': 4.937147649762869, 'count': 36.0, 'sum': 177.73731539146328, 'std': 5.60027520477858, 'median': 2.9485492145015955, 'majority': 0.07815699260652442, 'minority': 0.07815699260652442, 'unique': 36.0, 'histogram': [[18.0, 8.0, 6.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0], [0.07815699260652442, 3.0910481934422847, 6.103939394278045, 9.116830595113806, 12.129721795949566, 15.142612996785326, 18.155504197621084, 21.168395398456845, 24.181286599292605, 27.194177800128365, 30.207069000964125]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 19.882372608676018, 'percentile_2': 0.13718708480325872}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.05700037821782864, 'max': 19.012940501765218, 'mean': 3.3591134478629296, 'count': 36.0, 'sum': 120.92808412306547, 'std': 3.6224374421569547, 'median': 2.1245140308259334, 'majority': 0.05700037821782864, 'minority': 0.05700037821782864, 'unique': 36.0, 'histogram': [[18.0, 8.0, 5.0, 2.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0], [0.05700037821782864, 1.9525943905725676, 3.8481884029273066, 5.7437824152820465, 7.639376427636785, 9.534970439991524, 11.430564452346264, 13.326158464701003, 15.221752477055741, 17.11734648941048, 19.012940501765218]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 13.249726800505352, 'percentile_2': 0.1000408553828676}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.05700037821782864, 'max': 19.012940501765218, 'mean': 3.3591134478629296, 'count': 36.0, 'sum': 120.92808412306547, 'std': 3.6224374421569547, 'median': 2.1245140308259334, 'majority': 0.05700037821782864, 'minority': 0.05700037821782864, 'unique': 36.0, 'histogram': [[18.0, 8.0, 5.0, 2.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0], [0.05700037821782864, 1.9525943905725676, 3.8481884029273066, 5.7437824152820465, 7.639376427636785, 9.534970439991524, 11.430564452346264, 13.326158464701003, 15.221752477055741, 17.11734648941048, 19.012940501765218]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 13.249726800505352, 'percentile_2': 0.10004085538286758}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.05700037821782864, 'max': 19.012940501765218, 'mean': 3.3591134478629296, 'count': 36.0, 'sum': 120.92808412306547, 'std': 3.6224374421569547, 'median': 2.1245140308259334, 'majority': 0.05700037821782864, 'minority': 0.05700037821782864, 'unique': 36.0, 'histogram': [[18.0, 8.0, 5.0, 2.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0], [0.05700037821782864, 1.9525943905725676, 3.8481884029273066, 5.7437824152820465, 7.639376427636785, 9.534970439991524, 11.430564452346264, 13.326158464701003, 15.221752477055741, 17.11734648941048, 19.012940501765218]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 13.249726800505352, 'percentile_2': 0.1000408553828676}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.05700037821782864, 'max': 19.012940501765218, 'mean': 3.3591134478629296, 'count': 36.0, 'sum': 120.92808412306547, 'std': 3.6224374421569547, 'median': 2.1245140308259334, 'majority': 0.05700037821782864, 'minority': 0.05700037821782864, 'unique': 36.0, 'histogram': [[18.0, 8.0, 5.0, 2.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0], [0.05700037821782864, 1.9525943905725676, 3.8481884029273066, 5.7437824152820465, 7.639376427636785, 9.534970439991524, 11.430564452346264, 13.326158464701003, 15.221752477055741, 17.11734648941048, 19.012940501765218]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 13.249726800505352, 'percentile_2': 0.10004085538286758}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.05700037821782864, 'max': 19.012940501765218, 'mean': 3.3591134478629296, 'count': 36.0, 'sum': 120.92808412306547, 'std': 3.6224374421569547, 'median': 2.1245140308259334, 'majority': 0.05700037821782864, 'minority': 0.05700037821782864, 'unique': 36.0, 'histogram': [[18.0, 8.0, 5.0, 2.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0], [0.05700037821782864, 1.9525943905725676, 3.8481884029273066, 5.7437824152820465, 7.639376427636785, 9.534970439991524, 11.430564452346264, 13.326158464701003, 15.221752477055741, 17.11734648941048, 19.012940501765218]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 13.249726800505352, 'percentile_2': 0.1000408553828676}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.05700037821782864, 'max': 19.012940501765218, 'mean': 3.3591134478629296, 'count': 36.0, 'sum': 120.92808412306547, 'std': 3.6224374421569547, 'median': 2.1245140308259334, 'majority': 0.05700037821782864, 'minority': 0.05700037821782864, 'unique': 36.0, 'histogram': [[18.0, 8.0, 5.0, 2.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0], [0.05700037821782864, 1.9525943905725676, 3.8481884029273066, 5.7437824152820465, 7.639376427636785, 9.534970439991524, 11.430564452346264, 13.326158464701003, 15.221752477055741, 17.11734648941048, 19.012940501765218]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 13.249726800505352, 'percentile_2': 0.1000408553828676}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.05700037821782864, 'max': 19.012940501765218, 'mean': 3.3591134478629296, 'count': 36.0, 'sum': 120.92808412306547, 'std': 3.6224374421569547, 'median': 2.1245140308259334, 'majority': 0.05700037821782864, 'minority': 0.05700037821782864, 'unique': 36.0, 'histogram': [[18.0, 8.0, 5.0, 2.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0], [0.05700037821782864, 1.9525943905725676, 3.8481884029273066, 5.7437824152820465, 7.639376427636785, 9.534970439991524, 11.430564452346264, 13.326158464701003, 15.221752477055741, 17.11734648941048, 19.012940501765218]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 13.249726800505352, 'percentile_2': 0.10004085538286758}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.05700037821782864, 'max': 19.012940501765218, 'mean': 3.3591134478629296, 'count': 36.0, 'sum': 120.92808412306547, 'std': 3.6224374421569547, 'median': 2.1245140308259334, 'majority': 0.05700037821782864, 'minority': 0.05700037821782864, 'unique': 36.0, 'histogram': [[18.0, 8.0, 5.0, 2.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0], [0.05700037821782864, 1.9525943905725676, 3.8481884029273066, 5.7437824152820465, 7.639376427636785, 9.534970439991524, 11.430564452346264, 13.326158464701003, 15.221752477055741, 17.11734648941048, 19.012940501765218]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 13.249726800505352, 'percentile_2': 0.1000408553828676}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.05700037821782864, 'max': 19.012940501765218, 'mean': 3.3591134478629296, 'count': 36.0, 'sum': 120.92808412306547, 'std': 3.6224374421569547, 'median': 2.1245140308259334, 'majority': 0.05700037821782864, 'minority': 0.05700037821782864, 'unique': 36.0, 'histogram': [[18.0, 8.0, 5.0, 2.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0], [0.05700037821782864, 1.9525943905725676, 3.8481884029273066, 5.7437824152820465, 7.639376427636785, 9.534970439991524, 11.430564452346264, 13.326158464701003, 15.221752477055741, 17.11734648941048, 19.012940501765218]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 13.249726800505352, 'percentile_2': 0.10004085538286758}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.05700037821782864, 'max': 19.012940501765218, 'mean': 3.3591134478629296, 'count': 36.0, 'sum': 120.92808412306547, 'std': 3.6224374421569547, 'median': 2.1245140308259334, 'majority': 0.05700037821782864, 'minority': 0.05700037821782864, 'unique': 36.0, 'histogram': [[18.0, 8.0, 5.0, 2.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0], [0.05700037821782864, 1.9525943905725676, 3.8481884029273066, 5.7437824152820465, 7.639376427636785, 9.534970439991524, 11.430564452346264, 13.326158464701003, 15.221752477055741, 17.11734648941048, 19.012940501765218]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 13.249726800505352, 'percentile_2': 0.1000408553828676}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.057000378217828634, 'max': 19.01294050176522, 'mean': 3.3591134478629296, 'count': 36.0, 'sum': 120.92808412306547, 'std': 3.622437442156955, 'median': 2.1245140308259334, 'majority': 0.057000378217828634, 'minority': 0.057000378217828634, 'unique': 36.0, 'histogram': [[18.0, 8.0, 5.0, 2.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0], [0.057000378217828634, 1.9525943905725678, 3.848188402927307, 5.7437824152820465, 7.639376427636786, 9.534970439991525, 11.430564452346264, 13.326158464701004, 15.221752477055743, 17.117346489410483, 19.01294050176522]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 13.249726800505352, 'percentile_2': 0.10004085538286758}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.05700037821782864, 'max': 19.012940501765218, 'mean': 3.3591134478629296, 'count': 36.0, 'sum': 120.92808412306547, 'std': 3.6224374421569547, 'median': 2.1245140308259334, 'majority': 0.05700037821782864, 'minority': 0.05700037821782864, 'unique': 36.0, 'histogram': [[18.0, 8.0, 5.0, 2.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0], [0.05700037821782864, 1.9525943905725676, 3.8481884029273066, 5.7437824152820465, 7.639376427636785, 9.534970439991524, 11.430564452346264, 13.326158464701003, 15.221752477055741, 17.11734648941048, 19.012940501765218]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 13.249726800505352, 'percentile_2': 0.1000408553828676}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.06521416219280307, 'max': 19.297676836705133, 'mean': 3.7596895060958024, 'count': 36.0, 'sum': 135.3488222194489, 'std': 3.8700056847761575, 'median': 2.424878101102961, 'majority': 0.06521416219280307, 'minority': 0.06521416219280307, 'unique': 36.0, 'histogram': [[15.0, 8.0, 6.0, 3.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0], [0.06521416219280307, 1.988460429644036, 3.911706697095269, 5.834952964546502, 7.758199231997735, 9.681445499448968, 11.6046917669002, 13.527938034351433, 15.451184301802666, 17.3744305692539, 19.297676836705133]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 14.543016419581146, 'percentile_2': 0.11452454188647136}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.06521416219280307, 'max': 19.297676836705133, 'mean': 3.7596895060958024, 'count': 36.0, 'sum': 135.3488222194489, 'std': 3.8700056847761575, 'median': 2.424878101102961, 'majority': 0.06521416219280307, 'minority': 0.06521416219280307, 'unique': 36.0, 'histogram': [[15.0, 8.0, 6.0, 3.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0], [0.06521416219280307, 1.988460429644036, 3.911706697095269, 5.834952964546502, 7.758199231997735, 9.681445499448968, 11.6046917669002, 13.527938034351433, 15.451184301802666, 17.3744305692539, 19.297676836705133]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 14.543016419581146, 'percentile_2': 0.11452454188647136}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.06521416219280307, 'max': 19.297676836705133, 'mean': 3.7596895060958024, 'count': 36.0, 'sum': 135.3488222194489, 'std': 3.8700056847761575, 'median': 2.424878101102961, 'majority': 0.06521416219280307, 'minority': 0.06521416219280307, 'unique': 36.0, 'histogram': [[15.0, 8.0, 6.0, 3.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0], [0.06521416219280307, 1.988460429644036, 3.911706697095269, 5.834952964546502, 7.758199231997735, 9.681445499448968, 11.6046917669002, 13.527938034351433, 15.451184301802666, 17.3744305692539, 19.297676836705133]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 14.543016419581146, 'percentile_2': 0.11452454188647136}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.06521416219280307, 'max': 19.297676836705133, 'mean': 3.7596895060958024, 'count': 36.0, 'sum': 135.3488222194489, 'std': 3.8700056847761575, 'median': 2.424878101102961, 'majority': 0.06521416219280307, 'minority': 0.06521416219280307, 'unique': 36.0, 'histogram': [[15.0, 8.0, 6.0, 3.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0], [0.06521416219280307, 1.988460429644036, 3.911706697095269, 5.834952964546502, 7.758199231997735, 9.681445499448968, 11.6046917669002, 13.527938034351433, 15.451184301802666, 17.3744305692539, 19.297676836705133]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 14.543016419581146, 'percentile_2': 0.11452454188647136}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.06521416219280307, 'max': 19.297676836705133, 'mean': 3.7596895060958024, 'count': 36.0, 'sum': 135.3488222194489, 'std': 3.8700056847761575, 'median': 2.424878101102961, 'majority': 0.06521416219280307, 'minority': 0.06521416219280307, 'unique': 36.0, 'histogram': [[15.0, 8.0, 6.0, 3.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0], [0.06521416219280307, 1.988460429644036, 3.911706697095269, 5.834952964546502, 7.758199231997735, 9.681445499448968, 11.6046917669002, 13.527938034351433, 15.451184301802666, 17.3744305692539, 19.297676836705133]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 14.543016419581146, 'percentile_2': 0.11452454188647136}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.06521416219280307, 'max': 19.297676836705133, 'mean': 3.7596895060958024, 'count': 36.0, 'sum': 135.3488222194489, 'std': 3.8700056847761575, 'median': 2.424878101102961, 'majority': 0.06521416219280307, 'minority': 0.06521416219280307, 'unique': 36.0, 'histogram': [[15.0, 8.0, 6.0, 3.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0], [0.06521416219280307, 1.988460429644036, 3.911706697095269, 5.834952964546502, 7.758199231997735, 9.681445499448968, 11.6046917669002, 13.527938034351433, 15.451184301802666, 17.3744305692539, 19.297676836705133]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 14.543016419581146, 'percentile_2': 0.11452454188647136}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.06521416219280307, 'max': 19.297676836705133, 'mean': 3.7596895060958024, 'count': 36.0, 'sum': 135.3488222194489, 'std': 3.8700056847761575, 'median': 2.424878101102961, 'majority': 0.06521416219280307, 'minority': 0.06521416219280307, 'unique': 36.0, 'histogram': [[15.0, 8.0, 6.0, 3.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0], [0.06521416219280307, 1.988460429644036, 3.911706697095269, 5.834952964546502, 7.758199231997735, 9.681445499448968, 11.6046917669002, 13.527938034351433, 15.451184301802666, 17.3744305692539, 19.297676836705133]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 14.543016419581146, 'percentile_2': 0.11452454188647136}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.06521416219280307, 'max': 19.297676836705133, 'mean': 3.7596895060958024, 'count': 36.0, 'sum': 135.3488222194489, 'std': 3.8700056847761575, 'median': 2.424878101102961, 'majority': 0.06521416219280307, 'minority': 0.06521416219280307, 'unique': 36.0, 'histogram': [[15.0, 8.0, 6.0, 3.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0], [0.06521416219280307, 1.988460429644036, 3.911706697095269, 5.834952964546502, 7.758199231997735, 9.681445499448968, 11.6046917669002, 13.527938034351433, 15.451184301802666, 17.3744305692539, 19.297676836705133]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 14.543016419581146, 'percentile_2': 0.11452454188647136}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.06521416219280307, 'max': 19.297676836705133, 'mean': 3.7596895060958024, 'count': 36.0, 'sum': 135.3488222194489, 'std': 3.8700056847761575, 'median': 2.424878101102961, 'majority': 0.06521416219280307, 'minority': 0.06521416219280307, 'unique': 36.0, 'histogram': [[15.0, 8.0, 6.0, 3.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0], [0.06521416219280307, 1.988460429644036, 3.911706697095269, 5.834952964546502, 7.758199231997735, 9.681445499448968, 11.6046917669002, 13.527938034351433, 15.451184301802666, 17.3744305692539, 19.297676836705133]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 14.543016419581146, 'percentile_2': 0.11452454188647136}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.06521416219280307, 'max': 19.297676836705133, 'mean': 3.7596895060958024, 'count': 36.0, 'sum': 135.3488222194489, 'std': 3.8700056847761575, 'median': 2.424878101102961, 'majority': 0.06521416219280307, 'minority': 0.06521416219280307, 'unique': 36.0, 'histogram': [[15.0, 8.0, 6.0, 3.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0], [0.06521416219280307, 1.988460429644036, 3.911706697095269, 5.834952964546502, 7.758199231997735, 9.681445499448968, 11.6046917669002, 13.527938034351433, 15.451184301802666, 17.3744305692539, 19.297676836705133]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 14.543016419581146, 'percentile_2': 0.11452454188647136}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.06521416219280307, 'max': 19.297676836705136, 'mean': 3.7596895060958024, 'count': 36.0, 'sum': 135.3488222194489, 'std': 3.8700056847761584, 'median': 2.424878101102961, 'majority': 0.06521416219280307, 'minority': 0.06521416219280307, 'unique': 36.0, 'histogram': [[15.0, 8.0, 6.0, 3.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0], [0.06521416219280307, 1.9884604296440365, 3.91170669709527, 5.8349529645465035, 7.758199231997737, 9.68144549944897, 11.604691766900203, 13.527938034351436, 15.45118430180267, 17.374430569253903, 19.297676836705136]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 14.543016419581148, 'percentile_2': 0.11452454188647136}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.06521416219280307, 'max': 19.297676836705133, 'mean': 3.7596895060958024, 'count': 36.0, 'sum': 135.3488222194489, 'std': 3.8700056847761575, 'median': 2.424878101102961, 'majority': 0.06521416219280307, 'minority': 0.06521416219280307, 'unique': 36.0, 'histogram': [[15.0, 8.0, 6.0, 3.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0], [0.06521416219280307, 1.988460429644036, 3.911706697095269, 5.834952964546502, 7.758199231997735, 9.681445499448968, 11.6046917669002, 13.527938034351433, 15.451184301802666, 17.3744305692539, 19.297676836705133]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 14.543016419581146, 'percentile_2': 0.11452454188647136}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.06564170217340089, 'max': 17.788216379456447, 'mean': 3.63835256992613, 'count': 36.0, 'sum': 130.98069251734069, 'std': 3.6526232484529304, 'median': 2.40613651365863, 'majority': 0.06564170217340089, 'minority': 0.06564170217340089, 'unique': 36.0, 'histogram': [[15.0, 8.0, 6.0, 3.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0], [0.06564170217340089, 1.8378991699017053, 3.61015663763001, 5.382414105358314, 7.154671573086619, 8.926929040814924, 10.699186508543228, 12.471443976271534, 14.243701443999838, 16.01595891172814, 17.788216379456447]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 13.8371910156512, 'percentile_2': 0.11538475683556841}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.06564170217340089, 'max': 17.788216379456447, 'mean': 3.63835256992613, 'count': 36.0, 'sum': 130.98069251734069, 'std': 3.6526232484529304, 'median': 2.40613651365863, 'majority': 0.06564170217340089, 'minority': 0.06564170217340089, 'unique': 36.0, 'histogram': [[15.0, 8.0, 6.0, 3.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0], [0.06564170217340089, 1.8378991699017053, 3.61015663763001, 5.382414105358314, 7.154671573086619, 8.926929040814924, 10.699186508543228, 12.471443976271534, 14.243701443999838, 16.01595891172814, 17.788216379456447]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 13.8371910156512, 'percentile_2': 0.11538475683556841}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.06564170217340089, 'max': 17.788216379456447, 'mean': 3.63835256992613, 'count': 36.0, 'sum': 130.98069251734069, 'std': 3.6526232484529304, 'median': 2.40613651365863, 'majority': 0.06564170217340089, 'minority': 0.06564170217340089, 'unique': 36.0, 'histogram': [[15.0, 8.0, 6.0, 3.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0], [0.06564170217340089, 1.8378991699017053, 3.61015663763001, 5.382414105358314, 7.154671573086619, 8.926929040814924, 10.699186508543228, 12.471443976271534, 14.243701443999838, 16.01595891172814, 17.788216379456447]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 13.8371910156512, 'percentile_2': 0.11538475683556841}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.06564170217340089, 'max': 17.788216379456447, 'mean': 3.63835256992613, 'count': 36.0, 'sum': 130.98069251734069, 'std': 3.6526232484529304, 'median': 2.40613651365863, 'majority': 0.06564170217340089, 'minority': 0.06564170217340089, 'unique': 36.0, 'histogram': [[15.0, 8.0, 6.0, 3.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0], [0.06564170217340089, 1.8378991699017053, 3.61015663763001, 5.382414105358314, 7.154671573086619, 8.926929040814924, 10.699186508543228, 12.471443976271534, 14.243701443999838, 16.01595891172814, 17.788216379456447]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 13.8371910156512, 'percentile_2': 0.11538475683556841}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.06564170217340089, 'max': 17.788216379456447, 'mean': 3.63835256992613, 'count': 36.0, 'sum': 130.98069251734069, 'std': 3.6526232484529304, 'median': 2.40613651365863, 'majority': 0.06564170217340089, 'minority': 0.06564170217340089, 'unique': 36.0, 'histogram': [[15.0, 8.0, 6.0, 3.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0], [0.06564170217340089, 1.8378991699017053, 3.61015663763001, 5.382414105358314, 7.154671573086619, 8.926929040814924, 10.699186508543228, 12.471443976271534, 14.243701443999838, 16.01595891172814, 17.788216379456447]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 13.8371910156512, 'percentile_2': 0.11538475683556841}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.06564170217340089, 'max': 17.788216379456447, 'mean': 3.63835256992613, 'count': 36.0, 'sum': 130.98069251734069, 'std': 3.6526232484529304, 'median': 2.40613651365863, 'majority': 0.06564170217340089, 'minority': 0.06564170217340089, 'unique': 36.0, 'histogram': [[15.0, 8.0, 6.0, 3.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0], [0.06564170217340089, 1.8378991699017053, 3.61015663763001, 5.382414105358314, 7.154671573086619, 8.926929040814924, 10.699186508543228, 12.471443976271534, 14.243701443999838, 16.01595891172814, 17.788216379456447]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 13.8371910156512, 'percentile_2': 0.11538475683556841}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.06564170217340089, 'max': 17.788216379456447, 'mean': 3.63835256992613, 'count': 36.0, 'sum': 130.98069251734069, 'std': 3.6526232484529304, 'median': 2.40613651365863, 'majority': 0.06564170217340089, 'minority': 0.06564170217340089, 'unique': 36.0, 'histogram': [[15.0, 8.0, 6.0, 3.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0], [0.06564170217340089, 1.8378991699017053, 3.61015663763001, 5.382414105358314, 7.154671573086619, 8.926929040814924, 10.699186508543228, 12.471443976271534, 14.243701443999838, 16.01595891172814, 17.788216379456447]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 13.8371910156512, 'percentile_2': 0.11538475683556841}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.06564170217340089, 'max': 17.788216379456447, 'mean': 3.63835256992613, 'count': 36.0, 'sum': 130.98069251734069, 'std': 3.6526232484529304, 'median': 2.40613651365863, 'majority': 0.06564170217340089, 'minority': 0.06564170217340089, 'unique': 36.0, 'histogram': [[15.0, 8.0, 6.0, 3.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0], [0.06564170217340089, 1.8378991699017053, 3.61015663763001, 5.382414105358314, 7.154671573086619, 8.926929040814924, 10.699186508543228, 12.471443976271534, 14.243701443999838, 16.01595891172814, 17.788216379456447]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 13.8371910156512, 'percentile_2': 0.11538475683556841}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.06564170217340089, 'max': 17.788216379456447, 'mean': 3.63835256992613, 'count': 36.0, 'sum': 130.98069251734069, 'std': 3.6526232484529304, 'median': 2.40613651365863, 'majority': 0.06564170217340089, 'minority': 0.06564170217340089, 'unique': 36.0, 'histogram': [[15.0, 8.0, 6.0, 3.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0], [0.06564170217340089, 1.8378991699017053, 3.61015663763001, 5.382414105358314, 7.154671573086619, 8.926929040814924, 10.699186508543228, 12.471443976271534, 14.243701443999838, 16.01595891172814, 17.788216379456447]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 13.8371910156512, 'percentile_2': 0.11538475683556841}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.06564170217340089, 'max': 17.788216379456447, 'mean': 3.63835256992613, 'count': 36.0, 'sum': 130.98069251734069, 'std': 3.6526232484529304, 'median': 2.40613651365863, 'majority': 0.06564170217340089, 'minority': 0.06564170217340089, 'unique': 36.0, 'histogram': [[15.0, 8.0, 6.0, 3.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0], [0.06564170217340089, 1.8378991699017053, 3.61015663763001, 5.382414105358314, 7.154671573086619, 8.926929040814924, 10.699186508543228, 12.471443976271534, 14.243701443999838, 16.01595891172814, 17.788216379456447]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 13.8371910156512, 'percentile_2': 0.11538475683556841}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.06564170217340089, 'max': 17.788216379456447, 'mean': 3.638352569926129, 'count': 36.0, 'sum': 130.98069251734066, 'std': 3.6526232484529304, 'median': 2.40613651365863, 'majority': 0.06564170217340089, 'minority': 0.06564170217340089, 'unique': 36.0, 'histogram': [[15.0, 8.0, 6.0, 3.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0], [0.06564170217340089, 1.8378991699017053, 3.61015663763001, 5.382414105358314, 7.154671573086619, 8.926929040814924, 10.699186508543228, 12.471443976271534, 14.243701443999838, 16.01595891172814, 17.788216379456447]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 13.8371910156512, 'percentile_2': 0.11538475683556841}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.06564170217340089, 'max': 17.788216379456447, 'mean': 3.63835256992613, 'count': 36.0, 'sum': 130.98069251734069, 'std': 3.6526232484529304, 'median': 2.40613651365863, 'majority': 0.06564170217340089, 'minority': 0.06564170217340089, 'unique': 36.0, 'histogram': [[15.0, 8.0, 6.0, 3.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0], [0.06564170217340089, 1.8378991699017053, 3.61015663763001, 5.382414105358314, 7.154671573086619, 8.926929040814924, 10.699186508543228, 12.471443976271534, 14.243701443999838, 16.01595891172814, 17.788216379456447]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 13.8371910156512, 'percentile_2': 0.11538475683556841}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.08306719506774579, 'max': 22.197690201784734, 'mean': 4.572854440848968, 'count': 36.0, 'sum': 164.62275987056287, 'std': 4.563661183958427, 'median': 3.054119823814323, 'majority': 0.08306719506774579, 'minority': 0.08306719506774579, 'unique': 36.0, 'histogram': [[14.0, 9.0, 5.0, 4.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0], [0.08306719506774579, 2.294529495739445, 4.505991796411144, 6.717454097082843, 8.928916397754543, 11.140378698426241, 13.351840999097941, 15.563303299769641, 17.774765600441338, 19.986227901113036, 22.197690201784734]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 17.258359781894924, 'percentile_2': 0.14610353758713868}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.08306719506774579, 'max': 22.197690201784734, 'mean': 4.572854440848969, 'count': 36.0, 'sum': 164.6227598705629, 'std': 4.563661183958428, 'median': 3.054119823814323, 'majority': 0.08306719506774579, 'minority': 0.08306719506774579, 'unique': 36.0, 'histogram': [[14.0, 9.0, 5.0, 4.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0], [0.08306719506774579, 2.294529495739445, 4.505991796411144, 6.717454097082843, 8.928916397754543, 11.140378698426241, 13.351840999097941, 15.563303299769641, 17.774765600441338, 19.986227901113036, 22.197690201784734]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 17.258359781894928, 'percentile_2': 0.14610353758713868}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.08306719506774579, 'max': 22.197690201784734, 'mean': 4.572854440848968, 'count': 36.0, 'sum': 164.62275987056287, 'std': 4.563661183958427, 'median': 3.054119823814323, 'majority': 0.08306719506774579, 'minority': 0.08306719506774579, 'unique': 36.0, 'histogram': [[14.0, 9.0, 5.0, 4.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0], [0.08306719506774579, 2.294529495739445, 4.505991796411144, 6.717454097082843, 8.928916397754543, 11.140378698426241, 13.351840999097941, 15.563303299769641, 17.774765600441338, 19.986227901113036, 22.197690201784734]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 17.258359781894924, 'percentile_2': 0.14610353758713868}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.08306719506774579, 'max': 22.197690201784734, 'mean': 4.572854440848969, 'count': 36.0, 'sum': 164.6227598705629, 'std': 4.563661183958428, 'median': 3.054119823814323, 'majority': 0.08306719506774579, 'minority': 0.08306719506774579, 'unique': 36.0, 'histogram': [[14.0, 9.0, 5.0, 4.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0], [0.08306719506774579, 2.294529495739445, 4.505991796411144, 6.717454097082843, 8.928916397754543, 11.140378698426241, 13.351840999097941, 15.563303299769641, 17.774765600441338, 19.986227901113036, 22.197690201784734]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 17.258359781894928, 'percentile_2': 0.14610353758713868}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.08306719506774579, 'max': 22.197690201784734, 'mean': 4.572854440848968, 'count': 36.0, 'sum': 164.62275987056287, 'std': 4.563661183958427, 'median': 3.054119823814323, 'majority': 0.08306719506774579, 'minority': 0.08306719506774579, 'unique': 36.0, 'histogram': [[14.0, 9.0, 5.0, 4.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0], [0.08306719506774579, 2.294529495739445, 4.505991796411144, 6.717454097082843, 8.928916397754543, 11.140378698426241, 13.351840999097941, 15.563303299769641, 17.774765600441338, 19.986227901113036, 22.197690201784734]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 17.258359781894924, 'percentile_2': 0.14610353758713868}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.08306719506774579, 'max': 22.197690201784734, 'mean': 4.572854440848968, 'count': 36.0, 'sum': 164.62275987056287, 'std': 4.563661183958427, 'median': 3.054119823814323, 'majority': 0.08306719506774579, 'minority': 0.08306719506774579, 'unique': 36.0, 'histogram': [[14.0, 9.0, 5.0, 4.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0], [0.08306719506774579, 2.294529495739445, 4.505991796411144, 6.717454097082843, 8.928916397754543, 11.140378698426241, 13.351840999097941, 15.563303299769641, 17.774765600441338, 19.986227901113036, 22.197690201784734]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 17.258359781894924, 'percentile_2': 0.14610353758713868}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.08306719506774579, 'max': 22.197690201784734, 'mean': 4.572854440848969, 'count': 36.0, 'sum': 164.6227598705629, 'std': 4.563661183958428, 'median': 3.054119823814323, 'majority': 0.08306719506774579, 'minority': 0.08306719506774579, 'unique': 36.0, 'histogram': [[14.0, 9.0, 5.0, 4.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0], [0.08306719506774579, 2.294529495739445, 4.505991796411144, 6.717454097082843, 8.928916397754543, 11.140378698426241, 13.351840999097941, 15.563303299769641, 17.774765600441338, 19.986227901113036, 22.197690201784734]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 17.258359781894928, 'percentile_2': 0.14610353758713868}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.08306719506774579, 'max': 22.197690201784734, 'mean': 4.572854440848968, 'count': 36.0, 'sum': 164.62275987056287, 'std': 4.563661183958427, 'median': 3.054119823814323, 'majority': 0.08306719506774579, 'minority': 0.08306719506774579, 'unique': 36.0, 'histogram': [[14.0, 9.0, 5.0, 4.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0], [0.08306719506774579, 2.294529495739445, 4.505991796411144, 6.717454097082843, 8.928916397754543, 11.140378698426241, 13.351840999097941, 15.563303299769641, 17.774765600441338, 19.986227901113036, 22.197690201784734]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 17.258359781894924, 'percentile_2': 0.14610353758713868}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.08306719506774579, 'max': 22.197690201784734, 'mean': 4.572854440848969, 'count': 36.0, 'sum': 164.6227598705629, 'std': 4.563661183958428, 'median': 3.054119823814323, 'majority': 0.08306719506774579, 'minority': 0.08306719506774579, 'unique': 36.0, 'histogram': [[14.0, 9.0, 5.0, 4.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0], [0.08306719506774579, 2.294529495739445, 4.505991796411144, 6.717454097082843, 8.928916397754543, 11.140378698426241, 13.351840999097941, 15.563303299769641, 17.774765600441338, 19.986227901113036, 22.197690201784734]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 17.258359781894928, 'percentile_2': 0.14610353758713868}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.08306719506774579, 'max': 22.197690201784734, 'mean': 4.572854440848968, 'count': 36.0, 'sum': 164.62275987056287, 'std': 4.563661183958427, 'median': 3.054119823814323, 'majority': 0.08306719506774579, 'minority': 0.08306719506774579, 'unique': 36.0, 'histogram': [[14.0, 9.0, 5.0, 4.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0], [0.08306719506774579, 2.294529495739445, 4.505991796411144, 6.717454097082843, 8.928916397754543, 11.140378698426241, 13.351840999097941, 15.563303299769641, 17.774765600441338, 19.986227901113036, 22.197690201784734]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 17.258359781894924, 'percentile_2': 0.14610353758713868}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.08306719506774579, 'max': 22.197690201784734, 'mean': 4.572854440848969, 'count': 36.0, 'sum': 164.6227598705629, 'std': 4.563661183958428, 'median': 3.0541198238143226, 'majority': 0.08306719506774579, 'minority': 0.08306719506774579, 'unique': 36.0, 'histogram': [[14.0, 9.0, 5.0, 4.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0], [0.08306719506774579, 2.294529495739445, 4.505991796411144, 6.717454097082843, 8.928916397754543, 11.140378698426241, 13.351840999097941, 15.563303299769641, 17.774765600441338, 19.986227901113036, 22.197690201784734]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 17.258359781894928, 'percentile_2': 0.14610353758713868}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.08306719506774579, 'max': 22.197690201784734, 'mean': 4.572854440848968, 'count': 36.0, 'sum': 164.62275987056287, 'std': 4.563661183958427, 'median': 3.054119823814323, 'majority': 0.08306719506774579, 'minority': 0.08306719506774579, 'unique': 36.0, 'histogram': [[14.0, 9.0, 5.0, 4.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0], [0.08306719506774579, 2.294529495739445, 4.505991796411144, 6.717454097082843, 8.928916397754543, 11.140378698426241, 13.351840999097941, 15.563303299769641, 17.774765600441338, 19.986227901113036, 22.197690201784734]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 17.258359781894924, 'percentile_2': 0.14610353758713868}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.09013736899061185, 'max': 22.629271215772338, 'mean': 4.838336807884279, 'count': 36.0, 'sum': 174.180125083834, 'std': 4.734412826104372, 'median': 3.3202963865526884, 'majority': 0.09013736899061185, 'minority': 0.09013736899061185, 'unique': 36.0, 'histogram': [[13.0, 9.0, 6.0, 4.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0], [0.09013736899061185, 2.3440507536687845, 4.597964138346957, 6.85187752302513, 9.105790907703303, 11.359704292381476, 13.613617677059649, 15.867531061737822, 18.121444446415993, 20.375357831094163, 22.629271215772338]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 18.098896510803357, 'percentile_2': 0.15855924617636674}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.09013736899061185, 'max': 22.629271215772338, 'mean': 4.838336807884279, 'count': 36.0, 'sum': 174.180125083834, 'std': 4.734412826104373, 'median': 3.3202963865526884, 'majority': 0.09013736899061185, 'minority': 0.09013736899061185, 'unique': 36.0, 'histogram': [[13.0, 9.0, 6.0, 4.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0], [0.09013736899061185, 2.3440507536687845, 4.597964138346957, 6.85187752302513, 9.105790907703303, 11.359704292381476, 13.613617677059649, 15.867531061737822, 18.121444446415993, 20.375357831094163, 22.629271215772338]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 18.098896510803357, 'percentile_2': 0.15855924617636674}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.09013736899061185, 'max': 22.629271215772338, 'mean': 4.838336807884279, 'count': 36.0, 'sum': 174.180125083834, 'std': 4.734412826104372, 'median': 3.3202963865526884, 'majority': 0.09013736899061185, 'minority': 0.09013736899061185, 'unique': 36.0, 'histogram': [[13.0, 9.0, 6.0, 4.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0], [0.09013736899061185, 2.3440507536687845, 4.597964138346957, 6.85187752302513, 9.105790907703303, 11.359704292381476, 13.613617677059649, 15.867531061737822, 18.121444446415993, 20.375357831094163, 22.629271215772338]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 18.098896510803357, 'percentile_2': 0.15855924617636674}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.09013736899061185, 'max': 22.629271215772338, 'mean': 4.838336807884279, 'count': 36.0, 'sum': 174.180125083834, 'std': 4.734412826104373, 'median': 3.3202963865526884, 'majority': 0.09013736899061185, 'minority': 0.09013736899061185, 'unique': 36.0, 'histogram': [[13.0, 9.0, 6.0, 4.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0], [0.09013736899061185, 2.3440507536687845, 4.597964138346957, 6.85187752302513, 9.105790907703303, 11.359704292381476, 13.613617677059649, 15.867531061737822, 18.121444446415993, 20.375357831094163, 22.629271215772338]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 18.098896510803357, 'percentile_2': 0.15855924617636674}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.09013736899061185, 'max': 22.629271215772338, 'mean': 4.838336807884279, 'count': 36.0, 'sum': 174.180125083834, 'std': 4.734412826104372, 'median': 3.3202963865526884, 'majority': 0.09013736899061185, 'minority': 0.09013736899061185, 'unique': 36.0, 'histogram': [[13.0, 9.0, 6.0, 4.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0], [0.09013736899061185, 2.3440507536687845, 4.597964138346957, 6.85187752302513, 9.105790907703303, 11.359704292381476, 13.613617677059649, 15.867531061737822, 18.121444446415993, 20.375357831094163, 22.629271215772338]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_2': 0.15855924617636674, 'percentile_98': 18.098896510803357}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.09013736899061185, 'max': 22.629271215772338, 'mean': 4.838336807884279, 'count': 36.0, 'sum': 174.180125083834, 'std': 4.734412826104372, 'median': 3.3202963865526884, 'majority': 0.09013736899061185, 'minority': 0.09013736899061185, 'unique': 36.0, 'histogram': [[13.0, 9.0, 6.0, 4.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0], [0.09013736899061185, 2.3440507536687845, 4.597964138346957, 6.85187752302513, 9.105790907703303, 11.359704292381476, 13.613617677059649, 15.867531061737822, 18.121444446415993, 20.375357831094163, 22.629271215772338]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_2': 0.15855924617636674, 'percentile_98': 18.098896510803357}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.09013736899061185, 'max': 22.629271215772338, 'mean': 4.838336807884279, 'count': 36.0, 'sum': 174.180125083834, 'std': 4.734412826104373, 'median': 3.3202963865526884, 'majority': 0.09013736899061185, 'minority': 0.09013736899061185, 'unique': 36.0, 'histogram': [[13.0, 9.0, 6.0, 4.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0], [0.09013736899061185, 2.3440507536687845, 4.597964138346957, 6.85187752302513, 9.105790907703303, 11.359704292381476, 13.613617677059649, 15.867531061737822, 18.121444446415993, 20.375357831094163, 22.629271215772338]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_2': 0.15855924617636674, 'percentile_98': 18.098896510803357}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.09013736899061185, 'max': 22.629271215772338, 'mean': 4.838336807884279, 'count': 36.0, 'sum': 174.180125083834, 'std': 4.734412826104372, 'median': 3.3202963865526884, 'majority': 0.09013736899061185, 'minority': 0.09013736899061185, 'unique': 36.0, 'histogram': [[13.0, 9.0, 6.0, 4.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0], [0.09013736899061185, 2.3440507536687845, 4.597964138346957, 6.85187752302513, 9.105790907703303, 11.359704292381476, 13.613617677059649, 15.867531061737822, 18.121444446415993, 20.375357831094163, 22.629271215772338]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_2': 0.15855924617636674, 'percentile_98': 18.098896510803357}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.09013736899061185, 'max': 22.629271215772338, 'mean': 4.838336807884279, 'count': 36.0, 'sum': 174.180125083834, 'std': 4.734412826104373, 'median': 3.3202963865526884, 'majority': 0.09013736899061185, 'minority': 0.09013736899061185, 'unique': 36.0, 'histogram': [[13.0, 9.0, 6.0, 4.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0], [0.09013736899061185, 2.3440507536687845, 4.597964138346957, 6.85187752302513, 9.105790907703303, 11.359704292381476, 13.613617677059649, 15.867531061737822, 18.121444446415993, 20.375357831094163, 22.629271215772338]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 18.098896510803357, 'percentile_2': 0.15855924617636674}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.09013736899061185, 'max': 22.629271215772338, 'mean': 4.838336807884279, 'count': 36.0, 'sum': 174.180125083834, 'std': 4.734412826104372, 'median': 3.3202963865526884, 'majority': 0.09013736899061185, 'minority': 0.09013736899061185, 'unique': 36.0, 'histogram': [[13.0, 9.0, 6.0, 4.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0], [0.09013736899061185, 2.3440507536687845, 4.597964138346957, 6.85187752302513, 9.105790907703303, 11.359704292381476, 13.613617677059649, 15.867531061737822, 18.121444446415993, 20.375357831094163, 22.629271215772338]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 18.098896510803357, 'percentile_2': 0.15855924617636674}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.09013736899061185, 'max': 22.62927121577234, 'mean': 4.838336807884279, 'count': 36.0, 'sum': 174.180125083834, 'std': 4.734412826104373, 'median': 3.3202963865526884, 'majority': 0.09013736899061185, 'minority': 0.09013736899061185, 'unique': 36.0, 'histogram': [[13.0, 9.0, 6.0, 4.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0], [0.09013736899061185, 2.344050753668785, 4.597964138346958, 6.851877523025132, 9.105790907703305, 11.359704292381478, 13.613617677059652, 15.867531061737825, 18.121444446415996, 20.37535783109417, 22.62927121577234]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 18.098896510803353, 'percentile_2': 0.15855924617636674}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.09013736899061185, 'max': 22.629271215772338, 'mean': 4.838336807884279, 'count': 36.0, 'sum': 174.180125083834, 'std': 4.734412826104372, 'median': 3.3202963865526884, 'majority': 0.09013736899061185, 'minority': 0.09013736899061185, 'unique': 36.0, 'histogram': [[13.0, 9.0, 6.0, 4.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0], [0.09013736899061185, 2.3440507536687845, 4.597964138346957, 6.85187752302513, 9.105790907703303, 11.359704292381476, 13.613617677059649, 15.867531061737822, 18.121444446415993, 20.375357831094163, 22.629271215772338]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 18.098896510803357, 'percentile_2': 0.15855924617636674}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.09959954704184086, 'max': 29.329479922592046, 'mean': 5.437024362179681, 'count': 36.0, 'sum': 195.73287703846853, 'std': 5.660742853229752, 'median': 3.654177748275443, 'majority': 0.09959954704184086, 'minority': 0.09959954704184086, 'unique': 36.0, 'histogram': [[16.0, 9.0, 6.0, 2.0, 0.0, 2.0, 0.0, 0.0, 0.0, 1.0], [0.09959954704184086, 3.0225875845968613, 5.945575622151882, 8.868563659706902, 11.791551697261923, 14.714539734816944, 17.637527772371964, 20.560515809926983, 23.483503847482005, 26.406491885037028, 29.329479922592046]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 21.013021449533635, 'percentile_2': 0.17523319450733063}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.09959954704184086, 'max': 29.329479922592046, 'mean': 5.437024362179681, 'count': 36.0, 'sum': 195.73287703846853, 'std': 5.660742853229752, 'median': 3.654177748275443, 'majority': 0.09959954704184086, 'minority': 0.09959954704184086, 'unique': 36.0, 'histogram': [[16.0, 9.0, 6.0, 2.0, 0.0, 2.0, 0.0, 0.0, 0.0, 1.0], [0.09959954704184086, 3.0225875845968613, 5.945575622151882, 8.868563659706902, 11.791551697261923, 14.714539734816944, 17.637527772371964, 20.560515809926983, 23.483503847482005, 26.406491885037028, 29.329479922592046]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_2': 0.17523319450733063, 'percentile_98': 21.013021449533635}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.09959954704184086, 'max': 29.329479922592046, 'mean': 5.437024362179681, 'count': 36.0, 'sum': 195.73287703846853, 'std': 5.660742853229752, 'median': 3.654177748275443, 'majority': 0.09959954704184086, 'minority': 0.09959954704184086, 'unique': 36.0, 'histogram': [[16.0, 9.0, 6.0, 2.0, 0.0, 2.0, 0.0, 0.0, 0.0, 1.0], [0.09959954704184086, 3.0225875845968613, 5.945575622151882, 8.868563659706902, 11.791551697261923, 14.714539734816944, 17.637527772371964, 20.560515809926983, 23.483503847482005, 26.406491885037028, 29.329479922592046]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_2': 0.17523319450733063, 'percentile_98': 21.013021449533635}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.09959954704184086, 'max': 29.329479922592046, 'mean': 5.437024362179681, 'count': 36.0, 'sum': 195.73287703846853, 'std': 5.660742853229752, 'median': 3.654177748275443, 'majority': 0.09959954704184086, 'minority': 0.09959954704184086, 'unique': 36.0, 'histogram': [[16.0, 9.0, 6.0, 2.0, 0.0, 2.0, 0.0, 0.0, 0.0, 1.0], [0.09959954704184086, 3.0225875845968613, 5.945575622151882, 8.868563659706902, 11.791551697261923, 14.714539734816944, 17.637527772371964, 20.560515809926983, 23.483503847482005, 26.406491885037028, 29.329479922592046]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_2': 0.17523319450733063, 'percentile_98': 21.013021449533635}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.09959954704184086, 'max': 29.329479922592046, 'mean': 5.437024362179681, 'count': 36.0, 'sum': 195.73287703846853, 'std': 5.660742853229752, 'median': 3.654177748275443, 'majority': 0.09959954704184086, 'minority': 0.09959954704184086, 'unique': 36.0, 'histogram': [[16.0, 9.0, 6.0, 2.0, 0.0, 2.0, 0.0, 0.0, 0.0, 1.0], [0.09959954704184086, 3.0225875845968613, 5.945575622151882, 8.868563659706902, 11.791551697261923, 14.714539734816944, 17.637527772371964, 20.560515809926983, 23.483503847482005, 26.406491885037028, 29.329479922592046]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_2': 0.17523319450733063, 'percentile_98': 21.013021449533635}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.09959954704184086, 'max': 29.329479922592046, 'mean': 5.437024362179681, 'count': 36.0, 'sum': 195.73287703846853, 'std': 5.660742853229752, 'median': 3.654177748275443, 'majority': 0.09959954704184086, 'minority': 0.09959954704184086, 'unique': 36.0, 'histogram': [[16.0, 9.0, 6.0, 2.0, 0.0, 2.0, 0.0, 0.0, 0.0, 1.0], [0.09959954704184086, 3.0225875845968613, 5.945575622151882, 8.868563659706902, 11.791551697261923, 14.714539734816944, 17.637527772371964, 20.560515809926983, 23.483503847482005, 26.406491885037028, 29.329479922592046]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 21.013021449533635, 'percentile_2': 0.17523319450733063}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.09959954704184086, 'max': 29.329479922592046, 'mean': 5.437024362179681, 'count': 36.0, 'sum': 195.73287703846853, 'std': 5.660742853229752, 'median': 3.654177748275443, 'majority': 0.09959954704184086, 'minority': 0.09959954704184086, 'unique': 36.0, 'histogram': [[16.0, 9.0, 6.0, 2.0, 0.0, 2.0, 0.0, 0.0, 0.0, 1.0], [0.09959954704184086, 3.0225875845968613, 5.945575622151882, 8.868563659706902, 11.791551697261923, 14.714539734816944, 17.637527772371964, 20.560515809926983, 23.483503847482005, 26.406491885037028, 29.329479922592046]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 21.013021449533635, 'percentile_2': 0.17523319450733063}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.09959954704184086, 'max': 29.329479922592046, 'mean': 5.437024362179681, 'count': 36.0, 'sum': 195.73287703846853, 'std': 5.660742853229752, 'median': 3.654177748275443, 'majority': 0.09959954704184086, 'minority': 0.09959954704184086, 'unique': 36.0, 'histogram': [[16.0, 9.0, 6.0, 2.0, 0.0, 2.0, 0.0, 0.0, 0.0, 1.0], [0.09959954704184086, 3.0225875845968613, 5.945575622151882, 8.868563659706902, 11.791551697261923, 14.714539734816944, 17.637527772371964, 20.560515809926983, 23.483503847482005, 26.406491885037028, 29.329479922592046]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 21.013021449533635, 'percentile_2': 0.17523319450733063}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.09959954704184086, 'max': 29.329479922592046, 'mean': 5.437024362179681, 'count': 36.0, 'sum': 195.73287703846853, 'std': 5.660742853229752, 'median': 3.654177748275443, 'majority': 0.09959954704184086, 'minority': 0.09959954704184086, 'unique': 36.0, 'histogram': [[16.0, 9.0, 6.0, 2.0, 0.0, 2.0, 0.0, 0.0, 0.0, 1.0], [0.09959954704184086, 3.0225875845968613, 5.945575622151882, 8.868563659706902, 11.791551697261923, 14.714539734816944, 17.637527772371964, 20.560515809926983, 23.483503847482005, 26.406491885037028, 29.329479922592046]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 21.013021449533635, 'percentile_2': 0.17523319450733063}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.09959954704184086, 'max': 29.329479922592046, 'mean': 5.437024362179681, 'count': 36.0, 'sum': 195.73287703846853, 'std': 5.660742853229752, 'median': 3.654177748275443, 'majority': 0.09959954704184086, 'minority': 0.09959954704184086, 'unique': 36.0, 'histogram': [[16.0, 9.0, 6.0, 2.0, 0.0, 2.0, 0.0, 0.0, 0.0, 1.0], [0.09959954704184086, 3.0225875845968613, 5.945575622151882, 8.868563659706902, 11.791551697261923, 14.714539734816944, 17.637527772371964, 20.560515809926983, 23.483503847482005, 26.406491885037028, 29.329479922592046]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 21.013021449533635, 'percentile_2': 0.17523319450733063}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.09959954704184086, 'max': 29.329479922592046, 'mean': 5.437024362179681, 'count': 36.0, 'sum': 195.73287703846853, 'std': 5.660742853229752, 'median': 3.654177748275443, 'majority': 0.09959954704184086, 'minority': 0.09959954704184086, 'unique': 36.0, 'histogram': [[16.0, 9.0, 6.0, 2.0, 0.0, 2.0, 0.0, 0.0, 0.0, 1.0], [0.09959954704184086, 3.0225875845968613, 5.945575622151882, 8.868563659706902, 11.791551697261923, 14.714539734816944, 17.637527772371964, 20.560515809926983, 23.483503847482005, 26.406491885037028, 29.329479922592046]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_2': 0.17523319450733063, 'percentile_98': 21.013021449533635}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.09959954704184086, 'max': 29.329479922592046, 'mean': 5.437024362179681, 'count': 36.0, 'sum': 195.73287703846853, 'std': 5.660742853229752, 'median': 3.654177748275443, 'majority': 0.09959954704184086, 'minority': 0.09959954704184086, 'unique': 36.0, 'histogram': [[16.0, 9.0, 6.0, 2.0, 0.0, 2.0, 0.0, 0.0, 0.0, 1.0], [0.09959954704184086, 3.0225875845968613, 5.945575622151882, 8.868563659706902, 11.791551697261923, 14.714539734816944, 17.637527772371964, 20.560515809926983, 23.483503847482005, 26.406491885037028, 29.329479922592046]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_2': 0.17523319450733063, 'percentile_98': 21.013021449533635}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.08247489535275522, 'max': 26.69475599253677, 'mean': 4.649424679209406, 'count': 36.0, 'sum': 167.3792884515386, 'std': 4.977627965821467, 'median': 3.000104149667759, 'majority': 0.08247489535275522, 'minority': 0.08247489535275522, 'unique': 36.0, 'histogram': [[18.0, 7.0, 6.0, 2.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0], [0.08247489535275522, 2.743703005071157, 5.404931114789558, 8.06615922450796, 10.72738733422636, 13.388615443944762, 16.049843553663166, 18.711071663381567, 21.372299773099968, 24.03352788281837, 26.69475599253677]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_2': 0.14506707338474814, 'percentile_98': 17.865074432447063}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.08247489535275522, 'max': 26.69475599253677, 'mean': 4.649424679209406, 'count': 36.0, 'sum': 167.3792884515386, 'std': 4.977627965821467, 'median': 3.0001041496677594, 'majority': 0.08247489535275522, 'minority': 0.08247489535275522, 'unique': 36.0, 'histogram': [[18.0, 7.0, 6.0, 2.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0], [0.08247489535275522, 2.743703005071157, 5.404931114789558, 8.06615922450796, 10.72738733422636, 13.388615443944762, 16.049843553663166, 18.711071663381567, 21.372299773099968, 24.03352788281837, 26.69475599253677]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_2': 0.14506707338474814, 'percentile_98': 17.865074432447063}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.08247489535275522, 'max': 26.69475599253677, 'mean': 4.649424679209406, 'count': 36.0, 'sum': 167.3792884515386, 'std': 4.977627965821467, 'median': 3.000104149667759, 'majority': 0.08247489535275522, 'minority': 0.08247489535275522, 'unique': 36.0, 'histogram': [[18.0, 7.0, 6.0, 2.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0], [0.08247489535275522, 2.743703005071157, 5.404931114789558, 8.06615922450796, 10.72738733422636, 13.388615443944762, 16.049843553663166, 18.711071663381567, 21.372299773099968, 24.03352788281837, 26.69475599253677]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 17.865074432447063, 'percentile_2': 0.14506707338474814}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.08247489535275522, 'max': 26.69475599253677, 'mean': 4.649424679209406, 'count': 36.0, 'sum': 167.3792884515386, 'std': 4.977627965821467, 'median': 3.0001041496677594, 'majority': 0.08247489535275522, 'minority': 0.08247489535275522, 'unique': 36.0, 'histogram': [[18.0, 7.0, 6.0, 2.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0], [0.08247489535275522, 2.743703005071157, 5.404931114789558, 8.06615922450796, 10.72738733422636, 13.388615443944762, 16.049843553663166, 18.711071663381567, 21.372299773099968, 24.03352788281837, 26.69475599253677]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 17.865074432447063, 'percentile_2': 0.14506707338474814}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.08247489535275522, 'max': 26.69475599253677, 'mean': 4.649424679209406, 'count': 36.0, 'sum': 167.3792884515386, 'std': 4.977627965821467, 'median': 3.000104149667759, 'majority': 0.08247489535275522, 'minority': 0.08247489535275522, 'unique': 36.0, 'histogram': [[18.0, 7.0, 6.0, 2.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0], [0.08247489535275522, 2.743703005071157, 5.404931114789558, 8.06615922450796, 10.72738733422636, 13.388615443944762, 16.049843553663166, 18.711071663381567, 21.372299773099968, 24.03352788281837, 26.69475599253677]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 17.865074432447063, 'percentile_2': 0.14506707338474814}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.08247489535275522, 'max': 26.69475599253677, 'mean': 4.649424679209406, 'count': 36.0, 'sum': 167.3792884515386, 'std': 4.977627965821467, 'median': 3.000104149667759, 'majority': 0.08247489535275522, 'minority': 0.08247489535275522, 'unique': 36.0, 'histogram': [[18.0, 7.0, 6.0, 2.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0], [0.08247489535275522, 2.743703005071157, 5.404931114789558, 8.06615922450796, 10.72738733422636, 13.388615443944762, 16.049843553663166, 18.711071663381567, 21.372299773099968, 24.03352788281837, 26.69475599253677]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 17.865074432447063, 'percentile_2': 0.14506707338474814}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.08247489535275522, 'max': 26.69475599253677, 'mean': 4.649424679209406, 'count': 36.0, 'sum': 167.3792884515386, 'std': 4.977627965821467, 'median': 3.0001041496677594, 'majority': 0.08247489535275522, 'minority': 0.08247489535275522, 'unique': 36.0, 'histogram': [[18.0, 7.0, 6.0, 2.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0], [0.08247489535275522, 2.743703005071157, 5.404931114789558, 8.06615922450796, 10.72738733422636, 13.388615443944762, 16.049843553663166, 18.711071663381567, 21.372299773099968, 24.03352788281837, 26.69475599253677]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 17.865074432447063, 'percentile_2': 0.14506707338474814}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.08247489535275522, 'max': 26.69475599253677, 'mean': 4.649424679209406, 'count': 36.0, 'sum': 167.3792884515386, 'std': 4.977627965821467, 'median': 3.000104149667759, 'majority': 0.08247489535275522, 'minority': 0.08247489535275522, 'unique': 36.0, 'histogram': [[18.0, 7.0, 6.0, 2.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0], [0.08247489535275522, 2.743703005071157, 5.404931114789558, 8.06615922450796, 10.72738733422636, 13.388615443944762, 16.049843553663166, 18.711071663381567, 21.372299773099968, 24.03352788281837, 26.69475599253677]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 17.865074432447063, 'percentile_2': 0.14506707338474814}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.08247489535275522, 'max': 26.69475599253677, 'mean': 4.649424679209406, 'count': 36.0, 'sum': 167.3792884515386, 'std': 4.977627965821467, 'median': 3.0001041496677594, 'majority': 0.08247489535275522, 'minority': 0.08247489535275522, 'unique': 36.0, 'histogram': [[18.0, 7.0, 6.0, 2.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0], [0.08247489535275522, 2.743703005071157, 5.404931114789558, 8.06615922450796, 10.72738733422636, 13.388615443944762, 16.049843553663166, 18.711071663381567, 21.372299773099968, 24.03352788281837, 26.69475599253677]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_2': 0.14506707338474814, 'percentile_98': 17.865074432447063}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.08247489535275522, 'max': 26.69475599253677, 'mean': 4.649424679209406, 'count': 36.0, 'sum': 167.3792884515386, 'std': 4.977627965821467, 'median': 3.000104149667759, 'majority': 0.08247489535275522, 'minority': 0.08247489535275522, 'unique': 36.0, 'histogram': [[18.0, 7.0, 6.0, 2.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0], [0.08247489535275522, 2.743703005071157, 5.404931114789558, 8.06615922450796, 10.72738733422636, 13.388615443944762, 16.049843553663166, 18.711071663381567, 21.372299773099968, 24.03352788281837, 26.69475599253677]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_2': 0.14506707338474814, 'percentile_98': 17.865074432447063}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.08247489535275522, 'max': 26.69475599253677, 'mean': 4.649424679209406, 'count': 36.0, 'sum': 167.3792884515386, 'std': 4.977627965821467, 'median': 3.0001041496677594, 'majority': 0.08247489535275522, 'minority': 0.08247489535275522, 'unique': 36.0, 'histogram': [[18.0, 7.0, 6.0, 2.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0], [0.08247489535275522, 2.743703005071157, 5.404931114789558, 8.06615922450796, 10.72738733422636, 13.388615443944762, 16.049843553663166, 18.711071663381567, 21.372299773099968, 24.03352788281837, 26.69475599253677]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_2': 0.14506707338474814, 'percentile_98': 17.865074432447063}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.08247489535275522, 'max': 26.69475599253677, 'mean': 4.649424679209406, 'count': 36.0, 'sum': 167.3792884515386, 'std': 4.977627965821467, 'median': 3.000104149667759, 'majority': 0.08247489535275522, 'minority': 0.08247489535275522, 'unique': 36.0, 'histogram': [[18.0, 7.0, 6.0, 2.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0], [0.08247489535275522, 2.743703005071157, 5.404931114789558, 8.06615922450796, 10.72738733422636, 13.388615443944762, 16.049843553663166, 18.711071663381567, 21.372299773099968, 24.03352788281837, 26.69475599253677]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_2': 0.14506707338474814, 'percentile_98': 17.865074432447063}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.09920820509635007, 'max': 32.8268822894462, 'mean': 5.328482391280777, 'count': 36.0, 'sum': 191.82536608610798, 'std': 5.941790057089749, 'median': 3.4467019482953214, 'majority': 0.09920820509635007, 'minority': 0.09920820509635007, 'unique': 36.0, 'histogram': [[18.0, 7.0, 6.0, 3.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0], [0.09920820509635007, 3.371975613531335, 6.6447430219663195, 9.917510430401304, 13.19027783883629, 16.463045247271275, 19.73581265570626, 23.008580064141245, 26.28134747257623, 29.554114881011213, 32.8268822894462]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_2': 0.17445725798033934, 'percentile_98': 20.8796854475161}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.09920820509635007, 'max': 32.82688228944621, 'mean': 5.328482391280777, 'count': 36.0, 'sum': 191.82536608610798, 'std': 5.94179005708975, 'median': 3.4467019482953214, 'majority': 0.09920820509635007, 'minority': 0.09920820509635007, 'unique': 36.0, 'histogram': [[18.0, 7.0, 6.0, 3.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0], [0.09920820509635007, 3.371975613531336, 6.644743021966321, 9.917510430401308, 13.190277838836293, 16.46304524727128, 19.735812655706265, 23.00858006414125, 26.281347472576236, 29.554114881011223, 32.82688228944621]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_2': 0.17445725798033934, 'percentile_98': 20.8796854475161}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.09920820509635007, 'max': 32.8268822894462, 'mean': 5.328482391280777, 'count': 36.0, 'sum': 191.82536608610798, 'std': 5.941790057089749, 'median': 3.4467019482953214, 'majority': 0.09920820509635007, 'minority': 0.09920820509635007, 'unique': 36.0, 'histogram': [[18.0, 7.0, 6.0, 3.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0], [0.09920820509635007, 3.371975613531335, 6.6447430219663195, 9.917510430401304, 13.19027783883629, 16.463045247271275, 19.73581265570626, 23.008580064141245, 26.28134747257623, 29.554114881011213, 32.8268822894462]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_2': 0.17445725798033934, 'percentile_98': 20.8796854475161}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.09920820509635007, 'max': 32.82688228944621, 'mean': 5.328482391280777, 'count': 36.0, 'sum': 191.82536608610798, 'std': 5.94179005708975, 'median': 3.4467019482953214, 'majority': 0.09920820509635007, 'minority': 0.09920820509635007, 'unique': 36.0, 'histogram': [[18.0, 7.0, 6.0, 3.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0], [0.09920820509635007, 3.371975613531336, 6.644743021966321, 9.917510430401308, 13.190277838836293, 16.46304524727128, 19.735812655706265, 23.00858006414125, 26.281347472576236, 29.554114881011223, 32.82688228944621]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_2': 0.17445725798033934, 'percentile_98': 20.8796854475161}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.09920820509635007, 'max': 32.8268822894462, 'mean': 5.328482391280777, 'count': 36.0, 'sum': 191.82536608610798, 'std': 5.941790057089749, 'median': 3.4467019482953214, 'majority': 0.09920820509635007, 'minority': 0.09920820509635007, 'unique': 36.0, 'histogram': [[18.0, 7.0, 6.0, 3.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0], [0.09920820509635007, 3.371975613531335, 6.6447430219663195, 9.917510430401304, 13.19027783883629, 16.463045247271275, 19.73581265570626, 23.008580064141245, 26.28134747257623, 29.554114881011213, 32.8268822894462]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_2': 0.17445725798033934, 'percentile_98': 20.8796854475161}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.09920820509635007, 'max': 32.8268822894462, 'mean': 5.328482391280777, 'count': 36.0, 'sum': 191.82536608610798, 'std': 5.941790057089749, 'median': 3.4467019482953214, 'majority': 0.09920820509635007, 'minority': 0.09920820509635007, 'unique': 36.0, 'histogram': [[18.0, 7.0, 6.0, 3.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0], [0.09920820509635007, 3.371975613531335, 6.6447430219663195, 9.917510430401304, 13.19027783883629, 16.463045247271275, 19.73581265570626, 23.008580064141245, 26.28134747257623, 29.554114881011213, 32.8268822894462]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 20.8796854475161, 'percentile_2': 0.17445725798033934}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.09920820509635007, 'max': 32.82688228944621, 'mean': 5.328482391280777, 'count': 36.0, 'sum': 191.82536608610798, 'std': 5.94179005708975, 'median': 3.4467019482953214, 'majority': 0.09920820509635007, 'minority': 0.09920820509635007, 'unique': 36.0, 'histogram': [[18.0, 7.0, 6.0, 3.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0], [0.09920820509635007, 3.371975613531336, 6.644743021966321, 9.917510430401308, 13.190277838836293, 16.46304524727128, 19.735812655706265, 23.00858006414125, 26.281347472576236, 29.554114881011223, 32.82688228944621]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 20.8796854475161, 'percentile_2': 0.17445725798033934}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.09920820509635007, 'max': 32.8268822894462, 'mean': 5.328482391280777, 'count': 36.0, 'sum': 191.82536608610798, 'std': 5.941790057089749, 'median': 3.4467019482953214, 'majority': 0.09920820509635007, 'minority': 0.09920820509635007, 'unique': 36.0, 'histogram': [[18.0, 7.0, 6.0, 3.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0], [0.09920820509635007, 3.371975613531335, 6.6447430219663195, 9.917510430401304, 13.19027783883629, 16.463045247271275, 19.73581265570626, 23.008580064141245, 26.28134747257623, 29.554114881011213, 32.8268822894462]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 20.8796854475161, 'percentile_2': 0.17445725798033934}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.09920820509635007, 'max': 32.82688228944621, 'mean': 5.328482391280777, 'count': 36.0, 'sum': 191.82536608610798, 'std': 5.94179005708975, 'median': 3.4467019482953214, 'majority': 0.09920820509635007, 'minority': 0.09920820509635007, 'unique': 36.0, 'histogram': [[18.0, 7.0, 6.0, 3.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0], [0.09920820509635007, 3.371975613531336, 6.644743021966321, 9.917510430401308, 13.190277838836293, 16.46304524727128, 19.735812655706265, 23.00858006414125, 26.281347472576236, 29.554114881011223, 32.82688228944621]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 20.8796854475161, 'percentile_2': 0.17445725798033934}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.09920820509635007, 'max': 32.8268822894462, 'mean': 5.328482391280777, 'count': 36.0, 'sum': 191.82536608610798, 'std': 5.941790057089749, 'median': 3.4467019482953214, 'majority': 0.09920820509635007, 'minority': 0.09920820509635007, 'unique': 36.0, 'histogram': [[18.0, 7.0, 6.0, 3.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0], [0.09920820509635007, 3.371975613531335, 6.6447430219663195, 9.917510430401304, 13.19027783883629, 16.463045247271275, 19.73581265570626, 23.008580064141245, 26.28134747257623, 29.554114881011213, 32.8268822894462]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 20.8796854475161, 'percentile_2': 0.17445725798033934}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.09920820509635005, 'max': 32.82688228944621, 'mean': 5.328482391280777, 'count': 36.0, 'sum': 191.82536608610798, 'std': 5.94179005708975, 'median': 3.4467019482953214, 'majority': 0.09920820509635005, 'minority': 0.09920820509635005, 'unique': 36.0, 'histogram': [[18.0, 7.0, 6.0, 3.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0], [0.09920820509635005, 3.371975613531336, 6.644743021966321, 9.917510430401308, 13.190277838836293, 16.46304524727128, 19.735812655706265, 23.00858006414125, 26.281347472576236, 29.554114881011223, 32.82688228944621]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 20.8796854475161, 'percentile_2': 0.17445725798033934}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.09920820509635007, 'max': 32.8268822894462, 'mean': 5.328482391280777, 'count': 36.0, 'sum': 191.82536608610798, 'std': 5.941790057089749, 'median': 3.4467019482953214, 'majority': 0.09920820509635007, 'minority': 0.09920820509635007, 'unique': 36.0, 'histogram': [[18.0, 7.0, 6.0, 3.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0], [0.09920820509635007, 3.371975613531335, 6.6447430219663195, 9.917510430401304, 13.19027783883629, 16.463045247271275, 19.73581265570626, 23.008580064141245, 26.28134747257623, 29.554114881011213, 32.8268822894462]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 20.8796854475161, 'percentile_2': 0.17445725798033934}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.07999033785669486, 'max': 26.550680129922398, 'mean': 4.283964391325785, 'count': 36.0, 'sum': 154.22271808772828, 'std': 4.804101963580192, 'median': 2.723740440273449, 'majority': 0.07999033785669486, 'minority': 0.07999033785669486, 'unique': 36.0, 'histogram': [[18.0, 7.0, 6.0, 3.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0], [0.07999033785669486, 2.727059317063265, 5.374128296269835, 8.021197275476405, 10.668266254682974, 13.315335233889543, 15.962404213096114, 18.609473192302687, 21.256542171509256, 23.903611150715825, 26.550680129922398]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 16.827745243561886, 'percentile_2': 0.14070317282395436}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.07999033785669486, 'max': 26.550680129922398, 'mean': 4.283964391325785, 'count': 36.0, 'sum': 154.22271808772828, 'std': 4.804101963580192, 'median': 2.723740440273449, 'majority': 0.07999033785669486, 'minority': 0.07999033785669486, 'unique': 36.0, 'histogram': [[18.0, 7.0, 6.0, 3.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0], [0.07999033785669486, 2.727059317063265, 5.374128296269835, 8.021197275476405, 10.668266254682974, 13.315335233889543, 15.962404213096114, 18.609473192302687, 21.256542171509256, 23.903611150715825, 26.550680129922398]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 16.827745243561886, 'percentile_2': 0.14070317282395436}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.07999033785669486, 'max': 26.550680129922398, 'mean': 4.283964391325785, 'count': 36.0, 'sum': 154.22271808772828, 'std': 4.804101963580192, 'median': 2.723740440273449, 'majority': 0.07999033785669486, 'minority': 0.07999033785669486, 'unique': 36.0, 'histogram': [[18.0, 7.0, 6.0, 3.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0], [0.07999033785669486, 2.727059317063265, 5.374128296269835, 8.021197275476405, 10.668266254682974, 13.315335233889543, 15.962404213096114, 18.609473192302687, 21.256542171509256, 23.903611150715825, 26.550680129922398]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 16.827745243561886, 'percentile_2': 0.14070317282395436}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.07999033785669486, 'max': 26.550680129922398, 'mean': 4.283964391325785, 'count': 36.0, 'sum': 154.22271808772828, 'std': 4.804101963580192, 'median': 2.723740440273449, 'majority': 0.07999033785669486, 'minority': 0.07999033785669486, 'unique': 36.0, 'histogram': [[18.0, 7.0, 6.0, 3.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0], [0.07999033785669486, 2.727059317063265, 5.374128296269835, 8.021197275476405, 10.668266254682974, 13.315335233889543, 15.962404213096114, 18.609473192302687, 21.256542171509256, 23.903611150715825, 26.550680129922398]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 16.827745243561886, 'percentile_2': 0.14070317282395436}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.07999033785669486, 'max': 26.550680129922398, 'mean': 4.283964391325785, 'count': 36.0, 'sum': 154.22271808772828, 'std': 4.804101963580192, 'median': 2.723740440273449, 'majority': 0.07999033785669486, 'minority': 0.07999033785669486, 'unique': 36.0, 'histogram': [[18.0, 7.0, 6.0, 3.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0], [0.07999033785669486, 2.727059317063265, 5.374128296269835, 8.021197275476405, 10.668266254682974, 13.315335233889543, 15.962404213096114, 18.609473192302687, 21.256542171509256, 23.903611150715825, 26.550680129922398]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 16.827745243561886, 'percentile_2': 0.14070317282395436}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.07999033785669486, 'max': 26.550680129922398, 'mean': 4.283964391325785, 'count': 36.0, 'sum': 154.22271808772828, 'std': 4.804101963580192, 'median': 2.723740440273449, 'majority': 0.07999033785669486, 'minority': 0.07999033785669486, 'unique': 36.0, 'histogram': [[18.0, 7.0, 6.0, 3.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0], [0.07999033785669486, 2.727059317063265, 5.374128296269835, 8.021197275476405, 10.668266254682974, 13.315335233889543, 15.962404213096114, 18.609473192302687, 21.256542171509256, 23.903611150715825, 26.550680129922398]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 16.827745243561886, 'percentile_2': 0.14070317282395436}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.07999033785669486, 'max': 26.550680129922398, 'mean': 4.283964391325785, 'count': 36.0, 'sum': 154.22271808772828, 'std': 4.804101963580192, 'median': 2.723740440273449, 'majority': 0.07999033785669486, 'minority': 0.07999033785669486, 'unique': 36.0, 'histogram': [[18.0, 7.0, 6.0, 3.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0], [0.07999033785669486, 2.727059317063265, 5.374128296269835, 8.021197275476405, 10.668266254682974, 13.315335233889543, 15.962404213096114, 18.609473192302687, 21.256542171509256, 23.903611150715825, 26.550680129922398]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 16.827745243561886, 'percentile_2': 0.14070317282395436}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.07999033785669486, 'max': 26.550680129922398, 'mean': 4.283964391325785, 'count': 36.0, 'sum': 154.22271808772828, 'std': 4.804101963580192, 'median': 2.723740440273449, 'majority': 0.07999033785669486, 'minority': 0.07999033785669486, 'unique': 36.0, 'histogram': [[18.0, 7.0, 6.0, 3.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0], [0.07999033785669486, 2.727059317063265, 5.374128296269835, 8.021197275476405, 10.668266254682974, 13.315335233889543, 15.962404213096114, 18.609473192302687, 21.256542171509256, 23.903611150715825, 26.550680129922398]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 16.827745243561886, 'percentile_2': 0.14070317282395436}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.07999033785669486, 'max': 26.550680129922398, 'mean': 4.283964391325785, 'count': 36.0, 'sum': 154.22271808772828, 'std': 4.804101963580192, 'median': 2.723740440273449, 'majority': 0.07999033785669486, 'minority': 0.07999033785669486, 'unique': 36.0, 'histogram': [[18.0, 7.0, 6.0, 3.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0], [0.07999033785669486, 2.727059317063265, 5.374128296269835, 8.021197275476405, 10.668266254682974, 13.315335233889543, 15.962404213096114, 18.609473192302687, 21.256542171509256, 23.903611150715825, 26.550680129922398]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 16.827745243561886, 'percentile_2': 0.14070317282395436}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.07999033785669486, 'max': 26.550680129922398, 'mean': 4.283964391325785, 'count': 36.0, 'sum': 154.22271808772828, 'std': 4.804101963580192, 'median': 2.723740440273449, 'majority': 0.07999033785669486, 'minority': 0.07999033785669486, 'unique': 36.0, 'histogram': [[18.0, 7.0, 6.0, 3.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0], [0.07999033785669486, 2.727059317063265, 5.374128296269835, 8.021197275476405, 10.668266254682974, 13.315335233889543, 15.962404213096114, 18.609473192302687, 21.256542171509256, 23.903611150715825, 26.550680129922398]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 16.827745243561886, 'percentile_2': 0.14070317282395436}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.07999033785669486, 'max': 26.550680129922398, 'mean': 4.283964391325785, 'count': 36.0, 'sum': 154.22271808772828, 'std': 4.804101963580192, 'median': 2.723740440273449, 'majority': 0.07999033785669486, 'minority': 0.07999033785669486, 'unique': 36.0, 'histogram': [[18.0, 7.0, 6.0, 3.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0], [0.07999033785669486, 2.727059317063265, 5.374128296269835, 8.021197275476405, 10.668266254682974, 13.315335233889543, 15.962404213096114, 18.609473192302687, 21.256542171509256, 23.903611150715825, 26.550680129922398]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 16.827745243561886, 'percentile_2': 0.14070317282395436}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.07999033785669486, 'max': 26.550680129922398, 'mean': 4.283964391325785, 'count': 36.0, 'sum': 154.22271808772828, 'std': 4.804101963580192, 'median': 2.723740440273449, 'majority': 0.07999033785669486, 'minority': 0.07999033785669486, 'unique': 36.0, 'histogram': [[18.0, 7.0, 6.0, 3.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0], [0.07999033785669486, 2.727059317063265, 5.374128296269835, 8.021197275476405, 10.668266254682974, 13.315335233889543, 15.962404213096114, 18.609473192302687, 21.256542171509256, 23.903611150715825, 26.550680129922398]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 16.827745243561886, 'percentile_2': 0.14070317282395436}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.07017231779069502, 'max': 22.89293973085294, 'mean': 3.8566844447476427, 'count': 36.0, 'sum': 138.84064001091514, 'std': 4.20470554034032, 'median': 2.508853444527019, 'majority': 0.07017231779069502, 'minority': 0.07017231779069502, 'unique': 36.0, 'histogram': [[18.0, 7.0, 6.0, 2.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0], [0.07017231779069502, 2.3524490590969194, 4.634725800403144, 6.917002541709368, 9.199279283015592, 11.481556024321817, 13.76383276562804, 16.046109506934265, 18.32838624824049, 20.610662989546714, 22.89293973085294]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 14.974693104687908, 'percentile_2': 0.12345816413092274}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.07017231779069502, 'max': 22.89293973085294, 'mean': 3.8566844447476427, 'count': 36.0, 'sum': 138.84064001091514, 'std': 4.20470554034032, 'median': 2.508853444527019, 'majority': 0.07017231779069502, 'minority': 0.07017231779069502, 'unique': 36.0, 'histogram': [[18.0, 7.0, 6.0, 2.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0], [0.07017231779069502, 2.3524490590969194, 4.634725800403144, 6.917002541709368, 9.199279283015592, 11.481556024321817, 13.76383276562804, 16.046109506934265, 18.32838624824049, 20.610662989546714, 22.89293973085294]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 14.974693104687908, 'percentile_2': 0.12345816413092274}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.07017231779069502, 'max': 22.89293973085294, 'mean': 3.8566844447476427, 'count': 36.0, 'sum': 138.84064001091514, 'std': 4.20470554034032, 'median': 2.508853444527019, 'majority': 0.07017231779069502, 'minority': 0.07017231779069502, 'unique': 36.0, 'histogram': [[18.0, 7.0, 6.0, 2.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0], [0.07017231779069502, 2.3524490590969194, 4.634725800403144, 6.917002541709368, 9.199279283015592, 11.481556024321817, 13.76383276562804, 16.046109506934265, 18.32838624824049, 20.610662989546714, 22.89293973085294]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 14.974693104687908, 'percentile_2': 0.12345816413092274}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.07017231779069502, 'max': 22.89293973085294, 'mean': 3.8566844447476427, 'count': 36.0, 'sum': 138.84064001091514, 'std': 4.20470554034032, 'median': 2.508853444527019, 'majority': 0.07017231779069502, 'minority': 0.07017231779069502, 'unique': 36.0, 'histogram': [[18.0, 7.0, 6.0, 2.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0], [0.07017231779069502, 2.3524490590969194, 4.634725800403144, 6.917002541709368, 9.199279283015592, 11.481556024321817, 13.76383276562804, 16.046109506934265, 18.32838624824049, 20.610662989546714, 22.89293973085294]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 14.974693104687908, 'percentile_2': 0.12345816413092274}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.07017231779069502, 'max': 22.89293973085294, 'mean': 3.8566844447476427, 'count': 36.0, 'sum': 138.84064001091514, 'std': 4.20470554034032, 'median': 2.508853444527019, 'majority': 0.07017231779069502, 'minority': 0.07017231779069502, 'unique': 36.0, 'histogram': [[18.0, 7.0, 6.0, 2.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0], [0.07017231779069502, 2.3524490590969194, 4.634725800403144, 6.917002541709368, 9.199279283015592, 11.481556024321817, 13.76383276562804, 16.046109506934265, 18.32838624824049, 20.610662989546714, 22.89293973085294]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 14.974693104687908, 'percentile_2': 0.12345816413092274}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.07017231779069502, 'max': 22.89293973085294, 'mean': 3.8566844447476427, 'count': 36.0, 'sum': 138.84064001091514, 'std': 4.20470554034032, 'median': 2.508853444527019, 'majority': 0.07017231779069502, 'minority': 0.07017231779069502, 'unique': 36.0, 'histogram': [[18.0, 7.0, 6.0, 2.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0], [0.07017231779069502, 2.3524490590969194, 4.634725800403144, 6.917002541709368, 9.199279283015592, 11.481556024321817, 13.76383276562804, 16.046109506934265, 18.32838624824049, 20.610662989546714, 22.89293973085294]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 14.974693104687908, 'percentile_2': 0.12345816413092274}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.07017231779069502, 'max': 22.89293973085294, 'mean': 3.8566844447476427, 'count': 36.0, 'sum': 138.84064001091514, 'std': 4.20470554034032, 'median': 2.508853444527019, 'majority': 0.07017231779069502, 'minority': 0.07017231779069502, 'unique': 36.0, 'histogram': [[18.0, 7.0, 6.0, 2.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0], [0.07017231779069502, 2.3524490590969194, 4.634725800403144, 6.917002541709368, 9.199279283015592, 11.481556024321817, 13.76383276562804, 16.046109506934265, 18.32838624824049, 20.610662989546714, 22.89293973085294]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 14.974693104687908, 'percentile_2': 0.12345816413092274}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.07017231779069502, 'max': 22.89293973085294, 'mean': 3.8566844447476427, 'count': 36.0, 'sum': 138.84064001091514, 'std': 4.20470554034032, 'median': 2.508853444527019, 'majority': 0.07017231779069502, 'minority': 0.07017231779069502, 'unique': 36.0, 'histogram': [[18.0, 7.0, 6.0, 2.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0], [0.07017231779069502, 2.3524490590969194, 4.634725800403144, 6.917002541709368, 9.199279283015592, 11.481556024321817, 13.76383276562804, 16.046109506934265, 18.32838624824049, 20.610662989546714, 22.89293973085294]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 14.974693104687908, 'percentile_2': 0.12345816413092274}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.07017231779069502, 'max': 22.89293973085294, 'mean': 3.8566844447476427, 'count': 36.0, 'sum': 138.84064001091514, 'std': 4.20470554034032, 'median': 2.508853444527019, 'majority': 0.07017231779069502, 'minority': 0.07017231779069502, 'unique': 36.0, 'histogram': [[18.0, 7.0, 6.0, 2.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0], [0.07017231779069502, 2.3524490590969194, 4.634725800403144, 6.917002541709368, 9.199279283015592, 11.481556024321817, 13.76383276562804, 16.046109506934265, 18.32838624824049, 20.610662989546714, 22.89293973085294]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 14.974693104687908, 'percentile_2': 0.12345816413092274}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.07017231779069502, 'max': 22.89293973085294, 'mean': 3.8566844447476427, 'count': 36.0, 'sum': 138.84064001091514, 'std': 4.20470554034032, 'median': 2.508853444527019, 'majority': 0.07017231779069502, 'minority': 0.07017231779069502, 'unique': 36.0, 'histogram': [[18.0, 7.0, 6.0, 2.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0], [0.07017231779069502, 2.3524490590969194, 4.634725800403144, 6.917002541709368, 9.199279283015592, 11.481556024321817, 13.76383276562804, 16.046109506934265, 18.32838624824049, 20.610662989546714, 22.89293973085294]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 14.974693104687908, 'percentile_2': 0.12345816413092274}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.07017231779069502, 'max': 22.892939730852937, 'mean': 3.8566844447476427, 'count': 36.0, 'sum': 138.84064001091514, 'std': 4.204705540340319, 'median': 2.508853444527019, 'majority': 0.07017231779069502, 'minority': 0.07017231779069502, 'unique': 36.0, 'histogram': [[18.0, 7.0, 6.0, 2.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0], [0.07017231779069502, 2.352449059096919, 4.634725800403143, 6.917002541709367, 9.19927928301559, 11.481556024321813, 13.763832765628038, 16.046109506934265, 18.328386248240488, 20.61066298954671, 22.892939730852937]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 14.974693104687907, 'percentile_2': 0.12345816413092273}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.07017231779069502, 'max': 22.89293973085294, 'mean': 3.8566844447476427, 'count': 36.0, 'sum': 138.84064001091514, 'std': 4.20470554034032, 'median': 2.508853444527019, 'majority': 0.07017231779069502, 'minority': 0.07017231779069502, 'unique': 36.0, 'histogram': [[18.0, 7.0, 6.0, 2.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0], [0.07017231779069502, 2.3524490590969194, 4.634725800403144, 6.917002541709368, 9.199279283015592, 11.481556024321817, 13.76383276562804, 16.046109506934265, 18.32838624824049, 20.610662989546714, 22.89293973085294]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 14.974693104687908, 'percentile_2': 0.12345816413092274}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.0809581013139931, 'max': 24.822949625050086, 'mean': 4.3481885376528915, 'count': 36.0, 'sum': 156.5347873555041, 'std': 4.633345420525916, 'median': 2.848834060751686, 'majority': 0.0809581013139931, 'minority': 0.0809581013139931, 'unique': 36.0, 'histogram': [[17.0, 8.0, 6.0, 2.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0], [0.0809581013139931, 2.5551572536876024, 5.029356406061212, 7.5035555584348215, 9.97775471080843, 12.45195386318204, 14.926153015555649, 17.40035216792926, 19.874551320302867, 22.348750472676475, 24.822949625050086]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 16.762359442296063, 'percentile_2': 0.1424639475343639}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.0809581013139931, 'max': 24.822949625050086, 'mean': 4.348188537652892, 'count': 36.0, 'sum': 156.53478735550414, 'std': 4.633345420525916, 'median': 2.8488340607516855, 'majority': 0.0809581013139931, 'minority': 0.0809581013139931, 'unique': 36.0, 'histogram': [[17.0, 8.0, 6.0, 2.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0], [0.0809581013139931, 2.5551572536876024, 5.029356406061212, 7.5035555584348215, 9.97775471080843, 12.45195386318204, 14.926153015555649, 17.40035216792926, 19.874551320302867, 22.348750472676475, 24.822949625050086]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 16.762359442296063, 'percentile_2': 0.1424639475343639}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.0809581013139931, 'max': 24.822949625050086, 'mean': 4.3481885376528915, 'count': 36.0, 'sum': 156.5347873555041, 'std': 4.633345420525916, 'median': 2.848834060751686, 'majority': 0.0809581013139931, 'minority': 0.0809581013139931, 'unique': 36.0, 'histogram': [[17.0, 8.0, 6.0, 2.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0], [0.0809581013139931, 2.5551572536876024, 5.029356406061212, 7.5035555584348215, 9.97775471080843, 12.45195386318204, 14.926153015555649, 17.40035216792926, 19.874551320302867, 22.348750472676475, 24.822949625050086]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 16.762359442296063, 'percentile_2': 0.1424639475343639}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.0809581013139931, 'max': 24.822949625050086, 'mean': 4.348188537652892, 'count': 36.0, 'sum': 156.53478735550414, 'std': 4.633345420525916, 'median': 2.8488340607516855, 'majority': 0.0809581013139931, 'minority': 0.0809581013139931, 'unique': 36.0, 'histogram': [[17.0, 8.0, 6.0, 2.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0], [0.0809581013139931, 2.5551572536876024, 5.029356406061212, 7.5035555584348215, 9.97775471080843, 12.45195386318204, 14.926153015555649, 17.40035216792926, 19.874551320302867, 22.348750472676475, 24.822949625050086]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 16.762359442296063, 'percentile_2': 0.1424639475343639}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.0809581013139931, 'max': 24.822949625050086, 'mean': 4.3481885376528915, 'count': 36.0, 'sum': 156.5347873555041, 'std': 4.633345420525916, 'median': 2.848834060751686, 'majority': 0.0809581013139931, 'minority': 0.0809581013139931, 'unique': 36.0, 'histogram': [[17.0, 8.0, 6.0, 2.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0], [0.0809581013139931, 2.5551572536876024, 5.029356406061212, 7.5035555584348215, 9.97775471080843, 12.45195386318204, 14.926153015555649, 17.40035216792926, 19.874551320302867, 22.348750472676475, 24.822949625050086]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 16.762359442296063, 'percentile_2': 0.1424639475343639}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.0809581013139931, 'max': 24.822949625050086, 'mean': 4.3481885376528915, 'count': 36.0, 'sum': 156.5347873555041, 'std': 4.633345420525916, 'median': 2.848834060751686, 'majority': 0.0809581013139931, 'minority': 0.0809581013139931, 'unique': 36.0, 'histogram': [[17.0, 8.0, 6.0, 2.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0], [0.0809581013139931, 2.5551572536876024, 5.029356406061212, 7.5035555584348215, 9.97775471080843, 12.45195386318204, 14.926153015555649, 17.40035216792926, 19.874551320302867, 22.348750472676475, 24.822949625050086]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 16.762359442296063, 'percentile_2': 0.1424639475343639}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.0809581013139931, 'max': 24.822949625050086, 'mean': 4.348188537652892, 'count': 36.0, 'sum': 156.53478735550414, 'std': 4.633345420525916, 'median': 2.8488340607516855, 'majority': 0.0809581013139931, 'minority': 0.0809581013139931, 'unique': 36.0, 'histogram': [[17.0, 8.0, 6.0, 2.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0], [0.0809581013139931, 2.5551572536876024, 5.029356406061212, 7.5035555584348215, 9.97775471080843, 12.45195386318204, 14.926153015555649, 17.40035216792926, 19.874551320302867, 22.348750472676475, 24.822949625050086]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 16.762359442296063, 'percentile_2': 0.1424639475343639}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.0809581013139931, 'max': 24.822949625050086, 'mean': 4.3481885376528915, 'count': 36.0, 'sum': 156.5347873555041, 'std': 4.633345420525916, 'median': 2.848834060751686, 'majority': 0.0809581013139931, 'minority': 0.0809581013139931, 'unique': 36.0, 'histogram': [[17.0, 8.0, 6.0, 2.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0], [0.0809581013139931, 2.5551572536876024, 5.029356406061212, 7.5035555584348215, 9.97775471080843, 12.45195386318204, 14.926153015555649, 17.40035216792926, 19.874551320302867, 22.348750472676475, 24.822949625050086]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 16.762359442296063, 'percentile_2': 0.1424639475343639}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.0809581013139931, 'max': 24.822949625050086, 'mean': 4.348188537652892, 'count': 36.0, 'sum': 156.53478735550414, 'std': 4.633345420525916, 'median': 2.8488340607516855, 'majority': 0.0809581013139931, 'minority': 0.0809581013139931, 'unique': 36.0, 'histogram': [[17.0, 8.0, 6.0, 2.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0], [0.0809581013139931, 2.5551572536876024, 5.029356406061212, 7.5035555584348215, 9.97775471080843, 12.45195386318204, 14.926153015555649, 17.40035216792926, 19.874551320302867, 22.348750472676475, 24.822949625050086]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 16.762359442296063, 'percentile_2': 0.1424639475343639}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.0809581013139931, 'max': 24.822949625050086, 'mean': 4.3481885376528915, 'count': 36.0, 'sum': 156.5347873555041, 'std': 4.633345420525916, 'median': 2.848834060751686, 'majority': 0.0809581013139931, 'minority': 0.0809581013139931, 'unique': 36.0, 'histogram': [[17.0, 8.0, 6.0, 2.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0], [0.0809581013139931, 2.5551572536876024, 5.029356406061212, 7.5035555584348215, 9.97775471080843, 12.45195386318204, 14.926153015555649, 17.40035216792926, 19.874551320302867, 22.348750472676475, 24.822949625050086]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 16.762359442296063, 'percentile_2': 0.1424639475343639}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.08095810131399311, 'max': 24.822949625050086, 'mean': 4.348188537652892, 'count': 36.0, 'sum': 156.53478735550414, 'std': 4.633345420525916, 'median': 2.8488340607516855, 'majority': 0.08095810131399311, 'minority': 0.08095810131399311, 'unique': 36.0, 'histogram': [[17.0, 8.0, 6.0, 2.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0], [0.08095810131399311, 2.5551572536876024, 5.029356406061212, 7.5035555584348215, 9.97775471080843, 12.45195386318204, 14.926153015555649, 17.40035216792926, 19.874551320302867, 22.348750472676475, 24.822949625050086]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 16.762359442296063, 'percentile_2': 0.1424639475343639}}}}
+{'type': 'Feature', 'geometry': {'coordinates': [[[-95.0, 29.0], [-95.0, 33.0], [-104.0, 33.0], [-104.0, 29.0], [-95.0, 29.0]]], 'type': 'Polygon'}, 'properties': {'statistics': {'b1': {'min': 0.0809581013139931, 'max': 24.822949625050086, 'mean': 4.3481885376528915, 'count': 36.0, 'sum': 156.5347873555041, 'std': 4.633345420525916, 'median': 2.848834060751686, 'majority': 0.0809581013139931, 'minority': 0.0809581013139931, 'unique': 36.0, 'histogram': [[17.0, 8.0, 6.0, 2.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0], [0.0809581013139931, 2.5551572536876024, 5.029356406061212, 7.5035555584348215, 9.97775471080843, 12.45195386318204, 14.926153015555649, 17.40035216792926, 19.874551320302867, 22.348750472676475, 24.822949625050086]], 'valid_percent': 100.0, 'masked_pixels': 0.0, 'valid_pixels': 36.0, 'percentile_98': 16.762359442296063, 'percentile_2': 0.1424639475343639}}}}
+CPU times: user 4.55 s, sys: 527 ms, total: 5.08 s
+Wall time: 1min 47s
+
+
+
+
stats[0]
+
+
{'statistics': {'b1': {'min': 0.0464402866499578,
+   'max': 49.61378870603235,
+   'mean': 9.039553150168388,
+   'count': 36.0,
+   'sum': 325.42391340606196,
+   'std': 11.97160706711745,
+   'median': 4.45260464610365,
+   'majority': 0.0464402866499578,
+   'minority': 0.0464402866499578,
+   'unique': 36.0,
+   'histogram': [[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0],
+    [0.0464402866499578,
+     5.003175128588197,
+     9.959909970526436,
+     14.916644812464675,
+     19.873379654402914,
+     24.830114496341153,
+     29.786849338279392,
+     34.74358418021763,
+     39.700319022155874,
+     44.65705386409412,
+     49.61378870603235]],
+   'valid_percent': 100.0,
+   'masked_pixels': 0.0,
+   'valid_pixels': 36.0,
+   'percentile_2': 0.08155765896762883,
+   'percentile_98': 45.348544433662454}},
+ 'datetime': '2016-12-01'}
+
+
+
+
import pandas as pd
+
+
+def clean_stats(stats_json) -> pd.DataFrame:
+    df = pd.json_normalize(stats_json)
+    df.columns = [col.replace("statistics.b1.", "") for col in df.columns]
+    df["date"] = pd.to_datetime(df["datetime"])
+    return df
+
+
+df = clean_stats(stats)
+df.head(5)
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
datetimeminmaxmeancountsumstdmedianmajorityminorityuniquehistogramvalid_percentmasked_pixelsvalid_pixelspercentile_2percentile_98date
02016-12-010.0464449.6137899.03955336.0325.42391311.9716074.4526050.046440.0464436.0[[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0...100.00.036.00.08155845.3485442016-12-01
12016-11-010.0464449.6137899.03955336.0325.42391311.9716074.4526050.046440.0464436.0[[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0...100.00.036.00.08155845.3485442016-11-01
22016-10-010.0464449.6137899.03955336.0325.42391311.9716074.4526050.046440.0464436.0[[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0...100.00.036.00.08155845.3485442016-10-01
32016-09-010.0464449.6137899.03955336.0325.42391311.9716074.4526050.046440.0464436.0[[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0...100.00.036.00.08155845.3485442016-09-01
42016-08-010.0464449.6137899.03955336.0325.42391311.9716074.4526050.046440.0464436.0[[18.0, 9.0, 1.0, 2.0, 2.0, 2.0, 0.0, 0.0, 1.0...100.00.036.00.08155845.3485442016-08-01
+ +
+
+
+
+

Visualizing the Data as a Time Series

+

We can now explore the fossil fuel emission time series (January 1999 -December 2016) available for the Dallas, Texas area of the U.S. We can plot the data set using the code below:

+
+
import matplotlib.pyplot as plt
+
+fig = plt.figure(figsize=(20, 10))
+
+
+plt.plot(
+    df["datetime"],
+    df["max"],
+    color="red",
+    linestyle="-",
+    linewidth=0.5,
+    label="CH4 emissions",
+)
+
+plt.legend()
+plt.xlabel("Years")
+plt.ylabel("g CH₄/m²/year")
+plt.xticks(rotation = 90)
+plt.title("CH4 emission Values for Texas, Dallas (2015-2020)")
+
+
Text(0.5, 1.0, 'CH4 emission Values for Texas, Dallas (2015-2020)')
+
+
+

+
+
+
+
print(items[2]["properties"]["start_datetime"])
+
+
2016-10-01T00:00:00+00:00
+
+
+
+
co2_flux_3 = requests.get(
+    f"{RASTER_API_URL}/stac/tilejson.json?collection={items[2]['collection']}&item={items[2]['id']}"
+    f"&assets={asset_name}"
+    f"&color_formula=gamma+r+1.05&colormap_name={color_map}"
+    f"&rescale={rescale_values['min']},{rescale_values['max']}",
+).json()
+co2_flux_3
+
+
{'tilejson': '2.2.0',
+ 'version': '1.0.0',
+ 'scheme': 'xyz',
+ 'tiles': ['https://1w7hfngnp7.execute-api.us-west-2.amazonaws.com/api/raster/stac/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?collection=tm54dvar-ch4flux-monthgrid-v1&item=tm54dvar-ch4flux-monthgrid-v1-201610&assets=fossil&color_formula=gamma+r+1.05&colormap_name=purd&rescale=0.0%2C202.8189294183266'],
+ 'minzoom': 0,
+ 'maxzoom': 24,
+ 'bounds': [-180.0, -90.0, 180.0, 90.0],
+ 'center': [0.0, 0.0, 0]}
+
+
+
+
# Use bbox initial zoom and map
+# Set up a map located w/in event bounds
+import folium
+
+aoi_map_bbox = Map(
+    tiles="OpenStreetMap",
+    location=[
+        30,-100
+    ],
+    zoom_start=6.8,
+)
+
+map_layer = TileLayer(
+    tiles=co2_flux_3["tiles"][0],
+    attr="GHG", opacity = 0.7
+)
+
+map_layer.add_to(aoi_map_bbox)
+
+aoi_map_bbox
+
+
Make this Notebook Trusted to load map: File -> Trust Notebook
+
+
+
+
+

Summary

+

In this notebook we have successfully explored, analyzed, and visualized the STAC collection for TM5-4DVar Isotopic CH₄ Inverse Fluxes dataset.

+ + +
+
+ + Back to top
+ + +
+ + + + + \ No newline at end of file diff --git a/pr-preview/pr-46/user_data_notebooks/tm54dvar-ch4flux-monthgrid-v1_User_Notebook_files/figure-html/cell-22-output-2.png b/pr-preview/pr-46/user_data_notebooks/tm54dvar-ch4flux-monthgrid-v1_User_Notebook_files/figure-html/cell-22-output-2.png new file mode 100644 index 00000000..38f10702 Binary files /dev/null and b/pr-preview/pr-46/user_data_notebooks/tm54dvar-ch4flux-monthgrid-v1_User_Notebook_files/figure-html/cell-22-output-2.png differ