diff --git a/aurora/config/metadata/processing.py b/aurora/config/metadata/processing.py index a9e94510..6355c141 100644 --- a/aurora/config/metadata/processing.py +++ b/aurora/config/metadata/processing.py @@ -10,13 +10,13 @@ from aurora.time_series.windowing_scheme import window_scheme_from_decimation from mt_metadata.transfer_functions.processing.aurora.processing import Processing from mt_metadata.utils.list_dict import ListDict - +from loguru import logger class Processing(Processing): def __init__(self, **kwargs): - # super().__init__(attr_dict=attr_dict, **kwargs) super().__init__(**kwargs) + self.logger = logger def window_scheme(self, as_type="df"): """ @@ -42,7 +42,7 @@ def window_scheme(self, as_type="df"): df = pd.DataFrame(data=data_dict) return df else: - print(f"unexpected rtype for window_scheme {as_type}") + self.logger.error(f"unexpected rtype for window_scheme {as_type}") raise TypeError def decimation_info(self): diff --git a/aurora/general_helper_functions.py b/aurora/general_helper_functions.py index 989e5619..f0d2edba 100644 --- a/aurora/general_helper_functions.py +++ b/aurora/general_helper_functions.py @@ -103,12 +103,12 @@ def execute_command(cmd, **kwargs): """ exec_dir = kwargs.get("exec_dir", os.path.expanduser("~/")) allow_exception = kwargs.get("allow_exception", True) - print("executing from {}".format(exec_dir)) + logger.info("executing from {}".format(exec_dir)) cwd = os.getcwd() os.chdir(exec_dir) exit_status = os.system(cmd) if exit_status != 0: - print(f"exit_status of {cmd} = {exit_status}") + logger.info(f"exit_status of {cmd} = {exit_status}") if allow_exception: raise Exception(f"Failed to successfully execute \n {cmd}") os.chdir(cwd) diff --git a/aurora/pipelines/fourier_coefficients.py b/aurora/pipelines/fourier_coefficients.py index f6667915..91234684 100644 --- a/aurora/pipelines/fourier_coefficients.py +++ b/aurora/pipelines/fourier_coefficients.py @@ -78,6 +78,8 @@ from mt_metadata.transfer_functions.processing.fourier_coefficients import ( Decimation as FCDecimation, ) +from loguru import logger + # ============================================================================= @@ -134,7 +136,7 @@ def decimation_and_stft_config_creator( if isinstance(mt_metadata.timeseries.time_period.TimePeriod, time_period): dd.time_period = time_period else: - print(f"Not sure how to assign time_period with {time_period}") + logger.info(f"Not sure how to assign time_period with {time_period}") raise NotImplementedError decimation_and_stft_config.append(dd) @@ -159,17 +161,17 @@ def add_fcs_to_mth5(mth5_path, decimation_and_stft_configs=None): channel_summary_df = m.channel_summary.to_dataframe() usssr_grouper = channel_summary_df.groupby(GROUPBY_COLUMNS) - print(f"DETECTED {len(usssr_grouper)} unique station-sample_rate instances") + logger.debug(f"DETECTED {len(usssr_grouper)} unique station-sample_rate instances") for (survey, station, sample_rate), usssr_group in usssr_grouper: - print(f"\n\n\nsurvey: {survey}, station: {station}, sample_rate {sample_rate}") + logger.info(f"\n\n\nsurvey: {survey}, station: {station}, sample_rate {sample_rate}") station_obj = m.get_station(station, survey) run_summary = station_obj.run_summary # Get the FC schemes if not decimation_and_stft_configs: msg = "FC config not supplied, using default, creating on the fly" - print(f"{msg}") + logger.info(f"{msg}") decimation_and_stft_configs = decimation_and_stft_config_creator( sample_rate, time_period=None ) @@ -178,7 +180,7 @@ def add_fcs_to_mth5(mth5_path, decimation_and_stft_configs=None): # I wonder if daskifiying that will cause issues with multiple threads trying to # write to the hdf5 file -- will need testing for i_run_row, run_row in run_summary.iterrows(): - print( + logger.info( f"survey: {survey}, station: {station}, sample_rate {sample_rate}, i_run_row {i_run_row}" ) # Access Run @@ -208,11 +210,11 @@ def add_fcs_to_mth5(mth5_path, decimation_and_stft_configs=None): if i_dec_level != 0: # Apply decimation run_xrds = prototype_decimate(decimation_stft_obj, run_xrds) - print(f"type decimation_stft_obj = {type(decimation_stft_obj)}") + logger.info(f"type decimation_stft_obj = {type(decimation_stft_obj)}") if not decimation_stft_obj.is_valid_for_time_series_length( run_xrds.time.shape[0] ): - print( + logger.info( f"Decimation Level {i_dec_level} invalid, TS of {run_xrds.time.shape[0]} samples too short" ) continue @@ -248,24 +250,24 @@ def read_back_fcs(mth5_path): m = MTH5() m.open_mth5(mth5_path) channel_summary_df = m.channel_summary.to_dataframe() - print(channel_summary_df) + logger.debug(channel_summary_df) usssr_grouper = channel_summary_df.groupby(GROUPBY_COLUMNS) for (survey, station, sample_rate), usssr_group in usssr_grouper: - print(f"survey: {survey}, station: {station}, sample_rate {sample_rate}") + logger.info(f"survey: {survey}, station: {station}, sample_rate {sample_rate}") station_obj = m.get_station(station, survey) fc_groups = station_obj.fourier_coefficients_group.groups_list - print(f"FC Groups: {fc_groups}") + logger.info(f"FC Groups: {fc_groups}") for run_id in fc_groups: fc_group = station_obj.fourier_coefficients_group.get_fc_group(run_id) dec_level_ids = fc_group.groups_list for dec_level_id in dec_level_ids: dec_level = fc_group.get_decimation_level(dec_level_id) - print( + logger.info( f"dec_level {dec_level_id}" ) # channel_summary {dec_level.channel_summary}") xrds = dec_level.to_xarray(["hx", "hy"]) - print(f"Time axis shape {xrds.time.data.shape}") - print(f"Freq axis shape {xrds.frequency.data.shape}") + logger.info(f"Time axis shape {xrds.time.data.shape}") + logger.info(f"Freq axis shape {xrds.frequency.data.shape}") return True diff --git a/aurora/pipelines/process_mth5.py b/aurora/pipelines/process_mth5.py index 521cf2a7..5ac89f79 100644 --- a/aurora/pipelines/process_mth5.py +++ b/aurora/pipelines/process_mth5.py @@ -39,7 +39,6 @@ # ============================================================================= - def make_stft_objects( processing_config, i_dec_level, run_obj, run_xrds, units, station_id ): @@ -168,7 +167,7 @@ def triage_issue_289(local_stfts, remote_stfts): for i_chunk in range(n_chunks): ok = local_stfts[i_chunk].time.shape == remote_stfts[i_chunk].time.shape if not ok: - print("Mismatch in FC array lengths detected -- Issue #289") + logger.warning("Mismatch in FC array lengths detected -- Issue #289") glb = max( local_stfts[i_chunk].time.min(), remote_stfts[i_chunk].time.min(), @@ -365,8 +364,8 @@ def process_mth5( try: assert row.run_id == run_obj.metadata.id except AssertionError: - print("WARNING Run ID in dataset_df does not match run_obj") - print("WARNING Forcing run metadata to match dataset_df") + logger.warning("WARNING Run ID in dataset_df does not match run_obj") + logger.warning("WARNING Forcing run metadata to match dataset_df") run_obj.metadata.id = row.run_id stft_obj = make_stft_objects( diff --git a/aurora/pipelines/run_summary.py b/aurora/pipelines/run_summary.py index d400733f..24bd5db8 100644 --- a/aurora/pipelines/run_summary.py +++ b/aurora/pipelines/run_summary.py @@ -28,6 +28,7 @@ from mt_metadata.transfer_functions.processing.aurora.channel_nomenclature import ALLOWED_OUTPUT_CHANNELS import mth5 from mth5.utils.helpers import initialize_mth5 +from loguru import logger @@ -70,6 +71,7 @@ def __init__(self, **kwargs): self._input_dict = kwargs.get("input_dict", None) self.df = kwargs.get("df", None) self._mini_summary_columns = ["survey", "station_id", "run_id", "start", "end"] + self.logger = logger def clone(self): """ @@ -89,7 +91,7 @@ def mini_summary(self): @property def print_mini_summary(self): - print(self.mini_summary) + self.logger.info(self.mini_summary) def add_duration(self, df=None): """ @@ -110,13 +112,13 @@ def check_runs_are_valid(self, drop=False, **kwargs): """kwargs can tell us what sorts of conditions to check, for example all_zero, there are nan, etc.""" # check_for_all_zero_runs for i_row, row in self.df.iterrows(): - print(f"Checking row for zeros {row}") + self.logger.info(f"Checking row for zeros {row}") m = mth5.mth5.MTH5() m.open_mth5(row.mth5_path) run_obj = m.get_run(row.station_id, row.run_id, row.survey) runts = run_obj.to_runts() if runts.dataset.to_array().data.__abs__().sum() == 0: - print("CRITICAL: Detected a run with all zero values") + self.logger.critical("CRITICAL: Detected a run with all zero values") self.df["valid"].at[i_row] = False # load each run, and take the median of the sum of the absolute values if drop: @@ -269,7 +271,7 @@ def extract_run_summary_from_mth5(mth5_obj, summary_type="run"): channel_summary_df = mth5_obj.channel_summary.to_dataframe() # check that the mth5 has been summarized already if len(channel_summary_df) < 2: - print("Channel summary maybe not initialized yet, 3 or more channels expected.") + self.logger.info("Channel summary maybe not initialized yet, 3 or more channels expected.") mth5_obj.channel_summary.summarize() channel_summary_df = mth5_obj.channel_summary.to_dataframe() if summary_type == "run": diff --git a/aurora/pipelines/time_series_helpers.py b/aurora/pipelines/time_series_helpers.py index 9327172a..1405b4fe 100644 --- a/aurora/pipelines/time_series_helpers.py +++ b/aurora/pipelines/time_series_helpers.py @@ -222,7 +222,7 @@ def nan_to_mean(xrds): for ch in xrds.keys(): null_values_present = xrds[ch].isnull().any() if null_values_present: - print( + logger.info( "Null values detected in xrds -- this is not expected and should be examined" ) value = np.nan_to_num(np.nanmean(xrds[ch].data)) @@ -308,7 +308,7 @@ def calibrate_stft_obj(stft_obj, run_obj, units="MT", channel_scale_factors=None channel_scale_factor = 1.0 calibration_response /= channel_scale_factor if units == "SI": - print("Warning: SI Units are not robustly supported issue #36") + logger.warning("Warning: SI Units are not robustly supported issue #36") stft_obj[channel_id].data /= calibration_response return stft_obj diff --git a/aurora/pipelines/transfer_function_helpers.py b/aurora/pipelines/transfer_function_helpers.py index db6d1b17..0aa1ba20 100644 --- a/aurora/pipelines/transfer_function_helpers.py +++ b/aurora/pipelines/transfer_function_helpers.py @@ -10,6 +10,8 @@ from aurora.transfer_function.weights.edf_weights import ( effective_degrees_of_freedom_weights, ) +from loguru import logger + ESTIMATOR_LIBRARY = {"OLS": RegressionEstimator, "RME": TRME, "RME_RR": TRME_RR} @@ -31,8 +33,8 @@ def get_estimator_class(estimation_engine): try: estimator_class = ESTIMATOR_LIBRARY[estimation_engine] except KeyError: - print(f"processing_scheme {estimation_engine} not supported") - print(f"processing_scheme must be one of {list(ESTIMATOR_LIBRARY.keys())}") + logger.error(f"processing_scheme {estimation_engine} not supported") + logger.error(f"processing_scheme must be one of {list(ESTIMATOR_LIBRARY.keys())}") raise Exception return estimator_class @@ -87,7 +89,7 @@ def check_time_axes_synched(X, Y): if (X.time == Y.time).all(): pass else: - print("WARNING - NAN Handling could fail if X,Y dont share time axes") + logger.warning("WARNING - NAN Handling could fail if X,Y dont share time axes") raise Exception return @@ -121,7 +123,7 @@ def get_band_for_tf_estimate( being within the frequency band given as an input argument. """ dec_level_config = config.decimations[0] - print(f"Processing band {band.center_period:.6f}s") + logger.info(f"Processing band {band.center_period:.6f}s") band_dataset = extract_band(band, local_stft_obj) X = band_dataset[dec_level_config.input_channels] Y = band_dataset[dec_level_config.output_channels] diff --git a/aurora/pipelines/transfer_function_kernel.py b/aurora/pipelines/transfer_function_kernel.py index 69f68055..6236c532 100644 --- a/aurora/pipelines/transfer_function_kernel.py +++ b/aurora/pipelines/transfer_function_kernel.py @@ -9,6 +9,7 @@ from mth5.utils.exceptions import MTH5Error from mth5.utils.helpers import initialize_mth5 from mt_metadata.transfer_functions.core import TF +from loguru import logger class TransferFunctionKernel(object): @@ -120,7 +121,7 @@ def update_dataset_df(self, i_dec_level): # APPLY TIMING CORRECTIONS HERE else: - print(f"DECIMATION LEVEL {i_dec_level}") + logger.info(f"DECIMATION LEVEL {i_dec_level}") for i, row in self.dataset_df.iterrows(): if not self.is_valid_dataset(row, i_dec_level): @@ -128,7 +129,7 @@ def update_dataset_df(self, i_dec_level): if row.fc: row_ssr_str = f"survey: {row.survey}, station_id: {row.station_id}, run_id: {row.run_id}" msg = f"FC already exists for {row_ssr_str} -- skipping decimation" - print(msg) + logger.info(msg) continue run_xrds = row["run_dataarray"].to_dataset("channel") decimation = self.config.decimations[i_dec_level].decimation @@ -244,7 +245,7 @@ def check_if_fc_levels_already_exist(self): < self.processing_config.num_decimation_levels ): self.dataset_df.loc[dataset_df_indices, "fc"] = False - print( + logger.info( f"Not enough FC Groups available for {row_ssr_str} -- will need to build them " ) continue @@ -279,7 +280,7 @@ def show_processing_summary( columns_to_show = self.processing_summary.columns columns_to_show = [x for x in columns_to_show if x not in omit_columns] logger.info("Processing Summary Dataframe:") - print(self.processing_summary[columns_to_show].to_string()) + logger.info(self.processing_summary[columns_to_show].to_string()) def make_processing_summary(self): """ @@ -321,7 +322,7 @@ def make_processing_summary(self): df.dec_level.diff()[1:] == 1 ).all() # dec levels increment by 1 except AssertionError: - print(f"Skipping {group} because decimation levels are messy.") + logger.info(f"Skipping {group} because decimation levels are messy.") continue assert df.dec_factor.iloc[0] == 1 assert df.dec_level.iloc[0] == 0 @@ -403,13 +404,13 @@ def validate_processing(self): if not self.config.stations.remote: for decimation in self.config.decimations: if decimation.estimator.engine == "RME_RR": - print("No RR station specified, switching RME_RR to RME") + logger.info("No RR station specified, switching RME_RR to RME") decimation.estimator.engine = "RME" # Make sure that a local station is defined if not self.config.stations.local.id: - print("WARNING: Local station not specified") - print("Setting local station from Kernel Dataset") + logger.warning("WARNING: Local station not specified") + logger.warning("Setting local station from Kernel Dataset") self.config.stations.from_dataset_dataframe(self.kernel_dataset.df) def validate(self): @@ -540,7 +541,7 @@ def make_decimation_dict_for_tf(tf_collection, processing_config): i_dec ].num_segments.data[0, i_band] except KeyError: - print("Possibly invalid decimation level") + logger.error("Possibly invalid decimation level") period_value["npts"] = 0 decimation_dict[period_key] = period_value @@ -596,14 +597,14 @@ def memory_warning(self): total_memory = psutil.virtual_memory().total # print the total amount of RAM in GB - print(f"Total memory: {total_memory / (1024 ** 3):.2f} GB") + logger.info(f"Total memory: {total_memory / (1024 ** 3):.2f} GB") num_samples = self.dataset_df.duration * self.dataset_df.sample_rate total_samples = num_samples.sum() total_bytes = total_samples * bytes_per_sample - print(f"Total Bytes of Raw Data: {total_bytes / (1024 ** 3):.3f} GB") + logger.info(f"Total Bytes of Raw Data: {total_bytes / (1024 ** 3):.3f} GB") ram_fraction = 1.0 * total_bytes / total_memory - print(f"Raw Data will use: {100 * ram_fraction:.3f} % of memory") + logger.info(f"Raw Data will use: {100 * ram_fraction:.3f} % of memory") # Check a condition if total_bytes > memory_threshold * total_memory: diff --git a/aurora/sandbox/debug_mt_metadata_issue_85.py b/aurora/sandbox/debug_mt_metadata_issue_85.py index fd0eda00..f989b43b 100644 --- a/aurora/sandbox/debug_mt_metadata_issue_85.py +++ b/aurora/sandbox/debug_mt_metadata_issue_85.py @@ -1,6 +1,6 @@ from mt_metadata.timeseries.location import Location from mth5.mth5 import MTH5 - +from loguru import logger def test_can_add_location(): """ @@ -29,17 +29,17 @@ def test_can_add_location(): run_group.station_group.metadata.location = location # setting latitude as above line does not wind up in the run either" - print("Why don't the following values agree??") - print(f"station group {station_group.metadata.location.latitude}") - print(f"Run Group {run_group.station_group.metadata.location.latitude}") + logger.info("Why don't the following values agree??") + logger.info(f"station group {station_group.metadata.location.latitude}") + logger.info(f"Run Group {run_group.station_group.metadata.location.latitude}") m.close_mth5() - print("Reopen the file and check if update was done on close()") + logger.info("Reopen the file and check if update was done on close()") m.open_mth5("location_test.h5", mode="r") eureka = m.get_station("eureka") - print(f"station group {eureka.metadata.location.latitude}") + logger.info(f"station group {eureka.metadata.location.latitude}") run_001 = eureka.get_run("001") - print(f"Run Group {run_001.station_group.metadata.location.latitude}") + logger.info(f"Run Group {run_001.station_group.metadata.location.latitude}") m.close_mth5() return diff --git a/aurora/sandbox/io_helpers/emtf_band_setup.py b/aurora/sandbox/io_helpers/emtf_band_setup.py index 3a215d78..d583b2ca 100644 --- a/aurora/sandbox/io_helpers/emtf_band_setup.py +++ b/aurora/sandbox/io_helpers/emtf_band_setup.py @@ -82,11 +82,11 @@ def compute_band_edges(self, decimation_factors, num_samples_window): lower_edges = pd.Series(index=self.df.index, dtype="float64") upper_edges = pd.Series(index=self.df.index, dtype="float64") if not self.sample_rate: - print("cannot define frequencies of sample rate undefined") + logger.info("cannot define frequencies of sample rate undefined") raise Exception if len(decimation_factors) != self.num_decimation_levels: - print("Number of decimation_factors must equal number of decimation lvels") - print( + logger.info("Number of decimation_factors must equal number of decimation lvels") + logger.info( f"There are {len(decimation_factors)} decimation_factors but " f"{self.num_decimation_levels} decimation lvels" ) diff --git a/aurora/sandbox/io_helpers/fdsn_dataset.py b/aurora/sandbox/io_helpers/fdsn_dataset.py index 6d95d54d..f4dc0749 100644 --- a/aurora/sandbox/io_helpers/fdsn_dataset.py +++ b/aurora/sandbox/io_helpers/fdsn_dataset.py @@ -1,6 +1,7 @@ from aurora.sandbox.io_helpers.inventory_review import describe_inventory_stages from aurora.sandbox.io_helpers.inventory_review import scan_inventory_for_nonconformity from obspy.clients.fdsn import Client +from loguru import logger class FDSNDataset(object): @@ -70,9 +71,9 @@ def get_data_via_fdsn_client(self): return streams def describe(self): - print(f"station_id = {self.station}") - print(f"network_id = {self.network}") - print(f"channel_ids = {self.channel_codes}") + logger.info(f"station_id = {self.station}") + logger.info(f"network_id = {self.network}") + logger.info(f"channel_ids = {self.channel_codes}") @property def h5_filebase(self): diff --git a/aurora/sandbox/io_helpers/garys_matlab_zfiles/matlab_z_file_reader.py b/aurora/sandbox/io_helpers/garys_matlab_zfiles/matlab_z_file_reader.py index 87660ba2..fb92c0cf 100644 --- a/aurora/sandbox/io_helpers/garys_matlab_zfiles/matlab_z_file_reader.py +++ b/aurora/sandbox/io_helpers/garys_matlab_zfiles/matlab_z_file_reader.py @@ -19,6 +19,7 @@ ) from mt_metadata.timeseries.survey import Survey from mt_metadata.transfer_functions.core import TF +from loguru import logger TEST_PATH = get_test_path() @@ -145,7 +146,7 @@ def test_matlab_zfile_reader(case_id="IAK34ss", make_plot=False): for i in range(len(periods)): if np.isnan(cov_nn[:, :, i]).any(): nan_cov_nn.append(i) - print(f"NAN {i}") + logger(f"NAN {i}") if case_id == "synthetic": cov_nn[:, :, 28] = cov_nn[:, :, 27] @@ -223,4 +224,4 @@ def test_matlab_zfile_reader(case_id="IAK34ss", make_plot=False): rtol=1e-3, ).all() - print("success!") + logger("success!") diff --git a/aurora/sandbox/io_helpers/inventory_review.py b/aurora/sandbox/io_helpers/inventory_review.py index 05ce844a..d462273a 100644 --- a/aurora/sandbox/io_helpers/inventory_review.py +++ b/aurora/sandbox/io_helpers/inventory_review.py @@ -1,3 +1,6 @@ +from loguru import logger + + def describe_inventory_stages(inventory, assign_names=False, verbose=False): """ Scans inventory looking for stages. Has option to assign names to stages, @@ -24,18 +27,18 @@ def describe_inventory_stages(inventory, assign_names=False, verbose=False): f"{network.code}-{station.code}-{channel.code}" f" {len(stages)}-stage response" ) - print(info) + logger.info(info) for i, stage in enumerate(stages): if verbose: - print(f"stagename {stage.name}") + logger.info(f"stagename {stage.name}") if stage.name is None: if assign_names: new_names_were_assigned = True new_name = f"{station.code}_{channel.code}_{i}" stage.name = new_name if verbose: - print(f"ASSIGNING stage {stage}, name {stage.name}") + logger.info(f"ASSIGNING stage {stage}, name {stage.name}") if hasattr(stage, "symmetry"): pass # import matplotlib.pyplot as plt @@ -51,7 +54,7 @@ def describe_inventory_stages(inventory, assign_names=False, verbose=False): # plt.show() if new_names_were_assigned: inventory.networks = networks - print("Inventory Networks Reassigned") + logger.info("Inventory Networks Reassigned") return @@ -78,16 +81,16 @@ def scan_inventory_for_nonconformity(inventory, verbose=False): for station in network: channel_codes = [x.code[1:3] for x in station.channels] if verbose: - print(channel_codes) + logger.info(channel_codes) # Electric channel remap {Q2, Q3}-->{Q1, Q2}> if ("Q2" in channel_codes) & ("Q3" in channel_codes): if verbose: - print( + logger.info( "Detected a likely non-FDSN conformant convnetion " "unless there is a vertical electric dipole" ) - print("Fixing Electric channel codes") + logger.info("Fixing Electric channel codes") # run the loop twice so don't accidentally map Q3 to Q2 and Q2 to Q3 for channel in station.channels: if channel.code[1:3] == "Q2": @@ -96,7 +99,7 @@ def scan_inventory_for_nonconformity(inventory, verbose=False): if channel.code[1:3] == "Q3": channel._code = f"{channel.code[0]}Q2" # print("Applied unstable fix to electric channel names") - print("{Q2, Q3} --> {Q1, Q2}") + logger.info("{Q2, Q3} --> {Q1, Q2}") # Magnetic channle remap {T1,T2,T3}-->{F1, F2, F3} cond1 = "T1" in channel_codes @@ -104,14 +107,14 @@ def scan_inventory_for_nonconformity(inventory, verbose=False): cond3 = "T3" in channel_codes if cond1 or cond2 or cond3: if verbose: - print("Detected a likely non-FDSN conformant convention ") + logger.info("Detected a likely non-FDSN conformant convention ") # unless there is Tidal data (channel code T) - print("Fixing Magnetic channel codes") + logger.info("Fixing Magnetic channel codes") for channel in station.channels: if channel.code[1] == "T": channel._code = f"{channel.code[0]}F{channel.code[2]}" # print("Applied unstable fix to magnetic channel names") - print("{T1,T2,T3} --> {F1, F2, F3}") + logger.info("{T1,T2,T3} --> {F1, F2, F3}") # Tesla to nanoTesla for channel in station: @@ -120,7 +123,7 @@ def scan_inventory_for_nonconformity(inventory, verbose=False): if verbose: msg = f"{channel.code} {stage.stage_sequence_number}" msg = f"{msg} {stage.input_units}" - print(msg) + logger.info(msg) if stage.input_units == "T": stage.input_units = "nT" stage.stage_gain *= 1e-9 diff --git a/aurora/sandbox/io_helpers/make_mth5_helpers.py b/aurora/sandbox/io_helpers/make_mth5_helpers.py index f8909936..5ae66794 100644 --- a/aurora/sandbox/io_helpers/make_mth5_helpers.py +++ b/aurora/sandbox/io_helpers/make_mth5_helpers.py @@ -10,6 +10,7 @@ from mt_metadata.timeseries.stationxml import XMLInventoryMTExperiment from mth5.utils.helpers import initialize_mth5 from mth5.timeseries import RunTS +from loguru import logger def create_from_server_multistation( @@ -45,7 +46,7 @@ def create_from_server_multistation( # return None except Exception as e: # FDSNException: - print(f"Exception {e}") + logger.error(f"Exception {e}") # raise ValueError("NCEDC is Down, cannot build data") return translator = XMLInventoryMTExperiment() @@ -69,7 +70,7 @@ def create_from_server_multistation( streams = fdsn_dataset.get_data_via_fdsn_client() streams = make_channel_labels_fdsn_compliant(streams) if force_align_streams: - print("WARNING: ALIGN STREAMS NOT ROBUSTLY TESTED") + logger.warning("WARNING: ALIGN STREAMS NOT ROBUSTLY TESTED") streams = align_streams(streams, fdsn_dataset.starttime) streams = trim_streams_to_acquisition_run(streams) diff --git a/aurora/sandbox/mth5_channel_summary_helpers.py b/aurora/sandbox/mth5_channel_summary_helpers.py index 69adbd9d..2ba113b0 100644 --- a/aurora/sandbox/mth5_channel_summary_helpers.py +++ b/aurora/sandbox/mth5_channel_summary_helpers.py @@ -1,4 +1,5 @@ import pandas as pd +from loguru import logger def channel_summary_to_make_mth5( @@ -37,13 +38,13 @@ def channel_summary_to_make_mth5( """ if not network: - print("Network not specified") - print("this will cause IRIS data pull to fail") + logger.warning("Network not specified") + logger.warning("this will cause IRIS data pull to fail") raise ValueError ch_map = {"ex": "LQN", "ey": "LQE", "hx": "LFN", "hy": "LFE", "hz": "LFZ"} if channel_nomenclature is not None: - print("Need to add handling for channel nomenclature") + logger.info("Need to add handling for channel nomenclature") # either replace the keys in ch_map, or create a new ch_map num_rows = len(df) @@ -57,7 +58,7 @@ def channel_summary_to_make_mth5( i = 0 for group_id, group_df in df.groupby(["station", "run"]): if verbose: - print( + logger.info( f"{group_id}, from " f"{group_df.start.unique()[0]}, to " f"{group_df.end.unique()[0]}" diff --git a/aurora/sandbox/mth5_helpers.py b/aurora/sandbox/mth5_helpers.py index 185f6899..b56007b0 100644 --- a/aurora/sandbox/mth5_helpers.py +++ b/aurora/sandbox/mth5_helpers.py @@ -14,6 +14,7 @@ from mt_metadata.timeseries.stationxml import XMLInventoryMTExperiment from mth5.clients import FDSN from mth5.utils.helpers import initialize_mth5 +from loguru import logger def enrich_channel_summary(mth5_object, df, keyword): @@ -139,7 +140,7 @@ def get_time_period_bounds(ch): ch_start, ch_end = get_time_period_bounds(channel) request_list.append([network_id, station_id, '', channel, ch_start, ch_end]) - print(f"request_list: {request_list}") + logger.info(f"request_list: {request_list}") request_df = pd.DataFrame(request_list, columns=fdsn_object.request_columns) # workaround for having a channel with missing run @@ -189,5 +190,5 @@ def get_channel_summary(h5_path): mth5_obj.channel_summary.summarize() channel_summary_df = mth5_obj.channel_summary.to_dataframe() mth5_obj.close_mth5() - print(channel_summary_df) + logger.info(channel_summary_df) return channel_summary_df diff --git a/aurora/sandbox/obspy_helpers.py b/aurora/sandbox/obspy_helpers.py index 6911b0e3..b1cb5088 100644 --- a/aurora/sandbox/obspy_helpers.py +++ b/aurora/sandbox/obspy_helpers.py @@ -1,6 +1,7 @@ import datetime from obspy import UTCDateTime +from loguru import logger def trim_streams_to_acquisition_run(streams): @@ -40,14 +41,14 @@ def align_streams(streams, clock_start): """ for stream in streams: - print( + logger.info( f"{stream.stats['station']} {stream.stats['channel']} N=" f"{len(stream.data)} startime {stream.stats.starttime}" ) dt_seconds = stream.stats.starttime - clock_start - print(f"stream offset seconds {dt_seconds}") + logger.info(f"stream offset seconds {dt_seconds}") dt = datetime.timedelta(seconds=dt_seconds) - print(f"stream timedelta {dt}") + logger.info(f"stream timedelta {dt}") stream.stats.starttime = stream.stats.starttime - dt return streams diff --git a/aurora/sandbox/triage_metadata.py b/aurora/sandbox/triage_metadata.py index 2761e19b..f976acae 100644 --- a/aurora/sandbox/triage_metadata.py +++ b/aurora/sandbox/triage_metadata.py @@ -1,4 +1,5 @@ from aurora.time_series.filters.filter_helpers import MT2SI_ELECTRIC_FIELD_FILTER +from loguru import logger def triage_mt_units_electric_field(experiment): @@ -15,7 +16,7 @@ def triage_mt_units_electric_field(experiment): ------- """ - print( + logger.info( f"Add MT2SI_ELECTRIC_FIELD_FILTER to electric channels for parkfield here" f" {MT2SI_ELECTRIC_FIELD_FILTER} " ) @@ -50,10 +51,10 @@ def triage_missing_coil_hollister(experiment): runs = station.runs for run in runs: channels = run.channels - print(channels) + logger.info(channels) for channel in channels: - print(channel.id) + logger.info(channel.id) # station = stations[i_station] runs = station.runs[0] - print("help") + logger.info("help") diff --git a/aurora/test_utils/parkfield/calibration_helpers.py b/aurora/test_utils/parkfield/calibration_helpers.py index 0d9b6850..b78a4d7b 100644 --- a/aurora/test_utils/parkfield/calibration_helpers.py +++ b/aurora/test_utils/parkfield/calibration_helpers.py @@ -3,6 +3,7 @@ from pathlib import Path from scipy.signal import medfilt +from loguru import logger plt.ion() @@ -111,10 +112,10 @@ def parkfield_sanity_check( frequencies = fft_obj.frequency.data[1:] # drop DC, add flag for dropping DC figures_path.mkdir(parents=True, exist_ok=True) channel_keys = list(fft_obj.data_vars.keys()) - print(f"channel_keys: {channel_keys}") + logger.info(f"channel_keys: {channel_keys}") for key in channel_keys: - print(f"calibrating channel {key}") + logger.info(f"calibrating channel {key}") if key[0].lower() == "h": bf4 = True spectral_units = "nT/sqrt(Hz)" @@ -129,7 +130,7 @@ def parkfield_sanity_check( ) if channel.channel_response_filter.units_in.lower() in ["t", "tesla"]: - print("WARNING: Expecting nT but got T") + logger.warning("WARNING: Expecting nT but got T") # Frequency response table response bf4_resp = None @@ -149,8 +150,8 @@ def parkfield_sanity_check( if bf4_resp is not None: response_ratio = np.abs(pz_calibration_response) / np.abs(bf4_resp) if np.median(response_ratio) > 1.1: - print("ERROR in response calculation") - print("See issue #156") + logger.error("ERROR in response calculation") + logger.error("See issue #156") raise Exception # create smoothed amplitude spectra n_smooth = 131 # use 1 for no smoothing @@ -171,9 +172,9 @@ def parkfield_sanity_check( schumann_amplitude_pz = np.median(smooth_calibrated_data_pz[schumann_cond]) schumann_ratio = schumann_amplitude_pz / schumann_amplitude_fap if (schumann_ratio > 10) | (schumann_ratio < 0.1): - print("ERROR in response calculation") - print("See issue #156") - print("Amplitude of field around Schumann band incorrect") + logger.error("ERROR in response calculation") + logger.error("See issue #156") + logger.error("Amplitude of field around Schumann band incorrect") raise Exception # Do Plotting (can factor this out) diff --git a/aurora/test_utils/parkfield/make_parkfield_mth5.py b/aurora/test_utils/parkfield/make_parkfield_mth5.py index 9cce4d1c..5ccbb261 100644 --- a/aurora/test_utils/parkfield/make_parkfield_mth5.py +++ b/aurora/test_utils/parkfield/make_parkfield_mth5.py @@ -7,6 +7,8 @@ from mth5.helpers import close_open_files from aurora.sandbox.io_helpers.make_mth5_helpers import create_from_server_multistation from aurora.test_utils.parkfield.path_helpers import PARKFIELD_PATHS +from loguru import logger + DATA_SOURCES = ["NCEDC", "https://service.ncedc.org/"] DATASET_ID = "pkd_sao_test_00" @@ -23,10 +25,10 @@ def select_data_source(): Client(base_url=data_source, force_redirect=True) ok = True except: - print(f"Data source {data_source} not initializing") + logger.warning(f"Data source {data_source} not initializing") if not ok: - print("No data sources for Parkfield / Hollister initializing") - print("NCEDC probably down") + logger.error("No data sources for Parkfield / Hollister initializing") + logger.error("NCEDC probably down") raise ValueError else: return data_source @@ -44,7 +46,7 @@ def make_pkdsao_mth5(fdsn_dataset): ) for station in fdsn_dataset.station.split(","): - print(station) + logger.info(station) read_back_data(h5_path, station, "001") return h5_path @@ -65,8 +67,8 @@ def ensure_h5_exists(): h5_path = make_pkdsao_mth5(FDSN_DATASET) return h5_path except Exception as e: - print(f"Encountered {e} Exception - make_pkdsao_mth5 failed") - print("Check data server connection") + logger.error(f"Encountered {e} Exception - make_pkdsao_mth5 failed") + logger.error("Check data server connection") raise IOError diff --git a/aurora/test_utils/synthetic/make_processing_configs.py b/aurora/test_utils/synthetic/make_processing_configs.py index 931af2e1..876b7eaf 100644 --- a/aurora/test_utils/synthetic/make_processing_configs.py +++ b/aurora/test_utils/synthetic/make_processing_configs.py @@ -2,6 +2,7 @@ from aurora.config import BANDS_256_26_FILE from aurora.config.config_creator import ConfigCreator from aurora.test_utils.synthetic.paths import SyntheticTestPaths +from loguru import logger synthetic_test_paths = SyntheticTestPaths() CONFIG_PATH = synthetic_test_paths.config_path @@ -137,7 +138,7 @@ def test_to_from_json(): # Specify path to mth5 data_path = MTH5_PATH.joinpath("test1.h5") if not data_path.exists(): - print("You need to run make_mth5_from_asc.py") + logger.error("You need to run make_mth5_from_asc.py") raise Exception mth5_paths = [ data_path, @@ -152,7 +153,7 @@ def test_to_from_json(): p = Processing() json_fn = CONFIG_PATH.joinpath(processing_config.json_fn()) p.from_json(json_fn) - print("Assert equal needed here") + logger.info("Assert equal needed here") return diff --git a/aurora/test_utils/synthetic/rms_helpers.py b/aurora/test_utils/synthetic/rms_helpers.py index 131c0b94..75e35114 100644 --- a/aurora/test_utils/synthetic/rms_helpers.py +++ b/aurora/test_utils/synthetic/rms_helpers.py @@ -1,4 +1,5 @@ import numpy as np +from loguru import logger def compute_rms(rho, phi, model_rho_a=100.0, model_phi=45.0, verbose=False): @@ -28,8 +29,8 @@ def compute_rms(rho, phi, model_rho_a=100.0, model_phi=45.0, verbose=False): rho_rms = np.sqrt(np.mean((rho - model_rho_a) ** 2)) phi_rms = np.sqrt(np.mean((phi - model_phi) ** 2)) if verbose: - print(f"rho_rms = {rho_rms}") - print(f"phi_rms = {phi_rms}") + logger.info(f"rho_rms = {rho_rms}") + logger.info(f"phi_rms = {phi_rms}") return rho_rms, phi_rms @@ -78,24 +79,24 @@ def assert_rms_misfit_ok( """ expected_rms_rho = expected_rms_misfit["rho"][xy_or_yx] expected_rms_phi = expected_rms_misfit["phi"][xy_or_yx] - print(f"expected_rms_rho_{xy_or_yx} {expected_rms_rho}") - print(f"expected_rms_phi_{xy_or_yx} {expected_rms_phi}") + logger.info(f"expected_rms_rho_{xy_or_yx} {expected_rms_rho}") + logger.info(f"expected_rms_phi_{xy_or_yx} {expected_rms_phi}") if not np.isclose(rho_rms_aurora - expected_rms_rho, 0, atol=rho_tol): - print("==== AURORA ====\n") - print(rho_rms_aurora) - print("==== EXPECTED ====\n") - print(expected_rms_rho) - print("==== DIFFERENCE ====\n") - print(rho_rms_aurora - expected_rms_rho) + logger.error("==== AURORA ====\n") + logger.error(rho_rms_aurora) + logger.error("==== EXPECTED ====\n") + logger.error(expected_rms_rho) + logger.error("==== DIFFERENCE ====\n") + logger.error(rho_rms_aurora - expected_rms_rho) raise AssertionError("Expected misfit for resistivity is not correct") if not np.isclose(phi_rms_aurora - expected_rms_phi, 0, atol=rho_tol): - print("==== AURORA ====\n") - print(phi_rms_aurora) - print("==== EXPECTED ====\n") - print(expected_rms_phi) - print("==== DIFFERENCE ====\n") - print(phi_rms_aurora - expected_rms_phi) + logger.error("==== AURORA ====\n") + logger.error(phi_rms_aurora) + logger.error("==== EXPECTED ====\n") + logger.error(expected_rms_phi) + logger.error("==== DIFFERENCE ====\n") + logger.error(phi_rms_aurora - expected_rms_phi) raise AssertionError("Expected misfit for phase is not correct") return diff --git a/aurora/time_series/apodization_window.py b/aurora/time_series/apodization_window.py index 8e7b7584..76eeb99b 100644 --- a/aurora/time_series/apodization_window.py +++ b/aurora/time_series/apodization_window.py @@ -52,6 +52,7 @@ import numpy as np import scipy.signal as ssig +from loguru import logger class ApodizationWindow(object): @@ -106,6 +107,7 @@ def __init__(self, **kwargs): self._S1 = None self._S2 = None self._apodization_factor = None + self.logger = logger if self.taper.size == 0: self.make() @@ -225,8 +227,8 @@ def test_linear_spectral_density_factor(self): ) lsd_factor2 = 1.0 / np.sqrt(self.S2) if not np.isclose(lsd_factor1, lsd_factor2): - print(f"factor1 {lsd_factor1} vs factor2 {lsd_factor2}") - print("Incompatible spectral density factors") + self.logger.error(f"factor1 {lsd_factor1} vs factor2 {lsd_factor2}") + self.logger.error("Incompatible spectral density factors") raise Exception @property diff --git a/aurora/time_series/filters/filter_helpers.py b/aurora/time_series/filters/filter_helpers.py index 08c879bb..bd5d5fa2 100644 --- a/aurora/time_series/filters/filter_helpers.py +++ b/aurora/time_series/filters/filter_helpers.py @@ -2,6 +2,7 @@ from mt_metadata.timeseries.filters.frequency_response_table_filter import ( FrequencyResponseTableFilter, ) +from loguru import logger def make_coefficient_filter(gain=1.0, name="generic coefficient filter", **kwargs): @@ -53,7 +54,7 @@ def make_frequency_response_table_filter(case="bf4"): fap_filter.name = "bf4" return fap_filter else: - print(f"case {case} not supported for FAP Table") + logger.error(f"case {case} not supported for FAP Table") raise Exception diff --git a/aurora/time_series/frequency_band_helpers.py b/aurora/time_series/frequency_band_helpers.py index 9e61ea03..db730699 100644 --- a/aurora/time_series/frequency_band_helpers.py +++ b/aurora/time_series/frequency_band_helpers.py @@ -4,6 +4,8 @@ from mt_metadata.transfer_functions.processing.aurora.band import ( FrequencyBands, ) +from loguru import logger + def extract_band(frequency_band, fft_obj, epsilon=1e-7): @@ -75,7 +77,7 @@ def frequency_band_edges( f_lower_bound and f_upper_bound """ if (num_bands is None) & (num_bands_per_decade is None): - print("Specify either number_of_bands or numnerbands_per_decade") + logger.error("Specify either number_of_bands or numnerbands_per_decade") raise Exception if num_bands is None: @@ -88,12 +90,12 @@ def frequency_band_edges( base = np.exp((1.0 / num_bands) * np.log(f_upper_bound / f_lower_bound)) # log - NOT log10! - print(f"base = {base}") + logger.info(f"base = {base}") bases = base * np.ones(num_bands + 1) - print(f"bases = {bases}") + logger.info(f"bases = {bases}") exponents = np.linspace(0, num_bands, num_bands + 1) - print(f"exponents = {exponents}") + logger.info(f"exponents = {exponents}") fence_posts = f_lower_bound * (bases**exponents) - print(f"fence posts = {fence_posts}") + logger.info(f"fence posts = {fence_posts}") return fence_posts diff --git a/aurora/time_series/time_axis_helpers.py b/aurora/time_series/time_axis_helpers.py index ce9ba1ea..dd1a229e 100644 --- a/aurora/time_series/time_axis_helpers.py +++ b/aurora/time_series/time_axis_helpers.py @@ -1,6 +1,7 @@ import numpy as np import pandas as pd import time +from loguru import logger def fast_arange(t0, n_samples, sample_rate): @@ -79,20 +80,20 @@ def test_generate_time_axis(t0, n_samples, sample_rate): tt = time.time() time_index_1 = slow_comprehension(t0, n_samples, sample_rate) processing_time_1 = tt - time.time() - print(f"processing_time_1 = {processing_time_1}") + logger.info(f"processing_time_1 = {processing_time_1}") # FAST tt = time.time() time_index_2 = fast_arange(t0, n_samples, sample_rate) processing_time_2 = tt - time.time() - print(f"processing_time_2 {processing_time_2}") - print(f"ratio of processing times {processing_time_1/processing_time_2}") + logger.info(f"processing_time_2 {processing_time_2}") + logger.info(f"ratio of processing times {processing_time_1/processing_time_2}") if (np.abs(time_index_2 - time_index_1)).sum() == 0: pass else: - print("Time axes are not equal") + logger.info("Time axes are not equal") return time_index_1 @@ -105,7 +106,7 @@ def do_some_tests(): sample_rate = 50.0 # Hz t0 = pd.Timestamp(1977, 3, 2, 6, 1, 44) time_axis = test_generate_time_axis(t0, n_samples, sample_rate) - print(f"{time_axis[0]} ...{time_axis[-1]}") + logger.info(f"{time_axis[0]} ...{time_axis[-1]}") sample_rate = 3.0 # Hz time_axis = test_generate_time_axis(t0, n_samples, sample_rate) diff --git a/aurora/time_series/window_helpers.py b/aurora/time_series/window_helpers.py index c344ddca..213a989b 100644 --- a/aurora/time_series/window_helpers.py +++ b/aurora/time_series/window_helpers.py @@ -8,6 +8,7 @@ from numpy.lib.stride_tricks import as_strided from numba import jit import time +from loguru import logger # Window-to-timeseries relationshp @@ -30,7 +31,7 @@ def available_number_of_windows_in_array(n_samples_array, n_samples_window, n_ad """ stridable_samples = n_samples_array - n_samples_window if stridable_samples < 0: - print("CRITICAL Window is longer than the time series") + logger.critical("CRITICAL Window is longer than the time series") return 0 available_number_of_strides = int(np.floor(stridable_samples / n_advance)) available_number_of_strides += 1 @@ -155,7 +156,7 @@ def striding_window(data, num_samples_window, num_samples_advance, num_windows=N # print("output_shape", output_shape) strides_shape = (num_samples_advance * bytes_per_element, bytes_per_element) # strides_shape = None - print("strides_shape", strides_shape) + logger.info("strides_shape", strides_shape) strided_window = as_strided( data, shape=output_shape, strides=strides_shape ) # , writeable=False) @@ -204,7 +205,7 @@ def check_all_sliding_window_functions_are_equivalent(): results = {} for function_label, function in SLIDING_WINDOW_FUNCTIONS.items(): results[function_label] = function(data, L, A, n_win) - print(results[function_label]) + logger.info(results[function_label]) for i, function_label in enumerate(results.keys()): if i == 0: @@ -212,7 +213,7 @@ def check_all_sliding_window_functions_are_equivalent(): else: difference = reference_result - results[function_label] if np.sum(np.abs(difference)) == 0: - print(f"OK {i}") + logger.info(f"OK {i}") # put an assert here instead of OK @@ -223,40 +224,40 @@ def do_some_tests(): n_advance = n_samples_window - n_overlap sw = striding_window(np.arange(15), 3, 2, num_windows=4) - print(sw) + logger.info(sw) t0 = time.time() strided_window = striding_window( 1.0 * np.arange(N), n_samples_window, n_advance ) # , num_windows=4) strided_window += 1 - print("stride {}".format(time.time() - t0)) + logger.info("stride {}".format(time.time() - t0)) - print(strided_window) + logger.info(strided_window) t0 = time.time() slid_window = sliding_window_crude( 1.0 * np.arange(N), n_samples_window, n_advance ) # , num_windows=4) slid_window += 1 - print("crude {}".format(time.time() - t0)) + logger.info("crude {}".format(time.time() - t0)) - print(slid_window) + logger.info(slid_window) num_windows = available_number_of_windows_in_array(N, n_samples_window, n_advance) - print(num_windows) + logger.info(num_windows) t0 = time.time() numba_slid_window = sliding_window_numba( 1.0 * np.arange(N), n_samples_window, n_advance, num_windows ) # , num_windows=4) numba_slid_window += 1 - print("numba {}".format(time.time() - t0)) + logger.info("numba {}".format(time.time() - t0)) t0 = time.time() numba_slid_window = sliding_window_numba( 1.0 * np.arange(N), n_samples_window, n_advance, num_windows ) # , num_windows=4) - print("numba {}".format(time.time() - t0)) + logger.info("numba {}".format(time.time() - t0)) def test_apply_taper(): diff --git a/aurora/time_series/windowed_time_series.py b/aurora/time_series/windowed_time_series.py index 86be7129..c350b908 100644 --- a/aurora/time_series/windowed_time_series.py +++ b/aurora/time_series/windowed_time_series.py @@ -2,6 +2,7 @@ import scipy.signal as ssig from scipy.interpolate import interp1d +from loguru import logger from aurora.time_series.decorators import can_use_xr_dataarray @@ -25,7 +26,7 @@ def validate_coordinate_ordering_time_domain(dataset): if cond1 & cond2: return True else: - print("Uncertain that xarray coordinates are correctly ordered") + logger.error("Uncertain that xarray coordinates are correctly ordered") raise Exception @@ -45,7 +46,7 @@ def get_time_coordinate_axis(dataset): coordinate_labels = list(dataset.coords.keys()) if len(coordinate_labels) != 2: - print("Warning - Expected two distinct coordinates") + logger.warning("Warning - Expected two distinct coordinates") # raise Exception return coordinate_labels.index("time") @@ -137,9 +138,9 @@ def detrend(data=None, detrend_axis=None, detrend_type=None, inplace=True): f"{data[channel].coords.indexes['time'][-1].isoformat()}." ) if ensembles.size == 0: - print(msg + " NO DATA") + logger.error(msg + " NO DATA") else: - print(msg + "UNKOWN REASON:" + error) + logger.error(msg + "UNKOWN REASON:" + error) if inplace: if len(nanless_data.time) < len(data[channel].time): diff --git a/aurora/time_series/windowing_scheme.py b/aurora/time_series/windowing_scheme.py index 43c4101c..a441fd28 100644 --- a/aurora/time_series/windowing_scheme.py +++ b/aurora/time_series/windowing_scheme.py @@ -72,6 +72,7 @@ from mt_metadata.transfer_functions.processing.aurora.decimation_level import ( get_fft_harmonics, ) +from loguru import logger class WindowingScheme(ApodizationWindow): @@ -95,6 +96,7 @@ def __init__(self, **kwargs): self.striding_function_label = kwargs.get("striding_function_label", "crude") self._left_hand_window_edge_indices = None self.sample_rate = kwargs.get("sample_rate", None) + self.logger = logger def clone(cls): return copy.deepcopy(cls) @@ -187,7 +189,7 @@ def apply_sliding_window( windowed_obj = ds else: - print(f"Unexpected Data type {type(data)}") + self.logger.error(f"Unexpected Data type {type(data)}") raise Exception return windowed_obj @@ -250,7 +252,7 @@ def cast_windowed_data_to_xarray(self, windowed_array, time_vector, dt=None): """ # Get within-window_time_axis coordinate if dt is None: - print("Warning dt not defined, using dt=1") + self.logger.warning("Warning dt not defined, using dt=1") dt = 1.0 within_window_time_axis = dt * np.arange(self.num_samples_window) @@ -342,7 +344,7 @@ def apply_fft(self, data, spectral_density_correction=True, detrend_type="linear return spectral_ds else: - print(f"fft of {type(data)} not yet supported") + self.logger.error(f"fft of {type(data)} not yet supported") raise Exception return spectral_ds diff --git a/aurora/time_series/xarray_helpers.py b/aurora/time_series/xarray_helpers.py index 4c6caac3..c90c33cf 100644 --- a/aurora/time_series/xarray_helpers.py +++ b/aurora/time_series/xarray_helpers.py @@ -3,6 +3,7 @@ """ import xarray as xr +from loguru import logger def handle_nan(X, Y, RR, drop_dim=""): @@ -59,11 +60,11 @@ def handle_nan(X, Y, RR, drop_dim=""): try: merged_xr = merged_xr.merge(RR, join="exact") except ValueError: - print("Coordinate alignment mismatch -- see aurora issue #228 ") + logger.error("Coordinate alignment mismatch -- see aurora issue #228 ") matches = X.time.values == RR.time.values - print(f"{matches.sum()}/{len(matches)} timestamps match exactly") + logger.error(f"{matches.sum()}/{len(matches)} timestamps match exactly") deltas = X.time.values - RR.time.values - print(f"Maximum offset is {deltas.__abs__().max()}ns") + logger.error(f"Maximum offset is {deltas.__abs__().max()}ns") # print(f"X.time.[0]: {X.time[0].values}") # print(f"RR.time.[0]: {RR.time[0].values}") merged_xr = merged_xr.merge(RR, join="left") diff --git a/aurora/transfer_function/TTFZ.py b/aurora/transfer_function/TTFZ.py index b7ae68d0..93cc848c 100644 --- a/aurora/transfer_function/TTFZ.py +++ b/aurora/transfer_function/TTFZ.py @@ -4,6 +4,7 @@ """ import numpy as np import xarray as xr +from loguru import logger from aurora.transfer_function.base import TransferFunction @@ -23,6 +24,7 @@ class TTFZ(TransferFunction): def __init__(self, *args, **kwargs): super(TTFZ, self).__init__(*args, **kwargs) + self.logger = logger def standard_error(self): """ @@ -96,7 +98,7 @@ def apparent_resistivity(self, channel_nomenclature, units="SI"): rxy_se = 2 * np.sqrt(self.periods * rxy / 5) * Zxy_se ryx_se = 2 * np.sqrt(self.periods * ryx / 5) * Zyx_se else: - print("ERROR: only SI and MT units supported") + self.logger.error("ERROR: only SI and MT units supported") raise Exception self.rho[:, :] = np.vstack((rxy, ryx)).T diff --git a/aurora/transfer_function/base.py b/aurora/transfer_function/base.py index 661cd0f9..cd79f8cf 100644 --- a/aurora/transfer_function/base.py +++ b/aurora/transfer_function/base.py @@ -7,6 +7,7 @@ import xarray as xr from mt_metadata.base import Base +from loguru import logger class TransferFunction(Base): @@ -73,10 +74,12 @@ def __init__(self, decimation_level_id, frequency_bands, **kwargs): if self.num_bands is not None: self._initialize_arrays() + self.logger = logger + @property def emtf_tf_header(self): if self.processing_config is None: - print("No header is available without a processing config") + self.logger.info("No header is available without a processing config") self._emtf_tf_header = None else: if self._emtf_tf_header is None: @@ -132,7 +135,7 @@ def _initialize_arrays(self): """ if self.tf_header is None: - print("header needed to allocate transfer function arrays") + self.logger.error("header needed to allocate transfer function arrays") raise Exception # diff --git a/aurora/transfer_function/emtf_z_file_helpers.py b/aurora/transfer_function/emtf_z_file_helpers.py index 868ddcb7..1bdba7a6 100644 --- a/aurora/transfer_function/emtf_z_file_helpers.py +++ b/aurora/transfer_function/emtf_z_file_helpers.py @@ -4,6 +4,7 @@ They extract info needed to setup emtf_z files. """ import numpy as np +from loguru import logger EMTF_CHANNEL_ORDER = ["hx", "hy", "hz", "ex", "ey"] @@ -113,7 +114,7 @@ def clip_bands_from_z_file(z_path, n_bands_clip, output_z_path=None, n_sensors=5 n_lines_per_period = 13 elif n_sensors == 4: n_lines_per_period = 11 - print("WARNING n_sensors==4 NOT TESTED") + logger.info("WARNING n_sensors==4 NOT TESTED") f = open(z_path, "r") lines = f.readlines() diff --git a/aurora/transfer_function/kernel_dataset.py b/aurora/transfer_function/kernel_dataset.py index 3ffc2b88..b903fd92 100644 --- a/aurora/transfer_function/kernel_dataset.py +++ b/aurora/transfer_function/kernel_dataset.py @@ -125,6 +125,7 @@ def __init__(self, **kwargs): "duration", ] self.survey_metadata = {} + self.logger = logger def clone(self): return copy.deepcopy(self) @@ -167,8 +168,8 @@ def from_run_summary(self, run_summary, local_station_id, remote_station_id=None self.restrict_run_intervals_to_simultaneous() # ADD A CHECK HERE df is non-empty if len(self.df) == 0: - print("No Overlap between local and remote station data streams") - print("Remote reference processing not a valid option") + self.logger.info("No Overlap between local and remote station data streams") + self.logger.info("Remote reference processing not a valid option") else: self._add_duration_column() self.df["fc"] = False @@ -179,7 +180,7 @@ def mini_summary(self): @property def print_mini_summary(self): - print(self.mini_summary) + self.logger.info(self.mini_summary) @property def local_survey_id(self): @@ -195,7 +196,7 @@ def local_survey_metadata(self): except KeyError: msg = f"Unexpected key {self.local_survey_id} not found in survey_metadata" msg += f"{msg} WARNING -- Maybe old MTH5 -- trying to use key '0'" - print(msg) + self.logger.warning(msg) return self.survey_metadata["0"] def _add_duration_column(self): @@ -340,7 +341,7 @@ def num_sample_rates(self): def sample_rate(self): if self.num_sample_rates != 1: msg = "Aurora does not yet process data from mixed sample rates" - print(f"{msg}") + self.logger.error(f"{msg}") raise NotImplementedError(msg) sample_rate = self.df.sample_rate.unique()[0] return sample_rate @@ -376,7 +377,7 @@ def initialize_dataframe_for_processing(self, mth5_objs): if row.fc: msg = f"row {row} already has fcs prescribed by processing confg " msg += "-- skipping time series initialzation" - print(msg) + self.logger.info(msg) # continue # the line below is not lazy, See Note #2 run_ts = run_obj.to_runts(start=row.start, end=row.end) diff --git a/aurora/transfer_function/plot/comparison_plots.py b/aurora/transfer_function/plot/comparison_plots.py index cd101b91..03e618eb 100644 --- a/aurora/transfer_function/plot/comparison_plots.py +++ b/aurora/transfer_function/plot/comparison_plots.py @@ -3,6 +3,7 @@ from aurora.sandbox.io_helpers.zfile_murphy import read_z_file from aurora.transfer_function.plot.rho_phi_helpers import plot_phi from aurora.transfer_function.plot.rho_phi_helpers import plot_rho +from loguru import logger def compare_two_z_files( @@ -49,7 +50,7 @@ def compare_two_z_files( """ zfile1 = read_z_file(z_path1, angle=angle1) zfile2 = read_z_file(z_path2, angle=angle2) - print(f"scale_factor1: {scale_factor1}") + logger.info(f"scale_factor1: {scale_factor1}") fig, axs = plt.subplots(nrows=2, dpi=300, sharex=True) # figsize=(8, 6.), markersize = kwargs.get("markersize", 3) # Make LaTeX symbol strings diff --git a/aurora/transfer_function/regression/TRME_RR.py b/aurora/transfer_function/regression/TRME_RR.py index 58b2cada..426d2730 100644 --- a/aurora/transfer_function/regression/TRME_RR.py +++ b/aurora/transfer_function/regression/TRME_RR.py @@ -10,6 +10,7 @@ """ import numpy as np import xarray as xr +from loguru import logger from aurora.transfer_function.regression.m_estimator import MEstimator @@ -30,13 +31,15 @@ def __init__(self, **kwargs): self.check_for_enough_data_for_rr_estimate() self.check_reference_data_shape() + self.logger = logger + def check_for_nan(self): cond1 = np.isnan(self.X).any() cond2 = np.isnan(self.Y).any() cond3 = np.isnan(self.Z).any() nans_present = cond1 or cond2 or cond3 if nans_present: - print("Missing data not allowed for TRME_RR class") + self.logger.error("Missing data not allowed for TRME_RR class") raise Exception def check_for_enough_data_for_rr_estimate(self): @@ -44,12 +47,12 @@ def check_for_enough_data_for_rr_estimate(self): error_msg = "not enough data for RR estimate:" error_msg = f"{error_msg} n_channels_in = {self.n_channels_in}" error_msg = f"{error_msg} N_data = {self.n_data}" - print(f"{error_msg}") + self.logger.error(f"{error_msg}") raise Exception def check_reference_data_shape(self): if self.Z.shape != self.X.shape: - print("sizes of local and remote do not agree in RR estimation routine") + self.logger.error("sizes of local and remote do not agree in RR estimation routine") raise Exception def update_y_hat(self): diff --git a/aurora/transfer_function/regression/base.py b/aurora/transfer_function/regression/base.py index 9de2fe52..8edd8460 100644 --- a/aurora/transfer_function/regression/base.py +++ b/aurora/transfer_function/regression/base.py @@ -10,6 +10,7 @@ import numpy as np import xarray as xr from aurora.transfer_function.regression.iter_control import IterControl +from loguru import logger class RegressionEstimator(object): @@ -91,6 +92,7 @@ def __init__(self, **kwargs): ---------- kwargs """ + self.logger = logger self._X = kwargs.get("X", None) self._Y = kwargs.get("Y", None) self.b = None @@ -168,7 +170,7 @@ def solve_underdetermined(self): S_inv = np.diag(1.0 / s) self.b = (V.T @ S_inv @ U.T) * self.Y if self.iter_control.return_covariance: - print("Warning covariances are not xarray, may break things downstream") + self.logger.warning("Warning covariances are not xarray, may break things downstream") self.cov_nn = np.zeros((self.n_channels_out, self.n_channels_out)) self.cov_ss_inv = np.zeros((self.n_channels_in, self.n_channels_in)) @@ -176,7 +178,7 @@ def solve_underdetermined(self): def check_number_of_observations_xy_consistent(self): if self.Y.shape[0] != self.X.shape[0]: - print( + self.logger.info( f"Design matrix (X) has {self.X.shape[0]} rows but data (Y) " f"has {self.Y.shape[0]}" ) @@ -241,7 +243,7 @@ def qr_decomposition(self, X=None, sanity_check=False): elif self.qr_input == "Z": X = self.Z else: - print("Matrix to perform QR decompostion not specified") + self.logger.error("Matrix to perform QR decompostion not specified") raise Exception Q, R = np.linalg.qr(X) @@ -251,7 +253,7 @@ def qr_decomposition(self, X=None, sanity_check=False): if np.isclose(np.matmul(Q, R) - X, 0).all(): pass else: - print("Failed QR decompostion sanity check") + self.logger.error("Failed QR decompostion sanity check") raise Exception return Q, R @@ -324,7 +326,7 @@ def estimate_ols(self, mode="solve"): elif mode.lower() == "solve": b = np.linalg.solve(XHX, XHY) else: - print(f"mode {mode} not recognized") + self.logger.error(f"mode {mode} not recognized") raise Exception self.b = b return b diff --git a/aurora/transfer_function/regression/m_estimator.py b/aurora/transfer_function/regression/m_estimator.py index 3fcfc8fb..99e22862 100644 --- a/aurora/transfer_function/regression/m_estimator.py +++ b/aurora/transfer_function/regression/m_estimator.py @@ -10,6 +10,7 @@ from aurora.transfer_function.regression.base import RegressionEstimator from aurora.transfer_function.regression.helper_functions import rme_beta +from loguru import logger class MEstimator(RegressionEstimator): @@ -40,6 +41,7 @@ def __init__(self, **kwargs): self.Yc = deepcopy(self.Y) self._Y_hat = None self._residual_variance = None + self.logger = logger @property def QHYc(self): @@ -57,13 +59,13 @@ def Y_hat(self): return self._Y_hat def update_y_hat(self): - print("Y_hat update method is not defined for abstract MEstimator class") - print("Try using RME or RME_RR class instead") + self.logger.error("Y_hat update method is not defined for abstract MEstimator class") + self.logger.error("Try using RME or RME_RR class instead") raise Exception def update_residual_variance(self, correction_factor=1): - print("update_residual_variance method not defined in abstract MEstimator") - print("Try using RME or RME_RR class instead") + self.logger.error("update_residual_variance method not defined in abstract MEstimator") + self.logger.error("Try using RME or RME_RR class instead") raise Exception @property @@ -141,9 +143,9 @@ def residual_variance_method2(self): try: assert (residual_variance > 0).all() except AssertionError: - print("WARNING - Negative error variances observed") - print(residual_variance) - print("Setting residual_variance to zero - Negative values observed") + self.logger.warning("WARNING - Negative error variances observed") + self.logger.warning(residual_variance) + self.logger.warning("Setting residual_variance to zero - Negative values observed") residual_variance *= 0 return residual_variance diff --git a/aurora/transfer_function/transfer_function_collection.py b/aurora/transfer_function/transfer_function_collection.py index 6e001799..a517db18 100644 --- a/aurora/transfer_function/transfer_function_collection.py +++ b/aurora/transfer_function/transfer_function_collection.py @@ -10,11 +10,13 @@ import numpy as np import xarray as xr +from loguru import logger from aurora.transfer_function.plot.rho_phi_helpers import plot_phi from aurora.transfer_function.plot.rho_phi_helpers import plot_rho from aurora.general_helper_functions import FIGURES_PATH + EMTF_REGRESSION_ENGINE_LABELS = {} EMTF_REGRESSION_ENGINE_LABELS["RME"] = "Robust Single Station" EMTF_REGRESSION_ENGINE_LABELS["RME_RR"] = "Robust Remote Reference" @@ -39,6 +41,7 @@ def __init__(self, **kwargs): self.merged_tf = None self.merged_cov_nn = None self.merged_cov_ss_inv = None + self.logger = logger @property def header(self): @@ -310,7 +313,7 @@ def rho_phi_plot( axs[1].set_ylim(phi_ylims) if figures_path is None: - print("figures path is not defined -- skipping saving figures") + self.logger.info("figures path is not defined -- skipping saving figures") return else: default_figure_basename = f"{self.local_station_id}_{xy_or_yx}.png" diff --git a/aurora/transfer_function/weights/edf_weights.py b/aurora/transfer_function/weights/edf_weights.py index 2b820902..6e3d4597 100644 --- a/aurora/transfer_function/weights/edf_weights.py +++ b/aurora/transfer_function/weights/edf_weights.py @@ -4,6 +4,7 @@ """ import numpy as np +from loguru import logger class EffectiveDegreesOfFreedom(object): @@ -38,6 +39,8 @@ def __init__(self, **kwargs): self.p3 = kwargs.get("p3", 5) self.n_data = kwargs.get("n_data", 0) + self.logger = logger + @property def p1(self): """ @@ -160,7 +163,7 @@ def effective_degrees_of_freedom_weights(X, R, edf_obj=None, test=True): """ num_channels = len(X.data_vars) if num_channels != 2: - print("edfwts only works for 2 input channels") + self.logger.error("edfwts only works for 2 input channels") raise Exception X = X.to_array(dim="channel") if R is not None: diff --git a/docs/examples/operate_aurora.ipynb b/docs/examples/operate_aurora.ipynb index 9a584700..01a84700 100644 --- a/docs/examples/operate_aurora.ipynb +++ b/docs/examples/operate_aurora.ipynb @@ -50,7 +50,33 @@ "cell_type": "code", "execution_count": 2, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Error in callback > (for pre_run_cell):\n" + ] + }, + { + "ename": "TypeError", + "evalue": "AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;31mTypeError\u001b[0m: AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/laurakeyson/Desktop/aurora_test/aurora/aurora/time_series/window_helpers.py:76: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details.\n", + " @jit\n" + ] + } + ], "source": [ "# Required imports for the program. \n", "from pathlib import Path\n", @@ -92,10 +118,27 @@ "execution_count": 3, "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Error in callback > (for pre_run_cell):\n" + ] + }, + { + "ename": "TypeError", + "evalue": "AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;31mTypeError\u001b[0m: AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given" + ] + }, { "data": { "text/plain": [ - "PosixPath('/home/kkappler/software/irismt/aurora/docs/examples')" + "PosixPath('/Users/laurakeyson/Desktop/aurora_test/aurora/docs/examples')" ] }, "execution_count": 3, @@ -119,7 +162,25 @@ "cell_type": "code", "execution_count": 4, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Error in callback > (for pre_run_cell):\n" + ] + }, + { + "ename": "TypeError", + "evalue": "AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;31mTypeError\u001b[0m: AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given" + ] + } + ], "source": [ "# mth5_version = '0.1.0'\n", "mth5_version = '0.2.0'\n" @@ -129,7 +190,25 @@ "cell_type": "code", "execution_count": 5, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Error in callback > (for pre_run_cell):\n" + ] + }, + { + "ename": "TypeError", + "evalue": "AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;31mTypeError\u001b[0m: AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given" + ] + } + ], "source": [ "# Initialize the Make MTH5 code. \n", "maker = MakeMTH5(mth5_version=mth5_version)\n", @@ -153,7 +232,25 @@ "cell_type": "code", "execution_count": 6, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Error in callback > (for pre_run_cell):\n" + ] + }, + { + "ename": "TypeError", + "evalue": "AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;31mTypeError\u001b[0m: AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given" + ] + } + ], "source": [ "# Generate data frame of FDSN Network, Station, Location, Channel, Startime, Endtime codes of interest\n", "\n", @@ -174,6 +271,23 @@ "execution_count": 7, "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Error in callback > (for pre_run_cell):\n" + ] + }, + { + "ename": "TypeError", + "evalue": "AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;31mTypeError\u001b[0m: AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given" + ] + }, { "data": { "text/html": [ @@ -276,7 +390,25 @@ "cell_type": "code", "execution_count": 8, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Error in callback > (for pre_run_cell):\n" + ] + }, + { + "ename": "TypeError", + "evalue": "AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;31mTypeError\u001b[0m: AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given" + ] + } + ], "source": [ "# Request the inventory information from IRIS\n", "inventory = fdsn_obj.get_inventory_from_df(request_df, data=False)" @@ -287,10 +419,27 @@ "execution_count": 9, "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Error in callback > (for pre_run_cell):\n" + ] + }, + { + "ename": "TypeError", + "evalue": "AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;31mTypeError\u001b[0m: AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given" + ] + }, { "data": { "text/plain": [ - "(Inventory created at 2023-09-27T17:54:42.163015Z\n", + "(Inventory created at 2023-10-31T20:39:33.281316Z\n", "\tCreated by: ObsPy 1.4.0\n", "\t\t https://www.obspy.org\n", "\tSending institution: MTH5\n", @@ -343,46 +492,63 @@ "name": "stdout", "output_type": "stream", "text": [ - "\u001b[33m\u001b[1m2023-09-27T10:54:42.661848-0700 | WARNING | mth5.mth5 | open_mth5 | 8P_CAS04.h5 will be overwritten in 'w' mode\u001b[0m\n", - "\u001b[1m2023-09-27T10:54:42.972405-0700 | INFO | mth5.mth5 | _initialize_file | Initialized MTH5 0.2.0 file /home/kkappler/software/irismt/aurora/docs/examples/8P_CAS04.h5 in mode w\u001b[0m\n", - "\u001b[1m2023-09-27T10:54:49.900160-0700 | INFO | mt_metadata.timeseries.filters.obspy_stages | create_filter_from_stage | Converting PoleZerosResponseStage electric_si_units to a CoefficientFilter.\u001b[0m\n", - "\u001b[1m2023-09-27T10:54:49.909027-0700 | INFO | mt_metadata.timeseries.filters.obspy_stages | create_filter_from_stage | Converting PoleZerosResponseStage electric_dipole_92.000 to a CoefficientFilter.\u001b[0m\n", - "\u001b[1m2023-09-27T10:54:49.960086-0700 | INFO | mt_metadata.timeseries.filters.obspy_stages | create_filter_from_stage | Converting PoleZerosResponseStage electric_si_units to a CoefficientFilter.\u001b[0m\n", - "\u001b[1m2023-09-27T10:54:49.970894-0700 | INFO | mt_metadata.timeseries.filters.obspy_stages | create_filter_from_stage | Converting PoleZerosResponseStage electric_dipole_92.000 to a CoefficientFilter.\u001b[0m\n", - "\u001b[1m2023-09-27T10:54:50.021372-0700 | INFO | mt_metadata.timeseries.filters.obspy_stages | create_filter_from_stage | Converting PoleZerosResponseStage electric_si_units to a CoefficientFilter.\u001b[0m\n", - "\u001b[1m2023-09-27T10:54:50.030606-0700 | INFO | mt_metadata.timeseries.filters.obspy_stages | create_filter_from_stage | Converting PoleZerosResponseStage electric_dipole_92.000 to a CoefficientFilter.\u001b[0m\n", - "\u001b[1m2023-09-27T10:54:50.078100-0700 | INFO | mt_metadata.timeseries.filters.obspy_stages | create_filter_from_stage | Converting PoleZerosResponseStage electric_si_units to a CoefficientFilter.\u001b[0m\n", - "\u001b[1m2023-09-27T10:54:50.086297-0700 | INFO | mt_metadata.timeseries.filters.obspy_stages | create_filter_from_stage | Converting PoleZerosResponseStage electric_dipole_92.000 to a CoefficientFilter.\u001b[0m\n", - "\u001b[1m2023-09-27T10:54:50.136300-0700 | INFO | mt_metadata.timeseries.filters.obspy_stages | create_filter_from_stage | Converting PoleZerosResponseStage electric_si_units to a CoefficientFilter.\u001b[0m\n", - "\u001b[1m2023-09-27T10:54:50.145482-0700 | INFO | mt_metadata.timeseries.filters.obspy_stages | create_filter_from_stage | Converting PoleZerosResponseStage electric_dipole_92.000 to a CoefficientFilter.\u001b[0m\n", - "\u001b[1m2023-09-27T10:54:51.357541-0700 | INFO | mth5.groups.base | _add_group | RunGroup a already exists, returning existing group.\u001b[0m\n", - "\u001b[33m\u001b[1m2023-09-27T10:54:51.487120-0700 | WARNING | mth5.timeseries.run_ts | validate_metadata | start time of dataset 2020-06-02T19:00:00+00:00 does not match metadata start 2020-06-02T18:41:43+00:00 updating metatdata value to 2020-06-02T19:00:00+00:00\u001b[0m\n", - "\u001b[33m\u001b[1m2023-09-27T10:54:51.652344-0700 | WARNING | mth5.groups.run | from_runts | Channel run.id sr1_001 != group run.id a. Setting to ch.run_metadata.id to a\u001b[0m\n", - "\u001b[33m\u001b[1m2023-09-27T10:54:51.853045-0700 | WARNING | mth5.groups.run | from_runts | Channel run.id sr1_001 != group run.id a. Setting to ch.run_metadata.id to a\u001b[0m\n", - "\u001b[33m\u001b[1m2023-09-27T10:54:52.047766-0700 | WARNING | mth5.groups.run | from_runts | Channel run.id sr1_001 != group run.id a. Setting to ch.run_metadata.id to a\u001b[0m\n", - "\u001b[33m\u001b[1m2023-09-27T10:54:52.242841-0700 | WARNING | mth5.groups.run | from_runts | Channel run.id sr1_001 != group run.id a. Setting to ch.run_metadata.id to a\u001b[0m\n", - "\u001b[33m\u001b[1m2023-09-27T10:54:52.429851-0700 | WARNING | mth5.groups.run | from_runts | Channel run.id sr1_001 != group run.id a. Setting to ch.run_metadata.id to a\u001b[0m\n", - "\u001b[1m2023-09-27T10:54:52.495322-0700 | INFO | mth5.groups.base | _add_group | RunGroup b already exists, returning existing group.\u001b[0m\n", - "\u001b[33m\u001b[1m2023-09-27T10:54:52.901279-0700 | WARNING | mth5.groups.run | from_runts | Channel run.id sr1_001 != group run.id b. Setting to ch.run_metadata.id to b\u001b[0m\n", - "\u001b[33m\u001b[1m2023-09-27T10:54:53.092482-0700 | WARNING | mth5.groups.run | from_runts | Channel run.id sr1_001 != group run.id b. Setting to ch.run_metadata.id to b\u001b[0m\n", - "\u001b[33m\u001b[1m2023-09-27T10:54:53.284762-0700 | WARNING | mth5.groups.run | from_runts | Channel run.id sr1_001 != group run.id b. Setting to ch.run_metadata.id to b\u001b[0m\n", - "\u001b[33m\u001b[1m2023-09-27T10:54:53.477117-0700 | WARNING | mth5.groups.run | from_runts | Channel run.id sr1_001 != group run.id b. Setting to ch.run_metadata.id to b\u001b[0m\n", - "\u001b[33m\u001b[1m2023-09-27T10:54:53.672779-0700 | WARNING | mth5.groups.run | from_runts | Channel run.id sr1_001 != group run.id b. Setting to ch.run_metadata.id to b\u001b[0m\n", - "\u001b[1m2023-09-27T10:54:53.741712-0700 | INFO | mth5.groups.base | _add_group | RunGroup c already exists, returning existing group.\u001b[0m\n", - "\u001b[33m\u001b[1m2023-09-27T10:54:54.280424-0700 | WARNING | mth5.groups.run | from_runts | Channel run.id sr1_001 != group run.id c. Setting to ch.run_metadata.id to c\u001b[0m\n", - "\u001b[33m\u001b[1m2023-09-27T10:54:54.474051-0700 | WARNING | mth5.groups.run | from_runts | Channel run.id sr1_001 != group run.id c. Setting to ch.run_metadata.id to c\u001b[0m\n", - "\u001b[33m\u001b[1m2023-09-27T10:54:54.672030-0700 | WARNING | mth5.groups.run | from_runts | Channel run.id sr1_001 != group run.id c. Setting to ch.run_metadata.id to c\u001b[0m\n", - "\u001b[33m\u001b[1m2023-09-27T10:54:54.859904-0700 | WARNING | mth5.groups.run | from_runts | Channel run.id sr1_001 != group run.id c. Setting to ch.run_metadata.id to c\u001b[0m\n", - "\u001b[33m\u001b[1m2023-09-27T10:54:55.048072-0700 | WARNING | mth5.groups.run | from_runts | Channel run.id sr1_001 != group run.id c. Setting to ch.run_metadata.id to c\u001b[0m\n", - "\u001b[1m2023-09-27T10:54:55.119107-0700 | INFO | mth5.groups.base | _add_group | RunGroup d already exists, returning existing group.\u001b[0m\n", - "\u001b[33m\u001b[1m2023-09-27T10:54:55.385395-0700 | WARNING | mth5.timeseries.run_ts | validate_metadata | end time of dataset 2020-07-13T19:00:00+00:00 does not match metadata end 2020-07-13T21:46:12+00:00 updating metatdata value to 2020-07-13T19:00:00+00:00\u001b[0m\n", - "\u001b[33m\u001b[1m2023-09-27T10:54:55.547553-0700 | WARNING | mth5.groups.run | from_runts | Channel run.id sr1_001 != group run.id d. Setting to ch.run_metadata.id to d\u001b[0m\n", - "\u001b[33m\u001b[1m2023-09-27T10:54:55.741759-0700 | WARNING | mth5.groups.run | from_runts | Channel run.id sr1_001 != group run.id d. Setting to ch.run_metadata.id to d\u001b[0m\n", - "\u001b[33m\u001b[1m2023-09-27T10:54:55.931398-0700 | WARNING | mth5.groups.run | from_runts | Channel run.id sr1_001 != group run.id d. Setting to ch.run_metadata.id to d\u001b[0m\n", - "\u001b[33m\u001b[1m2023-09-27T10:54:56.129626-0700 | WARNING | mth5.groups.run | from_runts | Channel run.id sr1_001 != group run.id d. Setting to ch.run_metadata.id to d\u001b[0m\n", - "\u001b[33m\u001b[1m2023-09-27T10:54:56.318764-0700 | WARNING | mth5.groups.run | from_runts | Channel run.id sr1_001 != group run.id d. Setting to ch.run_metadata.id to d\u001b[0m\n", - "\u001b[1m2023-09-27T10:54:56.435713-0700 | INFO | mth5.mth5 | close_mth5 | Flushing and closing /home/kkappler/software/irismt/aurora/docs/examples/8P_CAS04.h5\u001b[0m\n", - "\u001b[33m\u001b[1m2023-09-27T10:54:56.462295-0700 | WARNING | mth5.mth5 | filename | MTH5 file is not open or has not been created yet. Returning default name\u001b[0m\n" + "Error in callback > (for pre_run_cell):\n" + ] + }, + { + "ename": "TypeError", + "evalue": "AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;31mTypeError\u001b[0m: AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[33m\u001b[1m2023-10-31T13:39:33.746339-0700 | WARNING | mth5.mth5 | open_mth5 | 8P_CAS04.h5 will be overwritten in 'w' mode\u001b[0m\n", + "\u001b[1m2023-10-31T13:39:33.888341-0700 | INFO | mth5.mth5 | _initialize_file | Initialized MTH5 0.2.0 file /Users/laurakeyson/Desktop/aurora_test/aurora/docs/examples/8P_CAS04.h5 in mode w\u001b[0m\n", + "\u001b[1m2023-10-31T13:39:59.418677-0700 | INFO | mt_metadata.timeseries.filters.obspy_stages | create_filter_from_stage | Converting PoleZerosResponseStage electric_si_units to a CoefficientFilter.\u001b[0m\n", + "\u001b[1m2023-10-31T13:39:59.425195-0700 | INFO | mt_metadata.timeseries.filters.obspy_stages | create_filter_from_stage | Converting PoleZerosResponseStage electric_dipole_92.000 to a CoefficientFilter.\u001b[0m\n", + "\u001b[1m2023-10-31T13:39:59.449536-0700 | INFO | mt_metadata.timeseries.filters.obspy_stages | create_filter_from_stage | Converting PoleZerosResponseStage electric_si_units to a CoefficientFilter.\u001b[0m\n", + "\u001b[1m2023-10-31T13:39:59.454017-0700 | INFO | mt_metadata.timeseries.filters.obspy_stages | create_filter_from_stage | Converting PoleZerosResponseStage electric_dipole_92.000 to a CoefficientFilter.\u001b[0m\n", + "\u001b[1m2023-10-31T13:39:59.471686-0700 | INFO | mt_metadata.timeseries.filters.obspy_stages | create_filter_from_stage | Converting PoleZerosResponseStage electric_si_units to a CoefficientFilter.\u001b[0m\n", + "\u001b[1m2023-10-31T13:39:59.474793-0700 | INFO | mt_metadata.timeseries.filters.obspy_stages | create_filter_from_stage | Converting PoleZerosResponseStage electric_dipole_92.000 to a CoefficientFilter.\u001b[0m\n", + "\u001b[1m2023-10-31T13:39:59.490141-0700 | INFO | mt_metadata.timeseries.filters.obspy_stages | create_filter_from_stage | Converting PoleZerosResponseStage electric_si_units to a CoefficientFilter.\u001b[0m\n", + "\u001b[1m2023-10-31T13:39:59.493708-0700 | INFO | mt_metadata.timeseries.filters.obspy_stages | create_filter_from_stage | Converting PoleZerosResponseStage electric_dipole_92.000 to a CoefficientFilter.\u001b[0m\n", + "\u001b[1m2023-10-31T13:39:59.510992-0700 | INFO | mt_metadata.timeseries.filters.obspy_stages | create_filter_from_stage | Converting PoleZerosResponseStage electric_si_units to a CoefficientFilter.\u001b[0m\n", + "\u001b[1m2023-10-31T13:39:59.514104-0700 | INFO | mt_metadata.timeseries.filters.obspy_stages | create_filter_from_stage | Converting PoleZerosResponseStage electric_dipole_92.000 to a CoefficientFilter.\u001b[0m\n", + "\u001b[1m2023-10-31T13:39:59.940789-0700 | INFO | mth5.groups.base | _add_group | RunGroup a already exists, returning existing group.\u001b[0m\n", + "\u001b[33m\u001b[1m2023-10-31T13:39:59.992427-0700 | WARNING | mth5.timeseries.run_ts | validate_metadata | start time of dataset 2020-06-02T19:00:00+00:00 does not match metadata start 2020-06-02T18:41:43+00:00 updating metatdata value to 2020-06-02T19:00:00+00:00\u001b[0m\n", + "\u001b[33m\u001b[1m2023-10-31T13:40:00.053238-0700 | WARNING | mth5.groups.run | from_runts | Channel run.id sr1_001 != group run.id a. Setting to ch.run_metadata.id to a\u001b[0m\n", + "\u001b[33m\u001b[1m2023-10-31T13:40:00.126334-0700 | WARNING | mth5.groups.run | from_runts | Channel run.id sr1_001 != group run.id a. Setting to ch.run_metadata.id to a\u001b[0m\n", + "\u001b[33m\u001b[1m2023-10-31T13:40:00.198049-0700 | WARNING | mth5.groups.run | from_runts | Channel run.id sr1_001 != group run.id a. Setting to ch.run_metadata.id to a\u001b[0m\n", + "\u001b[33m\u001b[1m2023-10-31T13:40:00.267607-0700 | WARNING | mth5.groups.run | from_runts | Channel run.id sr1_001 != group run.id a. Setting to ch.run_metadata.id to a\u001b[0m\n", + "\u001b[33m\u001b[1m2023-10-31T13:40:00.336628-0700 | WARNING | mth5.groups.run | from_runts | Channel run.id sr1_001 != group run.id a. Setting to ch.run_metadata.id to a\u001b[0m\n", + "\u001b[1m2023-10-31T13:40:00.358183-0700 | INFO | mth5.groups.base | _add_group | RunGroup b already exists, returning existing group.\u001b[0m\n", + "\u001b[33m\u001b[1m2023-10-31T13:40:00.518568-0700 | WARNING | mth5.groups.run | from_runts | Channel run.id sr1_001 != group run.id b. Setting to ch.run_metadata.id to b\u001b[0m\n", + "\u001b[33m\u001b[1m2023-10-31T13:40:00.590530-0700 | WARNING | mth5.groups.run | from_runts | Channel run.id sr1_001 != group run.id b. Setting to ch.run_metadata.id to b\u001b[0m\n", + "\u001b[33m\u001b[1m2023-10-31T13:40:00.661567-0700 | WARNING | mth5.groups.run | from_runts | Channel run.id sr1_001 != group run.id b. Setting to ch.run_metadata.id to b\u001b[0m\n", + "\u001b[33m\u001b[1m2023-10-31T13:40:00.731040-0700 | WARNING | mth5.groups.run | from_runts | Channel run.id sr1_001 != group run.id b. Setting to ch.run_metadata.id to b\u001b[0m\n", + "\u001b[33m\u001b[1m2023-10-31T13:40:00.801627-0700 | WARNING | mth5.groups.run | from_runts | Channel run.id sr1_001 != group run.id b. Setting to ch.run_metadata.id to b\u001b[0m\n", + "\u001b[1m2023-10-31T13:40:00.826138-0700 | INFO | mth5.groups.base | _add_group | RunGroup c already exists, returning existing group.\u001b[0m\n", + "\u001b[33m\u001b[1m2023-10-31T13:40:01.037388-0700 | WARNING | mth5.groups.run | from_runts | Channel run.id sr1_001 != group run.id c. Setting to ch.run_metadata.id to c\u001b[0m\n", + "\u001b[33m\u001b[1m2023-10-31T13:40:01.109867-0700 | WARNING | mth5.groups.run | from_runts | Channel run.id sr1_001 != group run.id c. Setting to ch.run_metadata.id to c\u001b[0m\n", + "\u001b[33m\u001b[1m2023-10-31T13:40:01.183436-0700 | WARNING | mth5.groups.run | from_runts | Channel run.id sr1_001 != group run.id c. Setting to ch.run_metadata.id to c\u001b[0m\n", + "\u001b[33m\u001b[1m2023-10-31T13:40:01.256232-0700 | WARNING | mth5.groups.run | from_runts | Channel run.id sr1_001 != group run.id c. Setting to ch.run_metadata.id to c\u001b[0m\n", + "\u001b[33m\u001b[1m2023-10-31T13:40:01.327683-0700 | WARNING | mth5.groups.run | from_runts | Channel run.id sr1_001 != group run.id c. Setting to ch.run_metadata.id to c\u001b[0m\n", + "\u001b[1m2023-10-31T13:40:01.352632-0700 | INFO | mth5.groups.base | _add_group | RunGroup d already exists, returning existing group.\u001b[0m\n", + "\u001b[33m\u001b[1m2023-10-31T13:40:01.453489-0700 | WARNING | mth5.timeseries.run_ts | validate_metadata | end time of dataset 2020-07-13T19:00:00+00:00 does not match metadata end 2020-07-13T21:46:12+00:00 updating metatdata value to 2020-07-13T19:00:00+00:00\u001b[0m\n", + "\u001b[33m\u001b[1m2023-10-31T13:40:01.519915-0700 | WARNING | mth5.groups.run | from_runts | Channel run.id sr1_001 != group run.id d. Setting to ch.run_metadata.id to d\u001b[0m\n", + "\u001b[33m\u001b[1m2023-10-31T13:40:01.590762-0700 | WARNING | mth5.groups.run | from_runts | Channel run.id sr1_001 != group run.id d. Setting to ch.run_metadata.id to d\u001b[0m\n", + "\u001b[33m\u001b[1m2023-10-31T13:40:01.660705-0700 | WARNING | mth5.groups.run | from_runts | Channel run.id sr1_001 != group run.id d. Setting to ch.run_metadata.id to d\u001b[0m\n", + "\u001b[33m\u001b[1m2023-10-31T13:40:01.729919-0700 | WARNING | mth5.groups.run | from_runts | Channel run.id sr1_001 != group run.id d. Setting to ch.run_metadata.id to d\u001b[0m\n", + "\u001b[33m\u001b[1m2023-10-31T13:40:01.799470-0700 | WARNING | mth5.groups.run | from_runts | Channel run.id sr1_001 != group run.id d. Setting to ch.run_metadata.id to d\u001b[0m\n", + "\u001b[1m2023-10-31T13:40:01.841295-0700 | INFO | mth5.mth5 | close_mth5 | Flushing and closing /Users/laurakeyson/Desktop/aurora_test/aurora/docs/examples/8P_CAS04.h5\u001b[0m\n", + "\u001b[33m\u001b[1m2023-10-31T13:40:01.843430-0700 | WARNING | mth5.mth5 | filename | MTH5 file is not open or has not been created yet. Returning default name\u001b[0m\n" ] } ], @@ -404,6 +570,23 @@ "execution_count": 11, "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Error in callback > (for pre_run_cell):\n" + ] + }, + { + "ename": "TypeError", + "evalue": "AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;31mTypeError\u001b[0m: AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given" + ] + }, { "data": { "text/plain": [ @@ -548,7 +731,25 @@ "cell_type": "code", "execution_count": 12, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Error in callback > (for pre_run_cell):\n" + ] + }, + { + "ename": "TypeError", + "evalue": "AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;31mTypeError\u001b[0m: AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given" + ] + } + ], "source": [ "mth5_path = mth5_object.filename" ] @@ -558,6 +759,23 @@ "execution_count": 13, "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Error in callback > (for pre_run_cell):\n" + ] + }, + { + "ename": "TypeError", + "evalue": "AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;31mTypeError\u001b[0m: AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given" + ] + }, { "data": { "text/plain": [ @@ -582,7 +800,24 @@ "name": "stdout", "output_type": "stream", "text": [ - "\u001b[1m2023-09-27T10:54:56.601965-0700 | INFO | mth5.mth5 | close_mth5 | Flushing and closing /home/kkappler/software/irismt/aurora/docs/examples/8P_CAS04.h5\u001b[0m\n" + "Error in callback > (for pre_run_cell):\n" + ] + }, + { + "ename": "TypeError", + "evalue": "AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;31mTypeError\u001b[0m: AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[1m2023-10-31T13:40:01.888826-0700 | INFO | mth5.mth5 | close_mth5 | Flushing and closing /Users/laurakeyson/Desktop/aurora_test/aurora/docs/examples/8P_CAS04.h5\u001b[0m\n" ] } ], @@ -594,7 +829,25 @@ "cell_type": "code", "execution_count": 15, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Error in callback > (for pre_run_cell):\n" + ] + }, + { + "ename": "TypeError", + "evalue": "AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;31mTypeError\u001b[0m: AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given" + ] + } + ], "source": [ "mth5_object = initialize_mth5(mth5_path)" ] @@ -611,6 +864,23 @@ "execution_count": 16, "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Error in callback > (for pre_run_cell):\n" + ] + }, + { + "ename": "TypeError", + "evalue": "AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;31mTypeError\u001b[0m: AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given" + ] + }, { "name": "stdout", "output_type": "stream", @@ -638,7 +908,24 @@ "name": "stdout", "output_type": "stream", "text": [ - " Filename: /home/kkappler/software/irismt/aurora/docs/examples/8P_CAS04.h5 \n", + "Error in callback > (for pre_run_cell):\n" + ] + }, + { + "ename": "TypeError", + "evalue": "AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;31mTypeError\u001b[0m: AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Filename: /Users/laurakeyson/Desktop/aurora_test/aurora/docs/examples/8P_CAS04.h5 \n", " Version: 0.2.0\n" ] } @@ -656,7 +943,25 @@ "metadata": { "tags": [] }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Error in callback > (for pre_run_cell):\n" + ] + }, + { + "ename": "TypeError", + "evalue": "AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;31mTypeError\u001b[0m: AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given" + ] + } + ], "source": [ "# Get the available stations and runs from the MTH5 object\n", "mth5_object.channel_summary.summarize()\n", @@ -675,7 +980,25 @@ "cell_type": "code", "execution_count": 19, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Error in callback > (for pre_run_cell):\n" + ] + }, + { + "ename": "TypeError", + "evalue": "AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;31mTypeError\u001b[0m: AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given" + ] + } + ], "source": [ "interact = False\n", "if interact:\n", @@ -713,6 +1036,23 @@ "tags": [] }, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Error in callback > (for pre_run_cell):\n" + ] + }, + { + "ename": "TypeError", + "evalue": "AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;31mTypeError\u001b[0m: AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given" + ] + }, { "data": { "text/html": [ @@ -1290,6 +1630,23 @@ "execution_count": 21, "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Error in callback > (for pre_run_cell):\n" + ] + }, + { + "ename": "TypeError", + "evalue": "AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;31mTypeError\u001b[0m: AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given" + ] + }, { "name": "stdout", "output_type": "stream", @@ -1331,7 +1688,24 @@ "name": "stdout", "output_type": "stream", "text": [ - "\u001b[1m2023-09-27T10:54:57.338824-0700 | INFO | mth5.mth5 | close_mth5 | Flushing and closing /home/kkappler/software/irismt/aurora/docs/examples/8P_CAS04.h5\u001b[0m\n" + "Error in callback > (for pre_run_cell):\n" + ] + }, + { + "ename": "TypeError", + "evalue": "AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;31mTypeError\u001b[0m: AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[1m2023-10-31T13:40:02.155717-0700 | INFO | mth5.mth5 | close_mth5 | Flushing and closing /Users/laurakeyson/Desktop/aurora_test/aurora/docs/examples/8P_CAS04.h5\u001b[0m\n" ] }, { @@ -1381,7 +1755,7 @@ " [ex, ey, hz]\n", " {'ex': 1.0, 'ey': 1.0, 'hx': 1.0, 'hy': 1.0, '...\n", " True\n", - " /home/kkappler/software/irismt/aurora/docs/exa...\n", + " /Users/laurakeyson/Desktop/aurora_test/aurora/...\n", " \n", " \n", " 1\n", @@ -1395,7 +1769,7 @@ " [ex, ey, hz]\n", " {'ex': 1.0, 'ey': 1.0, 'hx': 1.0, 'hy': 1.0, '...\n", " True\n", - " /home/kkappler/software/irismt/aurora/docs/exa...\n", + " /Users/laurakeyson/Desktop/aurora_test/aurora/...\n", " \n", " \n", " 2\n", @@ -1409,7 +1783,7 @@ " [ex, ey, hz]\n", " {'ex': 1.0, 'ey': 1.0, 'hx': 1.0, 'hy': 1.0, '...\n", " True\n", - " /home/kkappler/software/irismt/aurora/docs/exa...\n", + " /Users/laurakeyson/Desktop/aurora_test/aurora/...\n", " \n", " \n", " 3\n", @@ -1423,7 +1797,7 @@ " [ex, ey, hz]\n", " {'ex': 1.0, 'ey': 1.0, 'hx': 1.0, 'hy': 1.0, '...\n", " True\n", - " /home/kkappler/software/irismt/aurora/docs/exa...\n", + " /Users/laurakeyson/Desktop/aurora_test/aurora/...\n", " \n", " \n", "\n", @@ -1449,10 +1823,10 @@ "3 {'ex': 1.0, 'ey': 1.0, 'hx': 1.0, 'hy': 1.0, '... True \n", "\n", " mth5_path \n", - "0 /home/kkappler/software/irismt/aurora/docs/exa... \n", - "1 /home/kkappler/software/irismt/aurora/docs/exa... \n", - "2 /home/kkappler/software/irismt/aurora/docs/exa... \n", - "3 /home/kkappler/software/irismt/aurora/docs/exa... " + "0 /Users/laurakeyson/Desktop/aurora_test/aurora/... \n", + "1 /Users/laurakeyson/Desktop/aurora_test/aurora/... \n", + "2 /Users/laurakeyson/Desktop/aurora_test/aurora/... \n", + "3 /Users/laurakeyson/Desktop/aurora_test/aurora/... " ] }, "execution_count": 22, @@ -1483,6 +1857,23 @@ "execution_count": 23, "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Error in callback > (for pre_run_cell):\n" + ] + }, + { + "ename": "TypeError", + "evalue": "AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;31mTypeError\u001b[0m: AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given" + ] + }, { "data": { "text/html": [ @@ -1583,6 +1974,23 @@ "execution_count": 24, "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Error in callback > (for pre_run_cell):\n" + ] + }, + { + "ename": "TypeError", + "evalue": "AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;31mTypeError\u001b[0m: AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given" + ] + }, { "data": { "text/plain": [ @@ -1613,6 +2021,23 @@ "execution_count": 25, "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Error in callback > (for pre_run_cell):\n" + ] + }, + { + "ename": "TypeError", + "evalue": "AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;31mTypeError\u001b[0m: AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given" + ] + }, { "data": { "text/html": [ @@ -1735,6 +2160,23 @@ "execution_count": 26, "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Error in callback > (for pre_run_cell):\n" + ] + }, + { + "ename": "TypeError", + "evalue": "AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;31mTypeError\u001b[0m: AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given" + ] + }, { "data": { "text/html": [ @@ -1842,6 +2284,23 @@ "execution_count": 27, "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Error in callback > (for pre_run_cell):\n" + ] + }, + { + "ename": "TypeError", + "evalue": "AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;31mTypeError\u001b[0m: AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given" + ] + }, { "name": "stdout", "output_type": "stream", @@ -1875,6 +2334,23 @@ "execution_count": 28, "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Error in callback > (for pre_run_cell):\n" + ] + }, + { + "ename": "TypeError", + "evalue": "AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;31mTypeError\u001b[0m: AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given" + ] + }, { "data": { "text/html": [ @@ -1969,6 +2445,23 @@ "execution_count": 29, "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Error in callback > (for pre_run_cell):\n" + ] + }, + { + "ename": "TypeError", + "evalue": "AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;31mTypeError\u001b[0m: AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given" + ] + }, { "data": { "text/html": [ @@ -2055,6 +2548,23 @@ "execution_count": 30, "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Error in callback > (for pre_run_cell):\n" + ] + }, + { + "ename": "TypeError", + "evalue": "AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;31mTypeError\u001b[0m: AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given" + ] + }, { "data": { "text/html": [ @@ -2145,7 +2655,24 @@ "name": "stdout", "output_type": "stream", "text": [ - "/home/kkappler/software/irismt/aurora/aurora/config/emtf_band_setup/bs_test.cfg\n", + "Error in callback > (for pre_run_cell):\n" + ] + }, + { + "ename": "TypeError", + "evalue": "AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;31mTypeError\u001b[0m: AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/Users/laurakeyson/Desktop/aurora_test/aurora/aurora/config/emtf_band_setup/bs_test.cfg\n", "OK\n" ] } @@ -2160,7 +2687,25 @@ "cell_type": "code", "execution_count": 32, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Error in callback > (for pre_run_cell):\n" + ] + }, + { + "ename": "TypeError", + "evalue": "AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;31mTypeError\u001b[0m: AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given" + ] + } + ], "source": [ "for decimation in config.decimations:\n", " decimation.estimator.engine = \"RME\"" @@ -2180,12 +2725,29 @@ "tags": [] }, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Error in callback > (for pre_run_cell):\n" + ] + }, + { + "ename": "TypeError", + "evalue": "AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;31mTypeError\u001b[0m: AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given" + ] + }, { "data": { "text/plain": [ "{\n", " \"processing\": {\n", - " \"band_setup_file\": \"/home/kkappler/software/irismt/aurora/aurora/config/emtf_band_setup/bs_test.cfg\",\n", + " \"band_setup_file\": \"/Users/laurakeyson/Desktop/aurora_test/aurora/aurora/config/emtf_band_setup/bs_test.cfg\",\n", " \"band_specification_style\": \"EMTF\",\n", " \"channel_nomenclature.ex\": \"ex\",\n", " \"channel_nomenclature.ey\": \"ey\",\n", @@ -2631,7 +3193,7 @@ " ],\n", " \"id\": \"CAS04-None\",\n", " \"stations.local.id\": \"CAS04\",\n", - " \"stations.local.mth5_path\": \"/home/kkappler/software/irismt/aurora/docs/examples/8P_CAS04.h5\",\n", + " \"stations.local.mth5_path\": \"/Users/laurakeyson/Desktop/aurora_test/aurora/docs/examples/8P_CAS04.h5\",\n", " \"stations.local.remote\": false,\n", " \"stations.local.runs\": [\n", " {\n", @@ -2757,6 +3319,23 @@ "execution_count": 34, "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Error in callback > (for pre_run_cell):\n" + ] + }, + { + "ename": "TypeError", + "evalue": "AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;31mTypeError\u001b[0m: AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given" + ] + }, { "name": "stdout", "output_type": "stream", @@ -2781,10 +3360,10 @@ "3 {'ex': 1.0, 'ey': 1.0, 'hx': 1.0, 'hy': 1.0, '... True \n", "\n", " mth5_path remote duration fc \\\n", - "0 /home/kkappler/software/irismt/aurora/docs/exa... False 847648.0 False \n", - "1 /home/kkappler/software/irismt/aurora/docs/exa... False 847648.0 False \n", - "2 /home/kkappler/software/irismt/aurora/docs/exa... False 847648.0 False \n", - "3 /home/kkappler/software/irismt/aurora/docs/exa... False 847648.0 False \n", + "0 /Users/laurakeyson/Desktop/aurora_test/aurora/... False 847648.0 False \n", + "1 /Users/laurakeyson/Desktop/aurora_test/aurora/... False 847648.0 False \n", + "2 /Users/laurakeyson/Desktop/aurora_test/aurora/... False 847648.0 False \n", + "3 /Users/laurakeyson/Desktop/aurora_test/aurora/... False 847648.0 False \n", "\n", " dec_level dec_factor \n", "0 0 1.0 \n", @@ -2811,10 +3390,10 @@ "7 {'ex': 1.0, 'ey': 1.0, 'hx': 1.0, 'hy': 1.0, '... True \n", "\n", " mth5_path remote duration \\\n", - "4 /home/kkappler/software/irismt/aurora/docs/exa... False 1034585.0 \n", - "5 /home/kkappler/software/irismt/aurora/docs/exa... False 1034585.0 \n", - "6 /home/kkappler/software/irismt/aurora/docs/exa... False 1034585.0 \n", - "7 /home/kkappler/software/irismt/aurora/docs/exa... False 1034585.0 \n", + "4 /Users/laurakeyson/Desktop/aurora_test/aurora/... False 1034585.0 \n", + "5 /Users/laurakeyson/Desktop/aurora_test/aurora/... False 1034585.0 \n", + "6 /Users/laurakeyson/Desktop/aurora_test/aurora/... False 1034585.0 \n", + "7 /Users/laurakeyson/Desktop/aurora_test/aurora/... False 1034585.0 \n", "\n", " fc dec_level dec_factor \n", "4 False 0 1.0 \n", @@ -2852,14 +3431,14 @@ "7 {'ex': 1.0, 'ey': 1.0, 'hx': 1.0, 'hy': 1.0, '... True \n", "\n", " mth5_path ... fc dec_level \\\n", - "0 /home/kkappler/software/irismt/aurora/docs/exa... ... False 0 \n", - "1 /home/kkappler/software/irismt/aurora/docs/exa... ... False 1 \n", - "2 /home/kkappler/software/irismt/aurora/docs/exa... ... False 2 \n", - "3 /home/kkappler/software/irismt/aurora/docs/exa... ... False 3 \n", - "4 /home/kkappler/software/irismt/aurora/docs/exa... ... False 0 \n", - "5 /home/kkappler/software/irismt/aurora/docs/exa... ... False 1 \n", - "6 /home/kkappler/software/irismt/aurora/docs/exa... ... False 2 \n", - "7 /home/kkappler/software/irismt/aurora/docs/exa... ... False 3 \n", + "0 /Users/laurakeyson/Desktop/aurora_test/aurora/... ... False 0 \n", + "1 /Users/laurakeyson/Desktop/aurora_test/aurora/... ... False 1 \n", + "2 /Users/laurakeyson/Desktop/aurora_test/aurora/... ... False 2 \n", + "3 /Users/laurakeyson/Desktop/aurora_test/aurora/... ... False 3 \n", + "4 /Users/laurakeyson/Desktop/aurora_test/aurora/... ... False 0 \n", + "5 /Users/laurakeyson/Desktop/aurora_test/aurora/... ... False 1 \n", + "6 /Users/laurakeyson/Desktop/aurora_test/aurora/... ... False 2 \n", + "7 /Users/laurakeyson/Desktop/aurora_test/aurora/... ... False 3 \n", "\n", " dec_factor sample_rate window_duration num_samples_window \\\n", "0 1.0 1.000000 128.0 128 \n", @@ -2882,9 +3461,9 @@ "7 32 96 16165.0 168.0 \n", "\n", "[8 rows x 22 columns]\n", - "Total memory: 62.73 GB\n", + "Total memory: 32.00 GB\n", "Total Bytes of Raw Data: 0.014 GB\n", - "Raw Data will use: 0.022 % of memory\n", + "Raw Data will use: 0.044 % of memory\n", "Prebuilt Fourier Coefficients not detected for survey: CONUS South, station_id: CAS04, run_id: b -- will need to build them \n", "Prebuilt Fourier Coefficients not detected for survey: CONUS South, station_id: CAS04, run_id: d -- will need to build them \n", "fc_levels_already_exist = 0 False\n", @@ -2908,7 +3487,7 @@ }, { "data": { - "image/png": "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NvTRSUxMRGZmJoYMGYILFy5g+vTpKCoqQnR0NDZu3MgkiMiKVCoVUlNTazQVExE5GslrhIiIiIikIus+QkRERETWxESIiIiInBYTISIiInJaTISIiIjIaTERIiKLDRgwAL6+vhg0aJDUoRAR3REmQkRkseTkZHz22WdSh0FEdMeYCBGRxXr27AkvLy+pwyAiumNMhIiczPbt29G3b18EBQVBoVBg9erVNcpkZGQgIiICbm5uiImJwe7du20fKBGRDTARInIy5eXliIqKQkZGhsnjK1asQEpKClJTU7F3715ERUWhV69eOH/+vI0jJSKyPiZCRE4mPj4es2fPxoABA0wenzt3LsaMGYORI0ciMjISixYtgoeHB5YsWWLjSImIrI+JEBGJbt68idzcXMTFxYn7XFxcEBcXh127dkkYGRGRdTARIiLRxYsXodVqayxqrFarUVRUJG7HxcVh8ODBWL9+PUJCQpgkEZHdknz1eSKyPz/88IPUIRARNQjWCBGRqFmzZlAqlSguLjbaX1xcjICAAImiIiKyHiZCRCRydXVF586dkZ2dLe7T6XTIzs5G9+7dJYyMiMg62DRG5GTKyspw4sQJcTsvLw/79u2Dn58fwsLCkJKSgsTERHTp0gXdunVDeno6ysvLMXLkSAmjJiKyDoUgCILUQRCR7Wzbtg2xsbE19icmJiIzMxMA8MEHH+Cdd95BUVERoqOjMX/+fMTExNg4UiIi62MiRERERE6LfYSIiIjIaTERIiIiIqfFRIiIiIicFhMhIiIiclpMhIiIiMhpMREiIiIip8VEiIiIiJwWZ5aug06nw9mzZ+Hl5QWFQiF1OERERGQGQRBw9epVBAUFwcWl7jofJkJ1OHv2LEJDQ6UOg4iIiG5DQUEBQkJC6izDRKgOXl5eAPQfpLe3t8TREBERkTlKS0sRGhoqPsfrwkSoDobmMG9vbyZCREREdsacbi3sLE1EREROi4kQEREROS0mQkREROS0mAgRERGR02IiRERERE6LiRARERE5LSZCRERE5LSYCBEREZHTYiJERERETouJEBERETktJkJERETktOw2EdJqtXj99dfRsmVLuLu7o3Xr1pg1axYEQRDLCIKA6dOnIzAwEO7u7oiLi8Px48cljJqIiIjkxG4TobfffhsLFy7EBx98gD/++ANvv/025syZg//+979imTlz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X9x2dXXFvffeW+v1T548icrKSjzwwAPivsaNG6Nbt274448/AAB//PEHYmJijM7r3r17vbFfv37dqFkMAFJSUvDcc8/h888/R1xcHAYPHozWrVsblXF3d8e1a9fqvT4RWRcTISKSXGxsLBYuXAhXV1cEBQWhUSP9f01lZWVQKpXIzc2tMSKrSZMm4vfu7u5QKBQ2jdmgWbNmuHz5stG+GTNmYNiwYVi3bh02bNiA1NRUfPXVVxgwYIBYpqSkBM2bN7d1uERUDfsIEZHkPD09cddddyEsLExMggCgU6dO0Gq1OH/+PO666y6jV0BAgNnXb926NVxdXbFz505xX2VlJXJychAZGQkAaN++PXbv3m103v/+9796r92pUyccPny4xv67774bkyZNwubNm5GQkIClS5eKx27cuIGTJ0+iU6dOZr8HIrIOJkJEJFt33303hg8fjmeffRZZWVnIy8vD7t27kZaWhnXr1pl9HU9PT7zwwgt46aWXsHHjRhw+fBhjxozBtWvXMHr0aADA2LFjcfz4cbz00ks4evQoli1bZtY8RL169cLPP/8sbl+/fh3jxo3Dtm3bcPr0aezcuRM5OTlo3769WOZ///sfVCqVWU1vRGRdTISISNaWLl2KZ599FpMnT0bbtm3Rv39/5OTkICwszKLrvPXWWxg4cCCeeeYZ3HfffThx4gQ2bdoEX19fAPqRXKtWrcLq1asRFRWFRYsWiZ2x6zJ8+HAcOnQIR48eBQAolUpcunQJzz77LO6++27885//RHx8PN544w3xnOXLl2P48OHw8PCw6D0QUcNTCIIgSB0EEZE9e+mll1BaWorFixfXW/bixYto27Yt9uzZg5YtW9ogOiKqC2uEiIju0GuvvYbw8HCz1g87deoUFixYwCSISCZYI0REREROizVCRERE5LSYCBEREZHTYiJERERETouJEBERETktJkJERETktJgIERERkdNiIkREREROi4kQEREROS0mQkREROS0/h97s4OeLKKC6wAAAABJRU5ErkJggg==", + "image/png": "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NvTRSUxMRGZmJoYMGYILFy5g+vTpKCoqQnR0NDZu3MgkiMiKVCoVUlNTazQVExE5GslrhIiIiIikIus+QkRERETWxESIiIiInBYTISIiInJaTISIiIjIaTERIiKLDRgwAL6+vhg0aJDUoRAR3REmQkRkseTkZHz22WdSh0FEdMeYCBGRxXr27AkvLy+pwyAiumNMhIiczPbt29G3b18EBQVBoVBg9erVNcpkZGQgIiICbm5uiImJwe7du20fKBGRDTARInIy5eXliIqKQkZGhsnjK1asQEpKClJTU7F3715ERUWhV69eOH/+vI0jJSKyPiZCRE4mPj4es2fPxoABA0wenzt3LsaMGYORI0ciMjISixYtgoeHB5YsWWLjSImIrI+JEBGJbt68idzcXMTFxYn7XFxcEBcXh127dkkYGRGRdTARIiLRxYsXodVqayxqrFarUVRUJG7HxcVh8ODBWL9+PUJCQpgkEZHdknz1eSKyPz/88IPUIRARNQjWCBGRqFmzZlAqlSguLjbaX1xcjICAAImiIiKyHiZCRCRydXVF586dkZ2dLe7T6XTIzs5G9+7dJYyMiMg62DRG5GTKyspw4sQJcTsvLw/79u2Dn58fwsLCkJKSgsTERHTp0gXdunVDeno6ysvLMXLkSAmjJiKyDoUgCILUQRCR7Wzbtg2xsbE19icmJiIzMxMA8MEHH+Cdd95BUVERoqOjMX/+fMTExNg4UiIi62MiRERERE6LfYSIiIjIaTERIiIiIqfFRIiIiIicFhMhIiIiclpMhIiIiMhpMREiIiIip8VEiIiIiJwWZ5aug06nw9mzZ+Hl5QWFQiF1OERERGQGQRBw9epVBAUFwcWl7jofJkJ1OHv2LEJDQ6UOg4iIiG5DQUEBQkJC6izDRKgOXl5eAPQfpLe3t8TREBERkTlKS0sRGhoqPsfrwkSoDobmMG9vbyZCREREdsacbi3sLE1EREROi4kQEREROS0mQkREROS0mAgRERGR02IiRERERE6LiRARERE5LSZCRERE5LSYCBEREZHTYiJERERETouJEBERETktJkJERETktOw2EdJqtXj99dfRsmVLuLu7o3Xr1pg1axYEQRDLCIKA6dOnIzAwEO7u7oiLi8Px48cljJqIiIjkxG4TobfffhsLFy7EBx98gD/++ANvv/025syZg//+979imTlz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X9x2dXXFvffeW+v1T548icrKSjzwwAPivsaNG6Nbt274448/AAB//PEHYmJijM7r3r17vbFfv37dqFkMAFJSUvDcc8/h888/R1xcHAYPHozWrVsblXF3d8e1a9fqvT4RWRcTISKSXGxsLBYuXAhXV1cEBQWhUSP9f01lZWVQKpXIzc2tMSKrSZMm4vfu7u5QKBQ2jdmgWbNmuHz5stG+GTNmYNiwYVi3bh02bNiA1NRUfPXVVxgwYIBYpqSkBM2bN7d1uERUDfsIEZHkPD09cddddyEsLExMggCgU6dO0Gq1OH/+PO666y6jV0BAgNnXb926NVxdXbFz505xX2VlJXJychAZGQkAaN++PXbv3m103v/+9796r92pUyccPny4xv67774bkyZNwubNm5GQkIClS5eKx27cuIGTJ0+iU6dOZr8HIrIOJkJEJFt33303hg8fjmeffRZZWVnIy8vD7t27kZaWhnXr1pl9HU9PT7zwwgt46aWXsHHjRhw+fBhjxozBtWvXMHr0aADA2LFjcfz4cbz00ks4evQoli1bZtY8RL169cLPP/8sbl+/fh3jxo3Dtm3bcPr0aezcuRM5OTlo3769WOZ///sfVCqVWU1vRGRdTISISNaWLl2KZ599FpMnT0bbtm3Rv39/5OTkICwszKLrvPXWWxg4cCCeeeYZ3HfffThx4gQ2bdoEX19fAPqRXKtWrcLq1asRFRWFRYsWiZ2x6zJ8+HAcOnQIR48eBQAolUpcunQJzz77LO6++27885//RHx8PN544w3xnOXLl2P48OHw8PCw6D0QUcNTCIIgSB0EEZE9e+mll1BaWorFixfXW/bixYto27Yt9uzZg5YtW9ogOiKqC2uEiIju0GuvvYbw8HCz1g87deoUFixYwCSISCZYI0REREROizVCRERE5LSYCBEREZHTYiJERERETouJEBERETktJkJERETktJgIERERkdNiIkREREROi4kQEREROS0mQkREROS0/h97s4OeLKKC6wAAAABJRU5ErkJggg==", "text/plain": [ "
" ] @@ -2934,7 +3513,7 @@ }, { "data": { - "image/png": "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kvTwww87pixo2rSpdu7cqTp1nP+zWbNmjaZPn66vv/5adru93GtMmjRJkydPliRNmDBBc+fOdWzLz8+X1Wp1LI8cOVIfffSRJOe/k7/85S+aPn26AgICtGbNGrVq1UqS1K5dO0er0uDBgzV79myX3zsA1FSFhYWKiopSgwYNLrmfVwcdV3Tr1q3CL5fy+Pn5lelKkKSgoCBTBp2LuzGuueYap/ffrFkzx8/FxcUVfj7lOXTokIYMGeIIGJdSp04dt36+kZGR2r17tyRp7969atCggctdkbNnz3aEHElKSkpy1Dp06FBH0Pnll1/09ddfq1+/fk7H9+nTR3369FFBQYHWrVun9evXa8mSJfr2228d+7z++uuaOnWqJDnuEjzPYrE4fTZnzpxx/NykSRMFBQXpwIEDeuWVVySVdkV26tTJ6fjz6tata8rfYwCoyOX+rffqCQObNGkiq9Va5nbgvLw8hYWFXdG5U1NTFRsbq86dO1/Rebzd2bNnnZYvbrG58LP19/d3OeRIpbddXxhyXn75ZR0/flyGYZR7m7Y73X777Y6fjx07pk8++cTlY9955x2n5VatWjkm4LuwNUyS0tLSKjxPcHCwevXqpZSUFGVmZjqNdyosLHR81u3bt3c67qeffnJa3rt3r+Pn8y2T+fn5OnfunCRp4sSJTpME7t+/3+m9MHEgAPzKq4OOr6+vOnXq5NQNYbfblZGRoa5du17RuUePHq0dO3aUGRhqdu+9957j58LCQv373/92LF/YSuCKo0ePOi0PHz5cwcHBkuToeqmstLQ0py/xffv2uXTcmDFjnLp/Ro0apS1btpTZr6SkRG+99ZYj8K1fv14//PCDy/UtWbJER44ccSwnJSVp48aN5e5bv359x88+Pj6O5tU777xT/v7+jm0LFy50/Lxjxw7t2LHDsXz33Xe7XBsAoCyPd10VFRVpz549juWsrCxt3rxZISEhio6OVnJyspKSkhQfH68uXbpoxowZOnnypOMuLFTOH//4R+3cuVPNmzfXggULnL60R44cWalztW7d2mm5T58+6t27t7Zu3aoFCxZUSb2uatu2raZMmaKnn35aUum4m/j4eN11113q2LFjmQkDExMTJclprIzFYtGgQYPKNIMWFRVp6dKlkkqD0vvvv6/x48dLkt599129++67atmypbp166arr75aFotFW7Zs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uLp166bly5fL39/fHW8LAADUMG6ZRyciIkILFizQ7373O7Vu3VovvPCCBg0apF27dqlz585edUs38+gAAFDzuPr97ZYWnQEDBmjw4MFq1aqVjh49qt69e0uSvvvuO11zzTXuuCQAAEAZbgk6f//73xUTE6Ps7GxNnz5d9evXlyTl5OTo0UcfdcclAQAAyvDaR0BUF7quAACoeTz+CIj33ntP3bp1U0REhPbv3y9JmjFjhj755BN3XRIAAMCJW4LO7NmzlZycrN69e+v48eOy2WySpIYNG2rGjBnuuCQAAEAZbgk6r732mv7xj3/omWeekdVqdayPj4/X999/745LAgAAlOGWoJOVlaWOHTuWWe/n56eTJ0+645IAAABluCXotGjRQps3by6zfvny5WrTpo07LgkAAFCGW24vT05O1ujRo3XmzBkZhqENGzZo3rx5mjp1qt566y13XBIAAKAMtwSdhx9+WAEBAfrjH/+oU6dOafDgwYqIiNCrr76q+++/3x2XBAAAKMPt8+icOnVKRUVFuuqqq9x5md+MeXQAAKh5PD6Pzrlz5/R///d/eu+99xQQECBJOnTokIqKitx1SQAAACdu6brav3+/evXqpQMHDqi4uFh33HGHGjRooGnTpqm4uFhz5sxxx2UBAACcuKVFZ/z48YqPj9exY8ccrTmS1L9/f2VkZLjjkgAAAGW4pUVnzZo1+s9//iNfX1+n9TExMTp48KA7LgkAAFCGW1p07Ha747EPF/r555/VoEEDd1wSAACgDLcEnTvvvNPpmVYWi0VFRUVKSUnR73//e3dcEgAAoAy33F6enZ2tXr16yTAM7d69W/Hx8dq9e7eaNGmir776yqtuNef2cgAAah5Xv7/dNo/OuXPnNH/+fG3ZskVFRUW64YYbNGTIEKfByd6AoAMAQM3jsaBTUlKi6667TkuWLKkRz7Ui6AAAUPN4bMLAunXr6syZM1V9WgAAgEpzy2Dk0aNHa9q0aTp37pw7Tg8AAOASt8yjk5mZqYyMDK1YsULt2rVTYGCg0/b09HR3XBYAAMCJW4JOw4YNNXDgQHecGgAAwGVuCTpz5851x2kBAAAqxW1PLwcAAPA0twSdjh076oYbbijz6tSpk2666SYlJSVp1apVlTrn3/72N1ksFk2YMMGx7syZMxo9erQaN26s+vXra+DAgcrLy6vidwMA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/PBDFRcXq2fPnnr99dcVGhrq8nUIOubnzQHiYgQKAHBNjQ86vXr10v3336/OnTvr3Llzevrpp7Vt2zbt2LFDgYGlT5UZNWqUli5dqrS0NAUHB2vMmDHy8fHR2rVrXb4OQad2IEAAgLnU+KBzsV9++UVXXXWVvvzyS91yyy0qKChQ06ZN9cEHH+je/w5u2Llzp9q0aaN169bpxhtvdOm8BB0AAGoeV7+/a8xdVwUFBZKkkJAQSdLGjRtVUlKixMRExz7XXXedoqOjtW7dugrPU1xcrMLCQqcXAAAwpxoRdOx2uyZMmKCbbrpJ119/vSQpNzdXvr6+atiwodO+oaGhys3NrfBcU6dOVXBwsOMVFRXlztIBAIAH1YigM3r0aG3btk0ffvjhFZ9r8uTJKigocLyys7OroEIAAOCNvP4REGPGjNGSJUv01VdfqVmzZo71YWFhOnv2rI4fP+7UqpOXl6ewsLAKz+fn5yc/Pz93lgwAALyE17boGIahMWPGaNGiRfriiy/UokULp+2dOnVS3bp1lZGR4Vi3a9cuHThwQF27dq3ucgEAgBfy2had0aNH64MPPtAnn3yiBg0aOMbdBAcHKyAgQMHBwXrooYeUnJyskJAQBQUFaezYseratavLd1wBAABz89rbyy0VPElw7ty5GjZsmKRfJwycN2+e04SBl+q6uhi3lwMAUPOYbh4ddyHoAABQ85huHh0AAIDKIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTMkXQSU1NVUxMjPz9/ZWQkKANGzZ4uiQAAOAFanzQmT9/vpKTk5WSkqJNmzapQ4cO6tmzpw4fPuzp0gAAgIfV+KDzyiuvaOTIkRo+fLhiY2M1Z84c1atXT2+//banSwMAAB5Wx9MFXImzZ89q48aNmjx5smOdj4+PEhMTtW7dunKPKS4uVnFxsWO5oKBAklRYWOjeYgEAQJU5/71tGMYl96vRQefIkSOy2WwKDQ11Wh8aGqqdO3eWe8zUqVP15z//ucz6qKgot9QIAADc58SJEwoODq5we40OOr/F5MmTlZyc7Fi22+3Kz89X48aNZbFYPFhZWZ07d1ZmZqany/AKNf2z8Mb6PVVTdV3XXdepyvNWxbkKCwsVFRWl7OxsBQUFVUld8Bxv/LfCUy73WRiGoRMnTigiIuKS56nRQadJkyayWq3Ky8tzWp+Xl6ewsLByj/Hz85Ofn5/TuoYNG7qrxCtitVr5h+u/avpn4Y31e6qm6rquu65TleetynMFBQV53e8YKs8b/63wFFc+i0u15JxXowcj+/r6qlOnTsrIyHCss9vtysjIUNeuXT1YWdUYPXq0p0vwGjX9s/DG+j1VU3Vd113XqcrzeuPvBTyL34lfVdVnYTEuN4rHy82fP19JSUl644031KVLF82YMUMfffSRdu7cWWbsDgCYTWFhoYKDg1VQUEBLAFCOGt11JUn33XeffvnlFz377LPKzc1VXFycli9fTsgBUCv4+fkpJSWlTJc8gFI1vkUHAACgIjV6jA4AAMClEHQAAIBpEXQAAIBpEXQAAIBpEXQAAIBpEXQAwISys7PVvXt3xcbGqn379vr44489XRLgEdxeDgAmlJOTo7y8PMXFxSk3N1edOnXSjz/+qMDAQE+XBlSrGj9hIACgrPDwcIWHh0uSwsLC1KRJE+Xn5xN0UOvQdQUAXuirr75S3759FRERIYvFosWLF5fZJzU1VTExMfL391dCQoI2bNhQ7rk2btwom82mqKgoN1cNeB+CDgB4oZMnT6pDhw5KTU0td/v8+fOVnJyslJQUbdq0SR06dFDPnj11+PBhp/3y8/M1dOhQvfnmm9VRNuB1GKMDAF7OYrFo0aJFuueeexzrEhIS1LlzZ82aNUuSZLfbFRUVpbFjx2rSpEmSpOLiYt1xxx0aOXKkHnzwQU+UDngcLToAUMOcPXtWGzduVGJiomOdj4+PEhMTtW7dOkmSYRgaNmyYbrvtNkIOajWCDgDUMEeOHJHNZlNoaKjT+tDQUOXm5kqS1q5dq/nz52vx4sWKi4tTXFycvv/+e0+UC3gUd10BgAl169ZNdrvd02UAHkeLDgDUME2aNJHValVeXp7T+ry8PIWFhXmoKsA7EXQAoIbx9fVVp06dlJGR4Vhnt9uVkZGhrl27erAywPvQdQUAXqioqEh79uxxLGdlZWnz5s0KCQlRdHS0kpOTlZSUpPj4eHXp0kUzZszQyZMnNXz4cA9WDXgfbi8HAC+0evVq9ejRo8z6pKQkpaWlSZJmzZqlF198Ubm5uYqLi9PMmTOVkJBQzZUC3o2gAwAATIsxOgAAwLQIOgAAwLQIOgAAwLQIOgAAwLQIOgAAwLQIOgAAwLQIOgAAwLQIOgAAwLQIOgAAwLQIOgBqpGHDhumee+65onOsXr1aFotFx48fv+R+GRkZatOmjWw222XPuXz5csXFxclut19RbQCqBkEHgFsNGzZMFotFFotFvr6+uuaaa/T888/r3LlzV3TeV1991fHMJ3d78skn9cc//lFWq/Wy+/bq1Ut169bV+++/Xw2VAbgcgg4At+vVq5dycnK0e/duTZw4Uc8995xefPHF33Qum80mu92u4OBgNWzYsGoLLcfXX3+tvXv3auDAgS4fM2zYMM2cOdONVQFwFUEHgNv5+fkpLCxMzZs316hRo5SYmKhPP/1UklRcXKzHH39ckZGRCgwMVEJCglavXu04Ni0tTQ0bNtSnn36q2NhY+fn56cCBA2W6roqLizVu3DhdddVV8vf3V7du3ZSZmelUx2effaZrr71WAQEB6tGjh/bt23fZ2j/88EPdcccd8vf3d6zbsmWLevTooQYNGigoKEidOnXSt99+69jet29fffvtt9q7d+9v+8AAVBmCDoBqFxAQoLNnz0qSxowZo3Xr1unDDz/U1q1bNWjQIPXq1Uu7d+927H/q1ClNmzZNb731lrZv366rrrqqzDmffPJJLVy4UO+88442bdqka665Rj179lR+fr4kKTs7WwMGDFDfvn21efNmPfzww5o0adJla12zZo3i4+Od1g0ZMkTNmjVTZmamNm7cqEmTJqlu3bqO7dHR0QoNDdWaNWt+0+cDoOrU8XQBAGoPwzCUkZGhzz//XGPHjtWBAwc0d+5cHThwQBEREZKkxx9/XMuXL9fcuXP117/+VZJUUlKi119/XR06dCj3vCdPntTs2bOVlpam3r17S5L+8Y9/aOXKlfrnP/+pJ554QrNnz1bLli318ssvS5Jat26t77//XtOmTbtkzfv373fUdt6BAwf0xBNP6LrrrpMktWrVqsxxERER2r9/fyU+HQDuQNAB4HZLlixR/fr1VVJSIrvdrsGDB+u5557T6tWrZbPZdO211zrtX1xcrMaNGzuWfX191b59+wrPv3fvXpWUlOimm25yrKtbt666dOmiH374QZL0ww8/KCEhwem4rl27Xrb206dPO3VbSVJycrIefvhhvffee0pMTNSgQYPUsmVLp30CAgJ06tSpy54fgHsRdAC4XY8ePTR79mz5+voqIiJCdeqU/tNTVFQkq9WqjRs3lrmjqX79+o6fAwICZLFYqrXm85o0aaJjx445rXvuuec0ePBgLV26VMuWLVNKSoo+/PBD9e/f37FPfn6+mjZtWt3lArgIY3QAuF1gYKCuueYaRUdHO0KOJHXs2FE2m02HDx/WNddc4/QKCwtz+fwtW7aUr6+v1q5d61hXUlKizMxMxcbGSpLatGmjDRs2OB33zTffXPbcHTt21I4dO8qsv/baa/XYY49pxYoVGjBggObOnevYdubMGe3du1cdO3Z0+T0AcA+CDgCPufbaazVkyBANHTpU6enpysrK0oYNGzR16lQtXbrU5fMEBgZq1KhReuKJJ7R8+XLt2LFDI0eO1KlTp/TQQw9Jkh555BHt3r1bTzzxhHbt2qUPPvjApXl4evbsqa+//tqxfPr0aY0ZM0arV6/W/v37tXbtWmVmZqpNmzaOfb755hv5+fm51DUGwL0IOgA8au7cuRo6dKgmTpyo1q1b65577lFmZqaio6MrdZ6//e1vGjhwoB588EHdcMMN2rNnjz7//HM1atRIUumdUAsXLtTixYvVoUMHzZkzxzHY+VKGDBmi7du3a9euXZIkq9Wqo0ePaujQobr22mv1hz/8Qb1799af//xnxzHz5s3TkCFDVK9evUq9BwBVz2IYhuHpIgDAmz3xxBMqLCzUG2+8cdl9jxw5otatW+vbb79VixYtqqE6AJdCiw4AXMYzzzyj5s2bu/T8qn379un1118n5ABeghYdAABgWrToAAAA0yLoAAAA0yLoAAAA0yLoAAAA0yLoAAAA0yLoAAAA0yLoAAAA0yLoAAAA0yLoAAAA0/r/eoC3NgmpG2gAAAAASUVORK5CYII=", + "image/png": "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kvTwww87pixo2rSpdu7cqTp1nP+zWbNmjaZPn66vv/5adru93GtMmjRJkydPliRNmDBBc+fOdWzLz8+X1Wp1LI8cOVIfffSRJOe/k7/85S+aPn26AgICtGbNGrVq1UqS1K5dO0er0uDBgzV79myX3zsA1FSFhYWKiopSgwYNLrmfVwcdV3Tr1q3CL5fy+Pn5lelKkKSgoCBTBp2LuzGuueYap/ffrFkzx8/FxcUVfj7lOXTokIYMGeIIGJdSp04dt36+kZGR2r17tyRp7969atCggctdkbNnz3aEHElKSkpy1Dp06FBH0Pnll1/09ddfq1+/fk7H9+nTR3369FFBQYHWrVun9evXa8mSJfr2228d+7z++uuaOnWqJDnuEjzPYrE4fTZnzpxx/NykSRMFBQXpwIEDeuWVVySVdkV26tTJ6fjz6tata8rfYwCoyOX+rffqCQObNGkiq9Va5nbgvLw8hYWFXdG5U1NTFRsbq86dO1/Rebzd2bNnnZYvbrG58LP19/d3OeRIpbddXxhyXn75ZR0/flyGYZR7m7Y73X777Y6fjx07pk8++cTlY9955x2n5VatWjkm4LuwNUyS0tLSKjxPcHCwevXqpZSUFGVmZjqNdyosLHR81u3bt3c67qeffnJa3rt3r+Pn8y2T+fn5OnfunCRp4sSJTpME7t+/3+m9MHEgAPzKq4OOr6+vOnXq5NQNYbfblZGRoa5du17RuUePHq0dO3aUGRhqdu+9957j58LCQv373/92LF/YSuCKo0ePOi0PHz5cwcHBkuToeqmstLQ0py/xffv2uXTcmDFjnLp/Ro0apS1btpTZr6SkRG+99ZYj8K1fv14//PCDy/UtWbJER44ccSwnJSVp48aN5e5bv359x88+Pj6O5tU777xT/v7+jm0LFy50/Lxjxw7t2LHDsXz33Xe7XBsAoCyPd10VFRVpz549juWsrCxt3rxZISEhio6OVnJyspKSkhQfH68uXbpoxowZOnnypOMuLFTOH//4R+3cuVPNmzfXggULnL60R44cWalztW7d2mm5T58+6t27t7Zu3aoFCxZUSb2uatu2raZMmaKnn35aUum4m/j4eN11113q2LFjmQkDExMTJclprIzFYtGgQYPKNIMWFRVp6dKlkkqD0vvvv6/x48dLkt599129++67atmypbp166arr75aFotFW7Zs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uLp166bly5fL39/fHW8LAADUMG6ZRyciIkILFizQ7373O7Vu3VovvPCCBg0apF27dqlz585edUs38+gAAFDzuPr97ZYWnQEDBmjw4MFq1aqVjh49qt69e0uSvvvuO11zzTXuuCQAAEAZbgk6f//73xUTE6Ps7GxNnz5d9evXlyTl5OTo0UcfdcclAQAAyvDaR0BUF7quAACoeTz+CIj33ntP3bp1U0REhPbv3y9JmjFjhj755BN3XRIAAMCJW4LO7NmzlZycrN69e+v48eOy2WySpIYNG2rGjBnuuCQAAEAZbgk6r732mv7xj3/omWeekdVqdayPj4/X999/745LAgAAlOGWoJOVlaWOHTuWWe/n56eTJ0+645IAAABluCXotGjRQps3by6zfvny5WrTpo07LgkAAFCGW24vT05O1ujRo3XmzBkZhqENGzZo3rx5mjp1qt566y13XBIAAKAMtwSdhx9+WAEBAfrjH/+oU6dOafDgwYqIiNCrr76q+++/3x2XBAAAKMPt8+icOnVKRUVFuuqqq9x5md+MeXQAAKh5PD6Pzrlz5/R///d/eu+99xQQECBJOnTokIqKitx1SQAAACdu6brav3+/evXqpQMHDqi4uFh33HGHGjRooGnTpqm4uFhz5sxxx2UBAACcuKVFZ/z48YqPj9exY8ccrTmS1L9/f2VkZLjjkgAAAGW4pUVnzZo1+s9//iNfX1+n9TExMTp48KA7LgkAAFCGW1p07Ha747EPF/r555/VoEEDd1wSAACgDLcEnTvvvNPpmVYWi0VFRUVKSUnR73//e3dcEgAAoAy33F6enZ2tXr16yTAM7d69W/Hx8dq9e7eaNGmir776yqtuNef2cgAAah5Xv7/dNo/OuXPnNH/+fG3ZskVFRUW64YYbNGTIEKfByd6AoAMAQM3jsaBTUlKi6667TkuWLKkRz7Ui6AAAUPN4bMLAunXr6syZM1V9WgAAgEpzy2Dk0aNHa9q0aTp37pw7Tg8AAOASt8yjk5mZqYyMDK1YsULt2rVTYGCg0/b09HR3XBYAAMCJW4JOw4YNNXDgQHecGgAAwGVuCTpz5851x2kBAAAqxW1PLwcAAPA0twSdjh076oYbbijz6tSpk2666SYlJSVp1apVlTrn3/72N1ksFk2YMMGx7syZMxo9erQaN26s+vXra+DAgcrLy6vidwMAAGoqtwSdXr166aefflJgYKB69OihHj16qH79+tq7d686d+6snJwcJSYm6pNPPnHpfJmZmXrjjTfUvn17p/WPPfaY/v3vf+vjjz/Wl19+qUOHDmnAgAHueEsAAKAGcssYnSNHjmjixIn605/+5LT+hRde0P79+7VixQqlpKRoypQpuvvuuy95rqKiIg0ZMkT/+Mc/9MILLzjWFxQU6J///Kc++OAD3XbbbZJKxwa1adNG33zzjW688caqf2MAAKBGcUuLzkcffaQHHnigzPr7779fH330kSTpgQce0K5duy57rtGjR6tPnz5KTEx0Wr9x40aVlJQ4rb/uuusUHR2tdevWVXi+4uJiFRYWOr0AAIA5uSXo+Pv76z//+U+Z9f/5z3/k7+8vSbLb7Y6fK/Lhhx9q06ZNmjp1apltubm58vX1VcOGDZ3Wh4aGKjc3t8JzTp06VcHBwY5XVFSUC+8IAADURG7puho7dqweeeQRbdy4UZ07d5ZUOs7mrbfe0tNPPy1J+vzzzxUXF1fhObKzszV+/HitXLnysoGoMiZPnqzk5GTHcmFhIWEHAACTctvTy99//33NmjXL0T3VunVrjR07VoMHD5YknT59WhaLpcIQs3jxYvXv319Wq9WxzmazyWKxyMfHR59//rkSExN17Ngxp1ad5s2ba8KECXrsscdcqpOHegIAUPN47OnlVeXEiRPav3+/07rhw4fruuuu01NPPaWoqCg1bdpU8+bNc8zCvGvXLl133XVat26dy4ORCToAANQ8rn5/u6XrSpKOHz+uBQsW6KefftLjjz+ukJAQbdq0SaGhoYqMjLzs8Q0aNND111/vtC4wMFCNGzd2rH/ooYeUnJyskJAQBQUFaezYseratSt3XAEAAEluCjpbt25VYmKigoODtW/fPj388MMKCQlRenq6Dhw4oHfffbdKrvP3v/9dPj4+GjhwoIqLi9WzZ0+9/vrrVXJuAABQ87ml6yoxMVE33HCDpk+frgYNGmjLli26+uqr9Z///EeDBw/Wvn37qvqSvxldVwAA1Dyufn+75fbyzMxM/b//9//KrI+MjLzkrd8AAABVyS1Bx8/Pr9yJ+H788Uc1bdrUHZcEAAAowy1Bp1+/fnr++edVUlIiSbJYLDpw4ICeeuopxx1SAAAA7uaWoPPyyy+rqKhITZs21enTp3XrrbfqmmuuUYMGDfSXv/zFHZcEAAAowy13XQUHB2vlypVau3attmzZoqKiIt1www1lnlcFAADgTlUedOx2u9LS0pSenq59+/bJYrGoRYsWCgsLk2EYslgsVX1JAACAclVp15VhGOrXr58efvhhHTx4UO3atVPbtm21f/9+DRs2TP3796/KywEAAFxSlbbopKWl6auvvlJGRoZ69OjhtO2LL77QPffco3fffVdDhw6tyssCAACUq0pbdObNm6enn366TMiRpNtuu02TJk3S+++/X5WXBAAAqFCVBp2tW7eqV69eFW7v3bu3tmzZUpWXBAAAqFCVdl3l5+crNDS0wu2hoaE6duxYVV4SQHWw2aQ1a6ScHCk8XLr5Zslq9XRVKAd/VYCzKg06NptNdepUfEqr1apz585V5SUBuFt6ujR+vPTzz7+ua9ZMevVVacAAz9V1IS/7dredten719fo1N4c1WsZrnaP3iyrr/vrqQl/VUB1q9KHevr4+Kh3797y8/Mrd3txcbGWL18um81WVZe8YjzUE7iE9HTp3nuli/+ZOD9NxIIFnv8G9bJv92+eTFf0K+MVYfu1nkPWZjqQ/KpunO6eeux26Z13pIceqviv6uOPJSamh5m4+v1dpUFn+PDhLu03d+7cqrrkFSPoABWw2aSYGOcAcSGLRYqMlLKypEu05LqNK9/u//qX9MADvy67uZzV49LVPfVeSYbTAEi7Sq//9YQFuvmVAVVajt3u3HjlI5tu1hqFK0c5Ctca3Sy7rGrWTNq3j24smIdHgk5NRNCBV/GmLpgvvpBuv/3y+332mdS7t/vrudDF3+6XUlAgufm/bbtd8rWWaL+aK1w55d7lYZdFBxWp4KNZCgqpumB44sSvb6+/0vWqxitKv4bTbDXTeL2qRRqgVauk7t2r7NKAR7n6/e2WZ10B+A3S00tbUHr0kAYPLv0zJqZ0vSfs2+fafjk5bi2jXCdPur7v11+7r47z7Hadk68iKwg5kuQjQ1H6WbtSV1bppX18JIvsGqa5WqB7FSnnFrhIHdQC3av+WuiRvyrA0zzQ3gx4gDe1lJSnorEwBw+WrvfEWJjwcNf2i4lxaxnl8qnE/6NVw52ep4+cVKCL+547ULVpo56/XXZV/Lvso9LfqVc1QXuvuke6xL6AGdGiA/PztpaSi5WUSGPGlA050q/rxo+XqvuOxTvukCIjZaj8ASWGLFJUlHTrrdVblyTVqyf70s9c2tWIiHRzMapU8PK7LqZKL2055VrrVpR+1s1aU6XXBmoCgg7My26X5s6V7r1XxkUDao3zLSULF3qouP+y2yVf30t3/xhG6YDglVXb5XFZderoPw/MlKFfB9OeZ5dFhqSvBs6Q4VP9LQR2w6K6fe5UtpqVqc2xjyw6oCidiLvZ7fXUa1JPhdkFyvGJvGQ9h6xR6jC2ioNhJUKW9TB9V6h9CDowp/ODVUeMkIyybRIWwygNEBMmlHZreUplxppU8wCLkhLpppcG6F4t0EE5t4r8rGa6Vwt064wBOnGiWsuSVPqx2WXVeL0qqfwgJkkTNENfr3N/ELP4WBTULEj7J868ZD0HkmdU/Xw69eqVDgh3havdkYCJEHRgTq4GiJ9/Lh274ymV+L9xW1SM++oox/kGpEUaoBjtU3et0gP6QN21Si2UpUUqHTNUHWN9L3b+Y1ukSwexRRpQHUN0HG6cPkAbnligXKtzPTnWZtrwxAL3zKNjsUh33lk6d1BF961b/tvNeLP7W7cAb8NgZJhTJQKE/WDFd8q4m92/noJVoB8UqwgdcgwcddpHFv2sZtpefKuq8ybuvLwLa7DqS3Uvdz9PPNXlfCPG739fGnY+0d3lzh0jlU71U51unD5Athfu1uaLZkaOdOfMyFZr6QSJ995bGmouHO91PvzMmOFdA/CBakLQgSnZ/evp9/pMy/X7y+679Zdwxbm/pHKdPGVRkYI0TjO1QPfKLotT2LmwC+auw9X7JeXqzVTVHSQk50aMgwclu1E2iFkspds90Yhh9bUqbkL3y+5XpQYMKL07r7xZomfM8PwM1oCH0HUFUzp5yqKVcm2w6s6mnmvOr0wXTHXfxX3LLd7dG3K+EeN8LReqtY0YAwaUzn+0apX0wQelf2ZlEXJQqxF0YEo+Pq4PVg2L9Nw3Yb16pRP3RkZKiy3lj4VZbBngkbu4a0KQON+IcXGrUrNm3vEYLo+wWkunP37ggdI/a1XSA8riERA8AsKUDKN0avzYWCnhYLpmXDQt/gFF6THNUGbUAGVlef674Px8gVL5wys8+aVd3jMzo6K8qzfE2+eDBFD1eNaViwg65nY+QPgYNnW7YLDq17pZdovVq/6v35sDBUECgLep8UFn6tSpSk9P186dOxUQEKDf/e53mjZtmlq3bu3Y58yZM5o4caI+/PBDFRcXq2fPnnr99dcVGhrq8nUIOubnzQHiYgQKAHBNjQ86vXr10v3336/OnTvr3Llzevrpp7Vt2zbt2LFDgYGlT5UZNWqUli5dqrS0NAUHB2vMmDHy8fHR2rVrXb4OQad2IEAAgLnU+KBzsV9++UVXXXWVvvzyS91yyy0qKChQ06ZN9cEHH+je/w5u2Llzp9q0aaN169bpxhtvdOm8BB0AAGoeV7+/a8xdVwUFBZKkkJAQSdLGjRtVUlKixMRExz7XXXedoqOjtW7dugrPU1xcrMLCQqcXAAAwpxoRdOx2uyZMmKCbbrpJ119/vSQpNzdXvr6+atiwodO+oaGhys3NrfBcU6dOVXBwsOMVFRXlztIBAIAH1YigM3r0aG3btk0ffvjhFZ9r8uTJKigocLyys7OroEIAAOCNvP4REGPGjNGSJUv01VdfqVmzZo71YWFhOnv2rI4fP+7UqpOXl6ewsLAKz+fn5yc/Pz93lgwAALyE17boGIahMWPGaNGiRfriiy/UokULp+2dOnVS3bp1lZGR4Vi3a9cuHThwQF27dq3ucgEAgBfy2had0aNH64MPPtAnn3yiBg0aOMbdBAcHKyAgQMHBwXrooYeUnJyskJAQBQUFaezYseratavLd1wBAABz89rbyy0VPElw7ty5GjZsmKRfJwycN2+e04SBl+q6uhi3lwMAUPOYbh4ddyHoAABQ85huHh0AAIDKIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTMkXQSU1NVUxMjPz9/ZWQkKANGzZ4uiQAAOAFanzQmT9/vpKTk5WSkqJNmzapQ4cO6tmzpw4fPuzp0gAAgIfV+KDzyiuvaOTIkRo+fLhiY2M1Z84c1atXT2+//banSwMAAB5Wx9MFXImzZ89q48aNmjx5smOdj4+PEhMTtW7dunKPKS4uVnFxsWO5oKBAklRYWOjeYgEAQJU5/71tGMYl96vRQefIkSOy2WwKDQ11Wh8aGqqdO3eWe8zUqVP15z//ucz6qKgot9QIAADc58SJEwoODq5we40OOr/F5MmTlZyc7Fi22+3Kz89X48aNZbFYPFhZWZ07d1ZmZqany/AKNf2z8Mb6PVVTdV3XXdepyvNWxbkKCwsVFRWl7OxsBQUFVUld8Bxv/LfCUy73WRiGoRMnTigiIuKS56nRQadJkyayWq3Ky8tzWp+Xl6ewsLByj/Hz85Ofn5/TuoYNG7qrxCtitVr5h+u/avpn4Y31e6qm6rquu65TleetynMFBQV53e8YKs8b/63wFFc+i0u15JxXowcj+/r6qlOnTsrIyHCss9vtysjIUNeuXT1YWdUYPXq0p0vwGjX9s/DG+j1VU3Vd113XqcrzeuPvBTyL34lfVdVnYTEuN4rHy82fP19JSUl644031KVLF82YMUMfffSRdu7cWWbsDgCYTWFhoYKDg1VQUEBLAFCOGt11JUn33XeffvnlFz377LPKzc1VXFycli9fTsgBUCv4+fkpJSWlTJc8gFI1vkUHAACgIjV6jA4AAMClEHQAAIBpEXQAAIBpEXQAAIBpEXQAAIBpEXQAwISys7PVvXt3xcbGqn379vr44489XRLgEdxeDgAmlJOTo7y8PMXFxSk3N1edOnXSjz/+qMDAQE+XBlSrGj9hIACgrPDwcIWHh0uSwsLC1KRJE+Xn5xN0UOvQdQUAXuirr75S3759FRERIYvFosWLF5fZJzU1VTExMfL391dCQoI2bNhQ7rk2btwom82mqKgoN1cNeB+CDgB4oZMnT6pDhw5KTU0td/v8+fOVnJyslJQUbdq0SR06dFDPnj11+PBhp/3y8/M1dOhQvfnmm9VRNuB1GKMDAF7OYrFo0aJFuueeexzrEhIS1LlzZ82aNUuSZLfbFRUVpbFjx2rSpEmSpOLiYt1xxx0aOXKkHnzwQU+UDngcLToAUMOcPXtWGzduVGJiomOdj4+PEhMTtW7dOkmSYRgaNmyYbrvtNkIOajWCDgDUMEeOHJHNZlNoaKjT+tDQUOXm5kqS1q5dq/nz52vx4sWKi4tTXFycvv/+e0+UC3gUd10BgAl169ZNdrvd02UAHkeLDgDUME2aNJHValVeXp7T+ry8PIWFhXmoKsA7EXQAoIbx9fVVp06dlJGR4Vhnt9uVkZGhrl27erAywPvQdQUAXqioqEh79uxxLGdlZWnz5s0KCQlRdHS0kpOTlZSUpPj4eHXp0kUzZszQyZMnNXz4cA9WDXgfbi8HAC+0evVq9ejRo8z6pKQkpaWlSZJmzZqlF198Ubm5uYqLi9PMmTOVkJBQzZUC3o2gAwAATIsxOgAAwLQIOgAAwLQIOgAAwLQIOgAAwLQIOgAAwLQIOgAAwLQIOgAAwLQIOgAAwLQIOgAAwLQIOgBqpGHDhumee+65onOsXr1aFotFx48fv+R+GRkZatOmjWw222XPuXz5csXFxclut19RbQCqBkEHgFsNGzZMFotFFotFvr6+uuaaa/T888/r3LlzV3TeV1991fHMJ3d78skn9cc//lFWq/Wy+/bq1Ut169bV+++/Xw2VAbgcgg4At+vVq5dycnK0e/duTZw4Uc8995xefPHF33Qum80mu92u4OBgNWzYsGoLLcfXX3+tvXv3auDAgS4fM2zYMM2cOdONVQFwFUEHgNv5+fkpLCxMzZs316hRo5SYmKhPP/1UklRcXKzHH39ckZGRCgwMVEJCglavXu04Ni0tTQ0bNtSnn36q2NhY+fn56cCBA2W6roqLizVu3DhdddVV8vf3V7du3ZSZmelUx2effaZrr71WAQEB6tGjh/bt23fZ2j/88EPdcccd8vf3d6zbsmWLevTooQYNGigoKEidOnXSt99+69jet29fffvtt9q7d+9v+8AAVBmCDoBqFxAQoLNnz0qSxowZo3Xr1unDDz/U1q1bNWjQIPXq1Uu7d+927H/q1ClNmzZNb731lrZv366rrrqqzDmffPJJLVy4UO+88442bdqka665Rj179lR+fr4kKTs7WwMGDFDfvn21efNmPfzww5o0adJla12zZo3i4+Od1g0ZMkTNmjVTZmamNm7cqEmTJqlu3bqO7dHR0QoNDdWaNWt+0+cDoOrU8XQBAGoPwzCUkZGhzz//XGPHjtWBAwc0d+5cHThwQBEREZKkxx9/XMuXL9fcuXP117/+VZJUUlKi119/XR06dCj3vCdPntTs2bOVlpam3r17S5L+8Y9/aOXKlfrnP/+pJ554QrNnz1bLli318ssvS5Jat26t77//XtOmTbtkzfv373fUdt6BAwf0xBNP6LrrrpMktWrVqsxxERER2r9/fyU+HQDuQNAB4HZLlixR/fr1VVJSIrvdrsGDB+u5557T6tWrZbPZdO211zrtX1xcrMaNGzuWfX191b59+wrPv3fvXpWUlOimm25yrKtbt666dOmiH374QZL0ww8/KCEhwem4rl27Xrb206dPO3VbSVJycrIefvhhvffee0pMTNSgQYPUsmVLp30CAgJ06tSpy54fgHsRdAC4XY8ePTR79mz5+voqIiJCdeqU/tNTVFQkq9WqjRs3lrmjqX79+o6fAwICZLFYqrXm85o0aaJjx445rXvuuec0ePBgLV26VMuWLVNKSoo+/PBD9e/f37FPfn6+mjZtWt3lArgIY3QAuF1gYKCuueYaRUdHO0KOJHXs2FE2m02HDx/WNddc4/QKCwtz+fwtW7aUr6+v1q5d61hXUlKizMxMxcbGSpLatGmjDRs2OB33zTffXPbcHTt21I4dO8qsv/baa/XYY49pxYoVGjBggObOnevYdubMGe3du1cdO3Z0+T0AcA+CDgCPufbaazVkyBANHTpU6enpysrK0oYNGzR16lQtXbrU5fMEBgZq1KhReuKJJ7R8+XLt2LFDI0eO1KlTp/TQQw9Jkh555BHt3r1bTzzxhHbt2qUPPvjApXl4evbsqa+//tqxfPr0aY0ZM0arV6/W/v37tXbtWmVmZqpNmzaOfb755hv5+fm51DUGwL0IOgA8au7cuRo6dKgmTpyo1q1b65577lFmZqaio6MrdZ6//e1vGjhwoB588EHdcMMN2rNnjz7//HM1atRIUumdUAsXLtTixYvVoUMHzZkzxzHY+VKGDBmi7du3a9euXZIkq9Wqo0ePaujQobr22mv1hz/8Qb1799af//xnxzHz5s3TkCFDVK9evUq9BwBVz2IYhuHpIgDAmz3xxBMqLCzUG2+8cdl9jxw5otatW+vbb79VixYtqqE6AJdCiw4AXMYzzzyj5s2bu/T8qn379un1118n5ABeghYdAABgWrToAAAA0yLoAAAA0yLoAAAA0yLoAAAA0yLoAAAA0yLoAAAA0yLoAAAA0yLoAAAA0yLoAAAA0/r/eoC3NgmpG2gAAAAASUVORK5CYII=", "text/plain": [ "
" ] @@ -2960,7 +3539,7 @@ }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkcAAAG9CAYAAAAfotIVAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABK2ElEQVR4nO3de3yMd97/8fdkyEFIiJAECaqqzlFBbdliU4fVquO2ZSt6cP+2DaVRLe3upq1uLT2pSulhSdst1Tq11TrdWUqtElG0lKJxKBIlTJogYub6/ZHbdEaCCTOZmXg9H495yHX6fj8zYq6P7+kyGYZhCAAAAJKkAG8HAAAA4EtIjgAAAByQHAEAADggOQIAAHBAcgQAAOCA5AgAAMAByREAAIADkiMAAAAHJEcAAAAOSI4AAAAckBwBAAA48Pvk6NChQ+rWrZtatGihNm3a6JNPPvF2SKhgubm5mjRpkm6//XZFRUUpMDBQoaGhatmypR566CEtW7ZMl3qE4MsvvyyTyeT0Wrp06WXr+/nnnzV27Fi1bNlSoaGhCgoKUnR0tFq3bq177rlHkydP1smTJ0tdZ7Va9dZbb6lLly6qVauWQkJC1LRpU40ZM0ZHjx694vs8f/682rdv7xTriBEjXPqMAADlYPi5I0eOGN9++61hGIZx9OhRo169ekZBQYF3g0KFSUtLM4KDgw1Jl31lZ2eXeX3Lli1LnTto0KBL1peVlWWEh4dfsb4Lv5MXnDlzxujZs+clz4+IiDAyMzMv+16ff/75UtclJSWV8xMDAFxJlYpIwDwpJiZGMTExkqTo6GhFRkYqLy9PoaGhXo4MnjZ16lQ99dRT9m2z2ay+ffvaW1f27t2rFStWKDc3t8zrMzMztWPHjlL7P//8c+Xl5SkiIqLUsUcffVQWi0WSFBoaqnvuuUc33HCDiouLtWfPHq1bt06HDh0qdd0zzzyjlStX2uN88MEHFRMTo/T0dB08eFB5eXkaMmSIvv/++zJ/d7dv365Jkya59sEAAK6Nt7Ozr776yrjzzjuNmJgYQ5KxePHiUufMmDHDaNiwoREUFGR07NjR2LhxY5llbd682WjZsqWHI/YfK1euNAYNGmTExsYagYGBRrVq1YxOnToZs2fPNmw221WVuXr1auPBBx802rVrZ0RHRxuBgYFGSEiI0aRJE2PEiBHG9u3by1XenDlzXGrhudiOHTsMs9lsv65u3brGli1bSp137tw54+233zZyc3NLHXv00Uft18fFxTm1QL3xxhulzrdYLE6xpqenlxnbpk2bjF9++cW+feLECSMoKMh+3dNPP20/tmvXLsNkMtmPvfnmm2W+h/j4eEOSkZCQYNSvX5+WIwDwIK8nR19++aXxzDPPGIsWLSozOfroo4+MwMBAY/bs2caOHTuMkSNHGjVr1ix1sztx4oTRokULY/369RUYvW86f/68042/rNc999xzVQnSuHHjLltuYGCgsWrVKpfLu9rk6C9/+YvTdQsXLizX+zh79qxRq1Ytp4RlwIAB9u1bbrml1DUnTpxwqvOJJ54wzp8/f8W65s2b53RdVlaW0/HWrVvbj/Xu3bvU9ampqYYkIygoyNixY4fRsGFDkiMA8CCvd6v16dNHffr0ueTxV199VSNHjtQDDzwgSZo1a5a++OILzZ49WxMmTJAkFRUVqX///powYYJ+97vfXba+oqIiFRUV2bdtNpvy8vJUu3ZtmUwmN7wj73vhhRf05ptvSpJMJpP+9Kc/KTY2Vp999pl+/PFHSdL8+fN166236sEHHyxX2VWqVFGXLl3UokUL1apVS8HBwcrLy9PKlSu1e/dunTt3TqNGjdKmTZtcKu/MmTNO27/++qvy8/OveN2qVavsP9esWVM9evRw6boLFi1a5DRo+s4771TTpk21ePFiSdKWLVu0YcMGtWzZ0n5OlSpVFBcXp4MHD0oqGcw9e/Zs3XrrrWrTpo06dOigrl27KigoyKmuzMxMp+3IyEinWOPi4vTdd99JkrZt2+Z0bPv27XrxxRclSU8//bQaNGjgNLi8uLi4XO8bACoLwzD066+/ql69egoIcPP8Mm9nZ450UctRUVGRYTabS7UmDR8+3OjXr59hGIZhs9mMe++910hNTXWpjgv/C+fFixcvXrx4+f/r0KFDbspCfuP1lqPLOX78uKxWq6Kiopz2R0VFadeuXZKk9evXa/78+WrTpo2WLFkiSfrggw/UunXrMsucOHGiUlJS7NsWi0VxcXE6dOiQwsLCPPNGKtDatWt111132be///57xcbG2reTk5P173//W5IUFBSkY8eOlav8//znP3rsscfKHHTsaNWqVerYsWO5yi6PmJgYnT59WpKUkJCgjIwMl6/NyclRixYtZLVaJUl//etfNX78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6vwLn+GFV3p6epmxbdq0yfjll1/s2ydOnDCCgoLs1z399NP2Y7t27TJMJpP92Jtvvlnme4iPjzckGQkJCUb9+vVpOQKA64Qn798+mxzl5+cbY8aMsd+cb7jhBuOZZ54xioqK7OfYbDbjb3/7mxEVFWUEBQUZf/jDH4zdu3eXq57Klhz95S9/cUpUFi5cWK7rz549a9SqVcspYRkwYIB9+5Zbbil1zYkTJ5zqfOKJJ4zz589fsa558+Y5XZeVleV0vHXr1vZjvXv3LnV9amqqIckICgoyduzYYTRs2JDkCACuE9dlclRRKlty1LRpU3uCUKtWLcNqtZbr+vnz5zslLNu3by9z38UcExNJRu3atY1+/foZqampxvLly42zZ8+WumbixIlO15w8edLp+N13320/Vq9ePadj3377rVG1alVDkjFlypRSMZAcAUDl5sn7t8/OVsPVOXz4sP3nm266qdS4rStJT0+3/9yyZUu1bt1ad911l6pXr17mORe89tprMplM9u0TJ07os88+03PPPafevXsrKipKzz//vKxWq/2cvLw8pzIuXsSrRo0aTuVdUFxcrBEjRqi4uFi33nqrxo0bV673CADA5ZAcwe7o0aP2wdGS7KuMh4SEqF+/fvb9//73v3X+/HmnawcMGKD//Oc/6tGjR5kJmcViUWpq6mUHTxsXLStw8fYFkyZN0rZt2xQSEqL09HSZzeYrvzkAAFxEclTJ1K9f3/7zjz/+eMkEoyzvv/++U8uO4yNY7rvvPvvPx44d05dfflnq+m7duikjI0N5eXlatmyZnn32WSUkJDid89prr9l/rl27ttOxX3/99ZLbkZGRkqSDBw9q8uTJkqQXXnhBzZo1c/n9AQDgCpKjSuYPf/iD/eeTJ0/q008/dfnaixfYbNq0qX1RxbvuusvpWFldaxeEh4erd+/eSk1NVWZmph588EH7sfz8fPsSAm3atHG67qeffnLa3rdvn/3n1q1bSyrpirvQajVu3DinhR8PHDjg9F5YDBIAcDVIjiqZUaNGOXUzPfLII9q2bVup84qLi/Xuu+/q2LFjkqSNGzfqhx9+cLmepUuX6vjx4/btpKQkZWVllXmu43ilgIAA+1iinj17Kjg42H5s4cKF9p937typnTt32rfvvvtul2MDAOBa+OwikLg6LVu21KRJk/T0009LKnkGXUJCgu68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sGFDPfLII0pMTNRnn30mSSoqKtITTzyh+vXrKzQ0VJ06ddKaNWvs16anp6tmzZr67LPP1KJFCwUFBengwYOlutWKior02GOPqW7dugoODlaXLl2UmZnpFMeXX36pm266SSEhIerevbv2799/xdg/+ugj3XHHHQoODrbv27Ztm7p3764aNWooLCxM7du31+bNm+3H77rrLm3evFn79u27ug8MgFeRHAGocCEhITp37pwkadSoUdqwYYM++ugjbd++XUOGDFHv3r21Z88e+/mnT5/WlClT9O6772rHjh2qW7duqTKffPJJLVy4UO+99562bNmiG2+8Ub169VJeXp4k6dChQxo4cKDuuusubd26VQ8//LAmTJhwxVjXrVunhIQEp33Dhg1TgwYNlJmZqaysLE2YMEFVq1a1H4+Li1NUVJTWrVt3VZ8PAO+q4u0AAFw/DMNQRkaGVqxYodGjR+vgwYOaM2eODh48qHr16kmSnnjiCS1fvlxz5szRiy++KEkqLi7Wm2++qbZt25ZZbmFhoWbOnKn09HT16dNHkvTOO+9o1apV+te//qXx48dr5syZatKkiV555RVJUrNmzfTdd99pypQpl435wIED9tguOHjwoMaPH6+bb75ZktS0adNS19WrV08HDhwox6cDwFeQHAHwuKVLl6p69eoqLi6WzWbT0KFD9eyzz2rNmjWyWq266aabnM4vKipS7dq17duBgYFq06bNJcvft2+fiouLddttt9n3Va1aVR07dtQPP/wgSfrhhx/UqVMnp+s6d+58xdjPnDnj1KUmSSkpKXr44Yf1wQcfKDExUUOGDFGTJk2czgkJCdHp06evWD4A30NyBMDjunfvrpkzZyowMFD16tVTlSolXz0FBQUym83KysoqNROsevXq9p9DQkJkMpkqNOYLIiMjdfLkSad9zz77rIYOHaovvvhCy5YtU2pqqj766CMNGDDAfk5eXp7q1KlT0eECcAPGHAHwuNDQUN14442Ki4uzJ0aS1K5dO1mtVh07dkw33nij0ys6Otrl8ps0aaLAwECtX7/evq+4uFiZmZlq0aKFJKl58+batGmT03XffPPNFctu166ddu7cWWr/TTfdpMcff1wrV67UwIEDNWfOHPuxs2fPat++fWrXrp3L7wGA7yA5AuA1N910k4YNG6bhw4dr0aJFys7O1qZNmzR58mR98cUXLpcTGhqqRx55ROPHj9fy5cu1c+dOjRw5UqdPn9ZDDz0kSfrLX/6iPXv2aPz48dq9e7fmzp3r0jpJvXr10tdff23fPnPmjEaNGqU1a9bowIEDWr9+vTIzM9W8eXP7Od98842CgoJc6rYD4HtIjgB41Zw5czR8+HCNGzdOzZo1U//+/ZWZmam4uLhylfPPf/5TgwYN0v33369bbrlFe/fu1YoVK1SrVi1JJTPIFi5cqCVLlqht27aaNWuWfcD35QwbNkw7duzQ7t27JUlms1knTpzQ8OHDddNNN+lPf/qT+vTpo+eee85+zbx58zRs2DBVq1atXO8BgG8wGYZheDsIAPBl48ePV35+vt56660rnnv8+HE1a9ZMmzdvVuPGjSsgOgDuRssRAFzBM888o4YNG7r0vLT9+/frzTffJDEC/BgtRwAAAA5oOQIAAHBAcgQAAOCA5AgAAMAByREAAIADkiMAAAAHJEcAAAAOSI4AAAAckBwBAAA4IDkCAABw8P8BNl+yYC0/vEcAAAAASUVORK5CYII=", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkcAAAG9CAYAAAAfotIVAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABK2ElEQVR4nO3de3yMd97/8fdkyEFIiJAECaqqzlFBbdliU4fVquO2ZSt6cP+2DaVRLe3upq1uLT2pSulhSdst1Tq11TrdWUqtElG0lKJxKBIlTJogYub6/ZHbdEaCCTOZmXg9H495yHX6fj8zYq6P7+kyGYZhCAAAAJKkAG8HAAAA4EtIjgAAAByQHAEAADggOQIAAHBAcgQAAOCA5AgAAMAByREAAIADkiMAAAAHJEcAAAAOSI4AAAAckBwBAAA48Pvk6NChQ+rWrZtatGihNm3a6JNPPvF2SKhgubm5mjRpkm6//XZFRUUpMDBQoaGhatmypR566CEtW7ZMl3qE4MsvvyyTyeT0Wrp06WXr+/nnnzV27Fi1bNlSoaGhCgoKUnR0tFq3bq177rlHkydP1smTJ0tdZ7Va9dZbb6lLly6qVauWQkJC1LRpU40ZM0ZHjx694vs8f/682rdv7xTriBEjXPqMAADlYPi5I0eOGN9++61hGIZx9OhRo169ekZBQYF3g0KFSUtLM4KDgw1Jl31lZ2eXeX3Lli1LnTto0KBL1peVlWWEh4dfsb4Lv5MXnDlzxujZs+clz4+IiDAyMzMv+16ff/75UtclJSWV8xMDAFxJlYpIwDwpJiZGMTExkqTo6GhFRkYqLy9PoaGhXo4MnjZ16lQ99dRT9m2z2ay+ffvaW1f27t2rFStWKDc3t8zrMzMztWPHjlL7P//8c+Xl5SkiIqLUsUcffVQWi0WSFBoaqnvuuUc33HCDiouLtWfPHq1bt06HDh0qdd0zzzyjlStX2uN88MEHFRMTo/T0dB08eFB5eXkaMmSIvv/++zJ/d7dv365Jkya59sEAAK6Nt7Ozr776yrjzzjuNmJgYQ5KxePHiUufMmDHDaNiwoREUFGR07NjR2LhxY5llbd682WjZsqWHI/YfK1euNAYNGmTExsYagYGBRrVq1YxOnToZs2fPNmw221WVuXr1auPBBx802rVrZ0RHRxuBgYFGSEiI0aRJE2PEiBHG9u3by1XenDlzXGrhudiOHTsMs9lsv65u3brGli1bSp137tw54+233zZyc3NLHXv00Uft18fFxTm1QL3xxhulzrdYLE6xpqenlxnbpk2bjF9++cW+feLECSMoKMh+3dNPP20/tmvXLsNkMtmPvfnmm2W+h/j4eEOSkZCQYNSvX5+WIwDwIK8nR19++aXxzDPPGIsWLSozOfroo4+MwMBAY/bs2caOHTuMkSNHGjVr1ix1sztx4oTRokULY/369RUYvW86f/68042/rNc999xzVQnSuHHjLltuYGCgsWrVKpfLu9rk6C9/+YvTdQsXLizX+zh79qxRq1Ytp4RlwIAB9u1bbrml1DUnTpxwqvOJJ54wzp8/f8W65s2b53RdVlaW0/HWrVvbj/Xu3bvU9ampqYYkIygoyNixY4fRsGFDkiMA8CCvd6v16dNHffr0ueTxV199VSNHjtQDDzwgSZo1a5a++OILzZ49WxMmTJAkFRUVqX///powYYJ+97vfXba+oqIiFRUV2bdtNpvy8vJUu3ZtmUwmN7wj73vhhRf05ptvSpJMJpP+9Kc/KTY2Vp999pl+/PFHSdL8+fN166236sEHHyxX2VWqVFGXLl3UokUL1apVS8HBwcrLy9PKlSu1e/dunTt3TqNGjdKmTZtcKu/MmTNO27/++qvy8/OveN2qVavsP9esWVM9evRw6boLFi1a5DRo+s4771TTpk21ePFiSdKWLVu0YcMGtWzZ0n5OlSpVFBcXp4MHD0oqGcw9e/Zs3XrrrWrTpo06dOigrl27KigoyKmuzMxMp+3IyEinWOPi4vTdd99JkrZt2+Z0bPv27XrxxRclSU8//bQaNGjgNLi8uLi4XO8bACoLwzD066+/ql69egoIcPP8Mm9nZ450UctRUVGRYTabS7UmDR8+3OjXr59hGIZhs9mMe++910hNTXWpjgv/C+fFixcvXrx4+f/r0KFDbspCfuP1lqPLOX78uKxWq6Kiopz2R0VFadeuXZKk9evXa/78+WrTpo2WLFkiSfrggw/UunXrMsucOHGiUlJS7NsWi0VxcXE6dOiQwsLCPPNGKtDatWt111132be///57xcbG2reTk5P173//W5IUFBSkY8eOlav8//znP3rsscfKHHTsaNWqVerYsWO5yi6PmJgYnT59WpKUkJCgjIwMl6/NyclRixYtZLVaJUl//etfNX78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6vwLn+GFV3p6epmxbdq0yfjll1/s2ydOnDCCgoLs1z399NP2Y7t27TJMJpP92Jtvvlnme4iPjzckGQkJCUb9+vVpOQKA64Qn798+mxzl5+cbY8aMsd+cb7jhBuOZZ54xioqK7OfYbDbjb3/7mxEVFWUEBQUZf/jDH4zdu3eXq57Klhz95S9/cUpUFi5cWK7rz549a9SqVcspYRkwYIB9+5Zbbil1zYkTJ5zqfOKJJ4zz589fsa558+Y5XZeVleV0vHXr1vZjvXv3LnV9amqqIckICgoyduzYYTRs2JDkCACuE9dlclRRKlty1LRpU3uCUKtWLcNqtZbr+vnz5zslLNu3by9z38UcExNJRu3atY1+/foZqampxvLly42zZ8+WumbixIlO15w8edLp+N13320/Vq9ePadj3377rVG1alVDkjFlypRSMZAcAUDl5sn7t8/OVsPVOXz4sP3nm266qdS4rStJT0+3/9yyZUu1bt1ad911l6pXr17mORe89tprMplM9u0TJ07os88+03PPPafevXsrKipKzz//vKxWq/2cvLw8pzIuXsSrRo0aTuVdUFxcrBEjRqi4uFi33nqrxo0bV673CADA5ZAcwe7o0aP2wdGS7KuMh4SEqF+/fvb9//73v3X+/HmnawcMGKD//Oc/6tGjR5kJmcViUWpq6mUHTxsXLStw8fYFkyZN0rZt2xQSEqL09HSZzeYrvzkAAFxEclTJ1K9f3/7zjz/+eMkEoyzvv/++U8uO4yNY7rvvPvvPx44d05dfflnq+m7duikjI0N5eXlatmyZnn32WSUkJDid89prr9l/rl27ttOxX3/99ZLbkZGRkqSDBw9q8uTJkqQXXnhBzZo1c/n9AQDgCpKjSuYPf/iD/eeTJ0/q008/dfnaixfYbNq0qX1RxbvuusvpWFldaxeEh4erd+/eSk1NVWZmph588EH7sfz8fPsSAm3atHG67qeffnLa3rdvn/3n1q1bSyrpirvQajVu3DinhR8PHDjg9F5YDBIAcDVIjiqZUaNGOXUzPfLII9q2bVup84qLi/Xuu+/q2LFjkqSNGzfqhx9+cLmepUuX6vjx4/btpKQkZWVllXmu43ilgIAA+1iinj17Kjg42H5s4cKF9p937typnTt32rfvvvtul2MDAOBa+OwikLg6LVu21KRJk/T0009LKnkGXUJCgu68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sGFDPfLII0pMTNRnn30mSSoqKtITTzyh+vXrKzQ0VJ06ddKaNWvs16anp6tmzZr67LPP1KJFCwUFBengwYOlutWKior02GOPqW7dugoODlaXLl2UmZnpFMeXX36pm266SSEhIerevbv2799/xdg/+ugj3XHHHQoODrbv27Ztm7p3764aNWooLCxM7du31+bNm+3H77rrLm3evFn79u27ug8MgFeRHAGocCEhITp37pwkadSoUdqwYYM++ugjbd++XUOGDFHv3r21Z88e+/mnT5/WlClT9O6772rHjh2qW7duqTKffPJJLVy4UO+99562bNmiG2+8Ub169VJeXp4k6dChQxo4cKDuuusubd26VQ8//LAmTJhwxVjXrVunhIQEp33Dhg1TgwYNlJmZqaysLE2YMEFVq1a1H4+Li1NUVJTWrVt3VZ8PAO+q4u0AAFw/DMNQRkaGVqxYodGjR+vgwYOaM2eODh48qHr16kmSnnjiCS1fvlxz5szRiy++KEkqLi7Wm2++qbZt25ZZbmFhoWbOnKn09HT16dNHkvTOO+9o1apV+te//qXx48dr5syZatKkiV555RVJUrNmzfTdd99pypQpl435wIED9tguOHjwoMaPH6+bb75ZktS0adNS19WrV08HDhwox6cDwFeQHAHwuKVLl6p69eoqLi6WzWbT0KFD9eyzz2rNmjWyWq266aabnM4vKipS7dq17duBgYFq06bNJcvft2+fiouLddttt9n3Va1aVR07dtQPP/wgSfrhhx/UqVMnp+s6d+58xdjPnDnj1KUmSSkpKXr44Yf1wQcfKDExUUOGDFGTJk2czgkJCdHp06evWD4A30NyBMDjunfvrpkzZyowMFD16tVTlSolXz0FBQUym83KysoqNROsevXq9p9DQkJkMpkqNOYLIiMjdfLkSad9zz77rIYOHaovvvhCy5YtU2pqqj766CMNGDDAfk5eXp7q1KlT0eECcAPGHAHwuNDQUN14442Ki4uzJ0aS1K5dO1mtVh07dkw33nij0ys6Otrl8ps0aaLAwECtX7/evq+4uFiZmZlq0aKFJKl58+batGmT03XffPPNFctu166ddu7cWWr/TTfdpMcff1wrV67UwIEDNWfOHPuxs2fPat++fWrXrp3L7wGA7yA5AuA1N910k4YNG6bhw4dr0aJFys7O1qZNmzR58mR98cUXLpcTGhqqRx55ROPHj9fy5cu1c+dOjRw5UqdPn9ZDDz0kSfrLX/6iPXv2aPz48dq9e7fmzp3r0jpJvXr10tdff23fPnPmjEaNGqU1a9bowIEDWr9+vTIzM9W8eXP7Od98842CgoJc6rYD4HtIjgB41Zw5czR8+HCNGzdOzZo1U//+/ZWZmam4uLhylfPPf/5TgwYN0v33369bbrlFe/fu1YoVK1SrVi1JJTPIFi5cqCVLlqht27aaNWuWfcD35QwbNkw7duzQ7t27JUlms1knTpzQ8OHDddNNN+lPf/qT+vTpo+eee85+zbx58zRs2DBVq1atXO8BgG8wGYZheDsIAPBl48ePV35+vt56660rnnv8+HE1a9ZMmzdvVuPGjSsgOgDuRssRAFzBM888o4YNG7r0vLT9+/frzTffJDEC/BgtRwAAAA5oOQIAAHBAcgQAAOCA5AgAAMAByREAAIADkiMAAAAHJEcAAAAOSI4AAAAckBwBAAA4IDkCAABw8P8BNl+yYC0/vEcAAAAASUVORK5CYII=", "text/plain": [ "
" ] @@ -2985,7 +3564,7 @@ }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjoAAAG9CAYAAAAcFdw9AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABIAUlEQVR4nO3df3zP9f7/8ft7Yz+Mze/NmB8h+U02ctIptROOkp9H8Tkm5XxPIZoUOadVOsehciSLfhxWnUhFKeXXWUSOmAlFhIb5sYmx2TDzfr++f7zP3nnbD+9l773f79du18vlfbHX78f7bXnfez6fr+fLYhiGIQAAABPy83QBAAAA7kLQAQAApkXQAQAApkXQAQAApkXQAQAApkXQAQAApkXQAQAApkXQAQAApkXQAQAApkXQAQAApkXQAQAApuXzQSc9PV133HGH2rRpow4dOujDDz/0dEmoQJmZmZo2bZpuv/12hYeHKyAgQCEhIWrbtq0eeughrVy5UiU9zu2ll16SxWJxeq1YsaLU6x09elQTJkxQ27ZtFRISosDAQEVERKh9+/YaOnSopk+frjNnzhQ5zmq16vXXX1ePHj1Uq1YtBQcHq2XLlho/frxOnDhxzfd5+fJldenSxanWkSNHuvQZAUClZvi448ePG99++61hGIZx4sQJIzIy0sjNzfVsUagQiYmJRlBQkCGp1FdaWlqxx7dt27bIvoMGDSrxeqmpqUZYWNg1r1f4+1jowoULxt13313i/rVr1zZSUlJKfa/PP/98kePi4uLK+IkBQOVTpSLClDs1aNBADRo0kCRFRESobt26ysrKUkhIiIcrgzvNnDlTTz31lGPZ399fffv2dbR6HDhwQKtXr1ZmZmaxx6ekpGj37t1F1n/22WfKyspS7dq1i2x79NFHlZ2dLUkKCQnR0KFDdcMNN6igoED79+/Xxo0blZ6eXuS4qVOnas2aNY46R40apQYNGigpKUlHjhxRVlaWhgwZou+//77Y39tdu3Zp2rRprn0wAABnnk5aX331lXHPPfcYDRo0MCQZH3/8cZF95s6dazRp0sQIDAw0unbtamzZsqXYc23bts1o27atmyv2DWvWrDEGDRpkREVFGQEBAUa1atWMbt26GQsWLDBsNtuvOue6deuMUaNGGZ07dzYiIiKMgIAAIzg42GjevLkxcuRIY9euXWU638KFC11qebna7t27DX9/f8dx9evXN7Zv315kv0uXLhlvvPGGkZmZWWTbo48+6ji+cePGTi1Dr776apH9s7OznWpNSkoqtratW7caP//8s2P59OnTRmBgoOO4p59+2rFt7969hsVicWx77bXXin0PnTp1MiQZ0dHRRsOGDWnRAYAy8HjQ+eKLL4ypU6cay5YtKzbovP/++0ZAQICxYMECY/fu3cbo0aONmjVrFvnyOn36tNGmTRtj06ZNFVi997l8+bLTl3hxr6FDh/6qsDNx4sRSzxsQEGCsXbvW5fP92qDz5z//2em4pUuXlul9XLx40ahVq5ZT+BgwYIBj+eabby5yzOnTp52u+cQTTxiXL1++5rUWL17sdFxqaqrT9vbt2zu29e7du8jxCQkJhiQjMDDQ2L17t9GkSROCDgCUgce7rvr06aM+ffqUuH3WrFkaPXq0HnzwQUnS/Pnz9fnnn2vBggWaPHmyJCk/P1/9+/fX5MmT9Zvf/KbU6+Xn5ys/P9+xbLPZlJWVpTp16shisZTDO/KsF154Qa+99pokyWKx6A9/+IOioqL06aef6scff5QkLVmyRLfccotGjRpVpnNXqVJFPXr0UJs2bVSrVi0FBQUpKytLa9as0b59+3Tp0iWNHTtWW7dudel8Fy5ccFo+d+6ccnJyrnnc2rVrHT/XrFlTd955p0vHFVq2bJnTgOF77rlHLVu21McffyxJ2r59uzZv3qy2bds69qlSpYoaN26sI0eOSLIPZF6wYIFuueUWdejQQTExMbrtttsUGBjodK2UlBSn5bp16zrV2rhxY3333XeSpJ07dzpt27Vrl/7+979Lkp5++mk1atTIaWB1QUFBmd43AJiJYRg6d+6cIiMj5edXyr1Vnk5aV9JVLTr5+fmGv79/kVaeESNGGP369TMMwzBsNptx//33GwkJCS5do/D/kHnx4sWLFy9evv9KT08v9Xvf4y06pTl16pSsVqvCw8Od1oeHh2vv3r2SpE2bNmnJkiXq0KGDPvnkE0nSu+++q/bt2xd7zilTpig+Pt6xnJ2drcaNGys9PV2hoaHueSMVZMOGDbr33nsdy99//72ioqIcy2PGjNG///1vSVJgYKBOnjxZpvN/+eWXeuyxx4odcHultWvXqmvXrmU6d1k0aNBA58+flyRFR0crOTnZ5WMzMjLUpk0bWa1WSdJf/vIXTZo0SZL08MMPO6YnqFevnvbu3asqVZz/E9m4caNmzpypr7/+WjabrdhrTJ48WVOmTJEkTZgwQQsXLnRsy8rKkr+/v2N59OjR+uCDDyQ5/5387W9/08yZMxUcHKyNGzeqZcuWkqT27ds7WpWGDRumefPmufzeAcBMcnJyFBUVpRo1apS6n1cHHVf06NGjxC+c4gQGBhbpXpCk0NBQnw86V3djtGjRwum9NmrUyPFzfn5+iZ9FcY4fP67hw4c7AkZpqlSp4tbPsmHDhtq/f78k6eDBg6pRo4bL3Y7z5s1zhBxJiouLc9Q6YsQIR9D5+eef9fXXX6tfv35Ox/ft21d9+/ZVdna2Nm/erC1btmjFihXatm2bY5/XXntN06dPlyTHHYGFLBaL02dz8eJFx89169ZVaGiojhw5olmzZkmyd0V26dLF6fhCVatW9fnfWQC4Xtf699+rJwysW7eu/P39i9winJmZqYiIiOs6d2Jiotq0aaOYmJjrOo83uXTpktPy1S02V36OQUFBLoccyX7b9ZUh5+WXX9bZs2dlGEaxt2m701133eX4+cyZM1q+fLnLx7799ttOyy1btnRMwHdla5gkJSUllXiesLAw9e7dWwkJCUpJSXEa75STk+P4rDt06OB03E8//eS0fPDgQcfPha2QWVlZunz5siRp4sSJTpMEHj582Om9MHEgAJTOq4NOQECAunTp4tQ1YbPZlJycrO7du1/XuceMGaM9e/YUGSxqJu+++67j55ycHH322WeO5StbCVxx+vRpp+UHH3xQYWFhkuToeimrpKQkpy/xQ4cOuXTc2LFjnbp/HnnkEe3cubPIfgUFBXrrrbccgW/Lli364YcfXK5vxYoVOnXqlGM5Li5Oqampxe5bvXp1x89+fn6OptS7775bQUFBjm1Lly51/Lxnzx7t2bPHsXzfffe5XBsAwDUe77rKzc3VgQMHHMtpaWnasWOHateurcaNGys+Pl5xcXGKjo5W165dNXv2bOXl5TnuwkLJ/vKXv2jv3r1q0qSJPvroI6cv7dGjR5fpXK1atXJa7tu3r/r06aNdu3bpo48+Kpd6XdW2bVtNmzZNTz/9tCT7uJvo6Gjdc8896ty5c5EJA2NjYyXJaayMxWLRkCFDijR55ubm6vPPP5dkD0rvvfeexo8fL0l655139M4776h58+bq0aOHbrjhBlksFu3cuVPLli1znOO3v/2tqlWrJkmqVauWxowZo5dfflmSNGPGDJ06dUoNGjTQggULHHdRNWnSRH/84x8l2e8kGzRoULHvfeXKlY6WtSZNmig6OtpUrZIAUO5cvyfKPdatW1fsKOor5wh59dVXjcaNGxsBAQFG165djW+++abcrl84EVx2dna5ndNTrp6Xpm/fvsV+tn379i3zPDqXLl1ymvPl6r+rK5fXrVv3q+p1dR6dQq+88orTZHwlvdLS0owLFy4YNWvWdKyLjY0t9pw2m81prppOnTo5tl3rOpL9cQ7fffed0zkvXLhg/O53vyvxmFq1al3zERCFmEcHAOxc/f72eNfVHXfcIcM+caHT68rxEWPHjtXhw4eVn5+vLVu2qFu3bp4r2IcsW7ZMzz//vJo3b66AgAA1bdpUCQkJWrp0aZnnDKpataq+/PJLjRw5UnXq1FFgYKDatWunN954Q88++6x73sA1PPbYY0pLS9Ozzz6rHj16qF69eqpSpYqqVaum1q1b65FHHtH69evVpEkTffLJJzp79qzj2JLmELJYLIqLi3Ms79ixw9Ettn37dr344ovq27evWrdurTp16sjf3181atRQ586d9eSTT2r37t1q166d0zmDgoK0cuVKzZs3T927d1doaKgCAwPVvHlzjRs3Tt9//72io6PL/wMCAMhiGCU82tnkEhMTlZiYKKvVqh9//FHZ2dk+fwdLUlKSU5deJf2rBQBUAjk5OQoLC7vm97fHW3Q8pTIMRgYAoLKrtEEHAACYn8fvuoLnHDt2zGlOmpIMGDDAMQEeAAC+hKBjIiNHjizT5HEFBQXat2/fNfc7ceLEdVQFAIDnVNqgc+Vg5MqqadOmDFgGAJhapb3rqpCro7YBAID34K4rAABQ6RF0AACAaRF0AACAaVXaoJOYmKg2bdrwQEQAAEyMwcgMRgYAwOcwGBkAAFR6BB0AAGBaBB0AAGBaBB0AAGBaBB0AAGBaPOuqEj/rCgBMx2qVNm6UTpyQGjSQbrtN8vf3dFXwIG4v5/ZyADCHZcuk8eOlo0d/WdeokfTKK9LAgZ6rC27B7eUAUJlZrdL69dLixfY/zd56vWyZNHiwc8iRpGPH7OuXLfNMXfA4gg4AmM2yZVLTplLPntKwYfY/mzY175d9QYE0dqxUXAdF4boJE8wf9lAsgg4AmIXNJi1cWHrLxtKlnqnNXWw2KSDAPianJIYhpafbx+6g0qm0g5EBVCKVYYCqzVb6e7qyZaN/f/O8/7w81/ctLQzBtGjRAWBula0b51qOHjVXy4ZfGb7GGjRwXx3wWgQdACXz5QGtrnTjLFpU/LgOX3Thguv7mqllo1o1KTtbathQsliK38dikaKi7C15qHQqbdBJTExUmzZtFBMT4+lSAO/kyy0hhd04o0aVPEDVMKThw6Vz5yq+Pk8zU8uGxSKFhkpz5vyyfPV2SZo92zzddSgT5tFhHh2gqMJbda/+56HwS+Ojj7x7XpJrjVe50hdfSH36uLeeimAY9tDWpo10/HjxAc9isc8rk5Zmzi/94ubRiYqyhxxv/n3Fr8I8OgB+HTPcqluWbpysLPfVUZFo2bCHmUOHpHXr7N2S69bZQx0hp1LjriugonnzHUCFt+qW5spbde+4o0LKciszdeNI9i/1jz4qfobgytCy4e9vjt9LlBuCDlCRvH2KerPcqls4QNWVbpzbb6/4+txt4EDpvvu8N1ADFYiuK6Ai+ModQGa5VZdunF9aNh54wP6nWd8ncA0EHcDdfOkOILPdqlvYjdOwofP6Ro28f0A1gHJB0AHcrSzdQV9/7b46XGHGlhAGqAKVGmN0AHcrS3fQmTPuq6MszDaglQGqQKVF0AHcrVo1+1wtv//9tfe9uovFkxjQCsAEKm3QSUxMVGJioqzePBcIzMFike6+294acuxY6XcAedu4F1pCAPg4ZkZmZmRUlMLZhiXnsOMrsw0DgBdhZmTA23AHEABUuErbdQV4BONeAKBCEXSAisa4FwCoMHRdAQAA0yLoAAAA0yLoAAAA0yLoAAAA0yLoAAAA0yLoAAAA0yLoAAAA0yLoAAAA0yLoAAAA0yLoAAAA06q0QScxMVFt2rRRTEyMp0sBAABuYjEMw/B0EZ7k6mPeAQCA93D1+7vStugAAADzI+gAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTIugAAADTqvJrDrp48aJ27dqlkydPymazOW3r169fuRQGAABwvcocdFatWqURI0bo1KlTRbZZLBZZrdZyKQwAAOB6lbnraty4cRoyZIhOnDghm83m9CLkAAAAb1LmoJOZman4+HiFh4e7ox4AAIByU+agM3jwYK1fv94NpQAAAJQvi2EYRlkOOH/+vIYMGaJ69eqpffv2qlq1qtP2xx57rFwLdLecnByFhYUpOztboaGhni4HAAC4wNXv7zIPRl68eLHWrFmjoKAgrV+/XhaLxbHNYrH4XNABAADmVeauq6lTp+q5555Tdna2Dh06pLS0NMfrp59+ckeN1zRgwADVqlVLgwcP9sj1AQCAdypz0Ll06ZKGDh0qPz/vmWtw/PjxeueddzxdBgAA8DJlTitxcXFasmSJO2r51e644w7VqFHD02UAAAAvU+YxOlarVTNnztTq1avVoUOHIoORZ82aVabzbdiwQS+++KJSU1N14sQJffzxx+rfv7/TPomJiXrxxReVkZGhjh076tVXX1XXrl3LWjoAAKhkyhx0vvvuO3Xu3FmS9P333zttu3Jgsqvy8vLUsWNHjRo1SgMHDiyyfcmSJYqPj9f8+fPVrVs3zZ49W7169dK+fftUv379Ml8PAABUHmUOOuvWrSvXAvr06aM+ffqUuH3WrFkaPXq0HnzwQUnS/Pnz9fnnn2vBggWaPHlyma+Xn5+v/Px8x3JOTk7ZiwYAAD7hukYUb9q0ySk0lLdLly4pNTVVsbGxjnV+fn6KjY3V5s2bf9U5p0+frrCwMMcrKiqqvMoFAABe5rqCTp8+fXTs2LHyqqWIU6dOyWq1FnncRHh4uDIyMhzLsbGxGjJkiL744gs1atSo1BA0ZcoUZWdnO17p6eluqx8AAHhWmbuurlTGSZXd5j//+Y/L+wYGBiowMNCN1QAAAG/hPZPhFKNu3bry9/dXZmam0/rMzExFRERc17kTExPVpk0bxcTEXNd5AACA97quoPP66687upVsNpuOHDlSLkUVCggIUJcuXZScnOxYZ7PZlJycrO7du1/XuceMGaM9e/YoJSXlessEAABeqsxdVwsXLtSSJUt0+PBhhYaGavv27Xr88cdVpUoVNWvWTFartUzny83N1YEDBxzLaWlp2rFjh2rXrq3GjRsrPj5ecXFxio6OVteuXTV79mzl5eU57sICAAAoictBx2q1auDAgVq1apX69u2rfv366cyZM/rwww/1xhtv6NVXX/1VBWzbtk09e/Z0LMfHx0uyz8CclJSkoUOH6ueff9YzzzyjjIwMderUSatWrSoyQBkAAOBqFsPFEcUvvfSSZs2apXXr1qlVq1aO9TabTbNmzdLUqVN1+fLlMrfoeJqrj3kHAADew9Xvb5fH6CQlJWnmzJlOIUeyz2vzxBNP6IUXXvCau7BcwWBkAADMz+UWneDgYO3atUstW7Z0d00VihYdAAB8T7m36ISEhOjnn38ucfuOHTs0atSoslUJAMB1stmkkyedX7m5Ul7eLy8f6nBAOXO5RWfQoEEKCQnRO++8U2RbRkaG7rjjDu3fv58xOgCACmOzSf7+194vN1cKCXF/Pag45d6ik5CQoKVLlyouLk7ff/+9Ll68qOPHj+v1119XTEyM6tatWy6FAwAAlBeXg06HDh20cuVKbdq0SR07dlRISIiioqL02GOP6YEHHtDixYsZjAwAqFB+fpLVKi1YIFksRbdbLPbXqlUVXxu8g8tdV4VsNpu2bt2qtLQ0hYaGqnv37qpdu7by8vL00ksvKSEhwV21ugVdVwDg26xWqWlT6ejR4rdbLFKjRlJammvdXPANrn5/lznomA1BBwB82/r10hXzzpZo3TrpjjvcXQ0qSrmP0QEAwBudOFG++8FcCDoAAJ/WoEH57gdzqbRBh8HIAOD7DEO6+WapYcPiByNL9vVRUdJtt1VsbfAOjNFhjA4Ak7DZpFOn7D9brdI330hnz0oREdKtt9oH4larVnIg8EV5eVL16tfe78MPpcGD3V8PKo6r398uP70cAHyV1Spt3Ggfo9Gggf3/7M129w0T55Vu4EBPVwBPIegAMKXC1o3PP5emTnUeiNqwoTRzpnTffeZr4biW5culYcM8XUX5qVbNHt4KWa3Spk3S4cNSeLh0yy32P/0q7UAN0HVF1xVQIl9tCXG1dUMyVwtHQYHUpEnJdxcxnwzMhNvLAS9ltdrn/Vi82P6ntz0ervABiQsX2gdw9uxpbwHo2dP+JbpokbkekOhtn//12LSp9FuoDUNKT7eHV6CyoOsKqAC+0o1yrZaQY8ek4cPtP3tz94efn5ScLN1117X3TU11bbI5X8B8MkBRlTboJCYmKjEx0eeetg7fU5bw4CvdKE89JQ0d6r3dH4ZhH6PhiowM99ZSUQxDqlnTtX2ZTwaVCWN0GKMDNyvLeJHsbMnTv4ZffulaS4g3T6fv6i3Hkr3l58473VtPRXD1PUdFMUYH5sAYHcBLWCz2LitXpKa6t5ZrKUtLiFm6PyrbJHKzZhFyULkQdAA3O39e6tvXtX2PH3dvLddy/rw0apRr+3pz90fhLcfvvWcPmlePeypc9+GHUtWqnqmxvBW+58L33bCh8/bISCbNQ+VUacfoAN7Im8PDlbx9On2LxT7WadgwKShIGj9eOnr0l+2NGkmzZ5trErnC9yzZ3/fQob45NQBQ3hijwxgduJlhSOfOSW3a2FtsivsvzlvmNzEMe6vO8uXS//3fL+sKFbaMfPSRb4UEX50PCEDJeAQE4CUsFvsA4zlz7N0GFkvx4WH2bM9/+Zq1JcTf33sHTgNwL1p0aNFBBVq2rGh4iIry3vBASwgAb+Xq93elDTpXzqPz448/EnRQYQgPAHD9CDouokUHAADfwzw6AACg0iPoAAAA0yLoAAAA0yLoAAAA0yLoAAAA0yLoAAAA0yLoAAAA0yLoAAAA06q0QScxMVFt2rRRTEyMp0sBAABuwszIzIwMAIDPYWZkAABQ6RF0AACAaRF0AACAaRF0AACAaRF0AACAaRF0AACAaRF0AACAaRF0AACAaRF0AACAaRF0AACAaRF0AACAaRF0AACAaRF0AACAaVXaoJOYmKg2bdooJibG06UAAAA3sRiGYXi6CE9y9THvAADAe7j6/V1pW3QAAID5EXQAAIBpEXQAAIBpEXQAAIBpEXQAAIBpEXQAAIBpEXQAAIBpEXQAAIBpEXQAAIBpEXQAAIBpEXQAAIBpEXQAAIBpEXQAAIBpEXQAAIBpEXQAAIBpEXQAAIBpEXQAAIBpEXQAAIBpmSLorFixQq1atVLLli311ltvebocAADgJap4uoDrdfnyZcXHx2vdunUKCwtTly5dNGDAANWpU8fTpQEAAA/z+RadrVu3qm3btmrYsKGqV6+uPn36aM2aNZ4uCwAAeAGPB50NGzbo3nvvVWRkpCwWiz755JMi+yQmJqpp06YKCgpSt27dtHXrVse248ePq2HDho7lhg0b6tixYxVROgAA8HIeDzp5eXnq2LGjEhMTi92+ZMkSxcfHKyEhQdu3b1fHjh3Vq1cvnTx5soIrBQAAvsbjY3T69OmjPn36lLh91qxZGj16tB588EFJ0vz58/X5559rwYIFmjx5siIjI51acI4dO6auXbuWeL78/Hzl5+c7lrOzsyVJOTk51/tWAABABSn83jYMo/QdDS8iyfj4448dy/n5+Ya/v7/TOsMwjBEjRhj9+vUzDMMwCgoKjBYtWhhHjx41zp07Z9x4443GqVOnSrxGQkKCIYkXL168ePHiZYJXenp6qdnC4y06pTl16pSsVqvCw8Od1oeHh2vv3r2SpCpVqujll19Wz549ZbPZ9OSTT5Z6x9WUKVMUHx/vWLbZbMrKylKdOnVksVjc80Z+pZiYGKWkpHi6DK/g65+FN9bvqZoq6rruuk55nrc8zpWTk6OoqCilp6crNDS0XOqC53jjvxWecq3PwjAMnTt3TpGRkaWex6uDjqv69eunfv36ubRvYGCgAgMDndbVrFnTDVVdP39/f/7h+h9f/yy8sX5P1VRR13XXdcrzvOV5rtDQUK/7HUPZeeO/FZ7iymcRFhZ2zfN4fDByaerWrSt/f39lZmY6rc/MzFRERISHqqo4Y8aM8XQJXsPXPwtvrN9TNVXUdd11nfI8rzf+XsCz+J34RXl9Fpb/jY3xChaLRR9//LH69+/vWNetWzd17dpVr776qiR7V1Pjxo01duxYTZ482UOVAoB3yMnJUVhYmLKzs2kJAIrh8a6r3NxcHThwwLGclpamHTt2qHbt2mrcuLHi4+MVFxen6Ohode3aVbNnz1ZeXp7jLiwAqMwCAwOVkJBQpEsegJ3HW3TWr1+vnj17FlkfFxenpKQkSdLcuXP14osvKiMjQ506ddKcOXPUrVu3Cq4UAAD4Go8HHQAAAHfx6sHIAAAA14OgAwAATIugAwAATIugAwAmdPbsWUVHR6tTp05q166d3nzzTU+XBHgEg5EBwISsVqvy8/NVrVo15eXlqV27dtq2bVupj8gBzIgWHQAwIX9/f1WrVk2SlJ+fL8Mwrv2UZ8CECDoA4IU2bNige++9V5GRkbJYLPrkk0+K7JOYmKimTZsqKChI3bp109atW522nz17Vh07dlSjRo00adIk1a1bt4KqB7wHQQcAvFBeXp46duyoxMTEYrcvWbJE8fHxSkhI0Pbt29WxY0f16tVLJ0+edOxTs2ZN7dy5U2lpaVq0aFGR5wYClQFjdADAy5X0HMCYmBjNnTtXkv05gFFRURo3blyxzwF89NFHdeedd2rw4MEVVTbgFWjRAQAfc+nSJaWmpio2Ntaxzs/PT7Gxsdq8ebMkKTMzU+fOnZMkZWdna8OGDWrVqpVH6gU8yeMP9QQAlM2pU6dktVoVHh7utD48PFx79+6VJB0+fFh/+tOfHIOQx40bp/bt23uiXMCjCDoAYEJdu3bVjh07PF0G4HF0XQGAj6lbt678/f2LDC7OzMxURESEh6oCvBNBBwB8TEBAgLp06aLk5GTHOpvNpuTkZHXv3t2DlQHeh64rAPBCubm5OnDggGM5LS1NO3bsUO3atdW4cWPFx8crLi5O0dHR6tq1q2bPnq28vDw9+OCDHqwa8D7cXg4AXmj9+vXq2bNnkfVxcXFKSkqSJM2dO1cvvviiMjIy1KlTJ82ZM0fdunWr4EoB70bQAQAApsUYHQAAYFoEHQAAYFoEHQAAYFoEHQAAYFoEHQAAYFoEHQAAYFoEHQAAYFqVfmZkm82m48ePq0aNGrJYLJ4uBwAAuMAwDJ07d06RkZHy8yu53abSB53jx48rKirK02UAAIBfIT09XY0aNSpxe6UPOjVq1JBk/6BCQ0M9XA0AAHBFTk6OoqKiHN/jJan0Qaewuyo0NJSgAwCAj7nWsBMGIwMAANMi6AAAANMi6AAAANMi6AAAANMi6AAAANMi6AAAANMi6AAAANMi6AAAANMi6AAAANMi6AAAANMi6AAAANMi6AAAANPy2qBjtVr117/+Vc2aNVNwcLCaN2+uadOmyTAMxz6GYeiZZ55RgwYNFBwcrNjYWO3fv9+DVQMAAG/itUFnxowZmjdvnubOnasffvhBM2bM0MyZM/Xqq6869pk5c6bmzJmj+fPna8uWLQoJCVGvXr108eJFD1YOAAC8hcW4sonEi9xzzz0KDw/Xv/71L8e6QYMGKTg4WP/+979lGIYiIyM1ceJEPfHEE5Kk7OxshYeHKykpSffff79L18nJyVFYWJiys7MVGhrqlvcCAADKl6vf317bovOb3/xGycnJ+vHHHyVJO3fu1Ndff60+ffpIktLS0pSRkaHY2FjHMWFhYerWrZs2b95c4nnz8/OVk5Pj9AIAAOZUxdMFlGTy5MnKycnRTTfdJH9/f1mtVv3tb3/T8OHDJUkZGRmSpPDwcKfjwsPDHduKM336dD333HPuKxwAAHgNr23R+eCDD/Tee+9p0aJF2r59u95++2299NJLevvtt6/rvFOmTFF2drbjlZ6eXk4Ve5fMzExNmzZNt99+u8LDwxUQEKCQkBC1bdtWDz30kFauXKmSei1feuklWSwWp9eKFStKvd7Ro0c1YcIEtW3bViEhIQoMDFRERITat2+voUOHavr06Tpz5kyR46xWq15//XX16NFDtWrVUnBwsFq2bKnx48frxIkT13yfly9fVpcuXZxqHTlypEufEQCgEjC8VKNGjYy5c+c6rZs2bZrRqlUrwzAM4+DBg4Yk49tvv3Xa57e//a3x2GOPuXyd7OxsQ5KRnZ193TV7i8TERCMoKMiQVOorLS2t2OPbtm1bZN9BgwaVeL3U1FQjLCzsmte7+u/qwoULxt13313i/rVr1zZSUlJKfa/PP/98kePi4uLK+IkBAHyNq9/fXtt1df78efn5OTc4+fv7y2azSZKaNWumiIgIJScnq1OnTpLsA5O2bNmiRx55pKLL9RozZ87UU0895Vj29/dX3759Ha0eBw4c0OrVq5WZmVns8SkpKdq9e3eR9Z999pmysrJUu3btItseffRRZWdnS5JCQkI0dOhQ3XDDDSooKND+/fu1cePGYlvOpk6dqjVr1jjqHDVqlBo0aKCkpCQdOXJEWVlZGjJkiL7//nuFhIQUOX7Xrl2aNm2aax8MAKByqqDgVWZxcXFGw4YNjRUrVhhpaWnGsmXLjLp16xpPPvmkY59//OMfRs2aNY3ly5cbu3btMu677z6jWbNmxoULF1y+jpladHbv3m34+/s7Wjbq169vbN++vch+ly5dMt544w0jMzOzyLZHH33UcXzjxo2dWoZeffXVIvsXfn6Fr6SkpGJr27p1q/Hzzz87lk+fPm0EBgY6jnv66acd2/bu3WtYLBbHttdee63Y99CpUydDkhEdHW00bNiQFh0AqERc/f722qCTk5NjjB8/3vFle8MNNxhTp0418vPzHfvYbDbjr3/9qxEeHm4EBgYad911l7Fv374yXcdMQefPf/6zU+hYunRpmY6/ePGiUatWLafwMWDAAMfyzTffXOSY06dPO13ziSeeMC5fvnzNay1evNjpuNTUVKft7du3d2zr3bt3keMTEhIMSUZgYKCxe/duo0mTJgQdAKhEfD7oVBQzBZ2WLVs6vuxr1aplWK3WMh2/ZMkSp/Cxa9euYtdd7cqQIcmoU6eO0a9fPyMhIcFYtWqVcfHixSLHTJkyxemYM2fOOG2/7777HNsiIyOdtn377bdG1apVDUnGjBkzitRA0AEA83P1+9tr77pC2R07dszx84033lhkjNO1JCUlOX5u27at2rdvr3vvvVfVq1cvdp9C//znP2WxWBzLp0+f1qeffqrnnntOvXv3Vnh4uJ5//nlZrVbHPllZWU7nuHqypxo1ajidr1BBQYFGjhypgoIC3XLLLZo4cWKZ3iMAoHIh6ECSdOLECcfAYEmOmaWDg4PVr18/x/p///vfunz5stOxAwYM0Jdffqk777yz2HCVnZ2thISEUgcOG1fd6n71cqFp06Zp586dCg4OVlJSkvz9/a/95gAAlRZBx0QaNmzo+PnHH38sMSwU55133nFqcbnyERoPPPCA4+eTJ0/qiy++KHL8HXfcoeTkZGVlZWnlypV69tlnFR0d7bTPP//5T8fPderUcdp27ty5Epfr1q0rSTpy5IimT58uSXrhhRfUqlUrl98fAKByIuiYyF133eX4+cyZM1q+fLnLx149EWPLli0dE/Dde++9TtuK674qFBYWpt69eyshIUEpKSkaNWqUY1tOTo7jtvYOHTo4HffTTz85LR88eNDxc/v27SXZu7sKW5MmTpzoNEng4cOHnd4LEwcCACSCjqmMHTvWqSvnkUce0c6dO4vsV1BQoLfeeksnT56UJG3ZskU//PCDy9dZsWKFTp065ViOi4tTampqsfteOb7Hz8/PMfbm7rvvVlBQkGPb0qVLHT/v2bNHe/bscSzfd999LtcGAMCVvHbCQJRd27ZtNW3aND399NOS7M8Di46O1j333KPOnTsXmTCw8IGoCxcudJzDYrFoyJAhToOLJSk3N1eff/65JHtQeu+99zR+/HhJ9m6vd955R82bN1ePHj10ww03yGKxaOfOnVq2bJnjHL/97W9VrVo1SVKtWrU0ZswYvfzyy5KkGTNm6NSpU2rQoIEWLFjg6HZr0qSJ/vjHP0qSatasqUGDBhX73leuXKnz5887jomOjlZMTMx1fJoAADOwGGUZyGFCrj7m3ZfMmTNHTz75pPLz80vdLy0tTREREWrQoIHOnj0rSYqNjdXatWuL7GsYhpo1a+boIurUqZO+/fZbSSoSiopTu3ZtffXVV2rXrp1j3cWLF9WvX79iryfZw9CaNWuKjPUpTtOmTR21xcXFldq9BgDwfa5+f9N1ZUKPPfaY0tLS9Oyzz6pHjx6qV6+eqlSpomrVqql169Z65JFHtH79ejVp0kSffPKJI+RIchpTcyWLxaK4uDjH8o4dOxzdYtu3b9eLL76ovn37qnXr1qpTp478/f1Vo0YNde7cWU8++aR2797tFHIkKSgoSCtXrtS8efPUvXt3hYaGKjAwUM2bN9e4ceP0/fffuxRyAAAoCS06JmzRAQDA7GjRAQAAlR5BBwAAmBZBBwAAmBZBBwAAmBZBBwAAmBZBBwAAmBZBBwAAmBZBBwAAmBZBBwAAmBZBBwAAmBZBBwAAmBZBBwAAmBZBBwAAmBZBBwAAmBZBBwAAmBZBBwAAmBZBBwAAmJZXB51jx47p//7v/1SnTh0FBwerffv22rZtm2O7YRh65pln1KBBAwUHBys2Nlb79+/3YMUAAMCbeG3QOXPmjG699VZVrVpVK1eu1J49e/Tyyy+rVq1ajn1mzpypOXPmaP78+dqyZYtCQkLUq1cvXbx40YOVAwAAb2ExDMPwdBHFmTx5sjZt2qSNGzcWu90wDEVGRmrixIl64oknJEnZ2dkKDw9XUlKS7r//fpeuk5OTo7CwMGVnZys0NLTc6gcAAO7j6ve317bofPrpp4qOjtaQIUNUv359de7cWW+++aZje1pamjIyMhQbG+tYFxYWpm7dumnz5s0lnjc/P185OTlOLwAAYE5eG3R++uknzZs3Ty1bttTq1av1yCOP6LHHHtPbb78tScrIyJAkhYeHOx0XHh7u2Fac6dOnKywszPGKiopy35sAAAAe5bVBx2az6eabb9bf//53de7cWX/60580evRozZ8//7rOO2XKFGVnZzte6enp5VQxAADwNhUWdM6ePVum/Rs0aKA2bdo4rWvdurWOHDkiSYqIiJAkZWZmOu2TmZnp2FacwMBAhYaGOr0AAIA5uSXozJgxQ0uWLHEs/+EPf1CdOnXUsGFD7dy506Vz3Hrrrdq3b5/Tuh9//FFNmjSRJDVr1kwRERFKTk52bM/JydGWLVvUvXv3cngXAADA17kl6MyfP98x9mXt2rVau3atVq5cqT59+mjSpEkunePxxx/XN998o7///e86cOCAFi1apDfeeENjxoyRJFksFk2YMEEvvPCCPv30U3333XcaMWKEIiMj1b9/f3e8LQAA4GOquOOkGRkZjqCzYsUK/eEPf9Ddd9+tpk2bqlu3bi6dIyYmRh9//LGmTJmi559/Xs2aNdPs2bM1fPhwxz5PPvmk8vLy9Kc//Ulnz55Vjx49tGrVKgUFBbnjbQEAAB/jlnl0IiMj9dFHH+k3v/mNWrVqpRdeeEFDhgzRvn37FBMT41W3dDOPDgAAvsfV72+3tOgMHDhQw4YNU8uWLXX69Gn16dNHkvTtt9+qRYsW7rgkAABAEW4JOv/85z/VtGlTpaena+bMmapevbok6cSJE3r00UfdcUkAAIAivPYREBWFrisAAHyPxx8B8e6776pHjx6KjIzU4cOHJUmzZ8/W8uXL3XVJAAAAJ24JOvPmzVN8fLz69Omjs2fPymq1SpJq1qyp2bNnu+OSAAAARbgl6Lz66qt68803NXXqVPn7+zvWR0dH67vvvnPHJQEAAIpwS9BJS0tT586di6wPDAxUXl6eOy4JAABQhFuCTrNmzbRjx44i61etWqXWrVu745IAAABFuOX28vj4eI0ZM0YXL16UYRjaunWrFi9erOnTp+utt95yxyUBAACKcEvQefjhhxUcHKy//OUvOn/+vIYNG6bIyEi98soruv/++91xSQAAgCLcPo/O+fPnlZubq/r167vzMr8a8+gAAOB7PD6PzuXLl/Wf//xH7777roKDgyVJx48fV25urrsuCQAA4MQtXVeHDx9W7969deTIEeXn5+t3v/udatSooRkzZig/P1/z5893x2UBAACcuKVFZ/z48YqOjtaZM2ccrTmSNGDAACUnJ7vjkgAAAEW4pUVn48aN+u9//6uAgACn9U2bNtWxY8fccUkAAIAi3NKiY7PZHI99uNLRo0dVo0YNd1wSAACgCLcEnbvvvtvpmVYWi0W5ublKSEjQ73//e3dcEgBQSdls0smTzq/cXCkv75eXe+8vhjdzy+3l6enp6t27twzD0P79+xUdHa39+/erbt262rBhg1fdas7t5QDgu2w26YpHKpYoN1cKCXF/Pag4rn5/u2WMTlRUlHbu3KklS5Zo586dys3N1UMPPaThw4c7DU4GAABwp3Jv0SkoKNBNN92kFStW+MRzrWjRAQDfZrNJp07Zf87JkVq2tP+8bJl01132Fp9q1SSLxXM1ovx5bMLAqlWr6uLFi+V9WgAAiuXnJ9WvL339tXTHHb+sHzhQattWWr2akFOZuWUw8pgxYzRjxgxdvnzZHacHAMDJsmXS4MHS1TOYHDtmX79smWfqgue5ZTBy4cSA1atXV/v27RVy1QiwZV70G0fXFQD4NqtVatpUOnq0+O0Wi9SokZSW5trAZfgGjw5GrlmzpgYNGuSOUwMA4GTjxpJDjmS/tTw93b7flV1bqBzcEnQWLlzojtMCAFDEiRPlux/MxW1PLwcAoCI0aFC++8Fc3BJ0OnfurJtvvrnIq0uXLrr11lsVFxendevWlemc//jHP2SxWDRhwgTHuosXL2rMmDGqU6eOqlevrkGDBikzM7Oc3w0AwJvddpt9DE5Jd1ZZLFJUlH0/VD5uCTq9e/fWTz/9pJCQEPXs2VM9e/ZU9erVdfDgQcXExOjEiROKjY3V8uXLXTpfSkqKXn/9dXXo0MFp/eOPP67PPvtMH374ob766isdP35cAwcOdMdbAgB4IcOQLl6UZsywL18ddgqXZ89mIHJl5ZYxOqdOndLEiRP117/+1Wn9Cy+8oMOHD2vNmjVKSEjQtGnTdN9995V6rtzcXA0fPlxvvvmmXnjhBcf67Oxs/etf/9KiRYt05513SrKPDWrdurW++eYb3XLLLeX/xgAAXuX8eal69ZK3F95X3L9/hZQDL+SWFp0PPvhADzzwQJH1999/vz744ANJ0gMPPKB9+/Zd81xjxoxR3759FRsb67Q+NTVVBQUFTutvuukmNW7cWJs3by7xfPn5+crJyXF6AQAAc3JLi05QUJD++9//qkWLFk7r//vf/yooKEiSZLPZHD+X5P3339f27duVkpJSZFtGRoYCAgJUs2ZNp/Xh4eHKyMgo8ZzTp0/Xc8895+I7AQB4s2rV7A/svJJh2Ft6CtWta589GZWTW4LOuHHj9Oc//1mpqamKiYmRZB9n89Zbb+npp5+WJK1evVqdOnUq8Rzp6ekaP3681q5de81AVBZTpkxRfHy8YzknJ0dRUVHldn4A8JQrn/lU6OpnPJntmU8WS/FPJS+tOwuVi1tmRpak9957T3PnznV0T7Vq1Urjxo3TsGHDJEkXLlyQxWIpMcR88sknGjBggPyvGD1mtVplsVjk5+en1atXKzY2VmfOnHFq1WnSpIkmTJigxx9/3KU6mRkZgBnYbK4Nts3NLT4YAL7G1e9vtwWd63Xu3DkdPnzYad2DDz6om266SU899ZSioqJUr149LV682DEL8759+3TTTTdp8+bNLg9GJugAMAOCDiobjz4CQpLOnj2rjz76SD/99JOeeOIJ1a5dW9u3b1d4eLgaNmx4zeNr1Kihdu3aOa0LCQlRnTp1HOsfeughxcfHq3bt2goNDdW4cePUvXt37rgCyonVap82/8QJ+2Rrt93GLbreys/P/vf19tvSQw/9crdRocLuqlWrJJ7Qg8rELUFn165dio2NVVhYmA4dOqSHH35YtWvX1rJly3TkyBG988475XKdf/7zn/Lz89OgQYOUn5+vXr166bXXXiuXcwOVVeE4j88/l6ZOdZ42v2FDaeZM6YEHvH+cx5XjVaxW6ZtvpLNnpYgI6dZbfwlsZhqzYhjSM88UDTmF2ywW6fHH7bdaE1hRWbil6yo2NlY333yzZs6cqRo1amjnzp264YYb9N///lfDhg3ToUOHyvuSvxpdV8AvXO3+eO896X/D7bySq+9DMldXzvr1Us+e195v3Toebgnf5+r3t1tuuEtJSdH/+3//r8j6hg0blnrrNwDf8NRT9lYSeJcrW9/8ZNXtWq/7tVi3a738ZC12P8Ds3BJ0AgMDi52I78cff1S9evXccUkA5cDPT0pOvvZ+R4/ax+54Kz8/6dKl0h/iaLHYn48UGFhxdblb4fsdoGU6pKZar55arGFar546pKYaoGVO+5mS1Wpv2lq82P4nibzSc0vQ6devn55//nkVFBRIkiwWi44cOaKnnnrKcYcUAO/k6nNxvb1VYNOm0ms0DHtg+/rriqvJnQxDurmTTY/XXKiPNFgNddRpe0Md00carNF1lpr34ZbLlklNm9r774YNs//ZtKl9PSottwSdl19+Wbm5uapXr54uXLig22+/XS1atFCNGjX0t7/9zR2XBFAODEO6arLxEnl7q4CrQczbA5urzufaFFrLX7POjpKfjCL/uNvXGZptTJC/TNbKYbNJCxdKgwfb0+uVjh2zr1+61DO1wePcctdVWFiY1q5dq02bNmnnzp3Kzc3VzTffXOR5VQC8y/nz0u9/f+39oqLk1a0CVwc2P1l1mzaqgU7ohBpoo26TTfbRyt4e2Mpbtaz/9TuaZTTytUaeF95vM2ECt5tVUuUedGw2m5KSkrRs2TIdOnRIFotFzZo1U0REhAzDkMUs93ECv5IZ5qaZNcu7a74ysA3QMr2i8Yq6oisnXY00Xq/oYw3Urbd6qMhyVs1ywfWdzdKMVRZHTRbw4LJy7boyDEP9+vXTww8/rGPHjql9+/Zq27atDh8+rJEjR2rAgAHleTnAZ9hs0smT9tb1qCjnIQRNmkiLFkl5ecXPf1KRCh+QmJtrv4X86rk9IyOlDz+09wR4O4tsGqnSx6vcr0Xy9/PKyeHLrEz/D2mmZqwLBDyUrlzn0Vm4cKHGjx+v5cuXq+dVkzl8+eWX6t+/v+bOnasRI0aU1yWvG/PowN18eU4XX219Mqw2Waq4WGh2tmSG//YNQzp3TmrTRjp+vPjUXHirWVqab/xFuiIvz/UneDKBkKl4ZB6dxYsX6+mnny4SciTpzjvv1OTJk/Xee++V5yUBU/G2O2H9ZdUdWq8HtFh3aL3PDGItU+vGpk1uq6NCWSz2wDZnzi/LV2+XpNmzzRNyJHszZHa2vfmxpL94i8X7B5bBbco16OzatUu9e/cucXufPn20c+fO8rwk4PVcnZtGklJT3VtLmfjyrbpl6c7IynJfHZ4wcKD00UdF+x0bNbKvHzjQM3W5S2UNeHBZuQadrKwshYeHl7g9PDxcZ86cKc9LAl7PMKTDh13b1ysmDq9st+qaabxKoYEDpUOH7F01ixbZ/0xLM1/IuVJlC3hwWbmO0fH391dGRkaJsx9nZmYqMjJSVi9qn2eMDtytLEMIkpOlO+90bz2lcnVAUaNG9i9Sb/0/5Mo6XgW+O7AMZebq93e53l5uGIZGjhypwBLmVM/Pzy/PywE+qbQ5XXxmCIG336p7ZXfG4MH25SvDDt0Z5uXv772/l/CIcg06cXFx19zHm+64AipC4S3by5dLS4cv0+xi5nSZoFf0wIcDVbWqBwuVzHerbmF3xvjxzt1wjRrZQw7dGYDplWvXlS+i6woVwmaT3n5bxqiHZFw1Pb9NFlkkWd77t/TAA2W8ZaicmfVWXbozANNx9fuboEPQgbuVZSIdT8/pwtgWAD7CI/PoALhOnp7ThVt1AZgMQQdwN1+c04VbdQGYhFueXg7gV/KmOV0GDpTuu4+xLQB8GkEHcLfCKepdGfdy++0VX19puFUXgI+j6wpwN8a9AIDHEHSAisK4FwCocHRdARWJcS8AUKEIOkBFY9wLAFQYuq4AAIBpEXQAAIBpEXQAAIBpeW3QmT59umJiYlSjRg3Vr19f/fv31759+5z2uXjxosaMGaM6deqoevXqGjRokDIzMz1UMQAA8DZeG3S++uorjRkzRt98843Wrl2rgoIC3X333crLy3Ps8/jjj+uzzz7Thx9+qK+++krHjx/XQG7RBQAA/+MzTy//+eefVb9+fX311Vf67W9/q+zsbNWrV0+LFi3S4MGDJUl79+5V69attXnzZt1yyy0unZenlwMA4HtM9/Ty7OxsSVLt2rUlSampqSooKFBsbKxjn5tuukmNGzfW5s2bSzxPfn6+cnJynF4AAMCcfCLo2Gw2TZgwQbfeeqvatWsnScrIyFBAQIBq1qzptG94eLgyMjJKPNf06dMVFhbmeEVFRbmzdAAA4EE+EXTGjBmj77//Xu+///51n2vKlCnKzs52vNLT08uhQgAA4I28fmbksWPHasWKFdqwYYMaNWrkWB8REaFLly7p7NmzTq06mZmZioiIKPF8gYGBCgwMdGfJAADAS3hti45hGBo7dqw+/vhjffnll2rWrJnT9i5duqhq1apKTk52rNu3b5+OHDmi7t27V3S5AADAC3lti86YMWO0aNEiLV++XDVq1HCMuwkLC1NwcLDCwsL00EMPKT4+XrVr11ZoaKjGjRun7t27u3zHFQAAMDevvb3cYrEUu37hwoUaOXKkJPuEgRMnTtTixYuVn5+vXr166bXXXiu16+pq3F4OAIDvcfX722uDTkUh6AAA4HtMN48OAABAWRF0AACAaRF0AACAaRF0AACAaRF0AACAaRF0AACAaRF0AACAaRF0AACAaRF0AACAaRF0AACAaRF0AACAaRF0AACAaRF0AACAaRF0AACAaRF0AACAaRF0AACAaRF0AACAaRF0AACAaRF0AACAaRF0AACAaRF0AACAaRF0AACAaRF0AACAaRF0AACAaRF0AACAaRF0AACAaZki6CQmJqpp06YKCgpSt27dtHXrVk+XBAAAvIDPB50lS5YoPj5eCQkJ2r59uzp27KhevXrp5MmTni4NAAB4mM8HnVmzZmn06NF68MEH1aZNG82fP1/VqlXTggULPF0aAADwsCqeLuB6XLp0SampqZoyZYpjnZ+fn2JjY7V58+Zij8nPz1d+fr5jOTs7W5KUk5Pj3mIBAEC5KfzeNgyj1P18OuicOnVKVqtV4eHhTuvDw8O1d+/eYo+ZPn26nnvuuSLro6Ki3FIjAABwn3PnziksLKzE7T4ddH6NKVOmKD4+3rFss9mUlZWlOnXqyGKxeLCyomJiYpSSkuLpMryCr38W3li/p2qqqOu66zrled7yOFdOTo6ioqKUnp6u0NDQcqkLnuON/1Z4yrU+C8MwdO7cOUVGRpZ6Hp8OOnXr1pW/v78yMzOd1mdmZioiIqLYYwIDAxUYGOi0rmbNmu4q8br4+/vzD9f/+Ppn4Y31e6qmirquu65Tnuctz3OFhoZ63e8Yys4b/63wFFc+i9Jacgr59GDkgIAAdenSRcnJyY51NptNycnJ6t69uwcrKx9jxozxdAlew9c/C2+s31M1VdR13XWd8jyvN/5ewLP4nfhFeX0WFuNao3i83JIlSxQXF6fXX39dXbt21ezZs/XBBx9o7969RcbuAIDZ5OTkKCwsTNnZ2bQEAMXw6a4rSRo6dKh+/vlnPfPMM8rIyFCnTp20atUqQg6ASiEwMFAJCQlFuuQB2Pl8iw4AAEBJfHqMDgAAQGkIOgAAwLQIOgAAwLQIOgAAwLQIOgAAwLQIOgBgQmfPnlV0dLQ6deqkdu3a6c033/R0SYBHcHs5AJiQ1WpVfn6+qlWrpry8PLVr107btm1TnTp1PF0aUKFo0QEAE/L391e1atUkSfn5+TIMQ/x/LSojgg4AeKENGzbo3nvvVWRkpCwWiz755JMi+yQmJqpp06YKCgpSt27dtHXrVqftZ8+eVceOHdWoUSNNmjRJdevWraDqAe9B0AEAL5SXl6eOHTsqMTGx2O1LlixRfHy8EhIStH37dnXs2FG9evXSyZMnHfvUrFlTO3fuVFpamhYtWqTMzMyKKh/wGozRAQAvZ7FY9PHHH6t///6Odd26dVNMTIzmzp0rSbLZbIqKitK4ceM0efLkIud49NFHdeedd2rw4MEVVTbgFWjRAQAfc+nSJaWmpio2Ntaxzs/PT7Gxsdq8ebMkKTMzU+fOnZMkZWdna8OGDWrVqpVH6gU8yeefXg4Alc2pU6dktVoVHh7utD48PFx79+6VJB0+fFh/+tOfHIOQx40bp/bt23uiXMCjCDoAYEJdu3bVjh07PF0G4HF0XQGAj6lbt678/f2LDC7OzMxURESEh6oCvBNBBwB8TEBAgLp06aLk5GTHOpvNpuTkZHXv3t2DlQHeh64rAPBCubm5OnDggGM5LS1NO3bsUO3atdW4cWPFx8crLi5O0dHR6tq1q2bPnq28vDw9+OCDHqwa8D7cXg4AXmj9+vXq2bNnkfVxcXFKSkqSJM2dO1cvvviiMjIy1KlTJ82ZM0fdunWr4EoB70bQAQAApsUYHQAAYFoEHQAAYFoEHQAAYFoEHQAAYFoEHQAAYFoEHQAAYFoEHQAAYFoEHQAAYFoEHQAAYFoEHQA+aeTIkerfv/91nWP9+vWyWCw6e/ZsqfslJyerdevWslqt1zznqlWr1KlTJ9lstuuqDUD5IOgAcKuRI0fKYrHIYrEoICBALVq00PPPP6/Lly9f13lfeeUVxzOf3O3JJ5/UX/7yF/n7+19z3969e6tq1ap67733KqAyANdC0AHgdr1799aJEye0f/9+TZw4Uc8++6xefPHFX3Uuq9Uqm82msLAw1axZs3wLLcbXX3+tgwcPatCgQS4fM3LkSM2ZM8eNVQFwFUEHgNsFBgYqIiJCTZo00SOPPKLY2Fh9+umnkqT8/Hw98cQTatiwoUJCQtStWzetX7/ecWxSUpJq1qypTz/9VG3atFFgYKCOHDlSpOsqPz9fjz32mOrXr6+goCD16NFDKSkpTnV88cUXuvHGGxUcHKyePXvq0KFD16z9/fff1+9+9zsFBQU51u3cuVM9e/ZUjRo1FBoaqi5dumjbtm2O7ffee6+2bdumgwcP/roPDEC5IegAqHDBwcG6dOmSJGns2LHavHmz3n//fe3atUtDhgxR7969tX//fsf+58+f14wZM/TWW29p9+7dql+/fpFzPvnkk1q6dKnefvttbd++XS1atFCvXr2UlZUlSUpPT9fAgQN17733aseOHXr44Yc1efLka9a6ceNGRUdHO60bPny4GjVqpJSUFKWmpmry5MmqWrWqY3vjxo0VHh6ujRs3/qrPB0D5qeLpAgBUHoZhKDk5WatXr9a4ceN05MgRLVy4UEeOHFFkZKQk6YknntCqVau0cOFC/f3vf5ckFRQU6LXXXlPHjh2LPW9eXp7mzZunpKQk9enTR5L05ptvau3atfrXv/6lSZMmad68eWrevLlefvllSVKrVq303XffacaMGaXWfPjwYUdthY4cOaJJkybppptukiS1bNmyyHGRkZE6fPhwGT4dAO5A0AHgditWrFD16tVVUFAgm82mYcOG6dlnn9X69etltVp14403Ou2fn5+vOnXqOJYDAgLUoUOHEs9/8OBBFRQU6NZbb3Wsq1q1qrp27aoffvhBkvTDDz+oW7duTsd17979mrVfuHDBqdtKkuLj4/Xwww/r3XffVWxsrIYMGaLmzZs77RMcHKzz589f8/wA3IugA8DtevbsqXnz5ikgIECRkZGqUsX+T09ubq78/f2Vmppa5I6m6tWrO34ODg6WxWKp0JoL1a1bV2fOnHFa9+yzz2rYsGH6/PPPtXLlSiUkJOj999/XgAEDHPtkZWWpXr16FV0ugKswRgeA24WEhKhFixZq3LixI+RIUufOnWW1WnXy5Em1aNHC6RUREeHy+Zs3b66AgABt2rTJsa6goEApKSlq06aNJKl169baunWr03HffPPNNc/duXNn7dmzp8j6G2+8UY8//rjWrFmjgQMHauHChY5tFy9e1MGDB9W5c2eX3wMA9yDoAPCYG2+8UcOHD9eIESO0bNkypaWlaevWrZo+fbo+//xzl88TEhKiRx55RJMmTdKqVau0Z88ejR49WufPn9dDDz0kSfrzn/+s/fv3a9KkSdq3b58WLVrk0jw8vXr10tdff+1YvnDhgsaOHav169fr8OHD2rRpk1JSUtS6dWvHPt98840CAwNd6hoD4F4EHQAetXDhQo0YMUITJ05Uq1at1L9/f6WkpKhx48ZlOs8//vEPDRo0SH/84x91880368CBA1q9erVq1aolyX4n1NKlS/XJJ5+oY8eOmj9/vmOwc2mGDx+u3bt3a9++fZIkf39/nT59WiNGjNCNN96oP/zhD+rTp4+ee+45xzGLFy/W8OHDVa1atTK9BwDlz2IYhuHpIgDAm02aNEk5OTl6/fXXr7nvqVOn1KpVK23btk3NmjWrgOoAlIYWHQC4hqlTp6pJkyYuPb/q0KFDeu211wg5gJegRQcAAJgWLToAAMC0CDoAAMC0CDoAAMC0CDoAAMC0CDoAAMC0CDoAAMC0CDoAAMC0CDoAAMC0CDoAAMC0/j/slvrxK7WPqwAAAABJRU5ErkJggg==", + "image/png": "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", "text/plain": [ "
" ] @@ -2997,7 +3576,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "\u001b[1m2023-09-27T10:56:20.608829-0700 | INFO | mth5.mth5 | close_mth5 | Flushing and closing /home/kkappler/software/irismt/aurora/docs/examples/8P_CAS04.h5\u001b[0m\n" + "\u001b[1m2023-10-31T13:40:14.123332-0700 | INFO | mth5.mth5 | close_mth5 | Flushing and closing /Users/laurakeyson/Desktop/aurora_test/aurora/docs/examples/8P_CAS04.h5\u001b[0m\n" ] } ], @@ -3018,6 +3597,23 @@ "scrolled": true }, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Error in callback > (for pre_run_cell):\n" + ] + }, + { + "ename": "TypeError", + "evalue": "AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;31mTypeError\u001b[0m: AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given" + ] + }, { "data": { "text/plain": [ @@ -3046,6 +3642,23 @@ "execution_count": 36, "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Error in callback > (for pre_run_cell):\n" + ] + }, + { + "ename": "TypeError", + "evalue": "AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;31mTypeError\u001b[0m: AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given" + ] + }, { "data": { "text/plain": [ @@ -3066,6 +3679,23 @@ "execution_count": 37, "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Error in callback > (for pre_run_cell):\n" + ] + }, + { + "ename": "TypeError", + "evalue": "AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;31mTypeError\u001b[0m: AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given" + ] + }, { "data": { "text/plain": [ @@ -3086,6 +3716,23 @@ "execution_count": 38, "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Error in callback > (for pre_run_cell):\n" + ] + }, + { + "ename": "TypeError", + "evalue": "AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;31mTypeError\u001b[0m: AutoreloadMagics.pre_run_cell() takes 1 positional argument but 2 were given" + ] + }, { "data": { "text/plain": [ @@ -3104,9 +3751,9 @@ ], "metadata": { "kernelspec": { - "display_name": "aurora-test", + "display_name": "Python 3 (ipykernel)", "language": "python", - "name": "aurora-test" + "name": "python3" }, "language_info": { "codemirror_mode": { @@ -3118,7 +3765,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.10" + "version": "3.11.5" } }, "nbformat": 4, diff --git a/tests/cas04/01_make_cas04_mth5.py b/tests/cas04/01_make_cas04_mth5.py index 314b4b08..3a27debc 100644 --- a/tests/cas04/01_make_cas04_mth5.py +++ b/tests/cas04/01_make_cas04_mth5.py @@ -32,6 +32,8 @@ from mth5.clients import FDSN from mth5.utils.helpers import read_back_data +from loguru import logger + # Define paths TEST_PATH = get_test_path() @@ -134,13 +136,13 @@ def make_all_stations_together( expected_file_name = DATA_PATH.joinpath(fdsn_object.make_filename(request_df)) download = force_download if expected_file_name.exists(): - print(f"Already have data for {expected_file_name.name}") + logger.info(f"Already have data for {expected_file_name.name}") download = False mth5_filename = expected_file_name if force_download: download = True if download: - print("getting...", request_df) + logger.info("getting...", request_df) mth5_filename = fdsn_object.make_mth5_from_fdsn_client( request_df, interact=False, path=DATA_PATH ) @@ -187,4 +189,4 @@ def main(): if __name__ == "__main__": main() - print("OK") + logger.info("OK") diff --git a/tests/cas04/02b_process_cas04_mth5.py b/tests/cas04/02b_process_cas04_mth5.py index 3c4a053f..70ca1720 100644 --- a/tests/cas04/02b_process_cas04_mth5.py +++ b/tests/cas04/02b_process_cas04_mth5.py @@ -61,6 +61,8 @@ from aurora.transfer_function.plot.comparison_plots import compare_two_z_files from aurora.transfer_function.kernel_dataset import KernelDataset +from loguru import logger + TEST_PATH = get_test_path() CAS04_PATH = TEST_PATH.joinpath("cas04") CONFIG_PATH = CAS04_PATH.joinpath("config") @@ -163,7 +165,7 @@ def process_station_runs(local_station_id, remote_station_id="", station_runs={} tmp_station_runs = station_runs.restrict_to_stations(relevant_stations) kernel_dataset.select_station_runs(tmp_station_runs, "keep") - print(kernel_dataset.df) + logger.info(kernel_dataset.df) cc = ConfigCreator() pc = cc.create_from_kernel_dataset(kernel_dataset) @@ -305,7 +307,7 @@ def process_with_remote( show_plot=show_plot, z_file_path=z_file_path, ) - print(f"{tf_cls}") + logger.info(f"{tf_cls}") return @@ -327,8 +329,8 @@ def compare_aurora_vs_emtf(local_station_id, remote_station_id, coh=False): """ if remote_station_id is None: emtf_file_base = "CAS04bcd_REV06.zrr" - print("Warning: No Single station EMTF results were provided for CAS04 by USGS") - print(f"Using {emtf_file_base}") + logger.warning("Warning: No Single station EMTF results were provided for CAS04 by USGS") + logger.warning(f"Using {emtf_file_base}") else: emtf_file_base = f"{local_station_id}bcd_{remote_station_id}.zrr" emtf_file = EMTF_RESULTS_PATH.joinpath(emtf_file_base)