From f9e9cb9fae7f25bb13eefe4f184b9fad66435096 Mon Sep 17 00:00:00 2001 From: Trenton Bush Date: Wed, 2 Oct 2024 10:34:20 -0700 Subject: [PATCH 01/25] add comments to extract and some transform code --- src/dbcp/extract/eip_infrastructure.py | 8 ++++- src/dbcp/extract/epa_avert.py | 2 +- src/dbcp/extract/fips_tables.py | 9 ++--- src/dbcp/extract/lbnl_iso_queue.py | 4 +-- src/dbcp/extract/local_opposition.py | 7 +++- src/dbcp/extract/protected_area_by_county.py | 9 ++++- src/dbcp/extract/rmi_energy_communities.py | 5 ++- src/dbcp/transform/eip_infrastructure.py | 37 +++++++++++--------- src/dbcp/transform/fips_tables.py | 2 +- src/dbcp/transform/justice40.py | 2 +- 10 files changed, 54 insertions(+), 31 deletions(-) diff --git a/src/dbcp/extract/eip_infrastructure.py b/src/dbcp/extract/eip_infrastructure.py index 7efb3e7d..d0b6269b 100644 --- a/src/dbcp/extract/eip_infrastructure.py +++ b/src/dbcp/extract/eip_infrastructure.py @@ -1,4 +1,10 @@ -"""Retrieve data from EIP Infrastructure spreadsheets for analysis.""" +"""Retrieve data from EIP Infrastructure spreadsheets for analysis. + +This data was updated by contacting EIP directly for the latest version, but now they +host an Excel file at oilandgaswatch.org -> Resources -> Downloads, which points to: +https://drive.google.com/drive/folders/1udtw3XeezA5Lkb8Mfc_cntNTcV4oPuKi +Note that this new data version has changed structure from the one extracted below. +""" from pathlib import Path from typing import Dict diff --git a/src/dbcp/extract/epa_avert.py b/src/dbcp/extract/epa_avert.py index cc3e176d..166aff8e 100644 --- a/src/dbcp/extract/epa_avert.py +++ b/src/dbcp/extract/epa_avert.py @@ -1,4 +1,4 @@ -"""Retrieve data from EIP Infrastructure spreadsheets for analysis.""" +"""Retrieve data from EPA AVERT avoided carbon modeling.""" from pathlib import Path import pandas as pd diff --git a/src/dbcp/extract/fips_tables.py b/src/dbcp/extract/fips_tables.py index ed89f12a..f435ef77 100644 --- a/src/dbcp/extract/fips_tables.py +++ b/src/dbcp/extract/fips_tables.py @@ -1,4 +1,4 @@ -"""Extract canonical state and county FIPS tables from the addfips library.""" +"""Extract canonical state and county FIPS tables.""" from functools import lru_cache from importlib.resources import files from typing import Dict @@ -41,10 +41,7 @@ def extract_census_tribal_land(archive_uri: str) -> pd.DataFrame: def _extract_state_fips() -> pd.DataFrame: - """Extract canonical state and county FIPS tables from census data and the addfips library. - - Args: - vintage (int, optional): which Census year to use. Defaults to FIPS_CODE_VINTAGE. + """Extract canonical state FIPS tables from the addfips library. Returns: Dict[str, pd.DataFrame]: output dictionary of dataframes @@ -56,7 +53,7 @@ def _extract_state_fips() -> pd.DataFrame: def extract_fips(census_uri: str) -> Dict[str, pd.DataFrame]: - """Extract canonical state and county FIPS tables from census data and the addfips library. + """Extract canonical FIPS tables from census data and the addfips library. Returns: Dict[str, pd.DataFrame]: output dictionary of dataframes diff --git a/src/dbcp/extract/lbnl_iso_queue.py b/src/dbcp/extract/lbnl_iso_queue.py index d894ae69..9d5b2eda 100644 --- a/src/dbcp/extract/lbnl_iso_queue.py +++ b/src/dbcp/extract/lbnl_iso_queue.py @@ -1,4 +1,4 @@ -"""Retrieve data from the 20201 LBNL ISO Queue spreadsheet for analysis.""" +"""Retrieve data from the LBNL ISO Queue spreadsheet.""" from typing import Dict import pandas as pd @@ -10,7 +10,7 @@ def extract(uri: str) -> Dict[str, pd.DataFrame]: """Read Excel file with LBNL ISO Queue dataset. Args: - uri: uri of data in GCS relatives to the root. + uri: uri of data in GCS relative to the root. Returns: dfs: dictionary of dataframe name to raw dataframe. diff --git a/src/dbcp/extract/local_opposition.py b/src/dbcp/extract/local_opposition.py index 90c67aff..446544cf 100644 --- a/src/dbcp/extract/local_opposition.py +++ b/src/dbcp/extract/local_opposition.py @@ -1,4 +1,9 @@ -"""Extraction logic for Columbia Local Opposition dataset.""" +"""Extraction logic for Columbia Local Opposition dataset. + +This dataset is a .docx file with a hierarchical structure. The hierarchy is denoted by +formatting details (paragraph level, font, etc), but is surprisingly consistent. It is +infrequently updated by a research group at Columbia University. +""" from pathlib import Path from typing import Dict, List, Optional diff --git a/src/dbcp/extract/protected_area_by_county.py b/src/dbcp/extract/protected_area_by_county.py index 9cfdb8ef..358ba0cf 100644 --- a/src/dbcp/extract/protected_area_by_county.py +++ b/src/dbcp/extract/protected_area_by_county.py @@ -1,4 +1,11 @@ -"""Extract data from USGS PAD-US intersected with TIGER county shapefiles.""" +"""Extract data from USGS PAD-US intersected with TIGER county shapefiles. + +This data is derived from the Protected Areas Database of the United States (PAD-US) and +intersected with TIGER county shapefiles. It was prototyped in a notebook but was never +moved into a standalone module. The data loaded here is created in +notebooks/23-tpb-check_federal_lands.ipynb. Ideally this data would be re-created in +a module and loaded here, with a disk cache if necessary for performance. +""" from pathlib import Path import pandas as pd diff --git a/src/dbcp/extract/rmi_energy_communities.py b/src/dbcp/extract/rmi_energy_communities.py index ad15b2d9..d4d7747b 100644 --- a/src/dbcp/extract/rmi_energy_communities.py +++ b/src/dbcp/extract/rmi_energy_communities.py @@ -1,4 +1,7 @@ -"""Extract data from RMI's energy communities analysis.""" +"""Extract data from RMI/Catalyst energy communities analysis. + +Source repo: https://github.com/catalyst-cooperative/rmi-energy-communities +""" from pathlib import Path import pandas as pd diff --git a/src/dbcp/transform/eip_infrastructure.py b/src/dbcp/transform/eip_infrastructure.py index 10897204..18be4e07 100644 --- a/src/dbcp/transform/eip_infrastructure.py +++ b/src/dbcp/transform/eip_infrastructure.py @@ -38,11 +38,11 @@ def _format_column_names(cols: Sequence[str]) -> List[str]: def _fix_erroneous_array_items(ser: pd.Series, split_on=",", regex=False) -> pd.Series: - """Split on commas, preserve only the first value, and cast to numeric. + """Split on a delimiter and preserve only the first value. Several columns in EIP data should be numeric types but a small number of erroneous - values forces them to object dtype. The erroneous pattern is for the number to simply - be duplicated as a CSV string. For example, 0.2 appears as '0.2, 0.2'. + values forces them to object dtype. The erroneous pattern is for the value to be + duplicated as a CSV string. For example, 0.2 appears as '0.2, 0.2'. Args: ser (pd.Series): values to fix @@ -120,9 +120,8 @@ def facilities_transform(raw_fac_df: pd.DataFrame) -> pd.DataFrame: "raw_wastewater_discharge_indicator", ] for col in should_be_numeric: - if not pd.api.types.is_numeric_dtype(fac[col]): - new = _fix_erroneous_array_items(fac[col]) - fac[col] = pd.to_numeric(new, errors="raise") + new = _fix_erroneous_array_items(fac[col]) + fac[col] = pd.to_numeric(new, errors="raise") fac.loc[:, "is_ccs"] = _convert_string_to_boolean(fac.loc[:, "raw_is_ccs"]) @@ -161,8 +160,8 @@ def facilities_transform(raw_fac_df: pd.DataFrame) -> pd.DataFrame: ) duplicative_columns = [ # these are raw names - # These columns are just a concatenation of the names and IDs corresponding to the ID columns - # They add no information and invite inconsistency + # These columns are just a concatenation of the names and IDs corresponding to + # the ID columns. They add no information and invite inconsistency "Company", "Project", "Associated Facilities", @@ -236,10 +235,9 @@ def projects_transform(raw_proj_df: pd.DataFrame) -> pd.DataFrame: ] for col in should_be_numeric: # these columns suffer from occasional duplicate values as CSV for some reason. - # Like "1.0, 1.0". The second number is never different. - if not pd.api.types.is_numeric_dtype(proj[col]): - new = _fix_erroneous_array_items(proj[col]) - proj[col] = pd.to_numeric(new, errors="raise") + # Like "1.0, 1.0". The second number is never different. [validate this?] + new = _fix_erroneous_array_items(proj[col]) + proj[col] = pd.to_numeric(new, errors="raise") proj.loc[:, "is_ccs"] = _convert_string_to_boolean(proj.loc[:, "raw_is_ccs"]) proj.loc[:, "is_ally_target"] = _convert_string_to_boolean( @@ -248,10 +246,17 @@ def projects_transform(raw_proj_df: pd.DataFrame) -> pd.DataFrame: # manual correction for project with 92 Billion dollar cost (lol). Googled it and # it was supposed to be 9.2 Billion - proj.loc[ - proj["name"].eq("Gron Fuels' Renewable Fuels Plant - Initial Construction"), - "cost_millions", - ] *= 0.1 + if ( + proj.loc[ + proj["name"].eq("Gron Fuels' Renewable Fuels Plant - Initial Construction"), + "cost_millions", + ] + >= 9000 # it's over 9000! + ): + proj.loc[ + proj["name"].eq("Gron Fuels' Renewable Fuels Plant - Initial Construction"), + "cost_millions", + ] *= 0.1 # manual fix. One project's facility id doesn't exist. The project is the Oil part # of the willow Project. The next project ID belongs to the gas part, and its # facility ID does exist. So I assign the oil facility ID to the gas facility ID. diff --git a/src/dbcp/transform/fips_tables.py b/src/dbcp/transform/fips_tables.py index 7dbf3918..de35319d 100644 --- a/src/dbcp/transform/fips_tables.py +++ b/src/dbcp/transform/fips_tables.py @@ -36,7 +36,7 @@ def _add_tribal_land_frac( dissolved_tribal = tribal_land.dissolve() dissolved_tribal_geometry = dissolved_tribal.geometry.iloc[0] - # Calculate intersection, convert to km + # Calculate intersection, convert m^2 to km^2 counties["tribal_land_intersection"] = ( counties.intersection(dissolved_tribal_geometry).area / 1e6 ) diff --git a/src/dbcp/transform/justice40.py b/src/dbcp/transform/justice40.py index 7a236576..2cf313b7 100644 --- a/src/dbcp/transform/justice40.py +++ b/src/dbcp/transform/justice40.py @@ -156,7 +156,7 @@ def transform(raw_j40: dict[str, pd.DataFrame]) -> dict[str, pd.DataFrame]: out_df.drop(columns="", inplace=True) out_df.loc[:, "tract_id_fips"] = _fips_int_to_string(out_df.loc[:, "tract_id_fips"]) - # Correct percents + # Correct percentage errors and convert to fractions percent_cols = list(filter(lambda col: col.endswith("_percent"), list(out_df))) for col in percent_cols: col_max = out_df[col].max() From 3307e356bfbef3a6f8c5dfef6cc41876b1c61052 Mon Sep 17 00:00:00 2001 From: Trenton Bush Date: Mon, 7 Oct 2024 15:53:40 -0700 Subject: [PATCH 02/25] bugfix pd.Series comparison --- src/dbcp/transform/eip_infrastructure.py | 30 +++++++++++++++--------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/src/dbcp/transform/eip_infrastructure.py b/src/dbcp/transform/eip_infrastructure.py index 18be4e07..b525406c 100644 --- a/src/dbcp/transform/eip_infrastructure.py +++ b/src/dbcp/transform/eip_infrastructure.py @@ -246,17 +246,13 @@ def projects_transform(raw_proj_df: pd.DataFrame) -> pd.DataFrame: # manual correction for project with 92 Billion dollar cost (lol). Googled it and # it was supposed to be 9.2 Billion - if ( - proj.loc[ - proj["name"].eq("Gron Fuels' Renewable Fuels Plant - Initial Construction"), - "cost_millions", - ] - >= 9000 # it's over 9000! - ): - proj.loc[ - proj["name"].eq("Gron Fuels' Renewable Fuels Plant - Initial Construction"), - "cost_millions", - ] *= 0.1 + to_correct = proj.loc[ + proj["name"].eq("Gron Fuels' Renewable Fuels Plant - Initial Construction"), + "cost_millions", + ] + assert len(to_correct) == 1, "Expected one project to correct." + assert to_correct.ge(9000).all(), "Expected erroneous cost over 9 billion." + to_correct *= 0.1 # manual fix. One project's facility id doesn't exist. The project is the Oil part # of the willow Project. The next project ID belongs to the gas part, and its # facility ID does exist. So I assign the oil facility ID to the gas facility ID. @@ -447,3 +443,15 @@ def transform(raw_eip_dfs: Dict[str, pd.DataFrame]) -> Dict[str, pd.DataFrame]: } return out + + +if __name__ == "__main__": + # debugging entry point + from pathlib import Path + + from dbcp.extract.eip_infrastructure import extract + + source_path = Path("/app/data/raw/2023.05.24 OGW database.xlsx") + eip_raw_dfs = extract(source_path) + eip_transformed_dfs = transform(eip_raw_dfs) + print("yay") From 5d2b3cf9701322d191a75aa9f9e4b18826b9ab60 Mon Sep 17 00:00:00 2001 From: Dazhong Xia Date: Fri, 11 Oct 2024 14:48:29 -0400 Subject: [PATCH 03/25] Remove a deleted column from docs --- docs/data-mart/counties_long_format.md | 1 - docs/data-mart/counties_wide_format.md | 1 - 2 files changed, 2 deletions(-) diff --git a/docs/data-mart/counties_long_format.md b/docs/data-mart/counties_long_format.md index f2a2dba4..e516f5cc 100644 --- a/docs/data-mart/counties_long_format.md +++ b/docs/data-mart/counties_long_format.md @@ -61,7 +61,6 @@ This table is mostly a restructured version of counties_wide_format. It provides ||`n_tracts_local_to_area_income_ratio_less_than_high_school_islan`|Number of tracts with low ratios of local to regional income and low high school graduation rates (island territories only)|Justice40|| ||`n_tracts_pm2_5_low_income`|Number of tracts with high particulate matter pollution and low income (excepting students)|Justice40|| ||`n_tracts_population_loss_low_income`|Number of tracts with high predicted climate-driven population loss and low income (excepting students)|Justice40|| -||`n_tracts_risk_management_plan_proximity_low_income`|Number of tracts with close proximity to RMP sites and low income (excepting students)|Justice40|| ||`n_tracts_superfund_proximity_low_income`|Number of tracts with close proximity to superfund sites and low income (excepting students)|Justice40|| ||`n_tracts_traffic_low_income`|Number of tracts with high traffic exposure and low income (excepting students)|Justice40|| ||`n_tracts_unemployment_and_low_high_school`|Number of tracts with high unemployment and low high school graduation rates|Justice40|| diff --git a/docs/data-mart/counties_wide_format.md b/docs/data-mart/counties_wide_format.md index 19203974..6b5841b8 100644 --- a/docs/data-mart/counties_wide_format.md +++ b/docs/data-mart/counties_wide_format.md @@ -163,7 +163,6 @@ Fossil generation aggregates include coal, oil, and gas power plants. ||`n_tracts_local_to_area_income_ratio_less_than_high_school_islan`|Number of tracts with low ratios of local to regional income and low high school graduation rates (island territories only)|Justice40|| ||`n_tracts_pm2_5_low_income`|Number of tracts with high particulate matter pollution and low income (excepting students)|Justice40|| ||`n_tracts_population_loss_low_income`|Number of tracts with high predicted climate-driven population loss and low income (excepting students)|Justice40|| -||`n_tracts_risk_management_plan_proximity_low_income`|Number of tracts with close proximity to RMP sites and low income (excepting students)|Justice40|| ||`n_tracts_superfund_proximity_low_income`|Number of tracts with close proximity to superfund sites and low income (excepting students)|Justice40|| ||`n_tracts_traffic_low_income`|Number of tracts with high traffic exposure and low income (excepting students)|Justice40|| ||`n_tracts_unemployment_and_low_high_school`|Number of tracts with high unemployment and low high school graduation rates|Justice40|| From 3f621d826044266f5f131c17a237122dc8f2df08 Mon Sep 17 00:00:00 2001 From: bendnorman Date: Sun, 10 Nov 2024 21:54:01 -0800 Subject: [PATCH 04/25] First pass at updating GS Q3 2024 --- src/dbcp/__init__.py | 1 + src/dbcp/data_mart/projects.py | 6 +++--- src/dbcp/extract/gridstatus_isoqueues.py | 15 ++++++++------- src/dbcp/transform/gridstatus.py | 15 +++++++++++---- src/dbcp/validation/tests.py | 11 +++++++---- 5 files changed, 30 insertions(+), 18 deletions(-) diff --git a/src/dbcp/__init__.py b/src/dbcp/__init__.py index 612d9bce..65aefddf 100644 --- a/src/dbcp/__init__.py +++ b/src/dbcp/__init__.py @@ -3,6 +3,7 @@ import dbcp.data_mart # noqa: F401 import dbcp.data_mart.br_election_data # noqa: F401 import dbcp.data_mart.counties # noqa: F401 +import dbcp.data_mart.county_concrete_mw # noqa: F401 import dbcp.data_mart.projects # noqa: F401 import dbcp.etl # noqa: F401 import dbcp.extract # noqa: F401 diff --git a/src/dbcp/data_mart/projects.py b/src/dbcp/data_mart/projects.py index 4b55d028..19a14a51 100644 --- a/src/dbcp/data_mart/projects.py +++ b/src/dbcp/data_mart/projects.py @@ -781,7 +781,7 @@ def create_project_change_log(long_format: pd.DataFrame) -> pd.DataFrame: f"{pct_after_current_year:.2%} of operational projects have actual_completion_date after the current year." ) # make sure pct_after_current_year is less than 0.001 of operational projects - expected_missing = 0.001 + expected_missing = 0.002 assert ( pct_after_current_year < expected_missing ), f"More than {expected_missing}% of operational projects have actual_completion_date after the current year." @@ -909,7 +909,7 @@ def validate_project_change_log( "MISO": 0.09, # A lot of operational projects prior to 2010 are missing operational dates "NYISO": 0.18, # A lot of withdrawn projects from the early 2000s are missing withdrawn and operational dates "PJM": 0.04, - "SPP": 0.31, # A lot of withdrawn projects from the early 2000s are missing withdrawn and operational dates + "SPP": 0.32, # A lot of withdrawn projects from the early 2000s are missing withdrawn and operational dates } ) @@ -964,7 +964,7 @@ def validate_iso_regions_change_log( "MISO": 0.09, # A lot of operational projects prior to 2010 are missing operational dates "NYISO": 0.20, # A lot of withdrawn projects from the early 2000s are missing withdrawn and operational dates "PJM": 0.04, - "SPP": 0.31, # A lot of withdrawn projects from the early 2000s are missing withdrawn and operational dates + "SPP": 0.32, # A lot of withdrawn projects from the early 2000s are missing withdrawn and operational dates } ) diff --git a/src/dbcp/extract/gridstatus_isoqueues.py b/src/dbcp/extract/gridstatus_isoqueues.py index 6b63106f..655b917f 100644 --- a/src/dbcp/extract/gridstatus_isoqueues.py +++ b/src/dbcp/extract/gridstatus_isoqueues.py @@ -8,6 +8,7 @@ data. The version numbers are automatically generated by Google Cloud Storage Object Versioning. """ + import logging import pandas as pd @@ -17,14 +18,14 @@ logger = logging.getLogger(__name__) ISO_QUEUE_VERSIONS: dict[str, str] = { - "miso": "1719774997006069", + "miso": "1728242350923420", "miso-pre-2017": "1709776311574737", - "caiso": "1719774997530790", - "pjm": "1719774998059470", - "ercot": "1719774998544416", - "spp": "1719774998998901", - "nyiso": "1719774999497797", - "isone": "1719774999940225", + "caiso": "1728242351254356", + "pjm": "1728242351606642", + "ercot": "1728242351929200", + "spp": "1728242352244156", + "nyiso": "1728242352584485", + "isone": "1728242352913470", } diff --git a/src/dbcp/transform/gridstatus.py b/src/dbcp/transform/gridstatus.py index bfbdc9a7..5d2c1c95 100644 --- a/src/dbcp/transform/gridstatus.py +++ b/src/dbcp/transform/gridstatus.py @@ -478,7 +478,7 @@ def _clean_resource_type( resource_locations["county_id_fips"].isin(coastal_county_id_fips.keys()) & resource_locations.resource_clean.eq("Onshore Wind") ].project_id - expected_n_coastal_wind_projects = 92 + expected_n_coastal_wind_projects = 85 assert ( len(nyiso_coastal_wind_project_project_ids) == expected_n_coastal_wind_projects ), f"Expected {expected_n_coastal_wind_projects} NYISO coastal wind projects but found {len(nyiso_coastal_wind_project_project_ids)}" @@ -622,9 +622,13 @@ def _transform_miso(post_2017: pd.DataFrame, pre_2017: pd.DataFrame) -> pd.DataF in_service_projects = iso_df[ iso_df["Post Generator Interconnection Agreement Status"].eq("In Service") ] + done_in_service_projects = in_service_projects[ + in_service_projects["queue_status"].ne("Done") + ] + expected_n_done_in_service_projects = 2 assert ( - len(in_service_projects[in_service_projects["queue_status"].ne("Done")]) <= 1 - ), "There is an unexpected number of MISO projects that are In Service but not Done." + len(done_in_service_projects) <= expected_n_done_in_service_projects + ), f"Expected {expected_n_done_in_service_projects} MISO projects that are In Service but not Done but found {len(done_in_service_projects)}." # Mark "Done" projects as "Active" because they are not necesarily operational yet. iso_df["queue_status"] = iso_df["queue_status"].map( @@ -709,6 +713,9 @@ def _transform_pjm(iso_df: pd.DataFrame) -> pd.DataFrame: } iso_df["queue_status"] = iso_df["queue_status"].map(status_map) + # There is one project that is missing a queue status. Assume it is withdrawn + iso_df.loc[iso_df.queue_id.eq("AC1-073"), "queue_status"] = "Withdrawn" + iso_df = _create_project_status_classification_from_multiple_columns( iso_df, facilities_study_status_col="Facilities Study Status", @@ -925,7 +932,7 @@ def _normalize_project_locations(iso_df: pd.DataFrame) -> pd.DataFrame: geocoded_locations[["county_id_fips", "project_id"]].duplicated(keep=False) ] assert ( - len(duplicate_locations) <= 108 + len(duplicate_locations) <= 114 ), f"Found more duplicate locations in Grid Status location table than expected:\n {duplicate_locations}" return geocoded_locations diff --git a/src/dbcp/validation/tests.py b/src/dbcp/validation/tests.py index 04c62acd..7b97838a 100644 --- a/src/dbcp/validation/tests.py +++ b/src/dbcp/validation/tests.py @@ -92,7 +92,9 @@ def test_iso_projects_sources(engine: Engine): expected_source = {"proprietary"} offshore_test = pd.read_sql( proprietary_offshore, engine, index_col="source" - ).squeeze(axis=1) # make series + ).squeeze( + axis=1 + ) # make series actual_source = set(offshore_test.index) assert ( actual_source == expected_source @@ -241,9 +243,10 @@ def test_county_wide_coverage(engine: Engine): df.shape[0] == n_counties ), "counties_wide_format does not contain all counties" notnull = df.notnull() - assert notnull.any(axis=1).sum() == 2461, ( - "counties_wide_format has unexpected county coverage:" - f" {notnull.loc[notnull.any(axis=1), 'county_id_fips']}" + n_expected_counties = 2458 + assert notnull.any(axis=1).sum() == n_expected_counties, ( + "counties_wide_format has unexpected county coverage." + f" Expected {n_expected_counties}, found {notnull.any(axis=1).sum()}" ) From 351658c63f58c84750ede681c8f4dd4e50085245 Mon Sep 17 00:00:00 2001 From: bendnorman Date: Sun, 10 Nov 2024 22:38:36 -0800 Subject: [PATCH 05/25] Convert br election data query to pandas --- src/dbcp/data_mart/br_election_data.py | 23 +++++++++++------------ src/dbcp/data_mart/counties.py | 1 + 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/dbcp/data_mart/br_election_data.py b/src/dbcp/data_mart/br_election_data.py index b95d7261..23d15563 100644 --- a/src/dbcp/data_mart/br_election_data.py +++ b/src/dbcp/data_mart/br_election_data.py @@ -1,4 +1,5 @@ """Module to create a denormalized table for the Ballot Ready Election Data.""" + from typing import Optional import pandas as pd @@ -9,22 +10,20 @@ def _create_br_election_data_mart(engine: sa.engine.Engine) -> pd.DataFrame: """Denormalize the ballot ready entities.""" - pos_county_query = """ - SELECT - cfips.county_name, - sfips.state_name, - br.* - FROM data_warehouse.br_positions_counties_assoc as br - LEFT JOIN data_warehouse.county_fips as cfips - USING (county_id_fips) - LEFT JOIN data_warehouse.state_fips as sfips - ON sfips.state_id_fips = br.state_id_fips - """ with engine.connect() as con: br_races = pd.read_sql_table("br_races", con, schema="data_warehouse") br_elections = pd.read_sql_table("br_elections", con, schema="data_warehouse") br_positions = pd.read_sql_table("br_positions", con, schema="data_warehouse") - br_positions_counties_assoc = pd.read_sql(pos_county_query, con) + br_positions_counties_assoc = pd.read_sql_table( + "br_positions_counties_assoc", con, schema="data_warehouse" + ) + county_fips = pd.read_sql_table("county_fips", con, schema="data_warehouse") + state_fips = pd.read_sql_table("state_fips", con, schema="data_warehouse") + + # Add state and county names + br_positions_counties_assoc = br_positions_counties_assoc.merge( + county_fips[["county_id_fips", "county_name"]], how="left", on="county_id_fips" + ).merge(state_fips[["state_id_fips", "state_name"]], how="left", on="state_id_fips") br_election_data = br_races.merge( br_elections, how="left", on="election_id", validate="m:1" diff --git a/src/dbcp/data_mart/counties.py b/src/dbcp/data_mart/counties.py index 95aa2fe5..6713794a 100644 --- a/src/dbcp/data_mart/counties.py +++ b/src/dbcp/data_mart/counties.py @@ -19,6 +19,7 @@ `count(distinct my_column)) group by county, resource` cannot have another `count(distinct my_column) group by county` on top of it. """ + from io import StringIO from typing import Dict, Optional From 5d6ceb46b3bd9b66809e7e464e9e10040eb3af9c Mon Sep 17 00:00:00 2001 From: bendnorman Date: Sun, 10 Nov 2024 22:50:32 -0800 Subject: [PATCH 06/25] Convert a couple other sql queries to pandas --- src/dbcp/data_mart/counties.py | 19 ++++++++-------- src/dbcp/data_mart/county_concrete_mw.py | 29 +++++++++++++----------- 2 files changed, 25 insertions(+), 23 deletions(-) diff --git a/src/dbcp/data_mart/counties.py b/src/dbcp/data_mart/counties.py index 6713794a..656cef0b 100644 --- a/src/dbcp/data_mart/counties.py +++ b/src/dbcp/data_mart/counties.py @@ -967,16 +967,15 @@ def _add_avoided_co2e(iso: pd.DataFrame, engine: sa.engine.Engine) -> pd.DataFra def _get_avoided_emissions_by_county_resource(engine: sa.engine.Engine) -> pd.DataFrame: - query = """ - select - avert_region, - resource_type, - co2e_tonnes_per_year_per_mw - from data_warehouse.avert_avoided_emissions_factors - -- drop distributed_pv - WHERE resource_type in ('onshore_wind', 'offshore_wind', 'utility_pv') - """ - emiss_fac = pd.read_sql(query, engine) + emiss_fac = pd.read_sql_table( + "avert_avoided_emissions_factors", engine, schema="data_warehouse" + ) + emiss_fac = emiss_fac[ + emiss_fac.resource_type.isin(["onshore_wind", "offshore_wind", "utility_pv"]) + ] + emiss_fac = emiss_fac[ + ["avert_region", "resource_type", "co2e_tonnes_per_year_per_mw"] + ] crosswalk = pd.read_sql_table( "avert_county_region_assoc", engine, schema="data_warehouse" ) diff --git a/src/dbcp/data_mart/county_concrete_mw.py b/src/dbcp/data_mart/county_concrete_mw.py index 8650fe58..e29b65c0 100644 --- a/src/dbcp/data_mart/county_concrete_mw.py +++ b/src/dbcp/data_mart/county_concrete_mw.py @@ -1,4 +1,5 @@ """Create county-level aggregates of proposed projects from EIA860m and ACP data.""" + from typing import Optional import pandas as pd @@ -57,19 +58,21 @@ def _get_concrete_aggs(engine: sa.engine.Engine) -> pd.DataFrame: inplace=True, ) - acp_query = """ - SELECT - plant_id_eia, - NULL as generator_id, - capacity_mw, - lower(resource) AS resource_clean, - status, - county_id_fips, - iso_region - from private_data_warehouse.acp_projects as acp - where status in ('Advanced Development', 'Under Construction') - """ - acp = pd.read_sql(acp_query, engine) + acp = pd.read_sql_table("acp_projects", engine, schema="private_data_warehouse") + acp = acp[ + [ + "plant_id_eia", + "capacity_mw", + "resource", + "status", + "county_id_fips", + "iso_region", + ] + ] + acp["resource_clean"] = acp["resource"].str.lower() + acp["generator_id"] = pd.NA + acp = acp[acp.status.isin(["Advanced Development", "Under Construction"])] + # remove overlapping projects from ACP (prioritize 860m) is_overlap = acp["plant_id_eia"].isin(eia860m["plant_id_eia"]) acp = acp.loc[~is_overlap, :] From 7eee047da0bc87737bc8c25b4e972345b96ca0ec Mon Sep 17 00:00:00 2001 From: bendnorman Date: Sun, 10 Nov 2024 23:00:40 -0800 Subject: [PATCH 07/25] Convert justice mart from sql to pandas --- src/dbcp/data_mart/counties.py | 106 +++++++++++++++++++++++---------- 1 file changed, 74 insertions(+), 32 deletions(-) diff --git a/src/dbcp/data_mart/counties.py b/src/dbcp/data_mart/counties.py index 656cef0b..e921707b 100644 --- a/src/dbcp/data_mart/counties.py +++ b/src/dbcp/data_mart/counties.py @@ -135,38 +135,80 @@ def _create_dbcp_ej_index(j40_df: pd.DataFrame) -> pd.Series: def _get_env_justice_df(engine: sa.engine.Engine) -> pd.DataFrame: """Create county-level aggregates of Justice40 tracts.""" - query = """ - SELECT - SUBSTRING("tract_id_fips", 1, 5) as county_id_fips, - COUNT("tract_id_fips") as total_tracts, - SUM("is_disadvantaged"::INTEGER) as n_distinct_qualifying_tracts, - SUM("expected_agriculture_loss_rate_is_low_income"::INTEGER) as n_tracts_agriculture_loss_low_income, - SUM("expected_building_loss_rate_is_low_income"::INTEGER) as n_tracts_building_loss_low_income, - SUM("expected_population_loss_rate_is_low_income"::INTEGER) as n_tracts_population_loss_low_income, - SUM("diesel_particulates_is_low_income"::INTEGER) as n_tracts_diesel_particulates_low_income, - SUM("energy_burden_is_low_income"::INTEGER) as n_tracts_energy_burden_low_income, - SUM("pm2_5_is_low_income"::INTEGER) as n_tracts_pm2_5_low_income, - SUM("traffic_proximity_is_low_income"::INTEGER) as n_tracts_traffic_low_income, - SUM("lead_paint_and_median_house_value_is_low_income"::INTEGER) as n_tracts_lead_paint_and_median_home_price_low_income, - SUM("housing_burden_is_low_income"::INTEGER) as n_tracts_housing_burden_low_income, - SUM("proximity_to_superfund_sites_is_low_income"::INTEGER) as n_tracts_superfund_proximity_low_income, - SUM("wastewater_discharge_is_low_income"::INTEGER) as n_tracts_wastewater_low_income, - SUM("asthma_is_low_income"::INTEGER) as n_tracts_asthma_low_income, - SUM("heart_disease_is_low_income"::INTEGER) as n_tracts_heart_disease_low_income, - SUM("diabetes_is_low_income"::INTEGER) as n_tracts_diabetes_low_income, - SUM("low_median_household_income_and_low_hs_attainment"::INTEGER) as n_tracts_local_to_area_income_ratio_and_low_high_school, - SUM("households_in_linguistic_isolation_and_low_hs_attainment"::INTEGER) as n_tracts_linguistic_isolation_and_low_high_school, - SUM("households_below_federal_poverty_level_low_hs_attainment"::INTEGER) as n_tracts_below_poverty_and_low_high_school, - SUM("unemployment_and_low_hs_attainment"::INTEGER) as n_tracts_unemployment_and_low_high_school, - SUM("proximity_to_hazardous_waste_facilities_is_low_income"::INTEGER) as n_tracts_hazardous_waste_proximity_low_income, - SUM("unemployment_and_low_hs_edu_islands"::INTEGER) as n_tracts_unemployment_less_than_high_school_islands, - SUM("low_median_household_income_and_low_hs_edu_islands"::INTEGER) as n_tracts_local_to_area_income_ratio_less_than_high_school_islands, - SUM("households_below_federal_poverty_level_low_hs_edu_islands"::INTEGER) as n_tracts_below_poverty_line_less_than_high_school_islands, - SUM("low_life_expectancy_is_low_income"::INTEGER) as n_tracts_life_expectancy_low_income - FROM "data_warehouse"."justice40_tracts" - GROUP BY 1; - """ - df = pd.read_sql(query, engine) + df = pd.read_sql_table("justice40_tracts", engine, schema="data_warehouse") + df["county_id_fips"] = df["tract_id_fips"].str.slice(0, 5) + df.groupby("county_id_fips").agg( + total_tracts=("tract_id_fips", "count"), + n_distinct_qualifying_tracts=("is_disadvantaged", "sum"), + n_tracts_agriculture_loss_low_income=( + "expected_agriculture_loss_rate_is_low_income", + "sum", + ), + n_tracts_building_loss_low_income=( + "expected_building_loss_rate_is_low_income", + "sum", + ), + n_tracts_population_loss_low_income=( + "expected_population_loss_rate_is_low_income", + "sum", + ), + n_tracts_diesel_particulates_low_income=( + "diesel_particulates_is_low_income", + "sum", + ), + n_tracts_energy_burden_low_income=("energy_burden_is_low_income", "sum"), + n_tracts_pm2_5_low_income=("pm2_5_is_low_income", "sum"), + n_tracts_traffic_low_income=("traffic_proximity_is_low_income", "sum"), + n_tracts_lead_paint_and_median_home_price_low_income=( + "lead_paint_and_median_house_value_is_low_income", + "sum", + ), + n_tracts_housing_burden_low_income=("housing_burden_is_low_income", "sum"), + n_tracts_superfund_proximity_low_income=( + "proximity_to_superfund_sites_is_low_income", + "sum", + ), + n_tracts_wastewater_low_income=("wastewater_discharge_is_low_income", "sum"), + n_tracts_asthma_low_income=("asthma_is_low_income", "sum"), + n_tracts_heart_disease_low_income=("heart_disease_is_low_income", "sum"), + n_tracts_diabetes_low_income=("diabetes_is_low_income", "sum"), + n_tracts_local_to_area_income_ratio_and_low_high_school=( + "low_median_household_income_and_low_hs_attainment", + "sum", + ), + n_tracts_linguistic_isolation_and_low_high_school=( + "households_in_linguistic_isolation_and_low_hs_attainment", + "sum", + ), + n_tracts_below_poverty_and_low_high_school=( + "households_below_federal_poverty_level_low_hs_attainment", + "sum", + ), + n_tracts_unemployment_and_low_high_school=( + "unemployment_and_low_hs_attainment", + "sum", + ), + n_tracts_hazardous_waste_proximity_low_income=( + "proximity_to_hazardous_waste_facilities_is_low_income", + "sum", + ), + n_tracts_unemployment_less_than_high_school_islands=( + "unemployment_and_low_hs_edu_islands", + "sum", + ), + n_tracts_local_to_area_income_ratio_less_than_high_school_islands=( + "low_median_household_income_and_low_hs_edu_islands", + "sum", + ), + n_tracts_below_poverty_line_less_than_high_school_islands=( + "households_below_federal_poverty_level_low_hs_edu_islands", + "sum", + ), + n_tracts_life_expectancy_low_income=( + "low_life_expectancy_is_low_income", + "sum", + ), + ) df["justice40_dbcp_index"] = _create_dbcp_ej_index(df) return df From 2b4b5a7f67980c5f01e1193679761cd206d231d3 Mon Sep 17 00:00:00 2001 From: bendnorman Date: Sun, 10 Nov 2024 23:10:16 -0800 Subject: [PATCH 08/25] Convert a couple more from sql to pandas --- src/dbcp/data_mart/counties.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/dbcp/data_mart/counties.py b/src/dbcp/data_mart/counties.py index e921707b..3890cad4 100644 --- a/src/dbcp/data_mart/counties.py +++ b/src/dbcp/data_mart/counties.py @@ -137,7 +137,7 @@ def _get_env_justice_df(engine: sa.engine.Engine) -> pd.DataFrame: """Create county-level aggregates of Justice40 tracts.""" df = pd.read_sql_table("justice40_tracts", engine, schema="data_warehouse") df["county_id_fips"] = df["tract_id_fips"].str.slice(0, 5) - df.groupby("county_id_fips").agg( + df = df.groupby("county_id_fips").agg( total_tracts=("tract_id_fips", "count"), n_distinct_qualifying_tracts=("is_disadvantaged", "sum"), n_tracts_agriculture_loss_low_income=( @@ -196,7 +196,7 @@ def _get_env_justice_df(engine: sa.engine.Engine) -> pd.DataFrame: "unemployment_and_low_hs_edu_islands", "sum", ), - n_tracts_local_to_area_income_ratio_less_than_high_school_islands=( + n_tracts_local_to_area_income_ratio_less_than_high_school_islan=( "low_median_household_income_and_low_hs_edu_islands", "sum", ), From be2ae95b8a32deb4fba0895df8bb381b25dce87a Mon Sep 17 00:00:00 2001 From: bendnorman Date: Sun, 10 Nov 2024 23:30:33 -0800 Subject: [PATCH 09/25] Remove PUDL dependency --- requirements.txt | 2 +- src/dbcp/constants.py | 100 +++++++++++++++++++- src/dbcp/helpers.py | 52 ++++++++++ src/dbcp/transform/ballot_ready.py | 3 +- src/dbcp/transform/helpers.py | 7 +- src/dbcp/transform/lbnl_iso_queue.py | 5 +- src/dbcp/transform/local_opposition.py | 7 +- src/dbcp/transform/ncsl_state_permitting.py | 5 +- src/dbcp/transform/pudl_data.py | 7 +- 9 files changed, 172 insertions(+), 16 deletions(-) diff --git a/requirements.txt b/requirements.txt index ce107052..6d2af04d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,4 @@ -catalystcoop.pudl==2022.11.30 +addfips>=0.4 fiona~=1.9.4 psycopg2~=2.9.3 pytest~=6.2.5 diff --git a/src/dbcp/constants.py b/src/dbcp/constants.py index e81978d8..3e3af4e6 100644 --- a/src/dbcp/constants.py +++ b/src/dbcp/constants.py @@ -1,7 +1,105 @@ """DBCP constants.""" + +from io import StringIO from pathlib import Path -from pudl.metadata.enums import POLITICAL_SUBDIVISIONS +import pandas as pd + +POLITICAL_SUBDIVISIONS: pd.DataFrame = pd.read_csv( + StringIO( + """ +subdivision_code,subdivision_name,country_code,country_name,subdivision_type,timezone_approx,state_id_fips,division_name_us_census,division_code_us_census,region_name_us_census,is_epacems_state +AB,Alberta,CAN,Canada,province,America/Edmonton,,,,,0 +AK,Alaska,USA,United States of America,state,America/Anchorage,"02",Pacific Noncontiguous,PCN,West,1 +AL,Alabama,USA,United States of America,state,America/Chicago,"01",East South Central,ESC,South,1 +AR,Arkansas,USA,United States of America,state,America/Chicago,"05",West South Central,WSC,South,1 +AS,American Samoa,USA,United States of America,outlying_area,Pacific/Pago_Pago,"60",,,,0 +AZ,Arizona,USA,United States of America,state,America/Phoenix,"04",Mountain,MTN,West,1 +BC,British Columbia,CAN,Canada,province,America/Vancouver,,,,,0 +CA,California,USA,United States of America,state,America/Los_Angeles,"06",Pacific Contiguous,PCC,West,1 +CO,Colorado,USA,United States of America,state,America/Denver,"08",Mountain,MTN,West,1 +CT,Connecticut,USA,United States of America,state,America/New_York,"09",New England,NEW,Northeast,1 +DC,District of Columbia,USA,United States of America,district,America/New_York,"11",South Atlantic,SAT,South,1 +DE,Delaware,USA,United States of America,state,America/New_York,"10",South Atlantic,SAT,South,1 +FL,Florida,USA,United States of America,state,America/New_York,"12",South Atlantic,SAT,South,1 +GA,Georgia,USA,United States of America,state,America/New_York,"13",South Atlantic,SAT,South,1 +GU,Guam,USA,United States of America,outlying_area,Pacific/Guam,"66",,,,0 +HI,Hawaii,USA,United States of America,state,Pacific/Honolulu,"15",Pacific Noncontiguous,PCN,West,1 +IA,Iowa,USA,United States of America,state,America/Chicago,"19",West North Central,WNC,Midwest,1 +ID,Idaho,USA,United States of America,state,America/Denver,"16",Mountain,MTN,West,1 +IL,Illinois,USA,United States of America,state,America/Chicago,"17",East North Central,ENC,Midwest,1 +IN,Indiana,USA,United States of America,state,America/New_York,"18",East North Central,ENC,Midwest,1 +KS,Kansas,USA,United States of America,state,America/Chicago,"20",West North Central,WNC,Midwest,1 +KY,Kentucky,USA,United States of America,state,America/New_York,"21",East South Central,ESC,South,1 +LA,Louisiana,USA,United States of America,state,America/Chicago,"22",West South Central,WSC,South,1 +MA,Massachusetts,USA,United States of America,state,America/New_York,"25",New England,NEW,Northeast,1 +MB,Manitoba,CAN,Canada,province,America/Winnipeg,,,,,0 +MD,Maryland,USA,United States of America,state,America/New_York,"24",South Atlantic,SAT,South,1 +ME,Maine,USA,United States of America,state,America/New_York,"23",New England,NEW,Northeast,1 +MI,Michigan,USA,United States of America,state,America/Detroit,"26",East North Central,ENC,Midwest,1 +MN,Minnesota,USA,United States of America,state,America/Chicago,"27",West North Central,WNC,Midwest,1 +MO,Missouri,USA,United States of America,state,America/Chicago,"29",West North Central,WNC,Midwest,1 +MP,Northern Mariana Islands,USA,United States of America,outlying_area,Pacific/Guam,"69",,,,0 +MS,Mississippi,USA,United States of America,state,America/Chicago,"28",East South Central,ESC,South,1 +MT,Montana,USA,United States of America,state,America/Denver,"30",Mountain,MTN,West,1 +NB,New Brunswick,CAN,Canada,province,America/Moncton,,,,,0 +NC,North Carolina,USA,United States of America,state,America/New_York,"37",South Atlantic,SAT,South,1 +ND,North Dakota,USA,United States of America,state,America/Chicago,"38",West North Central,WNC,Midwest,1 +NE,Nebraska,USA,United States of America,state,America/Chicago,"31",West North Central,WNC,Midwest,1 +NH,New Hampshire,USA,United States of America,state,America/New_York,"33",New England,NEW,Northeast,1 +NJ,New Jersey,USA,United States of America,state,America/New_York,"34",Middle Atlantic,MAT,Northeast,1 +NL,Newfoundland and Labrador,CAN,Canada,province,America/St_Johns,,,,,0 +NM,New Mexico,USA,United States of America,state,America/Denver,"35",Mountain,MTN,West,1 +NS,Nova Scotia,CAN,Canada,province,America/Halifax,,,,,0 +NT,Northwest Territories,CAN,Canada,territory,America/Yellowknife,,,,,0 +NU,Nunavut,CAN,Canada,territory,America/Iqaluit,,,,,0 +NV,Nevada,USA,United States of America,state,America/Los_Angeles,"32",Mountain,MTN,West,1 +NY,New York,USA,United States of America,state,America/New_York,"36",Middle Atlantic,MAT,Northeast,1 +OH,Ohio,USA,United States of America,state,America/New_York,"39",East North Central,ENC,Midwest,1 +OK,Oklahoma,USA,United States of America,state,America/Chicago,"40",West South Central,WSC,South,1 +ON,Ontario,CAN,Canada,province,America/Toronto,,,,,0 +OR,Oregon,USA,United States of America,state,America/Los_Angeles,"41",Pacific Contiguous,PCC,West,1 +PA,Pennsylvania,USA,United States of America,state,America/New_York,"42",Middle Atlantic,MAT,Northeast,1 +PE,Prince Edwards Island,CAN,Canada,province,America/Halifax,,,,,0 +PR,Puerto Rico,USA,United States of America,outlying_area,America/Puerto_Rico,"72",,,,1 +QC,Quebec,CAN,Canada,province,America/Montreal,,,,,0 +RI,Rhode Island,USA,United States of America,state,America/New_York,"44",New England,NEW,Northeast,1 +SC,South Carolina,USA,United States of America,state,America/New_York,"45",South Atlantic,SAT,South,1 +SD,South Dakota,USA,United States of America,state,America/Chicago,"46",West North Central,WNC,Midwest,1 +SK,Saskatchewan,CAN,Canada,province,America/Regina,,,,,0 +TN,Tennessee,USA,United States of America,state,America/Chicago,"47",East South Central,ESC,South,1 +TX,Texas,USA,United States of America,state,America/Chicago,"48",West South Central,WSC,South,1 +UT,Utah,USA,United States of America,state,America/Denver,"49",Mountain,MTN,West,1 +VA,Virginia,USA,United States of America,state,America/New_York,"51",South Atlantic,SAT,South,1 +VI,Virgin Islands,USA,United States of America,outlying_area,America/Port_of_Spain,"78",,,,0 +VT,Vermont,USA,United States of America,state,America/New_York,"50",New England,NEW,Northeast,1 +WA,Washington,USA,United States of America,state,America/Los_Angeles,"53",Pacific Contiguous,PCC,West,1 +WI,Wisconsin,USA,United States of America,state,America/Chicago,"55",East North Central,ENC,Midwest,1 +WV,West Virginia,USA,United States of America,state,America/New_York,"54",South Atlantic,SAT,South,1 +WY,Wyoming,USA,United States of America,state,America/Denver,"56",Mountain,MTN,West,1 +YT,Yukon Territory,CAN,Canada,territory,America/Whitehorse,,,,,0 + """ + ), + dtype={ + "subdivision_code": "string", + "subdivision_name": "string", + "country_code": "string", + "country_name": "string", + "subdivision_type": "string", + "timezone": "string", + "state_id_fips": "string", + "division_name_us_census": "string", + "division_code_us_census": "string", + "region_name_us_census": "string", + "is_epacems_state": bool, + }, +) +"""Static attributes of sub-national political jurisdictions. + +Note AK and PR have incomplete EPA CEMS data, and so are excluded from is_epacems_state: +See +https://github.com/catalyst-cooperative/pudl/issues/1264 +""" FIPS_CODE_VINTAGE = 2020 diff --git a/src/dbcp/helpers.py b/src/dbcp/helpers.py index f1fdfafc..bf19053e 100644 --- a/src/dbcp/helpers.py +++ b/src/dbcp/helpers.py @@ -6,6 +6,7 @@ from io import StringIO from pathlib import Path +import addfips import fsspec import google.auth import pandas as pd @@ -255,3 +256,54 @@ def trim_columns_length(df: pd.DataFrame, length_limit: int = 63) -> pd.DataFram """Trim column length of a pandas dataframe to satisfy postgres column length limit.""" df.columns = [col[:length_limit] for col in df.columns] return df + + +def add_fips_ids( + df: pd.DataFrame, + state_col: str = "state", + county_col: str = "county", + vintage: int = 2015, +) -> pd.DataFrame: + """Add State and County FIPS IDs to a dataframe. + + To just add State FIPS IDs, make county_col = None. + """ + # force the columns to be the nullable string types so we have a consistent + # null value to filter out before feeding to addfips + df = df.astype({state_col: pd.StringDtype()}) + if county_col: + df = df.astype({county_col: pd.StringDtype()}) + af = addfips.AddFIPS(vintage=vintage) + # Lookup the state and county FIPS IDs and add them to the dataframe: + df["state_id_fips"] = df.apply( + lambda x: ( + af.get_state_fips(state=x[state_col]) if pd.notnull(x[state_col]) else pd.NA + ), + axis=1, + ) + + # force the code columns to be nullable strings - the leading zeros are + # important + df = df.astype({"state_id_fips": pd.StringDtype()}) + + logger.info( + f"Assigned state FIPS codes for " + f"{len(df[df.state_id_fips.notnull()])/len(df):.2%} of records." + ) + if county_col: + df["county_id_fips"] = df.apply( + lambda x: ( + af.get_county_fips(state=x[state_col], county=x[county_col]) + if pd.notnull(x[county_col]) and pd.notnull(x[state_col]) + else pd.NA + ), + axis=1, + ) + # force the code columns to be nullable strings - the leading zeros are + # important + df = df.astype({"county_id_fips": pd.StringDtype()}) + logger.info( + f"Assigned county FIPS codes for " + f"{len(df[df.county_id_fips.notnull()])/len(df):.2%} of records." + ) + return df diff --git a/src/dbcp/transform/ballot_ready.py b/src/dbcp/transform/ballot_ready.py index a774b3f0..8ee3ac13 100644 --- a/src/dbcp/transform/ballot_ready.py +++ b/src/dbcp/transform/ballot_ready.py @@ -1,9 +1,10 @@ """Module for cleaning Ballot Ready data.""" + import logging import pandas as pd -from pudl.helpers import add_fips_ids +from dbcp.helpers import add_fips_ids DATETIME_COLUMNS = ["race_created_at", "race_updated_at", "election_day"] diff --git a/src/dbcp/transform/helpers.py b/src/dbcp/transform/helpers.py index 26c53b38..d9c7bdb9 100644 --- a/src/dbcp/transform/helpers.py +++ b/src/dbcp/transform/helpers.py @@ -1,4 +1,5 @@ """Common transform operations.""" + from pathlib import Path from typing import Any, Dict, List, Optional, Sequence @@ -6,8 +7,8 @@ from joblib import Memory from dbcp.constants import FIPS_CODE_VINTAGE +from dbcp.helpers import add_fips_ids from dbcp.transform.geocoding import GoogleGeocoder -from pudl.helpers import add_fips_ids as _add_fips_ids UNIX_EPOCH_ORIGIN = pd.Timestamp("01/01/1970") # Excel parser is simplified and will be one day off for dates < 1900/03/01 @@ -319,7 +320,7 @@ def add_county_fips_with_backup_geocoding( ) # copy # first try a simple FIPS lookup and split by valid/invalid fips codes # The only purpose of this step is to save API calls on the easy ones (most of them) - with_fips = _add_fips_ids( + with_fips = add_fips_ids( filled_state_locality, state_col=state_col, county_col=locality_col, @@ -350,7 +351,7 @@ def add_county_fips_with_backup_geocoding( ) nan_fips = pd.concat([nan_fips, geocoded], axis=1) # add fips using geocoded names - filled_fips = _add_fips_ids( + filled_fips = add_fips_ids( nan_fips, state_col=state_col, county_col="geocoded_containing_county", diff --git a/src/dbcp/transform/lbnl_iso_queue.py b/src/dbcp/transform/lbnl_iso_queue.py index b694b168..15704a4c 100644 --- a/src/dbcp/transform/lbnl_iso_queue.py +++ b/src/dbcp/transform/lbnl_iso_queue.py @@ -1,16 +1,17 @@ """Functions to transform LBNL ISO queue tables.""" + import logging from typing import Callable, Dict, List, Sequence import numpy as np import pandas as pd +from dbcp.helpers import add_fips_ids from dbcp.transform.helpers import ( add_county_fips_with_backup_geocoding, normalize_multicolumns_to_rows, parse_dates, ) -from pudl.helpers import add_fips_ids as _add_fips_ids logger = logging.getLogger(__name__) @@ -526,7 +527,7 @@ def _fix_independent_city_fips(location_df: pd.DataFrame) -> pd.DataFrame: .str.lower() .str.replace("^city of (.+)", lambda x: x.group(1) + " city", regex=True) ) - nan_fips = _add_fips_ids( + nan_fips = add_fips_ids( nan_fips, state_col="raw_state_name", county_col="raw_county_name" ) diff --git a/src/dbcp/transform/local_opposition.py b/src/dbcp/transform/local_opposition.py index a8f982f6..7092b253 100644 --- a/src/dbcp/transform/local_opposition.py +++ b/src/dbcp/transform/local_opposition.py @@ -1,11 +1,12 @@ """Transform functions for local opposition data.""" + from typing import Dict import pandas as pd from dbcp.constants import FIPS_CODE_VINTAGE +from dbcp.helpers import add_fips_ids from dbcp.transform.helpers import add_county_fips_with_backup_geocoding -from pudl.helpers import add_fips_ids as _add_fips_ids def _extract_years(ser: pd.Series) -> pd.Series: @@ -51,7 +52,7 @@ def _transform_state_policy(state_policy_df: pd.DataFrame) -> pd.DataFrame: Returns: pd.DataFrame: dataframe of state policies with additional columns """ - state = _add_fips_ids( + state = add_fips_ids( state_policy_df, county_col="policy", vintage=FIPS_CODE_VINTAGE ).drop(columns="county_id_fips") year_summaries = _extract_years(state.loc[:, "policy"]) @@ -128,7 +129,7 @@ def _transform_contested_projects(project_df: pd.DataFrame) -> pd.DataFrame: pd.DataFrame: dataframe of contested projects with additional columns """ # this should really use geocoding, but we don't use this data so I didn't bother. - proj = _add_fips_ids(project_df, county_col="description").drop( + proj = add_fips_ids(project_df, county_col="description").drop( columns="county_id_fips" ) year_summaries = _extract_years(proj.loc[:, "description"]) diff --git a/src/dbcp/transform/ncsl_state_permitting.py b/src/dbcp/transform/ncsl_state_permitting.py index cf294ba4..d8404209 100644 --- a/src/dbcp/transform/ncsl_state_permitting.py +++ b/src/dbcp/transform/ncsl_state_permitting.py @@ -1,11 +1,12 @@ """Tranform functions for NCSL state permitting.""" + from typing import Dict import numpy as np import pandas as pd from dbcp.constants import US_STATES_TERRITORIES -from pudl.helpers import add_fips_ids as _add_fips_ids +from dbcp.helpers import add_fips_ids def transform(raw_df: Dict[str, pd.DataFrame]) -> Dict[str, pd.DataFrame]: @@ -38,7 +39,7 @@ def transform(raw_df: Dict[str, pd.DataFrame]) -> Dict[str, pd.DataFrame]: "link": pd.StringDtype(), } transform_df = transform_df.astype(dtypes, copy=False) - transform_df = _add_fips_ids(transform_df, county_col="description").drop( + transform_df = add_fips_ids(transform_df, county_col="description").drop( columns="county_id_fips" ) transform_df.rename(columns={"state": "raw_state_name"}, inplace=True) diff --git a/src/dbcp/transform/pudl_data.py b/src/dbcp/transform/pudl_data.py index d01e4cfa..3180eeba 100644 --- a/src/dbcp/transform/pudl_data.py +++ b/src/dbcp/transform/pudl_data.py @@ -1,9 +1,10 @@ """Transform PUDL tables.""" + import pandas as pd from dbcp.constants import FIPS_CODE_VINTAGE +from dbcp.helpers import add_fips_ids from dbcp.transform.helpers import bedford_addfips_fix -from pudl.helpers import add_fips_ids as _add_fips_ids def _transform_pudl_generators(pudl_generators) -> pd.DataFrame: @@ -22,7 +23,7 @@ def _transform_pudl_generators(pudl_generators) -> pd.DataFrame: filled_location = pudl_generators.loc[:, ["state", "county"]].fillna( "" ) # copy; don't want to fill actual table - fips = _add_fips_ids(filled_location, vintage=FIPS_CODE_VINTAGE) + fips = add_fips_ids(filled_location, vintage=FIPS_CODE_VINTAGE) pudl_generators = pd.concat( [pudl_generators, fips[["state_id_fips", "county_id_fips"]]], axis=1, copy=False ) @@ -55,7 +56,7 @@ def _transform_pudl_eia860m_changelog( "" ) # copy; don't want to fill actual table - fips = _add_fips_ids(filled_location, vintage=FIPS_CODE_VINTAGE) + fips = add_fips_ids(filled_location, vintage=FIPS_CODE_VINTAGE) pudl_eia860m_changelog = pd.concat( [pudl_eia860m_changelog, fips[["state_id_fips", "county_id_fips"]]], axis=1, From ac0c2708ea66bb9c316b1d434cb8f8bd87a0d0f6 Mon Sep 17 00:00:00 2001 From: bendnorman Date: Mon, 11 Nov 2024 00:06:57 -0800 Subject: [PATCH 10/25] Move some long inline sql queries to sql files --- src/dbcp/data_mart/co2_dashboard.py | 106 +------ src/dbcp/data_mart/counties.py | 112 +------- .../fossil_infrastructure_projects.py | 187 +------------ src/dbcp/data_mart/helpers.py | 8 + src/dbcp/data_mart/projects.py | 263 +----------------- .../sql_queries/get_eia860m_current.sql | 71 +++++ .../get_energy_community_qualification.sql | 15 + .../get_existing_plant_attributes.sql | 44 +++ .../sql_queries/get_gridstatus_projects.sql | 63 +++++ .../sql_queries/get_lbnl_projects.sql | 65 +++++ .../get_offshore_wind_extra_cols.sql | 42 +++ .../sql_queries/get_proposed_fossil_infra.sql | 59 ++++ .../get_proposed_fossil_plants.sql | 38 +++ .../get_proposed_infra_projects.sql | 182 ++++++++++++ .../get_proprietary_proposed_offshore.sql | 51 ++++ 15 files changed, 654 insertions(+), 652 deletions(-) create mode 100644 src/dbcp/data_mart/sql_queries/get_eia860m_current.sql create mode 100644 src/dbcp/data_mart/sql_queries/get_energy_community_qualification.sql create mode 100644 src/dbcp/data_mart/sql_queries/get_existing_plant_attributes.sql create mode 100644 src/dbcp/data_mart/sql_queries/get_gridstatus_projects.sql create mode 100644 src/dbcp/data_mart/sql_queries/get_lbnl_projects.sql create mode 100644 src/dbcp/data_mart/sql_queries/get_offshore_wind_extra_cols.sql create mode 100644 src/dbcp/data_mart/sql_queries/get_proposed_fossil_infra.sql create mode 100644 src/dbcp/data_mart/sql_queries/get_proposed_fossil_plants.sql create mode 100644 src/dbcp/data_mart/sql_queries/get_proposed_infra_projects.sql create mode 100644 src/dbcp/data_mart/sql_queries/get_proprietary_proposed_offshore.sql diff --git a/src/dbcp/data_mart/co2_dashboard.py b/src/dbcp/data_mart/co2_dashboard.py index 6c4db4f1..cf31874b 100644 --- a/src/dbcp/data_mart/co2_dashboard.py +++ b/src/dbcp/data_mart/co2_dashboard.py @@ -3,13 +3,14 @@ The table is at the county level and contains data from. """ + from typing import Optional import pandas as pd import sqlalchemy as sa from dbcp.constants import PUDL_LATEST_YEAR -from dbcp.data_mart.helpers import _get_county_fips_df, _get_state_fips_df +from dbcp.data_mart.helpers import _get_county_fips_df, _get_state_fips_df, get_query from dbcp.helpers import get_pudl_resource, get_sql_engine from dbcp.transform.helpers import ( add_county_fips_with_backup_geocoding, @@ -234,46 +235,7 @@ def _get_existing_fossil_plants( def _get_proposed_fossil_plants(engine: sa.engine.Engine) -> pd.DataFrame: # see last SELECT statement for output columns - query = """ - WITH - active_loc as ( - select - proj.project_id, - loc.county_id_fips - from data_warehouse.iso_projects as proj - left join data_warehouse.iso_locations as loc - on loc.project_id = proj.project_id - where proj.queue_status = 'active' - ), - projects as ( - select - loc.project_id, - loc.county_id_fips, - res.capacity_mw, - res.resource_clean as resource - from active_loc as loc - left join data_warehouse.iso_resource_capacity as res - on res.project_id = loc.project_id - where res.capacity_mw is not NULL - and res.resource_clean in ('Natural Gas', 'Coal', 'Oil') - ), - w_county_names as ( - select - cfip.county_name as county, - cfip.state_id_fips, - proj.* - from projects as proj - left join data_warehouse.county_fips as cfip - on proj.county_id_fips = cfip.county_id_fips - ) - SELECT - sfip.state_name as state, - proj.* - from w_county_names as proj - left join data_warehouse.state_fips as sfip - on proj.state_id_fips = sfip.state_id_fips - ; - """ + query = get_query("get_proposed_fossil_plants.sql") df = pd.read_sql(query, engine) _estimate_proposed_power_co2e(df) df.rename(columns={"project_id": "id"}, inplace=True) @@ -358,67 +320,7 @@ def _estimate_proposed_power_co2e( def _get_proposed_fossil_infra(engine: sa.engine.Engine) -> pd.DataFrame: - query = """ - WITH - projects as ( - SELECT - project_id, - -- First multiplier below is unit conversion - -- The second is 15 percent haircut to account for realistic utilization, as per design doc. - greenhouse_gases_co2e_tpy * 0.907185 * 0.85 as co2e_tonnes_per_year - FROM data_warehouse.eip_projects - WHERE operating_status not in ('Operating', 'Under construction', 'Canceled') - ), - facilities as ( - SELECT - facility_id, - county_id_fips, - state_id_fips - FROM data_warehouse.eip_facilities - ), - association as ( - -- this query simplifies the m:m relationship - -- by taking only the first result, making it m:1. - -- Only 5 rows are dropped. - select DISTINCT ON (project_id) - project_id, - facility_id - from data_warehouse.eip_facility_project_association - order by 1, 2 DESC - ), - proj_agg_to_facility as ( - SELECT - ass.facility_id, - sum(co2e_tonnes_per_year) as co2e_tonnes_per_year - FROM projects as proj - LEFT JOIN association as ass - ON proj.project_id = ass.project_id - GROUP BY 1 - ), - facility_aggs as ( - SELECT - fac.*, - proj.co2e_tonnes_per_year - FROM proj_agg_to_facility as proj - LEFT JOIN facilities as fac - ON proj.facility_id = fac.facility_id - ), - w_county_names as ( - select - cfip.county_name as county, - proj.* - from facility_aggs as proj - left join data_warehouse.county_fips as cfip - on proj.county_id_fips = cfip.county_id_fips - ) - SELECT - sfip.state_name as state, - proj.* - from w_county_names as proj - left join data_warehouse.state_fips as sfip - on proj.state_id_fips = sfip.state_id_fips - ; - """ + query = get_query("get_proposed_fossil_infra.sql") df = pd.read_sql(query, engine) df["facility_type"] = "proposed_infrastructure" df.rename(columns={"facility_id": "id"}, inplace=True) diff --git a/src/dbcp/data_mart/counties.py b/src/dbcp/data_mart/counties.py index 3890cad4..70af57a6 100644 --- a/src/dbcp/data_mart/counties.py +++ b/src/dbcp/data_mart/counties.py @@ -41,6 +41,7 @@ _get_county_fips_df, _get_state_fips_df, _subset_db_columns, + get_query, ) from dbcp.data_mart.projects import create_long_format as create_iso_data_mart from dbcp.helpers import get_sql_engine @@ -230,52 +231,7 @@ def _get_existing_plant_attributes(engine: sa.engine.Engine) -> pd.DataFrame: # SELECT max(fuel_type_count) as max_fuel_type_count # FROM gen_fuels - query = """ - WITH - plant_fuel_aggs as ( - SELECT - plant_id_eia, - (CASE - WHEN technology_description = 'Batteries' THEN 'Battery Storage' - WHEN technology_description = 'Offshore Wind Turbine' THEN 'Offshore Wind' - WHEN fuel_type_code_pudl = 'waste' THEN 'other' - ELSE fuel_type_code_pudl - END - ) as resource, - sum(net_generation_mwh) as net_gen_by_fuel, - sum(capacity_mw) as capacity_by_fuel, - max(generator_operating_date) as max_operating_date - from data_warehouse.pudl_generators - where operational_status = 'existing' - group by 1, 2 - ), - plant_capacity as ( - SELECT - plant_id_eia, - sum(capacity_by_fuel) as capacity_mw - from plant_fuel_aggs - group by 1 - ), - all_aggs as ( - SELECT - * - from plant_fuel_aggs as pfuel - LEFT JOIN plant_capacity as pcap - USING (plant_id_eia) - ) - -- select fuel type with the largest generation (with capacity as tiebreaker) - -- https://stackoverflow.com/questions/3800551/select-first-row-in-each-group-by-group/7630564 - -- NOTE: this is not appropriate for fields that require aggregation, hence CTEs above - SELECT DISTINCT ON (plant_id_eia) - plant_id_eia, - resource, - -- net_gen_by_fuel for debugging - max_operating_date, - capacity_mw - from all_aggs - ORDER BY plant_id_eia, net_gen_by_fuel DESC NULLS LAST, capacity_by_fuel DESC NULLS LAST - ; - """ + query = get_query("get_existing_plant_attributes.sql") df = pd.read_sql(query, engine) resource_map = { "gas": "Natural Gas", @@ -668,50 +624,7 @@ def _get_offshore_wind_extra_cols(engine: sa.engine.Engine) -> pd.DataFrame: # they intentionally double-count capacity. The theory is that the loss # of any port could block the whole associated project, so we want # to know how much total capacity is at stake in each port county. - query = """ - WITH - proj_ports AS ( - SELECT - proj."project_id", - port.location_id, - locs.county_id_fips, - proj."capacity_mw" - FROM "data_warehouse"."offshore_wind_projects" as proj - INNER JOIN data_warehouse.offshore_wind_port_association as port - USING(project_id) - INNER JOIN data_warehouse.offshore_wind_locations as locs - USING(location_id) - ), - -- select * from proj_ports - -- order by project_id, location_id - port_aggs AS ( - SELECT - county_id_fips, - -- intentional double-counting here. The theory is that the loss - -- of any port could block the whole associated project, so we want - -- to know how much total capacity is at stake in each port county. - SUM(capacity_mw) as offshore_wind_capacity_mw_via_ports - FROM proj_ports - GROUP BY 1 - order by 1 - ), - interest AS ( - SELECT - county_id_fips, - string_agg(distinct(why_of_interest), ',' order by why_of_interest) as offshore_wind_interest_type - FROM data_warehouse.offshore_wind_locations as locs - GROUP BY 1 - ORDER BY 1 - ) - SELECT - county_id_fips, - offshore_wind_capacity_mw_via_ports, - offshore_wind_interest_type - FROM interest - LEFT JOIN port_aggs - USING(county_id_fips) - where county_id_fips is not NULL; - """ + query = get_query("get_offshore_wind_extra_cols.sql") df = pd.read_sql(query, engine) df.set_index("county_id_fips", inplace=True) return df @@ -779,25 +692,8 @@ def _get_federal_land_fraction(postgres_engine: sa.engine.Engine): def _get_energy_community_qualification(postgres_engine: sa.engine.Engine): # NOTE: this query contains hardcoded parameters for the # energy communities qualification criteria - query = """ - WITH - ec as ( - SELECT - ec.county_id_fips, - coal_qualifying_area_fraction as energy_community_coal_closures_area_fraction, - qualifies_by_employment_criteria as energy_community_qualifies_via_employment - FROM data_warehouse.energy_communities_by_county AS ec - LEFT JOIN data_warehouse.county_fips AS fips - USING (county_id_fips) - ) - SELECT - *, - (energy_community_coal_closures_area_fraction > 0.5 OR - energy_community_qualifies_via_employment) as energy_community_qualifies - FROM ec - """ + query = get_query("get_energy_community_qualification.sql") ec = pd.read_sql(query, postgres_engine) - return ec diff --git a/src/dbcp/data_mart/fossil_infrastructure_projects.py b/src/dbcp/data_mart/fossil_infrastructure_projects.py index 8adbd4b4..d0096741 100644 --- a/src/dbcp/data_mart/fossil_infrastructure_projects.py +++ b/src/dbcp/data_mart/fossil_infrastructure_projects.py @@ -1,197 +1,16 @@ """Module to create a table of EIP fossil infrastructure projects for use in spreadsheet tools.""" + from typing import Optional import pandas as pd import sqlalchemy as sa +from dbcp.data_mart.helpers import get_query from dbcp.helpers import get_sql_engine def _get_proposed_infra_projects(engine: sa.engine.Engine) -> pd.DataFrame: - query = """ - WITH - projects as ( - SELECT - project_id, - name as project_name, - classification as project_classification, - cost_millions, - date_modified, - industry_sector, - project_description, - raw_project_type, - raw_number_of_jobs_promised, - -- First multiplier below is unit conversion - -- The second is 15 percent haircut to account for realistic utilization, as per design doc. - greenhouse_gases_co2e_tpy * 0.907185 * 0.85 as co2e_tonnes_per_year, - volatile_organic_compounds_voc_tpy * 0.907185 * 0.85 as voc_tonnes_per_year, - sulfur_dioxide_so2_tpy * 0.907185 * 0.85 as so2_tonnes_per_year, - nitrogen_oxides_nox_tpy * 0.907185 * 0.85 as nox_tonnes_per_year, - carbon_monoxide_co_tpy * 0.907185 * 0.85 as co_tonnes_per_year, - particulate_matter_pm2_5_tpy * 0.907185 * 0.85 as pm2_5_tonnes_per_year, - total_wetlands_affected_permanently_acres, - total_wetlands_affected_temporarily_acres, - is_ally_target, - operating_status - FROM data_warehouse.eip_projects - WHERE operating_status not in ('Operating', 'Under construction', 'Canceled') - ), - facilities as ( - SELECT - facility_id, - county_id_fips, - state_id_fips, - name as facility_name, - latitude, - longitude, - -- concat with separator - concat_ws(', ', raw_street_address, raw_city, raw_zip_code) as raw_street_address, - facility_description, - raw_estimated_population_within_3_miles, - raw_percent_low_income_within_3_miles, - raw_percent_people_of_color_within_3_miles, - raw_respiratory_hazard_index as raw_respiratory_hazard_index_within_3_miles, - raw_air_toxics_cancer_risk_nata_cancer_risk as raw_relative_cancer_risk_per_million_within_3_miles, - raw_wastewater_discharge_indicator - FROM data_warehouse.eip_facilities - ), - permits as ( - SELECT - air_construction_id, - description_or_purpose as permit_description - -- The following would be good additions BUT I'd need to - -- fix the 1:m project:permit association first. - -- Need to take only the most recent permit. - -- This is perfectly doable but deferring for time. - --permit_status, - --raw_deadline_to_begin_construction, - --raw_last_day_to_comment - from data_warehouse.eip_air_constr_permits - ), - proj_fac_association as ( - -- this query simplifies the m:m relationship - -- by taking only the first result, making it m:1. - -- Only 6 / 681 rows are dropped. - select DISTINCT ON (project_id) - project_id, - facility_id - from data_warehouse.eip_facility_project_association - ), - proj_permit_association as ( - -- this query simplifies the m:m relationship - -- by taking only the first result, making it m:1. - -- 276 / 831 rows are dropped (lots of permits). - -- This method should be replaced by most recent permit. - select DISTINCT ON (project_id) - project_id, - air_construction_id - from data_warehouse.eip_project_permit_association - ), - proj_facility_id as ( - SELECT - proj.*, - ass.facility_id - FROM projects as proj - LEFT JOIN proj_fac_association as ass - ON proj.project_id = ass.project_id - ), - proj_facility as ( - SELECT - proj.*, - -- everything except fac.facility_id (duplicated with proj.facility_id) - fac.county_id_fips, - fac.state_id_fips, - fac.facility_name, - fac.latitude, - fac.longitude, - fac.raw_street_address, - fac.facility_description, - fac.raw_estimated_population_within_3_miles, - fac.raw_percent_low_income_within_3_miles, - fac.raw_percent_people_of_color_within_3_miles, - fac.raw_respiratory_hazard_index_within_3_miles, - fac.raw_relative_cancer_risk_per_million_within_3_miles, - fac.raw_wastewater_discharge_indicator - FROM proj_facility_id as proj - LEFT JOIN facilities as fac - ON proj.facility_id = fac.facility_id - ), - proj_fac_permit_id as ( - SELECT - proj.*, - ass.air_construction_id - FROM proj_facility as proj - LEFT JOIN proj_permit_association as ass - ON proj.project_id = ass.project_id - ), - proj_fac_perm as ( - SELECT - proj.*, - -- everything except perm.air_construction_id (duplicated with proj.air_construction_id) - perm.permit_description - FROM proj_fac_permit_id as proj - LEFT JOIN permits as perm - ON proj.air_construction_id = perm.air_construction_id - ), - w_county_names as ( - select - cfip.county_name as county, - proj.* - from proj_fac_perm as proj - left join data_warehouse.county_fips as cfip - on proj.county_id_fips = cfip.county_id_fips - ), - final as( - SELECT - sfip.state_name as state, - proj.* - from w_county_names as proj - left join data_warehouse.state_fips as sfip - on proj.state_id_fips = sfip.state_id_fips - ) - SELECT - -- reorder column names to be more friendly - project_id, - project_name, - state, - county, - county_id_fips, - state_id_fips, - latitude, - longitude, - raw_street_address, - air_construction_id, - facility_id, - facility_name, - project_classification, - operating_status, - industry_sector, - raw_project_type, - project_description, - facility_description, - permit_description, - cost_millions, - raw_number_of_jobs_promised, - date_modified, - co2e_tonnes_per_year, - voc_tonnes_per_year, - so2_tonnes_per_year, - nox_tonnes_per_year, - co_tonnes_per_year, - pm2_5_tonnes_per_year, - total_wetlands_affected_permanently_acres, - total_wetlands_affected_temporarily_acres, - raw_estimated_population_within_3_miles, - raw_percent_low_income_within_3_miles, - raw_percent_people_of_color_within_3_miles, - raw_respiratory_hazard_index_within_3_miles, - raw_relative_cancer_risk_per_million_within_3_miles, - raw_wastewater_discharge_indicator, - is_ally_target - FROM final - ORDER BY 2, 1 - ; - """ + query = get_query("get_proposed_infra_projects.sql") df = pd.read_sql(query, engine) # fix columns with mixed dtypes that break pyarrow and parquet (via pandas_gbq) df.loc[:, "is_ally_target"] = df.loc[:, "is_ally_target"].astype(str) diff --git a/src/dbcp/data_mart/helpers.py b/src/dbcp/data_mart/helpers.py index 7b3a553b..c4038d6d 100644 --- a/src/dbcp/data_mart/helpers.py +++ b/src/dbcp/data_mart/helpers.py @@ -1,5 +1,6 @@ """Module of helper functions for creating data mart tables from the data warehouse.""" +from pathlib import Path from typing import Optional, Sequence import pandas as pd @@ -342,3 +343,10 @@ def _estimate_proposed_power_co2e( ] iso_projects.drop(columns=intermediates, inplace=True) return + + +def get_query(filename: str) -> str: + """Get the query from a file.""" + sql_query_dir = Path(__file__).parent / "sql_queries" + full_path = sql_query_dir / filename + return full_path.read_text() diff --git a/src/dbcp/data_mart/projects.py b/src/dbcp/data_mart/projects.py index 4b55d028..7e08d59e 100644 --- a/src/dbcp/data_mart/projects.py +++ b/src/dbcp/data_mart/projects.py @@ -14,6 +14,7 @@ _estimate_proposed_power_co2e, _get_county_fips_df, _get_state_fips_df, + get_query, ) from dbcp.helpers import get_sql_engine @@ -25,71 +26,7 @@ def _get_gridstatus_projects(engine: sa.engine.Engine) -> pd.DataFrame: # drops transmission projects - query = """ - WITH - proj_res AS ( - SELECT - queue_id, - is_nearly_certain, - project_id, - project_name, - capacity_mw, - developer, - entity, - entity AS iso_region, -- these are different in non-ISO data from LBNL - utility, - proposed_completion_date AS date_proposed_online, - point_of_interconnection, - is_actionable, - resource_clean, - queue_status, - queue_date AS date_entered_queue, - actual_completion_date, - withdrawn_date, - interconnection_status_raw AS interconnection_status - FROM data_warehouse.gridstatus_projects as proj - LEFT JOIN data_warehouse.gridstatus_resource_capacity as res - USING (project_id) - WHERE resource_clean != 'Transmission' - ), - loc as ( - -- projects can have multiple locations, though 99 percent have only one. - -- Can multiply capacity by frac_locations_in_county to allocate it equally. - -- Note that there are some duplicates of (project_id, county_id_fips) as well. - -- This happens when the original data lists multiple city names that are in the - -- same county. This does not cause double counting because of frac_locations_in_county. - SELECT - project_id, - state_id_fips, - county_id_fips, - (1.0 / count(*) over (partition by project_id))::real as frac_locations_in_county - FROM data_warehouse.gridstatus_locations - ), - gs as ( - SELECT - proj_res.*, - loc.state_id_fips, - loc.county_id_fips, - -- projects with missing location info get full capacity allocation - coalesce(loc.frac_locations_in_county, 1.0) as frac_locations_in_county - FROM proj_res - LEFT JOIN loc - USING (project_id) - ) - SELECT - sfip.state_name AS state, - cfip.county_name AS county, - gs.*, - 'gridstatus' AS source, - ncsl.permitting_type AS state_permitting_type - FROM gs - LEFT JOIN data_warehouse.ncsl_state_permitting AS ncsl - on gs.state_id_fips = ncsl.state_id_fips - LEFT JOIN data_warehouse.state_fips AS sfip - ON gs.state_id_fips = sfip.state_id_fips - LEFT JOIN data_warehouse.county_fips AS cfip - ON gs.county_id_fips = cfip.county_id_fips - """ + query = get_query("get_gridstatus_projects.sql") gs = pd.read_sql(query, engine) gs = gs[gs.iso_region.str.upper().isin(GS_REGIONS)] return gs @@ -127,73 +64,7 @@ def _merge_lbnl_with_gridstatus(lbnl: pd.DataFrame, gs: pd.DataFrame) -> pd.Data def _get_lbnl_projects(engine: sa.engine.Engine, non_iso_only=True) -> pd.DataFrame: - query = """ - WITH - iso_proj_res as ( - SELECT - proj.project_id, - proj.queue_id, - proj.date_proposed as date_proposed_online, - proj.developer, - proj.entity, - proj.interconnection_status_lbnl as interconnection_status, - proj.point_of_interconnection, - proj.project_name, - proj.queue_date as date_entered_queue, - proj.queue_status, - proj.region as iso_region, - proj.utility, - proj.is_actionable, - proj.is_nearly_certain, - proj.actual_completion_date, - proj.withdrawn_date, - res.capacity_mw, - res.resource_clean - FROM data_warehouse.iso_projects as proj - INNER JOIN data_warehouse.iso_resource_capacity as res - ON proj.project_id = res.project_id - ), - loc as ( - -- Remember that projects can have multiple locations, though 99 percent have only one. - -- Can optionally multiply capacity by frac_locations_in_county to allocate it equally. - -- Note that there are some duplicates of (project_id, county_id_fips) as well. - -- This happens when the original data lists multiple city names that are in the - -- same county. This does not cause double counting because of frac_locations_in_county. - SELECT - project_id, - state_id_fips, - county_id_fips, - raw_county_name, -- for validation only - (1.0 / count(*) over (partition by project_id))::real as frac_locations_in_county - FROM data_warehouse.iso_locations - ), - iso as ( - SELECT - iso_proj_res.*, - loc.state_id_fips, - loc.county_id_fips, - loc.raw_county_name, -- for validation only - -- projects with missing location info get full capacity allocation - coalesce(loc.frac_locations_in_county, 1.0) as frac_locations_in_county - from iso_proj_res - LEFT JOIN loc - ON iso_proj_res.project_id = loc.project_id - ) - SELECT - sfip.state_name as state, - cfip.county_name as county, - iso.*, - 'lbnl' as source, - ncsl.permitting_type as state_permitting_type - from iso - left join data_warehouse.state_fips as sfip - on iso.state_id_fips = sfip.state_id_fips - left join data_warehouse.county_fips as cfip - on iso.county_id_fips = cfip.county_id_fips - left join data_warehouse.ncsl_state_permitting as ncsl - on iso.state_id_fips = ncsl.state_id_fips - ; - """ + query = get_query("get_lbnl_projects.sql") df = pd.read_sql(query, engine) if non_iso_only: df = df[~df.iso_region.isin(GS_REGIONS)] @@ -244,59 +115,7 @@ def _get_proprietary_proposed_offshore(engine: sa.engine.Engine) -> pd.DataFrame column to allocate capacity and co2e estimates to counties when aggregating. Otherwise they will be double-counted. """ - query = """ - WITH - proj_county_assoc as ( - SELECT - project_id, - locs.county_id_fips, - -- Note that "frac_locations_in_county" is a misnomer. It is actually - -- "fraction_of_locations_represented_by_this_row". When I originally - -- named it, I thought location:county was m:1, but it's actually m:m - -- because some projects list multiple towns in the same parent county - -- in the raw "county" field. - (1.0 / count(*) over (partition by project_id))::real as frac_locations_in_county - FROM data_warehouse.offshore_wind_cable_landing_association as cable - INNER JOIN data_warehouse.offshore_wind_locations as locs - USING(location_id) - ) - -- join the project, state, and county stuff - SELECT - proj.project_id, - assoc.county_id_fips, - -- projects with missing location info get full capacity allocation - CASE WHEN assoc.frac_locations_in_county IS NULL - THEN 1.0 - ELSE assoc.frac_locations_in_county - END as frac_locations_in_county, - substr(assoc.county_id_fips, 1, 2) as state_id_fips, - - proj.name as project_name, - proj.developer, - proj."capacity_mw", - date(proj.proposed_completion_year::text || '-01-01') as date_proposed_online, - proj.queue_status, - 'Offshore Wind' as resource_clean, - 0.0 as co2e_tonnes_per_year, - proj.is_actionable, - proj.is_nearly_certain, - 'proprietary' as source, - - sfip.state_name as state, - cfip.county_name as county, - ncsl.permitting_type as state_permitting_type - - FROM data_warehouse.offshore_wind_projects as proj - LEFT JOIN proj_county_assoc as assoc - USING(project_id) - LEFT JOIN data_warehouse.state_fips as sfip - ON substr(assoc.county_id_fips, 1, 2) = sfip.state_id_fips - LEFT JOIN data_warehouse.county_fips as cfip - USING(county_id_fips) - LEFT JOIN data_warehouse.ncsl_state_permitting as ncsl - ON substr(assoc.county_id_fips, 1, 2) = ncsl.state_id_fips - ; - """ + query = get_query("get_proprietary_proposed_offshore.sql") df = pd.read_sql(query, engine) return df @@ -995,79 +814,7 @@ def get_eia860m_current(engine: sa.engine.Engine) -> pd.DataFrame: Args: engine (sa.engine.Engine): connection to the data warehouse database """ - query = """ - WITH - -- 3307 / 33943 current projects are missing a balancing authority code (mostly - -- retired projects). But a simple county lookup can fill in half (1642 / 3307) of them: - -- 1932 / 2400 counties with a project missing a BA code have a single unique - -- BA code among the other projects in that county. These are a pretty safe bet - -- to impute. Counties with multiple or zero BAs are not imputed. - imputed_bal_auth AS ( - SELECT - county_id_fips, - max(balancing_authority_code_eia) as unique_ba -- only one unique value - FROM data_warehouse.pudl_eia860m_changelog - WHERE valid_until_date = ( - select max(valid_until_date) FROM data_warehouse.pudl_eia860m_changelog - ) - GROUP BY 1 - HAVING count(distinct balancing_authority_code_eia) = 1 - ) - SELECT - report_date, - plant_id_eia, - plant_name_eia, - utility_id_eia, - utility_name_eia, - generator_id, - capacity_mw, - eia.state_id_fips, - eia.county_id_fips, - sfips.state_name as state, - cfips.county_name as county, - -- 1. Impute BA codes - -- 2. Convert EIA ISO abbreviations to match those used in LBNL/GridStatus - -- 3. Name it iso_region for consistency with LBNL/GridStatus ISO queues - CASE COALESCE(balancing_authority_code_eia, imputed_ba.unique_ba) - WHEN 'CISO' THEN 'CAISO' - WHEN 'ERCO' THEN 'ERCOT' - WHEN 'ISNE' THEN 'ISONE' - WHEN 'NYIS' THEN 'NYISO' - WHEN 'SWPP ' THEN 'SPP' - -- MISO and PJM are unchanged - ELSE COALESCE(balancing_authority_code_eia, imputed_ba.unique_ba) - END as iso_region, - current_planned_generator_operating_date, - energy_source_code_1, - prime_mover_code, - energy_storage_capacity_mwh, - fuel_type_code_pudl, - generator_retirement_date, - latitude, - longitude, - operational_status_code, - operational_status AS operational_status_category, - raw_operational_status_code, - planned_derate_date, - planned_generator_retirement_date, - planned_net_summer_capacity_derate_mw, - planned_net_summer_capacity_uprate_mw, - planned_uprate_date, - technology_description, - state as raw_state, - county as raw_county - FROM data_warehouse.pudl_eia860m_changelog as eia - LEFT JOIN data_warehouse.state_fips as sfips - USING (state_id_fips) - LEFT JOIN data_warehouse.county_fips as cfips - USING (county_id_fips) - LEFT JOIN imputed_bal_auth as imputed_ba - ON eia.county_id_fips = imputed_ba.county_id_fips - WHERE valid_until_date = ( - select max(valid_until_date) FROM data_warehouse.pudl_eia860m_changelog - ) - ORDER BY plant_id_eia, generator_id - """ + query = get_query("get_eia860m_current.sql") current_projects = pd.read_sql(query, engine) return current_projects diff --git a/src/dbcp/data_mart/sql_queries/get_eia860m_current.sql b/src/dbcp/data_mart/sql_queries/get_eia860m_current.sql new file mode 100644 index 00000000..d61fcac3 --- /dev/null +++ b/src/dbcp/data_mart/sql_queries/get_eia860m_current.sql @@ -0,0 +1,71 @@ + WITH + -- 3307 / 33943 current projects are missing a balancing authority code (mostly + -- retired projects). But a simple county lookup can fill in half (1642 / 3307) of them: + -- 1932 / 2400 counties with a project missing a BA code have a single unique + -- BA code among the other projects in that county. These are a pretty safe bet + -- to impute. Counties with multiple or zero BAs are not imputed. + imputed_bal_auth AS ( + SELECT + county_id_fips, + max(balancing_authority_code_eia) as unique_ba -- only one unique value + FROM data_warehouse.pudl_eia860m_changelog + WHERE valid_until_date = ( + select max(valid_until_date) FROM data_warehouse.pudl_eia860m_changelog + ) + GROUP BY 1 + HAVING count(distinct balancing_authority_code_eia) = 1 + ) + SELECT + report_date, + plant_id_eia, + plant_name_eia, + utility_id_eia, + utility_name_eia, + generator_id, + capacity_mw, + eia.state_id_fips, + eia.county_id_fips, + sfips.state_name as state, + cfips.county_name as county, + -- 1. Impute BA codes + -- 2. Convert EIA ISO abbreviations to match those used in LBNL/GridStatus + -- 3. Name it iso_region for consistency with LBNL/GridStatus ISO queues + CASE COALESCE(balancing_authority_code_eia, imputed_ba.unique_ba) + WHEN 'CISO' THEN 'CAISO' + WHEN 'ERCO' THEN 'ERCOT' + WHEN 'ISNE' THEN 'ISONE' + WHEN 'NYIS' THEN 'NYISO' + WHEN 'SWPP ' THEN 'SPP' + -- MISO and PJM are unchanged + ELSE COALESCE(balancing_authority_code_eia, imputed_ba.unique_ba) + END as iso_region, + current_planned_generator_operating_date, + energy_source_code_1, + prime_mover_code, + energy_storage_capacity_mwh, + fuel_type_code_pudl, + generator_retirement_date, + latitude, + longitude, + operational_status_code, + operational_status AS operational_status_category, + raw_operational_status_code, + planned_derate_date, + planned_generator_retirement_date, + planned_net_summer_capacity_derate_mw, + planned_net_summer_capacity_uprate_mw, + planned_uprate_date, + technology_description, + state as raw_state, + county as raw_county + FROM data_warehouse.pudl_eia860m_changelog as eia + LEFT JOIN data_warehouse.state_fips as sfips + USING (state_id_fips) + LEFT JOIN data_warehouse.county_fips as cfips + USING (county_id_fips) + LEFT JOIN imputed_bal_auth as imputed_ba + ON eia.county_id_fips = imputed_ba.county_id_fips + WHERE valid_until_date = ( + select max(valid_until_date) FROM data_warehouse.pudl_eia860m_changelog + ) + ORDER BY plant_id_eia, generator_id diff --git a/src/dbcp/data_mart/sql_queries/get_energy_community_qualification.sql b/src/dbcp/data_mart/sql_queries/get_energy_community_qualification.sql new file mode 100644 index 00000000..5c789676 --- /dev/null +++ b/src/dbcp/data_mart/sql_queries/get_energy_community_qualification.sql @@ -0,0 +1,15 @@ +WITH + ec as ( + SELECT + ec.county_id_fips, + coal_qualifying_area_fraction as energy_community_coal_closures_area_fraction, + qualifies_by_employment_criteria as energy_community_qualifies_via_employment + FROM data_warehouse.energy_communities_by_county AS ec + LEFT JOIN data_warehouse.county_fips AS fips + USING (county_id_fips) + ) + SELECT + *, + (energy_community_coal_closures_area_fraction > 0.5 OR + energy_community_qualifies_via_employment) as energy_community_qualifies + FROM ec diff --git a/src/dbcp/data_mart/sql_queries/get_existing_plant_attributes.sql b/src/dbcp/data_mart/sql_queries/get_existing_plant_attributes.sql new file mode 100644 index 00000000..385eb25a --- /dev/null +++ b/src/dbcp/data_mart/sql_queries/get_existing_plant_attributes.sql @@ -0,0 +1,44 @@ +WITH + plant_fuel_aggs as ( + SELECT + plant_id_eia, + (CASE + WHEN technology_description = 'Batteries' THEN 'Battery Storage' + WHEN technology_description = 'Offshore Wind Turbine' THEN 'Offshore Wind' + WHEN fuel_type_code_pudl = 'waste' THEN 'other' + ELSE fuel_type_code_pudl + END + ) as resource, + sum(net_generation_mwh) as net_gen_by_fuel, + sum(capacity_mw) as capacity_by_fuel, + max(generator_operating_date) as max_operating_date + from data_warehouse.pudl_generators + where operational_status = 'existing' + group by 1, 2 + ), + plant_capacity as ( + SELECT + plant_id_eia, + sum(capacity_by_fuel) as capacity_mw + from plant_fuel_aggs + group by 1 + ), + all_aggs as ( + SELECT + * + from plant_fuel_aggs as pfuel + LEFT JOIN plant_capacity as pcap + USING (plant_id_eia) + ) + -- select fuel type with the largest generation (with capacity as tiebreaker) + -- https://stackoverflow.com/questions/3800551/select-first-row-in-each-group-by-group/7630564 + -- NOTE: this is not appropriate for fields that require aggregation, hence CTEs above + SELECT DISTINCT ON (plant_id_eia) + plant_id_eia, + resource, + -- net_gen_by_fuel for debugging + max_operating_date, + capacity_mw + from all_aggs + ORDER BY plant_id_eia, net_gen_by_fuel DESC NULLS LAST, capacity_by_fuel DESC NULLS LAST + ; diff --git a/src/dbcp/data_mart/sql_queries/get_gridstatus_projects.sql b/src/dbcp/data_mart/sql_queries/get_gridstatus_projects.sql new file mode 100644 index 00000000..76705d67 --- /dev/null +++ b/src/dbcp/data_mart/sql_queries/get_gridstatus_projects.sql @@ -0,0 +1,63 @@ +WITH + proj_res AS ( + SELECT + queue_id, + is_nearly_certain, + project_id, + project_name, + capacity_mw, + developer, + entity, + entity AS iso_region, -- these are different in non-ISO data from LBNL + utility, + proposed_completion_date AS date_proposed_online, + point_of_interconnection, + is_actionable, + resource_clean, + queue_status, + queue_date AS date_entered_queue, + actual_completion_date, + withdrawn_date, + interconnection_status_raw AS interconnection_status + FROM data_warehouse.gridstatus_projects as proj + LEFT JOIN data_warehouse.gridstatus_resource_capacity as res + USING (project_id) + WHERE resource_clean != 'Transmission' + ), + loc as ( + -- projects can have multiple locations, though 99 percent have only one. + -- Can multiply capacity by frac_locations_in_county to allocate it equally. + -- Note that there are some duplicates of (project_id, county_id_fips) as well. + -- This happens when the original data lists multiple city names that are in the + -- same county. This does not cause double counting because of frac_locations_in_county. + SELECT + project_id, + state_id_fips, + county_id_fips, + (1.0 / count(*) over (partition by project_id))::real as frac_locations_in_county + FROM data_warehouse.gridstatus_locations + ), + gs as ( + SELECT + proj_res.*, + loc.state_id_fips, + loc.county_id_fips, + -- projects with missing location info get full capacity allocation + coalesce(loc.frac_locations_in_county, 1.0) as frac_locations_in_county + FROM proj_res + LEFT JOIN loc + USING (project_id) + ) + SELECT + sfip.state_name AS state, + cfip.county_name AS county, + gs.*, + 'gridstatus' AS source, + ncsl.permitting_type AS state_permitting_type + FROM gs + LEFT JOIN data_warehouse.ncsl_state_permitting AS ncsl + on gs.state_id_fips = ncsl.state_id_fips + LEFT JOIN data_warehouse.state_fips AS sfip + ON gs.state_id_fips = sfip.state_id_fips + LEFT JOIN data_warehouse.county_fips AS cfip + ON gs.county_id_fips = cfip.county_id_fips diff --git a/src/dbcp/data_mart/sql_queries/get_lbnl_projects.sql b/src/dbcp/data_mart/sql_queries/get_lbnl_projects.sql new file mode 100644 index 00000000..aca2a270 --- /dev/null +++ b/src/dbcp/data_mart/sql_queries/get_lbnl_projects.sql @@ -0,0 +1,65 @@ +WITH + iso_proj_res as ( + SELECT + proj.project_id, + proj.queue_id, + proj.date_proposed as date_proposed_online, + proj.developer, + proj.entity, + proj.interconnection_status_lbnl as interconnection_status, + proj.point_of_interconnection, + proj.project_name, + proj.queue_date as date_entered_queue, + proj.queue_status, + proj.region as iso_region, + proj.utility, + proj.is_actionable, + proj.is_nearly_certain, + proj.actual_completion_date, + proj.withdrawn_date, + res.capacity_mw, + res.resource_clean + FROM data_warehouse.iso_projects as proj + INNER JOIN data_warehouse.iso_resource_capacity as res + ON proj.project_id = res.project_id + ), + loc as ( + -- Remember that projects can have multiple locations, though 99 percent have only one. + -- Can optionally multiply capacity by frac_locations_in_county to allocate it equally. + -- Note that there are some duplicates of (project_id, county_id_fips) as well. + -- This happens when the original data lists multiple city names that are in the + -- same county. This does not cause double counting because of frac_locations_in_county. + SELECT + project_id, + state_id_fips, + county_id_fips, + raw_county_name, -- for validation only + (1.0 / count(*) over (partition by project_id))::real as frac_locations_in_county + FROM data_warehouse.iso_locations + ), + iso as ( + SELECT + iso_proj_res.*, + loc.state_id_fips, + loc.county_id_fips, + loc.raw_county_name, -- for validation only + -- projects with missing location info get full capacity allocation + coalesce(loc.frac_locations_in_county, 1.0) as frac_locations_in_county + from iso_proj_res + LEFT JOIN loc + ON iso_proj_res.project_id = loc.project_id + ) + SELECT + sfip.state_name as state, + cfip.county_name as county, + iso.*, + 'lbnl' as source, + ncsl.permitting_type as state_permitting_type + from iso + left join data_warehouse.state_fips as sfip + on iso.state_id_fips = sfip.state_id_fips + left join data_warehouse.county_fips as cfip + on iso.county_id_fips = cfip.county_id_fips + left join data_warehouse.ncsl_state_permitting as ncsl + on iso.state_id_fips = ncsl.state_id_fips + ; diff --git a/src/dbcp/data_mart/sql_queries/get_offshore_wind_extra_cols.sql b/src/dbcp/data_mart/sql_queries/get_offshore_wind_extra_cols.sql new file mode 100644 index 00000000..126f84f2 --- /dev/null +++ b/src/dbcp/data_mart/sql_queries/get_offshore_wind_extra_cols.sql @@ -0,0 +1,42 @@ + WITH + proj_ports AS ( + SELECT + proj."project_id", + port.location_id, + locs.county_id_fips, + proj."capacity_mw" + FROM "data_warehouse"."offshore_wind_projects" as proj + INNER JOIN data_warehouse.offshore_wind_port_association as port + USING(project_id) + INNER JOIN data_warehouse.offshore_wind_locations as locs + USING(location_id) + ), + -- select * from proj_ports + -- order by project_id, location_id + port_aggs AS ( + SELECT + county_id_fips, + -- intentional double-counting here. The theory is that the loss + -- of any port could block the whole associated project, so we want + -- to know how much total capacity is at stake in each port county. + SUM(capacity_mw) as offshore_wind_capacity_mw_via_ports + FROM proj_ports + GROUP BY 1 + order by 1 + ), + interest AS ( + SELECT + county_id_fips, + string_agg(distinct(why_of_interest), ',' order by why_of_interest) as offshore_wind_interest_type + FROM data_warehouse.offshore_wind_locations as locs + GROUP BY 1 + ORDER BY 1 + ) + SELECT + county_id_fips, + offshore_wind_capacity_mw_via_ports, + offshore_wind_interest_type + FROM interest + LEFT JOIN port_aggs + USING(county_id_fips) + where county_id_fips is not NULL; diff --git a/src/dbcp/data_mart/sql_queries/get_proposed_fossil_infra.sql b/src/dbcp/data_mart/sql_queries/get_proposed_fossil_infra.sql new file mode 100644 index 00000000..fb04a4c9 --- /dev/null +++ b/src/dbcp/data_mart/sql_queries/get_proposed_fossil_infra.sql @@ -0,0 +1,59 @@ +WITH + projects as ( + SELECT + project_id, + -- First multiplier below is unit conversion + -- The second is 15 percent haircut to account for realistic utilization, as per design doc. + greenhouse_gases_co2e_tpy * 0.907185 * 0.85 as co2e_tonnes_per_year + FROM data_warehouse.eip_projects + WHERE operating_status not in ('Operating', 'Under construction', 'Canceled') + ), + facilities as ( + SELECT + facility_id, + county_id_fips, + state_id_fips + FROM data_warehouse.eip_facilities + ), + association as ( + -- this query simplifies the m:m relationship + -- by taking only the first result, making it m:1. + -- Only 5 rows are dropped. + select DISTINCT ON (project_id) + project_id, + facility_id + from data_warehouse.eip_facility_project_association + order by 1, 2 DESC + ), + proj_agg_to_facility as ( + SELECT + ass.facility_id, + sum(co2e_tonnes_per_year) as co2e_tonnes_per_year + FROM projects as proj + LEFT JOIN association as ass + ON proj.project_id = ass.project_id + GROUP BY 1 + ), + facility_aggs as ( + SELECT + fac.*, + proj.co2e_tonnes_per_year + FROM proj_agg_to_facility as proj + LEFT JOIN facilities as fac + ON proj.facility_id = fac.facility_id + ), + w_county_names as ( + select + cfip.county_name as county, + proj.* + from facility_aggs as proj + left join data_warehouse.county_fips as cfip + on proj.county_id_fips = cfip.county_id_fips + ) + SELECT + sfip.state_name as state, + proj.* + from w_county_names as proj + left join data_warehouse.state_fips as sfip + on proj.state_id_fips = sfip.state_id_fips + ; diff --git a/src/dbcp/data_mart/sql_queries/get_proposed_fossil_plants.sql b/src/dbcp/data_mart/sql_queries/get_proposed_fossil_plants.sql new file mode 100644 index 00000000..7aaad984 --- /dev/null +++ b/src/dbcp/data_mart/sql_queries/get_proposed_fossil_plants.sql @@ -0,0 +1,38 @@ +WITH + active_loc as ( + select + proj.project_id, + loc.county_id_fips + from data_warehouse.iso_projects as proj + left join data_warehouse.iso_locations as loc + on loc.project_id = proj.project_id + where proj.queue_status = 'active' + ), + projects as ( + select + loc.project_id, + loc.county_id_fips, + res.capacity_mw, + res.resource_clean as resource + from active_loc as loc + left join data_warehouse.iso_resource_capacity as res + on res.project_id = loc.project_id + where res.capacity_mw is not NULL + and res.resource_clean in ('Natural Gas', 'Coal', 'Oil') + ), + w_county_names as ( + select + cfip.county_name as county, + cfip.state_id_fips, + proj.* + from projects as proj + left join data_warehouse.county_fips as cfip + on proj.county_id_fips = cfip.county_id_fips + ) + SELECT + sfip.state_name as state, + proj.* + from w_county_names as proj + left join data_warehouse.state_fips as sfip + on proj.state_id_fips = sfip.state_id_fips + ; diff --git a/src/dbcp/data_mart/sql_queries/get_proposed_infra_projects.sql b/src/dbcp/data_mart/sql_queries/get_proposed_infra_projects.sql new file mode 100644 index 00000000..17390458 --- /dev/null +++ b/src/dbcp/data_mart/sql_queries/get_proposed_infra_projects.sql @@ -0,0 +1,182 @@ + WITH + projects as ( + SELECT + project_id, + name as project_name, + classification as project_classification, + cost_millions, + date_modified, + industry_sector, + project_description, + raw_project_type, + raw_number_of_jobs_promised, + -- First multiplier below is unit conversion + -- The second is 15 percent haircut to account for realistic utilization, as per design doc. + greenhouse_gases_co2e_tpy * 0.907185 * 0.85 as co2e_tonnes_per_year, + volatile_organic_compounds_voc_tpy * 0.907185 * 0.85 as voc_tonnes_per_year, + sulfur_dioxide_so2_tpy * 0.907185 * 0.85 as so2_tonnes_per_year, + nitrogen_oxides_nox_tpy * 0.907185 * 0.85 as nox_tonnes_per_year, + carbon_monoxide_co_tpy * 0.907185 * 0.85 as co_tonnes_per_year, + particulate_matter_pm2_5_tpy * 0.907185 * 0.85 as pm2_5_tonnes_per_year, + total_wetlands_affected_permanently_acres, + total_wetlands_affected_temporarily_acres, + is_ally_target, + operating_status + FROM data_warehouse.eip_projects + WHERE operating_status not in ('Operating', 'Under construction', 'Canceled') + ), + facilities as ( + SELECT + facility_id, + county_id_fips, + state_id_fips, + name as facility_name, + latitude, + longitude, + -- concat with separator + concat_ws(', ', raw_street_address, raw_city, raw_zip_code) as raw_street_address, + facility_description, + raw_estimated_population_within_3_miles, + raw_percent_low_income_within_3_miles, + raw_percent_people_of_color_within_3_miles, + raw_respiratory_hazard_index as raw_respiratory_hazard_index_within_3_miles, + raw_air_toxics_cancer_risk_nata_cancer_risk as raw_relative_cancer_risk_per_million_within_3_miles, + raw_wastewater_discharge_indicator + FROM data_warehouse.eip_facilities + ), + permits as ( + SELECT + air_construction_id, + description_or_purpose as permit_description + -- The following would be good additions BUT I'd need to + -- fix the 1:m project:permit association first. + -- Need to take only the most recent permit. + -- This is perfectly doable but deferring for time. + --permit_status, + --raw_deadline_to_begin_construction, + --raw_last_day_to_comment + from data_warehouse.eip_air_constr_permits + ), + proj_fac_association as ( + -- this query simplifies the m:m relationship + -- by taking only the first result, making it m:1. + -- Only 6 / 681 rows are dropped. + select DISTINCT ON (project_id) + project_id, + facility_id + from data_warehouse.eip_facility_project_association + ), + proj_permit_association as ( + -- this query simplifies the m:m relationship + -- by taking only the first result, making it m:1. + -- 276 / 831 rows are dropped (lots of permits). + -- This method should be replaced by most recent permit. + select DISTINCT ON (project_id) + project_id, + air_construction_id + from data_warehouse.eip_project_permit_association + ), + proj_facility_id as ( + SELECT + proj.*, + ass.facility_id + FROM projects as proj + LEFT JOIN proj_fac_association as ass + ON proj.project_id = ass.project_id + ), + proj_facility as ( + SELECT + proj.*, + -- everything except fac.facility_id (duplicated with proj.facility_id) + fac.county_id_fips, + fac.state_id_fips, + fac.facility_name, + fac.latitude, + fac.longitude, + fac.raw_street_address, + fac.facility_description, + fac.raw_estimated_population_within_3_miles, + fac.raw_percent_low_income_within_3_miles, + fac.raw_percent_people_of_color_within_3_miles, + fac.raw_respiratory_hazard_index_within_3_miles, + fac.raw_relative_cancer_risk_per_million_within_3_miles, + fac.raw_wastewater_discharge_indicator + FROM proj_facility_id as proj + LEFT JOIN facilities as fac + ON proj.facility_id = fac.facility_id + ), + proj_fac_permit_id as ( + SELECT + proj.*, + ass.air_construction_id + FROM proj_facility as proj + LEFT JOIN proj_permit_association as ass + ON proj.project_id = ass.project_id + ), + proj_fac_perm as ( + SELECT + proj.*, + -- everything except perm.air_construction_id (duplicated with proj.air_construction_id) + perm.permit_description + FROM proj_fac_permit_id as proj + LEFT JOIN permits as perm + ON proj.air_construction_id = perm.air_construction_id + ), + w_county_names as ( + select + cfip.county_name as county, + proj.* + from proj_fac_perm as proj + left join data_warehouse.county_fips as cfip + on proj.county_id_fips = cfip.county_id_fips + ), + final as( + SELECT + sfip.state_name as state, + proj.* + from w_county_names as proj + left join data_warehouse.state_fips as sfip + on proj.state_id_fips = sfip.state_id_fips + ) + SELECT + -- reorder column names to be more friendly + project_id, + project_name, + state, + county, + county_id_fips, + state_id_fips, + latitude, + longitude, + raw_street_address, + air_construction_id, + facility_id, + facility_name, + project_classification, + operating_status, + industry_sector, + raw_project_type, + project_description, + facility_description, + permit_description, + cost_millions, + raw_number_of_jobs_promised, + date_modified, + co2e_tonnes_per_year, + voc_tonnes_per_year, + so2_tonnes_per_year, + nox_tonnes_per_year, + co_tonnes_per_year, + pm2_5_tonnes_per_year, + total_wetlands_affected_permanently_acres, + total_wetlands_affected_temporarily_acres, + raw_estimated_population_within_3_miles, + raw_percent_low_income_within_3_miles, + raw_percent_people_of_color_within_3_miles, + raw_respiratory_hazard_index_within_3_miles, + raw_relative_cancer_risk_per_million_within_3_miles, + raw_wastewater_discharge_indicator, + is_ally_target + FROM final + ORDER BY 2, 1 + ; diff --git a/src/dbcp/data_mart/sql_queries/get_proprietary_proposed_offshore.sql b/src/dbcp/data_mart/sql_queries/get_proprietary_proposed_offshore.sql new file mode 100644 index 00000000..5833aa4a --- /dev/null +++ b/src/dbcp/data_mart/sql_queries/get_proprietary_proposed_offshore.sql @@ -0,0 +1,51 @@ +WITH + proj_county_assoc as ( + SELECT + project_id, + locs.county_id_fips, + -- Note that "frac_locations_in_county" is a misnomer. It is actually + -- "fraction_of_locations_represented_by_this_row". When I originally + -- named it, I thought location:county was m:1, but it's actually m:m + -- because some projects list multiple towns in the same parent county + -- in the raw "county" field. + (1.0 / count(*) over (partition by project_id))::real as frac_locations_in_county + FROM data_warehouse.offshore_wind_cable_landing_association as cable + INNER JOIN data_warehouse.offshore_wind_locations as locs + USING(location_id) + ) + -- join the project, state, and county stuff + SELECT + proj.project_id, + assoc.county_id_fips, + -- projects with missing location info get full capacity allocation + CASE WHEN assoc.frac_locations_in_county IS NULL + THEN 1.0 + ELSE assoc.frac_locations_in_county + END as frac_locations_in_county, + substr(assoc.county_id_fips, 1, 2) as state_id_fips, + + proj.name as project_name, + proj.developer, + proj."capacity_mw", + date(proj.proposed_completion_year::text || '-01-01') as date_proposed_online, + proj.queue_status, + 'Offshore Wind' as resource_clean, + 0.0 as co2e_tonnes_per_year, + proj.is_actionable, + proj.is_nearly_certain, + 'proprietary' as source, + + sfip.state_name as state, + cfip.county_name as county, + ncsl.permitting_type as state_permitting_type + + FROM data_warehouse.offshore_wind_projects as proj + LEFT JOIN proj_county_assoc as assoc + USING(project_id) + LEFT JOIN data_warehouse.state_fips as sfip + ON substr(assoc.county_id_fips, 1, 2) = sfip.state_id_fips + LEFT JOIN data_warehouse.county_fips as cfip + USING(county_id_fips) + LEFT JOIN data_warehouse.ncsl_state_permitting as ncsl + ON substr(assoc.county_id_fips, 1, 2) = ncsl.state_id_fips + ; From 37457fd2bc7ec6b440a5d3a825c217378e16297f Mon Sep 17 00:00:00 2001 From: bendnorman Date: Tue, 12 Nov 2024 18:06:13 -0900 Subject: [PATCH 11/25] Flesh out get_query doc string --- src/dbcp/data_mart/helpers.py | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/dbcp/data_mart/helpers.py b/src/dbcp/data_mart/helpers.py index c4038d6d..98bef889 100644 --- a/src/dbcp/data_mart/helpers.py +++ b/src/dbcp/data_mart/helpers.py @@ -346,7 +346,25 @@ def _estimate_proposed_power_co2e( def get_query(filename: str) -> str: - """Get the query from a file.""" + """ + Get the query from a file. + + To avoid having to write long queries in Python, we store them in separate files + in the src/dbcp/sql_queries directory. To use them, call this function with the + filename of the query you want to use. + + Args: + filename: name of the file in the sql_queries directory with the .sql extension + Returns: + the query as a string + Example: + >>> import pandas as pd + >>> from dbcp.data_mart.helpers import get_query + >>> from dbcp.helpers import get_sql_engine + >>> engine = get_sql_engine() + >>> query = get_query("get_proposed_infra_projects.sql") + >>> df = pd.read_sql(query, engine) + """ sql_query_dir = Path(__file__).parent / "sql_queries" full_path = sql_query_dir / filename return full_path.read_text() From a3650d27ac324643428066ad73ed709658985252 Mon Sep 17 00:00:00 2001 From: bendnorman Date: Tue, 12 Nov 2024 18:38:16 -0900 Subject: [PATCH 12/25] Add required packages that were in PUDL --- Dockerfile | 2 +- requirements.txt | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 1c719378..e457130a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,7 @@ # set base image (host OS) FROM python:3.10 -RUN apt-get update && apt-get install sqlite3 +RUN apt-get -y update && apt-get -y install sqlite3 RUN apt-get -y install libgdal-dev RUN useradd -d /app/ dbcp diff --git a/requirements.txt b/requirements.txt index 6d2af04d..2072b9a9 100644 --- a/requirements.txt +++ b/requirements.txt @@ -16,3 +16,9 @@ plotly~=5.15.0 gridstatus~=0.20.0 s3fs>=2022.11.0 click>=8.1.7 +numpy<2 +sqlalchemy<2 +coloredlogs~=15.0.1 +scipy~=1.14.1 +google-cloud-storage~=2.18.2 +geopandas~=1.0.1 From 03aa1c2281ac4276daa607f39ed95f4d72f26422 Mon Sep 17 00:00:00 2001 From: bendnorman Date: Wed, 13 Nov 2024 17:48:47 -0900 Subject: [PATCH 13/25] Fix iso queue change log end of quarter edge case and init directory for data update notebooks --- .../gridstatus/quarterly_update.ipynb | 970 ++++++++++++++++++ notebooks/data_updates/outputs/.gitignore | 4 + src/dbcp/data_mart/projects.py | 5 +- 3 files changed, 977 insertions(+), 2 deletions(-) create mode 100644 notebooks/data_updates/gridstatus/quarterly_update.ipynb create mode 100644 notebooks/data_updates/outputs/.gitignore diff --git a/notebooks/data_updates/gridstatus/quarterly_update.ipynb b/notebooks/data_updates/gridstatus/quarterly_update.ipynb new file mode 100644 index 00000000..ef66429a --- /dev/null +++ b/notebooks/data_updates/gridstatus/quarterly_update.ipynb @@ -0,0 +1,970 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 2, + "id": "537fc080-51d5-43fb-8780-33ac2c2a5228", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/app/.local/lib/python3.10/site-packages/geopandas/_compat.py:123: UserWarning: The Shapely GEOS version (3.11.4-CAPI-1.17.4) is incompatible with the GEOS version PyGEOS was compiled with (3.10.3-CAPI-1.16.1). Conversions between both will be slow.\n", + " warnings.warn(\n", + "/app/.local/lib/python3.10/site-packages/pudl/analysis/spatial.py:7: UserWarning: Shapely 2.0 is installed, but because PyGEOS is also installed, GeoPandas will still use PyGEOS by default for now. To force to use and test Shapely 2.0, you have to set the environment variable USE_PYGEOS=0. You can do this before starting the Python process, or in your code before importing geopandas:\n", + "\n", + "import os\n", + "os.environ['USE_PYGEOS'] = '0'\n", + "import geopandas\n", + "\n", + "In a future release, GeoPandas will switch to using Shapely by default. If you are using PyGEOS directly (calling PyGEOS functions on geometries from GeoPandas), this will then stop working and you are encouraged to migrate from PyGEOS to Shapely 2.0 (https://shapely.readthedocs.io/en/latest/migration_pygeos.html).\n", + " import geopandas as gpd\n" + ] + }, + { + "data": { + "text/plain": [ + "{'miso': '1728242350923420',\n", + " 'miso-pre-2017': '1709776311574737',\n", + " 'caiso': '1728242351254356',\n", + " 'pjm': '1728242351606642',\n", + " 'ercot': '1728242351929200',\n", + " 'spp': '1728242352244156',\n", + " 'nyiso': '1728242352584485',\n", + " 'isone': '1728242352913470'}" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import dbcp\n", + "from dbcp.extract.gridstatus_isoqueues import ISO_QUEUE_VERSIONS\n", + "import pandas as pd" + ] + }, + { + "cell_type": "markdown", + "id": "8e7c16a6-ad86-40ef-b5cd-3a10e07d112f", + "metadata": {}, + "source": [ + "## Get latest generation number for archives\n", + "Each time the [gridstatus archiver](https://github.com/deployment-gap-model-education-fund/deployment-gap-model-archiver) is run, GCS creates a new generation number for the new version of the data. The follow code grabs the latest generation number of the interconneciton queue data for each ISO." + ] + }, + { + "cell_type": "code", + "execution_count": 159, + "id": "a89c74f3-79e6-4d52-b0d9-70b04544b417", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2024-10-06 19:19:11.021000+00:00\n", + "2024-10-06 19:19:11.349000+00:00\n", + "2024-10-06 19:19:11.701000+00:00\n", + "2024-10-06 19:19:12.020000+00:00\n", + "2024-10-06 19:19:12.340000+00:00\n", + "2024-10-06 19:19:12.683000+00:00\n", + "2024-10-06 19:19:13.005000+00:00\n" + ] + } + ], + "source": [ + "from google.cloud import storage\n", + "from datetime import datetime\n", + "\n", + "def get_generation_number_closest_to_date(bucket_name, blob_name, target_date):\n", + " client = storage.Client()\n", + " bucket = client.bucket(bucket_name)\n", + "\n", + " # Enable listing versions of the blob\n", + " blobs = bucket.list_blobs(prefix=blob_name, versions=True)\n", + "\n", + " # Filter and sort blobs by time difference\n", + " closest_blob = None\n", + " min_time_diff = float('inf')\n", + " target_timestamp = target_date.timestamp()\n", + " \n", + " blobs = sorted(blobs, key=lambda blob: blob.updated.timestamp())\n", + "\n", + " for blob in blobs:\n", + " # Get the last modified time and calculate difference from target date\n", + " last_modified = blob.updated.timestamp()\n", + "\n", + " if target_timestamp < last_modified:\n", + " print(blob.updated)\n", + " return str(blob.generation)\n", + "\n", + "# Example usage\n", + "bucket_name = \"dgm-archive\"\n", + "target_date = datetime(2024, 9, 30) # Specify the date you want to find closest to\n", + "\n", + "updated_iso_queue_version = ISO_QUEUE_VERSIONS.copy()\n", + "\n", + "for iso_region in ISO_QUEUE_VERSIONS.keys():\n", + " if iso_region == \"miso-pre-2017\":\n", + " continue\n", + " blob_name = f\"gridstatus/interconnection_queues/parquet/{iso_region}.parquet\"\n", + " updated_iso_queue_version[iso_region] = get_generation_number_closest_to_date(bucket_name, blob_name, target_date)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 160, + "id": "0a1a398a-c8c2-4b97-924b-71067067cc5d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'miso': '1728242350923420',\n", + " 'miso-pre-2017': '1709776311574737',\n", + " 'caiso': '1728242351254356',\n", + " 'pjm': '1728242351606642',\n", + " 'ercot': '1728242351929200',\n", + " 'spp': '1728242352244156',\n", + " 'nyiso': '1728242352584485',\n", + " 'isone': '1728242352913470'}" + ] + }, + "execution_count": 160, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "updated_iso_queue_version" + ] + }, + { + "cell_type": "markdown", + "id": "c337d4d8-1b94-4ec9-a568-8b531930a423", + "metadata": {}, + "source": [ + "Copy and past the old version numbers from `dbcp.extract.gridstatus_isoqueues.ISO_QUEUE_VERSIONS`." + ] + }, + { + "cell_type": "code", + "execution_count": 162, + "id": "4e9d8f51-ba23-4a1f-8ac7-bd25f5cdd276", + "metadata": {}, + "outputs": [], + "source": [ + "old_queue_version = {'miso': '1719774997006069',\n", + " 'miso-pre-2017': '1709776311574737',\n", + " 'caiso': '1719774997530790',\n", + " 'pjm': '1719774998059470',\n", + " 'ercot': '1719774998544416',\n", + " 'spp': '1719774998998901',\n", + " 'nyiso': '1719774999497797',\n", + " 'isone': '1719774999940225'}" + ] + }, + { + "cell_type": "code", + "execution_count": 163, + "id": "24d9143e-ee81-47e9-999a-a6c87b26e080", + "metadata": {}, + "outputs": [], + "source": [ + "old_iso_queues = dbcp.extract.gridstatus_isoqueues.extract(old_queue_version)\n", + "new_iso_queues = dbcp.extract.gridstatus_isoqueues.extract(updated_iso_queue_version)" + ] + }, + { + "cell_type": "markdown", + "id": "eefc3252-07c8-41e5-ac83-a5e91069bcdd", + "metadata": {}, + "source": [ + "## Compare max dates of raw data\n", + "The follow code prints out the latest date a project entered a queue for each ISO in the old and new data. We should expect the latest project date in the new data to be larger than the that of the old data. There are currently two exceptions to this:\n", + "\n", + "1. CAISO: We haven't been able to figure out how CAISO publishes data about active projects in the interconneciton queue. The CAISO data from Gridstatus rarely updates so we rely on the LBNL data.\n", + "2. PJM: PJM [is working through a backlog of projects](https://www.utilitydive.com/news/pjm-fast-track-reliability-projects-interconnection-queue-invenergy/729311/) and isn't accepting new projects until mid 2026." + ] + }, + { + "cell_type": "code", + "execution_count": 166, + "id": "24357798-b604-4717-8179-9af8eec8a495", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "miso\n", + " - Old max date 2024-06-07 04:00:00+00:00\n", + " - New max date 2024-09-27 04:00:00+00:00\n", + "\n", + "caiso\n", + " - Old max date 2023-03-02 08:00:00\n", + " - New max date 2023-03-02 08:00:00\n", + "\n", + "pjm\n", + " - Old max date 2023-07-08 00:00:00\n", + " - New max date 2023-07-08 00:00:00\n", + "\n", + "ercot\n", + " - Old max date 2024-05-20 00:00:00\n", + " - New max date 2024-09-10 00:00:00\n", + "\n", + "spp\n", + " - Old max date 2024-05-07 00:00:00\n", + " - New max date 2024-08-02 00:00:00\n", + "\n", + "nyiso\n", + " - Old max date 2024-05-23 00:00:00\n", + " - New max date 2024-08-05 00:00:00\n", + "\n", + "isone\n", + " - Old max date 2024-06-26 00:00:00\n", + " - New max date 2024-08-21 00:00:00\n", + "\n" + ] + } + ], + "source": [ + "for iso_region in old_iso_queues.keys():\n", + " if iso_region == \"miso-pre-2017\":\n", + " continue\n", + " print(iso_region)\n", + " old_df = old_iso_queues[iso_region]\n", + " new_df = new_iso_queues[iso_region]\n", + " \n", + " old_df['Queue Date'] = pd.to_datetime(old_df['Queue Date'])\n", + " new_df['Queue Date'] = pd.to_datetime(new_df['Queue Date'])\n", + " \n", + " print(f\" - Old max date {old_df['Queue Date'].max()}\")\n", + " print(f\" - New max date {new_df['Queue Date'].max()}\")\n", + " print()" + ] + }, + { + "cell_type": "markdown", + "id": "e071b81d-8672-4bc4-94df-d75f665ca800", + "metadata": {}, + "source": [ + "## Compare data mart tables\n", + "The follow code compares the old and new total active capacity in regions.\n", + "\n", + "### How to grab the new data\n", + "To get the new data, replace `dbcp.extract.gridstatus_isoqueues.ISO_QUEUE_VERSIONS` with the updated generation numbers. Then run `make all`. There might be some data validation errors due to small changes in the expected number of projects. If the changes seem reasonable, just update the expected value in the assertion. If they don't seem reason, do some digging!\n", + "\n", + "Once the ETL succesfully finishes the new data is available in the databse.\n", + "\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 175, + "id": "2824fdcf-4ffb-477b-80cf-bbc91255cfc8", + "metadata": {}, + "outputs": [], + "source": [ + "from dbcp.helpers import get_sql_engine\n", + "\n", + "engine = get_sql_engine()\n", + "with engine.connect() as con:\n", + " new_iso_projects_long_format = pd.read_sql_table(\"iso_projects_long_format\", con, schema=\"data_mart\")" + ] + }, + { + "cell_type": "markdown", + "id": "6d0d8a6b-4b85-400d-81e2-161a17f43ec9", + "metadata": {}, + "source": [ + "### How to grab the old data\n", + "To grab the \"old\" data you'll need to download the latest version of the development outputs from GCS. Currently, we don't version the data that is saved to `gs://dgm-outputs/dev` so I'd recommend naming the subdirectory you save the outputs to with the github sha that was used to produce the outputs. You can find the appropriate git sha by viewing [this list](https://github.com/deployment-gap-model-education-fund/deployment-gap-model/actions/workflows/run-full-build.yml?query=branch%3Adev) of github action runs that produced the development data on GCS.\n", + "\n", + "From the root of this directory you can run this command to download all the development outputs:\n", + "\n", + "```bash\n", + "gsutil -m cp -r gs://dgm-outputs/dev notebooks/data_updates/outputs/{gitsha of recent dev build or current date}\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 177, + "id": "589264d6-4ba4-443c-ae97-88f2a8440d4a", + "metadata": {}, + "outputs": [], + "source": [ + "output_id = \"a0fc9e0\" # replace with the unique ID you choose to store the dev outputs locally\n", + "old_iso_projects_long_format = pd.read_parquet(f\"../outputs/{output_id}/dev/data_mart/iso_projects_long_format.parquet\")" + ] + }, + { + "cell_type": "code", + "execution_count": 178, + "id": "1e4ad65c-55cc-4200-bd99-80bed7d36295", + "metadata": {}, + "outputs": [], + "source": [ + "def agg_iso_projects_long_format(df):\n", + " \"\"\"Calculate some aggregate metrics for each ISO\"\"\"\n", + " agg = df.groupby(\"iso_region\").agg({\"surrogate_id\": \"count\", \"capacity_mw\": \"sum\", \"date_entered_queue\": \"max\"})\n", + " agg = agg.rename(columns={\"surrogate_id\": \"n_projects\", \"capacity_mw\": \"total_capacity_mw\", \"date_entered_queue\": \"max_date_entered_queue\"})\n", + " return agg\n", + "\n", + "old_project_agg = agg_iso_projects_long_format(old_iso_projects_long_format)\n", + "new_project_agg = agg_iso_projects_long_format(new_iso_projects_long_format)" + ] + }, + { + "cell_type": "code", + "execution_count": 179, + "id": "b795b90f-a4c4-44ba-9465-e557b623e437", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "iso_region\n", + "CAISO 2023-04-17 00:00:00\n", + "ERCOT 2024-09-10 00:00:00\n", + "ISONE 2024-08-21 00:00:00\n", + "MISO 2024-09-27 04:00:00\n", + "NYISO 2024-08-05 00:00:00\n", + "PJM 2023-07-08 00:00:00\n", + "SPP 2024-08-02 00:00:00\n", + "Southeast (non-ISO) 2023-12-15 00:00:00\n", + "West (non-ISO) 2023-12-30 00:00:00\n", + "Name: max_date_entered_queue, dtype: datetime64[ns]" + ] + }, + "execution_count": 179, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "new_project_agg.max_date_entered_queue" + ] + }, + { + "cell_type": "code", + "execution_count": 180, + "id": "0ec5e6f2-2aba-4d8c-8176-d3a6f818e364", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
n_projects_oldtotal_capacity_mw_oldmax_date_entered_queue_oldn_projects_newtotal_capacity_mw_newmax_date_entered_queue_new
iso_region
CAISO1410500444.80002023-04-17 00:00:001410500444.80002023-04-17 00:00:00
ERCOT1524303194.47002024-05-20 00:00:001605322303.20002024-09-10 00:00:00
ISONE52971354.41902024-06-26 00:00:0050360720.35122024-08-21 00:00:00
MISO2226382090.33002024-06-07 04:00:002186378040.10002024-09-27 04:00:00
NYISO23727591.48002024-05-21 00:00:0019824891.90002024-08-05 00:00:00
PJM2664203395.89682023-07-08 00:00:002569203615.43182023-07-08 00:00:00
SPP624123440.96202024-05-07 00:00:00610121268.00202024-08-02 00:00:00
Southeast (non-ISO)1072136024.03002023-12-15 00:00:001072136024.03002023-12-15 00:00:00
West (non-ISO)2542488401.05002023-12-30 00:00:002542488401.05002023-12-30 00:00:00
\n", + "
" + ], + "text/plain": [ + " n_projects_old total_capacity_mw_old max_date_entered_queue_old n_projects_new total_capacity_mw_new max_date_entered_queue_new\n", + "iso_region \n", + "CAISO 1410 500444.8000 2023-04-17 00:00:00 1410 500444.8000 2023-04-17 00:00:00\n", + "ERCOT 1524 303194.4700 2024-05-20 00:00:00 1605 322303.2000 2024-09-10 00:00:00\n", + "ISONE 529 71354.4190 2024-06-26 00:00:00 503 60720.3512 2024-08-21 00:00:00\n", + "MISO 2226 382090.3300 2024-06-07 04:00:00 2186 378040.1000 2024-09-27 04:00:00\n", + "NYISO 237 27591.4800 2024-05-21 00:00:00 198 24891.9000 2024-08-05 00:00:00\n", + "PJM 2664 203395.8968 2023-07-08 00:00:00 2569 203615.4318 2023-07-08 00:00:00\n", + "SPP 624 123440.9620 2024-05-07 00:00:00 610 121268.0020 2024-08-02 00:00:00\n", + "Southeast (non-ISO) 1072 136024.0300 2023-12-15 00:00:00 1072 136024.0300 2023-12-15 00:00:00\n", + "West (non-ISO) 2542 488401.0500 2023-12-30 00:00:00 2542 488401.0500 2023-12-30 00:00:00" + ] + }, + "execution_count": 180, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "both_project_aggs = old_project_agg.merge(new_project_agg, left_index=True, right_index=True, validate=\"1:1\", suffixes=(\"_old\", \"_new\"))\n", + "both_project_aggs" + ] + }, + { + "cell_type": "code", + "execution_count": 181, + "id": "dd0a7b2f-81f2-4818-88a9-edbf10d77c55", + "metadata": {}, + "outputs": [], + "source": [ + "# Calculate the differences between the old and new\n", + "for col in old_project_agg.columns:\n", + " if pd.api.types.is_datetime64_any_dtype(old_project_agg[col]):\n", + " continue\n", + " else:\n", + " both_project_aggs[f\"{col}_pct_diff\"] = (both_project_aggs[f\"{col}_new\"] - both_project_aggs[f\"{col}_old\"]) / both_project_aggs[f\"{col}_old\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 182, + "id": "58310980-9365-4e71-a989-55d1b4625367", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
n_projects_pct_difftotal_capacity_mw_pct_diff
iso_region
CAISO0.0000000.000000
West (non-ISO)0.0000000.000000
MISO-1.796945-1.060019
ERCOT5.3149616.302467
PJM-3.5660660.107935
Southeast (non-ISO)0.0000000.000000
SPP-2.243590-1.760323
ISONE-4.914934-14.903166
NYISO-16.455696-9.784107
\n", + "
" + ], + "text/plain": [ + " n_projects_pct_diff total_capacity_mw_pct_diff\n", + "iso_region \n", + "CAISO 0.000000 0.000000\n", + "West (non-ISO) 0.000000 0.000000\n", + "MISO -1.796945 -1.060019\n", + "ERCOT 5.314961 6.302467\n", + "PJM -3.566066 0.107935\n", + "Southeast (non-ISO) 0.000000 0.000000\n", + "SPP -2.243590 -1.760323\n", + "ISONE -4.914934 -14.903166\n", + "NYISO -16.455696 -9.784107" + ] + }, + "execution_count": 182, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "old_project_agg\n", + "\n", + "both_project_aggs.sort_values(by=\"total_capacity_mw_old\", ascending=False)[[\"n_projects_pct_diff\", \"total_capacity_mw_pct_diff\"]] * 100" + ] + }, + { + "cell_type": "markdown", + "id": "13e7273f-2f8b-49b9-86bb-3f07a4a0b83e", + "metadata": {}, + "source": [ + "We don't use Gridstatus for CAISO for the reasons stated above so we filter it out in this analysis." + ] + }, + { + "cell_type": "code", + "execution_count": 183, + "id": "ce15a3de-05ca-44f6-bc80-478cef9af017", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
n_projects_oldtotal_capacity_mw_oldmax_date_entered_queue_oldn_projects_newtotal_capacity_mw_newmax_date_entered_queue_newn_projects_pct_difftotal_capacity_mw_pct_diff
iso_region
ERCOT1524303194.47002024-05-20 00:00:001605322303.20002024-09-10 00:00:000.0531500.063025
ISONE52971354.41902024-06-26 00:00:0050360720.35122024-08-21 00:00:00-0.049149-0.149032
MISO2226382090.33002024-06-07 04:00:002186378040.10002024-09-27 04:00:00-0.017969-0.010600
NYISO23727591.48002024-05-21 00:00:0019824891.90002024-08-05 00:00:00-0.164557-0.097841
PJM2664203395.89682023-07-08 00:00:002569203615.43182023-07-08 00:00:00-0.0356610.001079
SPP624123440.96202024-05-07 00:00:00610121268.00202024-08-02 00:00:00-0.022436-0.017603
\n", + "
" + ], + "text/plain": [ + " n_projects_old total_capacity_mw_old max_date_entered_queue_old n_projects_new total_capacity_mw_new max_date_entered_queue_new n_projects_pct_diff total_capacity_mw_pct_diff\n", + "iso_region \n", + "ERCOT 1524 303194.4700 2024-05-20 00:00:00 1605 322303.2000 2024-09-10 00:00:00 0.053150 0.063025\n", + "ISONE 529 71354.4190 2024-06-26 00:00:00 503 60720.3512 2024-08-21 00:00:00 -0.049149 -0.149032\n", + "MISO 2226 382090.3300 2024-06-07 04:00:00 2186 378040.1000 2024-09-27 04:00:00 -0.017969 -0.010600\n", + "NYISO 237 27591.4800 2024-05-21 00:00:00 198 24891.9000 2024-08-05 00:00:00 -0.164557 -0.097841\n", + "PJM 2664 203395.8968 2023-07-08 00:00:00 2569 203615.4318 2023-07-08 00:00:00 -0.035661 0.001079\n", + "SPP 624 123440.9620 2024-05-07 00:00:00 610 121268.0020 2024-08-02 00:00:00 -0.022436 -0.017603" + ] + }, + "execution_count": 183, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from dbcp.data_mart.projects import GS_REGIONS\n", + "\n", + "changed_project_aggs = both_project_aggs[both_project_aggs.index.isin(GS_REGIONS)]\n", + "\n", + "changed_project_aggs" + ] + }, + { + "cell_type": "markdown", + "id": "a3cdeb1e-48e4-4aae-aa5a-4a9c57eadd07", + "metadata": {}, + "source": [ + "Make sure there isn't an surprising change in total capacity between the old and new data. We currently don't expect the active capacity to change that much in the span of a quarter. The `max_change` value is an arbitrary number so dig into the data if something looks fishy to you.\n", + "\n", + "It's challenging to validate total capacity changes in ISOs. If there is an unexpected change, I would check the ISO's website to see if they changed their study process. For example, there was a surprising drop in active capacity in NYISO during the 2024 Q4 update. It turns out they [changed their study process](https://www.utilitydive.com/news/new-york-iso-reforms-interconnection-queue-launches-cluster-study/724054/) and the layout of the spreadsheet Gridstatus pulls in. Sites like S&P and Utility Drive might have relevant informaiton." + ] + }, + { + "cell_type": "code", + "execution_count": 186, + "id": "9e058ac1-ba06-445f-b7a5-2f47b9e7f738", + "metadata": {}, + "outputs": [], + "source": [ + "mw_pct_diff = changed_project_aggs[\"total_capacity_mw_pct_diff\"].abs()\n", + "max_change = 0.2\n", + "assert mw_pct_diff.lt(max_change).all(), f\"{mw_pct_diff} substantial change in an ISO's interconneciton queue active capacity.\"" + ] + }, + { + "cell_type": "markdown", + "id": "f5c32300-1c24-4d71-8031-289484957332", + "metadata": {}, + "source": [ + "## Charts\n", + "The `iso_regions_active_projects_capacity_mw_change_log` data mart table contains historic snapshots of total active capacity in the ISO queues. Ploting the change over time if helpful for identifying issues with the data update." + ] + }, + { + "cell_type": "code", + "execution_count": 187, + "id": "0e0a0cbb-805d-4e8e-a6b2-94b0db2695a3", + "metadata": {}, + "outputs": [], + "source": [ + "with engine.connect() as con:\n", + " iso_regions_active_projects_capacity_mw_change_log = pd.read_sql_table(\"iso_regions_active_projects_capacity_mw_change_log\", con, schema=\"data_mart\")" + ] + }, + { + "cell_type": "code", + "execution_count": 188, + "id": "1416a051-132f-43e5-8a1f-e0fed1e551bc", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "iso_region\n", + "CAISO 2024-09-30\n", + "ISONE 2024-09-30\n", + "MISO 2024-09-30\n", + "NYISO 2024-09-30\n", + "PJM 2027-09-30\n", + "SPP 2024-09-30\n", + "Name: report_date, dtype: datetime64[ns]" + ] + }, + "execution_count": 188, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "iso_regions_active_projects_capacity_mw_change_log.groupby(\"iso_region\").report_date.max()" + ] + }, + { + "cell_type": "code", + "execution_count": 189, + "id": "61987565-1958-4ec0-8717-1a08cbd6e7f2", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkIAAAJLCAYAAAALqPnIAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/P9b71AAAACXBIWXMAAA9hAAAPYQGoP6dpAACMIklEQVR4nO3deXhM5/s/8Pdk3yRjy6JkUVtiF0uDkqJia2kpSlGl/VDaopZq7e3nU6WqlNLaQkupVjdLUMQaWyKoiFqi0ZKgSKxZ798f/eb8TCWZCY/kjHm/rivX1Znn5D3383had8+cOWMQEQERERGRDbIr6QKIiIiISgobISIiIrJZbISIiIjIZrERIiIiIpvFRoiIiIhsFhshIiIisllshIiIiMhmsREiIiIim8VGiIiIiGwWGyEiIiKyWWyEiMgqnD59Gv/5z39QuXJluLi4wNPTE82aNcOsWbNw+/Ztk2NzcnJQoUIFGAwGbNiwId+8SZMmwWAw4PLlyybP//LLL2jZsiW8vb3h5uaGypUro3v37oiKiron4++//8aoUaNQvXp1uLi4oEyZMoiIiMDatWvVTZyIHiqHki6AiMicdevW4YUXXoCzszP69u2LWrVqITMzE7t27cKoUaNw7NgxfPnll9rxW7duxYULFxAYGIjly5ejffv2Fr3Oxx9/jFGjRqFly5YYO3Ys3NzccOrUKfz6669YuXIl2rVrpx174sQJtG7dGpcuXUL//v3RsGFDXLt2DcuXL8czzzyDkSNHYvr06crXgojUYiNERLqWlJSEnj17IiAgAFu3boWfn582NmTIEJw6dQrr1q0z+Z2vv/4aDRo0QL9+/fDuu+/i5s2bcHd3L/R1srOz8f777+Ppp5/Gpk2b7hm/ePGi9s9ZWVno1q0brl69ih07dqBJkyba2PDhw9G7d298/PHHaNiwIXr06HG/UyeiYsC3xohI16ZNm4YbN25g0aJFJk1QnipVquCtt97SHt++fRs//PADevbsie7du+P27dv46aefzL7O5cuXkZ6ejmbNmuU77u3trf3z999/j99++w3vvPOOSRMEAPb29vjiiy9gNBoxadIkC2dJRCWFjRAR6dovv/yCypUro2nTphYd//PPP+PGjRvo2bMnfH19ER4ejuXLl5v9PW9vb7i6uuKXX37BlStXzNYEAH379s133MvLC507d0Zi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HBwcsH37dsyePRsODg7w8fFBZmYmrl27ZvJ7qamp8PX1BQD4+vre88mtvMfmjvH09ISrqyvKlSsHe3v7fI+5O8NcLf/m7OwMT09Pkx8iIiJ6dBWpEWrdujWOHj2K+Ph47adhw4bo3bu39s+Ojo7YsmWL9jsnTpxAcnIywsLCAABhYWE4evSoyae7Nm/eDE9PT4SEhGjH3J2Rd0xehpOTE0JDQ02Oyc3NxZYtW7RjQkNDzdZCREREtq1I1wiVKlUKtWrVMnnO3d0dZcuW1Z4fMGAARowYgTJlysDT0xNvvPEGwsLC8MQTTwAA2rZti5CQEPTp0wfTpk1DSkoKxo0bhyFDhsDZ2RkAMGjQIMyZMwejR4/GK6+8gq1bt+Lbb7/FunXrtNcdMWIE+vXrh4YNG6Jx48b49NNPcfPmTfTv3x8A4OXlZbYWIiIism1FvljanJkzZ8LOzg5du3ZFRkYGIiIi8Pnnn2vj9vb2WLt2LQYPHoywsDC4u7ujX79+mDJlinZMUFAQ1q1bh+HDh2PWrFmoWLEiFi5ciIiICO2YHj164NKlS5gwYQJSUlJQr149REVFmVxAba4WIiIism0GEZGSLkKv0tPT4eXlhbS0NF4vREREGsNkg9ljZKL5v16LM0ePNVmScz9ZRfn7m981RkRERDaLjRARERHZLDZCREREZLPYCBEREZHNYiNERERENouNEBEREdksNkJERERks9gIERERkc1iI0REREQ2i40QERER2Sw2QkRERGSz2AgRERGRzWIjRERERDaLjRARERHZLDZCREREZLPYCBEREZHNYiNERERENouNEBEREdksNkJERERks9gIERERkc1iI0REREQ2i40QERER2Sw2QkRERGSz2AgRERGRzWIjRERERDaLjRARERHZLDZCREREZLPYCBEREZHNYiNERERENouNEBEREdksNkJERERks9gIERERkc1iI0REREQ2i40QERER2Sw2QkRERGSz2AgRERGRzWIjRERERDaLjRARERHZLDZCREREZLPYCBEREZHNYiNERERENouNEBEREdksNkJERERks9gIERERkc1iI0REREQ2i40QERER2Sw2QkRERGSz2AgRERGRzWIjRERERDaLjRARERHZLDZCREREZLPYCBEREZHNYiNERERENouNEBEREdksNkJERERks9gIERERkc1iI0REREQ2i40QERER2Sw2QkRERGSzitQIzZs3D3Xq1IGnpyc8PT0RFhaGDRs2aON37tzBkCFDULZsWXh4eKBr165ITU01yUhOTkbHjh3h5uYGb29vjBo1CtnZ2SbHREdHo0GDBnB2dkaVKlUQGRl5Ty1z585FYGAgXFxc0KRJE+zfv99k3JJaiIiIyLYVqRGqWLEipk6ditjYWBw8eBCtWrVC586dcezYMQDA8OHD8csvv2D16tXYvn07zp8/j+eff177/ZycHHTs2BGZmZnYs2cPli5disjISEyYMEE7JikpCR07dsRTTz2F+Ph4DBs2DAMHDsTGjRu1Y1atWoURI0Zg4sSJiIuLQ926dREREYGLFy9qx5irhYiIiMggIvIgAWXKlMH06dPRrVs3lC9fHitWrEC3bt0AAImJiQgODkZMTAyeeOIJbNiwAZ06dcL58+fh4+MDAJg/fz7GjBmDS5cuwcnJCWPGjMG6devw22+/aa/Rs2dPXLt2DVFRUQCAJk2aoFGjRpgzZw4AIDc3F5UqVcIbb7yBd955B2lpaWZrsUR6ejq8vLyQlpYGT0/PB1kmIiJ6hBgmG8weIxPN//VanDl6rMmSnPvJKsrf3/d9jVBOTg5WrlyJmzdvIiwsDLGxscjKykKbNm20Y2rUqAF/f3/ExMQAAGJiYlC7dm2tCQKAiIgIpKena2eVYmJiTDLyjsnLyMzMRGxsrMkxdnZ2aNOmjXaMJbXkJyMjA+np6SY/RERE9OgqciN09OhReHh4wNnZGYMGDcIPP/yAkJAQpKSkwMnJCUaj0eR4Hx8fpKSkAABSUlJMmqC88byxwo5JT0/H7du3cfnyZeTk5OR7zN0Z5mrJz4cffggvLy/tp1KlSpYtChEREVmlIjdC1atXR3x8PPbt24fBgwejX79+SEhIeBi1FbuxY8ciLS1N+zl37lxJl0REREQPkUNRf8HJyQlVqlQBAISGhuLAgQOYNWsWevTogczMTFy7ds3kTExqaip8fX0BAL6+vvd8uivvk1x3H/PvT3elpqbC09MTrq6usLe3h729fb7H3J1hrpb8ODs7w9nZuQirQURERNbsge8jlJubi4yMDISGhsLR0RFbtmzRxk6cOIHk5GSEhYUBAMLCwnD06FGTT3dt3rwZnp6eCAkJ0Y65OyPvmLwMJycnhIaGmhyTm5uLLVu2aMdYUgsRERFRkc4IjR07Fu3bt4e/vz+uX7+OFStWIDo6Ghs3boSXlxcGDBiAESNGoEyZMvD09MQbb7yBsLAw7VNabdu2RUhICPr06YNp06YhJSUF48aNw5AhQ7QzMYMGDcKcOXMwevRovPLKK9i6dSu+/fZbrFu3TqtjxIgR6NevHxo2bIjGjRvj008/xc2bN9G/f38AsKgWIiIioiI1QhcvXkTfvn1x4cIFeHl5oU6dOti4cSOefvppAMDMmTNhZ2eHrl27IiMjAxEREfj888+137e3t8fatWsxePBghIWFwd3dHf369cOUKVO0Y4KCgrBu3ToMHz4cs2bNQsWKFbFw4UJERERox/To0QOXLl3ChAkTkJKSgnr16iEqKsrkAmpztRARERE98H2EHmW8jxAREeVHb/fa4X2ESuA+QkRERETWjo0QERER2Sw2QkRERGSz2AgRERGRzWIjRERERDaLjRARERHZLDZCREREZLPYCBEREZHNYiNERERENouNEBEREdksNkJERERks9gIERERkc1iI0REREQ2i40QERER2Sw2QkRERGSz2AgRERGRzWIjRERERDaLjRARERHZLDZCREREZLPYCBEREZHNYiNERERENouNEBEREdksNkJERERks9gIERERkc1iI0REREQ2i40QERER2Sw2QkRERGSz2AgRERGRzWIjRERERDaLjRARERHZLDZCREREZLPYCBEREZHNYiNERERENouNEBEREdksNkJERERksxxKugAiouIyefJks8dMnDixGCohIr3gGSEiIiKyWWyEiIiIyGbxrTEishkTJ02y4CC+NUZkS3hGiIiIiGwWzwgRkc0wTDJ/jDz0KohIT9gIEREVET99RvTo4FtjREREZLN4RoiIqIRYcmYJsOzskqqzVDzbRbaGjRARURHx02eWYVNF1oCNEBFREam66NqihgqwqKlic0Z0f9gIERGVEEsaKqB4P8nGhopsDRshIqJHgKqzVCpvMcCmiqwBGyEiInooeN8msgb8+DwRERHZLDZCREREZLPYCBEREZHNYiNERERENouNEBEREdksNkJERERks9gIERERkc1iI0REREQ2i40QERER2Sw2QkRERGSzitQIffjhh2jUqBFKlSoFb29vdOnSBSdOnDA55s6dOxgyZAjKli0LDw8PdO3aFampqSbHJCcno2PHjnBz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118Xg8EgdnZ20qJFC0lLSzObc/78eWnWrJnY29tLixYt5MqVK9KxY0cxGAxiMBikWrVqcv78+WLLUZmltzVSmaWypgULFkjfvn1l8eLFIiKycuVKqVGjhgQFBcmECRMsyhARycrKkvfee09atGih/d60adPEzc1NnJyctD+D4srRY02q9qTKLJU1cS9ZlqVinfQ4N72tkV7nVhg2QkUwdOhQqVGjhsyePVvCw8Olc+fOUqtWLdm1a5ds375dQkJC5N133zWb06dPH2natKn8/PPP0qNHD2natKk8+eST8ueff8off/whzZo1kyFDhhRbjsosva2RyixVOTNnzhR3d3d5/vnnxc/PTz744AMpW7asfPDBBzJ58mTx9PSUL774wqK5jRs3Tnx8fGTEiBESEhIigwYNkkqVKsnXX38tS5culccee0w++uijYsvRY02q9qTKLFU53EuWZalaJz3OTW9rpMe5mcNGqAgqVaokW7duFRGRv/76SwwGg/zyyy/a+Nq1ay36KJ+fn5/ExMSIiMjff/8tBoNBfv31V218y5YtUrly5WLLUZmltzVSmaUqp0aNGrJ8+XIREYmLixMHBweTj+UvXLhQQkNDLZpb5cqVtfU9efKk2NnZycqVK7XxVatWSa1atYotR481qdqTKrNU5XAvWZalap30ODe9rZEe52YOG6EicHZ2luTkZO2xm5ubnDhxQnt89uxZcXNzM5vj4uJikuPu7i4nT57UHv/xxx/i6upabDkqs/S2RiqzVOW4urrKH3/8oT12dnaW3377TXt88uRJMRqNZnPyq8nFxUWOHz+uPT5z5oyUKlWq2HL0WJOqPakyS1UO95JlWarWSY9z09saqaxJ5XoXhhdLF0HZsmVx6dIl7XHnzp1hNBq1xzdu3LDoW6i9vb1x4cIF7fHQoUNRpkwZ7fHVq1fh7u5ebDkqs/S2RiqzVOW4ubnh5s2b2uPy5cvDw8PD5Jjs7GyzOQDg5eWFa9euaY8bNGiAUqVKaY8zMjJgMBiKLUePNanakyqzVOVwL1mWpWqd9Dg3va2RyppUrndh2AgVQZ06dXDgwAHt8YoVK+Dt7a09PnDgQIFf43C3evXqISYmRns8depUk79Qd+3ahTp16hRbjsosva2RyixVOTVq1DD5bpxz586Z3OMjMTHR4vvahISEIC4uTnu8e/duPPbYY9rj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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjkAAAJLCAYAAAAFAYenAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/P9b71AAAACXBIWXMAAA9hAAAPYQGoP6dpAACTQUlEQVR4nOzdeXxM1/8/8NdM9kUytiwqkiAksYUgYkuQiqClKEpRpb5UqqSWai2hC6XWWtIiCS0fqlVtLSENoYgtBBVRSzRtSVAk1qzn9we5PyPbhCu5uV7Px2Mej86cO+95nzPnNm937j1XI4QQICIiIlIZbXknQERERPQ8sMghIiIiVWKRQ0RERKrEIoeIiIhUiUUOERERqRKLHCIiIlIlFjlERESkSixyiIiISJVY5BAREZEqscghIiIiVWKRQ0TlJjIyEhqNBkePHpVe27dvH4KCgvDSSy/B3NwctWrVwiuvvIJ169YVeP/du3fxySefoHHjxrC0tIStrS3atWuHNWvWoLA71mg0Gmg0GsybN8+gXEJDQ6X3FPZITU2VaSSI6HkwLu8EiIjybdy4Ef369YOXlxfef/99VK5cGcnJydi7dy9WrFiBAQMGSNumpaWhU6dOOHPmDPr374/g4GA8ePAAP/74I4YMGYJt27Zh7dq1MDIyKvA5c+fOxahRo2BpaWlQXsuXL4e1tXWB13U63VP3lYiePxY5RKQYoaGh8PT0xMGDB2FqaqrXdvXqVb3nQ4YMwZkzZ/DTTz/h1VdflV4fM2YMJkyYgC+//BJNmzbFpEmT9N7n5eWFhIQEhIWFISQkxKC8+vTpg2rVqj1lr4iovPDnKiJSjAsXLqBFixYFChwAsLOzk/774MGD2LFjB9566y29AiffrFmz4Obmhi+++AL379/Xa2vTpg06duyIOXPmFGgjInVhkUNEiuHs7IyYmBj8888/xW7366+/AgAGDx5caLuxsTEGDBiAmzdvYv/+/QXaQ0NDkZaWhuXLlxuU140bN3D9+nW9x61btwx6LxGVHxY5RKQYkyZNwt9//406deqgY8eOmDZtGvbt24e8vDy97RITEwEATZo0KTJWftuZM2cKtLVr1w4dOnTA3LlzDTqaU79+fVSvXl3v0apVq9J0jYjKAc/JISLFePvtt/HSSy9h/vz52L17N3bv3o1PPvkEtWvXxrfffovWrVsDAG7fvg0AqFSpUpGx8tsyMjIKbQ8NDYWfnx/CwsIwbty4YvP68ccfYWNjo/ealZWVwf0iovLBIoeIFCUwMBCBgYG4d+8e4uPjsWHDBoSFhaF79+5ISkqCnZ2dVMDcvn27yCucSiqE2rdvjw4dOmDOnDkYOXJksTm1b9+eJx4TVUD8uYqIFMnS0hLt2rXDkiVLMGXKFNy8eRPbt28HAHh4eAAATp48WeT789s8PT2L3Gb69OlITU3F119/LWPmRKQULHKISPGaN28OALhy5QoAoHv37gCANWvWFLp9bm4u1q1bh8qVK6NNmzZFxvXz84O/v3+hV2ERUcXHIoeIFCMmJqbQ17dt2wbg4QnAANC6dWsEBAQgIiICW7ZsKbD9xx9/jD///BMTJ06EhYVFsZ8ZGhqK1NRUfPPNN8+YPREpDc/JISLF6NGjB1xdXfHKK6+gTp06uHv3Ln777Tf8+uuvaNGiBV555RVp2zVr1qBTp07o0aMHBgwYgHbt2iEzMxObNm1CbGws+vXrhwkTJpT4mX5+fvDz88OePXuK3OaHH34odMXjl19+Gfb29k/XWSJ67ljkEJFirFy5Ej///DO+//57XL58GUII1K5dGx9//DEmTZoEY+P//78sR0dHHD58GPPmzcPGjRvx448/wtjYGI0bN0ZkZCQGDx4MjUZj0OeGhoaiQ4cORbaPGjWq0Nd3797NIodIwTSisLvYEREREVVwPCeHiIiIVIlFDhEREakSixwiIiJSJRY5REREpEoscoiIiEiVWOQQERGRKr3Q6+Tk5eXh8uXLqFSpksHraRAREVH5EkLg9u3bqFGjBrTaoo/XvNBFzuXLl+Hk5FTeaRAREdFT+Pvvv1GzZs0i21/oIqdSpUoAHg6SjY1NOWdDREREhsjIyICTk5P0d7woL3SRk/8TlY2NDYscIiKiCqakU0144jERERGpEoscIiIiUiUWOURERKRKL/Q5OYbIzc1FdnZ2eadBJCsjIyMYGxtz6QQiUjUWOcW4c+cO/vnnHwghyjsVItlZWlrC0dERpqam5Z0KEdFzwSKnCLm5ufjnn39gaWmJ6tWr81+8pBpCCGRlZeHatWtITk6Gm5tbsYtpERFVVCxyipCdnQ0hBKpXrw4LC4vyTodIVhYWFjAxMcFff/2FrKwsmJubl3dKRESy4z/fSsAjOKRWPHpDRGrH/8sRERGRKrHIISIiIlXiOTmlpJlRtj9fienyXdl16dIluLq64vjx4/Dy8pIt7otAo9Hgp59+Qs+ePcs7FSIiMhCP5BAZ4MqVKwgKCgLwsFjUaDRISEgo36SIiKhYPJJDZAAHB4fyToGIiEqJR3JUKC8vD3PmzEHdunVhZmaGWrVq4bPPPit02z/++ANBQUGwtraGvb09Bg0ahOvXr0vtUVFRaNu2LXQ6HapWrYru3bvjwoULUnv+UY1NmzahQ4cOsLS0RJMmTRAXF2dwvvv374e/vz8sLS1RuXJlBAYG4ubNm6X6/PXr16N169YwNzdHw4YNsWfPHmmb3NxcDBs2DK6urrCwsED9+vWxaNGiAnmEh4ejQYMGMDMzg6OjI4KDg6U2jUaDzZs3AwBcXV0BAE2bNoVGo4G/vz/27t0LExMTpKam6sUcO3Ys2rVrV+IYREZGQqfTYcuWLahfvz4sLS3Rp08f3Lt3D6tXr4aLiwsqV66MMWPGIDc3FwCwZMkSNGzYUIqxefNmaDQahIWFSa8FBARgypQpJX4+EZEa8UiOCk2ePBkrVqzAggUL0LZtW1y5cgVJSUkFtrt16xY6duyI4cOHY8GCBbh//z4mTZqEvn37YteuXQCAu3fvIiQkBI0bN8adO3cwbdo0vPbaa0hISNC7BPnjjz/Gl19+CTc3N3z88cd44403cP78eRgbFz/FEhIS0KlTJ7z99ttYtGgRjI2NsXv3bukPuaGfP2HCBCxcuBCenp6YP38+XnnlFSQnJ6Nq1arIy8tDzZo1sXHjRlStWhUHDhzAiBEj4OjoiL59+wIAli9fjpCQEMyePRtBQUFIT0/H/v37C8358OHDaNmyJX777Tc0aNAApqamqFKlCmrXro1vv/0WEyZMAPBwraW1a9dizpw5Bn1v9+7dw+LFi7F+/Xrcvn0bvXr1wmuvvQadTodt27bh4sWL6N27N9q0aYN+/frBz88PY8aMwbVr11C9enXs2bMH1apVQ2xsLEaOHIns7GzExcXhww8/NOjziYgMNWPGDIO2mz59+nPOpHilOpLj4uICjUZT4DF69GgAwIMHDzB69GhUrVoV1tbW6N27N9LS0vRipKSkoFu3brC0tISdnR0mTJiAnJwcvW1iY2PRrFkzmJmZoW7duoiMjCyQy9KlS+Hi4gJzc3P4+Pjg8OHDpey6Ot2+fRuLFi3CnDlzMGTIENSpUwdt27bF8OHDC2y7ZMkSNG3aFJ9//jnc3d3RtGlThIeHY/fu3fjzzz8BAL1790avXr1Qt25deHl5ITw8HKdOnUJiYqJerPHjx6Nbt26oV68eZsyYgb/++gvnz58vMd85c+agefPmWLZsGZo0aYIGDRogODgY1apVK9XnBwcHo3fv3vDw8MDy5ctha2uLVatWAQBMTEwwY8YMNG/eHK6urhg4cCCGDh2K77//Xnr/p59+ig8++ADvv/8+6tWrhxYtWmDs2LGF5ly9enUAQNWqVeHg4IAqVaoAAIYNG4aIiAhpu19//RUPHjyQCqmSZGdnY/ny5WjatCnat2+PPn36YN++fVi1ahU8PT3RvXt3dOjQAbt37wYANGzYEFWqVJGOWsXGxuKDDz6Qnh8+fBjZ2dlo3bq1QZ9PRKQ2pSpyjhw5gitXrkiP6OhoAMDrr78OABg3bhx+/fVXbNy4EXv27MHly5fRq1cv6f25ubno1q0bsrKycODAAaxevRqRkZGYNm2atE1ycjK6deuGDh06ICEhAWPHjsXw4cOxY8cOaZsNGzYgJCQE06dPx7Fjx9CkSRMEBgbi6tWrzzQYanDmzBlkZmaiU6dOJW574sQJ7N69G9bW1tLD3d0dAKSfhM6dO4c33ngDtWvXho2NDVxcXAA8LFYf17hxY+m/HR0dAcCg7yP/SE5RDP18X19f6b+NjY3RvHlznDlzRnpt6dKl8Pb2RvXq1WFtbY1vvvlGinH16lVcvnzZoDErzltvvYXz58/j4MGDAB7+BNW3b19YWVkZ9H5LS0vUqVNHem5vbw8XFxdYW1vrvZY/rhqNBu3bt0dsbCxu3bqFxMREvPvuu8jMzERSUhL27NmDFi1awNLS8pn6RURUUZXq56r8f8Hmmz17NurUqQM/Pz+kp6dj1apVWLduHTp27AgAiIiIgIeHBw4ePIhWrVph586dSExMxG+//QZ7e3t4eXnhk08+waRJkxAaGgpTU1OEhYXB1dUV8+bNAwB4eHhg3759WLBgAQIDAwEA8+fPxzvvvIOhQ4cCAMLCwrB161aEh4e/8IfmS3MLijt37uCVV17BF198UaAtv1B55ZVX4OzsjBUrVqBGjRrIy8tDw4YNkZWVpbe9iYmJ9N/5q0Tn5eU9c76Gfn5x1q9fj/Hjx2PevHnw9fVFpUqVMHfuXBw6dMigHAxlZ2eHV155BREREXB1dcX27dsRGxtr8PsfH0Pg4TgW9trj4+rv749vvvkGv//+O5o2bQobGxup8NmzZw/8/PyeqU9ERBXZU594nJWVhe+++w5vv/02NBoN4uPjkZ2djYCAAGkbd3d31KpVSzoJNS4uDo0aNYK9vb20TWBgIDIyMnD69Glpm8dj5G+THyMrKwvx8fF622i1WgQEBJR4smtmZiYyMjL0Hmrj5uYGCwsLxMTElLhts2bNcPr0abi4uKBu3bp6DysrK/z33384e/YspkyZgk6dOsHDw0M6IVgujRs3LjLX0nx+/tETAMjJyUF8fDw8PDwAPDyxuXXr1nj33XfRtGlT1K1bV+/k5UqVKsHFxcWgMQMg3bU7/7yhxw0fPhwbNmzAN998gzp16qBNmzYGxXxafn5+SExMxMaNG+Hv7w/gYeHz22+/SSd0ExG9qJ66yNm8eTNu3bqFt956CwCQmpoKU1NT6HQ6ve3s7e2lK05SU1P1Cpz89vy24rbJyMjA/fv3cf36deTm5ha6zZNXtjxp1qxZsLW1lR5OTk6l6nNFYG5ujkmTJmHixIlYs2YNLly4gIMHD0rnpzxu9OjRuHHjBt544w0cOXIEFy5cwI4dOzB06FDk5uaicuXKqFq1Kr755hucP38eu3btQkhIiKz5Tp48GUeOHMG7776LkydPIikpCcuXL8f169dL9flLly7FTz/9hKSkJIwePRo3b97E22+/DeBh4Xf06FHs2LEDf/75J6ZOnYojR47ovT80NBTz5s3D4sWLce7cORw7dgxfffVVoZ9lZ2cHCwsLREVFIS0tDenp6VJbYGAgbGxs8Omnn0pHGp+nxo0bo3Llyli3bp1ekbN582ZkZmY+9yKLiEjJnvrqqlWrViEoKAg1atSQM5/navLkyXp/JDMyMkpd6Mi5AvHzMnXqVBgbG2PatGm4fPkyHB0dMXLkyALb1ahRA/v378ekSZPQuXNnZGZmwtnZGV26dIFWq5UuzR4zZgwaNmyI+vXrY/HixbIeHahXrx527tyJjz76CC1btoSFhQV8fHzwxhtvQKvVGvz5s2fPxuzZs5GQkIC6devil19+kU5e/r//+z8cP34c/fr1g0ajwRtvvIF3330X27dvl94/ZMgQPHjwAAsWLMD48eNRrVo19OnTp9CcjY2NsXjxYsycORPTpk1Du3btpJ+ltFot3nrrLXz++ecYPHiwbONUFI1Gg3bt2mHr1q1o27YtgIeFj42NDerXr2/w+UBERGqkEUKU+q/2X3/9hdq1a2PTpk3o0aMHAGDXrl3o1KkTbt68qXc0x9nZGWPHjsW4ceMwbdo0/PLLL3orxSYnJ6N27do4duyYdFVJs2bNsHDhQmmbiIgIjB07Funp6cjKyoKlpSV++OEHvSX2hwwZglu3buHnn382uB8ZGRmwtbVFeno6bGxs9NoePHiA5ORkuLq6wtzcvFTjQ2VHibeqGDZsGK5du4ZffvmlvFMpFuc4ET2t8r6EvLi/3497qp+rIiIiYGdnh27dukmveXt7w8TERO+8hrNnzyIlJUW68sXX1xenTp3Su+omOjoaNjY28PT0lLZ58tyI6OhoKYapqSm8vb31tsnLy0NMTIzeFTZEZS09PR379u3DunXr8N5775V3OkREL7xSFzl5eXmIiIjAkCFD9BZ6s7W1xbBhwxASEoLdu3cjPj4eQ4cOha+vL1q1agUA6Ny5Mzw9PTFo0CCcOHECO3bswJQpUzB69GiYmZkBAEaOHImLFy9i4sSJSEpKwrJly/D9999j3Lhx0meFhIRgxYoVWL16Nc6cOYNRo0bh7t27ZXIOBJVO/mrKhT0+//zz8k5PVj169EDnzp0xcuRIvPzyy3ptL9I4EBEpRanPyfntt9+QkpIindT5uAULFkCr1aJ3797IzMxEYGAgli1bJrUbGRlhy5YtGDVqFHx9fWFlZYUhQ4Zg5syZ0jaurq7YunUrxo0bh0WLFqFmzZpYuXKldPk4APTr1w/Xrl3DtGnTkJqaCi8vL0RFRRU4GZnK38qVK3H//v1C2/IX0XsWLi4ueIpfXJ+L4i4Xf97jQEREBT3VOTlqwXNy6EXGOU5ET0vV5+QQERERKR2LHCIiIlIlFjlERESkSixyiIiISJVY5BAREZEqscgpLY2mbB+lJITAiBEjUKVKFWg0Gr3VpeWm0WiwefNmAA9XHn7en1fWXFxc9FbeJiKiiuWp711FyhQVFYXIyEjExsaidu3a0v2bnocrV66gcuXKzy1+eTty5IjevZ80Gg1++uknvduJEBGRcrHIUZkLFy7A0dERrVu3fu6f5eDg8Nw/ozxVr169vFMgIqJnwJ+rVOStt97Ce++9h5SUFGg0Gri4uCAzMxNjxoyBnZ0dzM3N0bZtWxw5ckR6z82bNzFw4EBUr14dFhYWcHNzQ0REBAAgKysLwcHBcHR0hLm5OZydnTFr1izpvY//XFVap0+fRvfu3WFjY4NKlSqhXbt2uHDhAoCHR1BefvllVKtWDba2tvDz88OxY8f03q/RaLB8+XIEBQXBwsICtWvXxg8//KC3zaRJk1CvXj1YWlqidu3amDp1KrKzs/W2+fXXX9GiRQuYm5ujWrVqeO2116S2x3+ucnFxAQC89tpr0theunQJWq0WR48e1Yu5cOFCODs7Iy8vr9gxiI2NhUajwY4dO9C0aVNYWFigY8eOuHr1KrZv3w4PDw/Y2NhgwIABuHfvHgBgy5Yt0Ol0yM3NBQAkJCRAo9Hgww8/lOIOHz4cb775ZrGfTUT0ImCRoyKLFi3CzJkzUbNmTVy5cgVHjhzBxIkT8eOPP2L16tU4duwY6tati8DAQNy4cQMAMHXqVCQmJmL79u04c+YMli9fLv3EtXjxYvzyyy/4/vvvcfbsWaxdu1b6Y/8s/v33X7Rv3x5mZmbYtWsX4uPj8fbbbyMnJwcAcPv2bQwZMgT79u3DwYMH4ebmhq5du+L27dt6caZOnYrevXvjxIkTGDhwIPr3748zZ85I7ZUqVUJkZCQSExOxaNEirFixAgsWLJDat27ditdeew1du3bF8ePHERMTg5YtWxaac35hGBERIY2ti4sLAgICpKIwX0REBN566y1otYbtXqGhoViyZAkOHDiAv//+G3379sXChQuxbt06bN26FTt37sRXX30FAGjXrh1u376N48ePAwD27NmDatWq6d1SYs+ePfD39zfos4mI1Iw/V6mIra0tKlWqBCMjIzg4OODu3btYvnw5IiMjERQUBABYsWIFoqOjsWrVKkyYMAEpKSlo2rQpmjdvDgB6RUxKSgrc3NzQtm1baDQaODs7y5Ln0qVLYWtri/Xr18PExAQAUK9ePam9Y8eOett/88030Ol02LNnD7p37y69/vrrr2P48OEAgE8++QTR0dH46quvpPulTZkyRdrWxcUF48ePx/r16zFx4kQAwGeffYb+/fvrLU/epEmTQnPO/+lKp9Pp/Uw3fPhwjBw5EvPnz4eZmRmOHTuGU6dO4eeffzZ4PD799FO0adMGADBs2DBMnjwZFy5cQO3atQEAffr0we7duzFp0iTY2trCy8sLsbGxaN68OWJjYzFu3DjMmDEDd+7cQXp6Os6fPw8/Pz+DP5+ISK14JEfFLly4gOzsbOkPKACYmJigZcuW0hGPUaNGYf369fDy8sLEiRNx4MABadu33noLCQkJqF+/PsaMGYOdO3fKkldCQgLatWsnFThPSktLwzvvvAM3NzfY2trCxsYGd+7cQUpKit52vr6+BZ4/fiRnw4YNaNOmDRwcHGBtbY0pU6boxUhISECnTp2eqS89e/aEkZERfvrpJwBAZGQkOnToUKojXo0bN5b+297eXvp57fHXrl69Kj338/NDbGwshBD4/fff0atXL3h4eGDfvn3Ys2cPatSoATc3t2fqFxGRGrDIecEFBQXhr7/+wrhx43D58mV06tQJ48ePBwA0a9YMycnJ+OSTT3D//n307dsXffr0eebPtLCwKLZ9yJAhSEhIwKJFi3DgwAEkJCSgatWqyMrKMvgz4uLiMHDgQHTt2hVbtmzB8ePH8fHHH+vFKCkPQ5iammLw4MGIiIhAVlYW1q1bh7fffrtUMR4v9jQaTYHiT6PR6J3f4+/vj3379uHEiRMwMTGBu7s7/P39ERsbiz179vAoDhHRIyxyVKxOnTowNTXF/v37pdeys7Nx5MgReHp6Sq9Vr14dQ4YMwXfffYeFCxfim2++kdpsbGzQr18/rFixAhs2bMCPP/4onc/ztBo3bozff/+9wEnA+fbv348xY8aga9euaNCgAczMzHD9+vUC2x08eLDAcw8PDwDAgQMH4OzsjI8//hjNmzeHm5sb/vrrrwJ5xMTEGJy3iYmJdMLv44YPH47ffvsNy5YtQ05ODnr16mVwzKeRf17OggULpIImv8iJjY3l+ThERI/wnBwVs7KywqhRozBhwgRUqVIFtWrVwpw5c3Dv3j0MGzYMADBt2jR4e3ujQYMGyMzMxJYtW6RCYf78+XB0dETTpk2h1WqxceNGODg4QKfTPVNewcHB+Oqrr9C/f39MnjwZtra2OHjwIFq2bIn69evDzc0N3377LZo3b46MjAxMmDCh0KMuGzduRPPmzdG2bVusXbsWhw8fxqpVqwAAbm5uSElJwfr169GiRQts3bpV+kkp3/Tp09GpUyfUqVMH/fv3R05ODrZt24ZJkyYVmreLiwtiYmLQpk0bmJmZSWsEeXh4oFWrVpg0aRLefvttWY4QFady5cpo3Lgx1q5diyVLlgAA2rdvj759+yI7O5tHcoiIHuGRnNISomwfz2j27Nno3bs3Bg0ahGbNmuH8+fPYsWOH9Afa1NQUkydPRuPGjdG+fXsYGRlh/fr1AB5enTRnzhw0b94cLVq0wKVLl7Bt2zaDrxoqStWqVbFr1y7cuXMHfn5+8Pb2xooVK6SfaVatWoWbN2+iWbNmGDRokHQJ/JNmzJiB9evXo3HjxlizZg3+97//SUeoXn31VYwbNw7BwcHw8vLCgQMHMHXqVL33+/v7Y+PGjfjll1/g5eWFjh074vDhw0XmPW/ePERHR8PJyQlNmzbVaxs2bBiysrJK/VPV0/Lz80Nubq501KZKlSrw9PSEg4MD6tevXyY5EBEpnUYIGf6SVlAZGRmwtbVFeno6bGxs9NoePHiA5ORkuLq6wtzcvJwypKIobfXhTz75BBs3bsTJkyfLOxWDcY4T0dN6/KrU4kyfPv25fH5xf78fxyM5RM/gzp07+OOPP7BkyRK899575Z0OERE9hkUOyW7kyJGwtrYu9DFy5MjyTk9WwcHB8Pb2hr+/f4Gfql6kcSAiUiL+XMWfq2R39epVZGRkFNpmY2NT6Pk1aqT0ceAcJ6KnVVF+ruLVVSQ7Ozu7cv8DrgQcByKi8sWfq4iIiEiVWOQQERGRKrHIISIiIlVikUNERESqxCKHiIiIVIlFDgF4eIuDsWPHlncaihQZGfnM9+siIqKyx0vIS8nQtQHkIvcaA7GxsejQoQNu3rzJP9wG6tevH7p27So9Dw0NxebNm5GQkFB+SRERUYlY5NBzk5WVBVNT0/JO45lZWFg89zuLExGR/PhzlQplZmZKd+42NzdH27ZtceTIEVy6dAkdOnQAAFSuXBkajQZvvfWW9L68vDxMnDgRVapUgYODA0JDQ/Xi3rp1C8OHD0f16tVhY2ODjh074sSJE1J7aGgovLy8sHLlSoNX0c3Ly8OcOXNQt25dmJmZoVatWvjss8+k9kmTJqFevXqwtLRE7dq1MXXqVGRnZxf4zK+//hpOTk6wtLRE3759kZ6eLm1z5MgRvPzyy6hWrRpsbW3h5+eHY8eOFejb//3f/8He3h7m5uZo2LAhtmzZAkD/56rIyEjMmDEDJ06cgEajgUajQWRkJN5++210795dL2Z2djbs7OywatWqEsfB398f7733HsaOHYvKlSvD3t4eK1aswN27dzF06FBUqlQJdevWxfbt26X3NG/eHF9++aX0vGfPnjAxMcGdO3cAAP/88w80Gg3Onz9f4ucTEakRixwVmjhxIn788UesXr0ax44dQ926dREYGIhKlSrhxx9/BACcPXsWV65cwaJFi6T3rV69GlZWVjh06BDmzJmDmTNnIjo6Wmp//fXXcfXqVWzfvh3x8fFo1qwZOnXqhBs3bkjbnD9/Hj/++CM2bdpk0M85kydPxuzZszF16lQkJiZi3bp1sLe3l9orVaqEyMhIJCYmYtGiRVixYgUWLFigF+P8+fP4/vvv8euvvyIqKgrHjx/Hu+++K7Xfvn0bQ4YMwb59+3Dw4EG4ubmha9euuH37NoCHhVZQUBD279+P7777DomJiZg9ezaMjIwK5NuvXz988MEHaNCgAa5cuYIrV66gX79+GD58OKKionDlyhVp2y1btuDevXvo169fieMAPBz/atWq4fDhw3jvvfcwatQovP7662jdujWOHTuGzp07Y9CgQbh37x4AwM/PD7GxsQAAIQR+//136HQ67Nu3DwCwZ88evPTSS6hbt65Bn09EpDb8uUpl7t69i+XLlyMyMhJBQUEAgBUrViA6Ohrh4eFo0aIFgIe3HHjynJzGjRtL5wC5ublhyZIliImJwcsvv4x9+/bh8OHDuHr1KszMzAAAX375JTZv3owffvgBI0aMAPDwJ6o1a9agevXqJeZ6+/ZtLFq0CEuWLMGQIUMAAHXq1EHbtm2lbaZMmSL9t4uLC8aPH4/169dj4sSJ0usPHjzAmjVr8NJLLwEAvvrqK3Tr1g3z5s2Dg4MDOnbsqPe533zzDXQ6Hfbs2YPu3bvjt99+w+HDh3HmzBnUq1cPAFC7du1Cc7awsIC1tTWMjY3h4OAgvd66dWvUr18f3377rZRbREQEXn/9dVhbW5c4FgDQpEkTqb/5xV+1atXwzjvvAACmTZuG5cuX4+TJk2jVqhX8/f2xatUq5Obm4o8//oCpqSn69euH2NhYdOnSBbGxsfDz8zPos4mI1IhHclTmwoULyM7ORps2baTXTExM0LJlS5w5c6bY9zZu3FjvuaOjI65evQoAOHHiBO7cuYOqVavq3U07OTkZFy5ckN7j7OxsUIEDAGfOnEFmZiY6depU5DYbNmxAmzZt4ODgAGtra0yZMgUpKSl629SqVUsqcADA19cXeXl5OHv2LAAgLS0N77zzDtzc3GBrawsbGxvcuXNHipOQkICaNWtKBc7TGj58OCIiIqTP3L59e4E7kxfn8fE3MjJC1apV0ahRI+m1/CNc+d9Ju3btcPv2bRw/fhx79uyBn58f/P39paM7e/bsgb+//zP1iYioIuORHJKYmJjoPddoNMjLywMA3LlzB46OjtIf0Mc9fkTIysrK4M8r6WTeuLg4DBw4EDNmzEBgYCBsbW2xfv16zJs3z+DPAIAhQ4bgv//+w6JFi+Ds7AwzMzP4+voiKyvLoDwMNXjwYHz44YeIi4vDgQMH4Orqinbt2hn8/sLG//HXNBoNAEjfiU6nQ5MmTRAbG4u4uDi8/PLLaN++Pfr164c///wT586d45EcInqh8UiOytSpUwempqbYv3+/9Fp2djaOHDkCT09P6Wqn3NzcUsVt1qwZUlNTYWxsjLp16+o9qlWr9lS5urm5wcLCAjExMYW2HzhwAM7Ozvj444/RvHlzuLm54a+//iqwXUpKCi5fviw9P3jwILRaLerXrw8A2L9/P8aMGYOuXbuiQYMGMDMzw/Xr16XtGzdujH/++Qd//vmnQXmbmpoWOn5Vq1ZFz549ERERgcjISAwdOtSgeM/Cz88Pu3fvxt69e+Hv748qVarAw8MDn332GRwdHZ/56BQRUUXGIkdlrKysMGrUKEyYMAFRUVFITEzEO++8g3v37mHYsGFwdnaGRqPBli1bcO3aNelKnJIEBATA19cXPXv2xM6dO3Hp0iUcOHAAH3/8MY4ePfpUuZqbm2PSpEmYOHEi1qxZgwsXLuDgwYPS1Uhubm5ISUnB+vXrceHCBSxevBg//fRToXGGDBmCEydO4Pfff8eYMWPQt29f6ZwZNzc3fPvttzhz5gwOHTqEgQMH6h298fPzQ/v27dG7d29ER0cjOTkZ27dvR1RUVKF5u7i4IDk5GQkJCbh+/ToyMzOltuHDh2P16tU4c+aMdJ7R8+Tv748dO3bA2NgY7u7u0mtr167lURwieuHx56pSkntxvudh9uzZyMvLw6BBg3D79m00b94cO3bsQOXKlVG5cmXMmDEDH374IYYOHYrBgwcjMjKyxJgajQbbtm3Dxx9/jKFDh+LatWtwcHBA+/bt9a6GKq2pU6fC2NgY06ZNw+XLl+Ho6IiRI0cCAF599VWMGzcOwcHByMzMRLdu3TB16tQCl7bXrVsXvXr1QteuXXHjxg10794dy5Ytk9pXrVqFESNGoFmzZnBycsLnn3+O8ePH68X48ccfMX78eLzxxhu4e/cu6tati9mzZxeac+/evbFp0yZ06NABt27dQkREhHQpfkBAABwdHdGgQQPUqFHjqcfFUO3atUNeXp5eQePv749FixbxfBwieuFphBCivJMoLxkZGbC1tUV6ejpsbGz02h48eIDk5GSD13uh8qG01Yfv3LmDl156CREREejVq1d5p1MsznEielqGrv7/vA4MFPf3+3E8kkMkg7y8PFy/fh3z5s2DTqfDq6++Wt4pERFVCIYUTE9bLJX6nJx///0Xb775JqpWrQoLCws0atRI75wMIQSmTZsGR0dHWFhYICAgAOfOndOLcePGDQwcOBA2NjbQ6XQYNmxYgXNDTp48iXbt2sHc3BxOTk6YM2dOgVw2btwId3d3mJubo1GjRti2bVtpu0PPUUpKit7l5k8+nrwUvCJLSUmBvb091q1bh/DwcBgbG+u1vSjjQESkJKU6knPz5k20adMGHTp0wPbt21G9enWcO3cOlStXlraZM2cOFi9ejNWrV8PV1RVTp05FYGAgEhMTpUPiAwcOxJUrVxAdHY3s7GwMHToUI0aMwLp16wA8PAzVuXNnBAQEICwsDKdOncLbb78NnU4nLTp34MABvPHGG5g1axa6d++OdevWoWfPnjh27BgaNmwo1/jQM6hRo0axPyPJcc5KaGhogXN0yoOLiwuK+uW3LMaBiIgKKlWR88UXX8DJyUla8AwAXF1dpf8WQmDhwoWYMmUKevToAQBYs2YN7O3tsXnzZvTv3x9nzpxBVFQUjhw5gubNmwN4uEJt165d8eWXX6JGjRpYu3YtsrKyEB4eDlNTUzRo0AAJCQmYP3++VOQsWrQIXbp0wYQJEwAAn3zyCaKjo7FkyRKEhYU926iQLPIvN3/RcRyIiMpHqYqcX375BYGBgXj99del++K8++670rLzycnJSE1NRUBAgPQeW1tb+Pj4IC4uDv3790dcXBx0Op1U4AAPr0jRarU4dOgQXnvtNcTFxaF9+/Z6d7AODAzEF198gZs3b6Jy5cqIi4tDSEiIXn6BgYHYvHlzkflnZmbqXe6bkZFRYp9f4POySeU4t4kKJ9c5InKenPs8z1tRs1IVORcvXsTy5csREhKCjz76CEeOHMGYMWNgamqKIUOGIDU1FQAKXFJsb28vtaWmpsLOzk4/CWNjVKlSRW+bx48QPR4zNTUVlStXRmpqarGfU5hZs2YZPOnyb86YlZUl24q4REqSf6PPJ1daJiL1etGKpVIVOXl5eWjevDk+//xzAEDTpk3xxx9/ICwsrEwWPntWkydP1jv6k5GRAScnp0K3NTY2hqWlJa5duwYTExNotVw3kdRBCIF79+7h6tWr0Ol0hd5tnYhIDUpV5Dg6OsLT01PvNQ8PD/z4448AIK0wm5aWBkdHR2mbtLQ0eHl5Sdvk32AwX05ODm7cuCG938HBAWlpaXrb5D8vaZvH7wz9JDMzM+kO2iXRaDRwdHREcnJyobcSIKrodDpdsfsLEVFFV6oip02bNtKdnfP9+eefcHZ2BvDwJGQHBwfExMRIRU1GRgYOHTqEUaNGAXh4h+hbt24hPj4e3t7eAIBdu3YhLy8PPj4+0jYff/wxsrOzpUPp0dHRqF+/vnQll6+vL2JiYjB27Fgpl+joaPj6+pZyCIpmamoKNzc36UaORGphYmLCIzhEpHqlKnLGjRuH1q1b4/PPP0ffvn1x+PBhfPPNN/jmm28APDz6MXbsWHz66adwc3OTLiGvUaMGevbsCeDhkZ8uXbrgnXfeQVhYGLKzsxEcHIz+/ftLl9IOGDAAM2bMwLBhwzBp0iT88ccfWLRoERYsWCDl8v7778PPzw/z5s1Dt27dsH79ehw9elTKRS5arZarwRIREVVApSpyWrRogZ9++gmTJ0/GzJkz4erqioULF2LgwIHSNhMnTsTdu3cxYsQI3Lp1C23btkVUVJReobB27VoEBwejU6dO0Gq16N27NxYvXiy129raYufOnRg9ejS8vb1RrVo1TJs2Tbp8HABat26NdevWYcqUKfjoo4/g5uaGzZs3c40cIiIiAvAUt3Xo3r07unfvXmS7RqPBzJkzMXPmzCK3qVKlirTwX1EaN26M33//vdhtXn/9dbz++uvFJ0xEREQvJF4yRERERKrEIoeIiIhUiUUOERERqRKLHCIiIlIlFjlERESkSixyiIiISJVY5BAREZEqscghIiIiVSr1YoBERERKNGPGjBK3mT59ehlkQkrBIzlERESkSixyiIiISJVY5BAREZEqscghIiIiVWKRQ0RERKrEIoeIiIhUiUUOERERqRKLHCIiIlIlFjlERESkSixyiIiISJVY5BAREZEqscghIiIiVWKRQ0RERKrEIoeIiIhUiUUOERERqRKLHCIiIlIlFjlERESkSixyiIiISJVY5BAREZEqscghIiIiVWKRQ0RERKrEIoeIiIhUiUUOERERqRKLHCIiIlIlFjlERESkSixyiIiISJVY5BAREZEqscghIiIiVWKRQ0RERKpUqiInNDQUGo1G7+Hu7i61P3jwAKNHj0bVqlVhbW2N3r17Iy0tTS9GSkoKunXrBktLS9jZ2WHChAnIycnR2yY2NhbNmjWDmZkZ6tati8jIyAK5LF26FC4uLjA3N4ePjw8OHz5cmq4QERGRyhmX9g0NGjTAb7/99v8DGP//EOPGjcPWrVuxceNG2NraIjg4GL169cL+/fsBALm5uejWrRscHBxw4MABXLlyBYMHD4aJiQk+//xzAEBycjK6deuGkSNHYu3atYiJicHw4cPh6OiIwMBAAMCGDRsQEhKCsLAw+Pj4YOHChQgMDMTZs2dhZ2f3TANCRERExZseGmrghtOfax4lKXWRY2xsDAcHhwKvp6enY9WqVVi3bh06duwIAIiIiICHhwcOHjyIVq1aYefOnUhMTMRvv/0Ge3t7eHl54ZNPPsGkSZMQGhoKU1NThIWFwdXVFfPmzQMAeHh4YN++fViwYIFU5MyfPx/vvPMOhg4dCgAICwvD1q1bER4ejg8//PCpB4OIiIhKpgk1bDvxXLMoWanPyTl37hxq1KiB2rVrY+DAgUhJSQEAxMfHIzs7GwEBAdK27u7uqFWrFuLi4gAAcXFxaNSoEezt7aVtAgMDkZGRgdOnT0vbPB4jf5v8GFlZWYiPj9fbRqvVIiAgQNqmKJmZmcjIyNB7EBERkTqVqsjx8fFBZGQkoqKisHz5ciQnJ6Ndu3a4ffs2UlNTYWpqCp1Op/cee3t7pKamAgBSU1P1Cpz89vy24rbJyMjA/fv3cf36deTm5ha6TX6MosyaNQu2trbSw8nJqTTdJyIiogqkVD9XBQUFSf/duHFj+Pj4wNnZGd9//z0sLCxkT05ukydPRkhIiPQ8IyODhQ4REZFKPdMl5DqdDvXq1cP58+fh4OCArKws3Lp1S2+btLQ06RweBweHAldb5T8vaRsbGxtYWFigWrVqMDIyKnSbws4VepyZmRlsbGz0HkRERKROz1Tk3LlzBxcuXICjoyO8vb1hYmKCmJgYqf3s2bNISUmBr68vAMDX1xenTp3C1atXpW2io6NhY2MDT09PaZvHY+Rvkx/D1NQU3t7eetvk5eUhJiZG2oaIiIioVEXO+PHjsWfPHly6dAkHDhzAa6+9BiMjI7zxxhuwtbXFsGHDEBISgt27dyM+Ph5Dhw6Fr68vWrVqBQDo3LkzPD09MWjQIJw4cQI7duzAlClTMHr0aJiZmQEARo4ciYsXL2LixIlISkrCsmXL8P3332PcuHFSHiEhIVixYgVWr16NM2fOYNSoUbh79650tRURERFRqc7J+eeff/DGG2/gv//+Q/Xq1dG2bVscPHgQ1atXBwAsWLAAWq0WvXv3RmZmJgIDA7Fs2TLp/UZGRtiyZQtGjRoFX19fWFlZYciQIZg5c6a0jaurK7Zu3Ypx48Zh0aJFqFmzJlauXCldPg4A/fr1w7Vr1zBt2jSkpqbCy8sLUVFRBU5GJiIiZZsxY0aJ20wv57VWqOIqVZGzfv36YtvNzc2xdOlSLF26tMhtnJ2dsW3btmLj+Pv74/jx48VuExwcjODg4GK3ISIiohcX711FREREqsQih4iIiFSJRQ4RERGpEoscIiIiUiUWOURERKRKLHKIiIhIlVjkEBERkSqxyCEiIiJVYpFDREREqsQih4iIiFSJRQ4RERGpEoscIiIiUiUWOURERKRKLHKIiIhIlVjkEBERkSqxyCEiIiJVMi7vBIiIiOjFFYrQEreZjulPFZtHcoiIiEiVWOQQERGRKrHIISIiIlXiOTlERAo3Y8aMEreZPv3pzlkgUjMeySEiIiJV4pEcIqIXhCFHhADDjgrx6BJVBDySQ0RERKrEIoeIiIhUiUUOERERqRKLHCIiIlIlFjlERESkSixyiIiISJVY5BAREZEqscghIiIiVWKRQ0RERKrEFY+JiIheENNDQw3YSD0rVbPIISIiekFoQkveRjz3LMoOf64iIiIiVWKRQ0RERKrEIoeIiIhUiUUOERERqRJPPCYiIlK4F+2qKLk805Gc2bNnQ6PRYOzYsdJrDx48wOjRo1G1alVYW1ujd+/eSEtL03tfSkoKunXrBktLS9jZ2WHChAnIycnR2yY2NhbNmjWDmZkZ6tati8jIyAKfv3TpUri4uMDc3Bw+Pj44fPjws3SHiIhIkTShJT+ooKcuco4cOYKvv/4ajRs31nt93Lhx+PXXX7Fx40bs2bMHly9fRq9evaT23NxcdOvWDVlZWThw4ABWr16NyMhITJs2TdomOTkZ3bp1Q4cOHZCQkICxY8di+PDh2LFjh7TNhg0bEBISgunTp+PYsWNo0qQJAgMDcfXq1aftEhEREanIUxU5d+7cwcCBA7FixQpUrlxZej09PR2rVq3C/Pnz0bFjR3h7eyMiIgIHDhzAwYMHAQA7d+5EYmIivvvuO3h5eSEoKAiffPIJli5diqysLABAWFgYXF1dMW/ePHh4eCA4OBh9+vTBggULpM+aP38+3nnnHQwdOhSenp4ICwuDpaUlwsPDn2U8iIiISCWeqsgZPXo0unXrhoCAAL3X4+PjkZ2drfe6u7s7atWqhbi4OABAXFwcGjVqBHt7e2mbwMBAZGRk4PTp09I2T8YODAyUYmRlZSE+Pl5vG61Wi4CAAGmbwmRmZiIjI0PvQUREROpU6hOP169fj2PHjuHIkSMF2lJTU2FqagqdTqf3ur29PVJTU6VtHi9w8tvz24rbJiMjA/fv38fNmzeRm5tb6DZJSUlF5j5r1izMmDHDsI4SERE9A4NOFgZ4wvBzVKoi5++//8b777+P6OhomJubP6+cnpvJkycjJCREep6RkQEnJ6dyzIiIiNTK0JOB1XQbBaUp1c9V8fHxuHr1Kpo1awZjY2MYGxtjz549WLx4MYyNjWFvb4+srCzcunVL731paWlwcHAAADg4OBS42ir/eUnb2NjYwMLCAtWqVYORkVGh2+THKIyZmRlsbGz0HkRERKROpSpyOnXqhFOnTiEhIUF6NG/eHAMHDpT+28TEBDExMdJ7zp49i5SUFPj6+gIAfH19cerUKb2roKKjo2FjYwNPT09pm8dj5G+TH8PU1BTe3t562+Tl5SEmJkbahoiIiF5spfq5qlKlSmjYsKHea1ZWVqhatar0+rBhwxASEoIqVarAxsYG7733Hnx9fdGqVSsAQOfOneHp6YlBgwZhzpw5SE1NxZQpUzB69GiYmZkBAEaOHIklS5Zg4sSJePvtt7Fr1y58//332Lp1q/S5ISEhGDJkCJo3b46WLVti4cKFuHv3LoYOHfpMA0JERETqIPuKxwsWLIBWq0Xv3r2RmZmJwMBALFu2TGo3MjLCli1bMGrUKPj6+sLKygpDhgzBzJkzpW1cXV2xdetWjBs3DosWLULNmjWxcuVKBAYGStv069cP165dw7Rp05CamgovLy9ERUUVOBmZiIiIXkzPXOTExsbqPTc3N8fSpUuxdOnSIt/j7OyMbdu2FRvX398fx48fL3ab4OBgBAcHG5wrERFRSXgLBfXgDTqJiIhIlVjkEBERkSqxyCEiIiJVYpFDREREqsQih4iIiFRJ9kvIiYiIKjJDbsfAWzFUDDySQ0RERKrEIoeIiIhUiUUOERERqRKLHCIiIlIlnnhMRESqwNsx0JN4JIeIiIhUiUUOERERqRKLHCIiIlIlnpNDRESqwEX86Ek8kkNERESqxCKHiIiIVIk/V71AZsyYUeI203l5JRERqQSP5BAREZEqscghIiIiVWKRQ0RERKrEIoeIiIhUiUUOERERqRKLHCIiIlIlXkJO5YqXtZPSGDInAcPmJec3UfnikRwiIiJSJRY5REREpEoscoiIiEiVWOQQERGRKrHIISIiIlVikUNERESqxEvIiYio3EwPDTVgI15mT0+HR3KIiIhIlXgkh54KFzkjIiKl45EcIiIiUiUeyakAeNSEqGTcTyomTWjJ24jnngWpFY/kEBERkSqxyCEiIiJV4s9VpApy3jmaiIjUoVRHcpYvX47GjRvDxsYGNjY28PX1xfbt26X2Bw8eYPTo0ahatSqsra3Ru3dvpKWl6cVISUlBt27dYGlpCTs7O0yYMAE5OTl628TGxqJZs2YwMzND3bp1ERkZWSCXpUuXwsXFBebm5vDx8cHhw4dL0xWiIs2YMaPEBxERKV+pipyaNWti9uzZiI+Px9GjR9GxY0f06NEDp0+fBgCMGzcOv/76KzZu3Ig9e/bg8uXL6NWrl/T+3NxcdOvWDVlZWThw4ABWr16NyMhITJs2TdomOTkZ3bp1Q4cOHZCQkICxY8di+PDh2LFjh7TNhg0bEBISgunTp+PYsWNo0qQJAgMDcfXq1WcdDyIiIlKJUhU5r7zyCrp27Qo3NzfUq1cPn332GaytrXHw4EGkp6dj1apVmD9/Pjp27Ahvb29ERETgwIEDOHjwIABg586dSExMxHfffQcvLy8EBQXhk08+wdKlS5GVlQUACAsLg6urK+bNmwcPDw8EBwejT58+WLBggZTH/Pnz8c4772Do0KHw9PREWFgYLC0tER4eXmz+mZmZyMjI0HsQERGROj31OTm5ubnYuHEj7t69C19fX8THxyM7OxsBAQHSNu7u7qhVqxbi4uLQqlUrxMXFoVGjRrC3t5e2CQwMxKhRo3D69Gk0bdoUcXFxejHytxk7diwAICsrC/Hx8Zg8ebLUrtVqERAQgLi4uGJznjVrFn9qIKIKh7c+IHo6pS5yTp06BV9fXzx48ADW1tb46aef4OnpiYSEBJiamkKn0+ltb29vj9TUVABAamqqXoGT357fVtw2GRkZuH//Pm7evInc3NxCt0lKSio298mTJyMkJER6npGRAScnJ8M7X0pct4OIlMSgYgkwqGBi4UUVQamLnPr16yMhIQHp6en44YcfMGTIEOzZs+d55CY7MzMzmJmZlXcaREREVAZKXeSYmpqibt26AABvb28cOXIEixYtQr9+/ZCVlYVbt27pHc1JS0uDg4MDAMDBwaHAVVD5V189vs2TV2SlpaXBxsYGFhYWMDIygpGRUaHb5McgIiIieuZ1cvLy8pCZmQlvb2+YmJggJiYGvXv3BgCcPXsWKSkp8PX1BQD4+vris88+w9WrV2FnZwcAiI6Oho2NDTw9PaVttm3bpvcZ0dHRUgxTU1N4e3sjJiYGPXv2lHKIiYlBcHDws3aHiEhxeOsDoqdTqiJn8uTJCAoKQq1atXD79m2sW7cOsbGx2LFjB2xtbTFs2DCEhISgSpUqsLGxwXvvvQdfX1+0atUKANC5c2d4enpi0KBBmDNnDlJTUzFlyhSMHj1a+hlp5MiRWLJkCSZOnIi3334bu3btwvfff4+tW7dKeYSEhGDIkCFo3rw5WrZsiYULF+Lu3bsYOnSojENDRERFYeFFFUGpipyrV69i8ODBuHLlCmxtbdG4cWPs2LEDL7/8MgBgwYIF0Gq16N27NzIzMxEYGIhly5ZJ7zcyMsKWLVswatQo+Pr6wsrKCkOGDMHMmTOlbVxdXbF161aMGzcOixYtQs2aNbFy5UoEBgZK2/Tr1w/Xrl3DtGnTkJqaCi8vL0RFRRU4GZmIiP4/QwoTgMUJqUepipxVq1YV225ubo6lS5di6dKlRW7j7Oxc4OeoJ/n7++P48ePFbhMcHMyfp4iIiKhIvHcVEdFjeJk1kXqwyHkC17YhIiJSh1Ld1oGIiIioouCRHKIKgEcYiYhKj0UO0QuExVLZ4mXWROWLRQ4RqYJcJ/nyMmsi9eA5OURERKRKLHKIiIhIlfhzFRGVK54nRETPC4/kEBERkSrxSA4RqQKvZCKiJ/FIDhEREakSixwiIiJSJf5cRfSc8IRaIqLyxSM5REREpEoscoiIiEiVWOQQERGRKvGcHCIqNZ5vREQVAY/kEBERkSqxyCEiIiJVYpFDREREqsQih4iIiFSJRQ4RERGpEoscIiIiUiUWOURERKRKLHKIiIhIlbgYIBGVq+mhoQZsxIUFiaj0eCSHiIiIVIlFDhEREakSixwiIiJSJZ6TQ0TlShNa8jbiuWdBRGrEIzlERESkSixyiIiISJVY5BAREZEq8ZwcIio1rm1DRBUBixyiFwiLEyJ6kfDnKiIiIlIlFjlERESkSqUqcmbNmoUWLVqgUqVKsLOzQ8+ePXH27Fm9bR48eIDRo0ejatWqsLa2Ru/evZGWlqa3TUpKCrp16wZLS0vY2dlhwoQJyMnJ0dsmNjYWzZo1g5mZGerWrYvIyMgC+SxduhQuLi4wNzeHj48PDh8+XJruEBERkYqV6pycPXv2YPTo0WjRogVycnLw0UcfoXPnzkhMTISVlRUAYNy4cdi6dSs2btwIW1tbBAcHo1evXti/fz8AIDc3F926dYODgwMOHDiAK1euYPDgwTAxMcHnn38OAEhOTka3bt0wcuRIrF27FjExMRg+fDgcHR0RGBgIANiwYQNCQkIQFhYGHx8fLFy4EIGBgTh79izs7OzkHCMi1ZBr4T0u4EdEFUGpipyoqCi955GRkbCzs0N8fDzat2+P9PR0rFq1CuvWrUPHjh0BABEREfDw8MDBgwfRqlUr7Ny5E4mJifjtt99gb28PLy8vfPLJJ5g0aRJCQ0NhamqKsLAwuLq6Yt68eQAADw8P7Nu3DwsWLJCKnPnz5+Odd97B0KFDAQBhYWHYunUrwsPD8eGHHz7zwBAREVHF9kzn5KSnpwMAqlSpAgCIj49HdnY2AgICpG3c3d1Rq1YtxMXFAQDi4uLQqFEj2NvbS9sEBgYiIyMDp0+flrZ5PEb+NvkxsrKyEB8fr7eNVqtFQECAtE1hMjMzkZGRofcgIiIidXrqS8jz8vIwduxYtGnTBg0bNgQApKamwtTUFDqdTm9be3t7pKamSts8XuDkt+e3FbdNRkYG7t+/j5s3byI3N7fQbZKSkorMedasWZgxY0bpO0uKZ9Cl0QAvjyYieoE8dZEzevRo/PHHH9i3b5+c+TxXkydPRkhIiPQ8IyMDTk5O5ZgRKRHXkiEiUoenKnKCg4OxZcsW7N27FzVr1pRed3BwQFZWFm7duqV3NCctLQ0ODg7SNk9eBZV/9dXj2zx5RVZaWhpsbGxgYWEBIyMjGBkZFbpNfozCmJmZwczMrPQdJiIiogqnVEWOEALvvfcefvrpJ8TGxsLV1VWv3dvbGyYmJoiJiUHv3r0BAGfPnkVKSgp8fX0BAL6+vvjss89w9epV6Sqo6Oho2NjYwNPTU9pm27ZterGjo6OlGKampvD29kZMTAx69uwJ4OHPZzExMQgODi7lELw4lHiEQok5ERGROpSqyBk9ejTWrVuHn3/+GZUqVZLOobG1tYWFhQVsbW0xbNgwhISEoEqVKrCxscF7770HX19ftGrVCgDQuXNneHp6YtCgQZgzZw5SU1MxZcoUjB49WjrKMnLkSCxZsgQTJ07E22+/jV27duH777/H1q1bpVxCQkIwZMgQNG/eHC1btsTChQtx9+5d6WorIjVhMUhEVHqlKnKWL18OAPD399d7PSIiAm+99RYAYMGCBdBqtejduzcyMzMRGBiIZcuWSdsaGRlhy5YtGDVqFHx9fWFlZYUhQ4Zg5syZ0jaurq7YunUrxo0bh0WLFqFmzZpYuXKldPk4APTr1w/Xrl3DtGnTkJqaCi8vL0RFRRU4GZmIiIheTKX+uaok5ubmWLp0KZYuXVrkNs7OzgV+jnqSv78/jh8/Xuw2wcHB/HmKiIiICsV7VxEREZEqscghIiIiVXrqdXLoxcYTYYmISOl4JIeIiIhUiUUOERERqRJ/riJ6gia05G1Kvs6QiIjKG4scoueE5y0REZUv/lxFREREqsQjOaQKhvzEBPBnJiKiFwmLHKIKgOcJERGVHn+uIiIiIlVikUNERESqxJ+rqFzxZxgiInpeeCSHiIiIVIlFDhEREakSixwiIiJSJZ6TQ/Sc8HwjIqLyxSLnBcI/ukRE9CJhkVMB8B5IREREpcdzcoiIiEiVeCTnCTxqQkREpA4scuip8PweIiJSOv5cRURERKrEIoeIiIhUiT9XPUc8v4eIiKj88EgOERERqRKLHCIiIlIlFjlERESkSixyiIiISJVY5BAREZEqscghIiIiVWKRQ0RERKrEIoeIiIhUiUUOERERqRKLHCIiIlIlFjlERESkSixyiIiISJVY5BAREZEq8S7kFYAmtORtxHPPgoiIqGIp9ZGcvXv34pVXXkGNGjWg0WiwefNmvXYhBKZNmwZHR0dYWFggICAA586d09vmxo0bGDhwIGxsbKDT6TBs2DDcuXNHb5uTJ0+iXbt2MDc3h5OTE+bMmVMgl40bN8Ld3R3m5uZo1KgRtm3bVtruEBERkUqVusi5e/cumjRpgqVLlxbaPmfOHCxevBhhYWE4dOgQrKysEBgYiAcPHkjbDBw4EKdPn0Z0dDS2bNmCvXv3YsSIEVJ7RkYGOnfuDGdnZ8THx2Pu3LkIDQ3FN998I21z4MABvPHGGxg2bBiOHz+Onj17omfPnvjjjz9K2yUiIiJSoVL/XBUUFISgoKBC24QQWLhwIaZMmYIePXoAANasWQN7e3ts3rwZ/fv3x5kzZxAVFYUjR46gefPmAICvvvoKXbt2xZdffokaNWpg7dq1yMrKQnh4OExNTdGgQQMkJCRg/vz5UjG0aNEidOnSBRMmTAAAfPLJJ4iOjsaSJUsQFhb2VINBRERE6iHricfJyclITU1FQECA9JqtrS18fHwQFxcHAIiLi4NOp5MKHAAICAiAVqvFoUOHpG3at28PU1NTaZvAwECcPXsWN2/elLZ5/HPyt8n/nMJkZmYiIyND70FERETqJGuRk5qaCgCwt7fXe93e3l5qS01NhZ2dnV67sbExqlSpordNYTEe/4yitslvL8ysWbNga2srPZycnErbRSIiIqogXqirqyZPnoyQkBDpeUZGxnMtdHhVFBERUfmR9UiOg4MDACAtLU3v9bS0NKnNwcEBV69e1WvPycnBjRs39LYpLMbjn1HUNvnthTEzM4ONjY3eg4iIiNRJ1iLH1dUVDg4OiImJkV7LyMjAoUOH4OvrCwDw9fXFrVu3EB8fL22za9cu5OXlwcfHR9pm7969yM7OlraJjo5G/fr1UblyZWmbxz8nf5v8zyEiIqIXW6mLnDt37iAhIQEJCQkAHp5snJCQgJSUFGg0GowdOxaffvopfvnlF5w6dQqDBw9GjRo10LNnTwCAh4cHunTpgnfeeQeHDx/G/v37ERwcjP79+6NGjRoAgAEDBsDU1BTDhg3D6dOnsWHDBixatEjvp6b3338fUVFRmDdvHpKSkhAaGoqjR48iODj42UeFiIiIKrxSn5Nz9OhRdOjQQXqeX3gMGTIEkZGRmDhxIu7evYsRI0bg1q1baNu2LaKiomBubi69Z+3atQgODkanTp2g1WrRu3dvLF68WGq3tbXFzp07MXr0aHh7e6NatWqYNm2a3lo6rVu3xrp16zBlyhR89NFHcHNzw+bNm9GwYcOnGoh8PI+GiIhIHUpd5Pj7+0OIov/MazQazJw5EzNnzixymypVqmDdunXFfk7jxo3x+++/F7vN66+/jtdff734hImIiOiFxBt0EhERkSqxyCEiIiJVYpFDREREqsQih4iIiFSJRQ4RERGpEoscIiIiUiUWOURERKRKLHKIiIhIlVjkEBERkSqxyCEiIiJVYpFDREREqsQih4iIiFSJRQ4RERGpEoscIiIiUiUWOURERKRKLHKIiIhIlVjkEBERkSqxyCEiIiJVYpFDREREqsQih4iIiFSJRQ4RERGpEoscIiIiUiUWOURERKRKLHKIiIhIlVjkEBERkSqxyCEiIiJVYpFDREREqsQih4iIiFSJRQ4RERGpEoscIiIiUiUWOURERKRKLHKIiIhIlVjkEBERkSqxyCEiIiJVYpFDREREqsQih4iIiFSJRQ4RERGpEoscIiIiUqUKX+QsXboULi4uMDc3h4+PDw4fPlzeKREREZECVOgiZ8OGDQgJCcH06dNx7NgxNGnSBIGBgbh69Wp5p0ZERETlrEIXOfPnz8c777yDoUOHwtPTE2FhYbC0tER4eHh5p0ZERETlzLi8E3haWVlZiI+Px+TJk6XXtFotAgICEBcXV+h7MjMzkZmZKT1PT08HAGRkZPz/jR6U/Nl62xdHrlhKiyNnrDKMI2csjrdMceSMxbkkSxw5Y3EulbyJnLGUFkfOWE/GyX8uhCj+jaKC+vfffwUAceDAAb3XJ0yYIFq2bFnoe6ZPny4A8MEHH3zwwQcfKnj8/fffxdYKFfZIztOYPHkyQkJCpOd5eXm4ceMGqlatCo1GU+h7MjIy4OTkhL///hs2NjZP/dlyxVFiTuxbxcxJzX1TYk7sG3NSWhwl5mRoHCEEbt++jRo1ahQbr8IWOdWqVYORkRHS0tL0Xk9LS4ODg0Oh7zEzM4OZmZneazqdzqDPs7GxeebJJGccOWMpLY6csZQWR85YSosjZyw158S+lW0sNef0ovfN1ta2xDgV9sRjU1NTeHt7IyYmRnotLy8PMTEx8PX1LcfMiIiISAkq7JEcAAgJCcGQIUPQvHlztGzZEgsXLsTdu3cxdOjQ8k6NiIiIylmFLnL69euHa9euYdq0aUhNTYWXlxeioqJgb28v22eYmZlh+vTpBX7mKq84SsyJfauYOam5b0rMiX1jTkqLo8Sc5OwbAGiEKOn6KyIiIqKKp8Kek0NERERUHBY5REREpEoscoiIiEiVWOQQERGRKrHIISIiIlWq0JeQPw85OTk4ffo0UlNTAQAODg7w9PSEiYlJucSRM1ZqaioOHTqkF8fHx6fIFaKfdz5yxlLaGD0u/6awz3pJpNLipKen642TIauPPs84SstJzv0kn9LmgNLmkpw5yRlLjjhyjpFcOSkxTgHy3C6z4svNzRUff/yx0Ol0QqPR6D10Op2YMmWKyM3NLbM4csa6c+eOGDhwoDAyMhLGxsbCzs5O2NnZCWNjY2FkZCTefPNNcffu3QrZN6WNUb6dO3eKoKAgodPphFarFVqtVuh0OhEUFCSio6MrbBwhhFixYoXw8PCQ4uQ/PDw8xMqVK8s8jtJyknM/EUJ5c0CJc0nOnJQ2TnLuJ0rrm5zfW1FY5DwyYcIEUb16dREWFiaSk5PFvXv3xL1790RycrL4+uuvhZ2dnZg4cWKZxZEz1rBhw4Sbm5uIiooSOTk50us5OTlix44dol69emL48OEVsm9KGyMhhIiMjBTGxsaif//+IiIiQmzbtk1s27ZNREREiDfeeEOYmJiINWvWVLg4QggxZ84cYWlpKT788EOxe/dukZiYKBITE8Xu3bvF5MmThZWVlZg7d26ZxVFiTnLuJ0qbA0qcS3LmpLRxknM/UVrf5PzeisMi5xF7e3sRFRVVZHtUVJSws7MrszhyxtLpdGL//v1Ftu/bt0/odLoyy0fOWEobIyGEcHNzE0uWLCmyfenSpaJu3boVLo4QQtSqVUts2LChyPb169cLJyenMoujxJzk3E+UNgeUOJfkzElp4yTnfqK0vsn5vRWHRc4jlpaW4uTJk0W2nzhxQlhZWZVZHDlj2djYiCNHjhTZfvjwYWFjY1Nm+cgZS2ljJIQQZmZmIikpqcj2pKQkYW5uXuHiCCGEubm5SExMLLL99OnTwsLCosziKDEnOfcTpc0BJc4lOXNS2jjJuZ8orW9yfm/F4dVVj/j7+2P8+PG4fv16gbbr169j0qRJ8Pf3L7M4csbq3r07RowYgePHjxdoO378OEaNGoVXXnmlzPKRM5bSxggAGjRogFWrVhXZHh4eDk9PzwoXBwBatGiB2bNnIycnp0Bbbm4uvvjiC7Ro0aLM4igxJzn3E6XNASXOJTlzUto4ybmfKK1vcn5vxeG9qx75+++/0bVrVyQlJaFRo0bSTT7T0tJw6tQpeHp6YsuWLXByciqTOHLGunnzJgYMGIAdO3agcuXKsLOzAwBcvXoVt27dQmBgINatWwedTlfh+qa0MQKA2NhYdO/eHbVr10ZAQIBeTjExMbh48SK2bt2K9u3bV6g4AHDy5EkEBgYiOzsb7du314u1d+9emJqaYufOnWjYsGGZxFFiTnLuJ0qbA0qcS3LmpLRxknM/UVrf5PzeisMi5zF5eXnYsWMHDh48qHepnq+vLzp37gyt1rADX3LFkTvWmTNnCo3j7u5eLvkocbzlGCMAuHTpEpYvX15orJEjR8LFxaVCxgGA27dv47vvvis01oABA2BjY1OmcZSYk5xzUmlzQIlzSc6clDZOcu4nSuubnN9bUVjkEBERkSpxMcAnHD58GHFxcXpVZevWrQ3+3VPuOHLFysrKwubNmwuN06NHD5iampZpPnLHUtoYAQUXg3N0dISHh8czL3RY3nGAgosmOjo6omXLlqVeNFGuOErMSc79RGlzQIlzSc6clDZOcu4nSuubnN9boZ751GWVSEtLE23bthUajUY4OzuLli1bipYtWwpnZ2eh0WhE27ZtRVpaWpnFkTPWuXPnRO3atYW5ubnw8/MTffv2FX379hV+fn7C3Nxc1K1bV5w7d65C9k1pYySE8hY6lHNxOrkWTZRz8UWl5STnfqK0OaDEucRFSg3bT5TWN7kXzSwKi5xHevfuLXx9fQu9pC0pKUm0bt1a9OnTp8ziyBkrICBA9OjRQ6SnpxdoS09PFz169BCdO3cus3zkjKW0MRJCeQsdyrk4nVyLJsq5+KLScpJzP1HaHFDiXOIipYbtJ0rrm5zfW3FY5DxibW0tjh07VmT70aNHhbW1dZnFkTOWhYWFOHXqVJHtJ0+eNGitBSX2TWljJITyFjqUc3E6uRZNlHPxRaXlJOd+orQ5oMS5xEVKDdtPlNY3Ob+34nCdnEfMzMyQkZFRZPvt27cNunGYXHHkjKXT6XDp0qUi2y9dumTQpdFK7JvSxij/M2vUqFFku6OjI+7evVvh4gAPrxoq7twkU1NT5OXllVkcJeYk536itDmgxLkkZ05KGyc59xOl9U3O761Yz1wmqcS7774rnJ2dxaZNm/R+skhPTxebNm0SLi4uIjg4uMziyBlr6tSponLlymL+/PnixIkTIjU1VaSmpooTJ06I+fPniypVqojp06dXyL4pbYyEEKJr166ic+fO4tq1awXarl27Jrp06SK6detW4eIIIcSAAQNE06ZNCz1ScezYMeHt7S0GDhxYZnGUmJOc+4nS5oAS55KcOSltnOTcT5TWNzm/t+KwyHnkwYMHYuTIkcLU1FRotVphbm4uzM3NhVarFaampmLUqFHiwYMHZRZH7lizZ88Wjo6OQqPRSHd71Wg0wtHRUXzxxRdlno8Sx1uOMRJCiJSUFNGwYUNhbGwsmjZtKrp06SK6dOkimjZtKoyNjUXjxo1FSkpKhYsjhBA3btwQXbp0ERqNRlSpUkW4u7sLd3d3UaVKFaHVakVQUJC4efNmmcVRYk5yzkmlzQElziU5c1LaOMm5nyitb3J+b8XhOjlPyMjIQHx8vN5ln97e3qVacEnOOHLHSk5O1ovj6uparvkocbzlGCOlLXQo5+J0AJCUlFTg8uinWTRRrjhKzEmuOam0OaDEuaT2RUrlmpNK65vcc6kwLHKIiIhIlXjicSFSUlJw5coVvdeuXLmClJSUcokjZ6y9e/fi6NGjeq8dPXoUe/fuLZd85IyltDEiknM/IaKn8Mw/eKmQRqMRHh4eeq+5u7sLrVZbLnGUmBP7ZhgXFxcREBCg91qnTp2Eq6trhY4jxMNx8vT01HvtacdbjjhKzIlzyTByjbecOSltnOTcT5TWNzm/tyfxtg6F2L17NywtLfVeW7NmDe7du1cuceSMlZycXGC57JiYGGRnZ5dLPnLGUtoYAcCQIUNQvXp1vddee+01XL9+vULHAYDw8PACl9XPmjUL6enp5RJHiTnJuZ8obQ4ocS7JmZPSxknO/URpfZPze3sSz8khIiIiVeKRnEKkp6frnelta2tbrnHkivXkjdAcHBzg6en5VDdCU1rf5Ioj5xi9CDIzMwHA4MXtnnccpeUk536idnLOAbXiGD2FZ/7BS0VWrFghPDw8pDVS8h8eHh5i5cqVZR5Hrlhy3ghNaX2TK47cN4s7ffq0GDVqlPDy8hIODg7CwcFBeHl5iVGjRonTp09X2DhCCLFz504RFBQkdDqdNNY6nU4EBQWJ6OjoMo+jxJzk3E+UNgeUOJfkzElp4yTnfqK0vsn5vRWFR3IemTt3LkJDQzFmzBgEBgbC3t4eAJCWloadO3fi/fffx82bNzF+/PgyiSNnrA8//BCRkZGYPXt2oXGmTp2KrKwsfPHFFxWub0obIwDYvn07evbsiWbNmqFHjx56saKjo9GsWTP8/PPPCAwMrFBxAGD16tUYPnw4+vTpgwULFhQYp65du2LVqlUYNGhQmcRRYk5y7idKmwNKnEty5qS0cZJzP1Fa3+T83oolS6mkArVq1RIbNmwosn39+vXCycmpzOLIGUuuG6EpsW9KGyMhhGjcuLGYOnVqke3Tp08XjRo1qnBxhBDCzc1NLFmypMj2pUuXirp165ZZHCXmJOd+orQ5oMS5JGdOShsnOfcTpfVNzu+tOCxyHjE3NxeJiYlFtp8+fdqgu1DLFUfOWJaWluLkyZNFtp84cUJYWVmVWT5yxlLaGOXnlJSUVGR7UlKSMDc3r3BxhBDCzMxMllhyxVFiTnLvJ0qaA0qcS3LmpLRxknM/UVrf5PzeisPFAB9p0aIFZs+ejZycnAJtubm5+OKLL9CiRYsyiyNnLH9/f4wfP77Qy/GuX7+OSZMmwd/fv8zykTOW0sYIAFxcXLB169Yi27du3QpnZ+cKFwcAGjRogFWrVhXZHh4eDk9PzzKLo8Sc5NxPlDYHlDiX5MxJaeMk536itL7J+b0Vh+fkPLJkyRIEBgbCwcEB7du31/t9cO/evTA1NcXOnTvLLI6cscLCwtC1a1c4OjqiUaNGenFOnToFT09PbNmypUL2TWljBAAzZ87EgAEDEBsbi4CAAL1YMTExiIqKwrp16ypcHACYN28eunfvjqioqEJjXbx4sdj/cckdR4k5ybmfKG0OKHEuyZmT0sZJzv1EaX2T83srDtfJeczt27fx3XffFXqzsAEDBhh8Yz254sgZS64boSmxb0obIwA4cOAAFi9eXOhN9d5//334+vpWyDgAcOnSJSxfvrzQcRo5ciRcXFzKNI4Sc5JzP1HaHFDiXJIzJ6WNk5z7idL6Juf3VhQWOURERKRK/LnqCampqTh06JBUVTo6OqJly5ZwcHAolzhyxjp8+HCBirl169YGnx8gdz5yxlLaGOVT0kKHcsZ5ctFER0dHeHh4lHrRRLniKDEnOfcTQHlzQGlzSc6c5Iz1PBYpfZYxkisnJcYp1DOfuqwSd+7cEQMHDhRGRkbC2NhY2NnZCTs7O2FsbCyMjIzEm2++Ke7evVtmceSMlZaWJtq2bSs0Go1wdnYWLVu2FC1bthTOzs5Co9GItm3birS0tArZN6WNUb4nF4PTaDSyLHRY3nHkWjRRzsUXlZaTnPuJEMqbA0qbS3LmJGcsOeLIvUipkvomZ5zisMh5ZNiwYcLNzU1ERUWJnJwc6fWcnByxY8cOUa9ePTF8+PAyiyNnrN69ewtfX99CL9dLSkoSrVu3Fn369KmQfVPaGAkhxJw5c4SlpaX48MMPxe7du0ViYqJITEwUu3fvFpMnTxZWVlZi7ty5FS6OEEJMmDBBVK9eXYSFhYnk5GRx7949ce/ePZGcnCy+/vprYWdnJyZOnFhmcZSYk5z7idLmgBLnkpw5KW2c5NxPlNY3Ob+34rDIeUSn04n9+/cX2b5v3z6h0+nKLI6csaytrcWxY8eKbD969KiwtrYus3zkjKW0MRJCeQsdyrk4nVyLJsq5+KLScpJzP1HaHFDiXOIipYbtJ0rrm5zfW3G4Ts4jeXl5MDU1LbLd1NQUeXl5ZRZHzlhmZmbIyMgosv327dsG3fBNiX1T2hgBwNWrV9GoUaMi2xs1alToejxKjwM8HIcaNWoU2e7o6Ii7d++WWRwl5iTnfqK0OaDEuSRnTkobJzn3E6X1Tc7vrVjPXCapxIABA0TTpk0L/df8sWPHhLe3txg4cGCZxZEz1rvvviucnZ3Fpk2bRHp6uvR6enq62LRpk3BxcRHBwcFllo+csZQ2RkII0a5dOzF48GCRnZ1doC0nJ0cMHjxYtG/fvsLFEUKIrl27is6dO4tr164VaLt27Zro0qWL6NatW5nFUWJOcu4nSpsDSpxLcuaktHGScz9RWt/k/N6Kw0vIH7l58yYGDBiAHTt2oHLlyrCzswPwsNq8desWAgMDsW7dOuh0ujKJI2eszMxMjB07FuHh4cjJyZH+lZmVlQVjY2MMGzYMCxYsKPFIhRL7prQxAoCTJ08iMDAQ2dnZxS4G17BhwwoVBwD+/vtvdO3aFUlJScUumujk5FQmcZSYk5z7idLmgBLnkpw5KW2c5NxPlNY3Ob+34rDIeUJSUlKhCxO5u7uXSxw5Y2VkZCA+Pl4vjre3d6kWJpMzHzljKW2MlLbQoZyL08m1aKKciy8qMSe55qTS5oAS5xIXKa2YfZPzeysKixwiIiJSJZ54/IJJSUnBlStX9F67cuUKUlJSyikj5eEYERGpA4ucQmi1WjRo0EDvNQ8PDxgZGZVLHDljubi4oFOnTnqvdezYEa6uruWSj5yxlDZGANChQwe89dZbeq8NGTIEHTt2rNBxAMDV1RUvv/yy3msBAQGoXbt2ucRRYk5y7idKmwNKnEty5qS0cZJzP1Fa3+T83p7E2zoUIjw8vMBJgbNmzUJ6enq5xJEz1u7du2Fpaan32po1a3Dv3r1yyUfOWEobI+BhweTo6Kj32ksvvVSq39GVGAd4+D+h6tWr67322muvlfqyT7niKDEnOfcTpc0BJc4lOXNS2jjJuZ8orW9yfm9P4jk5REREpEo8klOEzMxMADB4AbjnHUeuWHLeCE1pfZMrznO9WRy9cOTcT4iodFjkPCY6OhoLFixAXFyctPqtjY0NfH19ERISgoCAgDKNI2eslStXYv78+Th79qze6/Xr18cHH3yAYcOGVdi+KW2MAOD69esIDw8v9I7mb731VoHDzhUlDgAkJiZiyZIlhV4eHRwcDE9PzzKNo8Sc5NxPlDYHlDiX5MxJaeMk536itL7J+b0VhT9XPbJ69WoMHz4cffr0QWBgoN7CRDt37sQPP/yAVatWYdCgQWUSR85Yc+fORWhoKMaMGVNonMWLFyM0NBTjx4+vcH1T2hgBwJEjRxAYGAhLS0sEBAToxYqJicG9e/ewY8cONG/evELFAYDt27ejZ8+eaNasWYFxio6ORnx8PH7++WcEBgaWSRwl5iTnfqK0OaDEuSRnTkobJzn3E6X1Tc7vrVjPvGaySri5uYklS5YU2b506VJRt27dMosjZyy5boSmxL4pbYyEEMLHx0eMGDFC5OXlFWjLy8sTI0aMEK1atapwcYQQonHjxmLq1KlFtk+fPl00atSozOIoMSc59xOlzQElziU5c1LaOMm5nyitb3J+b8VhkfOImZmZSEpKKrI9KSlJmJubl1kcOWOZm5uLxMTEIttPnz4tLCwsyiwfOWMpbYzyY505c6bI9jNnzhick5Li5MeSa7zlmktKy0nO/URpc0Cpc0nOnJQ0TnLvJ0rrm1zfW3G4Ts4jDRo0wKpVq4psDw8PN+i3T7niyBmrRYsWmD17NnJycgq05ebm4osvvkCLFi3KLB85YyltjICHvykfPny4yPbDhw9Lh2YrUhzg4aWeW7duLbJ969atcHZ2LrM4SsxJzv1EaXNAiXNJzpyUNk5y7idK65uc31txeOLxI/PmzUP37t0RFRVV6O+DFy9eLHayyR1HzlhLlixBYGAgHBwcir0RWkXsm9LGCADGjx+PESNGID4+Hp06dSqQ04oVK/Dll19WuDgAMHPmTAwYMACxsbGFjndUVBTWrVtXZnGUmJOc+4nS5oAS55KcOSltnOTcT5TWNzm/t2I987EgFUlOThYTJ04U7du3F/Xq1RP16tUT7du3F5MmTRLJycllHkfOWBkZGWLZsmVi8ODBonPnzqJz585i8ODBYvny5SI9Pb1C901pYyTEw3N4fHx8hLGxsdBoNEKj0QhjY2Ph4+NT7Lk/So8jhBD79+8X/fr1E7Vq1RKmpqbC1NRU1KpVS/Tr108cOHCgzOMoMSc59xOlzQElziU5c1LaOMm5nyitb3J+b0Xh1VVEz1F2dra0Imm1atVgYmKiijhU9pQ2B5Q4l+TMieNU8eIUhkXOE3JycnD69Gnpmn1HR0d4eHiUetDliiNnrNTUVBw6dEgvTsuWLeHg4FAu+cgZS2lj9DglLXQoZxy5Fk2Uc/FFJeUk536ST2lzQGlzSc6c5IylxEVKldQ3OeMUIMvxIBXIzc0VH3/8sdDpdNJhs/yHTqcTU6ZMEbm5uWUWR85Yd+7cEQMHDhRGRkbC2NhY2NnZCTs7O2FsbCyMjIzEm2++Ke7evVsh+6a0Mcq3c+dOERQUJHQ6ndBqtUKr1QqdTieCgoJEdHR0hY0jhBArVqwQHh4eUhyNRiO0Wq3w8PAQK1euLPM4SstJzv1ECOXNASXOJTlzUto4ybmfKK1vcn5vRWGR88iECRNE9erVRVhYmEhOThb37t0T9+7dE8nJyeLrr78WdnZ2YuLEiWUWR85Yw4YNE25ubiIqKkrk5ORIr+fk5IgdO3aIevXqieHDh1fIviltjIQQIjIyUhgbG4v+/fuLiIgIsW3bNrFt2zYREREh3njjDWFiYiLWrFlT4eIIIcScOXOEpaWl+PDDD8Xu3btFYmKiSExMFLt37xaTJ08WVlZWYu7cuWUWR4k5ybmfKG0OKHEuyZmT0sZJzv1EaX2T83srDoucR+zt7UVUVFSR7VFRUcLOzq7M4sgZS6fTif379xfZvm/fPqHT6cosHzljKW2MhFDeQodyLk4n16KJci6+qLSc5NxPlDYHlDiXuEipYfuJ0vom5/dWHBY5j1haWoqTJ08W2X7ixAlhZWVVZnHkjGVjYyOOHDlSZPvhw4eFjY1NmeUjZyyljZEQylvoUO7F6eRYNFHuxReVlJOc+4nS5oAS5xIXKTVsP1Fa3+T83orDxQAf8ff3x/jx46UzvB93/fp1TJo0Cf7+/mUWR85Y3bt3x4gRI3D8+PECbcePH8eoUaPwyiuvlFk+csZS2hgBylvoUM7F6eRaNFHOxReVlpOc+4nS5oAS5xIXKTVsP1Fa3+T83orDq6se+fvvv9G1a1ckJSWhUaNGegsTnTp1Cp6entiyZQucnJzKJI6csW7evIkBAwZgx44dqFy5Muzs7AAAV69exa1btxAYGIh169ZBp9NVuL4pbYwAIDY2Ft27d0ft2rWLXQyuffv2FSoOAJw8eRKBgYHIzs4udtHEhg0blkkcJeYk536itDmgxLkkZ05KGyc59xOl9U3O7604LHIek5eXhx07duDgwYMFbmnfuXNnaLWGHfiSK47csZKSkgrc0t7X1xfu7u7lko8Sx1uOMQKAS5cuYfny5YXmNHLkSLi4uFTIOABw+/ZtfPfdd4XGGjBgAGxsbMo0jhJzknNOKm0OKHEuyZmT0sZJzv1EaX2T83srCoscIiIiUiWek0NERESqxCKHiIiIVIlFDhEREakSixwiIiJSJePyTkDNlHjjQSVS0k0VqeJT/A0DiajM8EiOgc6cOYPatWsbtO3KlSvh6emJKlWqwNPTU++/i1v86HnHKsqJEydgZGT0zHFKM0aAfH2rSGMEPFxH5e233zZo28TERLz77rto2rQpHB0d4ejoiKZNm+Ldd99FYmKiwZ8pV5ySXLhwAR07dizzONHR0ejatSsqV64MS0tLWFpaonLlyujatSt+++23Mo9TnNLuJ8XhXCpZacYIqFjjJNcYAeqdSzySY6CsrCz89ddfJW43d+5chIaGYsyYMQgMDNRb4Gjnzp14//33cfPmTYwfP75MY5VEjpUEDB0jQL6+VbQxAoAbN25g9erVCA8PL3a77du3o2fPnmjWrBl69Oih17fo6Gg0a9YMP//8MwIDA8skjiHu3LmDPXv2lGmc1atXY/jw4ejTpw8WLFhQYA507doVq1atwqBBg8okTklKs5+UhHOpZIaOEVDxxkmuMQLUO5e4Ts4jISEhxbZfu3YN69atQ25ubrHbOTs7Y+7cuejbt2+h7Rs2bMCECROQkpJSYk5yxerVq1ex7enp6YiNjS2xb3KNESBf35Q2RgDwyy+/FNt+8eJFfPDBByXGatKkCXr06IGZM2cW2h4aGopNmzbh5MmTZRIHABYvXlxs+7///osvv/yyxL7JFQcA6tWrh/fffx+jR48utH3ZsmVYsGABzp07VyZx5NxPOJdKngNyjRGgvHGScz9R81wqDoucR4yMjODl5VXk6pF37tzBsWPHSpwAFhYWOHbsGDw8PAptT0xMRPPmzXHv3r0Sc5IrlomJCV5++WWpUn7SjRs3sGXLlhL7JtcYAfL1TWljBABarRYajabYIz8ajcaguZSQkID69esX2n727Fl4eXnh/v37ZRIHeNg3R0dHmJqaFtqelZWF1NTUEvsmVxwAMDc3x4kTJ565f3LFkXM/4VwybC7JMUaA8sZJzv1EzXOpWM98i0+VqFevnvj222+LbD9+/LjQarUlxmnXrp0YPHiwyM7OLtCWk5MjBg8eLNq3b29QTnLFatSokVi5cmWR7Yb2Ta4xEkK+viltjIQQokaNGmLz5s3PHMvd3V3MmzevyPZ58+aJ+vXrl1kcIYRwcXERGzZsKLLd0L7JFUcIIZo1ayYmTJhQZPvEiRNFs2bNyiyOnPsJ51LJfZNrjIRQ3jjJuZ+oeS4Vh+fkPNK8eXPEx8fjzTffLLS9pAo435IlSxAYGAgHB4dib6hmCLlieXt749ixYxg2bFih7WZmZqhVq1aJceQaI0C+viltjPJjxcfHo0ePHoW2GzpOM2fOxIABAxAbG1voDeyioqKwbt26MovzeN+K+nnQ0L7JFQcA5s2bh+7duyMqKqrYG/2VVRw59xPOJcPn0rOOEaC8cZJzP1HzXCoOf656JDU1FZmZmXB2dn7mWEq78WBmZiZyc3NhaWn5dB16RM4xApR1U0W5xggAfv/9d9y9exddunQptP3u3bs4evQo/Pz8Sox14MABLF68uNCbhr7//vvw9fU1KCe54iQmJuLevXto3rx5oe3Z2dm4fPlyiXNErjj5lHTDQDn3E86lkueAnGMEKGuc5NxP1DyXisMih4iIiFSJ6+SUIC0tzaAroZ705Mlbhw4dwt69e5GdnV1useTM6XFPO0Zy5qS0OM+TEMKgEw3LKo6cseTM6VnmpZLjyEmJ35ucseSitHHiGJUuIAkhMjIyxMCBA0WtWrXE4MGDRWZmpnj33XeFRqMRWq1WtG/fXqSnp5cY5/Lly6JNmzbCyMhItG/fXty4cUN069ZNaDQaodFoRL169cTly5cNykmuWHLFkWuMlNg3Ob83IYRYsWKFGDx4sAgPDxdCCLF+/Xrh7u4uXF1dxbRp0wyKkZ2dLT7++GPRvn176T1z5swRlpaWwtTUVPoOyiqOUnOSa14qLU4+zqWSyTFGcuaktDj51DqXisMi55Hg4GDh7u4uFi9eLPz9/UWPHj1Ew4YNxb59+8SePXuEp6en+Oijj0qMM2jQING6dWvxyy+/iH79+onWrVuLdu3aiX/++Uf89ddfok2bNmL06NEG5SRXLLniyDVGSuybnN/bggULhJWVlejVq5dwdHQUn376qahatar49NNPxYwZM4SNjY34+uuvS4wzZcoUYW9vL0JCQoSnp6cYOXKkcHJyEt99951YvXq1eOmll8QXX3xRZnGUmpNc81JpcYTgXDIkllxjJGdOSosjhLrnUnFY5Dzi5OQkdu3aJYQQ4t9//xUajUb8+uuvUvuWLVsMupzN0dFRxMXFCSGE+O+//4RGoxG//fab1B4TEyNq165tUE5yxZIrjlxjpMS+yfm9ubu7i7Vr1wohhDh27JgwNjbWuzx95cqVwtvbu8Q4tWvXlsb33LlzQqvVivXr10vtGzZsEA0bNiyzOErNSa55qbQ4QnAuGRJLrjGSMyelxRFC3XOpOCxyHjEzMxMpKSnSc0tLS3H27Fnp+aVLl4SlpWWJcczNzfXiWFlZiXPnzknP//rrL2FhYWFQTnLFkiuOXGMkZ05KiyOEEBYWFuKvv/6SnpuZmYk//vhDen7u3Dmh0+lKnZO5ubk4c+aM9PzixYuiUqVKZRZHqTnJNS+VFkcIziVDYsk1RnLmpLQ4Qqh7LhWHJx4/UrVqVVy7dk163qNHD+h0Oun5nTt3DLobsZ2dHa5cuSI9Dw4ORpUqVaTnN2/ehJWVlUE5yRVLrjhyjZGcOSktDgBYWlri7t270vPq1avD2tpab5ucnJwS49ja2uLWrVvS82bNmqFSpUrS88zMTGg0mjKLo9Sc5JqXSosDcC4ZEkuuMZIzJ6XFAdQ9l4rDIueRxo0b48iRI9LzdevWwc7OTnp+5MiRIm8d8DgvLy/ExcVJz2fPnq33x3Lfvn1o3LixQTnJFUuuOHKNkZw5KS0OALi7u+vdb+Xvv//WW8ciKSnJoPVWPD09cezYMen5/v378dJLL0nPT506BTc3tzKLo9Sc5JqXSosDcC4ZEkuuMZIzJ6XFAdQ9l4rDdXIeuXHjBrRard6/uB63fft2WFhYwN/f/5k+5/Dhw7C0tETDhg2fKY6csQyNU1ZjVJqclBhn//79sLKygpeXV6Hty5YtQ15eHoKDg4uN8+eff8LExASurq6Ftq9btw7GxsZFroYqdxyl5iTXvFRaHIBzyZBYco2RnDkpLQ6g7rlUHBY5REREpEr8uaoYjRo1wt9///3McWxsbHDx4kUZMpIvllxx5BojQHl9k/N7e/fdd3H9+vVnjtOtWze9c4fKO46cseTMSa55qbQ4AOeSIeQaI0B54yTneKt5LuVjkVOMS5cuybLSrZwHy+SKJVccucYIUF7f5PzevvvuO2RkZDxznL179+L+/fuKiSNnLDlzkmteKi0OwLlkCLnGCFDeOMk53mqeS/lY5BCVAf4qTHLhXCoZx8gwL8I4scgpRrt27WBhYfHMcd58881S3Xm8LGLJFUeuMQKU1zc5vze5ODs7w8TERDFx5IwlZ05yzUulxZGTEr83OWPJRWnjxDEqHZ54TERERKpkXN4JKMl///2HkydPokmTJqhSpQquX7+OVatWITMzE6+//rpBa1v8888/MDc3R7Vq1QAAv//+O8LCwpCSkgJnZ2eMHj0avr6+Bud0//59/O9//8O+fftw5coVaLVa1K5dGz179kSnTp1KFSc+Ph5VqlSBp6enXtuDBw/w/fffY/DgwSXGkWOMAHnHSWljlC83NxdGRkbS80OHDiEzMxO+vr5P9a+VW7duYePGjdIYvf7667C1tTX4/RcvXiwwRi+//PJTHa3Ky8uDVlvwQHBeXh7++ecf1KpVq8QYQghcunQJTk5OMDY2RlZWFn766SdkZmaia9eu0twoSWZmJrRarTSmFy5cQHh4uDROw4YNK/Iy1cLs2rWrwDi9+uqrpV6z459//oFOpyuw4Fp2djbi4uLQvn17g2NxLpVM7jEClDNOco0RoO65VKhnXjNZJQ4dOiRsbW2FRqMRlStXFkePHhWurq7Czc1N1KlTR1hYWIj4+PgS47Rs2VK6H8fmzZuFVqsVr776qpg0aZJ47bXXhImJid59bIpz7tw54ezsLOzs7ISTk5PQaDSiW7duwsfHRxgZGYnXX39dZGdnlxjn7NmzwtnZWe8uyP/++6/UnpqaKrRabYlx5BojIeQbJ6WNkRDy3dH8tddeExs3bhRCCPHHH3+IatWqierVqwsfHx9hb28vHBwcRGJiYolx7ty5I/r06SN9vlarFQ4ODsLIyEhYW1uLJUuWGNQvIYRIT08Xr7/+ujA3Nxd2dnZi6tSpIicnR2o3dJySkpKEs7Oz0Gq1om7duuLixYvC29tbWFlZCUtLS1GtWjXx559/GpSTn5+fNE779u0TZmZmonHjxqJfv36iadOmwtLSUhw4cKDEOGlpaaJly5ZCq9UKY2NjodVqhbe3tzRWEyZMMCify5cvixYtWgitViuMjIzEoEGDxO3bt6V2zqWH5JpLco2REMobJ7nGSAh1z6XisMh5JCAgQAwfPlxkZGSIuXPnipo1a4rhw4dL7UOHDhU9e/YsMY6VlZW4ePGiEEIIHx8fMXv2bL32r776SjRt2tSgnIKCgsT//d//iby8PCGEELNnzxZBQUFCCCH+/PNP4eLiIqZPn15inJ49e4pu3bqJa9euiXPnzolu3boJV1dX6T4mhu4oco2REPKNk9LGSAj57mheuXJl6V4uQUFBYsCAASIzM1MIIURWVpYYNmyY6Ny5c4lxRowYIdq0aSNOnTolzp07J/r06SMmTpwo7t69K1atWiUsLS2lG/eVZMyYMaJevXpi48aNYsWKFcLZ2Vl069ZNyis1NVVoNJoS4/To0UO8+uqr4uTJk2Ls2LHCw8ND9OjRQ2RlZYkHDx6IV155Rbz55psG5WRjYyMVRH5+fmLcuHF67VOmTBFt2rQpMU6/fv1Ez549RXp6unjw4IEIDg4WgwcPFkI8vEFr1apVxcKFC0uMM3jwYOHj4yOOHDkioqOjhbe3t2jevLm4ceOGEMLwMRKCc8mQcZJrjIRQ3jjJNUZCqHsuFYdFziOVK1eWqs+srCyh1WrFoUOHpPb4+Hjx0ksvlRjH1tZWnDhxQgghhJ2dnfTf+c6fP2/wzfksLS31/jWbmZkpTExMxPXr14UQD4+AuLi4lBjHzs5OnDx5Unqel5cnRo4cKWrVqiUuXLhg8B9wucZICPnGSWljJIR8dzS3sLAQ58+fl2IeO3ZMr/3s2bPC1ta2xDjVqlUTR48elZ7fuHFDmJubi7t37wohhFiyZInw8vIqMY4QQtSqVUvs3r1ben7t2jXRsmVL0blzZ/HgwQODx6l69eri+PHjQoiH/6LTaDTi999/l9r3798vatWqZVBOVlZW0v907e3tRUJCgl77+fPnhbW1dYlxbGxs9G5YeOfOHWFiYiLS09OFEEJ8++23Bt09vEaNGnr7RX7R5uXlJf777z/OpUfkmktyjZEQyhsnucYovz9qnUvF4dVVj2RlZUlXP5iYmMDS0lLvnIBq1arhv//+KzGOn58f/ve//wEAmjZtitjYWL323bt3692fozg6nQ63b9+Wnt+7dw85OTkwNTUF8PAeOYYsnHT//n0YG///0680Gg2WL1+OV155BX5+fvjzzz8NykeuMQLkGyeljRHw8Gae+blXqVIFlpaWeveIqVu3rkE5NW7cGLt27QIAODg44K+//tJr/+uvvwy6YicnJ0fv921ra2vk5ORIN+vr3LkzkpKSSu4YgGvXrun1pVq1avjtt99w+/ZtdO3aFffu3TMozp07d6R7g1lZWcHKygqOjo5Su5OTE9LS0gyK5ePjg19//RUAUKdOHZw4cUKvPSEhQe8+ZEUxMzPTuyGgVqtFbm6udNPC1q1b49KlSyXGSU9PR+XKlfXibtq0CS4uLujQoQOuXr1qSLcAcC4ZQq4xApQ3TnKNEaDuuVSsZy6TVMLd3V3ExMRIz7ds2SLu3bsnPT948KCoWbNmiXESExNF1apVxeDBg8Unn3wirK2txZtvvik+++wzMXjwYGFmZiYiIiIMymnIkCHCz89PnDlzRly8eFE6xyBfbGyscHJyKjFOixYtxJo1awptGz16tNDpdAb9a0CuMRJCvnFS2hgJ8fBfX4//S37SpEniv//+k54nJCSIatWqlRhny5YtokqVKiIiIkJEREQIFxcXsXLlSrF//34RHh4unJycDDpP5OWXX9Y7DD137lzh6OgoPT927JhB+QghRP369cXWrVsLvH779m3h6+srmjRpYtA41alTR+/IzbJly0RGRob0PD4+Xjg4OBiU04EDB4Stra2YPn26+Oqrr0S1atXElClTxNq1a8W0adOETqcTX3zxRYlxXnvtNdG7d29x584dkZWVJcaOHSvq1q0rtR88eNCgnBo1aiR++OGHAq9nZ2eLnj17ilq1anEuCfnmklxjJITyxkmuMRJC3XOpOCxyHgkNDRX/+9//imz/6KOPRK9evQyKdf78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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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aOrUqejatSs8PDyQkZGBiIgIxMTEYNeuXbC1tcXIkSMRGhoKe3t72NjY4N1330VAQIDyLa3OnTvD19cXQ4YMwfz585GSkoJp06Zh3LhxypGYMWPGICwsDJMnT8aIESOwZ88e/Pjjj9i+fbsyjtDQUAwbNgzNmzdHy5YtsXjxYty/fx/Dhw8HAL3GQkRERFSqQujGjRsYOnQorl+/DltbWzRq1Ai7du3CK6+8AgBYtGgRtFot+vTpg8zMTAQHB+Prr79Wft7IyAjbtm3D2LFjERAQACsrKwwbNgxz5sxR+nh7e2P79u2YMGEClixZgurVq2PVqlXKNYQAoH///rh58yZmzJiBlJQUNGnSBJGRkTonUJc0FiIiIqLnvo5QZcbrCBERPQdeR8igVfrrCBERERFVdCyEiIiIyGCxECIiIiKDVerrCBEREelDM6vkPjyzh8objwgRERGRweIRISIiUjUeWaIXiUeEiIiIyGDxiBARERmE2bNn69Vv5syZL3gkpCYshIiIiEpJn6KKBVXFwI/GiIiIyGCxECIiIiKDxUKIiIiIDBbPESIiIoMwc9YsPTvy3B5DwkKIiIionKjxpGs1julFYiFERERUSnodXapExUJlxnOEiIiIyGCxECIiIiKDxUKIiIiIDBbPESIiIionajzXSI1jepF4RIiIiIgMFgshIiIiMlj8aIyIiKiC0+faP0Dluv6PLDwiRERERAaLhRAREREZLBZCREREZLB4jhARERkEzSz9+okXOgpSGxZCREREpaRPUcWCqmJgIURERFTB6XURRKBSXQhRFp4jRERERAaLhRAREREZLH40RkREVE7UeK6RGsf0IvGIEBERERksFkJERERksFgIERERkcFiIUREREQGq1SF0Ny5c9GiRQtUqVIFTk5O6NWrF86fP6/TJzAwEBqNRucxZswYnT7Jycno3r07LC0t4eTkhEmTJiEnJ0enT0xMDJo1awYzMzPUqlUL4eHhBcazbNkyeHl5wdzcHP7+/jh69KhO+6NHjzBu3Dg4ODjA2toaffr0QWpqammmTERERJVYqQqhffv2Ydy4cTh8+DCioqKQnZ2Nzp074/79+zr93n77bVy/fl15zJ8/X2nLzc1F9+7dkZWVhUOHDmHdunUIDw/HjBkzlD5JSUno3r07OnbsiPj4eIwfPx6jRo3Crl27lD6bNm1CaGgoZs6ciRMnTqBx48YIDg7GjRs3lD4TJkzAr7/+is2bN2Pfvn24du0aevfuXepFIiIiosqpVF+fj4yM1HkeHh4OJycnxMXFoX379srrlpaWcHFxKTRj9+7dSEhIwG+//QZnZ2c0adIEn3zyCaZMmYJZs2bB1NQUK1asgLe3NxYuXAgAqFevHg4cOIBFixYhODgYAPDll1/i7bffxvDhwwEAK1aswPbt27FmzRp8+OGHSEtLw+rVqxEREYGXX34ZALB27VrUq1cPhw8fRqtWrUozdSIiIqqEnuscobS0NACAvb29zusbNmyAo6MjGjRogKlTp+LBgwdKW2xsLBo2bAhnZ2flteDgYKSnp+Ps2bNKn6CgIJ3M4OBgxMbGAgCysrIQFxen00er1SIoKEjpExcXh+zsbJ0+devWhYeHh9LnaZmZmUhPT9d5EBERUeX1zBdUzMvLw/jx49GmTRs0aNBAeX3QoEHw9PSEm5sbTp8+jSlTpuD8+fPYsmULACAlJUWnCAKgPE9JSSm2T3p6Oh4+fIg7d+4gNze30D6JiYlKhqmpKezs7Ar0yX+fp82dOxezZ88u5UoQERGVL30ugghUrgshyvLMhdC4cePwxx9/4MCBAzqvjx49Wvnvhg0bwtXVFZ06dcKlS5dQs2bNZx9pGZg6dSpCQ0OV5+np6XB3dy/HEREREdGL9EwfjYWEhGDbtm3Yu3cvqlevXmxff39/AMDFixcBAC4uLgW+uZX/PP+8oqL62NjYwMLCAo6OjjAyMiq0z5MZWVlZuHv3bpF9nmZmZgYbGxudBxEREVVepSqEhBAICQnBzz//jD179sDb27vEn4mPjwcAuLq6AgACAgJw5swZnW93RUVFwcbGBr6+vkqf6OhonZyoqCgEBAQAAExNTeHn56fTJy8vD9HR0UofPz8/mJiY6PQ5f/48kpOTlT5ERERk2Er10di4ceMQERGB//73v6hSpYpyro2trS0sLCxw6dIlREREoFu3bnBwcMDp06cxYcIEtG/fHo0aNQIAdO7cGb6+vhgyZAjmz5+PlJQUTJs2DePGjYOZmRkAYMyYMQgLC8PkyZMxYsQI7NmzBz/++CO2b9+ujCU0NBTDhg1D8+bN0bJlSyxevBj3799XvkVma2uLkSNHIjQ0FPb29rCxscG7776LgIAAfmOMiIiIAJSyEFq+fDmAxxdNfNLatWvx1ltvwdTUFL/99ptSlLi7u6NPnz6YNm2a0tfIyAjbtm3D2LFjERAQACsrKwwbNgxz5sxR+nh7e2P79u2YMGEClixZgurVq2PVqlXKV+cBoH///rh58yZmzJiBlJQUNGnSBJGRkTonUC9atAharRZ9+vRBZmYmgoOD8fXXX5dqgYiIiKjyKlUhJETx55u7u7tj3759JeZ4enpix44dxfYJDAzEyZMni+0TEhKCkJCQItvNzc2xbNkyLFu2rMQxERERkeHhvcaIiIjIYLEQIiIiIoPFQoiIiIgMFgshIiIiMlgshIiIiMhgsRAiIiIig8VCiIiIiAwWCyEiIiIyWCyEiIiIyGCxECIiIiKDxUKIiIiIDBYLISIiIjJYLISIiIjIYLEQIiIiIoPFQoiIiIgMFgshIiIiMlgshIiIiMhgsRAiIiIig8VCiIiIiAwWCyEiIiIyWCyEiIiIyGCxECIiIiKDxUKIiIiIDBYLISIiIjJYLISIiIjIYLEQIiIiIoPFQoiIiIgMFgshIiIiMlgshIiIiMhgsRAiIiIig8VCiIiIiAwWCyEiIiIyWCyEiIiIyGCxECIiIiKDxUKIiIiIDFapCqG5c+eiRYsWqFKlCpycnNCrVy+cP39ep8+jR48wbtw4ODg4wNraGn369EFqaqpOn+TkZHTv3h2WlpZwcnLCpEmTkJOTo9MnJiYGzZo1g5mZGWrVqoXw8PAC41m2bBm8vLxgbm4Of39/HD16tNRjISIiIsNVqkJo3759GDduHA4fPoyoqChkZ2ejc+fOuH//vtJnwoQJ+PXXX7F582bs27cP165dQ+/evZX23NxcdO/eHVlZWTh06BDWrVuH8PBwzJgxQ+mTlJSE7t27o2PHjoiPj8f48eMxatQo7Nq1S+mzadMmhIaGYubMmThx4gQaN26M4OBg3LhxQ++xEBERkWHTCCHEs/7wzZs34eTkhH379qF9+/ZIS0tDtWrVEBERgb59+wIAEhMTUa9ePcTGxqJVq1bYuXMnevTogWvXrsHZ2RkAsGLFCkyZMgU3b96EqakppkyZgu3bt+OPP/5Q3mvAgAG4e/cuIiMjAQD+/v5o0aIFwsLCAAB5eXlwd3fHu+++iw8//FCvsZQkPT0dtra2SEtLg42NzbMuExGRQdLM1pTYR8ws+VdQWeaocUyGPrdnySrN7+/nOkcoLS0NAGBvbw8AiIuLQ3Z2NoKCgpQ+devWhYeHB2JjYwEAsbGxaNiwoVIEAUBwcDDS09Nx9uxZpc+TGfl98jOysrIQFxen00er1SIoKEjpo89YnpaZmYn09HSdBxEREVVez1wI5eXlYfz48WjTpg0aNGgAAEhJSYGpqSns7Ox0+jo7OyMlJUXp82QRlN+e31Zcn/T0dDx8+BC3bt1Cbm5uoX2ezChpLE+bO3cubG1tlYe7u7ueq0FEREQV0TMXQuPGjcMff/yBjRs3yhxPuZo6dSrS0tKUx9WrV8t7SERERPQCGT/LD4WEhGDbtm3Yv38/qlevrrzu4uKCrKws3L17V+dITGpqKlxcXJQ+T3+7K/+bXE/2efrbXampqbCxsYGFhQWMjIxgZGRUaJ8nM0oay9PMzMxgZmZWipUgIiKiiqxUR4SEEAgJCcHPP/+MPXv2wNvbW6fdz88PJiYmiI6OVl47f/48kpOTERAQAAAICAjAmTNndL7dFRUVBRsbG/j6+ip9nszI75OfYWpqCj8/P50+eXl5iI6OVvroMxYiIiIybKU6IjRu3DhERETgv//9L6pUqaKca2NrawsLCwvY2tpi5MiRCA0Nhb29PWxsbPDuu+8iICBA+ZZW586d4evriyFDhmD+/PlISUnBtGnTMG7cOOVozJgxYxAWFobJkydjxIgR2LNnD3788Uds375dGUtoaCiGDRuG5s2bo2XLlli8eDHu37+P4cOHK2MqaSxERERk2EpVCC1fvhwAEBgYqPP62rVr8dZbbwEAFi1aBK1Wiz59+iAzMxPBwcH4+uuvlb5GRkbYtm0bxo4di4CAAFhZWWHYsGGYM2eO0sfb2xvbt2/HhAkTsGTJElSvXh2rVq1CcHCw0qd///64efMmZsyYgZSUFDRp0gSRkZE6J1CXNBYiIiIybKUqhPS55JC5uTmWLVuGZcuWFdnH09MTO3bsKDYnMDAQJ0+eLLZPSEgIQkJCnmssREREZLh4rzEiIiIyWCyEiIiIyGCxECIiIiKDxUKIiIiIDBYLISIiIjJYLISIiIjIYLEQIiIiIoPFQoiIiIgMFgshIiIiMlgshIiIiMhgsRAiIiIig8VCiIiIiAwWCyEiIiIyWCyEiIiIyGCxECIiIiKDxUKIiIiIDBYLISIiIjJYLISIiIjIYLEQIiIiIoPFQoiIiIgMFgshIiIiMlgshIiIiMhgsRAiIiIig8VCiIiIiAwWCyEiIiIyWCyEiIiIyGCxECIiIiKDxUKIiIiIDBYLISIiIjJYLISIiIjIYLEQIiIiIoPFQoiIiIgMFgshIiIiMlgshIiIiMhgsRAiIiIig1XqQmj//v149dVX4ebmBo1Gg61bt+q0v/XWW9BoNDqPLl266PS5ffs2Bg8eDBsbG9jZ2WHkyJG4d++eTp/Tp0+jXbt2MDc3h7u7O+bPn19gLJs3b0bdunVhbm6Ohg0bYseOHTrtQgjMmDEDrq6usLCwQFBQEC5cuFDaKRMREVElZVzaH7h//z4aN26MESNGoHfv3oX26dKlC9auXas8NzMz02kfPHgwrl+/jqioKGRnZ2P48OEYPXo0IiIiAADp6eno3LkzgoKCsGLFCpw5cwYjRoyAnZ0dRo8eDQA4dOgQBg4ciLlz56JHjx6IiIhAr169cOLECTRo0AAAMH/+fCxduhTr1q2Dt7c3pk+fjuDgYCQkJMDc3Ly0UyciqvRmz55dYp+ZM2eWwUiIykapC6GuXbuia9euxfYxMzODi4tLoW3nzp1DZGQkjh07hubNmwMAvvrqK3Tr1g1ffPEF3NzcsGHDBmRlZWHNmjUwNTVF/fr1ER8fjy+//FIphJYsWYIuXbpg0qRJAIBPPvkEUVFRCAsLw4oVKyCEwOLFizFt2jT07NkTALB+/Xo4Oztj69atGDBgQIGxZWZmIjMzU3menp5e2uUhIiKiCuSFnCMUExMDJycn1KlTB2PHjsU///yjtMXGxsLOzk4pggAgKCgIWq0WR44cUfq0b98epqamSp/g4GCcP38ed+7cUfoEBQXpvG9wcDBiY2MBAElJSUhJSdHpY2trC39/f6XP0+bOnQtbW1vl4e7u/pwrQURERGpW6iNCJenSpQt69+4Nb29vXLp0CR999BG6du2K2NhYGBkZISUlBU5OTrqDMDaGvb09UlJSAAApKSnw9vbW6ePs7Ky0Va1aFSkpKcprT/Z5MuPJnyusz9OmTp2K0NBQ5Xl6ejqLISKqEPiRFtGzkV4IPfmRU8OGDdGoUSPUrFkTMTEx6NSpk+y3k8rMzKzA+UxERERUeUkvhJ5Wo0YNODo64uLFi+jUqRNcXFxw48YNnT45OTm4ffu2cl6Ri4sLUlNTdfrkPy+pz5Pt+a+5urrq9GnSpIm8CRIRVSIzZ83SoxOPLFHl8cKvI/T333/jn3/+UYqRgIAA3L17F3FxcUqfPXv2IC8vD/7+/kqf/fv3Izs7W+kTFRWFOnXqoGrVqkqf6OhonfeKiopCQEAAAMDb2xsuLi46fdLT03HkyBGlDxERERm2UhdC9+7dQ3x8POLj4wE8Pik5Pj4eycnJuHfvHiZNmoTDhw/jypUriI6ORs+ePVGrVi0EBwcDAOrVq4cuXbrg7bffxtGjR3Hw4EGEhIRgwIABcHNzAwAMGjQIpqamGDlyJM6ePYtNmzZhyZIlOufvvP/++4iMjMTChQuRmJiIWbNm4fjx4wgJCQEAaDQajB8/Hp9++il++eUXnDlzBkOHDoWbmxt69er1nMtGRERElUGpPxo7fvw4OnbsqDzPL06GDRuG5cuX4/Tp01i3bh3u3r0LNzc3dO7cGZ988onOuTcbNmxASEgIOnXqBK1Wiz59+mDp0qVKu62tLXbv3o1x48bBz88Pjo6OmDFjhvLVeQBo3bo1IiIiMG3aNHz00Ufw8fHB1q1blWsIAcDkyZNx//59jB49Gnfv3kXbtm0RGRnJawgRUaXDj7SInk2pC6HAwEAIIYps37VrV4kZ9vb2ysUTi9KoUSP8/vvvxfZ544038MYbbxTZrtFoMGfOHMyZM6fEMREREZHh4b3GiIiIyGCxECIiIiKD9cK/Pk9ERIXT5yKIAC+ESPQisRAiIiKFZlbJfYo+S5So4uFHY0RERGSwWAgRERGRweJHY0RE5USva/8Ael3/hx9pET0bHhEiIiIig8VCiIiIiAwWCyEiIiIyWCyEiIiIyGCxECIiIiKDxW+NEVUC+lyhmFcnlofrTVR58IgQERERGSweESLV47++iYjoRWEhRERUTvS5CCLACyESvUgshIgqAb2uUMyjZtJwvYkqD54jRERERAaLR4RI9fivbyIielF4RIiIiIgMFo8IEZEOfkuPiAwJjwgRERGRwWIhRERERAaLH40RkQ6enE5EhoSF0DPgORREhk2fCyHyIohEFQM/GiMiIiKDxSNCz4AfHZDa8AgFEdGzYSFEBoMfaRIR0dNYCJUj/mImIiIqXyyEKgkWVaQ23JNEVBGwECpHPNeo4uIveSKiyoGFUCXBoqpkXCMiInoaCyEi0iHrG2gsPImoIuB1hIiIiMhg8YgQqZ4ar5HDox1ERJVDqY8I7d+/H6+++irc3Nyg0WiwdetWnXYhBGbMmAFXV1dYWFggKCgIFy5c0Olz+/ZtDB48GDY2NrCzs8PIkSNx7949nT6nT59Gu3btYG5uDnd3d8yfP7/AWDZv3oy6devC3NwcDRs2xI4dO0o9FiIiIjJcpS6E7t+/j8aNG2PZsmWFts+fPx9Lly7FihUrcOTIEVhZWSE4OBiPHj1S+gwePBhnz55FVFQUtm3bhv3792P06NFKe3p6Ojp37gxPT0/ExcVhwYIFmDVrFr799lulz6FDhzBw4ECMHDkSJ0+eRK9evdCrVy/88ccfpRoLERERGa5SfzTWtWtXdO3atdA2IQQWL16MadOmoWfPngCA9evXw9nZGVu3bsWAAQNw7tw5REZG4tixY2jevDkA4KuvvkK3bt3wxRdfwM3NDRs2bEBWVhbWrFkDU1NT1K9fH/Hx8fjyyy+VgmnJkiXo0qULJk2aBAD45JNPEBUVhbCwMKxYsUKvsTwtMzMTmZmZyvP09PTSLk+Fx6+FExGRIZF6snRSUhJSUlIQFBSkvGZrawt/f3/ExsYCAGJjY2FnZ6cUQQAQFBQErVaLI0eOKH3at28PU1NTpU9wcDDOnz+PO3fuKH2efJ/8Pvnvo89YnjZ37lzY2toqD3d39+dZDiIiIlI5qSdLp6SkAACcnZ11Xnd2dlbaUlJS4OTkpDsIY2PY29vr9PH29i6Qkd9WtWpVpKSklPg+JY3laVOnTkVoaKjyPD09ncUQUTnT5yglwCOVRPRs+K2xJ5iZmcHMzKy8h1Gu+G2ossWPIomIypfUQsjFxQUAkJqaCldXV+X11NRUNGnSROlz48YNnZ/LycnB7du3lZ93cXFBamqqTp/85yX1ebK9pLEQ0YujxssesPAkoqdJPUfI29sbLi4uiI6OVl5LT0/HkSNHEBAQAAAICAjA3bt3ERcXp/TZs2cP8vLy4O/vr/TZv38/srOzlT5RUVGoU6cOqlatqvR58n3y++S/jz5jISIiIsNW6iNC9+7dw8WLF5XnSUlJiI+Ph729PTw8PDB+/Hh8+umn8PHxgbe3N6ZPnw43Nzf06tULAFCvXj106dIFb7/9NlasWIHs7GyEhIRgwIABcHNzAwAMGjQIs2fPxsiRIzFlyhT88ccfWLJkCRYtWqS87/vvv48OHTpg4cKF6N69OzZu3Ijjx48rX7HXaDQljoUMixqPUFDJ9Pq4FuBHtkT0TEpdCB0/fhwdO3ZUnuefXDxs2DCEh4dj8uTJuH//PkaPHo27d++ibdu2iIyMhLm5ufIzGzZsQEhICDp16gStVos+ffpg6dKlSrutrS12796NcePGwc/PD46OjpgxY4bOtYZat26NiIgITJs2DR999BF8fHywdetWNGjQQOmjz1ieBX+hkiw8J4uIqHyVuhAKDAyEEEX/mtdoNJgzZw7mzJlTZB97e3tEREQU+z6NGjXC77//XmyfN954A2+88cZzjYWIDAcLTyJ6Gr81Vo54ZImIiKh8sRCqJFhUlS2uNxFR5SD1W2NEREREFQkLISIiIjJYLISIiIjIYPEcIXoheH8okkWf87EAnpNFRM+GhRARGQye5E5ET2MhRC8ErwZMREQVAc8RIiIiIoPFI0Kkgx8dlC2uNxFR+eIRISIiIjJYLISIiIjIYLEQIiIiIoPFQoiIiIgMFgshIiIiMlgshIiIiMhgsRAiIiIig8VCiIiIiAwWCyEiIiIyWCyEiIiIyGCxECIiIiKDxUKIiIiIDBZvukovhD43EwV4Q1EiIipfPCJEREREBouFEBERERksFkJERERksFgIERERkcFiIUREREQGi4UQERERGSwWQkRERGSwWAgRERGRwWIhRERERAaLhRAREREZLBZCREREZLBYCBEREZHBkl4IzZo1CxqNRudRt25dpf3Ro0cYN24cHBwcYG1tjT59+iA1NVUnIzk5Gd27d4elpSWcnJwwadIk5OTk6PSJiYlBs2bNYGZmhlq1aiE8PLzAWJYtWwYvLy+Ym5vD398fR48elT1dIiIiqsBeyBGh+vXr4/r168rjwIEDStuECRPw66+/YvPmzdi3bx+uXbuG3r17K+25ubno3r07srKycOjQIaxbtw7h4eGYMWOG0icpKQndu3dHx44dER8fj/Hjx2PUqFHYtWuX0mfTpk0IDQ3FzJkzceLECTRu3BjBwcG4cePGi5gyERERVUAvpBAyNjaGi4uL8nB0dAQApKWlYfXq1fjyyy/x8ssvw8/PD2vXrsWhQ4dw+PBhAMDu3buRkJCA77//Hk2aNEHXrl3xySefYNmyZcjKygIArFixAt7e3li4cCHq1auHkJAQ9O3bF4sWLVLG8OWXX+Ltt9/G8OHD4evrixUrVsDS0hJr1qwpctyZmZlIT0/XeRAREVHl9UIKoQsXLsDNzQ01atTA4MGDkZycDACIi4tDdnY2goKClL5169aFh4cHYmNjAQCxsbFo2LAhnJ2dlT7BwcFIT0/H2bNnlT5PZuT3yc/IyspCXFycTh+tVougoCClT2Hmzp0LW1tb5eHu7v6cK0FERERqJr0Q8vf3R3h4OCIjI7F8+XIkJSWhXbt2yMjIQEpKCkxNTWFnZ6fzM87OzkhJSQEApKSk6BRB+e35bcX1SU9Px8OHD3Hr1i3k5uYW2ic/ozBTp05FWlqa8rh69eozrQERERFVDMayA7t27ar8d6NGjeDv7w9PT0/8+OOPsLCwkP12UpmZmcHMzKy8h0FERERl5IV/fd7Ozg61a9fGxYsX4eLigqysLNy9e1enT2pqKlxcXAAALi4uBb5Flv+8pD42NjawsLCAo6MjjIyMCu2Tn0FERET0wguhe/fu4dKlS3B1dYWfnx9MTEwQHR2ttJ8/fx7JyckICAgAAAQEBODMmTM63+6KioqCjY0NfH19lT5PZuT3yc8wNTWFn5+fTp+8vDxER0crfYiIiIikF0ITJ07Evn37cOXKFRw6dAivv/46jIyMMHDgQNja2mLkyJEIDQ3F3r17ERcXh+HDhyMgIACtWrUCAHTu3Bm+vr4YMmQITp06hV27dmHatGkYN26c8rHVmDFjcPnyZUyePBmJiYn4+uuv8eOPP2LChAnKOEJDQ7Fy5UqsW7cO586dw9ixY3H//n0MHz5c9pSJiIiogpJ+jtDff/+NgQMH4p9//kG1atXQtm1bHD58GNWqVQMALFq0CFqtFn369EFmZiaCg4Px9ddfKz9vZGSEbdu2YezYsQgICICVlRWGDRuGOXPmKH28vb2xfft2TJgwAUuWLEH16tWxatUqBAcHK3369++PmzdvYsaMGUhJSUGTJk0QGRlZ4ARqIiIiMlzSC6GNGzcW225ubo5ly5Zh2bJlRfbx9PTEjh07is0JDAzEyZMni+0TEhKCkJCQYvsQERGR4eK9xoiIiMhgsRAiIiIig8VCiIiIiAwWCyEiIiIyWCyEiIiIyGCxECIiIiKDxUKIiIiIDBYLISIiIjJYLISIiIjIYLEQIiIiIoPFQoiIiIgMFgshIiIiMlgshIiIiMhgsRAiIiIig8VCiIiIiAwWCyEiIiIyWCyEiIiIyGCxECIiIiKDxUKIiIiIDBYLISIiIjJYLISIiIjIYLEQIiIiIoPFQoiIiIgMFgshIiIiMlgshIiIiMhgsRAiIiIig8VCiIiIiAwWCyEiIiIyWCyEiIiIyGCxECIiIiKDxUKIiIiIDBYLISIiIjJYLISIiIjIYLEQIiIiIoNlEIXQsmXL4OXlBXNzc/j7++Po0aPlPSQiIiJSgUpfCG3atAmhoaGYOXMmTpw4gcaNGyM4OBg3btwo76ERERFROav0hdCXX36Jt99+G8OHD4evry9WrFgBS0tLrFmzpryHRkREROXMuLwH8CJlZWUhLi4OU6dOVV7TarUICgpCbGxsgf6ZmZnIzMxUnqelpQEA0tPTdTs+Kvm9C/xMYWTlyMwqwxyZWVxvSTkys7iXpOTIzOJeKrmLzCy15cjMUvteyv9vIUTJPygqsf/9738CgDh06JDO65MmTRItW7Ys0H/mzJkCAB988MEHH3zwUQkeV69eLbFWqNRHhEpr6tSpCA0NVZ7n5eXh9u3bcHBwgEajKfLn0tPT4e7ujqtXr8LGxuaZ319tOWocE+fGMaktR41jqsxzU+OYODf1jUkIgYyMDLi5uZWYV6kLIUdHRxgZGSE1NVXn9dTUVLi4uBTob2ZmBjMzM53X7Ozs9H4/Gxub594oasyRmaW2HJlZasuRmVWZx8S5lW1WZR4T51a2WSXl2Nra6pVTqU+WNjU1hZ+fH6Kjo5XX8vLyEB0djYCAgHIcGREREalBpT4iBAChoaEYNmwYmjdvjpYtW2Lx4sW4f/8+hg8fXt5DIyIionJW6Quh/v374+bNm5gxYwZSUlLQpEkTREZGwtnZWdp7mJmZYebMmQU+VqvoOWocE+fGMaktR41jqsxzU+OYOLeKOyYA0Aihz3fLiIiIiCqfSn2OEBEREVFxWAgRERGRwWIhRERERAaLhRAREREZLBZCREREZLAq/dfnX4ScnBycPXsWKSkpAAAXFxf4+vrCxMSkQucAQEpKCo4cOaKT5e/vX+iVuMtiTDLnJitL1hrly7/Rr4yvgsrKkpWTlpams076XulV7TmysmTub4B7qazHpLb1VuMaycySOSYdcm5vahhyc3PFxx9/LOzs7IRGo9F52NnZiWnTponc3NwKlyOEEPfu3RODBw8WRkZGwtjYWDg5OQknJydhbGwsjIyMxJtvvinu379fIecmK0vWGgkhxO7du0XXrl2FnZ2d0Gq1QqvVCjs7O9G1a1cRFRWlV4bsLJljWrlypahXr56Sk/+oV6+eWLVqVYXNkZUlc39zL1XcucnKUtsaycySOaaisBAqhUmTJolq1aqJFStWiKSkJPHgwQPx4MEDkZSUJL755hvh5OQkJk+eXOFyhBBi5MiRwsfHR0RGRoqcnBzl9ZycHLFr1y5Ru3ZtMWrUqAo5N1lZstYoPDxcGBsbiwEDBoi1a9eKHTt2iB07doi1a9eKgQMHChMTE7F+/Xq95iYrS+aY5s+fLywtLcWHH34o9u7dKxISEkRCQoLYu3evmDp1qrCyshILFiyocDkys2TtSe4l/dZbjXOTlaW2NZKZJXNMxWEhVArOzs4iMjKyyPbIyEjh5ORU4XKEEMLOzk4cPHiwyPYDBw4IOzu7MhuTzLnJypK1Rj4+PiIsLKzI9mXLlolatWqVmCMzS+aYPDw8xKZNm4ps37hxo3B3d69wOTKzZO1J7iX91luNc5OVpbY1kpklc0zFYSFUCpaWluL06dNFtp86dUpYWVlVuBwhhLCxsRHHjh0rsv3o0aPCxsamzMYkc26ysmStkZmZmUhMTCyyPTExUZibm5eYIzNL5pjMzc1FQkJCke1nz54VFhYWFS5HZpasPcm9pN96q3FusrLUtkYys2SOqTj81lgpBAYGYuLEibh161aBtlu3bmHKlCkIDAyscDkA0KNHD4wePRonT54s0Hby5EmMHTsWr776apmNSebcZGXJWqP69etj9erVRbavWbMGvr6+JebIzJI5phYtWmDevHnIyckp0Jabm4vPP/8cLVq0qHA5MrNk7UnuJf3WW41zk5WltjWSmSVzTMXhvcZK4erVq+jWrRsSExPRsGFD5catqampOHPmDHx9fbFt2za4u7tXqBwAuHPnDgYNGoRdu3ahatWqcHJyAgDcuHEDd+/eRXBwMCIiImBnZ1fh5iYrS9YaxcTEoEePHqhRowaCgoJ0xhMdHY3Lly9j+/btaN++fYlzk5Ulc0ynT59GcHAwsrOz0b59e52s/fv3w9TUFLt370aDBg0qVI7MLFl7kntJv/VW49xkZaltjWRmyRxTcVgIlVJeXh527dqFw4cP63xNMSAgAJ07d4ZWq99BNrXl5Dt37lyhWXXr1tU7Q41zk5klY42uXLmC5cuXF5ozZswYeHl5lXmWzDFlZGTg+++/LzRr0KBBsLGxqZA5MrNk7UnuJf3WW41zk5WltjWSmSVzTEVhIUREREQGixdUfAZHjx5FbGysTnXaunVrvc8zUGtOVlYWtm7dWmhWz549YWpqWuZjkpUjK0vmGj19MT1XV1fUq1dPysUinzVL5pievvCkq6srWrZsWeoLT6otR2aWrP3NvVS2Y1LjeqttjWRmyRxToZ77dGsDkpqaKtq2bSs0Go3w9PQULVu2FC1bthSenp5Co9GItm3bitTU1AqXI4QQFy5cEDVq1BDm5uaiQ4cOol+/fqJfv36iQ4cOwtzcXNSqVUtcuHChQs5NVpasNVLjxSLVeHFOteXIzJK1J7mXeKFXta2RzCyZYyoOC6FS6NOnjwgICCj063yJiYmidevWom/fvhUuRwghgoKCRM+ePUVaWlqBtrS0NNGzZ0/RuXPnMhuTzLnJypK1Rmq8WKQaL86pthyZWbL2JPcSL/SqtjWSmSVzTMVhIVQK1tbW4sSJE0W2Hz9+XFhbW1e4HCGEsLCwEGfOnCmy/fTp03pdi0KNc5OVJWuN1HixSDVenFNtOTKzZO1J7iVe6FVtayQzS+aYisPrCJWCmZkZ0tPTi2zPyMjQ62ZwassBADs7O1y5cqXI9itXrpT4tXCZY5I5N1lZstYoIyMDbm5uRba7urri/v37JebIzJI5pry8vGLPlTI1NUVeXl6Fy5GZJWtPci/pt95qnJusLLWtkcwsmWMq1nOXUgbknXfeEZ6enmLLli06H4+kpaWJLVu2CC8vLxESElLhcoQQYvr06aJq1ariyy+/FKdOnRIpKSkiJSVFnDp1Snz55ZfC3t5ezJw5s0LOTVaWrDXq1q2b6Ny5s7h582aBtps3b4ouXbqI7t276zU3WVkyxzRo0CDRtGnTQo94nDhxQvj5+YnBgwdXuByZWbL2JPeSfuutxrnJylLbGsnMkjmm4rAQKoVHjx6JMWPGCFNTU6HVaoW5ubkwNzcXWq1WmJqairFjx4pHjx5VuJx88+bNE66urkKj0Sh3+dVoNMLV1VV8/vnnemWocW4ys2SsUXJysmjQoIEwNjYWTZs2FV26dBFdunQRTZs2FcbGxqJRo0YiOTm5TLNkjun27duiS5cuQqPRCHt7e1G3bl1Rt25dYW9vL7Rarejatau4c+dOhcuRmSVrT3Iv6bfeapybrCy1rZHMLJljKg6vI/QM0tPTERcXp/OVVz8/v1JdlE2NOfmSkpJ0sry9vUudoca5ycx63jVS48UiZV+cMzExscBXw0t74Uk15sjMkrEnuZcq7txkZqlpjWRmyd5LhWEhRERERAaLJ0s/o+TkZFy/fl3ntevXryM5OblC5wDA/v37cfz4cZ3Xjh8/jv3795fLmGTOTVaWrDUikrm/iegZPPeHawZKo9GIevXq6bxWt25dodVqK3SOGsdUmefm5eUlgoKCdF7r1KmT8Pb2LlWOzCyZY9JoNMLX11fntWddbzXlyB4T91LJZK23GucmK0ttayQzS+aYnsZbbDyjvXv3wtLSUue19evX48GDBxU6B3h8/svTly6Pjo5GdnZ2uYxJ5txkZclao2HDhqFatWo6r73++uu4detWqXJkZskc05o1awpcUmDu3LlIS0ur0Dkys2TtSe6lsh2TGtdbbWskM0vmmJ7Gc4SIiIjIYPGI0DNKS0vTOYPd1ta2UuQ8fXM7FxcX+Pr6PtPN7dQ2N1lZMtfIEGRmZgKA3hfArCg5srJk7u/KTuafXWXFNXoGz/3hmoFZuXKlqFevnnINmfxHvXr1xKpVqypsjsyb26ltbrKyZK7R2bNnxdixY0WTJk2Ei4uLcHFxEU2aNBFjx44VZ8+eLdXcZGXJHNPu3btF165dhZ2dnbLWdnZ2omvXriIqKqrC5sjMkrW/uZcq7txkZaltjWRmyRxTUXhEqBQWLFiAWbNm4b333kNwcDCcnZ0BAKmpqdi9ezfef/993LlzBxMnTqxQOQDw4YcfIjw8HPPmzSs0a/r06cjKysLnn39e4eYmK0vWGu3cuRO9evVCs2bN0LNnT52cqKgoNGvWDP/9738RHBxc4txkZckc07p16zBq1Cj07dsXixYtKrBO3bp1w+rVqzFkyJAKlSMzS9ae5F7Sb73VODdZWWpbI5lZMsdULCnllIHw8PAQmzZtKrJ948aNwt3dvcLlCCHv5nZqnJusLFlr1KhRIzF9+vQi22fOnCkaNmxYYo7MLJlj8vHxEWFhYUW2L1u2TNSqVavC5cjMkrUnuZf0W281zk1WltrWSGaWzDEVh4VQKZibm4uEhIQi28+ePavX3cfVliOEEJaWluL06dNFtp86dUpYWVmV2Zhkzk1Wlsw1SkxMLLI9MTFRmJubl5gjM0vmmMzMzKRkqS1HZpbMvyfcS2U3JjWut9rWSGaWzDEVhxdULIUWLVpg3rx5yMnJKdCWm5uLzz//HC1atKhwOQAQGBiIiRMnFvpVxFu3bmHKlCkIDAwsszHJnJusLFlr5OXlhe3btxfZvn37dnh6epaYIzNL5pjq16+P1atXF9m+Zs0a+Pr6VrgcmVmy9iT3kn7rrca5ycpS2xrJzJI5puLwHKFSCAsLQ3BwMFxcXNC+fXudzyv3798PU1NT7N69u8LlAMCKFSvQrVs3uLq6omHDhjpZZ86cga+vL7Zt21Yh5yYrS9YazZkzB4MGDUJMTAyCgoJ0cqKjoxEZGYmIiAi95iYrS+aYFi5ciB49eiAyMrLQrMuXLxf7Pze15sjMkrUnuZf0W281zk1WltrWSGaWzDEVh9cRKqWMjAx8//33hd4AbtCgQXrfLFFtOYC8m9upcW6ysmSt0aFDh7B06dJCb5L4/vvvIyAgQO+5ycqSOaYrV65g+fLlha7TmDFj4OXlVSFzZGbJ2pPcS14Vdm6ystS2RjKzZI6pKCyEiIiIyGDxo7FnkJKSgiNHjijVqaurK1q2bAkXF5cKnQMAR48eLVB5t27dWu/zcWSPSebcZGXJWiNAfReLlJnz9IUnXV1dUa9evVJfeFJtOTKzZO5v7qWyHZPa1luNayQz64VeePS5T7c2IPfu3RODBw8WRkZGwtjYWDg5OQknJydhbGwsjIyMxJtvvinu379f4XKEECI1NVW0bdtWaDQa4enpKVq2bClatmwpPD09hUajEW3bthWpqakVcm6ysmStkRAFL6an0WikXSzyWbNk5ci68KTacmRmydzf3EvPdqHX8p6brCw1rpHMLJljKgoLoVIYOXKk8PHxEZGRkSInJ0d5PScnR+zatUvUrl1bjBo1qsLlCCFEnz59REBAQKFfVUxMTBStW7cWffv2rZBzk5Ula43mz58vLC0txYcffij27t0rEhISREJCgti7d6+YOnWqsLKyEgsWLNBrbrKyZI5p0qRJolq1amLFihUiKSlJPHjwQDx48EAkJSWJb775Rjg5OYnJkydXuByZWbL2JPeSfuutxrnJylLbGsnMkjmm4rAQKgU7Oztx8ODBItsPHDgg7OzsKlyOEEJYW1uLEydOFNl+/PhxYW1tXWZjkjk3WVmy1kiNF4tU48U51ZYjM0vWnuRe4oVe1bZGMrNkjqk4vI5QKeTl5cHU1LTIdlNTU+Tl5VW4HODxDfrS09OLbM/IyNDrJn5qnJusLFlrdOPGDTRs2LDI9oYNGxZ6raIXmSVzTBkZGXBzcyuy3dXVFffv369wOTKzZO1J7iX91luNc5OVpbY1kpklc0zFeu5SyoAMGjRING3atNCjAidOnBB+fn5i8ODBFS5HCCHeeecd4enpKbZs2SLS0tKU19PS0sSWLVuEl5eXCAkJKbMxyZybrCxZa9SuXTsxdOhQkZ2dXaAtJydHDB06VLRv377EHJlZMsfUrVs30blzZ3Hz5s0CbTdv3hRdunQR3bt3r3A5MrNk7UnuJf3WW41zk5WltjWSmSVzTMXh1+dL4c6dOxg0aBB27dqFqlWrwsnJCcDjqvXu3bsIDg5GREQE7OzsKlQOAGRmZmL8+PFYs2YNcnJylH+tZmVlwdjYGCNHjsSiRYtKPOKhxrnJypK1RqdPn0ZwcDCys7OLvZhegwYNSpybrCyZY7p69Sq6deuGxMTEYi886e7uXqFyZGbJ2pPcS/qttxrnJitLbWskM0vmmIrDQugZJCYmFnpxp7p161boHABIT09HXFycTpafn1+pLl4oc0wy5yYrS8YaqfFikWq8OKfacmRnydiT3Eu80Kva1khmlswxFYWFEBERERksnixNBSQnJ+P69es6r12/fh3JycnlNCL14RoREVUOLISekVarRf369XVeq1evHoyMjCp0DvD4jr+dOnXSee3ll1+Gt7d3uYxJ5txkZclao44dO+Ktt97SeW3YsGF4+eWXS5UjM0vmmLy9vfHKK6/ovBYUFIQaNWpU6ByZWbL2JPdS2Y5JjeuttjWSmSVzTE/jLTae0Zo1awqcyDh37lykpaVV6BwA2Lt3LywtLXVeW79+PR48eFAuY5I5N1lZstbIy8sLrq6uOq+99NJLpTrPRHaWzDENGzYM1apV03nt9ddfL/VXXtWWIzNL1p7kXirbMalxvdW2RjKzZI7paTxHiIiIiAwWjwg9h8zMTADQ6yJ6FSlH5s3t1DY3WVkv9AaAZHBk7m8iKh0WQqUUFRWFRYsWITY2VrnKsI2NDQICAhAaGoqgoKAKmQMAq1atwpdffonz58/rvF6nTh188MEHGDlyZIWdm6wsWWt069YtrFmzptC72L/11lsFDm+XRZbMMSUkJCAsLKzQr4aHhITA19e3QubIzJK1J7mX9FtvNc5NVpba1khmlswxFYUfjZXCunXrMGrUKPTt2xfBwcE6F3favXs3fvrpJ6xevRpDhgypUDkAsGDBAsyaNQvvvfdeoVlLly7FrFmzMHHixAo3N1lZstbo2LFjCA4OhqWlJYKCgnRyoqOj8eDBA+zatQvNmzcvcW6ysmSOaefOnejVqxeaNWtWYJ2ioqIQFxeH//73vwgODq5QOTKzZO1J7iX91luNc5OVpbY1kpklc0zFeu5rUxsQHx8fERYWVmT7smXLRK1atSpcjhDybm6nxrnJypK1Rv7+/mL06NEiLy+vQFteXp4YPXq0aNWqVYk5MrNkjqlRo0Zi+vTpRbbPnDlTNGzYsMLlyMyStSe5l/RbbzXOTVaW2tZIZpbMMRWHhVApmJmZicTExCLbExMThbm5eYXLEUIIc3NzkZCQUGT72bNnhYWFRZmNSebcZGXJWiNzc3Nx7ty5ItvPnTtXqj83GVmyxyRrvdWUIzNL5p7kXiq7Mal1vdW0RjKzZI6pOLyOUCnUr18fq1evLrJ9zZo1en0Wq7YcAGjRogXmzZuHnJycAm25ubn4/PPP0aJFizIbk8y5ycqStUYuLi44evRoke1Hjx5VDgGXVZbMMXl5eWH79u1Ftm/fvh2enp4VLkdmlqw9yb2k33qrcW6ystS2RjKzZI6pODxZuhQWLlyIHj16IDIystDPKy9fvlzshlRrDgCEhYUhODgYLi4uxd7criLOTVaWrDWaOHEiRo8ejbi4OHTq1KnAeFauXIkvvvhCr7nJypI5pjlz5mDQoEGIiYkpdL0jIyMRERFR4XJkZsnak9xL+q23GucmK0ttayQzS+aYivXcx5QMTFJSkpg8ebJo3769qF27tqhdu7Zo3769mDJlikhKSqqwOUIIkZ6eLr7++msxdOhQ0blzZ9G5c2cxdOhQsXz5cpGWllah5yYrS9Yabdy4Ufj7+wtjY2Oh0WiERqMRxsbGwt/fv9jzkF5klswxHTx4UPTv3194eHgIU1NTYWpqKjw8PET//v3FoUOHKmyOzCxZe5J7qeLOTVaW2tZIZpbMMRWF3xojKkfZ2dnKVV8dHR1hYmJS7lkyx0Rlh3tJP2qcm9rWSY1ze5FrxELoGeTk5ODs2bPKNQ1cXV1Rr169Uv/BqC0HAFJSUnDkyBGdrJYtW8LFxaVcxiRzbrKyZK1RPrVdLFJmjqwLT6otR1aWzP0NcC+V9ZjUtt5qXCOZWS/swqNSjisZiNzcXPHxxx8LOzs75RBd/sPOzk5MmzZN5ObmVrgcIYS4d++eGDx4sDAyMhLGxsbCyclJODk5CWNjY2FkZCTefPNNcf/+/Qo5N1lZstZICCF2794tunbtKuzs7IRWqxVarVbY2dmJrl27iqioKL0yZGfJHNPKlStFvXr1lByNRiO0Wq2oV6+eWLVqVYXNkZUlc39zL1XcucnKUtsaycySOaaisBAqhUmTJolq1aqJFStWiKSkJPHgwQPx4MEDkZSUJL755hvh5OQkJk+eXOFyhBBi5MiRwsfHR0RGRoqcnBzl9ZycHLFr1y5Ru3ZtMWrUqAo5N1lZstYoPDxcGBsbiwEDBoi1a9eKHTt2iB07doi1a9eKgQMHChMTE7F+/Xq95iYrS+aY5s+fLywtLcWHH34o9u7dKxISEkRCQoLYu3evmDp1qrCyshILFiyocDkys2TtSe4l/dZbjXOTlaW2NZKZJXNMxWEhVArOzs4iMjKyyPbIyEjh5ORU4XKEEMLOzk4cPHiwyPYDBw4IOzu7MhuTzLnJypK1Rmq8WKQaL86pthyZWbL2JPcSL/SqtjWSmSVzTMVhIVQKlpaW4vTp00W2nzp1SlhZWVW4HCGEsLGxEceOHSuy/ejRo8LGxqbMxiRzbrKyZK2RGi8WqcaLc6otR2aWrD3JvcQLvaptjWRmyRxTcXhBxVIIDAzExIkTlTPXn3Tr1i1MmTIFgYGBFS4HAHr06IHRo0fj5MmTBdpOnjyJsWPH4tVXXy2zMcmcm6wsWWukxotFqvHinGrLkZkla09yL/FCr2pbI5lZMsdUHH5rrBSuXr2Kbt26ITExEQ0bNtS5uNOZM2fg6+uLbdu2wd3dvULlAMCdO3cwaNAg7Nq1C1WrVoWTkxMA4MaNG7h79y6Cg4MREREBOzu7Cjc3WVmy1igmJgY9evRAjRo1ir2YXvv27Uucm6wsmWM6ffo0goODkZ2dXeyFJxs0aFChcmRmydqT3Ev6rbca5yYrS21rJDNL5piKw0KolPLy8rBr1y4cPnxY52uKAQEB6Ny5M7Ra/Q6yqS0nX2JiImJjYwtk1a1bV+8MNc5NZpaMNbpy5QqWL19e6HjGjBkDLy+vMs+SOaaMjAx8//33hWYNGjQINjY2FTJHZpasPcm9pN96q3FusrLUtkYys2SOqSgshIiIiMhg8RwhIiIiMlgshIiIiMhgsRAiIiIig8VCiIiIiAyWcXkPwNCp8WaSaqO2G2VSxabGm0kSUfnhESGJzp07hxo1aujVd9WqVfD19YW9vT18fX11/ru4C0i9qJySnDp1CkZGRs+dUx5rJDurKLLW6OrVqxgxYoTe/RMSEvDOO++gadOmcHV1haurK5o2bYp33nkHCQkJZZ5TkkuXLuHll18u05yoqCh069YNVatWhaWlJSwtLVG1alV069YNv/32W6neV2ZWUUrz96Q43Ev6Kc06yZxbWaxTeawRULH2Eo8ISZSVlYW//vqrxH4LFizArFmz8N577yE4OFjnIlG7d+/G+++/jzt37mDixIllkqMvGVdaKOs1kp1VEhlrdPv2baxbtw5r1qwpse/OnTvRq1cvNGvWDD179tSZW1RUFJo1a4b//ve/CA4OLpMcfdy7dw/79u0rs5x169Zh1KhR6Nu3LxYtWlTgz79bt25YvXo1hgwZUqZZxdH370lJuJf0o+86yZxbWa1TWa8RUPH2Eq8jVAqhoaHFtt+8eRMRERHIzc0ttp+npycWLFiAfv36Fdq+adMmTJo0CcnJyWWSAwC9e/cutj0tLQ0xMTElzk1tayQzS9Ya/fLLL8W2X758GR988EGJOQDQuHFj9OzZE3PmzCm0fdasWdiyZQtOnz5dJjkAsHTp0mLb//e//+GLL74ocX6ycmrXro33338f48aNK7T966+/xqJFi3DhwoVic2Rmyfp7wr2k3x6QtU4y5yYrS21rBKhzLxWHhVApGBkZoUmTJkVepfPevXs4ceJEiRvFwsICJ06cQL169QptT0hIQPPmzfHgwYMyyQEAExMTvPLKK0rF/bTbt29j27ZtJc5NbWskM0vWGmm1Wmg0mmKPHmk0Gr3+h2NhYYH4+HjUqVOn0Pbz58+jSZMmePjwYZnkAI/n5+rqClNT00Lbs7KykJKSotc6ycgxNzfHqVOnpMxNVpasvyfcS/rvJRnrJHNusrLUtkaAOvdSsZ77tq0GpHbt2uK7774rsv3kyZNCq9WWmNOuXTsxdOhQkZ2dXaAtJydHDB06VLRv377McoQQomHDhmLVqlVFtus7N7WtkcwsWWvk5uYmtm7d+tw5QghRt25dsXDhwiLbFy5cKOrUqVNmOUII4eXlJTZt2lRku77zk5XTrFkzMWnSpCLbJ0+eLJo1a1ZijswsWX9PuJfKdp1kzk1WltrWSAh17qXi8ByhUmjevDni4uLw5ptvFtpeUjWdLywsDMHBwXBxcSn2JnlllQMAfn5+OHHiBEaOHFlou5mZGTw8PErMUdsaycyStUZ+fn6Ii4tDz549C23Xd40AYM6cORg0aBBiYmIKvSlhZGQkIiIiyiznyfkV9VGkvvOTlbNw4UL06NEDkZGRxd64UR+ysmT9PeFeKtt1kjk3WVlqWyNAnXupOPxorBRSUlKQmZkJT0/P585S280kMzMzkZubC0tLy2eb0P9R4xrJypK1Rr///jvu37+PLl26FNp+//59HD9+HB06dNAr79ChQ1i6dGmhN4J9//33ERAQUKY5CQkJePDgAZo3b15oe3Z2Nq5du1biHpGVA6jvZpKy/p5wL+m3B2Suk6y5ycpS4xoB6ttLxWEhRERERAaL1xGSIDU1Va9vLz3t6ZPOjhw5gv379yM7O7tccmRnPam810hm1otaI5mEEHqd1FhWOTKzZOU86558kVkyxySL2v7cZGfJoMa5qW2NABXP7bnPMjIg6enpYvDgwcLDw0MMHTpUZGZminfeeUdoNBqh1WpF+/btRVpaWok5165dE23atBFGRkaiffv24vbt26J79+5Co9EIjUYjateuLa5du1ZmOTKz1LZGMrNkjmnlypVi6NChYs2aNUIIITZu3Cjq1q0rvL29xYwZM/TKEEKI7Oxs8fHHH4v27dsrPzd//nxhaWkpTE1NlT+DsspR45hk7UmZWTLHxL2kX5aMdVLj3NS2RmqdW3FYCJVCSEiIqFu3rli6dKkIDAwUPXv2FA0aNBAHDhwQ+/btE76+vuKjjz4qMWfIkCGidevW4pdffhH9+/cXrVu3Fu3atRN///23+Ouvv0SbNm3EuHHjyixHZpba1khmlqycRYsWCSsrK9G7d2/h6uoqPv30U+Hg4CA+/fRTMXv2bGFjYyO++eYbveY2bdo04ezsLEJDQ4Wvr68YM2aMcHd3F99//71Yt26deOmll8Tnn39eZjlqHJOsPSkzS1YO95J+WbLWSY1zU9saqXFuJWEhVAru7u5iz549Qggh/ve//wmNRiN+/fVXpX3btm16fZXP1dVVxMbGCiGE+Oeff4RGoxG//fab0h4dHS1q1KhRZjkys9S2RjKzZOXUrVtXbNiwQQghxIkTJ4SxsbHO1/JXrVol/Pz89JpbjRo1lPW9cOGC0Gq1YuPGjUr7pk2bRIMGDcosR41jkrUnZWbJyuFe0i9L1jqpcW5qWyM1zq0kLIRKwczMTCQnJyvPLS0txfnz55XnV65cEZaWliXmmJub6+RYWVmJCxcuKM//+usvYWFhUWY5MrPUtkYys2TlWFhYiL/++kt5bmZmJv744w/l+YULF4SdnV2JOYWNydzcXJw7d055fvnyZVGlSpUyy1HjmGTtSZlZsnK4l/TLkrVOapyb2tZI5phkrndxeLJ0KTg4OODmzZvK8549e8LOzk55fu/ePb3uQu3k5ITr168rz0NCQmBvb688v3PnDqysrMosR2aW2tZIZpasHEtLS9y/f195Xq1aNVhbW+v0ycnJKTEHAGxtbXH37l3lebNmzVClShXleWZmJjQaTZnlqHFMsvakzCxZOdxL+mXJWic1zk1tayRzTDLXuzgshEqhUaNGOHbsmPI8IiICTk5OyvNjx44VeRuHJzVp0gSxsbHK83nz5un8Qj1w4AAaNWpUZjkys9S2RjKzZOXUrVtX5944V69e1bnGR2Jiot7XtfH19cWJEyeU5wcPHsRLL72kPD9z5gx8fHzKLEeNY5K1J2VmycrhXtIvS9Y6qXFualsjmWOSud7F4XWESuH27dvQarU6/3J70s6dO2FhYYHAwMDnep+jR4/C0tISDRo0UEVOabIq2hrJzNI35+DBg7CyskKTJk0Kbf/666+Rl5eHkJCQEt/zzz//hImJCby9vQttj4iIgLGxcZFXnZWdo8YxydyTsrJk5XAv6Zcla53UODe1rZHMMclc7+KwECIiIiKDxY/GnlPDhg1x9erV586xsbHB5cuXVZMjM0ttayQzS1bOO++8g1u3bj13DgB0795d51ym8s6RmSUrR9aelJklK4d7ST+y1kmNc1PbGgHqm9uTWAg9pytXrki5orCsA3MyD/DJylLbGsnMkpXz/fffIz09XUrW/v378fDhQ9XkyMySlSNrT8rMkpXDvaQfWeukxrmpbY0A9c3tSSyEiFSAn1CTLNxL+uE6lcxQ1oiF0HNq164dLCwsnjvnzTffLNXd1F90jswsta2RzCyZY5LF09MTJiYmqsmRmSUrR9aelJklc0yyqO3PTXaWDGqcm9rWCFD33HiyNBERERks4/IeQEXzzz//4PTp02jcuDHs7e1x69YtrF69GpmZmXjjjTf0uvbH33//DXNzczg6OgIAfv/9d6xYsQLJycnw9PTEuHHjEBAQoNd4Hj58iB9++AEHDhzA9evXodVqUaNGDfTq1QudOnUq1dwePnyIuLg42Nvbw9fXV6ft0aNH+PHHHzF06NASc9S2Rvlzk7FOstYIeHwXeyMjI+X5kSNHkJmZiYCAgGf+F8/du3exefNmZZ3eeOMN2Nra6v3zly9fLrBGr7zyyjMd9crLy4NWW/Cgc15eHv7++294eHiUmCGEwJUrV+Du7g5jY2NkZWXh559/RmZmJrp166bsj+JkZmZCq9Uqa3rp0iWsWbNGWaORI0cW+fXcouzZs6fAOr322mulvqbJ33//DTs7uwIXrsvOzkZsbCzat2+vVw73Usl7CZC/Ts+7RoC8dVLrGgHq2kuFeu5rUxuQI0eOCFtbW6HRaETVqlXF8ePHhbe3t/Dx8RE1a9YUFhYWIi4ursScli1bKvdP2bp1q9BqteK1114TU6ZMEa+//rowMTHRue9QUS5cuCA8PT2Fk5OTcHd3FxqNRnTv3l34+/sLIyMj8cYbb4js7Gy95nb+/Hnh6empc/fr//3vf0p7SkqK0Gq1JeaobY2EkLdOstZI5l3sX3/9dbF582YhhBB//PGHcHR0FNWqVRP+/v7C2dlZuLi4iISEhBJz7t27J/r27auMQavVChcXF2FkZCSsra1FWFiYXuMRQoi0tDTxxhtvCHNzc+Hk5CSmT58ucnJylHZ91ykxMVF4enoKrVYratWqJS5fviz8/PyElZWVsLS0FI6OjuLPP/8sMadDhw7KGh04cECYmZmJRo0aif79+4umTZsKS0tLcejQIb3mlpqaKlq2bCm0Wq0wNjYWWq1W+Pn5KWs1adIkvXKuXbsmWrRoIbRarTAyMhJDhgwRGRkZSjv30mOy9pKsdZK1RkLIWye1rZEQ6txLxWEhVApBQUFi1KhRIj09XSxYsEBUr15djBo1SmkfPny46NWrV4k5VlZW4vLly0IIIfz9/cW8efN02r/66ivRtGnTEnO6du0q/vWvf4m8vDwhhBDz5s0TXbt2FUII8eeffwovLy8xc+ZMvebWq1cv0b17d3Hz5k1x4cIF0b17d+Ht7a3ce0bfv0xqWyMh5K2TrDWSdRd7IYSoWrWqcu+drl27ikGDBonMzEwhhBBZWVli5MiRonPnziXmjB49WrRp00acOXNGXLhwQfTt21dMnjxZ3L9/X6xevVpYWloqN2QsyXvvvSdq164tNm/eLFauXCk8PT1F9+7dlXGlpKQIjUZTYk7Pnj3Fa6+9Jk6fPi3Gjx8v6tWrJ3r27CmysrLEo0ePxKuvvirefPPNEnNsbGyUgqlDhw5iwoQJOu3Tpk0Tbdq00Wtu/fv3F7169RJpaWni0aNHIiQkRAwdOlQI8fimuw4ODmLx4sUl5gwdOlT4+/uLY8eOiaioKOHn5yeaN28ubt++LYTQf424l8p2nWStkRDy1kltaySEOvdScVgIlULVqlWVKjYrK0totVpx5MgRpT0uLk689NJLJebY2tqKU6dOCSGEcHJyUv4738WLF/W64aKlpaXOv4gzMzOFiYmJuHXrlhDi8ZEULy+vkif2f+M4ffq08jwvL0+MGTNGeHh4iEuXLun9S15taySEvHWStUay7mIvxOMbJV68eFHJPXHihE77+fPnha2tbYk5jo6O4vjx48rz27dvC3Nzc3H//n0hhBBhYWGiSZMmeo3Jw8ND7N27V3l+8+ZN0bJlS9G5c2fx6NEjvdepWrVq4uTJk0KIx/8y1Gg04vfff1faDx48KDw8PErMsbKyUv6n7OzsLOLj43XaL168KKytrfWY2eOi6skbUd67d0+YmJiItLQ0IYQQ3333nV53jXdzc9P5e5Ff2DVp0kT8888/3Ev/R9ZekrVOstZICHnrpLY1EkKde6k4/NZYKWRlZSnf6jAxMYGlpaXOOQqOjo74559/Sszp0KEDfvjhBwBA06ZNERMTo9O+d+9enfupFMXOzg4ZGRnK8wcPHiAnJwempqYAHt/PSN8LTz18+BDGxv//lDGNRoPly5fj1VdfRYcOHfDnn3/qlaO2NQLkrZOsNbpz544ydnt7e1haWurc06dWrVp6/7k1atQIe/bsAQC4uLjgr7/+0mn/66+/9PomUk5Ojs7n7dbW1sjJyVFuwti5c2ckJibqNaabN2/qzMfR0RG//fYbMjIy0K1bNzx48ECvnHv37in3crOysoKVlRVcXV2Vdnd3d6SmppaY4+/vj19//RUAULNmTZw6dUqnPT4+XueeccUxMzPTucmjVqtFbm6ucjPK1q1b48qVKyXmpKWloWrVqjq5W7ZsgZeXFzp27IgbN27oNR7uJf32kqx1krVGgLx1UtsaAercS8V67lLKgNStW1dER0crz7dt2yYePHigPD98+LCoXr16iTkJCQnCwcFBDB06VHzyySfC2tpavPnmm+Lf//63GDp0qDAzMxNr164tMWfYsGGiQ4cO4ty5c+Ly5cvKOQ/5YmJihLu7u15za9GihVi/fn2hbePGjRN2dnZ6/atCbWskhLx1krVGHh4eOkcDpkyZIv755x/leXx8vHB0dCwxR4jH62tvby/Wrl0r1q5dK7y8vMSqVavEwYMHxZo1a4S7u7te56288sorOoe9FyxYIFxdXZXnJ06c0HtMderUEdu3by/wekZGhggICBCNGzfWa51q1qypcwTo66+/Funp6crzuLg44eLiUmLOoUOHhK2trZg5c6b46quvhKOjo5g2bZrYsGGDmDFjhrCzsxOff/65XnN7/fXXRZ8+fcS9e/dEVlaWGD9+vKhVq5bSfvjwYb3G1LBhQ/HTTz8VeD07O1v06tVLeHh4cC8JeXtJ1jrJWiMh5K2T2tZICHXupeKwECqFWbNmiR9++KHI9o8++kj07t1br6yLFy+KAQMGiCpVqigngpmYmIjWrVuLn3/+Wa+M1NRU0apVK+UkMk9PT51DkJs3bxZLly7VK+uzzz5TzpspzNixY/X6nFltaySEvHWStUavvfZaseeRhIWFiZdffrnEnHw//fSTqF69utBqtco6aTQaYW5uLsaPH69z4mRR4uLihL29vXBxcREeHh7C1NRU588xLCxMORemJO+++67o27dvoW3p6enC399fr/8x/+tf/xIrV64ssn3u3LmiW7dueo3p0KFDyh548vHSSy/pdU5PvkuXLomaNWsKY2NjYWJiIuzs7ERUVJTSvnbtWvHhhx+WmDN58uQiz5HIzs4Wr732ml5rxL2k316SuU4y1kgIeeukxjUSQn17qTi8jpBEDx48gJGREczMzPT+GSEEbty4gby8PDg6Oj7T1xMvXLiAzMxM1K1bV+ejGzUqrzUCKs466XsX+yfl5uYiLi4OSUlJyMvLg6urK/z8/FClShW9M65fv45t27YhMzMTL7/8coHLA+jrzp07uHbtGurXr19oe0ZGBk6cOIEOHTo8U36+pKQkmJub63xcVpKbN2/i8uXLyhp5eXmV+n0fPHiAAwcOICsrC61atdLrK/xPy8nJwYMHD4r8+m9OTg7+97//6Xw0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lpbFXpRQdo4axxQeHi6MjY3FgAEDxNq1a8WOHTvEjh07xNq1a8XAgQOFiYmJWL9+vV5zk5WlxjGVJD4+Xq97KJVVjswsfXN27dolTE1NRf369YWHh4dwcHAQe/bsUdpTUlL0Ho+sLDWOadGiRcLKykr07t1buLq6ik8//VQ4ODiITz/9VMyePVvY2NiIb775psxy1Dimpk2bFvrQaDSiXr16ynN9yMqSOabisBAqhWrVqomTJ08KIYS4e/eu0Gg04vfff1fa4+LihLOzc4XLkZnl5eUlduzYoTw/f/68cHBwENnZ2UIIId577z3xyiuvlFmOGsfk4+MjwsLCimxftmyZqFWrVok5MrPUOKYJEyYU+3jzzTf1+iUoK0eNYwoICBAfffSREEKIvLw88fnnnwtra2vlqtWlKTpkZalxTHXr1hUbNmwQQghx4sQJYWxsLFatWqW0r1q1Svj5+ZVZjhrHZGxsLLp06SJmzZqlPGbOnCm0Wq145513lNf0IStL5piKw0KoFKpUqSIuX74shBAiNzdXGBsbi/j4eKX9woULokqVKhUuR2aWpaWlSEpKUp7n5eUJY2Njce3aNSHE43/pWltbl1mOGsdkZmYmEhMTi2xPTEzU+27osrLUOCatViuaNWsmAgMDC300b95cr1+CsnLUOCYbGxtx8eJFndc2bNggrKysxK+//lqqokNWlhrHZGFhIf766y/luZmZmfjjjz+U5xcuXBB2dnZllqPGMR04cEDUrFlTzJgxQ+dLMsbGxuLs2bMl/vyLyJI5puKwECqFVq1aiWnTpgkhhFizZo1wdnYWH374odI+Z84cvSpvteXIzGrSpIn49ttvlefR0dHC0tJS5OXlCSEe/xLUp6CSlaPGMTVr1kxMmjSpyPbJkyeLZs2alZgjM0uNY6pdu3ax91A6efKkXr8EZeWocUzVqlUr9Ny0H374QVhaWorly5frPTdZWWock4ODg845JdWrV9e5L+CFCxf0+keMrBy1junu3btiwIABwt/fXylAn7XokJUlc0xFYSFUCpGRkcLc3FyYmpoKc3NzsW/fPlG7dm3RsmVL0apVK2FkZKTXTRfVliMza9OmTcLExET069dPDB06VFhbW+sUVCtWrBABAQFllqPGMe3du1dYWVmJhg0bigkTJoh58+aJefPmiQkTJohGjRoJa2trsW/fPr3m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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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+vRBZmYmgoOD8fnnnyvbmpubY/v27Rg7diwCAgJgb2+PYcOGYc6cOco2Xl5e2LFjByZMmIBFixahZs2aWLlyJYKDg5Vt+vfvjxs3bmDmzJlITk5G06ZNER4ebnACdUm1EBERkbaVqhEy5pJDNjY2WLp0KZYuXVrkNh4eHti5c2exOYGBgThx4kSx24SGhiI0NPSJaiEiIiJ1e5rfQOPd54mISslUvhZMRCVjI0REqmbstb1mzZr1lCshooqId58nIiIizWIjRERERJrFj8aIiMqJMecaATzfiOhp4hEhIiIi0iweESIizTDmxGuedE2kLTwiRERERJrFRoiIiIg0i40QERERaRYbISIiItIsNkJERESkWfzWGBGp2qywMCM35Le9iKj0eESIiIiINIuNEBEREWkWGyEiIiLSLJ4jRESaYdT5RjzXiEhTeESIiIiINIuNEBEREWkWGyEiIiLSLDZCREREpFlshIiIiEiz2AgRERGRZrERIiIiIs1iI0RERESaxUaIiIiINIuNEBEREWkWGyEiIiLSLDZCREREpFlshIiIiEiz2AgRERGRZrERIiIiIs1iI0RERESaxUaIiIiINIuNEBEREWkWGyEiIiLSLDZCREREpFlshIiIiEiz2AgRERGRZrERIiIiIs1iI0RERESaxUaIiIiINIuNEBEREWkWGyEiIiLSLDZCREREpFlshIiIiEiz2AgRERGRZrERIiIiIs1iI0RERESaZVHeBRARFUcXZtx24qlWQUQVFRshItIMY5oqNlRE2sKPxoiIiEiz2AgRERGRZrERIiIiIs1iI0RERESaxUaIiIiINIvfGiMiA7Nnzy5xm1mzZpVBJURETx+PCBEREZFmlboR2r9/P1588UXUqFEDOp0O27ZtMxgfPnw4dDqdwaNLly4G29y6dQuDBw+Go6Mj9Ho9RowYgfT0dINtTp06hXbt2sHGxgbu7u6YN29egVq2bNmCBg0awMbGBo0bN8bOnTsNxoUQmDlzJtzc3GBra4ugoCCcP3++tFMmIiKiCqrUjdC9e/fw7LPPYunSpUVu06VLF1y7dk15fPPNNwbjgwcPxpkzZxAREYHt27dj//79GD16tDKelpaGzp07w8PDA7GxsZg/fz7CwsLw5ZdfKtscPHgQAwcOxIgRI3DixAn07NkTPXv2xO+//65sM2/ePCxevBjL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VL5493kiIiLSLDZCREREpFlshIiIiEiz2AgRERGRZrERIiIiIs1iI0RERESaxUaIiIiINIuNEBEREWkWGyEiIiLSLDZCREREpFlshIiIiEiz2AgRERGRZrERIiIiIs1iI0RERESaxUaIiIiINMuivAsgKiu6sJK3EU+9CiIiUhM2QkSPgU0VEVHFwI/GiIiISLPYCBEREZFmsREiIiIizWIjRERERJrFRoiIiIg0i40QERERaRYbISIiItIsNkJERESkWWyEiIiISLPYCBEREZFmsREiIiIizWIjRERERJrFRoiIiIg0i40QERERaRYbISIiItIsNkJERESkWWyEiIiISLMsyrsAqph0YcZtJ55qFURERMXjESEiIiLSLDZCREREpFlshIiIiEiz2AgRERGRZvFkaVI9Y0685knXRET0OHhEiIiIiDSLjRARERFpFhshIiIi0iw2QkRERKRZbISIiIhIs9gIERERkWaxESIiIiLNYiNEREREmsVGiIiIiDSLjRARERFpFhshIiIi0iw2QkRERKRZvOlqBcEbkxIREZUejwgRERGRZrERIiIiIs1iI0RERESaJb0RCgsLg06nM3g0aNBAGX/w4AHGjRuHqlWrwsHBAX369EFKSopBRlJSErp16wY7Ozs4Oztj8uTJyMnJMdgmKioKzZs3h7W1NerWrYu1a9cWqGXp0qXw9PSEjY0N/P39ceTIEdnTJSIiIhP2VI4INWzYENeuXVMeBw4cUMYmTJiAn3/+GVu2bMG+fftw9epV9O7dWxnPzc1Ft27dkJWVhYMHD2LdunVYu3YtZs6cqWyTmJiIbt264fnnn0dcXBzGjx+PkSNHYvfu3co2mzdvxsSJEzFr1iwcP34czz77LIKDg3H9+vWnMWUiIiIyQU/lW2MWFhZwdXUt8HpqaipWrVqFjRs3omPHjgCANWvWwMfHB4cOHcJzzz2HPXv2ID4+Hr/88gtcXFzQtGlTvP/++5g6dSrCwsJgZWWF5cuXw8vLCwsWLAAA+Pj44MCBA1i4cCGCg4MBAJ988glGjRqFV199FQCwfPly7NixA6tXr8a77777NKZdIfDbZ0REpCVP5YjQ+fPnUaNGDdSuXRuDBw9GUlISACA2NhbZ2dkICgpStm3QoAFq1aqFmJgYAEBMTAwaN24MFxcXZZvg4GCkpaXhzJkzyjaPZuRv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nDt3Dr6+vsW+v5WVFXJzc42u18fHB1999RUePHigHBU6dOiQwTbR0dFo3bo13njjDeW1fx/RKex9mzdvjs2bN8PZ2RmOjo5G10RE8vBkaSIqU+PGjcOtW7cwcOBAHD16FBcvXsTu3bvx6quvGjQKSUlJmDhxIs6dO4dvvvkGn332Gd5++20AgLe3N3r06IFRo0bhwIEDOHnyJF555RU888wz6NGjR7Hv7+npiVOnTuHcuXO4efOmwcnVhRk0aBB0Oh1GjRqF+Ph47Ny5Ex9//LHBNt7e3jh27Bh2796NP/74AzNmzMDRo0dLfN/BgwejWrVq6NGjB3777TckJiYiKioKb731Fv7666/SLCsRPSY2QkRUpmrUqIHo6Gjk5uaic+fOaNy4McaPHw+9Xg8zs///V9LQoUNx//59tGrVCuPGjcPbb7+N0aNHK+Nr1qyBn58funfvjoCAAAghsHPnTlhaWhb7/qNGjUL9+vXRokULVK9eHdHR0cVu7+DggJ9//hmnT59Gs2bN8N577xX4WO/1119H79690b9/f/j7++Off/4xODpU1Pva2dlh//79qFWrFnr37g0fHx+MGDECDx484BEiojKiE+KRC3MQEalAYGAgmjZtik8//bS8SyGiCo5HhIiIiEiz2AgRkab973//g4ODQ6GPkJCQ8i6PiJ4yfjRGRJp269Yt3Lp1q9AxW1tbPPPMM2VcERGVJTZCREREpFn8aIyIiIg0i40QERERaRYbISIiItIsNkJERESkWWyEiIiISLPYCBEREZFmsREiIiIizfp/GBo4D8XIvoUAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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ovywEbIws2fPxuTJk/Hkk0/iypUrOHjwIEaPHo3//ve/WLZsGQ4fPozq1asjPDwcN27cAACMHz8ecXFx2LRpE06ePIn58+drH6fNmTMHP//8M3788UecOnUKK1as0BqCR/HXX3+hdevWsLe3x7Zt2xATE4PXX38dWVlZAIDbt2+jf//+2L17N/bt24eAgAB07NgRt2/fNsoZP348unXrhqNHj6JPnz7o2bMnTp48qY2XL18eS5cuRVxcHGbPno2FCxcaXaZhw4YNePHFF9GxY0ccOXIEW7duRdOmTfOtObd5XLJkiba2fn5+CAsL0xrHXEuWLMFrr70GKyvT/gpOmjQJc+fOxd69e3Hp0iV0794dX375JVauXIkNGzZgy5Yt+OqrrwAArVq1wu3bt3HkyBEAwM6dO1GpUiWjW3zs3LkToaGhJr03EVGZ9ri/wmbOHvrr86Z+jVHVo5hmzZolvr6+IiKSmpoqtra2smLFCm08IyNDfHx8ZPr06SIi8vzzz8uAAQPyzXr77bfl2WeflZycnHzHAchPP/0kIsW7E/zYsWPF399fMjIyTJpTdna2lC9fXn755Rej9x4yZIjRds2aNZOhQ4cWmDNjxgwJDg7WnoeEhEifPn0K3P7By0PcP99cq1evFnd3d7l7966IiMTExIjBYJCEhIQi55V7uYpff/1Ve23KlCkCQM6ePau99uabb0p4eLj2vFGjRjJjxgwREenatat89tlnYmdnJ7dv35Y///xTAMgff/xR5Pvz6/NUlmASTHqYo7I8t4dRnK/P8xwhC3f27FlkZmaiRYsW2mu2trZo2rSpduRk6NCh6NatGw4fPox27dqha9eu2vlFr732Gp577jnUrFkT7du3R+fOndGuXbtHris2NhatWrWCra1tvuNJSUkYN24cduzYgatXryI7OxtpaWm4ePGi0XYPXkU8JCTE6Ftrq1evxpw5c3D27FmkpqYiKyvL6KuWsbGxeOONNx5pLl27dsWwYcPw008/oWfPnli6dCmeeeaZYh05q1evnvbfnp6e2kd597924MAB7XmbNm2wY8cOvP/++/jtt98wZcoU/Pjjj9i9ezdu3LgBHx8fBAQEPNK8iCyZKTdw5c1bzQM/GqMidejQARcuXMB7772Hy5cvo23bthg5ciQAoFGjRkhISMAnn3yCf/75B927d8fLL7/8yO/p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i4vD1KlTYW1tnafeHj164P3330ft2rVx5coVXLlyBT169MCgQYMQGRmJK1euaNuuX78eaWlp6NGjR5HrANxb/0qVKuHAgQN4++23MXToULzyyito3rw5Dh8+jHbt2qFv375IS0sDALRp0wY7duwAAIgIfvvtN7i5uWH37t0AgJ07d+KJJ55A9erVTXp/IqKyiB+NWZg7d+5g/vz5WLp0KTp06AAAWLhwIaKiorB48WI0adIEwL1bPzx4jlC9evW085ECAgIwd+5cbN26Fc899xx2796NAwcO4OrVq7C3twcAfP7551i3bh3+85//YPDgwQDufRy2fPlyVK5cuchab9++jdmzZ2Pu3Lno378/AOCpp55Cy5YttW3GjRun/befnx9GjhyJVatWYfTo0drrd+/exfLly/HEE08AAL766it06tQJM2fOhJeXF5599lmj9/3222/h5uaGnTt3onPnzvj1119x4MABnDx5EjVq1AAAVKtWLd+aHR0dUa5cOdjY2MDLy0t7vXnz5qhZsya+//57rbYlS5bglVdeQbly5YpcCwCoX7++Nt/cBrFSpUp44403AAATJkzA/PnzcezYMTz99NMIDQ3Fd999h+zsbPz++++ws7NDjx49sGPHDrRv3x47duxAmzZtTHpvIqKyikeELMzZs2eRmZmJFi1aaK/Z2tqiadOmOHnyZKE/W69ePaPn3t7euHr1KgDg6NGjSE1NRcWKFY3uoJ6QkICzZ89qP+Pr62tSEwQAJ0+eRHp6Otq2bVvgNqtXr0aLFi3g5eWFcuXKYdy4cbh48aLRNlWrVtWaIAAICQlBTk4OTp06BQBISkrCG2+8gYCAALi6usLFxQWpqalaTmxsLJ588kmtCXpYgwYNwpIlS7T33LRpU5670Rfm/vW3trZGxYoVUbduXe213CNluX8mrVq1wu3bt3HkyBHs3LkTbdq0QWhoqHaUaOfOnQgNDX2kORERmTseESKT2draGj03GAzIyckBAKSmpsLb21v7JXu/+48sOTs7m/x+RZ2AHB0djT59+uDjjz9GeHg4XF1dsWrVKsycOdPk9wCA/v374++//8bs2bPh6+sLe3t7hISEICMjw6Q6TNWvXz988MEHiI6Oxt69e+Hv749WrVqZ/PP5rf/9rxn+727YuX8mbm5uqF+/Pnbs2IHo6Gg899xzaN26NXr06IE/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LwwiIiIz9NhuupqZmYnu3btDRDB//vzH9TZKjR07FsnJydrj0qVLpV0SERERPUaP5YhQbhN04cIFbNu2zejzOS8vL+0E41xZWVm4ceOGdjdwLy8vJCUlGW2T+7yobe4fz33N29vbaJsGDRrkW7e9vT3s7e2LO10iIiIyU8qPCOU2QadPn8avv/6KihUrGo2HhITg1q1biImJ0V7btm0bcnJy0KxZM22bXbt2GZ13ExUVhZo1a8Ld3V3bZuvWrUbZUVFRCAkJAQD4+/vDy8vLaJuUlBTs379f24aIiIgsW7EbodTUVMTGxmq3BEhISEBsbCwuXryIzMxMvPzyyzh06BBWrFiB7OxsJCYmIjExERkZGQCAwMBAtG/fHm+88QYOHDiAPXv2ICIiAj179tRuJdC7d2/Y2dlh4MCBOHHiBFavXo3Zs2cbnRz97rvvIjIyEjNnzkR8fDwmTZqEQ4cOISIiAsC9E5mHDx+OTz/9FD///DOOHz+Ofv36wcfHp9BvuREREZHlKPZHY4cOHcIzzzyjPc9tTvr3749Jkybh559/BoA8Hz9t374doaGhAIAVK1YgIiICbdu2hZWVFbp164Y5c+Zo27q6umLLli0YNmwYgoODUalSJUyYMEG7hhAANG/eHCtXrsS4cePw4YcfIiAgAOvWrdOuIQQAo0ePxp07dzB48GDcunULLVu2RGRk5CNfQ4iIiIjKhke6jlBZV5zrEBARkb7xOkK8jlB+eK8xIiIi0phyW4+ydATlsX19noiIiEjv2AgRERGRxeJHY0RE9P+pPK+DyAzwiBARERFZLDZCREREZLHYCBEREZHF4jlCREREpJy5fA2fjRARWQ6eCExklh5nU8VGiIiouNhQmeTjjz8ucpuJEyeWQCVEBWMjREREj8XESZNM2IiNEJUunixNREREFouNEBEREVksNkJERERksXiOEBFRaTHlpGugRE+8NpevPBOpwiNCREREZLHYCBEREZHF4kdjRET0WPBjNjIHbISIyGLwFzMRPYiNEBFRMbGhIio72AgREZGu8VYd9DixESIiIl3jrTroceK3xoiIiMhi8YgQUVnAu6ETET0UNkJERGUBm2Gih8JGiIiolJjy7TOA30Ajepx4jhARERFZLB4RIiJj/IiFiCwIGyEiItI1XsCSHid+NEZEREQWi40QERERWSw2QkRERGSxeI4QURnAcyiIiB4OjwgRERGRxWIjRERERBaLH40REZUB/HiU6OHwiBARERFZLB4RIiIjPLJARJak2EeEdu3aheeffx4+Pj4wGAxYt26d0biIYMKECfD29oajoyPCwsJw+vRpo21u3LiBPn36wMXFBW5ubhg4cCBSU1ONtjl27BhatWoFBwcHVKlSBdOnT89Ty5o1a1CrVi04ODigbt262LhxY7FrISIiIstV7Ebozp07qF+/PubNm5fv+PTp0zFnzhwsWLAA+/fvh7OzM8LDw3H37l1tmz59+uDEiROIiorC+vXrsWvXLgwePFgbT0lJQbt27eDr64uYmBjMmDEDkyZNwrfffqtts3fvXvTq1QsDBw7EkSNH0LVrV3Tt2hW///57sWohIiIiy1Xsj8Y6dOiADh065DsmIvjyyy8xbtw4dOnSBQCwfPlyeHp6Yt26dejZsydOnjyJyMhIHDx4EI0bNwYAfPXVV+jYsSM+//xz+Pj4YMWKFcjIyMDixYthZ2eH2rVrIzY2Fl988YXWMM2ePRvt27fHqFGjAACffPIJoqKiMHfuXCxYsMCkWoiIiMiyKT1ZOiEhAYmJiQgLC9Nec3V1RbNmzRAdHQ0AiI6Ohpubm9YEAUBYWBisrKywf/9+bZvWrVvDzs5O2yY8PBynTp3CzZs3tW3uf5/cbXLfx5RaHpSeno6UlBSjBxEREZVdShuhxMREAICnp6fR656entpYYmIiPDw8jMZtbGxQoUIFo23yy7j/PQra5v7xomp50JQpU+Dq6qo9qlSpYsKsiShfBkPRDyKiUsavz99n7NixSE5O1h6XLl0q7ZKIiIjoMVLaCHl5eQEAkpKSjF5PSkrSxry8vHD16lWj8aysLNy4ccNom/wy7n+Pgra5f7yoWh5kb28PFxcXowcRERGVXUobIX9/f3h5eWHr1q3aaykpKdi/fz9CQkIAACEhIbh16xZiYmK0bbZt24acnBw0a9ZM22bXrl3IzMzUtomKikLNmjXh7u6ubXP/++Ruk/s+ptRCZoIfsRAR0WNS7EYoNTUVsbGxiI2NBXDvpOTY2FhcvHgRBoMBw4cPx6effoqff/4Zx48fR79+/eDj44OuXbsCAAIDA9G+fXu88cYbOHDgAPbs2YOIiAj07NkTPj4+AIDevXvDzs4OAwcOxIkTJ7B69WrMnj0bI0aM0Op49913ERkZiZkzZyI+Ph6TJk3CoUOHEBERAQAm1UJERESWrdhfnz906BCeeeYZ7Xluc9K/f38sXboUo0ePxp07dzB48GDcunULLVu2RGRkJBwcHLSfWbFiBSIiItC2bVtYWVmhW7dumDNnjjbu6uqKLVu2YNiwYQgODkalSpUwYcIEo2sNNW/eHCtXrsS4cePw4YcfIiAgAOvWrUOdOnW0bUyphfSPVzomIqLHpdiNUGhoKEQK/rVjMBgwefJkTJ48ucBtKlSogJUrVxb6PvXq1cNvv/1W6DavvPIKXnnllUeqhYiIiCwX7zVGRPpm6jlghfwDjYioIGyEyHKY8guVv0yJiCwKGyEieix4bhcRmQM2QmQx+IuZiIgexCtLExERkcViI0REREQWix+NET0MnnhNRFQmsBEiegg834iIqGxgI0RUmnhkiYioVLERIipFPLJUNFPWCOA6EdHD4cnSREREZLHYCBEREZHFYiNEREREFouNEBEREVksnixNxvgtJiIisiA8IkREREQWi0eEyAi/zk1ERJaER4SIiIjIYvGIED0WH3/8sUnbTZw48TFXQkREVDA2QvRYTJw0ycQN2QgREVHpYSNEjwVvi0BEROaA5wgRERGRxWIjRERERBaLjRARERFZLDZCREREZLF4snQpMuUr5vx6ORER0ePDRqgUmfQVczZCREREjw0boVLE21kQERGVLp4jRERERBaLR4TKCoOh6G2Ex5eIiIjuxyNCREREZLF4RKiM4PlGRERExccjQkRERGSx2AgRERGRxWIjRERERBaLjRARERFZLDZCREREZLHYCBEREZHFUt4IZWdnY/z48fD394ejoyOeeuopfPLJJ5D7LuYnIpgwYQK8vb3h6OiIsLAwnD592ijnxo0b6NOnD1xcXODm5oaBAwciNTXVaJtjx46hVatWcHBwQJUqVTB9+vQ89axZswa1atWCg4MD6tati40bN6qeMhEREZkp5Y3QtGnTMH/+fMydOxcnT57EtGnTMH36dHz11VfaNtOnT8ecOXOwYMEC7N+/H87OzggPD8fdu3e1bfr06YMTJ04gKioK69evx65duzB48GBtPCUlBe3atYOvry9iYmIwY8YMTJo0Cd9++622zd69e9GrVy8MHDgQR44cQdeuXdG1a1f8/vvvqqdNREREZkj5BRX37t2LLl26oFOnTgAAPz8/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Z8oboXPnzmH+/PkICAjA5s2bMXToULzzzjtYtmwZACAxMREA4OnpafRznp6e2lhiYiI8PDyMxm1sbFChQgWjbfLLuP89Ctomd/xBY8eORXJysva4dOlSsedPRERE5kP5R2M5OTlo3Lgx/vWvfwEAGjZsiN9//x0LFixA//79Vb+dUvb29rC3ty/tMoiIiKiEKD8i5O3tjaCgIKPXAgMDcfHiRQCAl5cXACApKclom6SkJG3My8sLV69eNRrPysrCjRs3jLbJL+P+9yhom9xxIiIismzKG6EWLVrg1KlTRq/98ccf8PX1BXDvxGkvLy9s3bpVG09JScH+/fsREhICAAgJCcGtW7cQExOjbbNt2zbk5OSgWbNm2ja7du1CZmamtk1UVBRq1qypfUMtJCTE6H1yt8l9HyIiIrJsyhuh9957D/v27cO//vUvnDlzBitXrsS3336LYcOGAQAMBgOGDx+OTz/9FD///DOOHz+Ofv36wcfHB127dgVw7whS+/bt8cYbb+DAgQPYs2cPIiIi0LNnT/j4+AAAevfuDTs7OwwcOBAnTpzA6tWrMXv2bIwYMUKr5d1330VkZCRmzpyJ+Ph4TJo0CYcOHUJERITqaRMREZEZUn6OUJMmTfDTTz9h7NixmDx5Mvz9/fHll1+iT58+2jajR4/GnTt3MHjwYNy6dQstW7ZEZGQkHBwctG1WrFiBiIgItG3bFlZWVujWrRvmzJmjjbu6umLLli0YNmwYgoODUalSJUyYMMHoWkPNmzfHypUrMW7cOHz44YcICAjAunXrUKdOHdXTJiIiIjOkvBECgM6dO6Nz584FjhsMBkyePBmTJ08ucJsKFSpg5cqVhb5PvXr18NtvvxW6zSuvvIJXXnml8IKJiIjIIvFeY0RERGSx2AgRERGRxWIjRERERBaLjRARERFZLDZCREREZLHYCBEREZHFYiNEREREFouNEBEREVksNkJERERksdgIERERkcViI0REREQWi40QERERWSw2QkRERGSx2AgRERGRxWIjRERERBaLjRARERFZLDZCREREZLHYCBEREZHFYiNEREREFouNEBEREVksNkJERERksdgIERERkcViI0REREQWi40QERERWSw2QkRERGSx2AgRERGRxWIjRERERBaLjRARERFZLDZCREREZLHYCBEREZHFYiNEREREFouNEBEREVksNkJERERksdgIERERkcViI0REREQWi40QERERWSw2QkRERGSx2AgRERGRxXrsjdDUqVNhMBgwfPhw7bW7d+9i2LBhqFixIsqVK4du3bohKSnJ6OcuXryITp06wcnJCR4eHhg1ahSysrKMttmxYwcaNWoEe3t7VK9eHUuXLs3z/vPmzYOfnx8cHBzQrFkzHDhw4HFMk4iIiMzQY22EDh48iG+++Qb16tUzev29997DL7/8gjVr1mDnzp24fPkyXnrpJW08OzsbnTp1QkZGBvbu3Ytly5Zh6dKlmDBhgrZNQkICOnXqhGeeeQaxsbEYPnw4Bg0ahM2bN2vbrF69GiNGjMDEiRNx+PBh1K9fH+Hh4bh69erjnDYRERGZicfWCKWmpqJPnz5YuHAh3N3dtdeTk5Px3Xff4YsvvsCzzz6L4OBgLFmyBHv37sW+ffsAAFu2bEFcXBz+/e9/o0GDBujQoQM++eQTzJs3DxkZGQCABQsWwN/fHzNnzkRgYCAiIiLw8ssvY9asWdp7ffHFF3jjjTcwYMAABAUFYcGCBXBycsLixYvzrTk9PR0pKSlGDyIiIiq7HlsjNGzYMHTq1AlhYWFGr8fExCAzM9Po9Vq1aqFq1aqIjo4GAERHR6Nu3brw9PTUtgkPD0dKSgpOnDihbfNgdnh4uJaRkZGBmJgYo22srKwQFhambfOgKVOmwNXVVXtUqVLlEVaAiIiI9O6xNEKrVq3C4cOHMWXKlDxjiYmJsLOzg5ubm9Hrnp6eSExM1La5vwnKHc8dK2yblJQU/PPPP7h+/Tqys7Pz3SY340Fjx45FcnKy9rh06ZLpkyYiIiKzY6M68NKlS3j33XcRFRUFBwcH1fGPlb29Pezt7Uu7DCIiIiohyo8IxcTE4OrVq2jUqBFsbGxgY2ODnTt3Ys6cObCxsYGnpycyMjJw69Yto59LSkqCl5cXAMDLyyvPt8hynxe1jYuLCxwdHVGpUiVYW1vnu01uBhEREVk25Y1Q27Ztcfz4ccTGxmqPxo0bo0+fPtp/29raYuvWrdrPnDp1ChcvXkRISAgAICQkBMePHzf6dldUVBRcXFwQFBSkbXN/Ru42uRl2dnYIDg422iYnJwdbt27VtiEiIiLLpvyjsfLly6NOnTpGrzk7O6NixYra6wMHDsSIESNQoUIFuLi44O2330ZISAiefvppAEC7du0QFBSEvn37Yvr06UhMTMS4ceMwbNgw7aOrIUOGYO7cuRg9ejRef/11bNu2DT/++CM2bNigve+IESPQv39/NG7cGE2bNsWXX36JO3fuYMCAAaqnTURERGZIeSNkilmzZsHKygrdunVDeno6wsPD8fXXX2vj1tbWWL9+PYYOHYqQkBA4Ozujf//+mDx5sraNv78/NmzYgPfeew+zZ8/Gk08+iUWLFiE8PFzbpkePHrh27RomTJiAxMRENGjQAJGRkXlOoCYiIiLLVCKN0I4dO4yeOzg4YN68eZg3b16BP+Pr64uNGzcWmhsaGoojR44Uuk1ERAQiIiJMrpWIiIgsB+81RkRERBaLjRARERFZLDZCREREZLHYCBEREZHFYiNEREREFouNEBEREVksNkJERERksdgIERERkcViI0REREQWi40QERERWSw2QkRERGSx2AgRERGRxWIjRERERBaLjRARERFZLDZCREREZLHYCBEREZHFYiNEREREFouNEBEREVksNkJERERksdgIERERkcViI0REREQWi40QERERWSw2QkRERGSx2AgRERGRxWIjRERERBaLjRARERFZLDZCREREZLHYCBEREZHFYiNEREREFouNEBEREVksNkJERERksdgIERERkcViI0REREQWi40QERERWSw2QkRERGSx2AgRERGRxWIjRERERBZLeSM0ZcoUNGnSBOXLl4eHhwe6du2KU6dOGW1z9+5dDBs2DBUrVkS5cuXQrVs3JCUlGW1z8eJFdOrUCU5OTvDw8MCoUaOQlZVltM2OHTvQqFEj2Nvbo3r16li6dGmeeubNmwc/Pz84ODigWbNmOHDggOopExERkZlS3gjt3LkTw4YNw759+xAVFYXMzEy0a9cOd+7c0bZ577338Msvv2DNmjXYuXMnLl++jJdeekkbz87ORqdOnZCRkYG9e/di2bJlWLp0KSZMmKBtk5CQgE6dOuGZZ55BbGwshg8fjkGDBmHz5s3aNqtXr8aIESMwceJEHD58GPXr10d4eDiuXr2qetpERERkhmxUB0ZGRho9X7p0KTw8PBATE4PWrVsjOTkZ3333HVauXIlnn30WALBkyRIEBgZi3759ePrpp7FlyxbExcXh119/haenJxo0aIBPPvkEY8aMwaRJk2BnZ4cFCxbA398fM2fOBAAEBgZi9+7dmDVrFsLD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InL48GGxsbEx+lr+okWLJDg42KS5VatWTVvf06dPi5WVlaxatUobX716tdSpU6fEcvRYk6p9UmWWqhzuS6ZlqVonPc5Nb2ukx7kVhY1QMdjb28vFixe1505OTnLq1Cnt+fnz58XJyanIHAcHB6McZ2dnOX36tPb8woUL4ujoWGI5KrP0tkYqs1TlODo6yoULF7Tn9vb28vvvv2vPT58+LW5ubkXm5FeTg4ODnDx5Unt+7tw5KV++fInl6LEmVfukyixVOdyXTMtStU56nJve1khlTSrXuzA8WboYKlasiGvXrmnPu3TpAjc3N+15amqqSXeh9vDwwJUrV7TnERERqFChgvb85s2bcHZ2LrEclVl6WyOVWapynJyccOfOHe155cqVUa5cOaNtsrKyiswBAFdXV9y6dUt73qhRI5QvX157np6eDoPBUGI5eqxJ1T6pMktVDvcl07JUrZMe56a3NVJZk8r1LgwboWKoV68eDh48qD1fuXIlPDw8tOcHDx4s8DYO92vQoAGio6O151OnTjX6hbp7927Uq1evxHJUZultjVRmqcqpVauW0b1xLl26ZHSNj/j4eJOvaxMUFITDhw9rz/fs2YMnnnhCe378+HEEBASUWI4ea1K1T6rMUpXDfcm0LFXrpMe56W2NVNakcr0Lw+sIFcONGzdgZWVl9C+3+23atAmOjo4IDQ19pPc5cOAAnJycUKdOHV3kFCfL3NZIZZapOXv27IGzszMaNGiQ7/jXX3+NnJwcREREFPmef/zxB2xtbeHv75/v+MqVK2FjY1PgVWdV5+ixJpX7pKosVTncl0zLUrVOepyb3tZIZU0q17swbISIiIjIYvGjsUdUt25dXLp06ZFzXFxccO7cOd3kqMzS2xqpzFKV89Zbb+H69euPnAMAnTp1MjqXqbRzVGapylG1T6rMUpXDfck0qtZJj3PT2xoB+pvb/dgIPaLz588ruaKwqgNzKg/wqcrS2xqpzFKV8+9//xspKSlKsnbt2oV//vlHNzkqs1TlqNonVWapyuG+ZBpV66THueltjQD9ze1+bISIdICfUJMq3JdMw3UqmqWsERuhR9SqVSs4Ojo+cs6rr75arLupP+4clVl6WyOVWSprUsXX1xe2tra6yVGZpSpH1T6pMktlTaro7c9NdZYKepyb3tYI0PfceLI0ERERWSyb0i7A3Pz99984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PGPx8fHSvHlzefnll80uR481cW7mOTc91sS5mefc9FgT52aecysKG6FiKFeunBw+fLjA8UOHDkm5cuXMLkePNXFu5jk3PdbEuZnn3PRYE+dmnnMrCr8+Xwz29vZISUkpcPz27duwt7c3uxw91sS5mefc9FgT52aec9NjTZybec6tSI/cSlmQt956S3x9fWXt2rWSnJysvZ6cnCxr164VPz8/iYiIMLscPdbEuZnn3PRYE+dmnnPTY02cm3nOrShshIrh7t27MmTIELGzsxMrKytxcHAQBwcHsbKyEjs7Oxk6dKjcvXvX7HL0WBPnZp5z02NNnJt5zk2PNXFu5jm3ovA6Qg8hJSUFMTExRl/lCw4OhouLi1nn6LEmzo016S1HjzWV5bnpsSbOzXxryg8bISIiIrJYPFm6mP755x/s3r0bcXFxecbu3r2L5cuXm2WOHmvi3EzDmkouR481leW56bEmzs00eqypQI/84ZoFOXXqlHYhJysrK2ndurX89ddf2nhiYqJJd8LVW44ea+LczHNueqyJczPPuemxJs7NPOdWFB4RKoYxY8agTp06uHr1Kk6dOoXy5cujZcuWuHjxolnn6LEmzo016S1HjzWV5bnpsSbOzXxrKtQjt1IWxMPDQ44dO6Y9z8nJkSFDhkjVqlXl7NmzJnenesvRY02cm3nOTY81cW7mOTc91sS5mefcisJGqBjKly8vcXFxeV4fNmyYPPnkk7Jr1y6T/lD0lqPHmjg385ybHmvi3MxzbnqsiXMzz7kVhY1QMTRp0kSWL1+e79iwYcPEzc3NpD8UveXosSbOzTznpseaODfznJsea+LczHNuRWEjVAz/+te/pEOHDgWODx06VAwGg9nl6LEmzs0856bHmjg385ybHmvi3MxzbkXhdYSIiIjIYvFbY0RERGSx2AgRERGRxWIjRERERBaLjRARERFZLDZCREREZLHYCBERFdP58+dhMBgQGxtb2qUQ0SNiI0REFuW1115D165dLeZ9iahwbISIqERlZGSUyvtmZ2cjJyenVN6biPSLjRARPVahoaGIiIjA8OHDUalSJYSHh+P3339Hhw4dUK5cOXh6eqJv3764fv16np+JiIiAq6srKlWqhPHjx+P+67/evHkT/fr1g7u7O5ycnNChQwecPn1aG1+6dCnc3Nzw888/IygoCPb29nj99dexbNky/O9//4PBYIDBYMCOHTuKnMOBAwfQsGFDODg4oHHjxjhy5IjReHZ2NgYOHAh/f384OjqiZs2amD17tjY+adKkAt/30qVL6N69O9zc3FChQgV06dIF58+ff7jFJqJiYyNERI/dsmXLYGdnhz179mDq1Kl49tln0bBhQxw6dAiRkZFISkpC9+7d8/yMjY0NDhw4gNmzZ+OLL77AokWLtPHXXnsNhw4dws8//4zo6GiICDp27IjMzExtm7S0NEybNg2LFi3CiRMnMGfOHHTv3h3t27fHlStXcOXKFTRv3rzQ2lNTU9G5c2cEBQUhJiYGkyZNwsiRI422ycnJwZNPPok1a9YgLi4OEyZMwIcffogff/wRADBy5Mh83zczMxPh4eEoX748fvvtN+zZswflypVD+/btS+3IGZHFeeSbdBARFaJNmzbSsGFD7fknn3wi7dq1M9rm0qVLAkBOnTql/UxgYKDk5ORo24wZM0YCAwNFROSPP/4QALJnzx5t/Pr16+Lo6Cg//vijiIgsWbJEAEhsbKzRe/Xv31+6dOlicv3ffPONVKxYUf755x/ttfnz5wsAOXLkSIE/N2zYMOnWrVuh7/v9999LzZo1jeaZnp4ujo6OsnnzZpNrJKKHZ1O6bRgRWYLg4GDtv48ePYrt27ejXLlyebY7e/YsatSoAQB4+umnYTAYtLGQkBDMnDkT2dnZOHnyJGxsbNCsWTNtvGLFiqhZsyZOnjypvWZnZ4d69eo9Uu0nT55EvXr14ODgYFTLg+bNm4fFixfj4sWL+Oeff5CRkYEGDRoUmn306FGcOXMG5cuXN3r97t27OHv27CPVTUSmYSNERI+ds7Oz9t+pqal4/vnnMW3atDzbeXt7K31fR0dHo2bqcVm1ahVGjhyJmTNnIiQkBOXLl8eMGTOwf//+Qn8uNTUVwcHBWLFiRZ6xypUrP65yieg+bISIqEQ1atQI//3vf+Hn5wcbm4L/F/RgE7Fv3z4EBATA2toagYGByMrKwv79+7VzfP7++2+cOnUKQUFBhb6/nZ0dsrOzTa43MDAQ33//Pe7evasdFdq3b5/RNnv27EHz5s3x1ltvaa89eEQnv/dt1KgRVq9eDQ8PD7i4uJhcExGpw5OliahEDRs2DDdu3ECvXr1w8OBBnD17Fps3b8aAAQOMGoWLFy9ixIgROHXqFH744Qd89dVXePfddwEAAQEB6NKlC9544w3s3r0bR48exauvvoonnngCXbp0KfT9/fz8cOzYMZw6dQrXr183Ork6P71794bBYMAbb7yBuLg4bNy4EZ9//rnRNgH/r507ZFEljMI4/uyCQZlg0KJgW8QgKIpiMwmCIEwxCBZRg6B2sZr9Bn4IQbCJMkmbzWKxOlWLzLbdvVx3l3th3WXf/w8mvQPnMOHl4RyYpydtt1stFgvt93uNRiNtNptP69brdYVCIVWrVa3Xax0OBy2XS/V6PR2Px3/5rAD+E0EIwF1FIhE5jqPr9apSqaRkMqnBYKBgMKjHx9crqdFo6Hw+K5fLqdvtqt/vq91uv5xPp1NlMhlVKhUVCgV5nqf5fC6fz/dh/VarpXg8rmw2q3A4LMdxPnzfsizNZjPtdjul02kNh8O/1nqdTke2batWqymfz+t0Ov0xHXqvbiAQ0Gq1UiwWk23bSiQSajabulwuTIiAO3nwvDc/5gCAH6BYLCqVSmkymXx3KwB+OSZCAADAWAQhAEYbj8eyLOvmUy6Xv7s9AF+M1RgAo7muK9d1b575/X5Fo9E7dwTgnghCAADAWKzGAACAsQhCAADAWAQhAABgLIIQAAAwFkEIAAAYiyAEAACMRRACAADGegZKwMq9sOer3wAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "chnglog = iso_regions_active_projects_capacity_mw_change_log.groupby([\"iso_region\", \"report_date\"]).sum().reset_index()\n", + "\n", + "for iso_region in chnglog.iso_region.unique():\n", + " iso_df = chnglog.query(\"iso_region == @iso_region\")\n", + " iso_df = iso_df[iso_df.report_date.dt.year.gt(2017) & (iso_df.report_date < \"2024-10-01\")]\n", + " iso_df = iso_df.set_index(\"report_date\")\n", + " iso_df.plot.bar(color=[\"green\", \"red\", \"grey\"], title=iso_region, stacked=True)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.15" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/notebooks/data_updates/outputs/.gitignore b/notebooks/data_updates/outputs/.gitignore new file mode 100644 index 00000000..5e7d2734 --- /dev/null +++ b/notebooks/data_updates/outputs/.gitignore @@ -0,0 +1,4 @@ +# Ignore everything in this directory +* +# Except this file +!.gitignore diff --git a/src/dbcp/data_mart/projects.py b/src/dbcp/data_mart/projects.py index 19a14a51..6edafc96 100644 --- a/src/dbcp/data_mart/projects.py +++ b/src/dbcp/data_mart/projects.py @@ -595,8 +595,8 @@ def create_total_active_project_change_logs( ).all(), "Found rows with unexpected queue status." chng_log = active_iso_projects_change_log.copy() - min_date = chng_log.effective_date.min() - max_date = chng_log.effective_date.max() + min_date = chng_log.effective_date.min() - pd.offsets.QuarterBegin(startingMonth=1) + max_date = chng_log.effective_date.max() + pd.offsets.QuarterEnd(0) def generate_frequencies(start, end, min_date, max_date, freq="Q"): """ @@ -747,6 +747,7 @@ def create_project_change_log(long_format: pd.DataFrame) -> pd.DataFrame: long_format.resource_clean.eq("Unknown"), "other" ) + # Not all ISO regions have operational and withdrawn dates which are required to make a full change log. long_format = long_format[long_format["iso_region"].isin(CHANGE_LOG_REGIONS)] # make sure we are missing less than 10% of withdrawn_date From e4677a99c0cf2080d5a7c9e4fe9913984fa4b0b9 Mon Sep 17 00:00:00 2001 From: bendnorman Date: Wed, 13 Nov 2024 18:43:59 -0900 Subject: [PATCH 14/25] Fix small geocoding issue --- src/dbcp/transform/local_opposition.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/dbcp/transform/local_opposition.py b/src/dbcp/transform/local_opposition.py index a8f982f6..30d63b23 100644 --- a/src/dbcp/transform/local_opposition.py +++ b/src/dbcp/transform/local_opposition.py @@ -1,4 +1,5 @@ """Transform functions for local opposition data.""" + from typing import Dict import pandas as pd @@ -101,6 +102,7 @@ def _transform_local_ordinances(local_ord_df: pd.DataFrame) -> pd.DataFrame: "Town of Charlton (Worcester County)": "Charlton (Worcester County)", "City of Owasso (Rogers and Tulsa Counties)": "Owasso (Rogers and Tulsa Counties)", "City of Burleson (Tarrant and Johnson Counties)": "Burleson (Tarrant and Johnson Counties)", + "Montrose City (Genesee County)": "Montrose (Genesee County)", } local.loc[:, "locality"].replace(location_corrections, inplace=True) From 22434754a521d0a0692228a7e5250791363fef73 Mon Sep 17 00:00:00 2001 From: bendnorman Date: Wed, 13 Nov 2024 23:01:15 -0900 Subject: [PATCH 15/25] Use nyiso archive that has cluster projects --- src/dbcp/extract/gridstatus_isoqueues.py | 2 +- src/dbcp/transform/gridstatus.py | 29 ++++++++++++++++++++---- src/dbcp/validation/tests.py | 2 +- 3 files changed, 26 insertions(+), 7 deletions(-) diff --git a/src/dbcp/extract/gridstatus_isoqueues.py b/src/dbcp/extract/gridstatus_isoqueues.py index 655b917f..0f4bbacf 100644 --- a/src/dbcp/extract/gridstatus_isoqueues.py +++ b/src/dbcp/extract/gridstatus_isoqueues.py @@ -24,7 +24,7 @@ "pjm": "1728242351606642", "ercot": "1728242351929200", "spp": "1728242352244156", - "nyiso": "1728242352584485", + "nyiso": "1731568799445816", "isone": "1728242352913470", } diff --git a/src/dbcp/transform/gridstatus.py b/src/dbcp/transform/gridstatus.py index 5d2c1c95..7f62924e 100644 --- a/src/dbcp/transform/gridstatus.py +++ b/src/dbcp/transform/gridstatus.py @@ -478,7 +478,7 @@ def _clean_resource_type( resource_locations["county_id_fips"].isin(coastal_county_id_fips.keys()) & resource_locations.resource_clean.eq("Onshore Wind") ].project_id - expected_n_coastal_wind_projects = 85 + expected_n_coastal_wind_projects = 88 assert ( len(nyiso_coastal_wind_project_project_ids) == expected_n_coastal_wind_projects ), f"Expected {expected_n_coastal_wind_projects} NYISO coastal wind projects but found {len(nyiso_coastal_wind_project_project_ids)}" @@ -850,12 +850,31 @@ def _transform_nyiso(iso_df: pd.DataFrame) -> pd.DataFrame: "0": "Withdrawn", "15": "Partial In-Service", "P": "Pending Adoption of IP Compliance with Order 2023", # Vast majority of projects with status 'P' don't have any studies posted yet + "1C": "IR Validated/ Scoping Meeting Pending", + "2C": "Customer Engagement Window", + "3C": "Phase 1 Entry Decision Period", + "4C": "Phase 1 Study", + "5C": "Phase 2 Entry Decision Period", + "6C": "Phase 2 Study", + "7C": "Final Decision Period", + "10C": "Accepted Cost Allocation/ IA in Progress", + "11C": "IA Completed", + "12C": "Under Construction", + "13C": "In Service for Test", + "14C": "In Service Commercial", + "15C": "Partially In-Service/ Partially under construction", } # Categorize project status - iso_df["S"] = pd.to_numeric(iso_df["S"]).astype("Int64").astype("string") - actionable_vals = ("6", "7", "8", "9", "10") - nearly_certain_vals = ("11", "12", "13", "15") + iso_df["S"] = iso_df["S"].str.replace(r"\.0$", "", regex=True) + actionable_vals = ( + "6", + "7", + "8", + "9", + "10", + ) # TODO: What are actionable values for cluster studies? + nearly_certain_vals = ("11", "12", "13", "15", "11C", "12C", "13C", "15C") iso_df = _create_project_status_classification_from_single_column( iso_df, "S", @@ -932,7 +951,7 @@ def _normalize_project_locations(iso_df: pd.DataFrame) -> pd.DataFrame: geocoded_locations[["county_id_fips", "project_id"]].duplicated(keep=False) ] assert ( - len(duplicate_locations) <= 114 + len(duplicate_locations) <= 116 ), f"Found more duplicate locations in Grid Status location table than expected:\n {duplicate_locations}" return geocoded_locations diff --git a/src/dbcp/validation/tests.py b/src/dbcp/validation/tests.py index 7b97838a..20cb81df 100644 --- a/src/dbcp/validation/tests.py +++ b/src/dbcp/validation/tests.py @@ -243,7 +243,7 @@ def test_county_wide_coverage(engine: Engine): df.shape[0] == n_counties ), "counties_wide_format does not contain all counties" notnull = df.notnull() - n_expected_counties = 2458 + n_expected_counties = 2459 assert notnull.any(axis=1).sum() == n_expected_counties, ( "counties_wide_format has unexpected county coverage." f" Expected {n_expected_counties}, found {notnull.any(axis=1).sum()}" From a629cdf879ecc62261696eac4e690a4a4c95eb2e Mon Sep 17 00:00:00 2001 From: bendnorman Date: Thu, 14 Nov 2024 17:28:21 -0900 Subject: [PATCH 16/25] Update gs update notebook with new nyiso data --- .../gridstatus/quarterly_update.ipynb | 135 ++++++++++-------- 1 file changed, 72 insertions(+), 63 deletions(-) diff --git a/notebooks/data_updates/gridstatus/quarterly_update.ipynb b/notebooks/data_updates/gridstatus/quarterly_update.ipynb index ef66429a..b970e934 100644 --- a/notebooks/data_updates/gridstatus/quarterly_update.ipynb +++ b/notebooks/data_updates/gridstatus/quarterly_update.ipynb @@ -116,30 +116,19 @@ }, { "cell_type": "code", - "execution_count": 160, + "execution_count": 190, "id": "0a1a398a-c8c2-4b97-924b-71067067cc5d", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'miso': '1728242350923420',\n", - " 'miso-pre-2017': '1709776311574737',\n", - " 'caiso': '1728242351254356',\n", - " 'pjm': '1728242351606642',\n", - " 'ercot': '1728242351929200',\n", - " 'spp': '1728242352244156',\n", - " 'nyiso': '1728242352584485',\n", - " 'isone': '1728242352913470'}" - ] - }, - "execution_count": 160, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "updated_iso_queue_version" + "updated_iso_queue_version = {'miso': '1728242350923420',\n", + " 'miso-pre-2017': '1709776311574737',\n", + " 'caiso': '1728242351254356',\n", + " 'pjm': '1728242351606642',\n", + " 'ercot': '1728242351929200',\n", + " 'spp': '1728242352244156',\n", + " 'nyiso': '1731568799445816',\n", + " 'isone': '1728242352913470'}\n" ] }, { @@ -152,7 +141,7 @@ }, { "cell_type": "code", - "execution_count": 162, + "execution_count": 191, "id": "4e9d8f51-ba23-4a1f-8ac7-bd25f5cdd276", "metadata": {}, "outputs": [], @@ -169,7 +158,7 @@ }, { "cell_type": "code", - "execution_count": 163, + "execution_count": 192, "id": "24d9143e-ee81-47e9-999a-a6c87b26e080", "metadata": {}, "outputs": [], @@ -192,7 +181,7 @@ }, { "cell_type": "code", - "execution_count": 166, + "execution_count": 193, "id": "24357798-b604-4717-8179-9af8eec8a495", "metadata": { "tags": [] @@ -224,7 +213,7 @@ "\n", "nyiso\n", " - Old max date 2024-05-23 00:00:00\n", - " - New max date 2024-08-05 00:00:00\n", + " - New max date 2024-10-29 00:00:00\n", "\n", "isone\n", " - Old max date 2024-06-26 00:00:00\n", @@ -281,7 +270,7 @@ }, { "cell_type": "code", - "execution_count": 175, + "execution_count": 194, "id": "2824fdcf-4ffb-477b-80cf-bbc91255cfc8", "metadata": {}, "outputs": [], @@ -310,7 +299,7 @@ }, { "cell_type": "code", - "execution_count": 177, + "execution_count": 195, "id": "589264d6-4ba4-443c-ae97-88f2a8440d4a", "metadata": {}, "outputs": [], @@ -321,7 +310,7 @@ }, { "cell_type": "code", - "execution_count": 178, + "execution_count": 196, "id": "1e4ad65c-55cc-4200-bd99-80bed7d36295", "metadata": {}, "outputs": [], @@ -338,7 +327,7 @@ }, { "cell_type": "code", - "execution_count": 179, + "execution_count": 197, "id": "b795b90f-a4c4-44ba-9465-e557b623e437", "metadata": {}, "outputs": [ @@ -350,7 +339,7 @@ "ERCOT 2024-09-10 00:00:00\n", "ISONE 2024-08-21 00:00:00\n", "MISO 2024-09-27 04:00:00\n", - "NYISO 2024-08-05 00:00:00\n", + "NYISO 2024-10-15 00:00:00\n", "PJM 2023-07-08 00:00:00\n", "SPP 2024-08-02 00:00:00\n", "Southeast (non-ISO) 2023-12-15 00:00:00\n", @@ -358,7 +347,7 @@ "Name: max_date_entered_queue, dtype: datetime64[ns]" ] }, - "execution_count": 179, + "execution_count": 197, "metadata": {}, "output_type": "execute_result" } @@ -369,7 +358,7 @@ }, { "cell_type": "code", - "execution_count": 180, + "execution_count": 198, "id": "0ec5e6f2-2aba-4d8c-8176-d3a6f818e364", "metadata": {}, "outputs": [ @@ -453,9 +442,9 @@ " 237\n", " 27591.4800\n", " 2024-05-21 00:00:00\n", - " 198\n", - " 24891.9000\n", - " 2024-08-05 00:00:00\n", + " 450\n", + " 75817.1100\n", + " 2024-10-15 00:00:00\n", " \n", " \n", " PJM\n", @@ -504,14 +493,14 @@ "ERCOT 1524 303194.4700 2024-05-20 00:00:00 1605 322303.2000 2024-09-10 00:00:00\n", "ISONE 529 71354.4190 2024-06-26 00:00:00 503 60720.3512 2024-08-21 00:00:00\n", "MISO 2226 382090.3300 2024-06-07 04:00:00 2186 378040.1000 2024-09-27 04:00:00\n", - "NYISO 237 27591.4800 2024-05-21 00:00:00 198 24891.9000 2024-08-05 00:00:00\n", + "NYISO 237 27591.4800 2024-05-21 00:00:00 450 75817.1100 2024-10-15 00:00:00\n", "PJM 2664 203395.8968 2023-07-08 00:00:00 2569 203615.4318 2023-07-08 00:00:00\n", "SPP 624 123440.9620 2024-05-07 00:00:00 610 121268.0020 2024-08-02 00:00:00\n", "Southeast (non-ISO) 1072 136024.0300 2023-12-15 00:00:00 1072 136024.0300 2023-12-15 00:00:00\n", "West (non-ISO) 2542 488401.0500 2023-12-30 00:00:00 2542 488401.0500 2023-12-30 00:00:00" ] }, - "execution_count": 180, + "execution_count": 198, "metadata": {}, "output_type": "execute_result" } @@ -523,7 +512,7 @@ }, { "cell_type": "code", - "execution_count": 181, + "execution_count": 199, "id": "dd0a7b2f-81f2-4818-88a9-edbf10d77c55", "metadata": {}, "outputs": [], @@ -538,7 +527,7 @@ }, { "cell_type": "code", - "execution_count": 182, + "execution_count": 200, "id": "58310980-9365-4e71-a989-55d1b4625367", "metadata": {}, "outputs": [ @@ -615,8 +604,8 @@ " \n", " \n", " NYISO\n", - " -16.455696\n", - " -9.784107\n", + " 89.873418\n", + " 174.784499\n", " \n", " \n", "\n", @@ -633,10 +622,10 @@ "Southeast (non-ISO) 0.000000 0.000000\n", "SPP -2.243590 -1.760323\n", "ISONE -4.914934 -14.903166\n", - "NYISO -16.455696 -9.784107" + "NYISO 89.873418 174.784499" ] }, - "execution_count": 182, + "execution_count": 200, "metadata": {}, "output_type": "execute_result" } @@ -657,7 +646,7 @@ }, { "cell_type": "code", - "execution_count": 183, + "execution_count": 201, "id": "ce15a3de-05ca-44f6-bc80-478cef9af017", "metadata": {}, "outputs": [ @@ -742,11 +731,11 @@ " 237\n", " 27591.4800\n", " 2024-05-21 00:00:00\n", - " 198\n", - " 24891.9000\n", - " 2024-08-05 00:00:00\n", - " -0.164557\n", - " -0.097841\n", + " 450\n", + " 75817.1100\n", + " 2024-10-15 00:00:00\n", + " 0.898734\n", + " 1.747845\n", " \n", " \n", " PJM\n", @@ -780,12 +769,12 @@ "ERCOT 1524 303194.4700 2024-05-20 00:00:00 1605 322303.2000 2024-09-10 00:00:00 0.053150 0.063025\n", "ISONE 529 71354.4190 2024-06-26 00:00:00 503 60720.3512 2024-08-21 00:00:00 -0.049149 -0.149032\n", "MISO 2226 382090.3300 2024-06-07 04:00:00 2186 378040.1000 2024-09-27 04:00:00 -0.017969 -0.010600\n", - "NYISO 237 27591.4800 2024-05-21 00:00:00 198 24891.9000 2024-08-05 00:00:00 -0.164557 -0.097841\n", + "NYISO 237 27591.4800 2024-05-21 00:00:00 450 75817.1100 2024-10-15 00:00:00 0.898734 1.747845\n", "PJM 2664 203395.8968 2023-07-08 00:00:00 2569 203615.4318 2023-07-08 00:00:00 -0.035661 0.001079\n", "SPP 624 123440.9620 2024-05-07 00:00:00 610 121268.0020 2024-08-02 00:00:00 -0.022436 -0.017603" ] }, - "execution_count": 183, + "execution_count": 201, "metadata": {}, "output_type": "execute_result" } @@ -810,10 +799,22 @@ }, { "cell_type": "code", - "execution_count": 186, + "execution_count": 202, "id": "9e058ac1-ba06-445f-b7a5-2f47b9e7f738", "metadata": {}, - "outputs": [], + "outputs": [ + { + "ename": "AssertionError", + "evalue": "iso_region\nERCOT 0.063025\nISONE 0.149032\nMISO 0.010600\nNYISO 1.747845\nPJM 0.001079\nSPP 0.017603\nName: total_capacity_mw_pct_diff, dtype: float64 substantial change in an ISO's interconneciton queue active capacity.", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mAssertionError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[202], line 3\u001b[0m\n\u001b[1;32m 1\u001b[0m mw_pct_diff \u001b[38;5;241m=\u001b[39m changed_project_aggs[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mtotal_capacity_mw_pct_diff\u001b[39m\u001b[38;5;124m\"\u001b[39m]\u001b[38;5;241m.\u001b[39mabs()\n\u001b[1;32m 2\u001b[0m max_change \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m0.2\u001b[39m\n\u001b[0;32m----> 3\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m mw_pct_diff\u001b[38;5;241m.\u001b[39mlt(max_change)\u001b[38;5;241m.\u001b[39mall(), \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mmw_pct_diff\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m substantial change in an ISO\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124ms interconneciton queue active capacity.\u001b[39m\u001b[38;5;124m\"\u001b[39m\n", + "\u001b[0;31mAssertionError\u001b[0m: iso_region\nERCOT 0.063025\nISONE 0.149032\nMISO 0.010600\nNYISO 1.747845\nPJM 0.001079\nSPP 0.017603\nName: total_capacity_mw_pct_diff, dtype: float64 substantial change in an ISO's interconneciton queue active capacity." + ] + } + ], "source": [ "mw_pct_diff = changed_project_aggs[\"total_capacity_mw_pct_diff\"].abs()\n", "max_change = 0.2\n", @@ -831,7 +832,7 @@ }, { "cell_type": "code", - "execution_count": 187, + "execution_count": 203, "id": "0e0a0cbb-805d-4e8e-a6b2-94b0db2695a3", "metadata": {}, "outputs": [], @@ -842,7 +843,7 @@ }, { "cell_type": "code", - "execution_count": 188, + "execution_count": 204, "id": "1416a051-132f-43e5-8a1f-e0fed1e551bc", "metadata": {}, "outputs": [ @@ -850,16 +851,16 @@ "data": { "text/plain": [ "iso_region\n", - "CAISO 2024-09-30\n", - "ISONE 2024-09-30\n", - "MISO 2024-09-30\n", - "NYISO 2024-09-30\n", + "CAISO 2024-12-31\n", + "ISONE 2024-12-31\n", + "MISO 2024-12-31\n", + "NYISO 2024-12-31\n", "PJM 2027-09-30\n", - "SPP 2024-09-30\n", + "SPP 2024-12-31\n", "Name: report_date, dtype: datetime64[ns]" ] }, - "execution_count": 188, + "execution_count": 204, "metadata": {}, "output_type": "execute_result" } @@ -870,7 +871,7 @@ }, { "cell_type": "code", - "execution_count": 189, + "execution_count": 205, "id": "61987565-1958-4ec0-8717-1a08cbd6e7f2", "metadata": {}, "outputs": [ @@ -906,7 +907,7 @@ }, { "data": { - "image/png": "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", + "image/png": "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HfVffn5+OHHiRLF9QkJCeHqKiIiICsUbdBIREZEqscghIiIiVWKRQ0RERKrEIoeIiIhUiUUOERERqRKLHCIiIlIlFjlERESkSixyiIiISJVY5BAREZEqscghIiIiVWKRQ0RERKrEIoeIiIhUiUUOERERqRKLHCIiIlIlFjlERESkSixyiIiISJVY5BAREZEqscghIiIiVWKRQ0RERKrEIoeIiIhUiUUOERERqRKLHCIiIlIlFjlERESkSixyiIiISJVY5BAREZEqscghIiIiVWKRQ0RERKrEIoeIiIhUyaC8E6CKSTO15D7ihWdBRERUNB7JISIiIlXikZwKQK6jJjz6QkRELxMeySEiIiJV4pGcF4hHToiIiMoPj+QQERGRKrHIISIiIlUqdZGzb98+vP7663BycoJGo8GWLVu02oUQmDx5MhwdHWFqagp/f39cuHBBq8+dO3fQv39/WFpawtraGsHBwcjIyNDqc+rUKbRp0wYmJiZwdnbGnDlzCuSyadMmeHh4wMTEBPXr18f27dtLuzlERESkUqUuch48eICGDRsiLCys0PY5c+Zg8eLFWL58OQ4fPgxzc3MEBATg0aNHUp/+/fvjzJkziIqKwtatW7Fv3z4MGTJEak9PT0fHjh3h4uKCuLg4zJ07F1OnTsWKFSukPgcPHkTfvn0RHByMEydOoHv37ujevTv+/PPP0m4SERERqVCpLzwODAxEYGBgoW1CCCxcuBATJ05Et27dAADffvst7O3tsWXLFvTp0wdnz55FZGQkjh49iqZNmwIAvv76a3Tu3BlfffUVnJycsG7dOmRlZWHNmjUwMjJC3bp1ER8fj/nz50vF0KJFi9CpUyeMHj0aADBjxgxERUVhyZIlWL58+TMNBhEREamHrNfkJCUlISUlBf7+/tJrVlZW8PHxQWxsLAAgNjYW1tbWUoEDAP7+/tDT08Phw4elPm3btoWRkZHUJyAgAOfOncPdu3elPk9/Tn6f/M8pTGZmJtLT07UeREREpE6y/oQ8JSUFAGBvb6/1ur29vdSWkpICOzs77SQMDGBra6vVx83NrUCM/DYbGxukpKQU+zmFmTlzJqZNm1bsNvBn30REROrwUv26avz48UhLS5Me165dK++UiIiI6AWRtchxcHAAAKSmpmq9npqaKrU5ODjg5s2bWu05OTm4c+eOVp/CYjz9GUX1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HUtpYyTE4xuFOjo6SoeT8w8tOzo66rT6rlLjbN68WXz33XdFtt+5c0dEREToFGvDhg3Cx8dHGBgYSIfgDQwMhI+Pj9i4caPOOckZS444+/btEzt27CiyPSMjQ8TExOick9LmgBLnklw5yRlLjjhyjpFcOSkxTnF44THRC5SUlKT100g3NzdVxJFTdnY2bt++DQDPtWimnLHkzEkuSpsDSpxLcubEcap4cQrDa3KKMWvWLNy7d08xceSMpbQ4csZSUhw3Nzf4+voiLy8PTk5OqonztAMHDiAzM/OZ329oaAhHR0fExMQgKyvruXKRK5acOQHADz/8IN148FkpbQ4ocS7JmZNSx+l5x0jOnJQWp1CyHA9SqUqVKolLly4pJo6csZQWR85YSosjZyylxZEzlppz4raVbSw158RtKx0eySmGkOlMnlxx5IyltDhyxlJaHDljKS2OnLHUnBO3rWxjqTknblvpsMghIiIidZL1uJDKJCcni9zcXMXEkTOWnHFycnKeO46csZQWRwgh1q1bJzIyMlQXR85Yf/zxh3j06JEMGckXS2lxhFDeHFDiXFJzTty20uGvq/4jNzcX+vr60vMjR44gLy8PjRs3hrGxcZnHUWpOycnJuHHjBvT09FCjRg1Urly5VO9/EbGUFidf/kWCpR1jpceROxYRlb2YmBj4+PjA1NRUVXEkspZMFdiVK1eEt7e30NfXF506dRJpaWnC399fWiujRo0a4ty5c2UWR6k5hYWFierVq0trGuQ/WrVqJY4dO6ZTDLljKS2OEELs2rVLBAYGCmtraymOtbW1CAwMFFFRURU2jtyxipKQkCDc3NwUFau84sTHx4sZM2aIsLAwcevWLa22tLQ0MWjQoAoZR85YK1euFAMHDhRr1qwRQjxe78jDw0O4ubmJyZMn65yPnLGUFqcohoaGIiEhQXVx8rHIeaJHjx6iXbt24rfffhNvv/22aNWqlfDz8xN//fWXuH79uggICBDdu3cvszhKzGnu3LnCyclJfP3112LlypXC09NTTJ8+XezYsUMMGDBAmJmZFbug3ouIpbQ4QggREREhDAwMRJ8+fUR4eLjYvn272L59uwgPDxd9+/YVhoaG4ttvv61wceSOVZz4+Hid78lTVrHKI87OnTuFkZGRqFu3rqhevbqoXLmy2L17t9SekpKiUyylxZEz1oIFC4S5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", "text/plain": [ "
" ] @@ -944,6 +945,14 @@ " iso_df = iso_df.set_index(\"report_date\")\n", " iso_df.plot.bar(color=[\"green\", \"red\", \"grey\"], title=iso_region, stacked=True)" ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "08eb0375-d727-4a76-9803-f8157b199279", + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { From c6e681deb1b23bae954eefa689610f71e019964e Mon Sep 17 00:00:00 2001 From: bendnorman Date: Thu, 14 Nov 2024 17:49:29 -0900 Subject: [PATCH 17/25] Add healthcheck to prevent app service from starting before postgres db is ready --- docker-compose.yaml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/docker-compose.yaml b/docker-compose.yaml index 3dbe0165..8110fced 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -1,4 +1,3 @@ -version: '3.9' services: app: build: . @@ -7,7 +6,8 @@ services: environment: - API_KEY_GOOGLE_MAPS=${API_KEY_GOOGLE_MAPS} # get this value from our google account: https://console.cloud.google.com/google/maps-apis/credentials?project=dbcp-dev&supportedpurview=project depends_on: - - postgres + postgres: + condition: service_healthy volumes: - ./src/dbcp:/app/dbcp:rw - ./notebooks:/app/notebooks:rw @@ -24,3 +24,8 @@ services: - .env ports: - ${POSTGRES_PORT}:5432 + healthcheck: + test: ["CMD-SHELL", "pg_isready -U youruser"] + interval: 5s + timeout: 5s + retries: 5 From d21e5808b8cedd2c222afdecddf0d3605404c3c5 Mon Sep 17 00:00:00 2001 From: bendnorman Date: Thu, 14 Nov 2024 17:53:52 -0900 Subject: [PATCH 18/25] Add local opposition geocoding error --- src/dbcp/transform/local_opposition.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/dbcp/transform/local_opposition.py b/src/dbcp/transform/local_opposition.py index a8f982f6..30d63b23 100644 --- a/src/dbcp/transform/local_opposition.py +++ b/src/dbcp/transform/local_opposition.py @@ -1,4 +1,5 @@ """Transform functions for local opposition data.""" + from typing import Dict import pandas as pd @@ -101,6 +102,7 @@ def _transform_local_ordinances(local_ord_df: pd.DataFrame) -> pd.DataFrame: "Town of Charlton (Worcester County)": "Charlton (Worcester County)", "City of Owasso (Rogers and Tulsa Counties)": "Owasso (Rogers and Tulsa Counties)", "City of Burleson (Tarrant and Johnson Counties)": "Burleson (Tarrant and Johnson Counties)", + "Montrose City (Genesee County)": "Montrose (Genesee County)", } local.loc[:, "locality"].replace(location_corrections, inplace=True) From a5aafb4139abc07ee63cfcca934c67e9c8292828 Mon Sep 17 00:00:00 2001 From: bendnorman Date: Thu, 14 Nov 2024 18:21:59 -0900 Subject: [PATCH 19/25] Fix geocoding issue and update packages with security issues --- requirements.txt | 5 +++-- src/dbcp/transform/local_opposition.py | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/requirements.txt b/requirements.txt index 2072b9a9..5666d6cc 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ addfips>=0.4 -fiona~=1.9.4 +fiona~=1.10.1 psycopg2~=2.9.3 pytest~=6.2.5 tqdm>=4.64.1,<5.0.0 @@ -8,7 +8,7 @@ googlemaps~=4.5.3 pandas-gbq~=0.19.1 pydata-google-auth~=1.7.0 pandera[io]~=0.8.1 -jupyterlab~=3.2.8 +jupyterlab~=4.3.0 pandas~=1.4.0 joblib~=1.2.0 beautifulsoup4~=4.11 @@ -22,3 +22,4 @@ coloredlogs~=15.0.1 scipy~=1.14.1 google-cloud-storage~=2.18.2 geopandas~=1.0.1 +gcsfs~=2024.10.0 diff --git a/src/dbcp/transform/local_opposition.py b/src/dbcp/transform/local_opposition.py index 7092b253..ff26d66b 100644 --- a/src/dbcp/transform/local_opposition.py +++ b/src/dbcp/transform/local_opposition.py @@ -102,6 +102,7 @@ def _transform_local_ordinances(local_ord_df: pd.DataFrame) -> pd.DataFrame: "Town of Charlton (Worcester County)": "Charlton (Worcester County)", "City of Owasso (Rogers and Tulsa Counties)": "Owasso (Rogers and Tulsa Counties)", "City of Burleson (Tarrant and Johnson Counties)": "Burleson (Tarrant and Johnson Counties)", + "Montrose City (Genesee County)": "Montrose (Genesee County)", } local.loc[:, "locality"].replace(location_corrections, inplace=True) From 7dce1a5eb8742a4a97394fd6debc9e9eebd97045 Mon Sep 17 00:00:00 2001 From: e-belfer Date: Fri, 15 Nov 2024 14:50:37 -0500 Subject: [PATCH 20/25] Update BR with 2025-6 data --- .../ballot_ready/ballot_ready_update.ipynb | 283 ++++++++++++++++++ src/dbcp/etl.py | 2 +- src/dbcp/transform/ballot_ready.py | 24 ++ 3 files changed, 308 insertions(+), 1 deletion(-) create mode 100644 notebooks/data_updates/ballot_ready/ballot_ready_update.ipynb diff --git a/notebooks/data_updates/ballot_ready/ballot_ready_update.ipynb b/notebooks/data_updates/ballot_ready/ballot_ready_update.ipynb new file mode 100644 index 00000000..0c12c713 --- /dev/null +++ b/notebooks/data_updates/ballot_ready/ballot_ready_update.ipynb @@ -0,0 +1,283 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "from google.cloud import storage" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "metadata": {}, + "outputs": [], + "source": [ + "# Save old Ballot Ready data locally\n", + "client = storage.Client()\n", + "bucket = client.bucket(\"dgm-archive\")\n", + "blobs = bucket.list_blobs(prefix=\"ballot_ready/Climate Partners_Upcoming Races_All Tiers_20240524.csv\", versions=True)\n", + "for i, blob in enumerate(blobs):\n", + " if i>1:\n", + " exit # There should only be one file that has this name.\n", + " blob.download_to_filename(\"ballot_ready_2024_05_24.csv\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Save old Ballot Ready data locally\n", + "client = storage.Client()\n", + "bucket = client.bucket(\"dgm-archive\")\n", + "blobs = bucket.list_blobs(prefix=\"ballot_ready/Climate Partners_Upcoming Races_2025-2026_20240826.csv\", versions=True)\n", + "for i, blob in enumerate(blobs):\n", + " if i>1:\n", + " exit # There should only be one file that has this name.\n", + " blob.download_to_filename(\"ballot_ready_2024_08_26.csv\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_24492/3133798857.py:2: DtypeWarning: Columns (11) have mixed types. Specify dtype option on import or set low_memory=False.\n", + " old_br = pd.read_csv(\"ballot_ready_2024_05_24.csv\")\n" + ] + } + ], + "source": [ + "# Import old Ballot Ready data\n", + "old_br = pd.read_csv(\"ballot_ready_2024_05_24.csv\")\n", + "# Import new Ballot Ready data\n", + "new_br = pd.read_csv(\"ballot_ready_2024_08_26.csv\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Empty DataFrame\n", + "Columns: [id, election_id, election_name, election_day, race_id, geofence_id, is_primary, is_runoff, is_unexpired, position_id, mtfcc, geo_id, position_name, sub_area_name, sub_area_value, sub_area_name_secondary, sub_area_value_secondary, state, level, tier, is_judicial, is_retention, number_of_seats, normalized_position_id, normalized_position_name, position_description, frequency, reference_year, partisan_type, counties, race_created_at, race_updated_at]\n", + "Index: []\n", + "\n", + "[0 rows x 32 columns]\n", + "Empty DataFrame\n", + "Columns: [id, election_id, election_name, election_day, race_id, geofence_id, is_primary, is_runoff, is_unexpired, position_id, mtfcc, geo_id, position_name, sub_area_name, sub_area_value, sub_area_name_secondary, sub_area_value_secondary, state, level, tier, is_judicial, is_retention, number_of_seats, normalized_position_id, normalized_position_name, position_description, frequency, reference_year, partisan_type, counties, race_created_at, race_updated_at]\n", + "Index: []\n", + "\n", + "[0 rows x 32 columns]\n", + "Empty DataFrame\n", + "Columns: [id, election_id, election_name, election_day, race_id, geofence_id, is_primary, is_runoff, is_unexpired, position_id, mtfcc, geo_id, position_name, sub_area_name, sub_area_value, sub_area_name_secondary, sub_area_value_secondary, state, level, tier, is_judicial, is_retention, number_of_seats, normalized_position_id, normalized_position_name, position_description, frequency, reference_year, partisan_type, counties, race_created_at, race_updated_at]\n", + "Index: []\n", + "\n", + "[0 rows x 32 columns]\n" + ] + } + ], + "source": [ + "# Confirm the data doesn't overlap:\n", + "print(new_br[new_br.election_id.isin(old_br.election_id)]) # Elections?\n", + "print(new_br[new_br.race_id.isin(old_br.race_id)]) # Races?\n", + "print(new_br[new_br.election_day.isin(old_br.election_day)]) # Election timespans?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Final election date in old data: 2024-12-14\n", + "First election date in new data: 2025-02-04\n" + ] + } + ], + "source": [ + "# Confirm by looking at dates covered.\n", + "print(f\"Final election date in old data: {old_br.election_day.max()}\")\n", + "print(f\"First election date in new data: {new_br.election_day.min()}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "New columns in the new data: set()\n", + "Columns no longer in the new data: set()\n" + ] + } + ], + "source": [ + "# New columns in the data\n", + "print(f\"New columns in the new data: {set(new_br.columns).difference(old_br.columns)}\")\n", + "# Missing columns in the new data - None!\n", + "print(f\"Columns no longer in the new data: {set(old_br.columns).difference(new_br.columns)}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "There are some geographic fields in the data that we aren't currently using. The [Ballot Ready](https://support.ballotready.org/interpreting-mtfcc-and-geoid) documentation notes:\n", + "\n", + "\"Mtfcc and geo_id fields should be treated as pairs. Meaning that there could be more than one record in the census file with the same geo_id, but the mtfcc value identifies the type of census entity. BallotReady datasets should be joined to the census file on both the mtfcc and geo_id.\"\n", + "\n", + "\"mtfcc values that start with X will not have any corresponding entry in the census file. These mtfcc/geo_id pairs are for custom boundaries that BallotReady collected, that are not available via the census. Note that there's not one clear explanation about how to use the custom mtfcc values.\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 G5420\n", + "1 G5420\n", + "2 X0102\n", + "3 X0102\n", + "4 G5420\n", + "Name: mtfcc, dtype: object" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "new_br.mtfcc.head(5) # A 5 digit MAF/TIGER feature class code. Those starting with X come from Ballot Ready's research." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2 770\n", + "4 992\n", + "5 64599\n", + "7 102909\n", + "8 2\n", + "9 12\n", + "10 75211\n", + "12 8605\n", + "13 4\n", + "15 14\n", + "16 6\n", + "Name: geo_id, dtype: int64" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# GEO IDs vary in length based on what information they contain.\n", + "# https://www.census.gov/programs-surveys/geography/guidance/geo-identifiers.html\n", + "new_br.geo_id.str.len().value_counts().sort_index()\n", + "# 2: State FIPS\n", + "# 4: State FIPS + Congressional district\n", + "# 5: State FIPS + County FIPS\n", + "# 7: State FIPS + 5-digit place\n", + "# 8: Not a valid length described by the Census - e.g., 53059.C7 - need to be normalized\n", + "# 9: Not a valid length described by the Census - e.g., 4205-2-13 - need to be normalized\n", + "# 10: State FIPS + County FIPS + County sub-division\n", + "# 12: State FIPS + County FIPS + Tract + Block Group\n", + "# 13: Not a valid length described by the Census - e.g., 53063.8 R/S/B - need to be normalized\n", + "# 15: State FIPS + County FIPS + Tract + Block\n", + "# 16: State FIPS + County FIPS + Tract + Block + Suffix" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Regarding the `geofence_id`, the documentation notes:\n", + "\"Depending on the scope of your export, there can be multiple geofences for the same mtfcc/geo_id pair that are distinguished by the valid_from and valid_to fields. That's how we track how the boundaries for a given political jurisdiction can change over time (due to redistricting, annexations, etc.).\"" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 56, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "new_br.set_index(['race_id', 'geofence_id']).index.is_unique" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We don't see `valid_to` and `valid_from` fields in our CSV, and each race is only associated with one `geofence_id` in the data sample. For now, we use these fields to validate our geocoding, but until we need more granular data they don't seem to necessarily serve our use case better than the existing geocoding workflow." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "dbcp-dev", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.13" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/src/dbcp/etl.py b/src/dbcp/etl.py index 0c39a4d4..da138a9f 100644 --- a/src/dbcp/etl.py +++ b/src/dbcp/etl.py @@ -149,7 +149,7 @@ def etl_energy_communities_by_county() -> dict[str, pd.DataFrame]: def etl_ballot_ready() -> dict[str, pd.DataFrame]: """ETL Ballot Ready election data.""" - source_uri = "gs://dgm-archive/ballot_ready/Climate Partners_Upcoming Races_All Tiers_20240524.csv" + source_uri = "gs://dgm-archive/ballot_ready/Climate Partners_Upcoming Races_2025-2026_20240826.csv" raw_df = dbcp.extract.ballot_ready.extract(source_uri) transformed = dbcp.transform.ballot_ready.transform(raw_df) return transformed diff --git a/src/dbcp/transform/ballot_ready.py b/src/dbcp/transform/ballot_ready.py index a774b3f0..4c72c39b 100644 --- a/src/dbcp/transform/ballot_ready.py +++ b/src/dbcp/transform/ballot_ready.py @@ -198,6 +198,30 @@ def _explode_counties(raw_ballot_ready: pd.DataFrame) -> pd.DataFrame: ballot_ready = pd.concat(valdez_corrections_dfs + [ballot_ready]) + # Validate the geocoding against the GEO IDs that contain a state and county FIPS ID + # GEO IDs vary in length based on what information they contain. + # https://www.census.gov/programs-surveys/geography/guidance/geo-identifiers.html + # These ones contain both state and county FIPS. Some have letters or non FIPs + # characters, so we shouldn't expect a perfect match. + state_match = ballot_ready.geo_id.str[0:2] == ballot_ready.state_id_fips + logger.info( + f"State FIPS codes:{sum(state_match)} of {len(state_match)} geocoded state FIPS IDs match the Ballot Ready data ({sum(state_match)/len(state_match):.0%})" + ) + assert sum(state_match) / len(state_match) > 0.99 + + # All GEO IDs contain the state FIPS code. But only these contain the County FIPS: + # 5 digits: State FIPS + County FIPS + # 10 digits: State FIPS + County FIPS + County sub-division + # 12 digits: State FIPS + County FIPS + Tract + Block Group + # 15 digits: State FIPS + County FIPS + Tract + Block + # 16 digits: State FIPS + County FIPS + Tract + Block + Suffix + geo_ids = ballot_ready.loc[ballot_ready.geo_id.str.len().isin([5, 10, 12, 15, 16])] + county_match = geo_ids.geo_id.str[0:5] == geo_ids.county_id_fips + logger.info( + f"County FIPS codes:{sum(county_match)} of {len(county_match)} geocoded state FIPS IDs match the Ballot Ready data ({sum(county_match)/len(county_match):.0%})" + ) + assert sum(county_match) / len(county_match) > 0.85 + # Drop unused columns ballot_ready = ballot_ready.drop(columns=["position_description"]) ballot_ready = ballot_ready.rename( From 7d2f09343d2857fe43e7a79553c7db857efe9898 Mon Sep 17 00:00:00 2001 From: e-belfer Date: Fri, 15 Nov 2024 14:57:47 -0500 Subject: [PATCH 21/25] Update notebook to make new data inspection easier --- .../ballot_ready/ballot_ready_update.ipynb | 123 +++++++++++++++++- 1 file changed, 119 insertions(+), 4 deletions(-) diff --git a/notebooks/data_updates/ballot_ready/ballot_ready_update.ipynb b/notebooks/data_updates/ballot_ready/ballot_ready_update.ipynb index 0c12c713..eae363c2 100644 --- a/notebooks/data_updates/ballot_ready/ballot_ready_update.ipynb +++ b/notebooks/data_updates/ballot_ready/ballot_ready_update.ipynb @@ -33,9 +33,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 15, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/thinky/miniforge3/envs/dbcp-dev/lib/python3.10/site-packages/google/auth/_default.py:76: UserWarning: Your application has authenticated using end user credentials from Google Cloud SDK without a quota project. You might receive a \"quota exceeded\" or \"API not enabled\" error. See the following page for troubleshooting: https://cloud.google.com/docs/authentication/adc-troubleshooting/user-creds. \n", + " warnings.warn(_CLOUD_SDK_CREDENTIALS_WARNING)\n", + "/home/thinky/miniforge3/envs/dbcp-dev/lib/python3.10/site-packages/google/auth/_default.py:76: UserWarning: Your application has authenticated using end user credentials from Google Cloud SDK without a quota project. You might receive a \"quota exceeded\" or \"API not enabled\" error. See the following page for troubleshooting: https://cloud.google.com/docs/authentication/adc-troubleshooting/user-creds. \n", + " warnings.warn(_CLOUD_SDK_CREDENTIALS_WARNING)\n" + ] + } + ], "source": [ "# Save old Ballot Ready data locally\n", "client = storage.Client()\n", @@ -49,14 +60,14 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "/tmp/ipykernel_24492/3133798857.py:2: DtypeWarning: Columns (11) have mixed types. Specify dtype option on import or set low_memory=False.\n", + "/tmp/ipykernel_69213/1466442055.py:2: DtypeWarning: Columns (11) have mixed types. Specify dtype option on import or set low_memory=False.\n", " old_br = pd.read_csv(\"ballot_ready_2024_05_24.csv\")\n" ] } @@ -257,6 +268,110 @@ "source": [ "We don't see `valid_to` and `valid_from` fields in our CSV, and each race is only associated with one `geofence_id` in the data sample. For now, we use these fields to validate our geocoding, but until we need more granular data they don't seem to necessarily serve our use case better than the existing geocoding workflow." ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Transformed Data\n", + "\n", + "Let's compare the geo ID and the geocoded state and county FIPS columns to ensure geocoding works as expected." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2025-02-04 00:00:00\n", + "2026-12-12 00:00:00\n" + ] + } + ], + "source": [ + "transformed_br = pd.read_parquet('../../../data/output/data_mart/br_election_data.parquet')\n", + "print(transformed_br.election_day.min())\n", + "print(transformed_br.election_day.max())" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'old_br' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[13], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mold_br\u001b[49m\u001b[38;5;241m.\u001b[39minfo()\n", + "\u001b[0;31mNameError\u001b[0m: name 'old_br' is not defined" + ] + } + ], + "source": [ + "old_br.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 226079 entries, 0 to 226078\n", + "Data columns (total 31 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 race_id 226079 non-null Int64 \n", + " 1 is_primary 226079 non-null boolean \n", + " 2 is_runoff 226079 non-null boolean \n", + " 3 is_unexpired 226079 non-null boolean \n", + " 4 number_of_seats 226079 non-null Int64 \n", + " 5 race_created_at 226079 non-null datetime64[ns]\n", + " 6 race_updated_at 226079 non-null datetime64[ns]\n", + " 7 election_id 226079 non-null Int64 \n", + " 8 position_id 226079 non-null Int64 \n", + " 9 election_name 226079 non-null string \n", + " 10 election_day 226079 non-null datetime64[ns]\n", + " 11 position_name 226079 non-null string \n", + " 12 reference_year 226076 non-null string \n", + " 13 sub_area_name 90098 non-null string \n", + " 14 sub_area_value 98579 non-null string \n", + " 15 sub_area_name_secondary 5170 non-null string \n", + " 16 sub_area_value_secondary 5669 non-null string \n", + " 17 level 226079 non-null string \n", + " 18 tier 226079 non-null Int64 \n", + " 19 is_judicial 226079 non-null boolean \n", + " 20 is_retention 226079 non-null boolean \n", + " 21 normalized_position_id 226079 non-null Int64 \n", + " 22 normalized_position_name 226079 non-null string \n", + " 23 frequency 226076 non-null string \n", + " 24 partisan_type 225721 non-null string \n", + " 25 county_name 226079 non-null string \n", + " 26 state_name 226079 non-null string \n", + " 27 raw_county 226079 non-null string \n", + " 28 raw_state 226079 non-null string \n", + " 29 state_id_fips 226079 non-null string \n", + " 30 county_id_fips 226079 non-null string \n", + "dtypes: Int64(6), boolean(5), datetime64[ns](3), string(17)\n", + "memory usage: 48.3 MB\n" + ] + } + ], + "source": [ + "transformed_br.info()" + ] } ], "metadata": { From f63cf0eb0dfd1e6551c39cb64dd2062a36d87253 Mon Sep 17 00:00:00 2001 From: e-belfer Date: Fri, 15 Nov 2024 15:18:34 -0500 Subject: [PATCH 22/25] Add precaution against nulls in county_id_fips --- src/dbcp/transform/ballot_ready.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/dbcp/transform/ballot_ready.py b/src/dbcp/transform/ballot_ready.py index 4c72c39b..4e5b2fa5 100644 --- a/src/dbcp/transform/ballot_ready.py +++ b/src/dbcp/transform/ballot_ready.py @@ -215,7 +215,10 @@ def _explode_counties(raw_ballot_ready: pd.DataFrame) -> pd.DataFrame: # 12 digits: State FIPS + County FIPS + Tract + Block Group # 15 digits: State FIPS + County FIPS + Tract + Block # 16 digits: State FIPS + County FIPS + Tract + Block + Suffix - geo_ids = ballot_ready.loc[ballot_ready.geo_id.str.len().isin([5, 10, 12, 15, 16])] + geo_ids = ballot_ready.loc[ + (ballot_ready.geo_id.str.len().isin([5, 10, 12, 15, 16])) + & (ballot_ready.county_id_fips.notnull()) + ] county_match = geo_ids.geo_id.str[0:5] == geo_ids.county_id_fips logger.info( f"County FIPS codes:{sum(county_match)} of {len(county_match)} geocoded state FIPS IDs match the Ballot Ready data ({sum(county_match)/len(county_match):.0%})" From 8b2dcbe2ed38c17bff1b8583cf5546123ff4f0d2 Mon Sep 17 00:00:00 2001 From: bendnorman Date: Fri, 15 Nov 2024 11:45:12 -0900 Subject: [PATCH 23/25] Add message to geoid ballot ready assertion and use existing helpers in ballot ready notebook --- .../ballot_ready/ballot_ready_update.ipynb | 221 +++++++++--------- src/dbcp/transform/ballot_ready.py | 10 +- 2 files changed, 110 insertions(+), 121 deletions(-) diff --git a/notebooks/data_updates/ballot_ready/ballot_ready_update.ipynb b/notebooks/data_updates/ballot_ready/ballot_ready_update.ipynb index eae363c2..b0ea0d32 100644 --- a/notebooks/data_updates/ballot_ready/ballot_ready_update.ipynb +++ b/notebooks/data_updates/ballot_ready/ballot_ready_update.ipynb @@ -1,13 +1,8 @@ { "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [] - }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -15,22 +10,6 @@ "from google.cloud import storage" ] }, - { - "cell_type": "code", - "execution_count": 74, - "metadata": {}, - "outputs": [], - "source": [ - "# Save old Ballot Ready data locally\n", - "client = storage.Client()\n", - "bucket = client.bucket(\"dgm-archive\")\n", - "blobs = bucket.list_blobs(prefix=\"ballot_ready/Climate Partners_Upcoming Races_All Tiers_20240524.csv\", versions=True)\n", - "for i, blob in enumerate(blobs):\n", - " if i>1:\n", - " exit # There should only be one file that has this name.\n", - " blob.download_to_filename(\"ballot_ready_2024_05_24.csv\")" - ] - }, { "cell_type": "code", "execution_count": 15, @@ -40,48 +19,28 @@ "name": "stderr", "output_type": "stream", "text": [ - "/home/thinky/miniforge3/envs/dbcp-dev/lib/python3.10/site-packages/google/auth/_default.py:76: UserWarning: Your application has authenticated using end user credentials from Google Cloud SDK without a quota project. You might receive a \"quota exceeded\" or \"API not enabled\" error. See the following page for troubleshooting: https://cloud.google.com/docs/authentication/adc-troubleshooting/user-creds. \n", - " warnings.warn(_CLOUD_SDK_CREDENTIALS_WARNING)\n", - "/home/thinky/miniforge3/envs/dbcp-dev/lib/python3.10/site-packages/google/auth/_default.py:76: UserWarning: Your application has authenticated using end user credentials from Google Cloud SDK without a quota project. You might receive a \"quota exceeded\" or \"API not enabled\" error. See the following page for troubleshooting: https://cloud.google.com/docs/authentication/adc-troubleshooting/user-creds. \n", - " warnings.warn(_CLOUD_SDK_CREDENTIALS_WARNING)\n" + "/tmp/ipykernel_33/2772101518.py:9: DtypeWarning: Columns (11) have mixed types. Specify dtype option on import or set low_memory=False.\n", + " old_br = pd.read_csv(old_br_path)\n" ] } ], "source": [ "# Save old Ballot Ready data locally\n", - "client = storage.Client()\n", - "bucket = client.bucket(\"dgm-archive\")\n", - "blobs = bucket.list_blobs(prefix=\"ballot_ready/Climate Partners_Upcoming Races_2025-2026_20240826.csv\", versions=True)\n", - "for i, blob in enumerate(blobs):\n", - " if i>1:\n", - " exit # There should only be one file that has this name.\n", - " blob.download_to_filename(\"ballot_ready_2024_08_26.csv\")" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/tmp/ipykernel_69213/1466442055.py:2: DtypeWarning: Columns (11) have mixed types. Specify dtype option on import or set low_memory=False.\n", - " old_br = pd.read_csv(\"ballot_ready_2024_05_24.csv\")\n" - ] - } - ], - "source": [ + "\n", + "from dbcp.extract.helpers import cache_gcs_archive_file_locally\n", + "\n", + "old_br_path = cache_gcs_archive_file_locally(\"gs://dgm-archive/ballot_ready/Climate Partners_Upcoming Races_All Tiers_20240524.csv\")\n", + "new_br_path = cache_gcs_archive_file_locally(\"gs://dgm-archive/ballot_ready/Climate Partners_Upcoming Races_2025-2026_20240826.csv\")\n", + "\n", "# Import old Ballot Ready data\n", - "old_br = pd.read_csv(\"ballot_ready_2024_05_24.csv\")\n", + "old_br = pd.read_csv(old_br_path)\n", "# Import new Ballot Ready data\n", - "new_br = pd.read_csv(\"ballot_ready_2024_08_26.csv\")" + "new_br = pd.read_csv(new_br_path)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 16, "metadata": {}, "outputs": [ { @@ -91,18 +50,12 @@ "Empty DataFrame\n", "Columns: [id, election_id, election_name, election_day, race_id, geofence_id, is_primary, is_runoff, is_unexpired, position_id, mtfcc, geo_id, position_name, sub_area_name, sub_area_value, sub_area_name_secondary, sub_area_value_secondary, state, level, tier, is_judicial, is_retention, number_of_seats, normalized_position_id, normalized_position_name, position_description, frequency, reference_year, partisan_type, counties, race_created_at, race_updated_at]\n", "Index: []\n", - "\n", - "[0 rows x 32 columns]\n", "Empty DataFrame\n", "Columns: [id, election_id, election_name, election_day, race_id, geofence_id, is_primary, is_runoff, is_unexpired, position_id, mtfcc, geo_id, position_name, sub_area_name, sub_area_value, sub_area_name_secondary, sub_area_value_secondary, state, level, tier, is_judicial, is_retention, number_of_seats, normalized_position_id, normalized_position_name, position_description, frequency, reference_year, partisan_type, counties, race_created_at, race_updated_at]\n", "Index: []\n", - "\n", - "[0 rows x 32 columns]\n", "Empty DataFrame\n", "Columns: [id, election_id, election_name, election_day, race_id, geofence_id, is_primary, is_runoff, is_unexpired, position_id, mtfcc, geo_id, position_name, sub_area_name, sub_area_value, sub_area_name_secondary, sub_area_value_secondary, state, level, tier, is_judicial, is_retention, number_of_seats, normalized_position_id, normalized_position_name, position_description, frequency, reference_year, partisan_type, counties, race_created_at, race_updated_at]\n", - "Index: []\n", - "\n", - "[0 rows x 32 columns]\n" + "Index: []\n" ] } ], @@ -115,7 +68,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 17, "metadata": {}, "outputs": [ { @@ -135,7 +88,7 @@ }, { "cell_type": "code", - "execution_count": 78, + "execution_count": 18, "metadata": {}, "outputs": [ { @@ -167,7 +120,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 19, "metadata": {}, "outputs": [ { @@ -181,7 +134,7 @@ "Name: mtfcc, dtype: object" ] }, - "execution_count": 37, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } @@ -192,7 +145,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 20, "metadata": {}, "outputs": [ { @@ -212,7 +165,7 @@ "Name: geo_id, dtype: int64" ] }, - "execution_count": 44, + "execution_count": 20, "metadata": {}, "output_type": "execute_result" } @@ -244,7 +197,7 @@ }, { "cell_type": "code", - "execution_count": 56, + "execution_count": 21, "metadata": {}, "outputs": [ { @@ -253,7 +206,7 @@ "True" ] }, - "execution_count": 56, + "execution_count": 21, "metadata": {}, "output_type": "execute_result" } @@ -280,15 +233,15 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 22, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "2025-02-04 00:00:00\n", - "2026-12-12 00:00:00\n" + "2023-02-07 00:00:00\n", + "2024-12-14 00:00:00\n" ] } ], @@ -300,18 +253,52 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 23, "metadata": {}, "outputs": [ { - "ename": "NameError", - "evalue": "name 'old_br' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[13], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mold_br\u001b[49m\u001b[38;5;241m.\u001b[39minfo()\n", - "\u001b[0;31mNameError\u001b[0m: name 'old_br' is not defined" + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 247247 entries, 0 to 247246\n", + "Data columns (total 32 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 id 247247 non-null int64 \n", + " 1 election_id 247247 non-null int64 \n", + " 2 election_name 247247 non-null object \n", + " 3 election_day 247247 non-null object \n", + " 4 race_id 247247 non-null int64 \n", + " 5 geofence_id 246694 non-null float64\n", + " 6 is_primary 247247 non-null object \n", + " 7 is_runoff 247247 non-null object \n", + " 8 is_unexpired 247247 non-null object \n", + " 9 position_id 247247 non-null int64 \n", + " 10 mtfcc 247235 non-null object \n", + " 11 geo_id 247221 non-null object \n", + " 12 position_name 247247 non-null object \n", + " 13 sub_area_name 103388 non-null object \n", + " 14 sub_area_value 114475 non-null object \n", + " 15 sub_area_name_secondary 6619 non-null object \n", + " 16 sub_area_value_secondary 7226 non-null object \n", + " 17 state 247247 non-null object \n", + " 18 level 247247 non-null object \n", + " 19 tier 247247 non-null int64 \n", + " 20 is_judicial 247247 non-null object \n", + " 21 is_retention 247247 non-null object \n", + " 22 number_of_seats 247247 non-null int64 \n", + " 23 normalized_position_id 247247 non-null int64 \n", + " 24 normalized_position_name 247247 non-null object \n", + " 25 position_description 247203 non-null object \n", + " 26 frequency 246845 non-null object \n", + " 27 reference_year 246845 non-null float64\n", + " 28 partisan_type 247022 non-null object \n", + " 29 counties 247247 non-null object \n", + " 30 race_created_at 247247 non-null object \n", + " 31 race_updated_at 247247 non-null object \n", + "dtypes: float64(2), int64(7), object(23)\n", + "memory usage: 60.4+ MB\n" ] } ], @@ -321,7 +308,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 24, "metadata": {}, "outputs": [ { @@ -329,43 +316,43 @@ "output_type": "stream", "text": [ "\n", - "RangeIndex: 226079 entries, 0 to 226078\n", + "RangeIndex: 218874 entries, 0 to 218873\n", "Data columns (total 31 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", - " 0 race_id 226079 non-null Int64 \n", - " 1 is_primary 226079 non-null boolean \n", - " 2 is_runoff 226079 non-null boolean \n", - " 3 is_unexpired 226079 non-null boolean \n", - " 4 number_of_seats 226079 non-null Int64 \n", - " 5 race_created_at 226079 non-null datetime64[ns]\n", - " 6 race_updated_at 226079 non-null datetime64[ns]\n", - " 7 election_id 226079 non-null Int64 \n", - " 8 position_id 226079 non-null Int64 \n", - " 9 election_name 226079 non-null string \n", - " 10 election_day 226079 non-null datetime64[ns]\n", - " 11 position_name 226079 non-null string \n", - " 12 reference_year 226076 non-null string \n", - " 13 sub_area_name 90098 non-null string \n", - " 14 sub_area_value 98579 non-null string \n", - " 15 sub_area_name_secondary 5170 non-null string \n", - " 16 sub_area_value_secondary 5669 non-null string \n", - " 17 level 226079 non-null string \n", - " 18 tier 226079 non-null Int64 \n", - " 19 is_judicial 226079 non-null boolean \n", - " 20 is_retention 226079 non-null boolean \n", - " 21 normalized_position_id 226079 non-null Int64 \n", - " 22 normalized_position_name 226079 non-null string \n", - " 23 frequency 226076 non-null string \n", - " 24 partisan_type 225721 non-null string \n", - " 25 county_name 226079 non-null string \n", - " 26 state_name 226079 non-null string \n", - " 27 raw_county 226079 non-null string \n", - " 28 raw_state 226079 non-null string \n", - " 29 state_id_fips 226079 non-null string \n", - " 30 county_id_fips 226079 non-null string \n", + " 0 race_id 218874 non-null Int64 \n", + " 1 is_primary 218874 non-null boolean \n", + " 2 is_runoff 218874 non-null boolean \n", + " 3 is_unexpired 218874 non-null boolean \n", + " 4 number_of_seats 218874 non-null Int64 \n", + " 5 race_created_at 218874 non-null datetime64[ns]\n", + " 6 race_updated_at 218874 non-null datetime64[ns]\n", + " 7 election_id 218874 non-null Int64 \n", + " 8 position_id 218874 non-null Int64 \n", + " 9 election_name 218874 non-null string \n", + " 10 election_day 218874 non-null datetime64[ns]\n", + " 11 position_name 218874 non-null string \n", + " 12 reference_year 218638 non-null string \n", + " 13 sub_area_name 86507 non-null string \n", + " 14 sub_area_value 96018 non-null string \n", + " 15 sub_area_name_secondary 4684 non-null string \n", + " 16 sub_area_value_secondary 5167 non-null string \n", + " 17 level 218874 non-null string \n", + " 18 tier 218874 non-null Int64 \n", + " 19 is_judicial 218874 non-null boolean \n", + " 20 is_retention 218874 non-null boolean \n", + " 21 normalized_position_id 218874 non-null Int64 \n", + " 22 normalized_position_name 218874 non-null string \n", + " 23 frequency 218638 non-null string \n", + " 24 partisan_type 218663 non-null string \n", + " 25 county_name 218874 non-null string \n", + " 26 state_name 218874 non-null string \n", + " 27 raw_county 218874 non-null string \n", + " 28 raw_state 218874 non-null string \n", + " 29 state_id_fips 218874 non-null string \n", + " 30 county_id_fips 218874 non-null string \n", "dtypes: Int64(6), boolean(5), datetime64[ns](3), string(17)\n", - "memory usage: 48.3 MB\n" + "memory usage: 46.8 MB\n" ] } ], @@ -376,7 +363,7 @@ ], "metadata": { "kernelspec": { - "display_name": "dbcp-dev", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -390,9 +377,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.13" + "version": "3.10.15" } }, "nbformat": 4, - "nbformat_minor": 2 + "nbformat_minor": 4 } diff --git a/src/dbcp/transform/ballot_ready.py b/src/dbcp/transform/ballot_ready.py index 4e5b2fa5..248af119 100644 --- a/src/dbcp/transform/ballot_ready.py +++ b/src/dbcp/transform/ballot_ready.py @@ -1,4 +1,5 @@ """Module for cleaning Ballot Ready data.""" + import logging import pandas as pd @@ -204,10 +205,11 @@ def _explode_counties(raw_ballot_ready: pd.DataFrame) -> pd.DataFrame: # These ones contain both state and county FIPS. Some have letters or non FIPs # characters, so we shouldn't expect a perfect match. state_match = ballot_ready.geo_id.str[0:2] == ballot_ready.state_id_fips - logger.info( - f"State FIPS codes:{sum(state_match)} of {len(state_match)} geocoded state FIPS IDs match the Ballot Ready data ({sum(state_match)/len(state_match):.0%})" - ) - assert sum(state_match) / len(state_match) > 0.99 + expected_state_match = 0.99 + result_state_match_coverage = sum(state_match) / len(state_match) + assert ( + sum(state_match) / len(state_match) > expected_state_match + ), f"State FIPS codes:{sum(state_match)} of {len(state_match)} geocoded state FIPS IDs match the Ballot Ready data ({result_state_match_coverage:.0%}). Expected atleast {expected_state_match:.0%}" # All GEO IDs contain the state FIPS code. But only these contain the County FIPS: # 5 digits: State FIPS + County FIPS From ee950a03b706cdc1724396772fb5d6760a4867d6 Mon Sep 17 00:00:00 2001 From: bendnorman Date: Fri, 15 Nov 2024 11:53:11 -0900 Subject: [PATCH 24/25] Remove unused vars in gridstatus update notebook --- .../gridstatus/quarterly_update.ipynb | 25 +++---------------- 1 file changed, 3 insertions(+), 22 deletions(-) diff --git a/notebooks/data_updates/gridstatus/quarterly_update.ipynb b/notebooks/data_updates/gridstatus/quarterly_update.ipynb index b970e934..3631db10 100644 --- a/notebooks/data_updates/gridstatus/quarterly_update.ipynb +++ b/notebooks/data_updates/gridstatus/quarterly_update.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 2, + "execution_count": 1, "id": "537fc080-51d5-43fb-8780-33ac2c2a5228", "metadata": {}, "outputs": [ @@ -21,23 +21,6 @@ "In a future release, GeoPandas will switch to using Shapely by default. If you are using PyGEOS directly (calling PyGEOS functions on geometries from GeoPandas), this will then stop working and you are encouraged to migrate from PyGEOS to Shapely 2.0 (https://shapely.readthedocs.io/en/latest/migration_pygeos.html).\n", " import geopandas as gpd\n" ] - }, - { - "data": { - "text/plain": [ - "{'miso': '1728242350923420',\n", - " 'miso-pre-2017': '1709776311574737',\n", - " 'caiso': '1728242351254356',\n", - " 'pjm': '1728242351606642',\n", - " 'ercot': '1728242351929200',\n", - " 'spp': '1728242352244156',\n", - " 'nyiso': '1728242352584485',\n", - " 'isone': '1728242352913470'}" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" } ], "source": [ @@ -57,7 +40,7 @@ }, { "cell_type": "code", - "execution_count": 159, + "execution_count": 6, "id": "a89c74f3-79e6-4d52-b0d9-70b04544b417", "metadata": {}, "outputs": [ @@ -80,6 +63,7 @@ "from datetime import datetime\n", "\n", "def get_generation_number_closest_to_date(bucket_name, blob_name, target_date):\n", + " \"\"\"Find the first GCS blob that was modified after the target_date.\"\"\"\n", " client = storage.Client()\n", " bucket = client.bucket(bucket_name)\n", "\n", @@ -87,14 +71,11 @@ " blobs = bucket.list_blobs(prefix=blob_name, versions=True)\n", "\n", " # Filter and sort blobs by time difference\n", - " closest_blob = None\n", - " min_time_diff = float('inf')\n", " target_timestamp = target_date.timestamp()\n", " \n", " blobs = sorted(blobs, key=lambda blob: blob.updated.timestamp())\n", "\n", " for blob in blobs:\n", - " # Get the last modified time and calculate difference from target date\n", " last_modified = blob.updated.timestamp()\n", "\n", " if target_timestamp < last_modified:\n", From 487f4c336d060d21da4b5ba5537477c1e9814182 Mon Sep 17 00:00:00 2001 From: bendnorman Date: Tue, 19 Nov 2024 15:30:28 -0900 Subject: [PATCH 25/25] Update expected number of gs projects --- src/dbcp/transform/gridstatus.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/dbcp/transform/gridstatus.py b/src/dbcp/transform/gridstatus.py index 7f62924e..e5b5ec2f 100644 --- a/src/dbcp/transform/gridstatus.py +++ b/src/dbcp/transform/gridstatus.py @@ -950,8 +950,9 @@ def _normalize_project_locations(iso_df: pd.DataFrame) -> pd.DataFrame: duplicate_locations = geocoded_locations[ geocoded_locations[["county_id_fips", "project_id"]].duplicated(keep=False) ] + n_expected_duplicates = 118 assert ( - len(duplicate_locations) <= 116 + len(duplicate_locations) <= n_expected_duplicates ), f"Found more duplicate locations in Grid Status location table than expected:\n {duplicate_locations}" return geocoded_locations