From fb60dfc166d8a01217ee20d5494b247b886100f0 Mon Sep 17 00:00:00 2001 From: Bert Jagers Date: Fri, 12 Jul 2024 01:44:55 +0300 Subject: [PATCH] Rename "measure" to "intervention" (#122) * rename "measure" to "intervention" ... except for the WithMeasure keyword in the configuration file * Update "WithMeasure" to "WithIntervention" in all version 3 (and 2) configuration files. --------- Co-authored-by: hrajagers --- README.md | 9 +- dfastmi/batch/AFileNameRetriever.py | 2 +- dfastmi/batch/AnalyserAndReporterDflowfm.py | 2 +- dfastmi/batch/AnalyserDflowfm.py | 16 +- dfastmi/batch/DflowfmReporters.py | 4 +- dfastmi/batch/FileNameRetriever.py | 6 +- dfastmi/batch/FileNameRetrieverLegacy.py | 6 +- dfastmi/batch/Projection.py | 2 +- dfastmi/batch/core.py | 24 +- dfastmi/cli.py | 10 +- .../config/AConfigurationInitializerBase.py | 2 +- dfastmi/config/ConfigFileOperations.py | 8 +- dfastmi/config/ConfigurationChecker.py | 2 +- dfastmi/config/ConfigurationInitializer.py | 6 +- .../config/ConfigurationInitializerLegacy.py | 8 +- dfastmi/gui/dialog_model.py | 27 +- dfastmi/gui/dialog_view.py | 28 +- dfastmi/gui/dialog_view_model.py | 34 +- dfastmi/kernel/core.py | 2 +- dfastmi/kernel/legacy.py | 4 +- dfastmi/messages.NL.ini | 6 +- dfastmi/messages.UK.ini | 62 +- docs/chapters/application.tex | 20 +- docs/chapters/backward_compatibility.tex | 92 +-- docs/chapters/conceptual_description.tex | 40 +- docs/chapters/example.tex | 18 +- docs/chapters/file_formats.tex | 60 +- docs/chapters/get_started.tex | 4 +- docs/chapters/guidance.tex | 50 +- docs/chapters/intro.tex | 22 +- docs/chapters/intro_tech.tex | 8 +- docs/chapters/requirements.tex | 2 +- docs/chapters/sim2ugrid.tex | 2 +- docs/chapters/testing.tex | 2 +- docs/dfastmi_release_notes.tex | 8 +- docs/figures/Palmerswaard_config.png | Bin 49450 -> 49152 bytes docs/figures/Palmerswaard_empty.png | Bin 44208 -> 45014 bytes docs/figures/Pannerden_config.png | Bin 48685 -> 48831 bytes docs/figures/example1.cfg | 54 +- docs/figures/example1_report.txt | 10 +- docs/figures/example2.cfg | 60 +- docs/figures/example2_report.txt | 8 +- docs/figures/main_dialog.png | Bin 43056 -> 43612 bytes docs/figures/report.txt | 20 +- docs/figures/test4.cfg | 36 +- docs/techref.md | 535 ------------------ tests/batch/Test_FileNameRetriever_legacy.py | 8 +- tests/batch/test_FileNameRetriever.py | 8 +- .../Qmin_4000_v2.cfg | 6 +- .../Qmin_4000_v2_rkm.cfg | 6 +- .../Qmin_4000_v3_tide.cfg | 6 +- .../ref_Qmin_Q4000/report.txt | 10 +- .../ref_Qmin_Q4000_rkm/report.txt | 12 +- .../report.txt | 12 +- .../ref_report.txt | 6 +- .../ref_stdout_UK.txt | 38 +- .../Test_configuration_checker_legacy.py | 2 +- tests/config/test_DataAccess_core.py | 14 +- tests/config/test_configuration_checker.py | 2 +- .../Qmin_4000_v2_rkm_with_unknown_key.cfg | 6 +- tests/gui/test_dialog_model.py | 56 +- tests/gui/test_dialog_view.py | 66 ++- tests/gui/test_dialog_view_model.py | 5 +- ...st_DataAccess_ApplicationSettingsHelper.py | 4 +- 64 files changed, 548 insertions(+), 1040 deletions(-) delete mode 100644 docs/techref.md diff --git a/README.md b/README.md index 9281c336..ef8ca298 100644 --- a/README.md +++ b/README.md @@ -8,10 +8,11 @@ For more details see the documentation section. ## Documentation -The documentation consists of -* a LaTeX user manual including scientific description, and developer starter guide (also in this readme) -* a [Technical Reference Manual](docs/techref.md) in Markdown -the sources of both documents can be found in the `docs` folder. +The documentation is written in LaTeX, and consists of +* User Manual including scientific description, and +* Technical Reference Manual including developer starter guide (also in this readme), test plan, and test report, and +* Release Notes. +The sources of all three documents can be found in the `docs` folder. ## Developer user starter guide 1. install python 3 diff --git a/dfastmi/batch/AFileNameRetriever.py b/dfastmi/batch/AFileNameRetriever.py index 62cb7d32..af578000 100644 --- a/dfastmi/batch/AFileNameRetriever.py +++ b/dfastmi/batch/AFileNameRetriever.py @@ -53,7 +53,7 @@ def get_file_names( ------- filenames : Dict[Any, Tuple[str,str]] Dictionary of string tuples representing the D-Flow FM file names for - each reference/with measure pair. + each reference/with intervention pair. """ def _cfg_get(self, config: configparser.ConfigParser, chap: str, key: str) -> str: diff --git a/dfastmi/batch/AnalyserAndReporterDflowfm.py b/dfastmi/batch/AnalyserAndReporterDflowfm.py index c55845fd..6595628b 100644 --- a/dfastmi/batch/AnalyserAndReporterDflowfm.py +++ b/dfastmi/batch/AnalyserAndReporterDflowfm.py @@ -67,7 +67,7 @@ def analyse_and_report_dflowfm( Dictionary of the names of the data file containing the simulation results to be processed. The conditions (discharge, wave conditions, ...) are the key in the dictionary. Per condition a tuple of two file - names is given: a reference file and a file with measure. + names is given: a reference file and a file with intervention. xykm : shapely.geometry.linestring.LineString Original river chainage line. old_zmin_zmax : bool diff --git a/dfastmi/batch/AnalyserDflowfm.py b/dfastmi/batch/AnalyserDflowfm.py index 9d65a8f7..7a943bd0 100644 --- a/dfastmi/batch/AnalyserDflowfm.py +++ b/dfastmi/batch/AnalyserDflowfm.py @@ -120,7 +120,7 @@ def analyse( Dictionary of the names of the data file containing the simulation results to be processed. The conditions (discharge, wave conditions, ...) are the key in the dictionary. Per condition a tuple of two file - names is given: a reference file and a file with measure. + names is given: a reference file and a file with intervention. xykm : shapely.geometry.linestring.LineString Original river chainage line. plotting_options : PlotOptions @@ -256,7 +256,7 @@ def _get_first_fm_data_filename(self, filenames: Dict[Any, Tuple[str, str]]) -> ) if one_fm_filename is None: - self._reporter.print_measure_not_active_for_checked_conditions() + self._reporter.print_intervention_not_active_for_checked_conditions() self._missing_data = True return one_fm_filename @@ -281,7 +281,7 @@ def _get_first_fm_data_filename_based_on_conditions_keys( if not self._missing_data and self._discharges[i] is not None: key, q, t = self._get_condition_key(self._discharges, self._tide_bc, i) if self._rsigma[i] == 1 or self._discharges[i] <= self._q_threshold: - # no celerity or measure not active, so ignore field + # no celerity or intervention not active, so ignore field pass elif key in filenames: return filenames[key][0] @@ -328,7 +328,7 @@ def _get_dzq_based_on_numbered_keys( # ignore period dzq[i] = 0 elif self._discharges[i] <= self._q_threshold: - # measure inactive, so zero-effect for this period + # intervention inactive, so zero-effect for this period dzq[i] = numpy.zeros_like(iface, dtype=float) else: dzq[i] = self._get_values_fm( @@ -353,7 +353,7 @@ def _get_dzq_based_on_conditions_keys( else: key, q, t = self._get_condition_key(self._discharges, self._tide_bc, i) if q <= self._q_threshold: - # measure inactive, so zero-effect for this period + # intervention inactive, so zero-effect for this period dzq[i] = numpy.zeros_like(iface, dtype=float) elif key in filenames.keys(): if t: @@ -397,7 +397,7 @@ def _get_values_fm( ucrit : float Critical flow velocity. filenames : Tuple[str, str] - Names of the reference simulation file and file with the implemented measure. + Names of the reference simulation file and file with the implemented intervention. n_fields : int Number of fields to process (e.g. to cover a tidal period). dx : numpy.ndarray @@ -420,7 +420,7 @@ def _get_values_fm( self._reporter.report_file_not_found(filenames[0]) return None - # file with measure implemented + # file with intervention implemented if not os.path.isfile(filenames[1]): self._reporter.report_file_not_found(filenames[1]) return None @@ -454,7 +454,7 @@ def _get_values_fm( "sea_floor_depth_below_sea_surface", time_index_from_last=ifld )[iface] - # data with measure + # data with intervention u1 = map_file2.read_face_variable( "sea_water_x_velocity", time_index_from_last=ifld )[iface] diff --git a/dfastmi/batch/DflowfmReporters.py b/dfastmi/batch/DflowfmReporters.py index 7aa15dfd..55e19c62 100644 --- a/dfastmi/batch/DflowfmReporters.py +++ b/dfastmi/batch/DflowfmReporters.py @@ -144,8 +144,8 @@ def report_file_not_found(self, filename): def print_riverkm_needed_for_tidal(self): print("RiverKM needs to be specified for tidal applications.") - def print_measure_not_active_for_checked_conditions(self): - print("The measure is not active for any of the checked conditions.") + def print_intervention_not_active_for_checked_conditions(self): + print("The intervention is not active for any of the checked conditions.") class ReporterDflowfmReporter: diff --git a/dfastmi/batch/FileNameRetriever.py b/dfastmi/batch/FileNameRetriever.py index 63121f9b..bec9dcbd 100644 --- a/dfastmi/batch/FileNameRetriever.py +++ b/dfastmi/batch/FileNameRetriever.py @@ -65,7 +65,7 @@ def get_file_names( ------- filenames : Dict[Any, Tuple[str,str]] Dictionary of string tuples representing the D-Flow FM file names for - each reference/with measure pair. The keys of the dictionary vary. They + each reference/with intervention pair. The keys of the dictionary vary. They can be the discharge index, discharge value or a tuple of forcing conditions, such as a Discharge and Tide forcing tuple. """ @@ -87,12 +87,12 @@ def get_file_names( ) from exc reference = self._cfg_get(config, section, "Reference") - measure = self._cfg_get(config, section, "WithMeasure") + intervention = self._cfg_get(config, section, "WithIntervention") if self.needs_tide: T = self._cfg_get(config, section, "TideBC") key = (Q, T) else: key = Q - filenames[key] = (reference, measure) + filenames[key] = (reference, intervention) return filenames diff --git a/dfastmi/batch/FileNameRetrieverLegacy.py b/dfastmi/batch/FileNameRetrieverLegacy.py index 1aefa326..0862f5bc 100644 --- a/dfastmi/batch/FileNameRetrieverLegacy.py +++ b/dfastmi/batch/FileNameRetrieverLegacy.py @@ -54,7 +54,7 @@ def get_file_names( ------- filenames : Dict[Any, Tuple[str,str]] Dictionary of string tuples representing the D-Flow FM file names for - each reference/with measure pair. The keys of the dictionary vary. They + each reference/with intervention pair. The keys of the dictionary vary. They can be the discharge index, discharge value or a tuple of forcing conditions, such as a Discharge and Tide forcing tuple. """ @@ -64,7 +64,7 @@ def get_file_names( qstr = f"Q{i+1}" if qstr in config: reference = self._cfg_get(config, qstr, "Reference") - measure = self._cfg_get(config, qstr, "WithMeasure") - filenames[i] = (reference, measure) + intervention = self._cfg_get(config, qstr, "WithMeasure") + filenames[i] = (reference, intervention) return filenames diff --git a/dfastmi/batch/Projection.py b/dfastmi/batch/Projection.py index bd78f3fa..fb5ae2da 100644 --- a/dfastmi/batch/Projection.py +++ b/dfastmi/batch/Projection.py @@ -110,7 +110,7 @@ def _project_one_xy_point_onto_line( xyline : numpy.ndarray Array containing the x,y data of a line. sline : numpy.ndarray - Array containing the distance measure along the line xyline. + Array containing the distance intervention along the line xyline. last_node : int Index of the last node: xyline.shape[0] - 1 diff --git a/dfastmi/batch/core.py b/dfastmi/batch/core.py index fd13be27..fc139919 100644 --- a/dfastmi/batch/core.py +++ b/dfastmi/batch/core.py @@ -262,14 +262,14 @@ def _report_used_file_names( else: key = q - condition, reference_file_name, measure_file_name, comment = ( + condition, reference_file_name, intervention_file_name, comment = ( get_analysis_condition_values_for_logging( initialized_config, filenames, q, key ) ) _report_analysis_conditions_values( - condition, reference_file_name, measure_file_name, comment, report + condition, reference_file_name, intervention_file_name, comment, report ) @@ -283,19 +283,19 @@ def get_analysis_condition_values_for_logging( if q <= initialized_config.q_threshold: reference_file_name = "---" - measure_file_name = "---" - comment = "(measure not active)" + intervention_file_name = "---" + comment = "(intervention not active)" elif key in filenames: files = filenames[key] reference_file_name = _get_file_name(files[0]) - measure_file_name = _get_file_name(files[1]) + intervention_file_name = _get_file_name(files[1]) comment = "" else: reference_file_name = "xxx" - measure_file_name = "xxx" + intervention_file_name = "xxx" comment = "(not specified)" - return condition, reference_file_name, measure_file_name, comment + return condition, reference_file_name, intervention_file_name, comment def _get_file_name(location: str) -> str: @@ -304,12 +304,12 @@ def _get_file_name(location: str) -> str: def _report_analysis_conditions_values( - condition: str, reference: str, measure: str, comment: str, report: TextIO + condition: str, reference: str, intervention: str, comment: str, report: TextIO ): settings = { "condition": condition, "reference": reference, - "measure": measure, + "intervention": intervention, "comment": comment, } ApplicationSettingsHelper.log_text( @@ -523,7 +523,7 @@ def get_filenames( ------- filenames : Dict[Any, Tuple[str,str]] Dictionary of string tuples representing the D-Flow FM file names for - each reference/with measure pair. The keys of the dictionary vary. They + each reference/with intervention pair. The keys of the dictionary vary. They can be the discharge index, discharge value or a tuple of forcing conditions, such as a Discharge and Tide forcing tuple. """ @@ -722,9 +722,9 @@ def write_report( q_location : str The name of the discharge location. q_threshold : Optional[float] - The discharge below which the measure is not flow-carrying (None if always flowing above 1000 m3/s or when barriers are opened). + The discharge below which the intervention is not flow-carrying (None if always flowing above 1000 m3/s or when barriers are opened). q_bankull : float - The discharge at which the measure is bankfull. + The discharge at which the intervention is bankfull. q_stagnant : float Discharge below which the river flow is negligible. tstag : float diff --git a/dfastmi/cli.py b/dfastmi/cli.py index bf8899d8..08b34747 100644 --- a/dfastmi/cli.py +++ b/dfastmi/cli.py @@ -338,9 +338,9 @@ def _interactive_get_discharges( q_location : str Name of the location at which the discharge is q_threshold : Optional[float] - River discharge at which the measure becomes active. + River discharge at which the intervention becomes active. q_bankfull : float - River discharge at which the measure is bankfull. + River discharge at which the intervention is bankfull. q_fit : Tuple[float, float] A discharge and dicharge change determining the discharge exceedance curve (from rivers configuration file). q_stagnant : float @@ -364,7 +364,7 @@ def _interactive_get_discharges( q_levels = reach.qlevels dq = reach.dq - ApplicationSettingsHelper.log_text("intro-measure") + ApplicationSettingsHelper.log_text("intro-intervention") if q_stagnant > q_fit[0]: ApplicationSettingsHelper.log_text("query_flowing_when_barriers_open") else: @@ -590,9 +590,9 @@ def _write_report_nodata( q_location : str Name of the location at which the discharge is q_threshold : Optional[float] - River discharge at which the measure becomes active. + River discharge at which the intervention becomes active. q_bankfull : float - River discharge at which the measure is bankfull. + River discharge at which the intervention is bankfull. q_stagnant : float Discharge below which the river flow is negligible. tstag : float diff --git a/dfastmi/config/AConfigurationInitializerBase.py b/dfastmi/config/AConfigurationInitializerBase.py index d3a793dc..e7a6df70 100644 --- a/dfastmi/config/AConfigurationInitializerBase.py +++ b/dfastmi/config/AConfigurationInitializerBase.py @@ -72,7 +72,7 @@ def rsigma(self) -> Vector: @property def q_threshold(self) -> float: - """River discharge at which the measure becomes active [m3/s].""" + """River discharge at which the intervention becomes active [m3/s].""" return self._q_threshold @property diff --git a/dfastmi/config/ConfigFileOperations.py b/dfastmi/config/ConfigFileOperations.py index 3979434c..7fc4ebdf 100644 --- a/dfastmi/config/ConfigFileOperations.py +++ b/dfastmi/config/ConfigFileOperations.py @@ -123,9 +123,9 @@ def _config_to_relative_paths( ConfigFileOperations._update_to_relative_path( rootdir, config, qstr, "Reference" ) - if "WithMeasure" in config[qstr]: + if "WithIntervention" in config[qstr]: ConfigFileOperations._update_to_relative_path( - rootdir, config, qstr, "WithMeasure" + rootdir, config, qstr, "WithIntervention" ) return config @@ -298,9 +298,9 @@ def _config_to_absolute_paths( ConfigFileOperations._update_to_absolute_path( rootdir, config, qstr, "Reference" ) - if "WithMeasure" in config[qstr]: + if "WithIntervention" in config[qstr]: ConfigFileOperations._update_to_absolute_path( - rootdir, config, qstr, "WithMeasure" + rootdir, config, qstr, "WithIntervention" ) return config diff --git a/dfastmi/config/ConfigurationChecker.py b/dfastmi/config/ConfigurationChecker.py index 3a250fa9..a2b093cb 100644 --- a/dfastmi/config/ConfigurationChecker.py +++ b/dfastmi/config/ConfigurationChecker.py @@ -143,7 +143,7 @@ def _check_configuration_cond( ) return_value = ( self._check_key_with_file_value_and_set_return_value_if_needed( - config, return_value, condition, "WithMeasure" + config, return_value, condition, "WithIntervention" ) ) else: diff --git a/dfastmi/config/ConfigurationInitializer.py b/dfastmi/config/ConfigurationInitializer.py index c03103ec..7c0d143a 100644 --- a/dfastmi/config/ConfigurationInitializer.py +++ b/dfastmi/config/ConfigurationInitializer.py @@ -153,7 +153,7 @@ def get_bed_celerity(reach: Reach, discharges: Vector) -> Vector: all_zero = False if all_zero: raise ValueError( - "The celerities can't all be equal to zero for a measure to have any impact!" + "The celerities can't all be equal to zero for a intervention to have any impact!" ) return celerity @@ -227,7 +227,7 @@ def calculate_time_mi( reach : Reach The reach we want to get the levels from. q_threshold : float - Threshold discharge above which the measure is active. + Threshold discharge above which the intervention is active. discharges : Vector A vector of discharges (Q) included in hydrograph [m3/s]. @@ -281,7 +281,7 @@ def set_times( q_stagnant : float A discharge below which the river flow is negligible. q_threshold : float - Discharge below which the measure has no effect (due to measure design) [m3/s]. + Discharge below which the intervention has no effect (due to intervention design) [m3/s]. Results ------- diff --git a/dfastmi/config/ConfigurationInitializerLegacy.py b/dfastmi/config/ConfigurationInitializerLegacy.py index f009f876..d9804905 100644 --- a/dfastmi/config/ConfigurationInitializerLegacy.py +++ b/dfastmi/config/ConfigurationInitializerLegacy.py @@ -164,7 +164,7 @@ def _get_q_bankfull_from_config( self, config: ConfigParser, q_threshold: Optional[float], q_levels: List[float] ) -> float: """ - Get the simulation discharge at which measure reaches bankfull + Get the simulation discharge at which intervention reaches bankfull from configuration in batch mode (no user interaction). Arguments @@ -172,14 +172,14 @@ def _get_q_bankfull_from_config( config : ConfigParser Configuration of the analysis to be run. q_threshold : Optional[float] - River discharge at which the measure becomes active + River discharge at which the intervention becomes active q_levels : Characteristic discharges used by algorithm [m3/s]. Results ------- q_bankfull : float - River discharge at which the measure is bankfull [m3/s]. + River discharge at which the intervention is bankfull [m3/s]. """ q_bankfull = 0.0 if q_threshold is None or q_threshold < q_levels[1]: @@ -202,7 +202,7 @@ def _get_q_threshold_from_config(self, config: ConfigParser) -> Optional[float]: Results ------- q_threshold : Optional[float] - River discharge at which the measure becomes active [m3/s]. + River discharge at which the intervention becomes active [m3/s]. """ q_threshold = config.get("General", "Qthreshold", fallback="") diff --git a/dfastmi/gui/dialog_model.py b/dfastmi/gui/dialog_model.py index 64fe83ae..29ec9e8f 100644 --- a/dfastmi/gui/dialog_model.py +++ b/dfastmi/gui/dialog_model.py @@ -68,7 +68,7 @@ class ConditionConfig(BaseModel): Discharge: float Reference: str - WithMeasure: str + WithIntervention: str class DialogModel: @@ -201,7 +201,7 @@ def check_configuration( branch: Branch, reach: AReach, reference_files: FilenameDict, - measure_files: FilenameDict, + intervention_files: FilenameDict, ucritical: float, qthreshold: float, ) -> bool: @@ -216,8 +216,8 @@ def check_configuration( Selected reach which is used and should be in this config. reference_files: FilenameDict Selected reference files which is used and should be in this config. - measure_files: FilenameDict - Selected measure files which is used and should be in this config. + intervention_files: FilenameDict + Selected intervention files which is used and should be in this config. ucritical : float Selected minimal critical flow value which is used and should be in this config. qthreshold : float @@ -228,7 +228,7 @@ def check_configuration( Boolean indicating whether the (D-FAST MI analysis) configuration can be created. """ config = self.get_configuration( - branch, reach, reference_files, measure_files, ucritical, qthreshold + branch, reach, reference_files, intervention_files, ucritical, qthreshold ) return check_configuration(self.rivers, config) @@ -237,7 +237,7 @@ def get_configuration( branch: Branch, reach: AReach, reference_files: FilenameDict, - measure_files: FilenameDict, + intervention_files: FilenameDict, ucritical: float, qthreshold: float, ) -> ConfigParser: @@ -252,8 +252,8 @@ def get_configuration( Selected reach which is used and should be in this config. reference_files: FilenameDict Selected reference files which is used and should be in this config. - measure_files: FilenameDict - Selected measure files which is used and should be in this config. + intervention_files: FilenameDict + Selected intervention files which is used and should be in this config. ucritical : float Selected minimal critical flow value which is used and should be in this config. qthreshold : float @@ -284,7 +284,7 @@ def get_configuration( if isinstance(reach, Reach): self._get_condition_configuration( - config, reach, reference_files, measure_files + config, reach, reference_files, intervention_files ) self._add_unknown_read_config_key_values(config) return config @@ -294,17 +294,20 @@ def _get_condition_configuration( config: ConfigParser, reach: Reach, reference_files: FilenameDict, - measure_files: FilenameDict, + intervention_files: FilenameDict, ) -> None: """Get condition configuration.""" for i, discharge in enumerate(reach.hydro_q): - if discharge in reference_files.keys() or discharge in measure_files.keys(): + if ( + discharge in reference_files.keys() + or discharge in intervention_files.keys() + ): cond = f"C{i+1}" condition = ConditionConfig( Discharge=discharge, Reference=reference_files.get(discharge, ""), - WithMeasure=measure_files.get(discharge, ""), + WithIntervention=intervention_files.get(discharge, ""), ) config[cond] = condition.model_dump() diff --git a/dfastmi/gui/dialog_view.py b/dfastmi/gui/dialog_view.py index 701d069d..b4d0cf35 100644 --- a/dfastmi/gui/dialog_view.py +++ b/dfastmi/gui/dialog_view.py @@ -72,7 +72,7 @@ # View reference_label = "reference" -with_measure_label = "with_measure" +with_intervention_label = "with_intervention" class DialogView: @@ -164,7 +164,7 @@ def __init__(self, view_model: DialogViewModel): self._view_model.reference_files_changed.connect( self._update_condition_file_field ) - self._view_model.measure_files_changed.connect( + self._view_model.intervention_files_changed.connect( self._update_condition_file_field ) @@ -590,12 +590,12 @@ def _create_conditions_group_input(self, layout: QBoxLayout) -> None: # Add widgets to the form layout discharge_column_label = QLabel(gui_text("qval"), self._win) reference_column__label = QLabel(gui_text("reference"), self._win) - measure_column_label = QLabel(gui_text("measure"), self._win) + intervention_column_label = QLabel(gui_text("intervention"), self._win) # Add widgets to the form layout with labels self._grid_layout.addWidget(discharge_column_label, 1, 0) self._grid_layout.addWidget(reference_column__label, 1, 1) - self._grid_layout.addWidget(measure_column_label, 1, 2) + self._grid_layout.addWidget(intervention_column_label, 1, 2) # Add group box to the main layout layout.addRow(group_box) @@ -800,14 +800,14 @@ def _add_condition_line( "Enter reference file path", ) - # get the file with measure - q1_with_measure = self._create_condition_validating_line_edit( + # get the file with intervention + q1_with_intervention = self._create_condition_validating_line_edit( prefix, discharge, enabled, - self._view_model.measure_files, - with_measure_label, - "Enter with measure file path", + self._view_model.intervention_files, + with_intervention_label, + "Enter with intervention file path", ) discharge_value_label = QLabel(discharge_name, self._win) @@ -821,7 +821,7 @@ def _add_condition_line( ) self._grid_layout.addWidget( self._open_file_layout( - q1_with_measure, prefix + with_measure_label, enabled + q1_with_intervention, prefix + with_intervention_label, enabled ), row_count, 2, @@ -1118,9 +1118,11 @@ def _set_file_in_condition_table(self, key: str, file: str) -> None: key_without_suffix = float(key.replace("_" + reference_label, "")) self._view_model.reference_files[key_without_suffix] = file - if "_" + with_measure_label in key: - key_without_suffix = float(key.replace("_" + with_measure_label, "")) - self._view_model.measure_files[key_without_suffix] = file + if "_" + with_intervention_label in key: + key_without_suffix = float( + key.replace("_" + with_intervention_label, "") + ) + self._view_model.intervention_files[key_without_suffix] = file def _show_message(self, message: str) -> None: """ diff --git a/dfastmi/gui/dialog_view_model.py b/dfastmi/gui/dialog_view_model.py index a416f135..a648fd52 100644 --- a/dfastmi/gui/dialog_view_model.py +++ b/dfastmi/gui/dialog_view_model.py @@ -60,9 +60,9 @@ class DialogViewModel(QObject): output_dir_changed = pyqtSignal(str) analysis_exception = pyqtSignal(str, str) reference_files_changed = pyqtSignal(str, float, str) - measure_files_changed = pyqtSignal(str, float, str) + intervention_files_changed = pyqtSignal(str, float, str) _reference_files: FilenameDict = {} - _measure_files: FilenameDict = {} + _intervention_files: FilenameDict = {} _ucrit_cache: Dict[Tuple[Branch, AReach], float] = {} _qthreshold_cache: Dict[Tuple[Branch, AReach], float] = {} model: DialogModel @@ -192,11 +192,11 @@ def reference_files(self) -> FilenameDict: return self._reference_files @property - def measure_files(self) -> FilenameDict: + def intervention_files(self) -> FilenameDict: """ - FilenameDict: The measurement files. + FilenameDict: The intervention files. """ - return self._measure_files + return self._intervention_files @property def make_plot(self) -> bool: @@ -271,7 +271,7 @@ def get_configuration(self) -> ConfigParser: self.current_branch, self.current_reach, self.reference_files, - self.measure_files, + self.intervention_files, self.ucritical, self.qthreshold, ) @@ -292,7 +292,7 @@ def run_analysis(self) -> bool: self.current_branch, self.current_reach, self.reference_files, - self.measure_files, + self.intervention_files, self.ucritical, self.qthreshold, ) @@ -441,7 +441,7 @@ def save_configuration(self, filename: str) -> None: self.current_branch, self.current_reach, self.reference_files, - self.measure_files, + self.intervention_files, self.ucritical, self.qthreshold, ) @@ -481,7 +481,7 @@ def load_configuration(self, filename: str) -> bool: ) self._initialize_ucritical() self._update_slength() - self._initialize_reference_and_measure() + self._initialize_reference_and_intervention() self.make_plot = self.model.plotting self.save_plot = self.model.save_plots @@ -490,9 +490,9 @@ def load_configuration(self, filename: str) -> bool: return True - def _initialize_reference_and_measure(self): + def _initialize_reference_and_intervention(self): self._reference_files = {} - self._measure_files = {} + self._intervention_files = {} for section_name in self.model.config.sections(): if section_name.lower().startswith("c"): section = self.model.config[section_name] @@ -503,9 +503,13 @@ def _initialize_reference_and_measure(self): "reference", cond_discharge, self._reference_files[cond_discharge] ) - self._measure_files[cond_discharge] = section.get("WithMeasure", "") - self.measure_files_changed.emit( - "with_measure", cond_discharge, self._measure_files[cond_discharge] + self._intervention_files[cond_discharge] = section.get( + "WithIntervention", "" + ) + self.intervention_files_changed.emit( + "with_intervention", + cond_discharge, + self._intervention_files[cond_discharge], ) def check_configuration(self) -> bool: @@ -519,7 +523,7 @@ def check_configuration(self) -> bool: self.current_branch, self.current_reach, self.reference_files, - self.measure_files, + self.intervention_files, self.ucritical, self.qthreshold, ) diff --git a/dfastmi/kernel/core.py b/dfastmi/kernel/core.py index b49d402a..770c3d8e 100644 --- a/dfastmi/kernel/core.py +++ b/dfastmi/kernel/core.py @@ -97,7 +97,7 @@ def dzq_from_du_and_h( h0 : numpy.ndarray Array containing the water depths (in the reference simulation). u1 : numpy.ndarray - Array containing the flow velocity magnitudes in the simulation with the measure. + Array containing the flow velocity magnitudes in the simulation with the intervention. ucrit : float Critical flow velocity below which no change is expected. diff --git a/dfastmi/kernel/legacy.py b/dfastmi/kernel/legacy.py index 0995eeb6..abb48d7e 100644 --- a/dfastmi/kernel/legacy.py +++ b/dfastmi/kernel/legacy.py @@ -49,9 +49,9 @@ def char_discharges( dq : QChange A tuple of 2 characteristic discharge adjustments (from rivers configuration file). q_threshold : Optional[float] - Optional threshold discharge at which measure starts to flow. + Optional threshold discharge at which intervention starts to flow. q_bankfull : float - Discharge at which measure is bankfull. + Discharge at which intervention is bankfull. Returns ------- diff --git a/dfastmi/messages.NL.ini b/dfastmi/messages.NL.ini index b8be8d62..aa3c5cb6 100644 --- a/dfastmi/messages.NL.ini +++ b/dfastmi/messages.NL.ini @@ -96,7 +96,7 @@ afvoerblokken weergegeven: blok 3 met afvoer Q3 is het hoogwaterblok -[intro-measure] +[intro-intervention] Met de volgende drie vragen wordt de maatregel beschreven. Als een maatregel @@ -252,7 +252,7 @@ Kritische stroomsnelheid : {u_critical} m/s [analysis_settings_conditions_header] Conditie | Referentiebestand (zonder maatregel) | Bestand met maatregel [analysis_settings_conditions_values] -{condition:<21} | {reference:<38} | {measure:<38} {comment} +{condition:<21} | {reference:<38} | {intervention:<38} {comment} [end] Programma geeindigd !!! [yes] @@ -355,7 +355,7 @@ De maatregel wordt stroomvoerend bij afvoeren [m3/s] vanaf ... Afvoer [m3/s] [gui_reference] Referentiebestand (zonder maatregel) -[gui_measure] +[gui_intervention] Bestand met maatregel [gui_ucrit] Kritische stroomsnelheid [m/s] (standaard : {default}) diff --git a/dfastmi/messages.UK.ini b/dfastmi/messages.UK.ini index f4f2647b..f9afe379 100644 --- a/dfastmi/messages.UK.ini +++ b/dfastmi/messages.UK.ini @@ -5,7 +5,7 @@ The option 'reduce_output' is active. [header] D-FAST Morphological Impact implements an algorithm to estimate the local -morphological effects of a local measure (i.e. an adjustment to the river). +morphological effects of a local intervention (i.e. an adjustment to the river). The conceptual framework was originally introduced in "RWS-WD memo WAQUA vuistregel 20-10-08" but it has been extended and improved over the years. Check the user manual @@ -34,7 +34,7 @@ This is version {version}. [header_legacy] This program implements the "WAQUA vuistregel" for the estimation of the local -morphological effects of a local measure (i.e. an adjustment to the river). See +morphological effects of a local intervention (i.e. an adjustment to the river). See "RWS-WD memo WAQUA vuistregel 20-10-08" for details). It is based on an estimation of the equilibrium bed level changes in the main @@ -77,8 +77,8 @@ Confirm using "y" to end the program ... [limits] -The results are not valid for a combination of multiple measures, or for a -single measure extending over a distance more than 4 km! +The results are not valid for a combination of multiple interventions, or for a +single intervention extending over a distance more than 4 km! In order to use D-FAST Morphological Impact you need to run reference and @@ -95,12 +95,12 @@ discharge: block 3 with discharge Q3 is the flood period -[intro-measure] +[intro-intervention] -The next three questions will be used to characterize the measure. If a measure +The next three questions will be used to characterize the intervention. If a intervention impacts the hydrodynamics in the main channel at multiple locations, answer the -questions for the part of the measure that is expected to have the most impact +questions for the part of the intervention that is expected to have the most impact on the navigation channel. @@ -109,13 +109,13 @@ on the navigation channel. Are the simulation results already available? [query_flowing_when_barriers_open] -Is the measure flow-carrying at all discharges when all barriers are opened? +Is the intervention flow-carrying at all discharges when all barriers are opened? [query_flowing_above_qmin] -Is the measure flow-carrying for all discharges at {border} above {qmin} m3/s? +Is the intervention flow-carrying for all discharges at {border} above {qmin} m3/s? [query_branch_header] -On which branch is the measure located? +On which branch is the intervention located? river branch nr @@ -128,7 +128,7 @@ On which branch is the measure located? The number of the river branch is ... [query_reach_header] -On which reach is the measure located? +On which reach is the intervention located? river reach nr @@ -138,10 +138,10 @@ On which reach is the measure located? The number of the river reach is ... [reach] -The measure is located on reach {reach} +The intervention is located on reach {reach} [query_qthreshold] -The measure is flow-carrying for discharges [m3/s] at {border} above ... +The intervention is flow-carrying for discharges [m3/s] at {border} above ... [query_qavail] @@ -153,9 +153,9 @@ Q1 is should be positive, please correct the input ... Q{p} of the {pname} is {qp} m3/s Q{i} should be larger than Q{p} , please correct the input ... [report_qthreshold] -The measure is only flow-carrying for discharges above {q} m3/s at {border} +The intervention is only flow-carrying for discharges above {q} m3/s at {border} [report_qbankfull] -The bankfull discharge at the measure corresponds to {q} m3/s bij {border} +The bankfull discharge at the intervention corresponds to {q} m3/s bij {border} [closed_barriers] The barriers are assumed to be closed for {ndays} days. [char_discharge] @@ -164,10 +164,10 @@ The characteristic discharge of block {n} is {q} m3/s at {border} The year-averaged period of block {n} is {ndays} days [query_flowing] Most of the flood plains become flow-carrying for discharges above {qborder} -m3/s. Is the measure also bankfull for these discharges? +m3/s. Is the intervention also bankfull for these discharges? [query_qbankfull] -The measure is bankfull at a discharge [m3/s] of ... +The intervention is bankfull at a discharge [m3/s] of ... [---] @@ -201,13 +201,13 @@ containing three variables containing the characteristic bed level changes: [need_single_input] For the estimation of the morphological impact in the reach {reach.name} -two simulations are needed: one with and one without the measure +two simulations are needed: one with and one without the intervention [need_multiple_input] For the estimation of the morphological impact in the reach {reach.name} the following {numq} simulations are needed for the situation with and without -measure +intervention [lowwater] low flow block with discharge {q} m3/s at {border} @@ -243,9 +243,9 @@ Impacted length : {slength} m Critical flow velocity : {u_critical} m/s [analysis_settings_conditions_header] -Condition | Reference file (without measure) | File with measure +Condition | Reference file (without intervention) | File with intervention [analysis_settings_conditions_values] -{condition:<21} | {reference:<38} | {measure:<38} {comment} +{condition:<21} | {reference:<38} | {intervention:<38} {comment} [end] The program has ended !!! [yes] @@ -259,7 +259,7 @@ to the following three files: flow velocity magnitude in the reference simulation (x,y,magnitude,m,n) water depth in the reference simulation (x,y,depth,m,n) - flow velocity magnitude with measure (x,y,magnitude,m,n) + flow velocity magnitude with intervention (x,y,magnitude,m,n) [repeat_input] @@ -299,9 +299,9 @@ No file specified for discharge {q} and tide {t}! [end_program] Ending program! [file_descriptions] -flow velocity magnitudes without measure -water depths without measure -flow velocity magnitudes with measure +flow velocity magnitudes without intervention +water depths without intervention +flow velocity magnitudes with intervention [stage_descriptions] low water period transition period @@ -332,11 +332,11 @@ Select format of input files: WAQUA export, or D-Flow FM map [gui_branch] Branch [gui_branch_tooltip] -On which river branch is the measure located? +On which river branch is the intervention located? [gui_reach] Reach [gui_reach_tooltip] -On which river reach is the measure located? +On which river reach is the intervention located? [gui_qloc] Discharge Location [gui_qloc_tooltip] @@ -344,13 +344,13 @@ The location at which the discharge values for this branch are defined ... [gui_qthr] Minimum Flow-carrying Discharge [m3/s] (stagnant : {stagnant}) [gui_qthr_tooltip] -The measure is flow-carrying at for discharges [m3/s] above ... +The intervention is flow-carrying at for discharges [m3/s] above ... [gui_qval] Discharge [m3/s] [gui_reference] -Name of reference file (without measure) -[gui_measure] -Name of file with measure +Name of reference file (without intervention) +[gui_intervention] +Name of file with intervention [gui_ucrit] Critical Flow Velocity [m/s] (default : {default}) [gui_ucrit_tooltip] diff --git a/docs/chapters/application.tex b/docs/chapters/application.tex index ab33457e..ebc49ee5 100644 --- a/docs/chapters/application.tex +++ b/docs/chapters/application.tex @@ -3,17 +3,17 @@ \chapter{Steps in the analysis}\label{Chp:steps} To apply \dfastmi one should carry out the following five steps. \begin{enumerate} -\item Characterize the measure to be evaluated using \dfastmi. +\item Characterize the intervention to be evaluated using \dfastmi. Verify that it's appropriate to use \dfastmi instrument. -Determine the threshold discharge $Q_\text{thr}$ (at Lobith/Borgharen) at which the measure (indirectly) starts to influence the flow pattern in the main channel. -The threshold discharge is critical for determining the fraction of the year that the measure influences the flow, and hence the duration over which the bed level difference (compared to the reference situation) can develop. +Determine the threshold discharge $Q_\text{thr}$ (at Lobith/Borgharen) at which the intervention (indirectly) starts to influence the flow pattern in the main channel. +The threshold discharge is critical for determining the fraction of the year that the intervention influences the flow, and hence the duration over which the bed level difference (compared to the reference situation) can develop. As a result, this value is critical for determining the total volume of sedimentation (or erosion) that can be expected after one year. Therefore, it is important to clearly specify how this threshold value has been determined. -\item Determine the flow conditions for which \dflowfm simulations should be carried out for the flow conditions configured for that particular reach\footnote{Note that in WAQMORF and version 2 of \dfastmi, the discharges depended on the characteristics of the measure. +\item Determine the flow conditions for which \dflowfm simulations should be carried out for the flow conditions configured for that particular reach\footnote{Note that in WAQMORF and version 2 of \dfastmi, the discharges depended on the characteristics of the intervention. That is no longer the case. The flow conditions are now fixed per river branch/reach. -Only the threshold discharge is relevant as this is the lowest discharge at which the measure has any effect, and hence discharges below that value can be skipped.}. +Only the threshold discharge is relevant as this is the lowest discharge at which the intervention has any effect, and hence discharges below that value can be skipped.}. For the Dutch rivers these values are given by the following table \newline \newline @@ -25,16 +25,16 @@ \chapter{Steps in the analysis}\label{Chp:steps} \newline \newline These flow conditions have been pre-configured for the latest \dflowfm schematizations. -It is not necessary to run simulations for conditions at which the measure doesn't influence the flow patterns (e.g.~discharges associated with stagnant conditions due to closure of barriers, and discharges below the measure specific $Q_\text{thr}$). +It is not necessary to run simulations for conditions at which the intervention doesn't influence the flow patterns (e.g.~discharges associated with stagnant conditions due to closure of barriers, and discharges below the intervention specific $Q_\text{thr}$). At this stage, \dfmi already reports the impacted length (`aanzandingslengte'), which is the distance over which a bed level change can built up during the period that the discharge of the river is above the threshold discharge. -\item Perform the necessary hydrodynamic simulations (note that for each condition two runs are needed: one reference run and one run with the measure). +\item Perform the necessary hydrodynamic simulations (note that for each condition two runs are needed: one reference run and one run with the intervention). Verify that \begin{itemize} \item the \dflowfm results are stable -\item the measure is properly represented on the mesh used (check in particular weirs, proper alignment of groynes, channel shape and bed roughness) +\item the intervention is properly represented on the mesh used (check in particular weirs, proper alignment of groynes, channel shape and bed roughness) \item all simulations use the same base mesh (changes in dry areas may result in slight differences in the mesh effectively used) -\item there is a visible difference in the velocities in the main channel between the simulations with and without measure +\item there is a visible difference in the velocities in the main channel between the simulations with and without intervention \end{itemize} \item Run \dfastmi to compute the characteristic bed level change per grid point in the main channel @@ -47,7 +47,7 @@ \chapter{Steps in the analysis}\label{Chp:steps} The year-averaged mean value is the main value for further analysis. The minimum and maximum value indicate the variability in the bed level during an average year; this may provide critical insight for the stability of structures, such as groynes. -Note these values represent the morphological impact of a measure when a (dynamic) equilibrium is finally reached and when \emph{no} countermeasures are taken. +Note these values represent the morphological impact of a intervention when a (dynamic) equilibrium is finally reached and when \emph{no} counterinterventions are taken. Depending on the size of the impact and the morphological activity of the system, the new equilibrium may be reached quickly or very slowly over many years or decades. \item Visualize the characteristic bed level changes in a graph and/or on a map. diff --git a/docs/chapters/backward_compatibility.tex b/docs/chapters/backward_compatibility.tex index 1af056cf..18d8a656 100644 --- a/docs/chapters/backward_compatibility.tex +++ b/docs/chapters/backward_compatibility.tex @@ -50,9 +50,9 @@ \section{Conceptual framework} This section describes the conceptual framework of the method used by \dfastmi version 2 and the derivation of the river parameters used for the Dutch rivers. -\subsection{Characteristics of bed level changes due to river measures} +\subsection{Characteristics of bed level changes due to river interventions} -A river measure, i.e.~a local river adjustment (typically a flow capacity enlarging adjustment) outside the main channel, may result in changes in the flow pattern within the main channel. +A river intervention, i.e.~a local river adjustment (typically a flow capacity enlarging adjustment) outside the main channel, may result in changes in the flow pattern within the main channel. The bed levels within the main channel will react to such changes depending on the \hspace{1cm}\emph{magnitude, duration and length scale of these flow pattern changes in the main channel.} @@ -77,15 +77,15 @@ \subsection{Characteristics of bed level changes due to river measures} \end{itemize} Because part of the bed level changes migrate downstream, the morphological impact on projects located downstream may be increased. -After all, the maximum bed level change of one single river enlarging measure is reached at the end of the flood period and it's the result of that flood period. -However, when a series of measures along the river are combined (for instance, lowering of the groynes along a reach) the downstream bed level changes may be increased by accumulation of downstream migrating bed waves, such that the accumulated bed level change may be significantly larger. -In other words, river measures extending over longer reaches may result in a larger morphodynamic response than comparable but more isolated measures. +After all, the maximum bed level change of one single river enlarging intervention is reached at the end of the flood period and it's the result of that flood period. +However, when a series of interventions along the river are combined (for instance, lowering of the groynes along a reach) the downstream bed level changes may be increased by accumulation of downstream migrating bed waves, such that the accumulated bed level change may be significantly larger. +In other words, river interventions extending over longer reaches may result in a larger morphodynamic response than comparable but more isolated interventions. The aforementioned observations result in the following premises. The rule-of-thumb described in the following sections \begin{itemize} -\item will only be valid for the estimation of the impact of local measures with a length of at most one flood plain, +\item will only be valid for the estimation of the impact of local interventions with a length of at most one flood plain, \item should take into account seasonal variations, and @@ -95,9 +95,9 @@ \subsection{Characteristics of bed level changes due to river measures} \subsection{Characterization of the changes in the main channel flow pattern} -When a measure in the floodplains does not include something like a permanently active secondary channel, the flow pattern in the main channel will only be affected during flood conditions. -If on the other hand, such a secondary channel (or other measure active under medium to low flow conditions such as groyne adjustments) is included in the design then the flow pattern will also be influenced during transitional or even low flow conditions. -It's therefore critical to determine the effect of the measure on the main channel flow pattern at different discharge levels. +When a intervention in the floodplains does not include something like a permanently active secondary channel, the flow pattern in the main channel will only be affected during flood conditions. +If on the other hand, such a secondary channel (or other intervention active under medium to low flow conditions such as groyne adjustments) is included in the design then the flow pattern will also be influenced during transitional or even low flow conditions. +It's therefore critical to determine the effect of the intervention on the main channel flow pattern at different discharge levels. Secondary channels may have a major impact on the morphodynamics of the main channel. The magnitude of the discharge through the secondary channel varies as function of the river discharge. @@ -138,8 +138,8 @@ \subsection{Characterization of the changes in the main channel flow pattern} \end{figure} These characteristic discharge values can be used to schematize the river hydrograph effectively by means of a limited number of discrete discharge conditions. -Three discharge blocks turn out to be sufficient for many measures as may bed concluded from \autoref{App.Tab1}. -That is why it has been concluded that \emph{three flow conditions are sufficient to schematize the yearly hydrograph for the purpose of estimating the morphological impact of local measures}. +Three discharge blocks turn out to be sufficient for many interventions as may bed concluded from \autoref{App.Tab1}. +That is why it has been concluded that \emph{three flow conditions are sufficient to schematize the yearly hydrograph for the purpose of estimating the morphological impact of local interventions}. \begin{table} \small @@ -154,7 +154,7 @@ \subsection{Characterization of the changes in the main channel flow pattern} lowering of levees & from minimum river flow to minimum discharge for new levee threshold & from new levee threshold to 6000 m\textsuperscript{3}/s at Lobith & from 6000 m\textsuperscript{3}/s at Lobith to fully developed flood plain flow \\ \end{tabular} -\caption{Overview of discharge conditions for various measures in a free flowing Rhine branch.} +\caption{Overview of discharge conditions for various interventions in a free flowing Rhine branch.} \label{App.Tab1} \end{table} @@ -173,7 +173,7 @@ \subsection{Characterization of the changes in the main channel flow pattern} lowering of levees & from 1500 m\textsuperscript{3}/s at Lobith to minimum discharge for new levee threshold & from new levee threshold to 6000 m\textsuperscript{3}/s at Lobith & from 6000 m\textsuperscript{3}/s at Lobith to fully developed flood plain flow \\ \end{tabular} -\caption{Overview of discharge conditions for various measures along the Nederrijn.} +\caption{Overview of discharge conditions for various interventions along the Nederrijn.} \label{App.Tab2} \end{table} @@ -189,7 +189,7 @@ \subsection{Characterization of the changes in the main channel flow pattern} lowering of levees & from 1000 m\textsuperscript{3}/s at Borgharen to minimum discharge for new levee threshold & from new levee threshold to 2000 m\textsuperscript{3}/s at Borgharen & from 2000 m\textsuperscript{3}/s at Borgharen to fully developed flood plain flow \\ \end{tabular} -\caption{Overview of discharge conditions for various measures along the Meuse.} +\caption{Overview of discharge conditions for various interventions along the Meuse.} \label{App.Tab3} \end{table} @@ -247,7 +247,7 @@ \subsection{Scientific background of the relaxation model for morphological chan \item[$q_\text{mc}$] main channel unit discharge \unitbrackets{m\textsuperscript{2}/s} \item[$q_\text{out}$] \emph{outflow of} unit discharge \emph{to} the flood plain per unit length \unitbrackets{m\textsuperscript{2}/sm} \item[$s$] streamwise coordinate \unitbrackets{m} -\item[$z_b$] bed level change due to measure \unitbrackets{m} +\item[$z_b$] bed level change due to intervention \unitbrackets{m} \item[$s_\text{mc}$] main channel unit sediment transport including pores \unitbrackets{m\textsuperscript{2}/s} \item[$s_\text{out}$] \emph{outflow of} unit sediment transport including pores \emph{to} the flood plain per unit length \unitbrackets{m\textsuperscript{2}/sm} \end{symbollist} @@ -279,10 +279,10 @@ \subsection{Scientific background of the relaxation model for morphological chan \label{Eq5} \end{equation} -The dynamic bed level changes will develop starting from the upstream end of the measure. +The dynamic bed level changes will develop starting from the upstream end of the intervention. The length $L$ over which this sedimentation occurs (i.e.~varies from 0 upstream to maximum amount $\Delta z_b$ downstream) corresponds to the reach over which discharge leaves the main channel and in which the flow pattern is adjusted by the reduced discharge as sketched in \autoref{App.Fig4}. -Hence, this length $L$ may thus be significantly shorter than the length of the measure or the distance between the inflow and outflow openings of a secondary channel. -The integration of \autoref{Eq5} over this length $L$ results in a relaxation model for the dynamic bed level change due to the measure +Hence, this length $L$ may thus be significantly shorter than the length of the intervention or the distance between the inflow and outflow openings of a secondary channel. +The integration of \autoref{Eq5} over this length $L$ results in a relaxation model for the dynamic bed level change due to the intervention % \begin{equation} \frac{h}{b s_\text{mc}} \int_0^L \pdiff{z_b}{t} ds + \int_0^L \pdiff{z_b}{s} ds = \int_0^L \left [ h \frac{q_\text{out}}{q_\text{mc}} - h \frac{s_\text{out}}{b s_\text{mc}} \right ] ds @@ -294,7 +294,7 @@ \subsection{Scientific background of the relaxation model for morphological chan \label{Eq5b} \end{equation} % -which $\Delta q_\text{mc}$ is the total change in unit discharge in the main channel due to the measure \unitbrackets{m\textsuperscript{2}/s} and $\Delta s_\text{mc}$ is the total change in unit sediment transport due to the measure \unitbrackets{m\textsuperscript{2}/s}. +which $\Delta q_\text{mc}$ is the total change in unit discharge in the main channel due to the intervention \unitbrackets{m\textsuperscript{2}/s} and $\Delta s_\text{mc}$ is the total change in unit sediment transport due to the intervention \unitbrackets{m\textsuperscript{2}/s}. Please note that $q_\text{out}$ was defined above positive for fluxes towards the flood plain, however, the resulting change $\Delta q_\text{mc}$ in the unit discharge within the main channel will be negative for such conditions (equivalently for $s_\text{out}$ and $\Delta s_\text{mc}$); this introduces a sign change on the right hand side. % \begin{equation} @@ -318,11 +318,11 @@ \subsection{Scientific background of the relaxation model for morphological chan % This relaxation behaviour can also be observed in the results of the numerical models (both 1D and 2D). -The rule-of-thumb is derived by posing that the bed level change $\Delta z_b$ can be interpreted as the bed level change due to a measure over a distance $L$ along a stream line starting from the upstream end of the measure. +The rule-of-thumb is derived by posing that the bed level change $\Delta z_b$ can be interpreted as the bed level change due to a intervention over a distance $L$ along a stream line starting from the upstream end of the intervention. The equilibrium value $\Delta z_{b,\text{eq}}$ depends according \autoref{Eq6} on the (original) water depth, the relative change in unit discharge and the relative change in the sediment transport. The latter term is the result of the sediment flux into the secondary channel which dampens the effect of reduced sediment transport capacity in the main channel. Ignoring this relatively minor dampening term results in a more conservative estimate. -For measures over a short distance (i.e.~for the type of measures for which the rule-of-thumb is applicable) the water level changes are an order of magnitude smaller than the bed level changes. +For interventions over a short distance (i.e.~for the type of interventions for which the rule-of-thumb is applicable) the water level changes are an order of magnitude smaller than the bed level changes. Therefore, one can rewrite \autoref{Eq6} to state that the equilibrium bed level change $\Delta z_{b,\text{eq}}$ equals the product of the water depth and the relative change in the main channel velocity $u$ \unitbrackets{m/s}: % \begin{equation} @@ -345,9 +345,9 @@ \subsection{The relaxation model applied to seasonal variability} with % \begin{symbollist} -\item[$z_{b,i}$] \unitbrackets{m} the morphological effect of the measure during period $i$ +\item[$z_{b,i}$] \unitbrackets{m} the morphological effect of the intervention during period $i$ \item[$z_{b,i}(0)$] \unitbrackets{m} the morphological effect at the start of period $i$ -\item[$z_{b,i,\text{eq}}$] \unitbrackets{m} the equilibrium effect of the measure during period $i$ +\item[$z_{b,i,\text{eq}}$] \unitbrackets{m} the equilibrium effect of the intervention during period $i$ \item[$t$] \unitbrackets{day} time \item[$T_{m,i}$] \unitbrackets{day} the morphological time scale during period $i$ \end{symbollist} @@ -358,7 +358,7 @@ \subsection{The relaxation model applied to seasonal variability} \label{App.Fig5} \end{figure} -\autoref{Eq7} implies that at the end of period $i$ (lasting for a period of $T_i$ days) the morphological effect of the measure is given by +\autoref{Eq7} implies that at the end of period $i$ (lasting for a period of $T_i$ days) the morphological effect of the intervention is given by % \begin{equation} z_{b,i+1}(0) = z_{b,i} (0) \sigma_i + z_{b,i,\text{eq}} (1-\sigma_i) \text{ with } \sigma_i = e^{-T_i/T_{m,i}} @@ -382,7 +382,7 @@ \subsection{The relaxation model applied to seasonal variability} z_{b,3}(0) &= \frac{z_{b,1,\text{eq}} (1-\sigma_1) \sigma_2 + z_{b,2,\text{eq}} (1-\sigma_2) + z_{b,3,\text{eq}} (1-\sigma_3) \sigma_1 \sigma_2}{1 - \sigma_1 \sigma_2 \sigma_3} \label{Eq8g} \end{align} -The lower bound for the morphological impact of the measure will be equal to $\min[z_{b,1}(0), z_{b,2}(0), z_{b,3}(0)]$ and the upper bound is given by $\max[z_{b,1}(0), z_{b,2}(0), z_{b,3}(0)]$. +The lower bound for the morphological impact of the intervention will be equal to $\min[z_{b,1}(0), z_{b,2}(0), z_{b,3}(0)]$ and the upper bound is given by $\max[z_{b,1}(0), z_{b,2}(0), z_{b,3}(0)]$. For the schematized hydrograph shown in \autoref{App.Fig5} the bed level change is \begin{itemize} @@ -420,7 +420,7 @@ \subsection{The relaxation model applied to seasonal variability} \subsection{Estimate of the spatial distribution of the bed level changes} -\autoref{Eq8e} gives the maximum and \autoref{Eq8f} gives the minimum bed level change at the upstream end of the measure. +\autoref{Eq8e} gives the maximum and \autoref{Eq8f} gives the minimum bed level change at the upstream end of the intervention. Moving downstream for that point, the bed level change consists of a minimum bed level change $z_{b,1,\text{eq}}$ plus the part of the flood deposit that moves downstream during low flow conditions. During a flood the downstream migrating sedimentation volume may temporarily even cause bed level changes larger than $z_{b,2,\text{eq}}$ but this is rather unlikely. For convenience, it's therefore assumed that the maximum and minimum bed level change given by \autoref{Eq8e} and \autoref{Eq8f} are valid \emph{for each individual point in the main channel within the impacted area}. @@ -431,7 +431,7 @@ \subsection{Estimate of the spatial distribution of the bed level changes} \subsection{Time scales for bed level change} The magnitude of the maximum bed level change at the end of the flood period and the minimum bed level change at the end of the low flow period both depend on the morphological time scales $T_{m,i}$ \unitbrackets{day} which define the rate of response of the bed levels. -Using \autoref{Eq5T} the time scale $T_{m,i}$ can also be written as $T_{m,i} = L/w_i$ with $w_i$ the bed celerity, i.e.~the propagation speed of bed level changes, and $L$ the distance measure along the flow direction over which the bed level changes are accumulated. +Using \autoref{Eq5T} the time scale $T_{m,i}$ can also be written as $T_{m,i} = L/w_i$ with $w_i$ the bed celerity, i.e.~the propagation speed of bed level changes, and $L$ the distance intervention along the flow direction over which the bed level changes are accumulated. As mentioned before, the length $L$ corresponds to the distance over which flow leaves the main channel and the flow pattern in the main channel adjusts to the reduced discharge. Obviously, this distance varies in reality over the channel width and it depends on the discharge condition considered. For consistent use of the rule-of-thumb, it's assumed that the length $L$ corresponds to twice the main channel width $B_\text{mc}$. @@ -522,12 +522,12 @@ \section{Steps in the analysis} \dfastmi can perform steps 2 and 4 for you (except for the computation of $z_\text{mdd}$). \begin{enumerate} -\item Characterize the measure to be evaluated using \dfastmi +\item Characterize the intervention to be evaluated using \dfastmi \begin{itemize} -\item Determine the threshold discharge $Q_\text{thr}$ (at Lobith/Borgharen) at which the measure (indirectly) starts to influence the flow pattern in the main channel. +\item Determine the threshold discharge $Q_\text{thr}$ (at Lobith/Borgharen) at which the intervention (indirectly) starts to influence the flow pattern in the main channel. -\item Determine the bankfull discharge $Q_\text{bf}$ (at Lobith/Borgharen) at which the measure is fully flooded (bankfull flow) +\item Determine the bankfull discharge $Q_\text{bf}$ (at Lobith/Borgharen) at which the intervention is fully flooded (bankfull flow) \end{itemize} \item Define the discharge blocks (block 1 "low flow", block 3 "flood" and block 2 "transitional between low and flood flows") using @@ -668,7 +668,7 @@ \subsection{Example 1: secondary channel along the Waal} \label{App.Fig7} \end{figure} -\subsubsection*{Step 1) Characterize the measure} +\subsubsection*{Step 1) Characterize the intervention} The secondary channel removes 3 \% of the total discharge for all discharges below 4000 m\textsuperscript{3}/s in the Bovenrijn. Above that value the withdrawal increases linearly up to 10 \% at 7000 m\textsuperscript{3}/s. @@ -769,7 +769,7 @@ \subsection{Example 2: secondary channel along the Lek} \label{App.Fig10} \end{figure} -\subsubsection*{Step 1) Characterize the measure} +\subsubsection*{Step 1) Characterize the intervention} The secondary channel extracts 3 \% of the total discharge for Bovenrijn discharges up to 4000 m\textsuperscript{3}/s. Above that value the withdrawal increases linearly up to 10 \% at 7000 m\textsuperscript{3}/s. @@ -858,7 +858,7 @@ \subsection{Example 3: an application to the Maas} \item The tool \dfastmi was used to determine the --- for the morphology --- representative discharges. This step returned the discharges 1250 m\textsuperscript{3}/s, 1500 m\textsuperscript{3}/s and 2000 m\textsuperscript{3}/s at Borgharen. -\item WAQUA simulations were carried for both the reference situation and situation with the measure implemented. +\item WAQUA simulations were carried for both the reference situation and situation with the intervention implemented. The water depths and flow velocities were exported using WAQVIEW to the export files supported by \dfastmi. \item The export files were used as input for a second run of \dfastmi to estimate i) the mean annual bed level change, ii) the maximum bed level change (at the end of the flood season) and iii) the minimum bed level change (at the end of the low flow season) @@ -866,11 +866,11 @@ \subsection{Example 3: an application to the Maas} \begin{figure} \includegraphics[width=\columnwidth]{figures/Fig13.png} -\caption{Overview of the velocity changes due to the measure} +\caption{Overview of the velocity changes due to the intervention} \label{App.Fig13} \end{figure} -The biggest local bed level changes are located in the bend immediately downstream of the measure. +The biggest local bed level changes are located in the bend immediately downstream of the intervention. The figures show the mean annual bed level changes in cm for three different critical velocities for the initiation of motion. This parameter turns out to have little effect in this particular case. The impact of the plan on river maintenance can be determined based on the available space in the navigation channel. @@ -930,7 +930,7 @@ \subsection{Rivers configuration file}\label{app-v1:rivers} BranchName & \keyw{Reach} & Name of reach within branch \\ BranchName & \keyw{QLocation} & Location at which discharges for branch are defined \\ \keyw{*} & \keyw{QStagnant} & Discharge \unitbrackets{m\textsuperscript{3}/s} below which main channel flow can be assumed stagnant \\ -\keyw{*} & \keyw{QMin} & Minimum discharge \unitbrackets{m\textsuperscript{3}/s} at which measure becomes active \\ +\keyw{*} & \keyw{QMin} & Minimum discharge \unitbrackets{m\textsuperscript{3}/s} at which intervention becomes active \\ \keyw{*} & \keyw{QFit} & Two discharges \unitbrackets{m\textsuperscript{3}/s} used for representing the exceedance curve \\ \keyw{*} & \keyw{QLevels} & Four characteristic discharges \unitbrackets{m\textsuperscript{3}/s} used by algorithm \\ \keyw{*} & \keyw{dQ} & Two discharge adjustments \unitbrackets{m\textsuperscript{3}/s} used by algorithm \\ @@ -989,11 +989,11 @@ \subsection{Analysis configuration file}\label{app-v1:config} The file must contain a \keyw{[General]} block with a keyword \keyw{Version} to indicate the version number of the file. The version number should be \keyw{1.0}. -Version 1.0 files must contain in the \keyw{[General]} block also the keywords \keyw{Branch} and \keyw{Reach} to identify the branch (in Dutch: tak) and reach (in Dutch: stuk) in which the measure is located. +Version 1.0 files must contain in the \keyw{[General]} block also the keywords \keyw{Branch} and \keyw{Reach} to identify the branch (in Dutch: tak) and reach (in Dutch: stuk) in which the intervention is located. The specified names may be shortened, but they should uniquely identify the branch and reach amongst the names of the other branches and reaches. -Optionally, the same block may also contain \keyw{Qmin}, \keyw{QBankfull} and \keyw{UCrit} values representative for this particular measure if they differ from those typical for the selected reach. +Optionally, the same block may also contain \keyw{Qmin}, \keyw{QBankfull} and \keyw{UCrit} values representative for this particular intervention if they differ from those typical for the selected reach. These items are sufficient for a basic analysis. -For a full spatial analysis the user needs to specify the names of the D-Flow FM map-files containing the results of the simulations without measure (reference) and with measure for the selected discharges Q1, Q2, and Q3. +For a full spatial analysis the user needs to specify the names of the D-Flow FM map-files containing the results of the simulations without intervention (reference) and with intervention for the selected discharges Q1, Q2, and Q3. \begin{tabular}{l|l|p{8cm}} Block & Keyword & Description \\ \hline @@ -1001,18 +1001,18 @@ \subsection{Analysis configuration file}\label{app-v1:config} \keyw{General} & \keyw{Mode} & \keyw{WAQUA export} or \keyw{D-Flow FM map} (the latter is the default) \\ \keyw{General} & \keyw{Branch} & Name of the selected branch \\ \keyw{General} & \keyw{Reach} & Name of the selected reach \\ -\keyw{General} & \keyw{QMin} & Minimum discharge \unitbrackets{m\textsuperscript{3}/s} at which measure becomes active \\ -\keyw{General} & \keyw{QBankfull} & Discharge \unitbrackets{m\textsuperscript{3}/s} at which measure reaches bankfull \\ +\keyw{General} & \keyw{QMin} & Minimum discharge \unitbrackets{m\textsuperscript{3}/s} at which intervention becomes active \\ +\keyw{General} & \keyw{QBankfull} & Discharge \unitbrackets{m\textsuperscript{3}/s} at which intervention reaches bankfull \\ \keyw{General} & \keyw{UCrit} & Critical (minimum) velocity \unitbrackets{m/s} for sediment transport \\ \keyw{Q1} & \keyw{Discharge} & Discharge \unitbrackets{m\textsuperscript{3}/s} of the low flow simulation \\ \keyw{Q1} & \keyw{Reference} & Name of D-Flow FM map-file to be used for reference condition at Q1 \\ -\keyw{Q1} & \keyw{WithMeasure} & Name of D-Flow FM map-file that includes the measure at Q1 \\ +\keyw{Q1} & \keyw{WithMeasure} & Name of D-Flow FM map-file that includes the intervention at Q1 \\ \keyw{Q2} & \keyw{Discharge} & Discharge \unitbrackets{m\textsuperscript{3}/s} of the transitional regime \\ \keyw{Q2} & \keyw{Reference} & Name of D-Flow FM map-file to be used for reference condition at Q2 \\ -\keyw{Q2} & \keyw{WithMeasure} & Name of D-Flow FM map-file that includes the measure at Q2 \\ +\keyw{Q2} & \keyw{WithMeasure} & Name of D-Flow FM map-file that includes the intervention at Q2 \\ \keyw{Q3} & \keyw{Discharge} & Discharge \unitbrackets{m\textsuperscript{3}/s} of the high flow simulation \\ \keyw{Q3} & \keyw{Reference} & Name of D-Flow FM map-file to be used for reference condition at Q3 \\ -\keyw{Q3} & \keyw{WithMeasure} & Name of D-Flow FM map-file that includes the measure at Q3 \\ +\keyw{Q3} & \keyw{WithMeasure} & Name of D-Flow FM map-file that includes the intervention at Q3 \\ \end{tabular} The file names may be specified using relative or absolute paths. @@ -1020,7 +1020,7 @@ \subsection{Analysis configuration file}\label{app-v1:config} \subsubsection*{Example} -This example shows a complete analysis configuration file for a measure in the first branch/reach of the default \keyw{Dutch\_rivers.cfg} configuration. +This example shows a complete analysis configuration file for a intervention in the first branch/reach of the default \keyw{Dutch\_rivers.cfg} configuration. It reports the default settings. Only the \keyw{Version}, \keyw{Branch}, \keyw{Reach}, \keyw{Reference} and \keyw{WithMeasure} keywords are required for the full analysis. @@ -1061,7 +1061,7 @@ \section{Simulation result files} The content of these result files can't be accessed directly from Python, so they need to be exported to a more accessible file format. The previous WAQMORF program also required that the user extracted the cell centred velocity magnitude and water depth values from the the WAQUA SDS-output files write them to simple ASCII files with 6 columns specifying the x-coordinates, y-coordinates, the value of the quantity (labeled as z-coordinate), m-index, n-index, and cell number. Only the "z" values and the m- and n-indices are used by the program. -The names of those files has been hardcoded, they should read \keyw{xyz\_-zeta.00<1/2>.Q} with the quantity name equal to 'velocity' or 'waterdepth', a 1 for the reference simulation and a 2 for the simulation with the measure implemented, and i the number of the discharge level. +The names of those files has been hardcoded, they should read \keyw{xyz\_-zeta.00<1/2>.Q} with the quantity name equal to 'velocity' or 'waterdepth', a 1 for the reference simulation and a 2 for the simulation with the intervention implemented, and i the number of the discharge level. \dfastmi supports these same files; an example of such file are given below. \subsubsection*{Example} diff --git a/docs/chapters/conceptual_description.tex b/docs/chapters/conceptual_description.tex index 4f1b7e9b..4bdde428 100644 --- a/docs/chapters/conceptual_description.tex +++ b/docs/chapters/conceptual_description.tex @@ -1,16 +1,16 @@ \chapter{Conceptual framework} \label{Chp:Concepts} This chapter describes the conceptual framework of the method used by \dfastmi. -It all starts with the design of a river measure, i.e.~a local river adjustment, to address some issue e.g. an adjustment to increase the flow capacity. -In order to evaluate the measure, it's important to also look at the morphological changes caused by the changing flow patterns. +It all starts with the design of a river intervention, i.e.~a local river adjustment, to address some issue e.g. an adjustment to increase the flow capacity. +In order to evaluate the intervention, it's important to also look at the morphological changes caused by the changing flow patterns. \dfastmi implements algorithms to provide an estimate of the long-term morphological effect inside the main channel, as well as the degree to which this adjustment may occur in the first year. The next couple of sections provide context and theory to underpin the implemented algorithms. \Autoref{Sec:Limitations} provides an overview of the assumptions and limitations of this tool. -\section{Characteristics of bed level changes due to river measures} +\section{Characteristics of bed level changes due to river interventions} -A river measure, i.e.~a local river adjustment (typically a flow capacity enlarging adjustment) outside the main channel, may result in changes in the flow pattern within the main channel. +A river intervention, i.e.~a local river adjustment (typically a flow capacity enlarging adjustment) outside the main channel, may result in changes in the flow pattern within the main channel. The bed levels within the main channel will react to such changes depending on the \hspace{1cm}\emph{magnitude, duration and length scale of these flow pattern changes in the main channel.} @@ -35,15 +35,15 @@ \section{Characteristics of bed level changes due to river measures} \end{itemize} Because part of the bed level changes migrate downstream, the morphological impact on projects located downstream may be increased. -After all, the maximum bed level change of one single river enlarging measure is reached at the end of the flood period and it's the result of that flood period. -However, when a series of measures along the river are combined (for instance, lowering of the groynes along a reach) the downstream bed level changes may be increased by accumulation of downstream migrating bed waves, such that the accumulated bed level change may be significantly larger. -In other words, river measures extending over longer reaches may result in a larger morphodynamic response than comparable but more isolated measures. +After all, the maximum bed level change of one single river enlarging intervention is reached at the end of the flood period and it's the result of that flood period. +However, when a series of interventions along the river are combined (for instance, lowering of the groynes along a reach) the downstream bed level changes may be increased by accumulation of downstream migrating bed waves, such that the accumulated bed level change may be significantly larger. +In other words, river interventions extending over longer reaches may result in a larger morphodynamic response than comparable but more isolated interventions. The aforementioned observations result in the following premises. The rule-of-thumb described in the following sections \begin{itemize} -\item will only be valid for the estimation of the impact of local measures with a length of at most one flood plain, +\item will only be valid for the estimation of the impact of local interventions with a length of at most one flood plain, \item should take into account seasonal variations, and @@ -53,9 +53,9 @@ \section{Characteristics of bed level changes due to river measures} \section{Characterization of the changes in the main channel flow pattern} -When a measure in the floodplains does not include something like a permanently active secondary channel, the flow pattern in the main channel will only be affected during flood conditions. -If on the other hand, such a secondary channel (or other measure active under medium to low flow conditions such as groyne adjustments) is included in the design then the flow pattern will also be influenced during transitional or even low flow conditions. -It's therefore critical to determine the effect of the measure on the main channel flow pattern at different discharge levels. +When a intervention in the floodplains does not include something like a permanently active secondary channel, the flow pattern in the main channel will only be affected during flood conditions. +If on the other hand, such a secondary channel (or other intervention active under medium to low flow conditions such as groyne adjustments) is included in the design then the flow pattern will also be influenced during transitional or even low flow conditions. +It's therefore critical to determine the effect of the intervention on the main channel flow pattern at different discharge levels. Secondary channels may have a major impact on the morphodynamics of the main channel. The magnitude of the discharge through the secondary channel varies as function of the river discharge. @@ -78,9 +78,9 @@ \section{Characterization of the changes in the main channel flow pattern} When the discharge through the secondary channel is controlled by an orifice, the fully flooded condition may add an additional characteristic discharge. In order to characterize the flow patterns during flood it's necessary to distinguish the condition in which the flood plains just start to carry flows, and the condition of fully developed flow in the flood plains. -\dfastmi version 2 and before (in WAQMORF) used an algorithm to determine which three flow conditions would best represent the effect of the measure under various conditions. +\dfastmi version 2 and before (in WAQMORF) used an algorithm to determine which three flow conditions would best represent the effect of the intervention under various conditions. However, as these conditions varied depending on the thresholds specified by the user, the tool could give different results depending on the user. -In \dfastmi version 3, a new method has been implemented that removes most input parameters; only the minimum discharge at which the measure becomes active is still used as an input besides the general location characteristics of the branch and reach in which the measure is located. +In \dfastmi version 3, a new method has been implemented that removes most input parameters; only the minimum discharge at which the intervention becomes active is still used as an input besides the general location characteristics of the branch and reach in which the intervention is located. \section{Equilibrium bed level change: the discharge dominated case} @@ -100,7 +100,7 @@ \section{Equilibrium bed level change: the discharge dominated case} \item[$q_\text{mc}$] main channel discharge per unit width \unitbrackets{m\textsuperscript{2} s\textsuperscript{-1}} \item[$q_\text{out}$] discharge per channel unit width \emph{to} the flood plain per unit river length \unitbrackets{m\textsuperscript{2} s\textsuperscript{-1} m\textsuperscript{-1}} \item[$s$] stream-wise coordinate \unitbrackets{m} -\item[$z_b$] bed level change due to measure \unitbrackets{m} +\item[$z_b$] bed level change due to intervention \unitbrackets{m} \item[$s_\text{mc}$] main channel sediment transport per unit width \unitbrackets{m\textsuperscript{2} s\textsuperscript{-1}} \item[$s_\text{out}$] sediment transport per channel unit width \emph{to} the flood plan per unit river length \unitbrackets{m\textsuperscript{2} s\textsuperscript{-1} m\textsuperscript{-1}} \end{symbollist} @@ -128,7 +128,7 @@ \section{Equilibrium bed level change: the discharge dominated case} \label{Eq:zbEqui} \end{equation} % -The easiest way to understand this equation is to realize that it states that the velocity change caused by the measure will be compensated by a bed level change such that the velocity, and hence the sediment transport capacity, returns to the original value. +The easiest way to understand this equation is to realize that it states that the velocity change caused by the intervention will be compensated by a bed level change such that the velocity, and hence the sediment transport capacity, returns to the original value. Note that we have assumed that the effect on the water level is negligible, hence the water depth change $\Delta h$ equals the bed level change $\Delta z_{b,\text{eq}}$. % \begin{equation} @@ -138,7 +138,7 @@ \section{Equilibrium bed level change: the discharge dominated case} % In reality the discharge isn't constant throughout the year. Instead, the year is assumed to be represented by a hydrograph series of constant discharges. -The bed level development during a single period of the hydrograph is given by \autoref{Eq:zbRelax}, such that at the end of period $i$ (lasting $T_i$ days) the morphological effect of the measure is given by +The bed level development during a single period of the hydrograph is given by \autoref{Eq:zbRelax}, such that at the end of period $i$ (lasting $T_i$ days) the morphological effect of the intervention is given by % \begin{equation} \Delta z_{b,i+1}(0) = \Delta z_{b,i} (0) \sigma_i + \Delta z_{b,i,\text{eq}} (1-\sigma_i) \text{ with } \sigma_i = e^{-T_i/T_{m,i}} @@ -162,8 +162,8 @@ \section{Equilibrium bed level change: the discharge dominated case} \end{equation} % where $\xi = 1 - \prod_{i=1}^N \sigma_i$ and all indices $m>N$ are equivalent to $m-N$ for reasons of periodicity. -If the impact of the measure increases as the discharge increases, the maximum bed level change is likely reached at the end of the period with the highest discharge. -However, this isn't true for all hydrographs and for all measures. +If the impact of the intervention increases as the discharge increases, the maximum bed level change is likely reached at the end of the period with the highest discharge. +However, this isn't true for all hydrographs and for all interventions. Similarly, the minimum bed level change is frequently reached at the end of the period with the lowest discharge, but this may also depend on the details of the hydrograph used (which may for instance include multiple low flow periods of different duration). For this reason, the minimum and maximum values are determined independently for every individual grid cell as the minimum and maximum over all $N$ fields of $\Delta z_{b,i}(0)$. The year-averaged bed level can be computed as @@ -185,8 +185,8 @@ \section{Equilibrium bed level change: extending to tides}\label{Sec:Tides} \section{Estimate for dredging volumes}\label{Sec:DredgeVol} -An order-of-magnitude estimate of the dredging (or dumping) volume that will required to keep the bed levels at the initial\footnote{If the bed levels in the main channel differ between the reference simulation and the simulation with the measure, the level meant here is the bed level as included in the simulation \emph{with} the measure.} level can be obtained by accumulating the equilibrium bed change over the impacted length, where the latter is defined as the distance over which a bed level disturbance can travel during the part of the year that the flow conditions are different due to the measure being evaluated. +An order-of-magnitude estimate of the dredging (or dumping) volume that will required to keep the bed levels at the initial\footnote{If the bed levels in the main channel differ between the reference simulation and the simulation with the intervention, the level meant here is the bed level as included in the simulation \emph{with} the intervention.} level can be obtained by accumulating the equilibrium bed change over the impacted length, where the latter is defined as the distance over which a bed level disturbance can travel during the part of the year that the flow conditions are different due to the intervention being evaluated. The sediment transport during the remainder of the year may adjust the shape and location of the deposit, but the total volume remains the same. It is foreseen that this estimate may be computed automatically in a future release of \dfmi, but this is currently left as a manual step for the user. -In case the measure triggers multiple separate sedimentation (or erosion) areas, the volumes should be accumulated for each area individually, i.e. not only the most upstream area should be considered, and subsequently the total volume can be accumulated over all areas. +In case the intervention triggers multiple separate sedimentation (or erosion) areas, the volumes should be accumulated for each area individually, i.e. not only the most upstream area should be considered, and subsequently the total volume can be accumulated over all areas. diff --git a/docs/chapters/example.tex b/docs/chapters/example.tex index b59f0f91..16edcf72 100644 --- a/docs/chapters/example.tex +++ b/docs/chapters/example.tex @@ -6,7 +6,7 @@ \section{Example 1: secondary channel along the Nederrijn} For consistency the \dfastmi analysis was performed using the hydrodynamic results of Delft3D-FLOW\footnote{Since \dfastmi expects \dflowfm results in netCDF UGRID format, the results were converted to the appropriate file format by means of \texttt{sim2ugrid}, see \autoref{Chp:Sim2Ugrid}.}. For this analysis, the Nederrijn grid of the DVR model has been used. -The measure concerns a secondary channel planned in the Palmerswaard which is located at Rkm 910-912 in the reach upstream of the Amerongen barrier at Rkm 922. +The intervention concerns a secondary channel planned in the Palmerswaard which is located at Rkm 910-912 in the reach upstream of the Amerongen barrier at Rkm 922. The reference model is based on the Baseline schematization ‘rijn-beno18\_5-v1’. Since the DVR model was too coarse to represent the actual secondary channel, a combination of flow extraction (at Rkm 910.5) and insertion (at Rkm 912) was used to represent the side channel. @@ -16,9 +16,9 @@ \section{Example 1: secondary channel along the Nederrijn} \label{Palmers_proj} \end{figure} -Since the measure is located on the Rhine branches, the new \dfastmi method requires the input of simulation results for 6 steady discharges: 1300, 2000, 3000, 4000, 6000, and \SI{8000}{\metre\cubed\per\second} at Lobith. -However, since the measure is located in the backwater curve of the Amerongen barrier which is closed at discharges below \SI{1500}{\metre\cubed\per\second} causing largely stagnant flow conditions, the lowest discharge isn't relevant for this case. -Hence, \dfmi asks for the results of 10 simulations (5 discharges with and without measure), see \autoref{Palmers_empty}. +Since the intervention is located on the Rhine branches, the new \dfastmi method requires the input of simulation results for 6 steady discharges: 1300, 2000, 3000, 4000, 6000, and \SI{8000}{\metre\cubed\per\second} at Lobith. +However, since the intervention is located in the backwater curve of the Amerongen barrier which is closed at discharges below \SI{1500}{\metre\cubed\per\second} causing largely stagnant flow conditions, the lowest discharge isn't relevant for this case. +Hence, \dfmi asks for the results of 10 simulations (5 discharges with and without intervention), see \autoref{Palmers_empty}. After specifying all input files, the dialog will look like \autoref{Palmers_config} and if you save the configuration, the file will look as follows: \begin{figure} @@ -39,7 +39,7 @@ \section{Example 1: secondary channel along the Nederrijn} The \dfmi analysis is performed when you click on the \button{Compute} button. The program will show a message that the analysis has successfully ended, and that a report.txt file has been written to the output folder. -Furthermore, since we have selected the "Create Figures" option, it will create a rudimentary overview picture of the change in the year-averaged equilibrium bed level that the result of the measure. +Furthermore, since we have selected the "Create Figures" option, it will create a rudimentary overview picture of the change in the year-averaged equilibrium bed level that the result of the intervention. The initial view will cover the whole model area as shown in \autoref{Palmers_fig}. You can zoom in on the area of interest as shown in \autoref{Palmers_fig_zoomed}. See \autoref{Sec:FigNavigation} for navigating these figures. @@ -80,7 +80,7 @@ \section{Example 2: secondary channel along the Pannerdensch Kanaal} Because of the two bifurcations upstream and downstream, it still included parts of all the branches (Bovenrijn, Pannerdensch Kanaal, Waal, Nederrijn and IJssel). Only results for the Pannerdensch Kanaal will be presented here. -The measure concerns a secondary channel `green river' implemented along the right bank at Rkm 871-872 just downstream of Pannerden. +The intervention concerns a secondary channel `green river' implemented along the right bank at Rkm 871-872 just downstream of Pannerden. The reference model is based on the Baseline schematization ‘rijn-beno18\_5-v1’. Again, a combination of flow extraction and insertion was used to represent the side channel because the secondary channel wasn't represented accurately on the grid. @@ -90,9 +90,9 @@ \section{Example 2: secondary channel along the Pannerdensch Kanaal} \label{Pannerden_proj} \end{figure} -Since the measure is located on the Rhine branches, the new \dfastmi method requires the input of simulation results for 6 steady discharges: 1300, 2000, 3000, 4000, 6000, and \SI{8000}{\metre\cubed\per\second} at Lobith. +Since the intervention is located on the Rhine branches, the new \dfastmi method requires the input of simulation results for 6 steady discharges: 1300, 2000, 3000, 4000, 6000, and \SI{8000}{\metre\cubed\per\second} at Lobith. Contrary to example 1, the lowest discharge is relevant for this case. -Hence, \dfmi asks for the results of 12 simulations (6 discharges with and without measure). +Hence, \dfmi asks for the results of 12 simulations (6 discharges with and without intervention). After specifying all input files, the dialog will look like \autoref{Pannerden_config} and if you save the configuration, the file will look as follows: \begin{figure} @@ -106,7 +106,7 @@ \section{Example 2: secondary channel along the Pannerdensch Kanaal} The \dfmi analysis is performed when you click on the \button{Compute} button. The program will show a message that the analysis has successfully ended, and that a report.txt file has been written to the output folder. -Furthermore, since we have selected the "Create Figures" option, it will create a rudimentary overview picture of the change in the year-averaged equilibrium bed level that the result of the measure. +Furthermore, since we have selected the "Create Figures" option, it will create a rudimentary overview picture of the change in the year-averaged equilibrium bed level that the result of the intervention. A zoomed-in version of that figure is shown in \autoref{Pannerden_fig_zoomed}. See \autoref{Sec:FigNavigation} for navigating these figures. The content of the report file is shown below: diff --git a/docs/chapters/file_formats.tex b/docs/chapters/file_formats.tex index 4987d6e5..b37d654b 100644 --- a/docs/chapters/file_formats.tex +++ b/docs/chapters/file_formats.tex @@ -5,10 +5,10 @@ \chapter{File formats} \begin{itemize} \item The \emph{rivers configuration file} defines the branches and reaches, and all parameter settings specific for the overall system, per branch or per reach. \item The \emph{dialog text file} defines all strings to be used in the interaction with the users (GUI, report, or error messages). -\item The \emph{analysis configuration file} defines the settings that are relevant for a specific execution of the algorithm, i.e.~for a specific branch, reach and measure. +\item The \emph{analysis configuration file} defines the settings that are relevant for a specific execution of the algorithm, i.e.~for a specific branch, reach and intervention. \item The \emph{simulation result files} define the spatial variations in the velocities and water depths as needed by the algorithm. \item The \emph{report file} contains a logging of the settings and lumped results for the analysis. -\item The \emph{spatial output file} contains the estimate of the spatial variation in the sedimentation and erosion patterns that will result from the measure (minimum, mean and maximum). +\item The \emph{spatial output file} contains the estimate of the spatial variation in the sedimentation and erosion patterns that will result from the intervention (minimum, mean and maximum). \end{itemize} Each file type is addressed separately in the following subsections. @@ -180,12 +180,12 @@ \section{Analysis configuration file}\label{app:config} The version number should be \keyw{3.0}.\footnote{Initially this file version was named \keyw{2.0} but to avoid confusion with the fact that this file format is only supported by \dfastmi version 3.0, the version number has been increased. Files with version \keyw{2.0} are still accepted, but not recommended.} -Version 3.0 files must contain in the \keyw{[General]} block also the keywords \keyw{Branch} and \keyw{Reach} to identify the branch (in Dutch: tak) and reach (in Dutch: stuk) in which the measure is located. +Version 3.0 files must contain in the \keyw{[General]} block also the keywords \keyw{Branch} and \keyw{Reach} to identify the branch (in Dutch: tak) and reach (in Dutch: stuk) in which the intervention is located. The specified names may be shortened, but they should uniquely identify the branch and reach amongst the names of the other branches and reaches. -The same block may also contain \keyw{QThreshold} and \keyw{UCrit} values representative for this particular measure if they differ from those typical for the selected reach. +The same block may also contain \keyw{QThreshold} and \keyw{UCrit} values representative for this particular intervention if they differ from those typical for the selected reach. Furthermore, this block may contain \keyw{FigureDir} and \keyw{OutputDir} specifying where the figures and other output files should be written. The \keyw{RiverKM} keyword to specify the chainage along the reach of interest is needed for estimating the initial year dredging volumes. -Last but not least, the user needs to specify the names of the D-Flow FM map-files containing the results of the simulations without measure (reference) and with measure for the selected flow conditions. +Last but not least, the user needs to specify the names of the D-Flow FM map-files containing the results of the simulations without intervention (reference) and with intervention for the selected flow conditions. These names must be specified in a continuous sequences of numbered blocks named \keyw{C1}, \keyw{C2}, etc. The order of the blocks is not important: the relevant blocks are identified by means of the \keyw{Discharge} and optionally \keyw{TideBC} specified per block. There should be a match for every stage of the configured ``hydrograph'' for the selected branch/reach. @@ -198,7 +198,7 @@ \section{Analysis configuration file}\label{app:config} \keyw{General} & \keyw{CaseDescription} & Description of the analysis. \\ \keyw{General} & \keyw{Branch} & Name of the selected branch. \\ \keyw{General} & \keyw{Reach} & Name of the selected reach. \\ -\keyw{General} & \keyw{QThreshold} & Minimum discharge \unitbrackets{\SI{}{\metre\cubed\per\second}} at which measure becomes active. \\ +\keyw{General} & \keyw{QThreshold} & Minimum discharge \unitbrackets{\SI{}{\metre\cubed\per\second}} at which intervention becomes active. \\ \keyw{General} & \keyw{UCrit} & Critical (minimum) velocity \unitbrackets{\SI{}{\metre\per\second}} for sediment transport. \\ \keyw{General} & \keyw{RiverKM} & Name of file with river chainage \unitbrackets{\SI{}{\kilo\metre}} and corresponding xy-coordinates. \\ \keyw{General} & \keyw{FigureDir} & Directory for storing figures (default relative to work dir: figure). \\ @@ -206,44 +206,44 @@ \section{Analysis configuration file}\label{app:config} \keyw{C} & \keyw{Discharge} & Discharge \unitbrackets{m\textsuperscript{3}/s} of condition . \\ \keyw{C} & \keyw{TideBC} & Tidal boundary of condition . \\ \keyw{C} & \keyw{Reference} & Name of D-Flow FM map-file to be used for reference condition . \\ -\keyw{C} & \keyw{WithMeasure} & Name of D-Flow FM map-file that includes the measure . \\ +\keyw{C} & \keyw{WithIntervention} & Name of D-Flow FM map-file that includes the intervention . \\ \end{tabular} \subsubsection*{Example} -This example shows a complete analysis configuration file for a measure in the first branch/reach of the default \keyw{Dutch\_rivers.cfg} configuration. +This example shows a complete analysis configuration file for a intervention in the first branch/reach of the default \keyw{Dutch\_rivers.cfg} configuration. It reports the default settings. -Only the \keyw{Version}, \keyw{Branch}, \keyw{Reach}, \keyw{Reference} and \keyw{WithMeasure} keywords are required for the full analysis. +Only the \keyw{Version}, \keyw{Branch}, \keyw{Reach}, \keyw{Reference} and \keyw{WithIntervention} keywords are required for the full analysis. \begin{Verbatim} [General] - Version = 3.0 - CaseDescription = - Branch = Bovenrijn & Waal - Reach = Boven-Waal km 868-886 - Qthreshold = 1000.0 - Ucrit = 0.3 - OutputDir = - Plotting = False - SavePlots = False - FigureDir = - ClosePlots = False - RiverKM = + Version = 3.0 + CaseDescription = + Branch = Bovenrijn & Waal + Reach = Boven-Waal km 868-886 + Qthreshold = 1000.0 + Ucrit = 0.3 + OutputDir = + Plotting = False + SavePlots = False + FigureDir = + ClosePlots = False + RiverKM = [C1] - Discharge = 1300.0 - Reference = Measure42/Q1/Reference/DFM_OUTPUT_Q1/Q1_map.nc - WithMeasure = Measure42/Q1/Updated/DFM_OUTPUT_Q1/Q1_map.nc + Discharge = 1300.0 + Reference = Measure42/Q1/Reference/DFM_OUTPUT_Q1/Q1_map.nc + WithIntervention = Measure42/Q1/Updated/DFM_OUTPUT_Q1/Q1_map.nc [C2] - Discharge = 2000.0 - Reference = Measure42/Q2/Reference/DFM_OUTPUT_Q2/Q2_map.nc - WithMeasure = Measure42/Q2/Updated/DFM_OUTPUT_Q2/Q2_map.nc + Discharge = 2000.0 + Reference = Measure42/Q2/Reference/DFM_OUTPUT_Q2/Q2_map.nc + WithIntervention = Measure42/Q2/Updated/DFM_OUTPUT_Q2/Q2_map.nc [C3] - Discharge = 3000.0 - Reference = Measure42/Q3/Reference/DFM_OUTPUT_Q3/Q3_map.nc - WithMeasure = Measure42/Q3/Updated/DFM_OUTPUT_Q3/Q3_map.nc + Discharge = 3000.0 + Reference = Measure42/Q3/Reference/DFM_OUTPUT_Q3/Q3_map.nc + WithIntervention = Measure42/Q3/Updated/DFM_OUTPUT_Q3/Q3_map.nc ... continued ... \end{Verbatim} diff --git a/docs/chapters/get_started.tex b/docs/chapters/get_started.tex index e658eb6a..8076e070 100644 --- a/docs/chapters/get_started.tex +++ b/docs/chapters/get_started.tex @@ -67,11 +67,11 @@ \section{Running in gui mode} As a user, you start specifying the branch and reach of the study. Changing this selection will affect all fields below overwriting any previously entered values. -You have to specify the minimum flow-carrying discharge of the measure. +You have to specify the minimum flow-carrying discharge of the intervention. Together with the branch and reach selection, this determines the distance over which the river branch may be affected during the first year. This length \unitbrackets{m} is indicated, and dynamically updated with each change you make. -Subsequently, you are presented with a list of flow conditions for which you need to provide data files representing the reference situation and the situation with the measure implemented. +Subsequently, you are presented with a list of flow conditions for which you need to provide data files representing the reference situation and the situation with the intervention implemented. The names of the files need to be specified in the edit fields below. The last input item for the analysis is the critical flow velocity \unitbrackets{m/s} for sediment transport. diff --git a/docs/chapters/guidance.tex b/docs/chapters/guidance.tex index a4ce8b89..05e85885 100644 --- a/docs/chapters/guidance.tex +++ b/docs/chapters/guidance.tex @@ -1,6 +1,6 @@ \chapter{User Guidance}\label{Chp:Guidance} -\dfastmi is a rapid assessment tool that provides feedback regarding the morphological impact of river measures on the main channel. +\dfastmi is a rapid assessment tool that provides feedback regarding the morphological impact of river interventions on the main channel. The tool provides first estimates based on only a couple of hydrodynamic simulations. When critical conditions are identified, this can support the call for more demanding Delft3D morphological simulations. The conceptual framework is described in \autoref{Chp:Concepts}. @@ -10,7 +10,7 @@ \chapter{User Guidance}\label{Chp:Guidance} \section{(Un)suitable applications}\label{Sec:SuitableApplications} -Situations in which commonly \dfmi is commonly applied are river widening measures outside the main channel, such as +Situations in which commonly \dfmi is commonly applied are river widening interventions outside the main channel, such as \begin{itemize} \item side channels @@ -34,7 +34,7 @@ \section{(Un)suitable applications}\label{Sec:SuitableApplications} \end{itemize} \item to estimate bed level changes due to discharge extractions (rerouting flow between Maas and Waal would cause changes over large distances) \item to estimate bed level changes outside the main channel -\item to estimate bed level changes due to measures that can't be represented well in the \dflowfm schematizations +\item to estimate bed level changes due to interventions that can't be represented well in the \dflowfm schematizations \item to estimate bank erosion. \dfastbe should be considered instead. \item to estimate the impact of changes to the main channel, such as \begin{itemize} @@ -51,52 +51,52 @@ \section{Assumptions and limitations}\label{Sec:Limitations} The conceptual framework described in \autoref{Chp:Concepts} is based on a number of assumptions, and this comes with limitations regarding the application. \begin{enumerate} -\item It's assumed that the measure (and the subsequent morphological development) does not significantly influence the water levels. -The impact of large measures that influence the backwater curve, may thus not be estimated accurately by \dfmi. +\item It's assumed that the intervention (and the subsequent morphological development) does not significantly influence the water levels. +The impact of large interventions that influence the backwater curve, may thus not be estimated accurately by \dfmi. \item Measures should be properly resolved on the \dflowfm mesh. -The discharges used by \dfmi should give a balanced representation of the influence of the measure on the flow patterns. +The discharges used by \dfmi should give a balanced representation of the influence of the intervention on the flow patterns. \item \dfastmi is not yet suited for tidally influenced areas. See \autoref{Sec:Tides}. \item The river system is subdivided into branches and reaches. The characteristics, such as the characteristic bed celerity and normal channel width, may vary per branch or even reach. -Measures located across reaches, should be evaluated against the settings of the dominant reach, i.e.~the reach in which the dominant effect is to be expected (typically the reach in which the largest part of the measure is located). -If a measure is located close to, or even across branches, an additional verification should be done to determine whether \dfmi can be applied, and if so, how it should be applied. +Measures located across reaches, should be evaluated against the settings of the dominant reach, i.e.~the reach in which the dominant effect is to be expected (typically the reach in which the largest part of the intervention is located). +If a intervention is located close to, or even across branches, an additional verification should be done to determine whether \dfmi can be applied, and if so, how it should be applied. -\item The morphological impact of a measure will only accumulate over the period during which the measure is active. -The original WAQMORF algorithm selected discharges based on the specific characteristics of the measure being evaluated, and as such it was not suited for evaluating multiple measures at once. -The new algorithm uses a fixed set of discharges, which makes it more generic, but the reported impacted length, i.e.~the distance over which the morphological changes can develop over the period of one year, still depends on the specified minimum flow-carrying discharge, i.e.~the discharge above which the measure will be influencing the flow. -Consider the following two measures: +\item The morphological impact of a intervention will only accumulate over the period during which the intervention is active. +The original WAQMORF algorithm selected discharges based on the specific characteristics of the intervention being evaluated, and as such it was not suited for evaluating multiple interventions at once. +The new algorithm uses a fixed set of discharges, which makes it more generic, but the reported impacted length, i.e.~the distance over which the morphological changes can develop over the period of one year, still depends on the specified minimum flow-carrying discharge, i.e.~the discharge above which the intervention will be influencing the flow. +Consider the following two interventions: \begin{itemize} \item One active only at high flow, but having a significant equilibrium effect at those discharges. \item One active almost always active, but having very little effect. \end{itemize} -The former measure would typically be associated with a small impacted length since its minimum flow-carrying discharge is exceeded only a small fraction of the year; as a result the first-year impact (estimated as the equilibrium effect accumulated over the impacted length) would be modest. -However, when it is evaluated \emph{in combination with} the second measure, the impacted length will be much larger since the latter measure is active for a much larger fraction of the year. -Although the equilibrium effect of the two measures together would be similar to that of only the first measure, the first-year effect would now be estimated to be significantly bigger. -We conclude that it's wise to only evaluate measures together if they have similar threshold discharges. +The former intervention would typically be associated with a small impacted length since its minimum flow-carrying discharge is exceeded only a small fraction of the year; as a result the first-year impact (estimated as the equilibrium effect accumulated over the impacted length) would be modest. +However, when it is evaluated \emph{in combination with} the second intervention, the impacted length will be much larger since the latter intervention is active for a much larger fraction of the year. +Although the equilibrium effect of the two interventions together would be similar to that of only the first intervention, the first-year effect would now be estimated to be significantly bigger. +We conclude that it's wise to only evaluate interventions together if they have similar threshold discharges. -\item When combining multiple measures, or when making a single measure longer, you will reach the point at which the effect of a measure on the flow can no longer be seen as one stretch where water leaves the main channel, and one where it flows back to it (or the other way around). -There will be multiple of these stretches due to the a series of measures, or due to the variability of the river and the floodplain. +\item When combining multiple interventions, or when making a single intervention longer, you will reach the point at which the effect of a intervention on the flow can no longer be seen as one stretch where water leaves the main channel, and one where it flows back to it (or the other way around). +There will be multiple of these stretches due to the a series of interventions, or due to the variability of the river and the floodplain. As a result, the morphological impact will not be represented by a single sedimentation (or erosion) area, but a series of them. -Earlier versions, therefore, suggested to restrict the use of this tool to measures shorter than 4 km, but this restriction can be relaxed by not only taking into account the most upstream area in the estimation of the first-year sedimentation volume, but all separate areas. +Earlier versions, therefore, suggested to restrict the use of this tool to interventions shorter than 4 km, but this restriction can be relaxed by not only taking into account the most upstream area in the estimation of the first-year sedimentation volume, but all separate areas. See \autoref{Sec:DredgeVol}. -However, it's still preferred to evaluate measures less than the length of one flood plain section. +However, it's still preferred to evaluate interventions less than the length of one flood plain section. \item \dfastmi doesn't use any information about the bed. It doesn't get information about non-erodible layers, nor about natural variability in the erodibility of the bed material. As such, it is more difficult for \dfmi to predict scour accurately than sedimentation. The primary purpose of \dfmi is the estimation of sedimentation that may cause problems for navigation. -As such, it is better suited for evaluating measures that increase the flow area than measures that decrease the flow area. +As such, it is better suited for evaluating interventions that increase the flow area than interventions that decrease the flow area. \item \dfastmi conceptual model is based on a change in the discharge in the main channel. Such a change may be caused by changes in the floodplain, or changes in the main channel. -When the measure affects the floodplain, it impact on the main channel is easy to interpret since both simulations with and without the measure use the same bed levels for that area. -However, when the measure affects the main channel, for instance by deepening, the resulting impact (sedimentation to get back to the original bed level) must be interpreted as relative to the bed levels of the simulation with the measure implemented. +When the intervention affects the floodplain, it impact on the main channel is easy to interpret since both simulations with and without the intervention use the same bed levels for that area. +However, when the intervention affects the main channel, for instance by deepening, the resulting impact (sedimentation to get back to the original bed level) must be interpreted as relative to the bed levels of the simulation with the intervention implemented. Furthermore, it should be noted that \autoref{Eq:zbEqui} is evaluated using the water depth $h$ obtained from the reference simulation. -If the measure includes a significant change to the bed level in the main channel, this approximation may no longer be valid. +If the intervention includes a significant change to the bed level in the main channel, this approximation may no longer be valid. \item \dfastmi assumes that a new equilibrium can be reached by adjusting the bed level locally such that the flow velocity at that point returns to the original value. This is the result of the 1D conceptual approach in which the flow cannot redistribute laterally. @@ -104,7 +104,7 @@ \section{Assumptions and limitations}\label{Sec:Limitations} The lateral variability may force further variability up- and downstream that will not be identified by \dfmi. \item \dfastmi focuses on the long-term equilibrium effect and the rate of change. -It does not estimate in any way the dynamic effect of the measure: the erosion wave downstream of a sedimentation area caused by an increase in flow area, or the sedimentation wave downstream of an erosion area. +It does not estimate in any way the dynamic effect of the intervention: the erosion wave downstream of a sedimentation area caused by an increase in flow area, or the sedimentation wave downstream of an erosion area. These dynamic effects will be of the same order as the first-year sedimentation or erosion, but of opposite sign. They will propagate downstream unless they are compensated by dredging or suppletion once. diff --git a/docs/chapters/intro.tex b/docs/chapters/intro.tex index 5a6d4fdb..c3d4394a 100644 --- a/docs/chapters/intro.tex +++ b/docs/chapters/intro.tex @@ -1,10 +1,10 @@ \chapter{Introduction} -This manual describes \dfastmi version 3 which provides a rapid, first estimate of the bed level changes to be anticipated in the main channel due to the implementation of local river adjustments outside the main channel (so-called measures). +This manual describes \dfastmi version 3 which provides a rapid, first estimate of the bed level changes to be anticipated in the main channel due to the implementation of local river adjustments outside the main channel (so-called interventions). The program is a successor to the WAQMORF and \dfastmi version 2 programs that implemented the rule of thumb developed in the context of Rijkswaterstaat programme Stroomlijn by \citep{Sieben2008}. -This new version follows the same conceptual approach, but uses a fixed set of flow conditions independent of the measure instead of three measure-dependent flow conditions. +This new version follows the same conceptual approach, but uses a fixed set of flow conditions independent of the intervention instead of three intervention-dependent flow conditions. It assumes a seasonal discharge variation that can be represented by means of series of flow conditions. -Bed level changes outside the immediate vicinity of influence of the measure are ignored in this analysis. +Bed level changes outside the immediate vicinity of influence of the intervention are ignored in this analysis. The bed level changes are indicative for the effects over a sufficiently long cycle of high and low flow seasons. The typical analysis cycle consists of the following steps: @@ -12,7 +12,7 @@ \chapter{Introduction} \begin{enumerate} \item Use \dfastmi or check \autoref{Chp:steps} to determine the hydrodynamic simulations that will provide the necessary input for the morphological impact analysis. -\item For the conditions obtained in step 1, simulations will be run using \dflowfm for both the reference situation and the scenario with only the measure to be evaluated implemented. +\item For the conditions obtained in step 1, simulations will be run using \dflowfm for both the reference situation and the scenario with only the intervention to be evaluated implemented. All simulations need to be carried out using the same base mesh. \item Using the simulation results of step 2, \dfastmi determines an estimate of the @@ -24,7 +24,7 @@ \chapter{Introduction} \end{enumerate} The methodology provides an indication of magnitude and location of the bed level changes, but can't always replace a complete morphodynamic simulation. -The purpose of the rule of thumb is to provide a simple and consistent first estimate to avoid unnecessary morphodynamic simulations or to identify critical aspects in the design of the measure early on and to underpin the need for more extensive analysis. +The purpose of the rule of thumb is to provide a simple and consistent first estimate to avoid unnecessary morphodynamic simulations or to identify critical aspects in the design of the intervention early on and to underpin the need for more extensive analysis. The appropriate use of the results -- the estimated bed level changes -- for the Dutch rivers is described in the ``rivierkundig beoordelingskader''. An evaluation of the rule of thumb \citep{Paarlberg2009} states the following @@ -34,18 +34,18 @@ \chapter{Introduction} \item Based on a comparison of the tool and Delft3D results for 2 case studies it's concluded that the rule of thumb can provide a reliable and robust indication of the bed level changes in the main channel. However, the rule of thumb should only be applied in those cases for which it is intended and the user should be aware of the assumptions and restrictions of the method and understand the effect that those have on the computed bed level changes. -\item If the estimated bed level changes are critical for navigation and/or safety, or if the measure is outside the applicability domain of the rule of thumb, then the tool is not appropriate. +\item If the estimated bed level changes are critical for navigation and/or safety, or if the intervention is outside the applicability domain of the rule of thumb, then the tool is not appropriate. In such cases further research is needed by means of a 1D and/or 2D morphodynamic model in consultation with the river manager. -\item The tool is most suited for the estimation of the morphological impact on the main channel by river-widening measures which +\item The tool is most suited for the estimation of the morphological impact on the main channel by river-widening interventions which \begin{enumerate} \item influence the main channel currents in a limited reach and \item withdraw only a limited amount of water from the main channel. \end{enumerate} -The user should take care to analyze the results in case of measures that deviate from these conditions and to verify how the assumptions and limitations of the methodology influence the results. +The user should take care to analyze the results in case of interventions that deviate from these conditions and to verify how the assumptions and limitations of the methodology influence the results. -\item The tool can be applied for different types of river-widening measures. -It is critical that the flow-carrying capacity of the measure is well represented by the three discharge levels. +\item The tool can be applied for different types of river-widening interventions. +It is critical that the flow-carrying capacity of the intervention is well represented by the three discharge levels. \item The rule of thumb can probably also be applied for river reaches with (more) strongly graded sediments. \end{itemize} @@ -54,7 +54,7 @@ \chapter{Introduction} \begin{Verbatim}[frame=single, framesep=5pt] D-FAST Morphological Impact implements an algorithm to estimate the local -morphological effects of a local measure (i.e. an adjustment to the river). +morphological effects of a local intervention (i.e. an adjustment to the river). The conceptual framework was originally introduced in "RWS-WD memo WAQUA vuistregel 20-10-08" but it has been extended and improved over the years. Check the user manual diff --git a/docs/chapters/intro_tech.tex b/docs/chapters/intro_tech.tex index 6ed36f6d..abf6e787 100644 --- a/docs/chapters/intro_tech.tex +++ b/docs/chapters/intro_tech.tex @@ -2,8 +2,8 @@ \chapter{Introduction} This is the technical reference manual of \dfastmi. \dfastmi is the successor of WAQMORF. -The purpose of these tools is to provide a first estimate of the bed level changes in the main channel if local measures were to be implemented outside the main channel. -Such measures include the construction of side channels and other alterations of the floodplain and embankments. +The purpose of these tools is to provide a first estimate of the bed level changes in the main channel if local interventions were to be implemented outside the main channel. +Such interventions include the construction of side channels and other alterations of the floodplain and embankments. The conceptual framework nad implementation in WAQMORF was originally developed by \citep{Sieben2008}. To obtain the estimate of the bed level changes, the algorithm needs data on the river's behaviour. These data include information on the probability distribution of discharge occurrences, the values of representative discharges, such as bankfull discharge, the general operation of any barriers, as well as the bedform celerities --- or propagation rates --- during low and high discharge conditions. @@ -11,10 +11,10 @@ \chapter{Introduction} \begin{itemize} \item a hydrodynamic reference simulation and -\item a hydrodynamic simulation with the local measure implemented. +\item a hydrodynamic simulation with the local intervention implemented. \end{itemize} -Based on these spatial data, the algorithm provides spatial estimates of the minimum, mean and maximum impact of the measure on the bed levels after one year. +Based on these spatial data, the algorithm provides spatial estimates of the minimum, mean and maximum impact of the intervention on the bed levels after one year. The original WAQMORF tool performs the morphological analysis based on results exported from WAQUA simulations (hence the name WAQMORF). The new \dfastmi tool performs the analysis based on either WAQUA or D-Flow FM simulation results. diff --git a/docs/chapters/requirements.tex b/docs/chapters/requirements.tex index 089435df..4108c736 100644 --- a/docs/chapters/requirements.tex +++ b/docs/chapters/requirements.tex @@ -2,7 +2,7 @@ \chapter{Software requirements} \section{Introduction} -The purpose of \dfastmi is to provide a first estimate of the bed level changes in the main channel if local measures were to be implemented outside the main channel. +The purpose of \dfastmi is to provide a first estimate of the bed level changes in the main channel if local interventions were to be implemented outside the main channel. It is based on the conceptual WAQMORF framework originally developed by \citet{Sieben2008}. WAQMORF was developed for the SIMONA system. \dfastmi implements the same functionality based on results obtained from D-Flow Flexible Mesh. diff --git a/docs/chapters/sim2ugrid.tex b/docs/chapters/sim2ugrid.tex index 19aac522..36008b57 100644 --- a/docs/chapters/sim2ugrid.tex +++ b/docs/chapters/sim2ugrid.tex @@ -6,7 +6,7 @@ \chapter{Interoperability} \label{Chp:Sim2Ugrid} \section{File format assumptions} -Simulation files (both with and without measure) should contain \emph{one} 2D UGRID mesh variable. +Simulation files (both with and without intervention) should contain \emph{one} 2D UGRID mesh variable. These variables must be identifiable by means of the attributes \keyw{cf\_role = mesh\_topology} and \keyw{topology\_dimension = 2}. The \keyw{face\_node\_connectivity} attribute of this variable must point to the face-node connectivity of the 2D mesh. The \keyw{node\_coordinates} attribute must point to the x,y coordinates of the nodes; currently. diff --git a/docs/chapters/testing.tex b/docs/chapters/testing.tex index cee2fc35..cd0b3c82 100644 --- a/docs/chapters/testing.tex +++ b/docs/chapters/testing.tex @@ -234,7 +234,7 @@ \subsection{Test 3: modify settings} \item Verify that the impacted length becomes \SI{65}{\metre}. \item Set the minimum flow-carrying discharge to \SI{2100}{\metre\cubed\per\second} \item Verify that the impacted length reduces to \SI{8}{\metre}, and that the entry boxes for all discharges less or equal to 2100 are greyed-out. -\item Select from the folder \file{tests/c01 - GendtseWaardNevengeul} included in the \dfmi source code repository, the files \file{reference-Q1\_map.nc} and \file{measure-Q1\_map.nc} for the \SI{2500.0}{\metre\cubed\per\second} condition, and \file{reference-Q2\_map.nc} and \file{measure-Q2\_map.nc} for the \SI{3200.0}{\metre\cubed\per\second} condition as shown in \autoref{fig:test3.png}. +\item Select from the folder \file{tests/c01 - GendtseWaardNevengeul} included in the \dfmi source code repository, the files \file{reference-Q1\_map.nc} and \file{intervention-Q1\_map.nc} for the \SI{2500.0}{\metre\cubed\per\second} condition, and \file{reference-Q2\_map.nc} and \file{intervention-Q2\_map.nc} for the \SI{3200.0}{\metre\cubed\per\second} condition as shown in \autoref{fig:test3.png}. \item Verify that the red outline of the edit fields turns grey when valid file names are specified. \item Select the output directory as \file{d:\textbackslash}. \item Verify that the red outline of the edit field turns grey to signal that an existing path is specified. diff --git a/docs/dfastmi_release_notes.tex b/docs/dfastmi_release_notes.tex index a1d0e861..0b31d93e 100644 --- a/docs/dfastmi_release_notes.tex +++ b/docs/dfastmi_release_notes.tex @@ -41,8 +41,8 @@ \section{Release contents} \fbox{% \parbox{\textwidth}{% \dfastmi version 3 is the successor of \dfastmi version 2 and WAQMORF. -This new version implements a generalized algorithm for estimating the sedimentation length and the long-term morphological response of the main channel to changes, so-called measures, in the flood plains. -The tool requires the results of pairs of \dflowfm computations (with and without the measure) for a given set of flow conditions. +This new version implements a generalized algorithm for estimating the sedimentation length and the long-term morphological response of the main channel to changes, so-called interventions, in the flood plains. +The tool requires the results of pairs of \dflowfm computations (with and without the intervention) for a given set of flow conditions. }} \section{Installation} @@ -66,8 +66,8 @@ \section{Key changes summary} \begin{itemize} \item The number of discharge level used for \dfmi analysis has changed from typically 3 to 6. -The discharge levels no longer depend on the characteristics of the measures. -They are fixed per branch/reach, although you don't have to provide results below the threshold discharge of the measure. +The discharge levels no longer depend on the characteristics of the interventions. +They are fixed per branch/reach, although you don't have to provide results below the threshold discharge of the intervention. \item The new analysis algorithm only supports simulation results stored in netCDF UGRID files, such as the \dflowfm map-file. \item Complete overview of analysis settings included in the report. \item The tool is no longer supported in the Dutch language. diff --git a/docs/figures/Palmerswaard_config.png b/docs/figures/Palmerswaard_config.png index 2b61095ea4a29931595ffa312389b46878133ea7..1ae7117595efc52037e629baa29c7388150a40a3 100644 GIT binary patch literal 49152 zcma&N1yof1*ET#D7>KASNTUeSNOwr5NH<6~Bi*5Z!~jFLAl=}Ql7n<3-QC?V!wkcB z@V@`g`#tY^zV~}si#6x`&Y3yqS9@Rk+Sd;G_(2NyA@M^H2!tymEv^g#-F^)M-P*i= z3uwV%7zYC%SdPk4qM*_N(kTCGrSJ57#p{<#XJcfwd#>HfSpk&SV+&@m75eo?T+U& zytG_$Nzd$8xtRI|3Ae4DA#vjN8|%QhPgB#QD_^xRm5e3dt9VjHLiHv=({?BQ)*AFy zsI1S%psU%yY*MZ3ej_{g#kWCJ9AO{tMPCxT<3=j#J9|vZpX0S&PP}=Koe~*Q9#XUG zZ=$cNn=z&=-M(XilnsZ=hkfNxB~hNs`8V3bmAAnS<*o(RcT$h9tIv#_AQ}paGl3?izg(pY?9@3rlkY`sjd?`4behE460c!*+sQ zaX)GPaKh0&w9x@Ur7@6fIX)|<_VmJ;x_VF82T`_>rr51}f7c>%!o|kZL2+5zp#pw= z-&V@zG%|O~5;pY~PtRk`bUnj_L|E67oEUHBYVd8~hqC0}T@0s2|L&u2`UkCByN?i+MRZV3t9L ztrJb>RqvQ?mW5y06EiH}^Uf_p0^mc0^54_f=>7VGVPN@yK!~@b&`!&zH-~6^p|eqy z|2n=p9kCqpUpa^ne9rH1MdrzZS*94Q-F|U?a%Q;Rgs&2PL1!AzWq8DGxbKyqtd94lf8OlbSSE{)8GX*p>wGXm@5q=BrYX?58XIfN zb$)?gEqLb1=aSZIT%XS4UjI6hu zUrf2~Ec~eC`fN^E<)*KTZwS)3Y>Aob5Xdqp1~oWuf|JmHbovv01#Lin+`Uf?-1BMq zp}UC0$!+Vwf$#iuhOPR?HNThO2nhU##M^@=?sMRkV-I&zE=b)_WI=D2SI9JiZ`;*n zQngRWoHA!c50~rrR3B?ChAY+xjR(gDG1P{+w%U#~ zhzjH3fI!dFVA=T}=OM?-TFp%Y4?KOp%!x_-U?rz4Qc2*`m76vOq@5t zj}oNlqCRbz@g2^t^F|%VQjBsAJ*5}osxD1qt8yE}F3HUWi$T{$(t}uVI2`d)7=osD z&UQ{$m2S_k+0e* zW{}93P768(=+!iJU-_qW6xC4j8P0I}(=A)5g&cWoG;zBlKPni-`M+`*KH z$wRsIHMd;&qq0~6U=DvYPf?Zl88OmGB%bX;ItLLVo4d>JP`otzw|mxpqCE0G3=QxI zp6)^pKJo>Y$GI|&je}*`2e#)bo6Kayw65q0vgvl>`%|;daKk^+zwho;2?-Gvj^YAKBZS!UE}=0iT}$!AdE>=*Umk0x z6DiD29>pbU+}nGwQ4rA;q~#zpH)^RO)^Wj~>MogYL9AAF$ouh?LprPZQRrRVOw$h(#MQ-qCuOzhK^IZ1KL$oqj;M zRk~8y?EDc^1}DDGj)Z|p)hrdO1kuAGOh~M9+zhMzOkHCEdVga*$BExPbN23CP~^7cejVRt9KM9R`W|K+_XkF!bg5Ymv6F~8Yn{1AQ@{4t>{q~ViL~M+UontB-Cgo@Z-gS zW~0v*Sv(2U$i=!1VZ)+>{NaqT?xvSJ%1KGjtz@*6{LDFYZ;e5KE1UP1YFx~lb_8sQ zVg2a7FKItkQ3iO+tnpiU97DVERFCszvQa#1|E9(WUYzDsvT~6FFAcMfs~tV4S)7`M zJ|-(O@E$E(Q$O6uAQUyg1)!}kQe2|bwY`c&P zzFGQ9a;t9MOoz^bAFA7g+x7&$jMiJCy`6kG#+AJ6mMgdL@cSuSE|b+&3giQ{Zp&KB zD2WyJ$V3~VKWXbPI|jNmdvR^r${dyL=mSk#p=BEKI?Xqz zgw|1+glIb}zZ(%Q(vesw^CnGN!|YcN6{F?#naI_VhxMIxg{#8+4vK&ccz?doM+4C0 z@9dmMhwo~<{C!piOvxGFt<*b%Ks+J&gT_Rzc>ckaz?i1Pw@>r1=Y1s5WUcIZ+D%s( z@5NOsgt(Bo5+l><1nIBM%7}%$FLzM$Gv|GilEXM}4=Q2%H+7Puu2iAK>k|UyRaa zKvTK5R@P$RXIEn8go@fuO#PnJt>C9H%3inqj@wU7soR7EXrm2Uo9R{epB>jjh~~k| zfUPtrn@!<3)VPcdYF#0lkcw7tPr~y(@f$w2#djfRP*j#D$GQ6A0aK_oiTfzlkmVnL z>i129XmUdH7dd`jNj(?mEB)IbkaRz}u?&`kHefos^8)rGQqR(LBAmbqXcX_pcR|Yy zUmpwO(^-;h`-O`72;rkTrn4)w>E&siNnD_w^b(xzuYj0(R=75+?lE z7V7P0^Q!52rp-EOj?dAK<<@9vp~0_Fw{J7Dv*Dzp+^t~8EtPkVtuj*>G~C(D!`zbH-($v(0DHEg%Xoj5q7J8h1?ph~OX`d5 zkZVM(qVJ*(!=T5hh7{Op4poC|?sZU2bUNK#;;LogY+6pqc<(p^x6sQP4?q+m0M;nW zN$ii_zqC3UZXdxkIWI6>mn&kH4Zm_@&=`%G^Xob8i>tYfTQ?>I4XbcKRH$m|xEn zRz!Qf7gz;d2MXT4Mnxpea{*h-Z#TeBf4sqG&-WvJoa@2}x%YCHF>q6B+c3`>CK0L{l^8`wh;-1~$k#mWv@rj!U(?;I?gf4T+%JMX?Dnpx z&UWz!vv#keRaVDe$fvo8bOkQ@iI}`FqplU~1S6wB2a7qgp*9&>k6iJA7p2s=mDF!! zs4&(c;RJ!zm*@1Hhs99{*yX@;wh3%YXgU7m-W|O`lz!rt0a}du8N9DhSz81!PA2V{ z>Gfwxg?dBkb7L`DHX~!wB%_=zLkyNSIR%~!arBn@y|Putk^nRUIZ#$eEyf6)lkaRP zi#e(-|SzMJwFqr=v(DIJCWg7Kg;5&`amha!073F5Cbr}=B zzL#_JW6gNh6Qyg0;YV2?-u-CFT$*NmZ2s5@-Ip~D45 za_f6+<-lOD<6{R|^M^oq69y&Ycj-&vh62mQ-E5}X)^TGXM?6teBzg=TdIn(V3|Fnq&;`cxa%mgSiBr zL!Xh&=V>nPeLjXosdp5?5L-Y=zV$P}G*cR?-zK1Pud!v~kKC5^%)>WqMb2Tt+Y>N1 z%M)eUE%Dnbk{?ZR<*cxS`neudS1Iq`G6rXB7A0`|ACHDJ)~7dqDrOEHW&`uEl*X&? zaMap$F~+N(KKLAMWEf9jKfW0sel-SJpLy$Um1Tq-x>E7+_3Dy+?-KH7BWW2g1|*Xr;|NoYzrT3U5$ zwk0<1l-d-qO&6C9R2z4E1ug1L_2fxqYOi{blb$l`{Pfvc&(nwx@slDBdCdH$6;#5) zR{7D)D(d(Tjd86Yta&}hyId9@!bk9^XX>rocg&_O^t3-oi$;vI+nu4?^>;~>chuOl zzksV=qq6v&Knf!){e?flwBz-b-r-!MR2QBm`QWVziVqi5Ha60>VS<-;KqM3t zU&4&Q=DGP$SpQ5vqd+(G08Epl|^Qo+L{ z>K5d-#Gj?M*@U~(W{r`?y|^;2zpJ7EL_aoD)KNNCrlSES2N9SuHLm=YB{DyXEQ-d+ zrWnWQM*M`ms$vB#zMq7H`yC$9X@;5hF?NSg*X>M<(fYI4-vbZs`}B7$E+uM2Fz`(r z5Zt9v(pFNC8z^LuwWL#%0ZDfp+Ym_52>c-q6JOtaPXGaxr%KV46=zVhv5n@H7*O8E zd8&nYKSgMuy`K}sxI5D@O53)gN}v+@3nHb3qcxgi`^jG2%k8I`%x!2CY07HG_Xbu_ zBzC$T@o`c%CS1qHK0fg{V~Qruo+YYN?AV25ZaC(d-3qm`c{Hhpe7;Am+rQw#@Q*~)(eATI=j5Ts%%h{uqBLaRC#sO`3 zfrg}(z;-ge6Rdj;O^lLSc^gvn4H|qYP`Rktyi$FpEJoJ)Dxb6M_n7=dMq@DWw#O+^mwLT@^LPDXnSN^RTtJ~XS>^`(D+D|<>yOfrF^Txjf+)NRjsmr>MIhuu))q&#HG$7 zAg>7D={&$ycOh9QSgg#HySnslDEwjCNjT}Y#%+Jt0Qs{Pi=sK=N_l_UncB2 z;D*}*d`YdcuCBZs2!!k`V|@s1zTM12OHV&t>-d%$KnUFtWc-saB|>%s;#mxQCiGmD z9s;;aQd06U8K2W4h#c>(p8)XvKBMAtHVX1>n}56@;QWQXz<>JzAi5WNQswV%jy*~Ax+=VQ(h%C|r?ez1lUM2SkNF1zT1>pQBp z*d004$O@DTa+d3*ImZXn{<3$F!1sVJcEAG7{`n+H4nI?ESG#DV6Rz3aJC+Ewnrb59 z?}Li@c^*tgBLp>u?1j(9JLv``8{V7sj&kKi8(qXm^RUh1g>AGX)!@?b_*fx+cTN>= zSAX%>byd-zy2S*N{({Z^Jy&mD$W5LYy(~t^?dbf;MZlkP<~H;<_YrY;!fsys2YJ()&9J3$M25`Dkr~&7^krV z4Hufcp>@V(%Df~lc8J%0Dc^Elj8(qbKW*pRvG~?&-ys*fm8}tr`YLNkWj15Pf(^p| zXn94*;%jIEtzKiGc;{^j@rp9lcRXl3?cu!Gw;wd=BW5fD*Ip2_57Jf~`Y4Hh)*5Ph zQ1L@awR>1&+{2b(dbjo>IdD4Hz*|DdxoAA40oRUNL6RYwfe9{M@1-8iVuD`gZbBSh z>^djSD07*Zc<>ai&n(57c*^W_3lbzfK5&**#WCim+?~wRAbcK5#BTP}m#(m!O&?bk zWH_EScQy9nas>I;Uki1aABeKmx{f`rYy;ZnziyGy>rG`x#+uh@FmYCAVmTUT7o z1Gb;*Lyrx*8&*n$D?6}qU2WxQs@1JICn)87ef6D?U>l!l`dp30=YyG55vE^|-Di*! z#{e<@ru-`A8U(|FU`(sR6}ZM2q;Uem^1petE)QLvIdpZs!pxN*gTd^)q`2~>FJ7M zld^QU&UccuWgJz+9vQXa_EfUuGSi6jMGcd&gN7s}&P^m}X<0)99TuJk_c&QVo1Ie08VE{c}CG z-A^zO-ppj32MiXycJWg?_Qj5nFI7qYa@=fn@ZP5u)}vnsVU5|wG&+LzB=TM+o5u$> zsb^ib4tXmV`kt3n7c|vM1~vO9aW&phvd6M~6h%(Z!Xp=+H{sYMy}R%>|K=HalacTi zzKIg+`X<-C8uKfc6qrI{u%>tpw%P+3sb$jR_lU_9@Q6|Msd)uLK5oTUkieMpF%jNp zrQ8_7dK9M%HIUXwjI?++VmWQP;Dcc*&sATwMQ)EuuzcL7;!aMlscfdDXsK-e0(V=L%-Ym&5BNR4hHpO>T3G%~}QE`9Q!dR?b3fx+Cb-62N?+-EWT zYCJS1jBXWn3xU0K!A8E;MGvuC4zUQNvQZ4M9WBbhr#gFoF(kqBrxCX8Lj(8I-0tzv z#SPSj;SwJw+wKhdQeqUv=6b*e=l%!idwM5(Na%~p%*2wJpll4lvPSX>^{e32L%vih1{?Kb1Eo-hovR2TJ|yIdBtC38OA9Qzy7xT+#dmW=#n@f@AxrP*hB zddJcdWa+a?a%^6Yx9%A{r|wh8)>Seny-HOIi_@vBt`#pXnsDphvq3o6rS$a0vTG-J ztuL(1U(CTww#S^S$b!PpKcrOK*z7H}4)&;N*yOzaT4yJ7Vp}Ym;BL$ok-{blR*=@w0{4uKW#ID4f>o{y#0{+gG1yYEN*1RTyVz; z7jLoVGY=ZE0-YG|F=+4AwYIhf-8lF~EIqDUZm_crz3JUysM1493&0`b-X#52S&45A>(*;ovs0)iYubiu(uFhk=!Tlx{e{f#ljzMk& ziN2x;Vh7l@z*a*pW*FL#d2=fMOizdY`3goN0od8c2@o z^48WSJZsvvO%p)&a8ku8A1d&{*}mL$O~rX3Ec{uVhMYJ99XV*Q`Q*QV%}e4z^s;Zb zXn8z#MY{muAA4q1H2OXwI84B2Cr%}s0j##{!EVrR7WLEE(sgSr#^)+fwyA3BgrU#q zRTTZREH4nqoFg%+6D)W(TC^Xc68aYGofo~99lV6Jsm?2z;0T_7b+R^vOwX=2I#@R>i2$wV5nFy!~s^356bE=*o25d0F4EI8b zrG$rSm33{yziOW^zjc5Ee!>%JU)^&18^Nu^q?~x_jX3GtoLD zL9?QsR_nX8V4Z#~)N2P%b$FA99xg+NPJFf*QHaeLG585@*>Mk>Xtl1}!~|CBDIKk= zFeDxLmdFcO^Iz-7FTPl)lxh0BJCDr#RWW=FsU(y{U~G{+_k=!&PmUl;_Xy*9@3|hp zb-2twk4RjUu|dU<8*mm^!=K+@Y;it@I-=$x9G~fs*I(y?(c2{4S_}PqMK0bLlvfPS zwa=cIW7Eu{CJ^Bcq_yK|mDY4uFTjj4o00u5x%pn;vXy3hAz(r5f$ip6! za04fGnV2&RG4XS_0$KG1aMN%iD3-`lmbIk6x;x5yp%#q^I0|IKRjwO3b_>8>^A$((>aFXO*2X~=j_&ef8h6b%nzFHj1 zCWB0bb9&r^^Oiks;t`g#>1#6RM##p6(!LZr%^HIl8l1~Z6J$oEd>MY|ayPT_r`6b% zHnnMZ_?UOZ9&*m%D*E|7!1X&q!_ zy@p8DmIraY+KBJQQkJYbS4?US%LVyCfs#r@rnXa)3zdbn0W2rHrKRMdai<|gH&j+| zkZOa8^UOn7ygEQv?QHS_v|ag2koI4a zOet>o&%pphSELJ)@#J^D>Y8QWDs}PfvGabJjsYx}R-yNUY&@9X!NePB%w3VI@3{y3 z#1rW!MKq<>{iFEQYjIxJ)dE~jdaEaKcmmaddvKb}CrT~F;tK7+qN+MRWb|n6BDmXk zeEG1nb4sn@;_1|_rwsy!d!FrSL_1qJm)F3sHn^GAKI_|T54$VcT|5{Qkd5o>zB$9a zkgF&4D#fHYmu2%h&$d@X2-D@fQ)4^hvRXq@MpC!8GSPFJPu+D83|B!0Pku>}5*lnV zaOS=N#wS!00M31OZi@_^RJpxlB3gHL-wug{NT^zUjEi)7GtWj5Fvzp=NV_lIi>s(U zneaxH-y`roV{H_X zX*c}`4v(@iQIQlGlMBF$*@xeI=Dh~`nx zjL(tunl0fDR^+Er2|2n#`-(N#z0L2&<~RqWmsqA-I>;$1Z6UJ;_#hdvPQZ(TZVf;|ctDyJ6ru#a_d5~ISLnK`49kL`8b~c1=w6Aj2pPQMX7dE_6SdA_|3kP3jz-2a{ zD3YmPOj9lRh!_0`<=FeuxvCU=&9AeBtslU2;2~LGEIOMN1}1WUZ<%9^(t}n&n1-b2 zDSSpw4{^P0F%Q)&$O&s>*HP4=!kNNxrTdzqNY%ZII=zZUJMk~m5gX*C4OjRl7`?I& z2CVkJBkcouMAp;~d zt`G697pXgpCP~&IpeF93YBX z_IM9UoU{;FiFE=HbA5X{f41uGR6PR)a+!K0V32WVvQ?PCEraBn_-kywEVb1 zC~xqu;oBM4D5j%%l_ZTqy2dNvvmhf}E-Fr!I^sAMT>M??=Y1{%IN1}zOX51ERwsP+ zu@&l<9KH6U>m;Vx2mj=~TR`JZ4<;P(F}r6EPm0)fwyF-A$A`zlR?hudKIp*48n1x8 zIy9bs{X@A@qBG^fKOL+Vfz3ojbhB3xnR>lK6-Mo$gI;DtkS&W&n>D)b>Fdwx8#1D7 zQMAllsxwEsbGuzV++l3})a+D(#YuPzf~UbY)SgslS7eZbtta489^Wus%wvmb_RA^b zG~v?W;L z>ywn^Gg{9Eqq_E zDW|1jDKl3oVX<2G{LgqW_<0-uCK*0>N<;{Fv|=0W+U-6wtY)6zb|YtJ=eyn`Pe3$< zpLrUbchn8cDrnR+GzNiG8XJ(MU2gtzdn4V~hxYmLQQ=b%r6*&D(aJNDETPj3JSFwq zG`HmkvmAH)?B4+(JR>6m|LupL(m+pqf7*wHe*lQWA$tB_H=x_t%?)w5)VdoTHT+M4 zFR@*7ZEY=f;Fb^Y@SA)fLP6|?_4~h!1^(we=BnENVhkz28)DtQ4_f_xI5UX(Mo`g$ z&7<;0vKA?Lh@9c7;(BxeqB9*)2y-5q08y3&cFuby5LBqmaea;i_$ez6$)@Se-zELj zMn`WP9QHXy27W-WL=5jQ<{HYJjPK`S;yI0E{W7yl#Ea200dC?qalIXI>s^ z+XH;wzKOpBda1ZXM>voxK{3X~VW}r*WzyQ&`YL&!Z*nf%+?mrElKO>`*M47o zU_uj!jwy8=&XJXgOh}Xv8e7k_W-p<{nuLDKRQ=P+Ym8=`2L-H9!m-v@bGV^eAxq7Z zBZ1$kN-2w`;!)Ycq{UcADDpAMpP4?GbRkzyx(uNfy7Witb$QiDt<3A9O<%U=9P_ee&xr0pk1`GCKBH7t0 z)L-SWzmX9{sw@dNx8N3YLNCz4ySptN0IsE@s zv@BH&GG=5EO}13Kmw#0aigtm za6h31@(AYDwliF=`?|6wR?BGM>9mZ$H130teL(i*zw4j>_Z*2K0sghjfo2O zMq+_1Aorkri5W0+K6}}^eWL+j3VrWtT`|&`8i`h0P^-ZEpu${}TDyxE)ii-_9Yi$r zA4TCk!^xpHRqb$5vaXc~r`63WUPaK&R$AR6rFd$}ojj)`Wmrrp+C4O&qrFM%Vjb=j z&tq1o`!JTH%xc@JhS0U;b@4}w-yX6_@pk0w#YN^sM-e+zjwb77wpbFT5lMxyz-sxr zY@DbzH*WU02%Qz4(_ZdC%|yUwX(vGuIcM-99k0@cu7EjDmw{~ExmGtNZ!g6Jfip0% zeYsAgFCvpnh|0`OoF(X0iQ$%vW!g^3zNY=|1{yPCH>>uKUN4zbxMH#v7Ynm0>CaZD z*Xl^KlbNinOP-mpM^b6bR4yIGPw`%YRDG@okHRkz>jIvy1A0|h4Qw2Z)pp#2)iUsm(M)0L@ z!ZQjC9v1O6?@WpSQA~lXH4`t<4;A4BtqM*-mto_l6~r(VYX+0l_7w`3 zyMsbr1?0(giyG&np!1BEah)RRMfp}++$pMa)#`$xX3+~aLs@D;w7pIKjK!OSnDuy8 z93{X-MXf|^@}d`C@<&@8kfwC*Ot8DtTH~Tp3;6B$?|=2;Cm!?971#Re%pLPNI4h>i zn*VX>0mOJk?{U_M9iK6)Ch_kCTBb*pYOdWn-ZlwaYPAx-SykeSL2?WgI$Lx)$jV>+ z++1AGO0-zOXW@^|hKhF2k{nmR8vi@z0oOklI^RKrSg9B(?Gv}U@yE?8o(UzK)>ABF zf)MF}&zEDqN@?L%QJXFwdvOT85$fs3V?ajYUw0{$?Gl|IS<3roC%=E?730Map%hP5 zF-7#W;!S)lZV;LMs_nsU|H>H&$!b&}%jVvXB|;UH`cV2OaAp zE<2s0Pp_X<90XHAJvU|r&K}qZ?|&h3TUnb`T-H@zwo@+UmKk^Ee@woR5cVPZQ@*2_ zWa{3H*=m;BW)fae|MBm*i3G6lc+xXn1_a*M_xG=a4JuwPmZM*18EB4hUcK_6CNR_? zvjR`N-EIfX6`4M=a~BcoV$PQP_(F)@+*4k~b@*wy9C-tq0omxB}L zKqOAhVeRwk8nM%^;*8YC<*pI^MSv*L7DJqj!WMu?gf&ae9>(TTLgM1Mdzw;WKesG6 zQ@efE*TBmnh5BDywD%fv)VA3zM-)tSMZFk@gqFVfV28=wiL0P`dojeSGMDIx6*729 zBiOUQOs27kXVT8EUN#ZWTs%=({*Af=f0s(^RJY!k#=yWgySEn5FER(@rFlGLy3FAs zo=mtCT+3#^vQA*D1iDbS$~r!>`nJ%TK}2xQn|YRkw|)2|AI@ga6`X$&U#MMK9v!`2 zX=4ku{N+F3n;h*X^f{fyxYAV&yo)KWfLnpvC zl~%?Q)nD8#+aqTKW+iHa7)_L*8Lf78D+hJQi0an5*Q%=|;ccl<|AY$(>6JH1T(Z0c zA)QU921>C*MlxE|Rq|<1k5xCop)?gFoP6H~lISmPRd#%4++^IRaQ{6zv-(d^4-@0R(?z~0{bsE9iA%sA659Of1=^wGGs;P+Ul9CdH zF~57r!o@LPLVKcXpV55!M$dQo6sZ#?%f1=SH+`nOhF?G%hhyL6`4-By7zY;;J}D%E zUGIXrZnYG9y=i*b>>1m>>FSpX-U+LJlx*%3r1O|C`u@9=(rx3n&OF zH9|u}UG`^XZW0aU#+{G3B$ZzCXS83RbR1lx;QvkW(TpW~8?^dmdD)1-I4%x(_`(zD zYR0+_*cLTjLwh421)-ZMzTgFk{`=rX&wu2UPkmMvS^uLvF_=dY{72C^wzl!-AN|UI z=`($SP^+W!@DK>Zf{q%sK#>|=n0ZD3XGH>GT{4H|a3G<+v?a)|;b>TnB|JPlE+IjM zPX$13pS*SfpmmcV0)(vWfVwh;-<6q~tsS0rQx4>C|KcGQWjc~m^40%QW%}IcKhfE1 zx&vzOSpV>Hg-8HvHN4y_cC^##xfI8mu`W1|wN+G29$4!7JyhW^&k1y#0zquHMNt$z zB9(CTs?aC-^0=E`h)J!UOp+(-sejzQ0%}+I-1V@HStccjn?tb%x{}?G^fY zdkJanaXBseleLdGqR+KkpjF}P7RGa!rUXTiXwA6Yb*xFc<@um)XWt{$ijU2!Kx`#* zQb1E@&BQhX&3|bJezLJ`e6=wnLR=R|AM9VHIUVK) zAL%~;MPo0M2NveBD{pE^B-LL`#Raubsk(d4LqA{fMW37`#42j%sRfqEZvcNTr?)fq zDbWa6WeK=FaeT(g8}cM%=y|(^xt?*t_=0kdSx?nudBh+KtxUp$hh=>sk7}8E17fFd zVMJTvtw@Z(@$MQH5QV`kWg)#Bu(>}XNtca>*?Lr`8ZJ_t|g1F zOs3wXKl9M}b+2X;=j5kx+HDorAk+LAcCIeAaO}cf`Ic?<<$S)%WH^h*Ck<_-Ik+cO zlLOG5jw$|$MnXn!0l`saxK1>=$^A!=%u6f!wFIUFjqy|5@L&lQK$1BzHe%HJEC|>} z$ez4+a$YU9@^Pm%mDbkCM_-@%!=Uy1G|67d2jU@k8g(RGe{$QUkn&LGB7S~YFzd*; z-js6twvw>9v7p}AwB2RwTtz*+;C(p#OSx3)Oh&D*+=&Yx9PQG)v%1BEq6f}@|A(v`TtmGW0Sb+pXv^!27RCwxes%`ZDGNY${v zp{^-b#-DY1mzf$lnqq;jUM_iV}siUMpB1{p@!zAF|J4MkNL>v}f}4>cqA`E-#Kbh^s56V6E2cB@;8I$>T~E z2$Kos8`I-@BmB4xg-Uz~`AzE2GOnr}joJ?j3@CmP9wHT2@+lqjHT5M>Nkpx{kir`j z|EznXf}preYk0AB!4WWwxD>6$yF&a#7}lgGMX*6L)NBX|FET?8LCR&EHymnpB#h(T zc8>vCPHZLD(`M6Q;nl@jxD+Tc+q&{XP<|PA-zs*<|31aDDemo`(1_DL_powhn7Ecv zVV8w#PZBi_XDn;Bz~ik(Xwop0wR2udTlURY4riaI9Xjr&xJ*hmteF^hzjF*`1Hk4U|0p;?cj2r6&iAA&2R{p?o9eA4+0^S`=jGhrd6wn zO3UD-A9$1`a2r>gggl12zUV$+4$;Z|&uVHJPj17cL+{ntURbnU(Oil7R?j77x4v^)kGcg0>W{61^Fs)FC4Spy zoqIo*<6BESX$%&n#b5cUBt6ZfUk@LKZeE@BH*4X5aea*PIWnfaFB%{ zzpFIHH2r!eWykH?o6eMs?rKh}xpQzgZOOXUq%{R_DysxiuW-PTpp`gAdlBv=bQ<1D4}64<7#{QYY2!7?EbZ>Xr4x@8}pv- zI~jhON7Wm9FK+W9FWD&nRe0X`EIh%}j{w(7;RU$WC05%oV4KjrbSd->U~Zm9!YhB+?K2) zW*kqPcp|-5W4&=7443>YKv5Ew_ zF{lJAhu>(QhW~oDmu;=!vsYl?NHh?&Wps9$ZDWEU&% zEHp~dJOU>FN}(uOj`jgick=aqMdA(ldi+|&7)$!bgFpjMZvouIIb`GpK@gP(Q+{JM znYsk`FUUHYEvJ$AI!nKKrk){Rb}>!5V>sFv$waZ&kRwr{Iv|8KO2fKcN`y)g?=ij$ zGT{(1NvS5@vpE2q$QMf|P?wm{9EW^1o(FnbMUOmmgfu)&YvzxMe(E+mFTlK(uijKp zbRe{bNvrfrk2TKZCIP=&Snr|vDbvhjRTIzLx;77D<~$L0r64*NY6}5uiT2#!4eAtWVq`*F3iyM$YX9y7S4a?X{X0^VH?3 zIb+L4{gF5=Xtlr|uj2IQ4ZSbtC`0L;;|xjDZ|$!-L~$ z$oa^RckWM-)liSDiF_OTqzj@buJVJ@4T0+Qt0bJ*I`QnypPGT%v6U{ELzN6@G0yF! z%C&^vm8&%wTRV05v?U$?@Za%q%!p&qn0Md!9^3PjE3#T+l0^YW-pup&__n1qs<)j@ z2M5?v9SQ)IiV#Xvb2EDC-4m*3sKMfpej)ocw^g9uJ46oU)C772+;)7orPxU+Qgt-n z*_@5S+($4mueN{#0)ToE%zZ#-rQJtH!2f)kOl(a~_2~uh1rfHy{+saP|EFB*|6I&< zbM^i_P!WirQgi;E6}v)DaHMQCyXt-dqJ#s2t3?`PjR;I3~4~D@(Y!t1m#x zQx^kOO!*n9>At(MWZxtegdgtmaNxGLD|JmRs4^`I&p!nDyidIQ?swaGg0yD8{_cbyvP)J)Rc^)h{sT@wN?_lr9(+}V2oovJ&evF2_E_J;%2og z;I31+m4z$!85f(+XvG^c>d4YC%6VA6w-GQ@j8l8&8t}A?hTO`!#FCr|*grt%LK8oP zh|K*)$k=RQF>FE8nR}BU#aE!~?ka|xy85SHZGmgsi8WvDS`!&PHKqw4%z{b3l37|M zElmE0MMPRDYE)HwLTnb(=HeqmS4``P@kO)5F9#l1S~Bu%v&NgM{y*$}Wmr@T+b)P$ z2q-BH3P^W%3DVsqF?2|GC@9hjLzi@SH_{B<4NCXWJ#g0G-fw;T{py^b$6s=RvS!Vi zweI`5E_6p2w!9FeoZEJr+;|s?r;vd#+wQ- zv4gUnMTtN{)H98#d_#kvDPCd_`&cyCoIo>?9iJpmk8SZ6H5HDzV#mv$N`5svr7wD8 z-KE%%Rt{pnY?c&> zysLSlP>jyxfi@70{5nX5*BchMWkEfu^nz9sgW(f>0_#Sc2Vwq_G(YORmXW+)ghhC9 z$)pX)s<-KT)0V~vHEXHcUOpG}i?U=>0qYZ`_+at$iu(wNu{=&&wd=`Of%2Y9=_D{J z5GbHSy{X^CdaA@=xid69J^f25LZ|9(P}LU0P0m-WU^eGXm+Zc{B7k)<+%&H^It(?8 zM-6B#Wogtm2xc$P_4-Py7O;!%?s_r=XKSPuot~ybSlC6Li}P+{*a-6sx>EeATE3SO zJpw&GSi`dl=(u7IeAB0$P;m1!ixiO*h0fQ&;3QM%_CEe?bR54lYT=KTz$_2 zz){$_Bpip1u>7&(#kCt*YMpG{>t7D!eB?PcmiboGRHh2Yt$xwc=$(xQm-hF*>r*3%t9FrDW-$LEBUm6a#IvMUqI zG!g@2!MU_1{(-|LL?N^irtLV>TF$}0ymaRsZ{IW>ocquY%wRemc?pyQ$ zH!i$Yu09N-Y&ks9qlPPXCz2H)4=E=_Qdi@jgg;-VsLi&xDIYf`-hoq>K(+gpkiQ&a z$8Gj|6wvnVX3@CEM0YVabUJeQTgV&yfSCskiP)XItIOJJYO05_D~E}S)loOjn&B@1 zU6}4zD0tU(;dFYZUI?QzIjgd_2W9TGZi0<%(MzcOAre_@f>fVsh#TdE+1 zrt67Y8LbW8+aw0Lsp%G4&#@#EdH*pC$e>Pe^2+9*j2yMCC~wR+kE*V;cXMAiRfpuL z!lPq#GblGl^tM-4Rl20PeKd(eri{Ke*Eaakf22EK6{$t_B3GGxm)4}{t*Mz8ag)o( z%M`0*=B_6{9E+noy4RsI*;ZMeQ?5K+*TkXP1;`_dRDa4NZ@-j{ow`ru84TyWAy{Q* z&2`c|f;s&MfxD`$- zHSp3VUrwY|zdJC@lNxgAbSgBS#XvSzwc*{^PqqN22A$ku2cmkXnrEEdU}J4h*3Kte zkZWW;tu=1zdGCRQkob0y4=IfZBQ*jEs2A zzlr21Xi2MjqCV2~RnhBZQvvc3mMZmj9&&&tl7MwNabcyZsu*5sMIbd<(myQ0Jo^<7 zu8){z_UBjl(|VqH$xjS`d5MEnhWS7F!5@4DzK=r91xCD!``mLdY2`I0t+#tRzVL$e?HIq3$eGk zp@$3YmlBo4`CvAQ)w#mtHl#{2JhuY@Qbwvgt;>FRw&c>0G1&dmy4p?bHeE)*QKL=3 z^m0NPLPOu%Deh)#f@;2##{qp_hN`*uLd%7f2nhC7HSLr^C1>L7yQY8UZX#vzlRAGV z+yY0{rSzCGQ&;HeBp{XNNzh1Rc)1K&9idxgDrb})Ws7X;X`KTx&S@DzI>Am-EI3|Jl zUy8)JufIs@p1Nh>jXsbpVU})|kz^4xCP9Qt{ujRMC{-kBWNX;y+doafpvC@*u_7}9 zCC0GEU5|T=yf(x|z^Fp&kQ}tCSG5N#{6$gtI`GViD6^i2z~K#3i=f@z^x|osndjTb z<&BW@*zDe3fihNEZ>)n+bx*Ld+q<~L-FJFDw*m>It5u$S>#V-zxKFxjK5K4ueE1P7 zyZ+%V`PzXoj_NQ-3S$7b)3I7o%E5w~dcoDr&M2^~#(zFTCtNCCy)<~4SjuhAqC(9yh1*IfCWVWyW1Zo2r>bdn!Pu#9G|HZ2Gh)&G z(!}MRL!IA6I_ag=$CcSbXyV|r0X?dx%eW>7^((rU#`z35%p_#SDM>pc!pB(rXn4CJ z8Y%CYVi7|LTN86e8^rPKI*fEo>TFxeHQFD=Yn<(6Tk=l4j@rbzvQcVf^|qUPQ~wjR zxT~~R!=}Fz09s|0~BUQ`8yEc)4#FyTv>%H{FXcDfzu%TLp zjiM!nbLS^aEHy85-^N6!txDaOE!C~P&jWK)(%qc z?~7kK3}k1Q4Co;+oEb!4pP&kWw5P4F*fqT+$@NW;IT)5)rpF1aRO#b;VQqleu@t9R zB;gR}UmS|h9tQ&6dvPFQYV1L;rp0VLAf@iy%Wv$Zv>Sm|AIEUhyVsc(;8iVMyIiSw zLCDYswasw)6;o!<7%+dO-6pN|`{h*f5HuHtn;eCBAGy(Uke;2X&xji^_Z^wk_3QHx zI~;U8FkH78#@U40Lh=Z6E!}ve^e;1YJWCkF&Bq*wq;vyq5U}jmvA7 ziKHOEeYwbEB?QMZ4wQ*ve)n%T%hs}rp`xfio_YEFvNk-@_MY2uXi0S81TKwJz;Clf&vb@(QNtV zpC3{5d|*x<{AKnC`?yXe$E(@_@MepzeFw{3SC^MJ`vHOq_y~s@O-@siG5X#Yz~ zzTI-1*V~UnN?)R{Xa}fXV2=X{Ud-5jDWvV#v$Ngoc2~ps@zzGw0^{$p3yam8Jq|@z z4;+;HpF#*YEsRbd)-DT^sP3oK=)SXC>3;4m>vFuI$U)fzoNFjo9Gf{tp}FYx>qvC3 zi5%`iS#m}~9n0M@Yf!Cj2=+x-UG&Rpq6ztB3=@h(H#+y!)Gn6u*y(UIdX_NOZ`CLz1TCYnKl}`(a2(SB(x>W=-rWzrdA`TMwzPbD%I~U5`NuiWF$6%0m>zUv<2J`gcE#&vwU+P4lk2tD_P&^wyH^{xE47d7zwJkOodBnZ z(a4-TYR>ML(@W!Iq6OI1D6O2&fPpTO$2wi;F#5OJpB3g&BO&NFZrjU9OCir*7p#;` zPE>lQq?aQmX0ThNcwcV9KLP>#M$5pxC(<00FVjZ1x^j>@nD=U8f0W>iC<*`440-V< zN%A~?{E5010=9Kc+FDSB+`IJE>1yY_I0(+U8UIP7k7}wL0p<=&uFB$km_1xRYPtR4 zbW4-=n2o-!Rm8i3ZrqCr169n^>4IO`DPu(qhLo9O^@<*6!!X`ES==LKjx%_0X3;bA zbj8aB$`YL-SJPu=9b(`0_2h@d>DJNhq-s!%gAJo)y>PRjJ6fen=k)s2S<>#01&Dla z&jB8G`5@j5sGxGl8lvOYHML;1Xi{hsc%{Tf$}OM2t)0l7Kf>or zmxZ(EVPD)!yh}!iYJHg0mG zEhoj8;_$%L<3wxA3mhtKa56jVw3cKQ=pAqNfdyBlb8$XztH!s7IhLE9>1~&k`mJ<0 zbtREU-%=fp6-*ZOz6~CDzXVKVN;p5q_SWaHF$vnrF_L>(o(x{M;)8nvu#Eh=M2ynNnOu=2(y#~RokMkC>uiUBtq(^67#pbx}p zAW|M3x){^8I43!+6;D*AS8Xy`9EGyd_Yfuqe5~-C=yiWNYCLp1{e*ViHon1T0##(t zxU=rKns89sF$CY*1hp?0@}XB8BfTtol``VvX796@z6p!B`{OJbvQ3~DQoV4zQteE7 zbmG4f_uz!h@1D?dK0~=8FCp6KrP^_sEeo`K$AA86Oqm5@xLuyJotsSv1k}4Qxf&;e zl3`<%Mq;wIB-Z_FE{n(Gp*9H=A=qxdbxB1>mMntzQJbv-GrB3aE_Q8i$ZuB!oljleeQe2JdJ4}BK46D~e zJIcpvhW)_#9=VGi1Y_K7SIJ{j!f17{5O0->x#pUWNs8qPe63x(BgX`YTZ*4Pf~Rwm zrnTyHjx{;%TX=M^%HL}at~n#rUir2BIMLhEbj&lJ9pdiNGAqEt;jxChqFfa+Y+e4T z^d&Sz0=T*V2UJFWzH9kvKyV$BV4L@=`PgFNrl?^c@jE+&au91f#R$tzr?*AVYs;!h zH3rn5%e>Q}TMmYV$THcJP(9Dlpi|S>UoG+!K#FtL zMpJHdlKB&&!ar}iDIvsCJ-H;l-_n!yo_9xrAt9KFHZxBD#cdp2H{x}FXkbXP*Eopd zW~~Ral4*fS?LP2?EdqYBkM(dD9ut6HB?C9@;!>#!W)LuSMH6-u0z!(y;SKag<=x$XTY&K`K-kOq2gmmmtme=I2I^XHJok^2ZJ6TBKE zss7_*xytg1TtA9zHVr2P3*^*T^HZvfKMA1xq(tYn653Dr{K?qZcx5P6^dTDIcQ%Aa zJ7uw`(;yHCT;&csnOyX_g#jlq1+@&kiplZ5`E-qrndGIKzSDf;1-}l zg$J+nzApe0@UV z6uLNAlrU=Fo5ddN?U{Y8S(Uro(b#Mn_v%XD>*hpJQ)t!M66x>n7l1T3w$&M$^7kHG z9BrZq-pDtf8!SQt7QAj7ZDCv4D)$f$#RXh6;I`|7VNii7#hdkho~wHoN1V9&uvKZn zqxo!NZ>!1EWoWYm1y%(r!v13?`oY86wwHbPd?W9nmTt~E{5**$A86h(!nO5Tee)Mk z_uI1VV(qSke29R&IUqs-Pf6f14*@)MI>SGFj5zqMDxbyl)M@sX^b5b3TtQ;R>2JG+s$Bf(60(->p}qh)aCbIfv&zO4{HIxgZ;Tm5hzq5<^8VJ^-}pr7&$T`$+K z&-y&L@)rLzg4r^y5o;IC>!?BCs9}3=qvWR7Iu_6XEVcxwo>rLCS9dd+R2)S|OU2C> zvMX6F^D9S{3DMAj(@w^5fM)^dz!HpB$DvddrNfe|4*@w_w_ob%XCy`$8oh0OMg=*B z^uFe9{jxyw#j$nk^d8G=H(*M*pw)RdCCsnlPUU}`fFr3lRK?w>1{$T&c6${`b30Pj zzWfgNu2y)>>4ZhK>Tt7Pda~GgAvqA6b;3+TX_S*~DLQuxXkepn^z#wQoKddMJ2p%l zMGGAK(l1RNC6@O)7#S8@R7kYa|;h?r^{82KbpolYuv7K z^wF3v;1>c$cBw+ZPhQpD8gsMtNLRbCBG}sOJ>oXb zunmg$+^s4XgA)`slb>}zQ|j=?sBfi{&obg$s61{%BM7S8$n%FJv0QYChQ@6=$@k}h z+jgwYDw|)OVp6gzPA!e(+csp`Ri34U>pG$Wr*8Ib|LTsE-TfEn zFwW^8E;|Zx(6{*6Vp{`YXqNqA0a3NcV+Js0n?aM%&Hy(4mm?Jr7KdmvDmm7-3vdJS zF<^NgGR@Bmat~Q$fBZ|yN;Y_+>Z2h8I|Lu7`ysR-__Fb15U za_?VC{XD0XKb{mXW*o1_Z}?qS@RPW#P~gr!tB)uHFY5p&rM(KpFn07|N?FvlT6Aq; z!jwr=nK_D+Ltuj11I6XK-U+^eLVHdJlf2CSyr}@x6Nf0~>)um34gKoU{IIE(Jb~AK zL8IW=&C!j+?WK(;Qlae|;QSnvWboaS+ks6MOdovVb{6k)X}6c^rg%-v!^>0fgh*`# zM>e-aQ-ZQkTDvY3yFt@p zn7`y=piB6$5>Mv>zlijQ{oLCbZWpR-mv(0<*N!&1{~+8;<-FH-%px)CU|0_ zRh%1h=$t&LH`rDmW7p3H1;)Cz?KCH937@cVbX)VU1IPPF#PgSa-yKVYEdKPrey3iuxq|V@eLk z+BB`eY{=TopI4Z!DUkJfB8E+<;&=FMslPHIhiIalFhEm| zIr=i^B6^WTd@3Ro&n^M=fN+8F@p;)H>=3m~q2@{H6HbY> zq}*`GqJ&1s2X(g&6j-F~6iGIBd{k{0KPWqxDkZu~Ky&h=^=ladkRofBR&o$seQs@{ zS>_bVG3)Z$wuE+|KYos+N%XQlLdI>Cw6J9&wp?=o@qOQl-|okX;t-#(q20g$^_*S249Y#W7lLNV;+)c00 zvi*&WFyJqelKBUZ)r`ouw;7d{QA%+^;^{m3YEd$EONwf^^eE$4_IQkJP9$u}PKU8Q ztpzkU^k^#WcJxRdm5m=;`LaQw>REz6Gbda0cFYxMSUG-dcsy&+psR8{FqDebsMgZu zPIK9CEUo0EXUjfE5kahs(_JeaW?FVJUFzN2sdT%m{IgEdJ5IX1yaW=g3h{2M!$!q? z!oA6|2}i4EK@6$>41{QBr>Aw+levR=avyJk(Rl4-_R;bW@y9b-m-6QZOz_TT9Nqm5 z8@@jfCuZ%4R55wpRrz#B^%af1R#sOTc^=us==j)oH503kJ&GaNSkTF~i&ye9bS4n% zg30hTYy*zTsEhVqy>*H@?e8e^JsXPQ)TTpl4j1`Oe(d8$^G32Xtunz5I)v-oI3DB zOL+LqBvXaJDfvY&rq!bas#o_C9qnCCN7jQGY?E`|+eQ zKDXY^^NG>g9EF<4%evpYpz|NOw`vIG6fTkv@A3hK43E|`e{_}>12`GMgKM*OtYJhl_lxZNquwdY%m z`j>G~fs=is`YIBiTYj3<@76$JbdIH4^dJ!qATcCjnSGI6Ohzh>Np!kVC8>A4qGg=f z{uYJg+nnQ<$+*Zv2R{JgFhZZJ0c$~b!(%roBq8G7YG8oAZHxu2SqehCAt>K8$p2I$ zGtsa0*&402hWKIkQ{5h#SYo}Y3wxMf5?o4kC>5TaO{B&K#SnD7=^s=AQrjsrzhhoJf4v{MH$0u zmrjVEKN5!_5v<~v8NMSSAOMPt_qpC%N}Che=r(pM9qPC(;jF#cvafQ#-Z-aH9 zPS0>i@XW1qOB%h7-wh)53pRN)!Awh_rYcnYh>4+}@Jwq(11g0BPAGlRwwvcZYtktI zE!F?X4R9cP6Zq6s2k<8;Fa`fREl?RLR@11q@5%6{jsY=3gTduWR!=2g+TZLiq{6CFMCjCII<`6th7M1w#G`U`dZPh zggZ+_`IC(EGU-KXe`5uDG!uC;jlB>~I=txyaD+@AKd7HcYpf(A%hpVc@{SjjqPLVX zJBivTvA2{_7%5j(V$@KRDwg6#Lg|)9j^HF=-P(Aqoov-xHCp;kMN_n^ zQT-M;eJ#=y?s4t9&qSGYUzE-Ls_CthO2BmKsxyzOs|DJtuZE?6+WY4orW8ug6`|HY zm924SC?1oLtkP#2%Lx%J_x`{xp~7A>6Hkp6RyFN?0(Fx2n0=+?h;7?oAKQr9-$P;R z`{I`3f6ohO9j1Q>2hjJSZHL==aL`s|y|L65ejci(X)=I;+F|~n#{;hBz+D-azbzLH zlw>+(RSJP+fc*+?yg7G&i0;f87~_yB?#wCRYwmYBoo711sFSDJwLq@%>m&huql4+C zK=SbXUFk7e+>*Ldw0)u_B4gB)vv7zkxaae-6K(I@gsfG$)O5wCy4rSGTE85-d5|UX zx>{`lH|zL_iRw<<=gV5Dr?+d;cWaNtJj6d=vRMb7*Szzaac3SW-CpV@4A@>>@u2B} z>6QTNiu{HJmi=?}tBV#keO+V95HGQGIjKnpv(5xv0qBPIr)Y;$AdpMs3dlmuyV}^gB3DHv`$x-jShGN(9LbuBG-F$UF4M#lO6D1{~ z3)yB{Xu|+Fg)8-|gNO-(0jGK6Hs=Rm;ju*t(Y_B6!RY9eJMWZ0v`~dkMxgFBr_^iR zX|wC|-scxFan!>%Hp!UOxU{8gw@lBX0)wF~Xph=HTP;h?9f-^wOgse|Vr6S6mtM~vem6_P#2L~D6X-vg!2!fKx4?V}Q+``+xf zjon7JDDz+i1_A7%HU>eKt%nHtZ}8MFrn;b?Ylt;CEh;;c5MfKaRE-G}mY4nktb?Yu zTEkz${wtoaQNloJ6>wrPXM-Q~wL4Zw3A%^p0&9SObocwL43>1F)d*JYUZ8hqG(>TJ zh~9XC;znY!&W=iW9Vc_sY)m9O_qpX#br}B$Z^*T)tbKC>jQoNTL~a)&Ou{VogM3?S z#%eyv^9Q3%|MRb?V<-~@oGM`E$@TzUwLTrcM$nQM774;3nc=s%4r~J`i_u#glbzZ33Y0zL5c?#(%rZ^piM3)wBvOOiheiXi^SLp*Fy7Uha zt!;$0QL<6;+92SB4!Aeb8Tymc*>A>hu8v9cpY3ExOf{N9v^~r8?nd@x#s7vSNJ;($ zOF(7tOpY%mc@kxt!$$Iy^fwP`AZO=PAs(I@0vqe5_n*%95bOjwlvADsK)>D;kt=gJ zgn6_23POa{8`kXhHA3?bA;NijV~kLyF-A5t7G8*SBC+XndDD&N{HPzxB*022^q_~< zwX*T{=&jzTS;oM{7CoIqlx+Wi{-WpX#&Ufum2mNSfO2ao^W!0dVS~uncSIc4sc*?g zW@e;vW!|JKo-*c3QRC))jfI%SE`i zyX!Ptq@1FfbRULGXGaA!6C#a zvGxyuc?2Wx<5MyEFK}iOHe`@A)LYBqJ!pdcR2$5mI#x_uQcFiEIHR+6J|({7l&oiw zrbFT}yM2u-z@F~$EHZl}!W1zj2YJ|M*q{rY$BI}eHcH8Q%*~KazJ$ywE#%Srk)HW! z=@iDg2DdaE819otJXVx|XQHKDVmaSt1aJLQYvd-otw^MNilY`Ya5NNmJ_twTc>{;5 zM|{Qxe=+6;I!^2AczQ7_ZypDGEk(X-xqGq_begCN2;Jd}zO393=J!K;O6HKmqWojOTB&%PIey zK?)9F+>rlMR{+M`06Tc(A8vq?{6Deh|3o2rA}OR#aZh0*!e^EYGrUW4ak|+@Fw=|0 zs51npQH_a?R+<5nl@38Xg!}XFdhjF=2eqNsO zh&~b$(vE%?`qMvXlIo*!Iq`GW3WT0o7=;!`iJsHAD)>=Lu@B6$EByYy@y7ris?$ym zS~k-aCd1)SuwXBTQ$x+!8J&aiZT?`h01ZmcoQ?G#>H`NUoD5-j!5|$j0qXFqYF?zOYDTijq)ETM*maFd1>-2`Y( z@B@h8w!hxxt%hv`4zC0KuWod3{!kF9*svT#%X4nqmlaTmv&5pwX^B_G{b<>pkd)Pt zBHz_wIcc#uT?%%g=>bb^^w{*qpM@<^$z})6&v!8$a)%BhgxxnUia!$IZT5-u-w|QJ^hV>9D;;%^C-+nY>VJ zvz&Z6=|SY*ksWA#ggN=&(Gm#4nS$T2gz8rGg*q>cC{25P-TnuvfFm`0`S9UP1z>~5 zKO}`LO;Qm#VrS|XenG+QlG%!}*K~$8z2&Cu==|zWrU2fIijlYXf8MD2Y}0>y7ui_u zP|7&0u`)zciP1t|-P%FK1A~J;qT#!>gL@$)3lI&&DOGPWL4jRA7#2$1VI%#Q8d`tj z49VpSr*9WWcsGo)T{JH~Q@l!u3G%O3@qok|ROA>)!i!sEHafVni7-+qsjCMvEPO%I zomp0v6!x^=f8&06I_$=u)4*76G@e7HHEs%d;eD5v-C%}SR4?(RZJFQThGw*%ElYS> ze80n+)#%O*6l!4pYlV?}ibXW>S#O_i6i%n$;W=QR7Sg;d80+tB0k968WkdmV%2z&p z+{szIZ< z94l5f9{C-5gzpR3C|6Z|!{2!r@Bg0qH@jet!3P~Az4$FB6wVvx&VYqBukg@<$@ z)5_QTjW+S7a(E%#ru*qkURes0AvHITab5agMKZ_bPfZV>J=i*I{pMu;{K1_8Cw|#L z((QiY)K#%&`SNpzoscl-msRjrX*oVeXGaY*qN?}slY|f43RHo()}_@q8(_B%un{?; zOse)LT(Uz@mo3F){LYZT9Oo&JUz$JDAYm5QYZzi)G-I}O6Y}aGG=;TsT&O{y63)8@ z@Hbb~A*Sjj=Slm1niRT z=eupcg)HFIQK#y7(u9<1G{W9p$oy&}Y(Dtq{&chzz2>IYa1QThTlJ*;xXdx2Gi+iK z5AdZln!kC)Gb5{eK4uQgNOYZQI1Q$g@j%Q`f|sW1rg74mZsu z&Mo^x63fIx70)bhm3_?dPCkzgQ|$=(XIGD3MMtC?6{5&(~!}RdXOoU9JgH{58`~7~yb|uB7XEDH;vWCg#I?Xw1_T4O+ys1>0Qb#qZej_V(N=#!A-Ze@W7RwNASMIDwgmgHh57WDV${(_qzviZfK5lKc3-Cz z^_Gsgf?at;Z*>cw65ld`3q2M1%zCXyz#h*|%Q-2o9!FO7iSO=%SsB%{7;!Hql)-*-LOe@b9cb_i6u%M5M|q&(AH{x9*325c9?G8cSCf2S)MHu@dI$<oR-n?HdUsN<7%K0BO#Cyo#2-v|0 zwn!hqG;;fhYJdq6^Np0-8_>J-9A53mtlVf;5E?RIg^$-M1@QHqA_uq_v65wq-7w=l zFEd7i%)Mx7?l58|?FJgJUU-Y>jPuSEv+V*OzzO<+w!gK3B=Edjy=*Uv<^iuBRStb9IH2r0{!i5ExVUzP9@5eb9lMEfc4tw|A}j z4Vb9kIg|tjOn@F7U!axiuJW`gfOluq5Re0?1FR6<_SW1vYycwhVV}9LwfvtJH~z~W z$AA6OGgXxA@kYKF!V}#?TVCU(1Fmh}t21bJh5SEkL6`*q`_!s+06S0+Bqwgwko>n= zABBeF5oseMqcDBG?*G)3^vLHk4j?2ni}gO3$ST545Dce4 zG%sqP2wxMmN#JCr-bSvMK4F6H@*wHZbUG^x_v|Ja6t?4Yaxp0ZLX4U%ME!$=Jb>p8 zgwl%jYtM`72v!EO8L!U;VM_sC%_Qz;u(PI<{1m0f2;Br1bAUAnPB3FilcTVbIJb9D zRt6V!JWpa6VSO$s?&qbtv*FFR#D8tNw;lX2DLue*n-{Lz0E@!iJ?VxZw&;)j7>TjH zQze90B*L1#)~iVPnJ@V=5lO@E%=qj-fS$#gG{0MWEB7f2GKNT}@@RtuKc=ECL{BmG zvY>2^g$o#O-dIXX?5JyPNbi_fD`HCMoAc; zxETQL!SINqTcJywzyKK7Q^s+e!M)PXTNK_m-6!9bt)6vm|BZBN#%eE2HX^2MeV40* zawGagDfwYl^mfX#XbVD?sNKv`sL7j6p9je9Umg6LgVk(_U8D3y8=W>nyY}iYPGT+> zxyuG`Slte(0jO07B{=dm9rJNOCBh+^a7i=LT(Jv~HQ;Lnd`NFu3~_Lp71YQn9bVi) zD^{K1qio{o`aZW*nBKmz`WG9}VPqk1O23{ZXKYKt zKXoK@6b?OKK=jL1bcpCS51cJc|BAJK;?q%Z!_}bY|by ze?cV7GxQ5fY%&=~Sn8h|&KEE$4M>$TlN&t30=ch7MGzW@bzzC|7&v(##zi(@#2MMr z8%2)=&rGV$CJrV0%LbD(n$0Ha<(HWQYW_FLC?9jpCA*SfmjbHUb@W zUR(JN0gH1k8R`$Ad7ZDt?kXQ2X>ZI|=xNs}jOjJgXpO!`dpsLd`XkPPO_ODHFW-`# zF7*_kN>hMWdc)T^KN zkYSsiJ3YeA1kfYwIN~14{F5GmL!|bbnXG99hJl0`U86MvP(=WL*yqj?MY_V#hhZ?JP|q)rOUG&&_<4!VZ{^P9245oTRh5^Q)1{#o`HZ1sqQcCY z_V~-cktGTNj}okmie1eWMwz)iAx1Kmy?aqp4woZvW&e;PHVRj9?F?UFv=M^Je!0#= zSgM^cXA6{op`{Ij-6(|ALdS4AzN=PsPn^hN9Bxu_GLP!rXS8t{iYO3!mx36-t@y6q z(W{-yS*C10W<^-zw+>;pOqX}3Lr}T>U5EGy=n&M_fDVBZn7OinI`r>!2vmvaS6}T- zlK^VrCPauH2Ivrc=g}_u4BQ7p)58XMjv51Mss>I|2*7!oDX-Tb#VO1@&&XH2uk|t# zSi=nYJ;SfD2ugBAbeaz7Svk@S)g52s7wOf(F_Li@7cX>hsBPt~Fuju_fPPRfNyjX) zKL*AbPO%QUoYN&qh@fXDXT#4NWLC~s^PC>?D=o_F1(L2IZ)}hgtKVRK!6A}7{beTl z(BLTXZEX#Q>NYO!-UlLzR#Q8mk-YSxu!ym2z2?e$$|)I>&5;?zv5i!q=k>D!J+m+9cTpFhs&e5kE2w-eKFcyj(U^p2E321Ef(DQyWpJSyN)SMgm-K% z3BqNLao^n06w+LyHS`LR#(N#cwd zulU?(;Pcw-A6++=rrQcO4+Yy?NQl%#0x~nPC`Eunw`rpzevr#~c)XrN7uTsPcz2WL zW7SUJipd-o?+8g`c^zZ4Rvx{B1#k($g`V4(g7m=IXWb-YY$=GLE_Bj~ZgOxfMI6Hg z@A!u>mP}buW`9`u=yDNI3JQ7G^7Rn)aWWK?zVxHqEntAaQ zLGtc}E>YyxrXGIjEJBDZu&kJF;&t=W)v=jax!ET=bXN8atzU{M>Zq4QdM${iGJMaP z6}2agRJqBZ=ZnBnFqym{I+r{;2&|5#M61cVt^hkh34Jxl`Rh0&SXr4>sp?Sp;5&V_ zr1GBdl>8=m$5e5Kg`l!cdEk5I(~AY*+T#H)|8Q|VBO-`I03Nn##>v3khvYxV6Ol`c z8$%tqKvBvD0TH+lsEF>1Av+Kp(_{QiV{V7qT@4YE8 zlvzHbVNG&fgV~OXoaL7{r~sTo-O-u0^#w@XDUhQXIh(yjG699Q4N=_y6 zX>hUqtyQ#LvuvnbhzvW^VJvlW2Fo7;#a~j3Rir{Hv{Ya0>mGVM)OJNN?qkh4xD2 zR|%6wjxW*(!e3iBRF@Efe6t{pt@mD_l|5TvxzE8}e^8W>j|1VJdw*-pE z3=4K0*hJScMx$+ND0XoL36)Q03H|N((SE+Fi%{jOJQ#p3DrVkX7c|}sE$|g#^8 z*9&%D#senaJOYg@9WlZ8e@vJ-xL8Frfcb5^KClZ{7sMR$y)~;<3jPMPuz4cMQ7DfJ z`qVgvYltYLVEEt`F7WNsG-i2h4-tgVyBuvZo-{icr@%}PSCq|U3A7eD*ANGPha6V( z-7t8pvfv?yWwZp5fi^mvJS<76c0&_!LvWPbU39nagr0uo&qh|2)NbQMV!W;VT*vc~ z8Xd{>{*&!{Pm%cvA98%BA8KzA04lbLbbgxu#97|^cml>)YV(s0wW#PmG5l)GYlKc9fB=rLON~@!prMKSfZs%FcnaQ_iy@|lB zu$C)UovwhWEp%r&dK6DsY2|h`7)adz>hVVoqH~!Q# zA>w#c+ib3(OLh~l0N+CYvcE0H8!`qY9j;uUlC<#Aa_~_Qkal>rW`*6$6deat@(*h% zDpe@t{=fijTH5{R6oTmf<;(oahi>#cssfZ~L1{}fVJE(Dd8a`oE#_O{YK+nDOXa6O z9IdK4S%IbR3SQS!w#=-VFrU4NW)wC?RBix)nGyW+mXE5!t~RaM7~=!zvD#TZ&@Ra9ZS zqeM|z0y6-hgxI&(W&fQ^q${`jak6&v``k8UFv>qOiB}A@FT971sk>_7r7H_s-p@I^ zucBY99skI-TKy}TqWxcG3SF&LmTTJcWs1({!+7eQdF>HB&iWA#4Srn4Q=p2gc513L z12(}?#X|-V(lPDK;oB7V7Leqm@{C#(j1EJ(XPDqS@1@MPc{+M><=Ogz&w|gM{$i*t z@BlX>2&0oAT^-;lJ<~t(1`F}Cxki~x+% z>-7S^xb)@=kF!Vgpx$g?CO(&%h}N__e|Dc};vUh2U*M2Ic?1Au2apQChq zReandW=TIF`>nb7asql?hnQ;S&2cO|L44HNtNpq5|5SF?0a3MGyWa*PprA;IfFLR@ z-3`(u9fNeYAStOxmvjsvNGK^K($d`}Al=>F%j?1?q0#c#&kTVYydR8d{J8d&a&eRE4VH-lTAKyVOA&{}FT);G zRC$Kh@@O{hF4@qE!YD^dFJi*aBg(YF(ruSXg*~y~dMOFhgF=@Wg6D;?b@+~t-o(T? zKKSVziE#DL9|%QvKNyY8EJpm0+CkIf4{T7d-Mg_=r`VN--*aOvHB zY%=pAwAb>vN(^>EBiTYeLm_XQ4ozG{jo3Zxag`9rc52Fb*j#GwizXx9j`Zv=N5ae_ zmOY{@mdhoI8~<3MpmN7*w*0e5F=P9?rC)#4X!joq^e8O~P$Z>2pPIoq_pk#4vB zOgBKEkMbIj9O~eN&wtRa>EYN}>!G)K)6|&qB@Q@Ae01uG9!sM-Bwfq2lLXhFWnA#+ zG-&l#@LA)A8(x&WUXcqyotz$bw2;1v9H+ya73|bJ-jjuio14?5GvNk{j?@4kh%`AK zmDw7$)S%@x4LFqpqbp?e{bBBR$G$Q&Y_00F^w^gHBf*@ocaxy%=ruF9bT4U0U zbSC|KLFM?h0gSafdZB7!fZM=RaLFW3EWmzoy-^*(DKBRh!MspKkf^%~HxJ zOd}KDEwj4%yutroq>+~M-cOnrJ%z^o3$901sZx|F7{2vYRaI7Fnw3tBPYZvIyj#Lp z`g-rz_06wYEUEEnYOYbMVpE-CmZ*bE4K2#o9*4%wNKhB~&BAURWEE&;8or^GN`0Wm ztGTc#Z2P{N+zE=vsz1JQ*&oDGy+WR7 zqeaORr?pGYaMz-byysrS_zR~o^??3-%PR)PzyJsYm$Q5&~X`k=J#P)-(E6;cJSMTFBebw=K*8YRs<@~gO z*r?v;c7F9S^;6{D=>5LHknX8ev>X|R`*{KJ&_|I#yr{@Xggy5?@G_~f8dP6*AFl&} ztuF!akypTTo>x4$9w1+%MD`T{{l|Y$dHi`5fDb*l881)N^lu@Gfc(psFF_8dq9SSv zC)wb1>xM_TS4=LVeF`*Apyc1Js(HpKx=j09iym|hPhTdUWw{Q69{6E0xrczG=B(f4m5Pwcz?n*{r(92kqHS}w`+-R8-Sk_%$ySNORY7$2E4uU?fJnYbPyp(*d&`*Pgm zlfHzn^r9x)s*!{S&1t69(-FLg8bN8y(G|fRFC)v>?!_D?-`Kk<=1}`(jLbPdd5Ui@ zyj5Lh9oO)ka9XQ|YkPdTNPK*<#vehEEMz{~bF9A0+yTU{G<}2iAqsg#YEKOBqFR|3 zxFTH$s!K66}z`5c`UgMTCs97GG63HGzw!B zcPhQIu-NUZopu6{^x!mwDEZs|SXgxFtYWFKxi=&6PR;vaoJ=l7-vrot3)1v6`ss!Z zj>BTV9NRBcXSK6QOpw;PbrRiW8~|yRt^PM>gH|8gLxkH*3t1O6&VN~#K@YOl#S1LR zf>BpsNg|1dWx;ZwaMciv3J|x!Q=i%1yfT07uXf$@v{^5{Q|g3leQ%mPKcR1?Trscbf)!aT5an8%ynnWhZcaUas0s`rTBMu9 zL*isBD(6C;5)wHKB>2c*z4ll!_}SXi#xG=G^{dW*syTN8h4qLI71} zYkybLsA)BYjJ8p|NgOuJ%kIdlJdc~d=i`x=m&ut)+u)1J%KN>qn3K6vJlMk|JLjo? z{PNfKd78~06%BX`fBB91C%2M+MkH%VW)Ns_L>v6hxblMbvBR%oDGc0CM=tQ-Pe)ke z96ojN;=q%7plDy!j+did9tZF#h%oGUgCXsQqmkdA6+xk2O?TuLzrmN6K|Z?e*q!U` zGbgkEs$=jlfMgD<;GR5xIB2>bHhFFr5OS+^6>26gBazr0x8tF~p7=gtINyY`mf*Mg zKI!}Slve(;VjDNHTL&eDb?nCW|0VM>=*(m=XW>g@WnB`)Qw2cJ+l~95>m}a{v0OZP zT!fU1xY7lPiI?6l2#9ifhVR<1$?N}C?ULqc?Umd9_}e4Svqs|@gO5+^zLRs3u=iwC zu}&72sWrsr%qrT8S{Nyv{0I;kJR>Y^`PTfVJPW@QKM?vr#YUd(#Tb~b;H|KxFRb-~ z27hL!Po09F^{3cU0yjblH?$}y)GFZG-V6cC%TqqxNdoS=i5lJ;|_79+(}anQS#8QxxI<2R^*cI-?mPg2ZWpP9)z2A+Va98#j{-!;&t z@*6^JxbMbFG~MQJzbCZg72y$?qpjmgMimv0>*v|Nt}t;s8LcPv@!s-FE%nFei-;#t zZLsj4%*gYnY$q4jGgC{n9`uWtx4)?%Eg2hT&bd>pXh_@hAV_!tTo8e`h!#})QXU%C z?pkGVXtoG1T7O68BdPAo6(b!4juBW7;uaRe3{$1fA%mgc!9Xv`6ScX>|NJ>CeX=Eo zRtoz;oXhNxIG%?;2ZlVJK+`~=Dd8{&%`%Mbv_9}5$Kp@1gy-o%Ory5KU>|nftxKI` zNx_`Kij*tbuEXw^;ZQMW*nv#s%)t2F>9?yCiMeU{FDFU85V@Y|w4XnkikvrbcI2nk zGCFKov%8t3_%_{lJawvU#0=*7a4L+;j@Ed6q2*3ZcPBbGTdNfJ_$)~~p|Pw;S(BlJ z;WriXrH{*XnX;cis+7bNHB_1!Q?#HMs|;*aUnPgUxOfr_OW4+-&{*k+peg63+;;gu zb&ZEP#LhAeSfboDykg+P&sC^Zb4VJFhSkR99z>B76@EUQu1~_3s-O~D&ZrVZj#c>z zJscrJcJ?^XZLjBv-~&dy#qaH|Lgu`@bsf>>Lxe>dKo{>CHtEo(I!p57oxX%ex?j;; zzE++_X-F#Cc5S{`swj6qSsjMd`}IvLqY)wcV9=#Dk!%FNw}^J)@oL}fOnBbcet$(U zpr05%m!246>}^nKVx5#<04p` zj0NKQG47~c3Cl>!gqaH|uyyB6s>Bkd88n*Ng=FU5pAKhtzxHZMd|eNg12%zdWWA)%25f`zq#A$mm?Fe zHBgXNlQ2O#9S~wkth!YyDZMDS8y)QDTVlXil&G~7wY$Wk>(k=QuKt9^y-GIcGtndt zLbIy_M(ND4;93}f{uNuQ;giyu!N75cwyU9UNxn5^IuU&C%U>sIe>Dgdr&GVZo4ssi ze-ztIo4zlr$>i(ZasI{**#cHlKlMu7lNIn92<6M}6y@rNi zdlUM0fY$dfCpynVUE>soqza;saVoWxHB1_xkGip0PjMyKqqDYmd=1T36FtW|=h#3mkf5j+XW`o1N~5<6MgG z!>n9;gt%t0<+1*5Xu^M7mO|`mWLPCQ`t`->ZAT^Rs$>woi+b0nUof71$M8zp2j|$R zh|q1G2$G5pSjy=^Vg*q#+YhY$2sJkAm!6yA;S8(2<)s4*=6!@Oi2V6Q(YiBK$B(;E zu}Pj7>ki?6OPZF7ogbEYey3rRA>$40EvQhwW@9d(Aa;Ag@PMGr`UaJD-G>ed#0{BS zC>Kpg{d~qW(9h%Cdav$|t=$(u37XXK&JL$`7M{nl-c(d~Hgui1>kNB9e(-o}B$mSi z+jkvp10Uona}bJfxrA{7KKhG{;Yu_aKDR#8MkHdZ1;)n%M}a63iMbs*fW0<01kwGm ztfj=WgjX*!`#uZ(aY8|aNq^cH=fs8qp)1P+0AC_EK%Y*%*9I$%TX_2U0e4!Bu{@dmx<-@=D}()Us`T8o4!v zB>m4(@JpaUog z5Cj&49+=RkhcSt0V&~g>i`60xKJlDtEbHjVL?cB+?gFTQ3Z-dXy%O0DU_(R?#dBDPhQV7_yb0$LuWiIF)=X{sv;nMg&`0Y zDu!{p#N|kGcop}T~Jc+Fq&D;HvocBwa<*AX;ebe7H8GDW9GPnzFKxpS1o97!l?ere2 zxuq}|Ea*$lm~{;?@>5>{Q~7pl(s{6kLX*05#8G7BEniSdg0+p1kHJhCGm`rjiZy4+ zDMCxh$S@!#98BL$aFNMT?oD}Nv9Ytaf5|aykM3;;<%f>^k(}@aW#BQa+_ol5t9QZW z4IF<5HJj*3LmWgAdO*v{c(3U>o!3Jm&b)a|%jXdplbg(|#v19zNBt*cG-0z2gX4Pk zN~%3fkbxQCxUrAh-P3TIdW-tArgYqaFryIC(c9Y0(6v|!&Y0j2#QD@$G_kOtsj!HJXGS1v6pV7}Y@a~-CW^bllJj<~5h&9=mS3KO+;cPgk<@txQZl z(l*k297&xnn*f7siuUA?5RpB2TtO0D>1HD2X;boQy6)h>q4_=r^id!Yr%3%&m0)>0 zJ7Z&y=4b&Pxur8&Yzhd%NTaGpCTE$}Nft=3AOzV?88+VuBXBk6Pid&Sg7y^C=I~`XfiZ2pD_I-BfeM%}T8Kc*1`{ZwLn1 z1~4Mhm(5{II&J-W-92sn;HrSGuC9vH0qyA-Iyi=LhS%k2fE+=anyHpQ+JgZ{5)l>S zAqJc}ffH7QbP*Bsc zU+&i?BD37m(`@k@TZ~DG{5A>LM&RKNRR=JbD5&|860Pt6!;|v7phL)?fNm8B2cz3$ zrk!@#nN0diz_9*@xD}ru!-6{z-s7d_3rBpiN=0TsakC|$5tEZ0$ zCu|HIuLh!-*KWLD+D`1eY3-lw-W86E1ZDE zBbg_4?&s+3=nk9jr1RsSRKKAo_3lCQ+#{FvTI|@H#syQUbnQy;10P{@xfbehb`_xG>v@;5>&HSnZ7`Qgu zwa>AUHAeJyz@zT`>acVt9bKI^b+U+MLlvnc4a)A>sX05YLO)koyuHejZ49;*$=;Or+h!SPiCSh74l4Ny-?$}=lbLO z8t*{;*PmC9@SKpZ3jq8L1l{>ZJGo!a&V2i3`6`{{6=<&QHyj7+QaKBW*x1;}%gd{) z6Qo-Lz&n4{*}<5pTWHuW zWkMf1p1!wGN?)IX-PpWt67Wp2CdJ;G zK_t)<2NICIM7G0!<{cc4*DO$Ic}YI5iD!^S?RFI1_F25FEy0*e(mkbvfKP z>+$7_WY|SYp7D5YQ@I~jOeVT)l!2ms3U>Jy#mue*&LSbPvH(?WH`Wt+JH%kVyEiDx z-`A$aEBIbx&0iJn7iH(c=zZn}PvTiDw`O1;T;A3F)E-*p=O*X;|PNz`&5J5l}oaq7*d^+g(oi8A)xpFetAP}_YP zA`m`^N6Q$>F z#D)fRHXm`kVi}`R#6~vOwyfQEB8-n#US$TFod>ocbo8zSkD@A9HO! z-neKD`6Qg#lwp7l3ZE5MmVMOkVA%2ba=RCqU@p+#HWX8-DN5<-h7*%x} zU}%I~E+p9(LGMc-(%TYsIe)PmoSA?zyj1MqE@J2x54e~VAHc+WIE#oMW?X|D zU6Lz9A9m>N@i}xwsdmg=baR{#S#DOp&rCenbhojd&ombXMmTy0oTAMD*X+&2PMlZr zW$$3irpW}WA`ctMFRuzqn1w-8*S2p(EdwJ6KBujz0=r5O+U!(Jt(y?4?=p52-imAz zZ@tZbmd5x#JtHVQsi`_rLAix_KSd5Mzl&o2T>V#?a#uJ#td65-lz=rkFAZ7AibjV> zah;W)|7?^oJ2_k*^m&*v?bFPmE|Jgn@DPo*sgHh4L0jOez}E?vOhnPZBflyLhvD-pm(^kA^qc&NWP$bF+ZWfeh&gfm?+ggMqOdK}1 z7mluCL$0E`vgL}hoZedEzGL)+eeLS)gZNwqeCkPE;#plhWrfO1c-#aXO{?|U!9hjG zAO*fIwHeHu|9vMRC3BBn_UGiGiOOWk2NlaEj!zSv0RR1q=z0qZx}RN~xBB#}*vq<5 zbOeJ`)vyt!sD)o@t%=8^V%yDhar3o%FVqOwFA_LaC^sIibh{A{GK#*QaDqLRxDQCj z6v;$&>CXgi(1sFy_gIZw`r*nIZ$C`H%D(OUbe{UK%E`fDm|e@PpRjfFUI0xs0V_uS z0OjkLj7b(HLNur>LOnKW1UBJ)zHnS~5gOu=uC(AoQg!mB$hw+px`3QHg1??r=u2B$ zTS^sL+~P~;dCnKrluYaU_ss*w!qGJ3v~hQpj_qRPLz~e-;Q=FXq=8pNN=Us{EBCVy zvjzl7fVRxhQJ5qS766zeg@UhAA~iNhkg#@!j+^rlj?6NF?3SnkG!pQs4+-u zdg@ooBM^6;7=@R~7c^O`y}oOM0QmzAC~K{Ss-@$gdxL>c2*CCHbLK5T$ogXru?V{Y zVLOq~APp!()0W?1&~bpEIF|$zBOnIMzqs4jH=tKPMA6t(`3+x0dyM}`WgRK7XYElC>4NiZAm~*g@OK2i{~2WbBj&j2nsN=K{F)UG z>HF+-8M297=0miSV2-`&Y7J@uq5q*4P{Y2ul;Re76>3Rg?iXAI+hgMCc^?AS9&p4Z z;(AJ4j0p)$>pW6HL@47cQs4Q@rxy9qWwDcU0#1%EgL#n*fL?ZMoMEGR*!U;m!c58-*mSk`hw zeUJUrBMI_IU^AJQT~U}W*+5JC#EhsfGou_1YH8*lEk84k_aGt6c)@0oxa7T;8U9oC zS4+j3z6;1e+G&2aNIlB1H8m%RF87OI7a*vym}>Ik2<&f8JjMr}@T0oZuzqSz3;+(0 zFOioXoKz6GC!O%XA81^}&N!CnvRNzSJsE_0AR=Xn?a{_lL7)DZ@m`;zG^ zqD?Wj@dndxy!};Zt^*0LEX~Q0CRe^659z#oLJ*@wTODtA1ZHZt{lUoT8ONFvVj59U z-y`AzqmHky??_FgijE1$1;PwoD)0isp`^N;+S*$6A|v^$5NYX8?@zO*JU-;meR`|e z@HX>URxYl9f?H5id!A+mkuUQt8HhpaSJP8mj3Qtz08R_^R$QOW+`=NL4}!|D(Y?dF zjda1`iKLk5zVv-JRg;&0i`>0&W4vO#juyE)9ddVY)+wQzMWp5$(a8?|OBW_tbQvrH z(L6rtpoS1W`g(IPGcMXXWsS6;cWcGvP!4=H%UOn3S2%Vb7!|CFa4hpwpB4vJyZ2`3 zm&?G$cx~Q16X2L6eM{s`1dyp-?LWMWP)?uvevG_h^cIfbb)57#ay&mtx~Qo-aWNu%JEy_uI1O@}jMFGT_O5}HkN5&u|h{w*)Y=x~Yg=ku_f9;to$9-@~f z(xVgTtrBV`x8hH4ze~r*%INOki3?f>-3Zv zr(W&j&*HD|k_W?C-($V|d<(rk7KNlLIaDK?kdr2HgUhX2L3a4OaG-BKYB5tqej`k! ztilR+awA};?Sx|E*w=$?ARu=~H9yyGcjK9{Wu$v9ZsW>^#t6mh!o%Yt*Ji#CF)MS4 z-E{*6?7m4W5K(pQycNFYJLm8wNy_Z7Ey0^EQr@#8wAaNm&(EB+XXgZPhKmlkDztD= zDQ>$wGyY^*5igy-nZq5kBABh)%auJCytAiV-fA-#AzJ8RoM z7DAP(CoX0W(Yd`Ut4)<+(BF-jO@*^gCSmj4%w(dxrH|)&{{6D2{KT; z6AIpzdTy^PjWMfU*5iKEs`8u|>qc;H_o2%IOps_}V~lao=`|&~xyrGVqo2b%RY+Gj zzvQ$HbBi4WXqSLxC?|mEBE~VaRNJq)%03aEI@v zf$@tcU=6}!VPaoBeRr?6M^S!4x@|>Wr1FgcK37x`ucE!L88?MsZ@mVVy5<^UScKb6pt>@F@Fs7qsB_yGzL^-$l)#l^+g zSd93{gbiNya^v7Yh4`Ajd3Ef``Lz0MTuR7WKWu;DDlK-IPM#MmSDYxW+O|q{smg1A zi;yO7E|v~dS4nAeLnj>D|9ucKfnZ=@VAh-<%az#5sh2z9`YLH+ zQ}p!o)>c;0F)@Y-U$CKu7e*sTM@MUG7SvG+Pq9+be$1gPhQ}o2lLf2yH8wWx@0TQu z4=_Rv*6!}^R#tSR?SACYJ-m3SJjNzuQ=BlxBF%Xp7{*EQf{>+!0v#kM%nwB$R1XAb z?<2d*^lFjO(H#ur_MU1C$hDJ(cZ?YS+U2X(w@=Yv!|(J$r?>Z3*-*380`0t9z= z=4@X1o%?<3JLlei?ySX{-AzyL>h9{Ur>dR~eXS;siB5_R0)a3U6=XC)AXFL<=)uO5 z2S5!5%cLXlh2o+q{|Zz-M7{|W9$HDMN`XM|XpEb;kAU*i_X=Pa5D2T|{tu>!mNG~pMPs&(#Ibp6IG%?~Vf{`8Go_xxFP_t*E;)a}fZ%7blo3bvgudTDg+n+Y`8 z(HR*pC6e|BM5`<<2Vpgqx|8Tx=PVq_UXwh-qAp&UmqR>p2|bk-{k&8QKKspzuXsr< zka9G*{B3s@RK3uNr-1m3l8#M>T{cA-pE0}_4mh_F*L!(FKt1S5dtJ-zE~D!GJV<8a zSfT*mfe+pi-4_}EDbjfFOmn3^1gbv#mWk`7`@8Y`+?QFt-2XloWqLEKUcEn=o~8|z z7FeiRU#_@2gq50DNn|1JqM^r&=QsPR!Qz6#aw$MRAjvTrm-V6BVdRZ^s`7Sd5%%H? zd_S^IBHyd@SlnrJev$cdi@0!96lmJ|Gy*ENxieE`Gc-S)JUI&AZ@D`c(_+vHn@@vY z9gsm=&Sxda#r)HOMFoM>%txjm&HF;mb~*U z^H_>f_wmV56)ybiHm|C1^*xQ3AW*ue`1Q=Nu$+NhL?`!aO&rm?=^>6xu~%9o-peFO zoc*7S&x2QLw%4r0X+~!$$B4vSreu>z1~xU$Tx3Mi;>R@3SJg6eGu+?(5fG8c_QGCe*)xEZ z&3<{CKGFErcsIA}=yL+Af>t717N7h!8F^v79cx3sLGH7SWe>Joq28mDu?XDNJjp|A zwfsI5Vjh>RjqtnxD;NbKfKQLy4^uEhjnV z#hoBNN;;R1hag3#hw#@0cEGYj#uZqao`)Yksap7Ty@ZY2i-?KjK^|MJ-`a04AQllV zD{y4HCGmv1nBTh}7yiM~Swu`i8DR#egPW!M>4#?<^3IcnvN~n80TQ#v(YdTddVK7a zGO{##saZCG*(JZ}%ej-1N=veZqKuDNOkGaoqdN{Mjwe`dqjbnhE~M4G`MYU8lGOw= z77>-cb}mm-&$2U`BW{eDOh&wyPPJown9?E*9rB*~eUp6rI=vup$umJ^hr~!mxo~na z8ZpgWFKZgYjhC~F@1msPaQ(x6_pIcoD2t4EY~@er5di^6GPW*$Q$x4sBd$#lu^AWT zTO!&;6Q5&ss^+V1Y~+48uiS*^YPWv=Y0KW_4_f3+C?-YL8>fjDnCJ=;cK2fnA?S9u zu3li_yDa^Bvxf`gBYTrvyhU_XpPnd3#R#j1dm9mz36IH7C3l!X-35DpfIL?NpPkWc zzn-W$1=65;G}iC1Yu(0VjhFWOuM6oTd`hy>=jnP&bgKLa$CFQ9qU{iQmsX_>!zK-m z9N$iKE**qv86y9=#Q^8k#ECIIQSDH%Z2b;?QjLfnA?QtRtUv-V97a#dx0Cf&nJ2*> z7c2)^<;kNrdPTP@m77JG?ZowamC?8P>&;|$vstOY-yM|YoOiM2yb$TQ4`D-&4e3P> zimvAiELlf=oOh|>kT|0IAC<@3l(#OwX;tVs+O_m1ymZ)D0-e}-N2=eb7E%Ihyl zpC5UrcS8CNnp&N~R&OKtt%%Bue!tBnkr=9^0Z-2?Mv683Si@hek3?4uoMa6OAhUK^6O znQ~2Hx}BimsEhD7 zCi3wd^I2$(2)X!ek*AWkr{1;?*VH@uzIQ zx9;-T1%ci_&{*u|&ZPW|YvUCNh9I`a*B>uHjc+JAqSb4Buch-szOvtp|4AdxT&Oj@ zQZzj&IXo^xG@o~{agbjg>4+o0zuk|$ERJ3sjcrk}j&O8hO?3{d`lFzz>-eKzK1TV% zk!LH3nRhw^U&E}6s3UG{=#-G zvcDv2K>1d8C4ou=xf7>bHm`mh_IWs??^F3X7S&?aeqP&rw^}A%iq}xSx}M72T{Kp@ zkl$##t<4+@#a&3qBXF0GfOrTa3;o%WRLl+OW8Lhd_%9O114mx?Pyy?C;nkV^kI>Pg zCi2Xk?_7xvJ^j9yX=w3@j%nYH!Jesh&X5g`@o=|3rqX!4SPBZ>0yN&Ho}Y-WcDF3S zviX`4rbAM|tO)o-&<7FRPg|UN*c`sd3e-_}yjkdUe?8r0Eq@nz-E?|b<#=`7+~T#m zF@~MlXfr6JF6#0}f>Ofuysj|Ixw3y>>R?fFOy}7GU*e2o*x^*pE*v|W?MKq9_~F#N zcn*ItwzyFpObjBj{r85UMKK~L69?T!S2z&?zb?8;bhuw)Gmia<_a)lPEc5L=zN!Fm zk`X=Y&S=q3NciRiM^rIWPBLHQVv{H@d=(@3WhS!jw~TNPE;-V^R4%x9g$DZI#L#FZ z5MTU8uuDG{*Ji{Qho(P~t#Kc5Z9UWpg)}?bpSSTrp_W?B9eJ(cju$IQ;z;;@h2Y8| zgaT3THVm~F-Gw-2No8eBdnd{0>J(tKA7$fgWiwY_0s0;IXLj+fw%a=KezY8jrIQx> zd7o|MGz;{Qvr`0mw_#|X2R)u|h8`D;AumNj;OKINjtBsiNWS+C0>^|*)-Fe6`66L} zLLyJ}kl){Qib&j?-%4!zMc>|NO?@1>rE+r=Prqo9zq^H|UvjVvD;z&M{DO8veD>^S zU&QiyngEc(8Nc45cht@H?&YAD&{@ve#aM8r=UR`WyZ^zY$(`7~RTkIg=!_P^b+s7k zHdy>pz3qJT9wEJ7ygRF-h?h`-M-|XW2bG|2smOi(AI66D-x~h{ zE_Q_bNL6&%KXC1ptt|^e00U_Cg5b$ty}bI!`FC-I=_U1FQa&*`8OvhLQM~W#iQ36H zQ=B#4{qv`l^U$|6y18NW5i&x(McX3sKg>Dhgtt#CRsARNJXP=8RDNj-2lLsZUb`I% zXKE4)Fx&&e)(877_fiJZ6mhZ)t_a=rL5)AiFb)xhBbUNW0Gk^n#T7p(6qp@gnI^c1@2T78q(?3S=-wtCic}g ztlIM#i_LWM8>?2oGS(vYi)}MVZ4}TdA1$!eFL#fyzE=TC^K*3HUsDVCV#e83DygwJiF znyovT7-;oJiV+)gd-=LCEplqAbV_ds!|bMK-QeA?29{Zi%tH2KH&39|hxf9HY=-XV z^B!Y!fpH-T)p}SjssSlJh}zoQpYo;BcYo6SX|9LZ{3JRE9 ziaNTNhoEF*!xoiS2zR3Md?l0`sEG*wdN%SO)hNmokNj(aUI@md5gRuiQ6XOr-v3Y% zXA%bP=zu{@&Y#l*WuW55Kj(f4LFVZH72N-e^>eifRSN%B8LYq6^FNC9-}LN%F5-%L zpFICp-F+7C#QuF=hcRROo_lAD*;_274#-}TvuC`b|| zS=`TCQBl#$OK5OCyQYQ^7*Yf(k(p{L@8%~A_G~ZEhfjxFr4><;kviJiKYeQfN2c{+ z8i3VqQ^xWb1e+3@d+IsizKE!U3 z2>oXqBQaA^Kk4pg^WjTUioD|Gn2>~VkEox|K$4$EWM!|e0A-ot~{{x$`yUHvAF$#;U~ zoen4Xg2}VoO&d#L^v&_UG@HiUPs6Q#NC(%sl6qb=$WyyrhO2$>K zS^EWaILm4Og zHKtt~I_#1&88@U5wm;~JPY+Gza-A}s(6raqhoqMkS=89GfLgJM=AQ@1H!H7I7!FkY z!nC#d5)#e2o9t-ha%~!bVV+A=8e+#;IIG12fb}F{%1-G|6wW8TnuP&>eqxo?GUrJ& zkIYhTr}2~;9c#H5+7HUqDV=rd+F&1Q6Fp`2ns(QGeEvvFH-}v{{FttGQ5L;D8TuxXdn`$-Z}WdQ?uw%j=!$^RU=fT&;=35$FQZB( zpNG0@nYsN9b+h<8O6k-`6qB|)DW7XZ?acbOW~L|06AHfijOxFhAWj?R=L|yHdkkzQ zKY7iY+vaDRXr|p}$~wy!|D1a3U2I#DXGoooUW+B&!FyK1;WsPa<6V{D5W`H*qmxB?hT99RYs78ZM8R+1Xdvy_2+m zRDb7|i;Jpc`#3(QPVYrY)?(Q0ae7QfOa}H!?oV1pbs{mH&E&S+fX-65toi>$=>kh) zV_v?|L|&=Z3MxljZ+2V#OrY@x{!%h%>kW5J{5g z0yLW5xwFNQMR4k%Uo`XBj(g>K#74z;47HC0#+y~p9FY&HK02dBl3Sv6YF45dD~FS@ zCQ}c@_+UDyY{=QYWS$SkXq-czysh>BwpLMiRNW=}_Tl4F>#{)CB>|z zh6}o57B{BLfHgZkb-H_|2IaJh2d1j|{h_D^biO~w&T7j{>UvE2F#C(HeeYAyM;xii zt{U4JS;NN$H|-S?Jj;5E1EIEO5BSEd^+_s>>y)Ux72R3ki2Ba&KlBwL6|HgPwtL2k zmm8{325VUR@F&fEyyFCS-PvCy=!ai4poGlxxme?p{m5F8wSn7g)QCFkKn7=BV&eUr zv9X5OSO)vm(NVz4|KdHg^`@s6BNgL?*}`)3V`H~YF)l?kZ#1%E^qUc*XWV|qbDjj& z_tGmbUA0fJ8CenX4;{7aMhUshyMb0XjuQHj zYZ94FNo#7Zq56tGs~`jk#tYX_ndQ%94%sOAAJKW&d@`!M$_kQPdj9-*hzw0V zRGJC70P}0a{z(p!M39Sm;&2gx2nqq)J1IY+;=o}1{;H_l(L@0N0$y;l?kEh7rZ1Kt z5c)uCtK{A=W|sfers9P296zynKg}Czw_Y{V|=S~fJpcP#1^UI{$iT+&?{~DO~ z(Bq+E26gtv4H05{oW|zcBec6dx0WhY*ZQ*_IWhOcmI~+T($jMaF89yEyMyaWE?>zA zf}4HL#rLB8lrHV2>v2PHC`l7_CV$3zjwWruig4MxaXDg&;>0yFF_=>#lkMZg$UrKR z7MPIco7JWHUxkkT11E#3N79L&gMQ~DFQ?|}X2oK-l)teeHW9W1ytKog&}6XMETpcP z2O{Kj=@lXR+cj*~Ro4hxB5N}LQ`O7KG6RPz;qR-wBsB^Zuw|OvBaAU$>J`2Ho2@+L zJC1&%q)Hmvk!}+{?BFrhStSEC2e^W(;AG}kg05QWX~Zy$m63?Ya^MY8Q`^GAm$U>x z_4AEaw#=t>$Jd6xYWRF3SWJp0Iy>v!moU=w@t2=`Y}#E64`I}Wk6y>fAv9~)KwOI z20tZ1FJe`yS^bBnZ$(cRy!nQgP6ae5=7?3mK@Gfy=~l~%*mKn;`AsJsaBA@@GuH2S zg=KOXGc}9KWBo>a6s&jc}Hsyngzny+>tka;QqI-VST_JU9#8o&dLNA_;L)zyZDN zAK%~5M^`Q)S7U?>J$P1iWmwXwkB{+1mz}NPM`|r!7jIs)hECmyZ2-6TvR7g_#~w3V zMQkW-+T{6msKMswcUCF&Vp}`@q(>i2Wiv?LJ~ebio)nM1vcIK97v%TTV(_~X%tK8^ucJIupYhe{xg4W!>xDK2=>kIJA_k)!&4te z5`SkL>D@EFC2fo=5CSEC`N}h9^UFfQ^H8j^K`r0@YH~b?Lu<=SAZ5xh^-X*@rz$6J zhOb5G+3)t^(M~ynyfp%^0WT!RsOzSEi|-Bt?RK4KU|S-96_|q`mHnuda37nTb>!+G zyEofoK2DXJhQtyL?|1Fp>TZuZshXNz+jS({V+b15I&@;2AcA$`EGf=)YJCzEd2Cf? z@n@WH4Et`5_%%-Bo#&b)946IuN&(88y)kVMht+;#5m`6N&H&h*(dKM|a$miDcTXhg@;FTg2 z*ZZl<)fmmf`-BYJ1X-ra^hhZRqr}tHxI1srb1AA5$?!Mq7#m)G<$Pfw7TL+%a@*EF z1zn3GMvO2DOotsMEV%njP#nID$R$71nfzOP5r)EV1&y%VN~)W)x+#e>5?qt^huyiQ zE!T}L$M|MkJI~N%T(4eAsKrSwEyZ6tCx)V_Uv-FQb{pU0)-FeuDA%roE|J!!#XIf& z`bE_HGyKTq#ZDy2SIA*N|J`jcGH&nE9XY&um7g0iPjq+9!5?m81{mvjeh%cPLz2>6 z3*y9t!N$8vD00ggY}z18Fd}dNIn@0P zDNwe+9)tPZrAzA8A2M~3Mt!hW;Ygoq5q6=B>!35tzU(#LLJEB4BnHZ|+*S3KKkz

ULTcA3BIQ5q5v&D_i>1oOO>)sEJYQkYA%k&=K_WJ7`n0Yj!tc{O?pvqT^ z0RCSH-`*0&B0UwmJ)t+V#iG24G;+PP?4$YGpUB>vLC9nUXpsAVmf%gVokX7wmz~yV zd4@aj?7lD7hb$75P*%g*oxR5WLLtzHCIvb?$jvfwG?j$fF^Ce6rLYEaL007B`5{|2 zZv@ElRhFyWF`JwLSVj6iLI|STsKsrK9&FhdwM_C0TLZPr-D(frCkrJ};vf%yK;%Q$ zg=;}yJOIc3jqgt}T1jun#gt!ri~mPF(9wsh;&j!L;^O+fhHYys&|J|Q6?Z&twMr0(CCrL6-1DZnT2(f=F+ z`ETjZgCH!R-`L(iZ2@TV^74Q6JCMv}21sIIVZob)>gx!^9k7Ya;82d{6HOru&}+fR zj~~;-DBK4otipr97x$83`6I6vA?`C4yr`hp3PWP&b2&NGXBvUCmw1bjo+K%gU2bMrs#7##T|0GK-NW2yLa=S@U4DC~Sfn~DnRseorct3Ws( zjhduB)!rZNjjJ#cQ*l8@D6OkAd^*U-}vV9RaN#wNbZ;N z!X+5IHK;l(oKQmI)dFn?0AyAPHv4Adzb~lh#ewN|l4p%ASItfQ;jzK|9#TPIRys`} zf`JA49U;tf^v531jfrN()Rn3_F~u?Q>3$5QTfhAlJIamGdEj{=V6@KzxXKW@vp~eI5sGf2IDE4`hAo8b9P246VG~ml8pVr-k(;!98|80 z@jb1K%)HDpa_?iZ>(ZBj#29)XnJ|9>7n&%IW5=t1O@B#YyVV0LNJ&d_?t_SB+hE@$ z+_dTkutLp@hmSWYovo6ZPIHBu59QTP(G^R7F>5A}=i@8oiGoh&*He%Sm~D zQWlF&h+hR`Ffr?->CQWsM`u^hOZm4s1m4VWpJ88fR9zi2xda!0E08Na?jdmbY0Y?v z-7`ytF?ME-Rr~^r8+*AJ{=~V9p2@V9CY3^t#$(IfkKL>836oPvVdL;o4*yf<-PN2E z+rjVY&-$sLKIeOWa}?L{M>7YsWPuywT57qyzvG7t^`+w?gnkytnnp_f z>sGN!VG(|#lU5}c32om?d1rk0>MGXeu05ynmRWx_voU<^Ip6h)y`~v&-nw$%)qaWP zQlo>qj>Wr)&uMky%(@v%hs!fm%?I)=4M1MP|Fo0}e&d3$fpy5=QXK%_fbLrpZId42x&^H`uHWhp`fK69;F`TIw^qJ_m*9}i$1TY;rsKGOUIyqWRSXN{x9j2%hwnN?= z9F;|nPUBHU;ozGUtm>q~eT=sDYqRF*_nX%(+(BIzN~bxva(Q{}rSxHOX5kLP0&BcZr3lXMY61(@&k{x(JJ_AF zUH^Uzs(J5AWKdAcS`2}H0#VaVN77zdkry#IX{GAs(?J1;-)2ALj{8(ZII(?{DHy*m zscHjF9&60J96+wCty+rM7?I1|eZQ&^K&EU|Q+%-ddxJNl?kHM$iQ!d^6s6{2I-h-i zr{+C$HIloBu8A{1E;xHAA|!v*V%y*IG618cUUBHi)xW#x^h`aA`ELNr*~mZ_j8@an z!3&8v>Qnb)7=F77OfGWnD%34%&E}WlW+huNR#~a%GLi0tZN=>x1IdG@rX%APWuaFp zHnN0^2vzlGCREqX69MXWrn42Hj52>XF*Md=&;5=K>V1gBt?9y_S^E2-Ox^A<&s-#P`}_X-r^(YF3_rIFv_sr@;?9kI`pu@0 z4&iub_E&||ny9wsuL@V6IBW)m%WA)Soxr`VKwb%wQ5V_eO&v(^6)0^?$#9XAtOjCd zlM{5b%($9QS-VDqzsvYXt;3j!;e?>{CjbiWjUNT@&+ke!V*l-@V$wFN7JtLyF%HK# zKOZF&lS>L+rtbyYa}ss_ru|6>{hVrtQ;tQS{mvjAZ1$$0^33!yMm5zxT%Xe4rZt`> zEaW7C_rd1{X(p7v=ol_vCcct!r5T-hbhJEMGrNlAy~Ds0M=wz{Y@iisPTad7U+2(# zyIefi$?7?CWzEqEUN-w&xY2SyeGXm}Jw2BF6~l$`v4`GTmRj%~ojT+ZykwSR67@x! zQCOj9m{ZkeDB5NZyedcl%P+X{a`s||_MNyTIpj0dvOID5#O%{zL$)JQ-Kh~YlEjrv zlMMh;M$ie4(iecS$+(PV{acPK}izwpJb*s5@7n3Q8^Wn0r{GkFi z{(74+hGtW8D)Pxt#cMNcVYc%5mlO;ake4m8cRq_Yu~zamwp9GXr|U zd>d?W>ho7ei_;Gle}kt_SU9Ycbi%CSdsRC)SZZ8hE!+O?aHc!`iM;((%G<|~ROqWm zsn@b<7M@KqXWb`tqZ63Qz56=QmTkW6Z8`I=+ZVfeIv&1j4bZXhF=CbZ1(m}Uz;V;I zJL>H=;T$5!Yqx7GhaQkcyZ6k0+ceCom%eT@KytnQylQUbPyKdeV)1r<@iG+t+`aVy zZu_}q0{i^j{M-cH0=VKn+Bi|((kwnovJxknJBrri*+U;9A9j+On28Hw;NKb+v_QCS zruzKI63MUs;kZ}qy;GW$&hGnGvD?8P{5u7~#i*Hdv#eYf{%CY{eO1VKeQwlkFUwE@ zKE%aTRa_0ZdH+=BFqZ1w`ORl`2cyl=*_NF7oT;qxZ^(xq1^qOmC{y-t#OlR1Z zu)hoTY}L^Rja(rM2J_E4$0I(Esp4wP(KHtq;D7e8oZfd{n<SX4`OVSVeo?eee60 z9s!&{_wY1XMkDt1Y6k$f5)JKmz57kcU^=qEdDa4tu2I z#M;jM9{bU@N-4#wsFE7Wba(u!{?97HHh}GEV4N*u-AxuRJu7KiB0i z2+z0z+HoW0e0+Six18-I%F4oG+;Y)L^Q=lvPEJYr@|LpEu<0Zr0S%om zN)eXq9&o16rppl>LCb(OlTiiNY9+&{%Je%#;DYrS|*N-FGm@S@Qo|F2-A-<2zo*<|1m_u!vmZgx9N29}R-3AAiaTAx6XB)X~7s4<>s2`Sb+NC>23)1fMRJ!5RY^x@5s-)IU%8J}_t^69PW2SQK8g{u= z3kqa0W3f&iw(O+MHql~`3gHG~x_Z#xzzKF!s2b_#ybS(L$Khz3GmPu!Sh z`_>!(m@$9tA?UgK2ov!@VJ~QckKfiFKJXi?s3t_!sI0JvwBWLfA0OqkFLKEcj;wR6vcBPFXzkjI{zTfKL zlr^{Za&1+q;$tRLU+8(ce_6>KDXGxgm`E-x%Lwh6aqYyB_^2dD*q310&E)VToyia+ zMag;vLu|7o=-|)D`=6>e2jQU7!X)cl16(g-UD(SK2aT_Y=I{q*)6wk(x- z*EOzSHLx0_L%FvRfE4}dlq(M5JQ`foe9onGk!++8sT0qbM)TL!>yZ!Jo?Q>|d zKS$ceW(jyh{QZ4O;mgYriRQ*EhHx^m1s0pp2Cmrq+D9+0&e}q8ESVO`!-#W$itHCM zNafyV|K{U|Z#)8_v zhZYF5Ccjq1-sN46Q+(A;sC--r*6)<2&$}ybTJ*+n4x$BSDC}ppp%P{&nd1RA``DyoZeE6N zhXExDTcMCgZ)WiIyV5^X+8gcnipKJI7>I_B)_+~&w;5?2KMVaN5#8h%PH2=*bHDZj<}Cln4Op3t;tC!C%HTw@$y2q$ic1e zv>mpCSy4>%(*l7bdiIas`PUA?z5AGN#f^`A;xBuxy5yDOSHGp~d7ix1aoD*Uw-{bp zVvfYEw0E7ucIfW(e>m@vM_&{YGnlYeQmXj*{k!*tc9r~$(GAMEee|fdV&W^T#M^8A zFa5Ui5JFW0{ubRhm@5CSKh4!-7WSAq=wg?ph5Xw_>#2=0rZI|ge<^u`-RangkPZnO zJsPU()@g>0;h5P=F(R&TT(X)%%`UL$-CK`?on__KpYKsys*2FRg_|1fq58pc8wwU- znyRy;ZrCYRH*do!%YN0J3*61HSsMn%AGv*nf0o*o~PY13099m zAAZUpIZ59n%jyk0$50@b^F|LmorlG5$KIVtiz0E5RbO5iF?q&M=<6A0+yZ!4IAcn}L&Vf1iIhcZz-ZIrx01{wb+WaOp^Rj&m`(L zKgy!OfuZ0k&JtXA`}_F2xm#?YGzAaOvfcemeFhar-$clN{O9<}3CV=6X{SDWf`NPU z7>&eiO1X|+-CsVVTleW%$AtGmdRmEsbQ`i#DR$E(GIe?%xWlqQf6vAZwsFw72>gSx^ zZ$lc(hvLg0i$ouRVK8#WYs=9HeE;!;-)&xCu?Xim?7Qgjta)qa(D@(uS}ifO{V*#+ zRmJqVo9ykNDzTS!BU~EBDK3vgqpu3*`}blg^foxm=|yzQ#)vqqe^wuL$##+LbOfB3 zG@8*sOrQn*LZ~1~ahbm;sE-TSDSstB41seW{$A6yfBR%ucWe3R^xbEPjvQPfcZ!j# zL1H)0C*zO=VN#iKD`kLK;bpTq%I6(JFP6G5e5_pU*V8L&Jf~l@&3qy-`a|Td7%c>Q zWRnA?QvvCLlvdh5v8Xw!af_N*StVmBGl8VozA@1iV$`D+&~Tu}0FV1^0Gs|oL(gQ< zU0*ja%(nm@c^TZ8ga2?f z{))Hv&_<6>to}mQ)z&UY?-J16&Gql=6Pbx~DPKUdSfG_Q0evl{axU(ngT9~!f`b%%2|pki!$-0}LK2fC9$@X^8|GrW;5hxKCgI+& ze0Fw9J4>>4u1EexuR50X?l`%VVOfVRxWYD-Ej82Mg1>U3eLkjbYEV) z93cR{fSzFeOFbU(IHURx!MH|jf8-xFq=A+b(LbQ(LoJft>~7 zQl_OZ;1B69+uTE421WbvN$j$`?2Emg-0Vk*?ufChs{(}CCnni%6a5ns(#y@e_;i}T zKX%Tc*lemPDDjb~^4b)N*UcvP_*7&Gce-A2}2Oq+Br&CGG#>|0|G9>edFuUzSxPLDL3le0&NMJb($ zs!&B^cGpZtKB)#}TR$YUJXCg3o&CUlr$M|94}6}h(8Cp^|4EJ&*h6Uz)pv>S_%zr% z3*CIbOQpDxRN!c$YbSS*I1~Ds7^iRzN_=B2@&D>?r`ww&UR)ZtL)Iy70ge=2B+z=7 zP-*#+M*d|&-|?31>mgM+j(?xw7hHy6y2_6Tl-hd^d+m4c8r2im3G2oUgGL`cs7oHH;W!`vc^#~f@Mw31 z>X`JX+a^NVZ>Q93hm5}1&HuenX@dX6`os}s;1)nFRgkTm&hJj1w1vrmmCEL+2(~T? zbraG`^@#ZsYxaZVrGFo{lFUVAzpN<<=o+d~hB?3=M(@Z-rt3(q4R9m9r=zIPM@kmX zl8GRST*M&BHjIOL*3(Z#B{qgD`zY}t6DP`V@5A3pRK&#&o9aFkZmkc9RHHNW$MfAz zzrD|H3JZIi#b05h#k9goIh!wfFq-rxf-xMa9zEvSDo2H1G*NG-&3s1?zRU{MAet?$ zR6&SsRU^Wuz1h^CMaHBzcwTWb&@X5U%zW{e_(G0lgiaJ7^cVsw;ia#eC&73MW=qvP zXEtmVzj?Is*7I9*A#a)QBzdY5{o-(HOS!v-83;N|2zns_&{3Ql|w6xbn3$Nx-^)&u!~v&c0a`g%t4ePrPovxacafI&7-& zH}9;`R126PhoVp++m&?vpcUIAU~4gEb1I95_n(qPcu&OtxOh#(VU{+4f%U&y~IHGrTf0KH#q(AI~c0;$&I=ag(IVj7U7)YEso%A%*0&xq+vDfgXbDQ7~y z%0;8d37cimZWY8p>Urog=SDcpLZ!y*f}O?Bt|s+nnk1F7|E5}ts|ulf4<1= zFRiMrp@tq+TICp@Jjx{Uu^Y_B2EL8T!o)a=$JE4rG<$K~zH=wStqs zh#hhK(X6<-`9^?2CN^O={>u+DiQwti56`Qg%$ojUr}v<-WbMpyF?gUa{vpL(UJ~)O zq6Qm#%dsOoIM8{n#3Pi;pWY;?+e{k7NZJOFGvgrgGU~BPN~zVZho8Q`J|5Vb(DM7P zGoPD~l*n#OyKu1PT|JN`Hqp6Cw)_klC~L;Pvjsa%<9Km+P}riBRfRWV)^d7iNT~BQ z-`lUiZLZhJtu_)592B3?+QGZBTAu!`M~*ExdRij`TtHk1)rs1ta5Ji8chFuGeYkm! zik#bQ4c*tkk)1DLtEN!x)}j$J!Bm|rQ{1kFD$9WjoL(J4)L!#UcU`}^iLdbV&*O*q zvP}BguN<>z27C=Gp*R{-$fx1&rUnpFPS}5F5YN>C<1o>vD}0x0Ow$ET`MHVz65%3Z zrJ@!6G{D}=XI0V!fq0fqj~7bj@crXo^h4TcQBA$1ZMSbVHGIN_kt5_09C!LGgZe~~ zjF->16iND>+jF0(-BPlS{XiZK*|mHCE(X1z9YF=MTyznoKemX@8T)TYnW@ZFSgZ8d zqmQ)XNUF31g=soB188$YR;QKd=2)}zn35|0vOxqMGcvM!KvZ@(S#Vj3_sMfeGR#b)MElK26j-GcH_ekN zfG*KrpCE6tkkWDWoE@LOt$gDAl)qzc5Vy8>Yt$6AHdY)S-ZVeRi_NJaRGSwsQvl@} zo#1_1M+bWCnM;i9)J`3EgpHxE@_LN_H%A0;<2y4XKDEI*N{}v!4sDac0{NG9d{Vuk zD?@5sI`WRW-`pLTZ`|AY?O}ru8n@Ce2Q{zOqcVA|%=Zh2aS>3N^?^y9RxeE2R;a@Uy z8tWJRU4(z~Pt%zZ;|~6eWHr2N_DZuEP!aWA$-)XtiI-&@S;eI<*a-eM zY1&|#mY+gVLjh!se5M+)xFMmO)KykjdZTqqRO`CXo?1>xl=C%oQ;2oKqP){668fn>ZfQX0++ph2B(gY9eD{ zI2U>Ah6C!MYQUVe+od^Z0>JT{XE2zi;a&cL0@S1n|Is0ANcf`>FK;xF!}!=@o7HB2q?$s?tAugHH~% zR*1WQ!eRWI67~PW>i$1-zP}{I40#`-eccj~XQapYNTB%>5B{{t3G^G_R!KVjM8zB0 zZpfG~5X&o&6Lz#O-dcltj9tl#Zw_Z}k0Og*>t1z**Boh|zh0rMIe4x25VV2{{0{dG zmoDEUIu#EcC~1>Wsvmg6tmcXSx{ z;9Be@I1V}TDy}8mT-{{hb1qa-_I8lcZrxPqmDThRq!q7mEHo(T&;>4(Nhd#geIOSb zkV=a3?RhpFoYzK__E!?eMnO@|@|LZUbQPou?Jt|OZD~WqQ{(c;ja~?nHYOMK+EKSl zgPkZfpZ&!#vEcZTDYfNjGc|cIUhVbgF;=w=fnV5@La=UXL8b9(Ei5WH&{&lzM}yf- zc7k4viAA-7eaHo4$fxzq;!>_nM< z2~kSg*yR2sYVt}iT3&@Z*h-KxxaUGDg0L*ULz*UAk?jYcG!O*4RWwKybw&kTbn}y5 zm#t9N)KCt#Qy2)_+x&!1=&{jOm>tV$A+{JmF)jlCa0?bG9}&!UJ9Ne604Q>Ru05)N zRd!Je_brz(=;EkabQvXN;r%&yMrFh${gjC5ov|u+4~~W$5MPeS62%(^>!^*S{I&%X z+4ROx3mI9E9ris9hezbRtcZD;C1Ug}n8c9K&JE=SPD~1q6#}?Vz?+mdW#Y5jNeuB_ z&+x#a5SCE{eW}-HmD37@5z~Pl@gH7Nq2{Ihaw;?-Q6(h?vn0qknZk2W8(X+_3gdaI^X{Gb*^&` zf5C)n&hd=-Ove4Ye{sL+@)OauwkA26H<(>wGvsK`(fV)Y;<=nh?O$+>0^ml1-Ry>7g*f|KRtsju)6g}jq+<- zvs*}M>&_OsXsi8N+!+Yqz7e;2u0iBQV;Djkz39(mtJ8CHvvq3mm--o5YZ%W}3Pp`t4kAuO$Yyaw(%XEK)Q!em zAG*K|tu=Hp%uB4StTgJ6CJzi%4QNAUNe50O)R+fwI2szGz{{~$J$D@-N~c`$_LM$% zbaWJ0Hrj|>V-eh_TdPhcjVK<&A$@bOM}&hz6X!a9?pq=(B2s@4mMlf8FURE&E(w2Z zE&CwD6r=UCtLUp`=4a20a8| zm45f+S32@w=ck;P9Oe0nOk@U$ZkBo+#@_4*sVGB}s-sp2yleHa*l0OSQV&PNDGNCm zZsBPwsqt7#8LEpXL%bD+)Ti7Mikn!a?hzKfTk;1!vgSXb}) zNZkk)8;*y0FV5r*+>rJssAwgHZdIL;8q$kH-K9`q|S0 z!u-Whr-eOOyKs^RW+KE}r%SUUB742)BSJ zU%B|K-1Ym8OW5m07dwnJHX7X}^cK>kwctrmJe(V51`nnO(kdTE*fO^W1RSak)%!Xy}_? z8^bDbiWSa~%SkTeAd1m#VqGz=9A^lxunu38fY9rng(p0bCSA*4SE@S{RB3!&8?eI- z#2o34nZmnLQ?vN1u=)8s{Q|3_nj+t1cdU56Na!%2pEn<_0F}fdzL{UhH{)W8b{56^|AU^$qbss{l~x8(G~-Z(N^}w3F#4 zCk;wh!-(`~A=j=vfhc~o;qji3-UGYjKaNz$R`bJ-ca$@BoEgx;T}u?_ZKsm#D$qeF zvrfyI*jSV5meUr1pvJ5#O$>%9b|$)AmSyB*ta_4ZjvRf~a0RF4yRMfXwQvJVc&LhZ zHiny|!>yGZFFqb|uGmCPX>th-nyFl%XbjTPqUyTJvUzkHvi_ldB;OX^wKpVdoYPK* zfW?Nup5O=Ag&~Sm?IU)PYy5YG31Z!>IZvmI14LgoSaS0x#n-}3_z=1TrXzXM-$-Mx zW^h%y`7+!{H;;A;PB|5;moJ z^LaQ|&lf6a9FjSOIH`WduP#tvV=VqIjvKA95KXID+3OOY^h$Mz^B-beblxGaUfi)m zI_DH|CUlT{oYH_Hl2it zGTQAIgMI3V?TFUU#Uj@}rT=o==7&!tJUa9`S~A?3kx{C=#zdl)?WBC0;>x(9vbvMf zNWT-iujv{(bDK2JmP_V+t3#ku#agZVgEmgh9CuT=t0l4LlZC|N;_FU_gv+HG1F;MV z8$E*nN0(&EE9RIcOO<=^hd1+E9>h#}YHNwJjyQhz)Mr0wK2C7rgLlGqZab{dSDduCdy6Q0=b$nsRr%q5v~3t4bN zacFw;*tS~bRn5=viK@qIyBylDI}8#owWpZMrOCUBncBE`USaabhz7Z+G{zl9HBKP& z>s~cc-#o1mA$mUgMsp=6U~95tr~6lX?yLZ4T#T~dKhb?pq7;Y0{W%xyKA!!!imv}T zvcwM69?dgGTqdHg>5d$u%M{HtCq1b+b7wu~*e2f+Ov(?ZzZ6!JyRWrN!7nh?AfFaa zT@&G63N5%o1mk^+olQBTpW1zNtgc!3;XF1n%e}_*WD|cKW7WC0Gd=ArpXJ~-t%SeQ ze443Ex_zG7I>(!MCT~%TASz)K17V8MV_H|*E{`hHlAC1F{^Y(k#jQs8RW1fMvC@di zWtf_a$ZH;5oKd=^!0wU8xectI<#W(Ld$-^(lqYD3^F7}e?@g4w-Fd4ph;>+Tpp%nh z(??~Ox9+0R_E+29$7g1gzB*m>7b2Q6U9FtAHb2LrZ1!4Wtja&6p6)X}b=9{M+q}CF zRo~)<-V0_H@imsYG0m~qn;Xh0ezBv4nrPG0(SS>3C+u(I6-uQZ7yHN5o&H1VZ1Eoh z{0EXqDW+}XOg^1Hkp6AL>|u+Hv=-afeijG&q;fTo8`$%2oC()lq#)886YJJB&IKTYF*!h4ELr(y5wfVpnb<9)ox=Pz5d-*`T>RieO=#bQu(Gq~gMG5+K*=brz3;7Nc0 zN0yCY0-!Budx-yQ@f5KlIALK80ymJ0!sVY1zJq)DKB%=z_r_}I@fpn?zk$B~+V4j9 z%aiRCd$^~dGodOaC8eq=cF62{F_bXtdV6g<=Nz#DZvl)V2^O6c31`2^^k)%Gup08z z@u067%)SOHGh42tW9$PChiFvI^=Lp4WbvT(09{pX`D`?&y#+r%LJyTf1c5hSXXnTB z;*o0GT|zuO%dLt5-Fwr|)!k(gaCGA`U55(Jj6wSZ#zDZtF`Jq!m5!;#FzTW9d{+nh zlZ2}!G6R9H%*a0llHMuEx@lm!3>E1Au7rQ@0RFW0bXMy$AIJWngKTVb{3xEwQDI?i zZH;5MhJ-Ow;k<;Dss!T3gp}Lp`2dg^@3ZT#y6UfDO#yfVS~=INMIzwMsk7dc>%0et zkn$6c8n7dgXKT!(<-oby*WVM*b(!o-djaC~`m`B3*iAc=60PChzt1!{mupAC0?!!x zG}E_d8tCfMMPqDkz>RTzGIe61JrDPk+E6`;sszy&sAXQpr3eO|93NlLqq%|%4RUpl zQT1oKqD(2yXq^2l!i+bCEj#l?5N18dC{6=QRfsIuj_qeT{&*~eoOVCCw69(w_8$n`SfST`o(fkJPV9dplQBqb1n_j!U#w540waIp1GTuj&fAUJoVQG`1O# zU7W``mSiO`l?BBqrzEI|wOr|5=g(nh#N*t!>|j*yWC$!quC-J;nW4(ksINPkL=V*7 zTx?R*GB-Qug>x@ycZO07Wr$}u`FwgEY#AA*b=kwgq`)-(^0}hBET(xR=D~UN$lZF2 z16vt88G1jJA^W3*3?(=%>ha9job4IGGgQ=ArKcf3x98r!S-FH9k@Je1KjnK#u>#S~ z0vdwf8Be*ykI;CoDa7SI$}ncckJLdYO)`eb4r+8pG{YlIlxBj|I;B)hukmv-hI<@& zw*)SkjiWDGVvNqEj7fCmTo?K_6ArmI$HTnh5?$r;KN~{|O}XtiF013G9IN}INduu3vF6Y^FC5EQUaERtR?^Ld)Pvdi(Od7=6 zuSDs^nj`io)E^WvxTSAJxuE2JW+5j1qUc&L#tRypi zmCR z$;o|6e@v3_h3vfgL#kqZc5UYrT@|IEut>UMuFioDGO{atsax zrn{{Hh(_<-ON)q*Rd+QF3N*-}AX@L-%EQGoEk632R&pmJJjY{&Hrv&>a^);8$6K!a z7ejq$l8BnQem{z|pY-fls>j+Yl9aO z;qHCsp760ZnV^-OuJVw-K7F?Zr&KKqv#@BWD9c)oBBxA3KBCIdCiEA_wcmbOUc6Us z7blB?*{eP7(N85NKd6qKqz{XY0y%l9sb@0$p@&-Tdh2?Vs>M^QZ;%7Lm8)uBrG@w5 zB=lbRR6O-{Zq(lQDb_<6+%fF>AUWYvlpv!?$u(hw2f7iZ*O#Y69lv7C>N-q|4D6{C zy)b}GNYku-h49NX9ysyM&G0a;zI0KLapQ8}LTf)HHCmJ<`(!tICP_3wr+ek&^bmUw zr!CkkC%lsdA>V@7oXy^;PFKIL^F<`WFcB<^mx;%D!DIhAerPhkk~Su9s`uNV(d2Hq zUx@oLi9ma-$}i(>{jI5($JvL+dR$#Q1m`stsE5G_ZG5iA%VV=n&SBY?(<>`0vw^iXK|tErYX zSzKt(C3*;{X!3II+M*T1W*~zxav9=sS$Q$%w0?m>Qe(P&C<^l@gp*pxz1aN9xPHoF zhAb_}ImcKo?Ggcg4wlKH{+#6nvZi0v{Eo_RC{-S((H@(#lYPnV{&14+pB9T`m_amVx8b1Uukrbk*o%wN)PANROOd1oDEx{m0K840FHD$e?Fi#1PI zO;6^>X}McWPoa8E!Fx zveb5Vqt}O?KgOol{@qf?4uXxVQ)ubDi^;^-)n{E-cJ=glfvbfpaHhHUvN*4%NO+2Z zN5gsknlos|wsWJHcCS$0vyMTeoBT{+de(8LeicG*I~rC#?DIH853yC8P-x}(h)#B1 zzGyjAQqS6wHWdxNU=^ZBbL;W2PD^)~w!&idnxQb8GDhzy_3yg)`i7UQ3YB@+Mc>fc zx(J%&dN!pvv|6Jacg95Kl}xOz1=iOwYFWd1Hk*nGhtR%{lbs~vXH%{)tW@QgJZy=% zPVH2%skOlpnJA-eJ26@vPmDb&8=AMt{tR}5X&fW7(eo99NRkNF}~1G$S1J6N~Dmp;{u& zTrb;dth5-LhpyFDz&YqE)~qG_>Z>+xFqT%)cI8s}ocJO-YDWD=kz3};7J|`aa~g8= zls|W97vJWvUaUW#A7S%CZL%O!|KwkAtbFcU)AqGqWnSsVVcVCkPGP$gjexzxc2_le zfBWjNFM-Jby=P4!{~GkdXwSeCOw!>RYw)`Fq&8+h)m@fOva*Ttf+QkUxVyddQv&%0 z4~g3AXA^?J|J{ZgO+kH)(Z{GLWpJWEwE9omutE69mpufN}{uZc_fs^S%KJMBdMLg&etbQn|!CZ!ObCVbv#I$zz4|k1C zPi$bj!Tb#O_RNfg$Z4;!`$?SZ&AAsULGtqThZuxUDgC&{pOQP=nGg{2Qd70R^qGko0y@Q=|=Pl>k!sm9*Tzc|0%0c9;<$(BW-SOeu#=cUT#JN zD)I(XUr2-sth$#o10|{;k+T&z<%`6^gYP%7@08CvY^H{Yv0rW#Q*8*d> z8#O0lvsl`jZ)PI;DUHxaiwDQRuya@X0*-_n2oV0ZeEfSx13-^|upv%Ky!1GK>?3s> zPhaw1m~m(acf2;@NJ&WnuYkj-3(P0EP^jOE3Amaqq_Rd_kZ(gqJgO%Cj|@7Anv0Db zEiEmW%O_u5h553)s!FjJ(MVn0?RwL$@qG-!7il+8PijYwSoQFq=DWtD7kRv;LIa{L zn;GjdkU%~Dx8^BDonTW|UWK3Wl^v*b@aZ1w7sDCAsya}y@Ru)`31UCyw1xZBm+S8r z5Kwfv;x}ETaom*PBz{9Z(O+oUhevI0chrMDM;L@7V;aZ|mOMyaf{2G+a~}=v=LU!T z>=)Z>mZiQ`y0asms{@{k*%zEA1735tBYor#;hy__G%bKx`4>{A6y}6QdMo$3510GY z)SQmT=&qZ1cuvcY$xtyitTAa?|w%#8dvz_b; z@_>I|koi?7uOAl%WZbM!37l^om0Yfl+I<24i~xl_4#kiJ%5y6AGqY}8Pa3Sha0lCy z#VVqg99CpGcBa>-E>`lT7l(%@p74$~Lv226de<%DF*|EFleWufX_Wc|=Th%Y8VPWz zm%c@ZC))wk1byOX1(p!d|9O91CHa(b+26Os%aLKrA{Zo80Iyv4@zQItV`a(UIA#th~zXz{-yi>=r&N$=vaMpg| zMrqci^wyo%ahoTEEP+pCvj3p>+oYo|8>Dp3iPt@iFHQR!;-qyy83Jd4Y0?xTFMnLHIfmB08zb1>1*dTq7Nvr{@YR)-3WdQ&A%e-fYV*}H_ zPH*O~xzK2@JGc(FcsMRx#G)85nkE!t&BFmyz++Ny{iqKX2J7n`XuM_{pRQGV0c?<_ zVH(|^R&!}&87h^GlE+(JL8<1BjU_yAV2I*z|3}dom+-?GJc?6cTJK@nWu|HtO_O{& zxkigZ?$-lFcPe=6)9_C1;m& zje?MAm#+ttQsv1<#<4?)-bTM#TbLp|SIV?5K8h=0SIZ*U$zB zhrwrmFO7>cTn}wS6rfuZDd2-_WGdUF=t4GpQD}c>Jg#pv80(YcGGAQa9;+rCu-6AM z?%{zfa|aMhXxw`>jr#+|Hb{Ta+7;GVYi02YMd*aF zXP5?9k5F1$V+Ns|)J8Pvph?g3sKr#N;@RLuTbwFOrkw^GS7+u(rde@7sYVy5q>*fe zmm+|;VPH2rnxCS2LTxNo^#X~UyoTHCyKTv!Ha@u$UA+ zATs!HkN`HOA0}}i%FU*QDI7Asi+BUc@sx#65X9ndsA**xB>Y ze1+=dX_JXz_MA{zrOX@=mC`|P+*6gZ4RceE>L^B$9uuqHajl*w*$K^@MpK8?!(gi6+~drBDnae*zRa z4@4>{-|R+2tys`t{gMwH?oxzhTeBl{7&stQ;7nY`UiY^lxy=I3umK}!$gUnppN;H$ zM56`qqwki*9uurbf~!VOp&**BZkTW6HkomnXy8K@S&sU;A0oKGmOB%>S+riYO-&xB zUy$z^N$@5De=?}(D{Uq>Y*0Wqo^Bi8Ed0S`vsJ{0>fz+^tJap*09~P^?WdmB6RmL- zi~be6#bYi_+B;{3Buru6g<4+vl+W*#s&T9$E?e;#XMCsAF90?7=W)c%v5M~yZv|`L zQResiLJ%GQvxG%0EV^eqrSaSLa5RR~Mqw@KyTxJFr`pJU0?qAH93#!nMX&BmejIT` zyVE$upqH@d#H{iIo4P*LxtVGoW@&7$bE}J&7y}*B0BT*Z%HJzf<4|(9;2?&?qw5zi z3HGa_V3ajpgx$ggTVGfKkU-;wK8=nZfvn? zbM17>Pp2KZK~r>X3oqa?4_BmL<=Kn)(Mmrl^v!qxK;*{aLo?cC7+9cK++;~CN>img z^ET9quU(kbl^N@GY5I|Mq_4J_EX^%Oq)m)&m`@;cS!!u45g_<$KJ-hD-+dG;l+nz* z89tMOx@ER*3!lPa`5xQdWcl%HvQ9xKhGFyGpWb}kkD?WfN5lhBAQ0hS;Xk74o7z7X zQjem)J$GaZdPKAkRvuKe_}hTR(D!IxbpZQ-FXcnU@sN|T11ctNmR*JLF7=bY0A@%w zUe*tT;?5x&qv44bJO9alRcEdKw)-FSq}YsWxrzm4<5T|5$_tW>N)9cDabV6 z*CH#ft!ZDk#@e^>ys1`%)ZA#0tL^`^8wj6Dr09FOrI$~3`8cF-%VB#hbV#4_)7Nq} zjts-OyA9nNhBBiJ}$B z_x5tWN%EyN7RfU6=%wIcz}tw+&W{UvImqZ-H2wS;+Q->#V8g&|J}y*2W+(}JMf2~7 zo8P&6Bg`*En>96ki%3H~OZl0@Tb>KVbrGmdeX8vnvJ?%y)N)l)IZGzfJAR^hAQOE+ zvxHGf4#39N*#~zTxJSjDBQ0?cTag}YHjxSkf~NjeT&qGemJ;zkXf zqF~6MemNWq!niu`w*jao!{2F^uyp80&^c`t8~e&bBNFI5K9_^l$<_okBrVmgAi#08 zHx9&HXJvl5$^KLVfvf&zQs4gyJfRKE1U99S%qG!#5h!ptIHz}=aah{= zJx|Er`PBml#&!NM)&h=`FXW*CY^o64{qKJyR{wwye@P5LF6Q%)pLN0y635eS%Xmqn zJ{OfSva<^x-ixBwYArDs0^PHJ@)h@hwvt%$`Z!f6gtp@MeGpXHl9OM@&dj`W*5VHB z(!G_Fm+zWTM|tw3z?FdR1%LsjNChy6824jOPygPa<)ugoRI7F)J4c`NK_BO#-{PBl zCRi{1KN=Ne!!=Xa#KyS;4RQ0TwkU zM?PJNO0G$OQT_ltutRXE7rkLD(<-+p=ZELW+}CLJSAlgbh=I;W^QW%IjQ@q17!0 zbH&cXcGQ^;%6O&QTA~@*+?%VK+WCg~nWI9@UWn`dP&!9d{fWvsZx)iGVBK>Gr7vEH z$d!rdY2>qDMO5&BM1x5>q@5fh)~-L>FA{Ih$3Ll#)o$}IWWzgWySPFMG{b-Fp4+>! zGM;))ZhLbApYzRBh%PNHO%2IvMM^-DV(Qn>HIRe3q;rrBUq_K$xj|~HcSSEgpU!@@ zjjy;3FIU^X{oSv6*|*d|HW18QQd69G5)Tpk!!}5lduLqEeP$Y$fkA~X%gC1dVd!z_ zg^?Y=vZ50Vs;J+MX`a)68&2eh!Jrebhrkw!UnfMX#*k^*Jo%LO1JUKzV~fLg1BHS9 zC~dagrxWHzz6Lm^Chni4e5K00t(yQSC?NuV(&aSIu}{7;YvmYN5q^H7GSjm>HTA2F zX*^(}%C(;0TpxwB?nhQUU&dYwFGM4E#7*%>D9m=}D8&kiQX~HnB!o`qzLPXwygO5U zE&quRDA#SNppeSfQq`eDMPa8clnS(?Ua3}JiN*74oP)Xi^mD&OibJO3KcuJ9@uiO& zbw#orLr-)@*a5!)V;A&Fa>eLmA*G$+bDvV1>dRhR^NhnRa7r~n4l1x&7kJqDO3O9e zbfd|iYegstRheqc>3bMdl{&LEhBN=*h1h{&b1}SMv~F5j8$Q!^vJFL~TC!znQk6Oq z!j>GUatA)J0{`-N`v=8APYYIzmYdIV+agj7~>i59pJ%&QSkFqI_!~+E^N1TrKz3P^Rq%-H8Y_M zi?I5L1}1#o@{3B5rEZMW#Wx~XNTznCpskiHrao>##NHeFKKHw1Q!gjJ!rVMzQzdYX zvt;t@ZC6{2**TO=pbPUtGpEGMj$%uCmTc!Kq@|X?2#dmZit&tsuP>zPaWZl`9&b2% zs1-ym%W`8yK|WVXUjEsH`kW($^2uAwo5Rwq%~Fl>BnsO;Oj!rIjxygW+^|BU(Vp`3 zAIUb*B2u5Y6qAy<>&uzJI|E7wRsNQ)tBR$=I@QYy*N%OsFIg1=mv>@cEeXlpOh zjiTkwZ_kJM$NIsojA}-!7tuzj?gT?sbA=z+2!fu7J%$kgRMHc@;Hc^SgAb?*tN4wS z#Gd)f$(jbBqmUXr=zw8MUYI<_`H%KRH4dE?VwA}T0iQ@wknHYMc@0J{w6vW|QN`fx zHk1%tOk|TWQ!79rm$OU?E7o|SC(3xPpLQSG=@p*QvbF7|QlGPqJ#j%QH2Jm`Lmp(^ zW+We4O%tQ27gl75Y;B#DBgZbeSl1=T)tmc;#Zot`vL|`G#dES!*y?sguz7#d`jFq* z^Wi0vNl=AyftU$U%#1sm8wWIBTU^kDEuHkL$ya9%WG4J?;X)yXsF#{Pm(EfWx2_RRJX1Q`P2T(2vx=R?b`AKPNS<U_`g_OpzLuaq zC5BcT>VORSeZzViKpm|A7#Dl224hc$A`4JP^Yzc$3@FWD(4hG}fCdZpN&q!nx#0+* zc0Rs^LRR#bHM*R?r7w%FTXsbjjxSpKA4V`+{aS#ftJ+0|A@Sth~OCO>; zSqRZ_;6H5)aV=&g+->+=H*R`>j)Ao~q1V2IUyBj~hQ7CFpJb!2}=1zfnU`Wxe0`Nu!4&F5CEcp^MMVS>H@krogU=>mDA|?A%#D@(0eV$G*xJ z%e-vIvWGL(YnV2--UrVTsK?lNN%4)^yQGNA_`0t!1+aW{3d7wx=2E=*&YtGiNCy)< z6t9+4N)0^qsryNWi_(;vpc{uwl(Et!NQ{XlA4P}w^e+*w(1^dxFQ(CVX^_#(VrNSv z#OlTA%#Q7Oyi}qvt4_V10V2dbdA7BHv1v4JUvpW>QgZH2cXiILbgbW3lqQxN9Bv^i`t;mG z4hMoC!B8MRMfH%GZkax0sANTk_e4WHMJlooDLvg^_>l^6P{q6_o__1E=#lK~d1IpP z;xrcOcBki#%9xUI6DEYW{5uV5F_CXAI2=vxGTzyhQm{=jl9J{@N)c0E&COZRSVFqN zoLIu)F`5W%5{?QJ?)LV!wNk!xjBFg-Ha3dQLL`h+V9DMeoSck4rL#)(GV#NO$3dHi zEiwAf3jH(N4JNZZz2oy%1WMm(VSbL+gch9D6Vc)$Na@i_nQGO#GVMOHtjwo=?NV0t za$xAbij}ZjzQboW|M2qUz_{;@$yofC{O$yRauQoxbiyg8vmz%fBRBeJprE9!1^KKo zTsgg8>OXwR$u-7T$#YUZ;z8$NA=mekR6LDh?jyIPZ}N3=V*nA;_P=M~}WVb<9nOjA5%Z)=2uEAoD*!VaEH@J-(4;Sue399_ToV;tA@=5M$S2r!nJa zyDJ2(_-E7)VdcL%kl4V2pnBlkdcXi3Fb7eD(T9&%QccawK82ZeK;PUzm`A zs^+s3FE201yMMwtts(CVlJ4zoCg6SsnVZ4d<>2e%GxbOh+dtp_J*DZd-~5{&&pvu- zq7TY@!#%G)nzLzt9U?SpBLJdjxnF`nN`OifArPFNsl=Z9rYdvvqusV%31Koi(|Ouy4g1ATqdmqPsi%0T*+lWY_><-H$>j)SAT^)T=KkS3am&+ z9keZB0boAjyXdtE6lTh)T+<;M5g}lZ9J3w?k6?n@{JuYlM#0F$G=2;d(Q@yci@Iz- zm=9WF6?(;|;^%5;9ON?4e@;19B=bK)3&%7c-FrO$;uY|~l&)t~6p}DfA@tKf;ezt4 z6tAiFkb}v5jZ`$1;l$Ap7=ThLi#qo@f(~c6Qp4m&QexnBgG1$c^xAk^tLGxe%H^5@ zBuun9)|&i(LrI5|Z$VVyMYQqfc91;O&vn9jeaK#J*LFmq^g)c6Bc^EMN6@l=zr zA?``Ds<^&2q3}2}hSTKeZfXAc@Xj?1LeLFnM#-n)cP~x)i&(hTkRz6>b(w!}%h=p2>)Cp6U>qDQ{2YdF}gQThA$|YzT(RJ2E%qRS# zb+YJ~E8G%DuMjg-c$AKR`TJff?>g|UCXKXuLAYm~y7YSJ74!PBmD0F=iD)DoaGQIz zQ|@dl6n_Hv3v|&P;)g|_s=S@qDI88p?J5$ElV)kFG7PJ#@@YrBoE4cb^2*vv$QM<~ zN2x{;t#r)G9CQ>aQyCt~gwCMu9vLlC@y|Q)=;INX9*y;s({0*{Oz?jQS*H32zfgYr zKj#OaqwFop_rEf z8E2zqv6{5+Iv4Qh$C(=bhjOc)T72sBql9k!-*_^ zUkA8Yw*Ck3u=0NZ9y$lFscc)f>R6fED!P~>J)X1~jrG_dRpSY3&Wp&Fb1SA!)#fAsgMLYku-N~OU=W{)H~+QMq~H1Ql=h2VL0`?~0u41l ztUw^*y;@>pnb(!RSyr5AmE2f|t7#LeY@sjMiCDFv(zJV_E!cxSWDC!ARxm42d@&c+ z=rJ)q>u;%vnf#i$-n_6d1tO)-@m)iu%$#h;j%4R@t2E(l6o<>!BT*gAt?^gUNc``& z$9gLPV0<=3F^`N(ogna68E%hK49s*Ou{OTsowWf7(pvZmpaY6?Z!%82$03YX`YjGV z44R4A*=f=7j}()sPt0u@O$6f;a2$ST6uTN!zdsHWZ5yz;t4>XGN9-rus<+?nRofeh zccLP5g-V!mV+yE2xm^mBrR`YSh@2{Rn*H_&^3>%0$lz-(PaI`?1a>{Gqq%?2gGNe> zBvW!q&oI9@cN}*+pVfg3OxDvY>jqXonm8TsDLmr=j5zdtJf(i!X%zV;1v{x4l4F23 zo*(!iOZ?O?!{r7RR^znzA%>d9npz~s7jJ4{MCR?+aQzp^cFnr0@2v4_NPhpfP{it! z9pu9wb4AfyFE=wMuJdl*^RNF9bxZgt&P`3Y7dqhj0kK*)5jniXIMU&e= zJ;U!9A^+<-2sjR1mFG-)>w4Y zFv-Nm^sk5)^Ka@R-WKf}`ajDZ`C z%8&YamnO}EolfzpS|Btbr2Io;Us zKmNMgQa1!BH7B75R$aK(WoBZH>b9|X?<%>R+>cU%30<$$XK|{jz+7lo*!HCjSFN|hsRsZ@d9bEI$boT5_4YoH9E`m7xiBP5`5PShBmYrG3C(K zsriffd3`ZdUt*N35z^5$SME&A8#9Pj?F!EP&L=K!nW6|#4yic3oWj){8g{__tl}3G z<%P36(YD_!r{%HGd6ZOst{Hr#Wq*?+&y^l407J}TOEFs(k1PoI+uw=beNJWGrnKkpw;ZmkK6raaOek4l_*Ft+;PQcKi9b6hW z049f`wfo^P0uz9ooSeWRGpN{Y5T?{o&Sn85*vuyrjkan;!0zXSBma}dMBhe7sQrJZ zT(X|%j*5AziwS>)qv&=teS=Q3sgPf_K^gtHk+F|+(N5?u1_4Uh0GqRkiSj>@DFv^^ zFagKq(tk&%^r8nQX*1PwrlMh6ZDQ<;;Bj@{A5p76LcYD4P7$vuI$jebl0rquy`!qS z%Ku24et&sWo{XPJL7+@hp5XFw;2g$mc0j2K=C*b^9R8)UOOy52Q8-yb5O z8{`Bj2X~K?R%o|j%3JNJ1@t^oqHfYDHtsEgTE1wt=6Ub7CMLH(eX)DJmS=dpy1I?> z@MJ4J5Yw{v!Z(3=X5hMXx06U%wx9i@#2=l~g8-mYBFBZ2e23t?Scm3=Sd6G|qt$%7 zdYyRK256_+Jp^W zohW-*yMU+**Z3z=UL$*lV`Pgalr-0|zQ8`~2jnhnAXsQd5u=6q?trZ+knjng3Kf4ScbG4C2YP8eRUP)i9!$V>JpO zwRAA8tCCqHrc8iw6iVw7vU;kR1<($KFq149m`7n6H6W})9n$}>&iTvIOBw@Sw%7tB zO2>xf(3GCwJAiTB4FJZqF@tU7e*hR*C~_9SHL+sz1q$BOM1V8$fUvetV-%Jfc9)cZ zfK_)iCez774?>xS>Wyp#V2xPL&Yaz?)OjXC&vjm-=fQx@fR5!^&3-I>AQGzcq@DhM z!5Mhir((}dywhiB;G%ru_ z*ZNSJpfT!&+eg&9Z{vz@aYGo#c5M$Gr?eEE-pmo}%w29q4~eMV8@Lq-AoJd&FyZ-p zQr!M8^-HXh**$iq)OY%&K2Y8mtm=I^s>Qn#d-b|R+SU4|fjz3%2!G^`IJLbmBwNWQ z%oLgW?DgH<4@+-29?0GZCe(7U7On_Ym`N_B86yGaRWRh&4A&U%ch~mZ+zd6K;}s{S zOFR*LkEe*us1K`9gokqdc~a4)4qf#2RV)JLm>>t{FhgtdSoqv8Z_`g!mZ9xci=|YZ zGvT7S#lnzMkE*I+S*o~9b6=et!d1BnywV(5UrlU0!$Hc39W~CKL<-1{hP->xo2u$D zR$ATTwx6qdB9_D=VfkArk_L;^h6>eXjRth*tB`xw0cFIa89QI1hK@taFm-r*f5|vl z!CC!VR)VC9aBo_H?Bv8~=V@Eq;`j>!+q&hozw8Rs?ucCzK9qTgc;Bu(VGePl$)XCGo~3{r51kov!-T zlDSc2Zx`aUiPzV;9;MyYag8Le`@rcyyxsD-7H+LJnBJl6laLqD64pJ?WlqZMg>h21~}ZXFMjp0 zPssX$@_q!_ZQ^*7`ig|N4o)T9j;j|U@>&K`144EmQtH>01yyMW1!dXU4HV2S`qGN?ps}ja>Bz`z zCn^>h_9h+RVZCsS&u>~Mz|P3lP5Tc##bErFp5#Ax3hKXkie6jRi-0hpuZX^gROsSA z08(%7j$%}ESbr1UCC5pqciXB-&lZDqE8s=TEjh&eer_%CHJJFoGHZPh)!qa(yrDr2 zZ84{SzbvT@9^L$}5+`e_rZDyBn^MZDuX?jL%+z1%IjBDI%jnq%wq1@I2lhVpA^0sj zkub;{$a(NdB`$Zsw`{1t{|m4_M(e4%UbSzE50#i@^qpULy@}}eqs8?j6t69+Wa9lQa&Pi?8ZqbU4kVQ!q#*QT&`peOR)(sRKlC#xq(S;?mbk zslA0i9a+6&$@aj>Q9pRDh0t(&{bio~C%f+lbG*&mWc$Mi;IVEzET%&G&jKe_8U6tP zXpm8Gp%@peYRM51dW=}M#D)BjmTV1^Ab%Zt56M-FwlQWYv-KlojEkG`xjb^GfskSc zM0$HlQGfSj{d(YcKm_gxzPk($)*N3BG(Ug$x3^*l?{5loEaJrss_NES7yT!%OsL

xN7KjWv=l6C&QCt`jEn*4PY6>hziPi=L=IL4DOxV1Bibq(0D;c65PuX+q|0joeQ(} zgg&*sb=R|H*P~i`yR8(o`rDiYNmMX9_%9yfmtc8eU08Um<$Tm?S3-T=*+#zFg@>!l z&H$O}gu_t^8im)l(R*`CL3GFXTP{PExS5f55fjh2ayz#-i@!>Gu^|G{$q)tYx^&ji1+_ZOT;Vk z#IoP0C|LIeMMWf^ql`WiC}wy&2vM73`^bopYwJDR7s^6ANVwBc&?RIu{UW9~C?TLP zfA7p9=*4qDs+&>1%wkKHpe3N$ExB z-xcv>W4eI(mqdS?i#oxilc?2}mR9pV!J)JDbn;wWeZb21rT%~x0eS!~284?I8ByAd z-l^iX#l{D7p>=JF3y84ES$}lA-Mfi@7;&={Z-0_N;LMZp`CR6YD*_m(F_qn|gI5Ot z5UPSD|1ttJA=C9qKlM;fczW)iYA0mmG<|!?W~DH6q?erwr{n}yMyb>9aad?AqGu2b zbw{yt)GHN;f(H?NIBO5YgihWjYanTI>zF$tMg`YBjnd4g(OMZUo{W&)jFn0VmGyB>}4_~WCY$=qQ?zfhrSmgav^Axt`&qABd_LauyIipd)C<`mK z-jmwx!nzjQLgY|OvHTwS2t#EVqtJZ4#n`gJJ1@05B&3jXN-Arbfjq5}0H4ad5e5zZ zA$`)olsR$hq7aOEb7zgXi~`n(%L(nBxBuB1u@nyTM*LRr_SE@6bQZ4Sj>3CGggYwZ zQ%@?xZl>WMxjHYx^TrU=Qy}tCFBImBSf~M$wtFMl6kE{!4AMbJkX>9mg<)o>x_8l0 zTE&(?Pth=UP)w;L+0Yy{i<^ zy1TnYK)NJFxtEOP+fnkvpYc|Nb=(;^{fZ%lvvWC_?=+gaF#Axf(=Q=sm<6N#Y939LF zSD;Bm3(VD)!sQXuPeS-QOIdh-x%CXiD9O690|`ky?w~Gydd`Ar$&;_g#yElH6|lnW zjEp+5&@zYZ4O~)dfby~V3?CG`r6y8}Iglcoz!K*sl%Jd5;U;d3-=iO-S5#LccowDe z=kODljI6NVH+=OdnC3tAF^>F+nzbt5=)zoLluP)=^~_dh>fg`a&$2rS;Sm^=o#3WY zeez4Dy~exr81yh){r}O!h^$H$`+EJBqrFe-v~FD@^o zTXS)D;3GtfW6X&$s5RfwZZ#)V&kU5d38N!Lo=b~O1>zr?(OhPZEF!Od^4LvJ(J}v{ zcai(Mck%OT=JPR4qJrPQ>0Lbgqj%xp5iLQAsw(WANrR4=+PXsCtcOEtF-*F#Yt3LF z{ldM@i2v|+zl9Ke>a__FS!)oZV~J6BEEMkEtq>(tZ+XSa=aaiQ*Oze31a-x%W-QS& zY#4JxW}hr2w_lpPnLi^>VqHu0{u&E|N+l9YWOr(v2GmFPhuDAHVvKg7TozQCCwN=u z@a3oz9cn+>2$U1h2lIj15C6J*f>>=goEy4r?AQUl`58<1gU*l7yM1psrUhqF5FlQ!XGwOF+&x|o5?$8 zeaV~`5So-?V)H;_sv%Mz_h}`3D5@x8Koke&Z|R@%JBa@oRiT}25{#SGJeL{MBDiIu zd>;rEa$aE+-5xn8R+&WO-#@C>dmdk3F03qS4|B9DSnN4l`;;<)pdEEdW3hijQkW!Y zH0HbE)RAU8uN-!UHe9jGoI9L-D)v;jx!1RrHe_sRS^V9_5-!Z>vNi}zV@PS0wZd#@ z&13a59X7SF=sTv{Sy`;QG_}*u$ny#t5Z$GWin~dJzNr_Fus23iDBJ_|^LYE2wL71mL_qG=%U6q#ZNJnByfL`y(BdqMDE&?p@80Jk_=gK=^fNUO5aC6B%K;Y69s zf)JX&V2)Rj{^0A2PQ+beIV%WM2VRE>1wD*Rjvf~8IX(ebp#CI*1pBf`tcPRP+n|#I zgyPuP{W{qGoG7|#V5;-soG~2O5PR|)!j0!t(^iBtk|ndhRfh2R>Eev8_k(iA1Rh&V z@JrzKq=lKz#gwy|@&++Ma-$xHKacSF4;~-leP#q#npyJdtlC6pAXHU3#KB8UtCj$jYEL?w7;!x=AeHLVc(Zb2sgNpsGE^LNd8 z0_ErZd*Fi&3I(k(Eyo}BKw>ke-xJMXyV{?Lj}-X6=gzE#}Vk)G!yIw{fUFN{3ZW^Z|z_abGRVCV#`){Qct-_l2)d`e||g=Li_P7vRQs z`g3y>D@yw zK@VydQ;lD7{b;0Sn{ODesrDMi)_?!I7n`pxvDuUCQ-LntLLh@LD-9RZ-@w?_q*Y^m ztUC0M{*4Wea%>cwUpY-&oIY9SJW6DyL5pu7~1SkCWl#9*QOLB+dw~-b;gMGU!F@7X9>Wii@}wQ5;kXn8cj5`t4d%v}V|+ znP$F3@8@s1?rmg}$CvsT$Y$L%bF#bDnG99uo(B-5AHXFl^lm%B3r%*&eg>r(EXw2c zudnLb388p&??`DfC1IyPhMv30%C>Vi;SRd}n}oQynIm;lA(uBC>>0&*q3%T_bWITh z22^QHRIXeF`J;E%v4}|`j}bytY-S@?hV1z16wx%d!|xm1b&&0~e z`dR?8s;8uZ3mC(N;syGKI^9S*_G)sbkH>DXFq^tPdwv%3Xr8-6O!&tB%tg?UPSgsM z?Y{B?Mhvz)nGS_D^Wxv4mb-d617jnq!z{4(6qh5WQV)+0q@ukZO zo2QJHiS~PWt&FL*zZOJP`1@HIe_$c6O_txUIkElR)ShPUp%Ur;fHb2_(Uw5*Q6gup zUMo@0*F?Pc=@g@L%hEbK~1 zbkgFyUYDqf>3Bw~?+zo+i{7qad>SS(F}Buk&!&_q^y*~aATP}T71bnv!!emKVGy3L z)uz&SYq*VzsIc}gJc%KR;#2K1lp~&?Vr$>Dn}_aEEma7JRvH`K`irHHUgn0~3O{haYvswF6?vq_lN(P}xq!qsQvG zG1hz-u`fGr3H1;P?|trKqS#y^R3p!nFNa`Q)&A(NpMQ#=;TBue5BPEmo+0RpxdlA_ z0z)PdpqJ`MeM^HsHa$2jA)RW9d*y+mqy>X(5@+5gBn>|OQXcSqAiL$e8zr6N3f*ap zBQcVC%yFQEuNoR07%YA9$$(GsHZ6a*MoSta%Tl*&DoAk~l0sDW6y!R~-<6Ya+rA&I zvUKlylM5jda(JJ`%Hpu~P{!wJ3UmIAt+|a~Lqo|sV_H#q>Th-NU-p~B!-4JX)6zVC z8ROS)f?rWUFDMr1MWGO=l4X{K=3+sG)Z|VeZlhIysnjQtR5&(oi`g#hj@D`clU*(a z9{NLKTV6`uH>~+npVZIq#4mp9!E?kEx<2Q!7__s;sarAWATTCG%S|-3fXLpEo)DGfWFCur*H`q6 zB2df4_~T=5yg=LO*McdPA=-Mdk;=`Wp~Balj|96&`PKt>QA*}w+0;p_qc28#D$T|f z*`F|8xR9HEV|z;0P$D|f`UVyP{$p`76f65CRlL?oCD)Dx8kxyCZq-E^mEH?>H%GV# zeS(i1B4h00)92nJna##CSt@-`^qwxAu zHyH47n9RD&VFH(fD62yz-FL(GVP!8=FI*DUyFGjG{l|1YRq)6dxO z_0)P$QQmn@t9-q07y%VfRpAM)fi9(2U6~@{cdfVhIEnt&)A&l!Zi@V`qi~&vunb_y z^_7|K6Dziteor*f-MtWlra)S6TVzIx8h&=qV&Fs>Ma|cputnRAc zuHNfp$y)zm&-ZzE40DDpB1wvW>KeM{!BPPU0T7od%|DC9Cf}tf1aCoCf5;QPNSE<* zfiPY-E%lbmNJ2EbqS%MF=tiTV(y!dYXIxBeb;X-EWD#egTl!r_22* zvCoN1e z$^DyD;UA`4|MJi+^%f+^TTR<}c`#LkeX;FZt`dL=2!lkK`p(JB4L-2ivUw?7%DBUK z_UfoQ`Etw11ds&rfNTb$JMG3_80x-d032Ug``m~;U9cemk3f2gM@p4>xJY_kQ&zTT zBy=A4Dbo<-iTA-P)Z7xGB#r04>aR~ag%;4IZaq^#VebV4A51JD3jY-K2L!&Mq*v8# zC`c0W7IAoV^zdx6IN9}AZS}Mb3I#wlrh-0B7#q&0a<#Jk_PD*-&(jAsrc-x}+oxAD zGc~j{FM#4-49&3AA6S^~8<3vIO5cW1iw`MzJ6GCels5*7@$T}*kE=(vc@wc@M1D-y zv~lVoavt`rr#Da_vj#Gh8`k?6CQ7%6;ZYF)HE?c*({D?}_ZvC#gc8Sl_rwI0lTa&AIlCTb zGWM?`Nz!Z8)z-(|$(fGcvjhkNoZvh4>ZR+>qpC0W6$pUx=Hg@*fF>LcH%5txiCK}r z{+YvWpS)33solq{i?8B1E9WB#<|vM|&D_Tsvpbakl7apZfJ4l@yCRK(i==Xw24iG{ zzksTDPq6Du8@39R5sf{+R51fv>mJQg6S*-Il+AM>x3>a_89SF_U zisjYHUJsM!cH^;zhDK0o0pG8hTkv;{a2pG@+nRKBn83eCpEck2K;j zIL#+^fQg|F;CBN5=g17Fjoj>=>~w^bnorc8yu27Aq%caCy6GlIL`cWzJ0z5;@85|H zfJThWUN{K0t7DikUL0S~=IKQOK?E)w2fymKhl9|wlReG~pyhD(Ctd}>k~W=<77OmQ z-1?J3hK`yon53a{)&`%%@9Kft60Ww>lRgLp%X`f8gb}_fAb14Ld^ zJr+AylnlN+N{|lRX1E2BSKiTw7g!=#pZ9>RvHw`H?(U@Ok*TKnQBd>XjeU*-DSXn` zYXBF8P(OPf3&OJzGJ%kP!itAB>bs zvbk{Uhj7Tx6Zh9SZ=4ez7^_F7S27ss^}_jKYM4m!{6x0;z{Q^8EEiCra;3S8Vk{&a z%fsT=TL{3u-eT#-8UjFQ8T5gs3H&4#>=(Ty0b+V?x$A;SH{cO0>df{bnRTT?dr^TZ zv|67GUVePc_Ph~s7Ha7nFg~L46fp--%kV9`M0bUrE)*QS3Z|9{vaH-hCy?MZIErZ) zRv;0fHPhS7ngd2L=*PcKz57#to_f3Ux!Fm;?(@#uh0oV^>@qmDqSBr)6aHd& zaS~4=tPArsd*HS3(?*Zc>BLi%1IR}sAX(jRI%n)Vu>y|y1MwVzfMpnf5Liq(BO(Ge zdb``XkbiIQ=8Q=h1P-C#x&JZiaZ|>9EB`OA-dtDzApKhXW(lUm3c9EN!*K=M5(eb-@YVz*1q zBOF%NzChOixWkK(f%^z8=+#XNz>S}|>tSkMiO&b1#m7v*9AEfM##{|}@fTdJujpL6sM$FH-+Zy*!Np^9JdTxjxDKZf z%;Z-(r9iv9-_OTnxMTusl<1uZlrOH1n}vXBYPNKoFpr%QST;G#R5L>qu`QcUVZU_N zc7UC|gpTLWW3ZAjqp8#D?>?KQb`K9&w!0o|GoJlmG*EXXyRtGhMAW?-DMf+s_|_gm z@&*XHz<396T%{j#2FNWzD^`O zx}7YvTicB&(&q~{cP=l2!qUCnbP94Ear z9LUM=*Sv3+9*r-43ZaTVNQbhgyIvlSLp8Ouw2{4&vb;#dv4L5G7Tne37OZPxfh zP~n%!%gwz<)+_mwT8s*IU z-63M0biyASgZFadl%&;NUY0+#-8hdtOyVs+!}OfFSRy=A#K$(KygC~o4ZN!B98O4x z;yQa-IZ=Jpu<5VUEJylPPCckI8==KVEw=qpwPnKDDWByPodfb=!ePDa`E+JX365;F zO2Pcz+m*`N1(Lv7{mT{hnfP`^SE1AEJ>^Dg+cZb{=+SXwS?;JT#f`S}ID{eWlJ7jk z3{e^{Hx>oDnt)0Kq1`njL*x*>CKnO&r~TocE5w+OshfDLf+_zVxGg6)dAJ>K;W1#3{^? zihTPvg59d)S{c7n|8<46PPOdXG`b zA-97%678rG?H;**yjQKmnGtFmT`W`;ajEM}DUi#%x74kg@@nffGhMM`F(+&PhDapR zL&ipq{ate?FLUXp3lKJDfUacPF)(3?U7n;8URLjK6V zu8udJ1`$n$1hUssSnPDV93!+JH;`kg`V-fiGH=2+f2^mf%xCp>$>gFPE{m?zjyLt^WcD@q(qUQXI~As{6O|Ff-Pb!Xs? z0Zi>umkX&S`qMO4MiC)j!xodxkRUJSn~P88ywPE>H4vQ(*{wZfAPvcJ*kcDwyRR`o z>DKyuvHCp%gs4RO-61x+0S5pXg72pU83uv-eKfj=s9yNRkTM58@cFg(?=m+?0N~D) znFh7+`7d5{78xsSTwqw{Iv8upB(UrhQ~Xt@Eme6^$Cd8Lyg`=gOUL) z*tf3Rr^tI6AmPY)Py8p-4<4plE!_P_qEAGPQw`mvMr$PkuV8&zBfUNW06Pp6`@C0q zb;p}^l}8`R;6c0wa<#Kbt|~6>HT>;k`EkuSJ$2crU^8K)fn=qwwR}p=)t0&+8r$g9>PA*rtOyIWzOIIv47<8?%+KWWTjLSG0YuT#2&5DgY=x zf~N_2&6)9cV!1gU0a85+&avu9mH5C$ownH_*cZeNETII_1fht;qW~4C4EKUj_s!f*Z-z^Uikt#_|@xGYObeu?DzvFt5;HY&1+kQSd= zP?nWdRsd+5!AZf*MA%9JJI~#Ty2i;$(`Zf>m^N-w=}MK*n|R&r?ypomEzJgg+0Y3< zG-vOTQncUo;*@DpZl9&YO&7BdR_QQP9o@v;!Uxtt$j^nj1HRQDvGV%A8QuR&P3`~ZVZa(_5CXtB zxFLQPE&wo3h!D1 zir3xu7?3@ajv#z6EkZ{}m+nkxCj*j{q|5NsL(-;Ax?X)^{NF)eemKMl)bwh(@ zf8HPmLQBny5vE*qP^;bRF)M0X;gz)7J)gb40)?Dxe8^jV-s5Ro-wz)qn%Rq=jRU|i znM`wr3&?rge4u;|TQy)r#N^K0_3RAs1-s%0Yog?__bHT8epK95Pq0;k67beb&CIKj zU%VG^W-jFrk13)@{`o5`0hQzd4Y@YX6{0StG<_ifBjr#3*TM2BKbxPuW1%F<+3syf zMBC(JE9|L=_YlIJIi62kCz-j}JNQ|G8<)?e z94*T7)P4LmvR-%TJ2IL3L&&~fX>#57+(lt4%%+Mr8#lSwbaH+Cs9@KTiE%F$h>Y{slqYQ&U40DHnZADeB8hb|?mj-9vynn9QVmjMtib{Tt zj!Kck-hoPEiIS{PKi;*UmCX~=MjQyY0#ZynOKX9=X01}Mo*!M=cRDU(Y1DJHjQ5!JgEIJd)6f{{)RphyXk3_3 zSs3=koWDnJ=z6dRysD5>T~XMg65r(w8|1kigZ;ewHd{=rD1D!(@OyMk{K*lFq`r6MCsXZu0KrfgeXila zLZ9c$^RtUM-71n#Gq7hgiFQS-D*tofQsqKe` z{Wn-*a&l;Juz$iMBZvzP-h+S%3=DQbK}IP~QOvh9wgVJ=LooY;yBCv_zzbk`X(_{x z4T=c4_NV6)6eJ-ah>wl^NI{r(@7Z?kYIx#WF|TR)`;n26z(ACt`Ys;GiKU&L-Rsw1 zD0;x6Ag~fA70oyWkB;nQ57aI)!Rr2&$r#AdA#Q-b0)fn-+`OnW2w!4P-f@DtwiaAq zZVWD~z|0F=W}xr_zmdceiwR=gL1y0{K|&z^Jk-e>K#?zPsv0_9}HurNq4Kp+s7_?J%#Akaf<5a_}7lLtT#Cd-r! za6xfU5c>cs9wOTT8jnogOTPz!%EB@4^iY8|y6qQr2M`Fm9r=gSZIf#V0+m>Ze|oRv zs&fFx@xY&K622d1|K3L_PK#o7kmHQ^gjJtQ|I9@5_Y79msCmc4@RpZQ4bSemY=^$P zu;^e;6EwRit8DXP>D!s#?qoJXsENBX_w9pOiC-E*aUUiyFww;etCbBRzRQbCeJ2gm2A=A#5r6fy)oei4>fNM?041ZcVcwocNJm9PTA5-k?i75fe%h(G0S;-L6_$S&`&uiW>Xc-QYPaAWYb3xl*S%xlY=U z5}xEV8|^TWdD2zfO>Lrlyxw4QCfEY^eV(DQSv*7aH9ZSfB5e2@4e<8AxCXp$qK_A|NWmqHbp9t+rxH$ zy`;?_u|nET#E!5yUY(v9{=SE}xkQ*;m9hCl5zDj$Nbv)S9Ee%8*JmdT;>2?@GM8{m@wMqPv?}nvy0x&tdQbo2Qhp8FwGt*Vf>K6xYKY z%v}=(&y42u4G@8_+ljxbeD)ahT5=0-6?iOqIi6S9b?%X~TMcJ^w5Gg@Vt zu2tBz6*BI7B1HNLa6Dh06a11MJnxJ3x(l6mp5T#mQs1vy3yM+xOl3E@=n^}Y&8Aw~ z!TyAKMb`7DJw@W#W zxLGccHSUcx28ECcZo%Ub0^NM(CUXMJvCR4`2X;BoeK667Sq>~oCV(G>8kvHTW_-H2_ zzCuKK-QD$zoTIsB>o~l8J(f8~DsgqZ1-eq0*ZkdVV#4K+Sqlse;Smcj=v_BPE0Mc6 zvH)MmM|G~|=W~dPic%lme8_+P-ICkpnE$h^YHXECo*G{`L1enU*bn z*+d!3)|%x~MDxYl7{ zfPO2;GT~*U|3ncSv*+m2kML0salf3~vmu9Ulu+Kc#F~cYn~%n`j@`6e4&O~)nh2E{ z(+3yaTTRZ&7AIdrg@rdTQ{$zaELSDv0&^`0A2c2B%E#~xF*n^_?tdspftlq3WviBe-KVK27IJ34fHTi2(lLwWtY@zZFxXvK zFDiq+9ZLx2NreP`-=agW7-D;O!13{p@CvnpVN!?xe4Yh^A+@zY%WXDZc+ca~4*^#h zM0o9WDYsWaU({VANb8(8G;ekIF3KEaZcj)2w+7;N^Hdptj{S!?mpw)@q`%cVZLsHiC``8AI7?q^7 zO~}d{fm1}&nNUIQCanuq`HysZIG%S%vl5=DBbQGYkZ>#rOs59xI`!e{KeBYO%V&wTmFE ziT*xpMO`ty8J;HbNy$O@^>NIunY0U03cX56zR;WN!CyG3Zui?9l<5C9<%YFOh&Rk}gaQVl2zDCHP@C1X#38(e_CW_HSjda|srNH~w=XE32 zxkR^0HR+v|BQ3^QR%R$zHe*#KWdXNIY6pVWss^iEfFfBRcpcN1^@T+|j_dd>6n<_Z zT)klnR^5jV^W~Vf9d-+ijdJd7LMYty5NPuhf-e0x4%|ZEGX`059e8xx8=3G^z9;wS zZwL2#cx19K#9w>ySMpt~l=)sM1dQlRvsc+z1Ej?B(Kol%`iE>&x`lljt~cBVy$NthBkqzLgQiVk zMq%fJ^5k;|TnLO%d!ugGU*gyo8wBFZmKi>ldpTShQl{jdDQd=WrBbL?X1(}MqVpIs zMRBKhJ97hJ&(Eu@#dlr7f;8Q{G4Z-QtVq2%_@znWk5HYQfV7xA7IZeBcWi+1w|;uB zM(CP`!&!2U2H0deUHGnQWTA1M3MA{Onlu}3u+~G4;7s>Adet=o4TEHvoxxg!PA*kt zZ||p{8MuAUcWDOf^fw1fUv;6>F~`eU;alrtnER4u>0Qb6qTtz|aBR5#c*Fjd?)(yk zpkrgx-j^!`IefGQA3mR7f#>mFzz_xTCnXHw+3m=Y2;dSCV~?68oy(CM#BU|eZXuSNSjXo}%2H}@*I z0{NAe_bW``@`vEb-_4a&M-plPS|IOB=HRWDlDdjIOWj^hcDx}t9)sMo_NS#rZ3;SAg`*1_{Ma# z0^J_{Ak=1*RH-T*%w>JWypP@zcPrn%=D`iFJu$ zb1;DSZ0ay4%=ITsa&lR99ULJac6d^xR;GWxI~hgd(sqtIXe9Wg2j9)wabXmYKA>>xQ-FaKswHeXh!$K``dus?R*CG*teCC zA^zvZGL2`C|MOy9`eS2?Z!REmeQHKf?0=lbyF_ z)c?q8X~KWF1pnnB{AZKh)qtq&Z&?<^lfR?%unhscPr#x08LnMDB7Cx$%80xf2s{3b z@^Na-GP4A7Vc#5VZT>nG1jz)y9zk>i)YliFwn{Fi)dmg#ryP8Kks zf_}1Dp$%b$tfhnV%0?yWVXI!-Kc(4rc5& zuEhHufqK|l(xno93vfAJ>@YwP_Ga0?2!ZMMgxc(qgs^Me*ygOL;!E@xA*^h1swpI&U zr}`dz^o%P{epZ~L!Y8JwQg*?jiN>TyEu2tGiyUWX%@yoRxq;Ps@iDGtB}2=tn$lAkF;f_g8DD684dOEY)77`?x-kL*jetd z7E+94y+CRLljwlrjPEEZysGe z6jvQl1yw0vuL9HnoceCZ+Eiugl#GdYy`I#)z?BrYZ+_HY)7pMdy-~)8uLsx+bY!N-`e$mEulEkOtgI8xO;yAL_?fnVCNvthkrh5j=4&lX5XN4*L&=@T_dm_ z+rDG|%Odrdm#D#IXVG*{dV$3^Rg<}`v9;fMM&^sQi3P|i`peUuZjaOdJd)^RHtp9C zRY$j?V?hUgoI~NyPI3~Rc^Jl)%`3@zJz^dy)e_UQ_VV1GRC`RZQ>!bOu7p-yCB#g4 zkTF2aB=Ci#cCQ4WZ~o+U=LP$D*DF^oj$ui7kQbCY{p{wMVt zz>>&3cZNfcT|LE6@1nI}BC5K{3M`Ol8n24KIpVEN0LG@2Do&^GhdC!DabP~6A=peR z9%fZQ;>eDI_WSpt<@xN-ay6lu0mIt__>Rnuqpy?*G7GBm0~Zd{nvltadwoyp4@--~;|<>sHa%;gn_1)7FU$FzNM{&Pp~B0s^1T)T*e zZsQ#cQhxnj0;MIsu&xjd8iKl9ylawO;~RzG4n^#2M}{rbBlW@blDv7lM0d1};ydlo z(9nM(3u4#8H@!QR$a{f?j>DV4Ke@fzp<^gL%v!G>eX|=tbdlNs#!G~7B?c9AM2}{| zfM|3(HN^u_X>JmE@S1(M-+l<}rE3RtNl`{PbXY!WD8!~Sh@e2VBpV+jqH^cB{FFP| z)2-Nk-^ZRT77OJM=^aLR+1v$_ViXXm=mke57XPCzNQHNVGhhek!1?}c1_I&4=^m{# zeqW34R(txlhErYs+wLxW|4+U2U#j%q=G6x@K(PQpl(Mq2(NTGchalHKA;fR8Wm9z& z6h7=cMc$2yM=hlDzUgW;c#;8gY)nBSCm3Qg)#_dIm##A~FbF6E{YmWW z@1G?T4IGf-h0HM&mlXZA!u{C_lf#9&C=loSv3YAze@-|5- zqFt71GrkPbF~gqZ1^t?|#(~AaTbqD{ApsU8Rt4{Wqk_ao4725<`V%k7ln>PJ3$9sK zn^zjT7g)q-tyDNl-8!qliI;cIq9W4ohVmH_RR<7rcMKilOCHxW(_NlRvmD#@8>+Gv zWx?<*<{u_i_KWiH-k&v*6?NlJZysOk85*wVUCm@D4f!;2ldZIgwnvm>%;Bouv=v2H zwi(r}()Cr2(Tq90ν7ooVp$2Oz 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 literal 44208 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 literal 48685 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�pj&~1z1t<0V(LJM;lyZf6?4v_5YCy+~0n@S2_+va&6|bKjpbV zDA=_0Jyx+YVj^oU?e+CIM-j5_soO|mlmoj zje;>+ax2rUap$y1s+h*C+3O(V$%dDy!2{&f0s0z%>aPvo=h&xE0%G^YMfE^9^akov z)JGFZx`b7$g)w;6kKT7NauSKZ%<*Anwmr_TQ`y$D0@`-VrFua<7;Ezi>las)C2L(q z!G&I7+0zK;mIR%$DIfeaP#_;e4CwJLT9qT!dJ(TNQEQ%(+(3}J?-%^H=L{Te4~@}% z9X?F2=s#U=E_esuX6{$UIKaRR4n}v4125p9oOyfjhlE7JJEd{a+a=kk`a}fTd7M?p zn>mm5M2vfKT?@c~>9DB2mk;sua$gRVRFW{f8WQ6s&d38(j{N`C<|aA&Wpht(k4>+glM;jbAj%1rnLr*^o1o5T_k_O#(=k>if8yHYN;OJrNzmL_JwY40prYL%B zoW^N|zBvCgGB;0NWA8+r`grsbW&zh%!38?qZEXXwAi5^twv}e&8d!7{!W8c0s!LBq8D=UkC)Y0w5wC~C;ck(p=~mc&!n@%4l)}6PMMcv3mm%+G`_malFxU1R9nQ`@sBr%YNG5&OG|^=Jhi#2pF% z#}1P$3na<+ICd=)StBog?kf6lMY6YxBdg$qSi?&3KuuJHotcekC_?wP2!2Q5&NFYuWxkqc~8V$ zXm|u#SFBf^9^koc=J=G)I~^z2R7~dR?)K=Tyb4m~MC?>|-^RUA59jT2{#?o^O5Mwh z=Qsb|o|2CI1FhVOg&VYmCu0|jZkBNYx@r0c z9O@f0y9!&LC2WY%XfFei(k{C$Krz3b->fKHy;SbGL2^@hJ3bM~H3G<3t+{jDl?MjW zAHLe5&#x_e(ZfJU+4Va?X6xJPr$a?WBetYn`N$k-&a!l5h95(=Q5pR4A$1<5|p7Mw+-ig+XrjGiqhIEl_gp3sY3K{ZMp4<;gg76A9*~*>DB|Irf8lri}{n}1NC8kZdTg0<`PNw%d^&q=CEao<#)_husc zc6F|<*m;V}nwk4%rq3hl4+u#VNe#klappxz%*h8^pT6#=!NkR7hq{Hx&?W7B#U|b+ zF+m_>3|Shqr__xyf-<3=6g;c0uBJ|gx)FIR(t{ZOL`$`zsONP1l32lMt;-<|DQti2 zv=pg#he&$Evs_5J%3FkyfF+xCqw;iQGx!7q@hU>(UKZAR&IPYU!z6azQL!HU$S+st z*gt0Fhr}Hu39V{uCTV#g z1QrFAZ#|DhBRFivIvx50+E=fzyR>~C1CRjA>tdMW#=_(k-Z3cOQOnoD-u z+m}23 diff --git a/docs/figures/example1.cfg b/docs/figures/example1.cfg index c2d0063a..ef686940 100644 --- a/docs/figures/example1.cfg +++ b/docs/figures/example1.cfg @@ -1,38 +1,38 @@ [General] - Version = 3.0 - CaseDescription = Example 1: Palmerswaard - Branch = Pannerdensch Kanaal & Nederrijn-Lek - Reach = Nederrijn stuwpand Amerongen km 892-922 - Qthreshold = 1500.0 - Ucrit = 0.3 - OutputDir = output - Plotting = True - SavePlots = False - FigureDir = - ClosePlots = False - RiverKM = + Version = 3.0 + CaseDescription = Example 1: Palmerswaard + Branch = Pannerdensch Kanaal & Nederrijn-Lek + Reach = Nederrijn stuwpand Amerongen km 892-922 + Qthreshold = 1500.0 + Ucrit = 0.3 + OutputDir = output + Plotting = True + SavePlots = False + FigureDir = + ClosePlots = False + RiverKM = [C2] - Discharge = 2000.0 - Reference = input\reference\trim-nrf_Q=337m3s-1_map.nc - WithMeasure = input\measure\trim-nrf_Q=337m3s-1_map.nc + Discharge = 2000.0 + Reference = input\reference\trim-nrf_Q=337m3s-1_map.nc + WithIntervention = input\measure\trim-nrf_Q=337m3s-1_map.nc [C3] - Discharge = 3000.0 - Reference = input\reference\trim-nrf_Q=564m3s-1_map.nc - WithMeasure = input\measure\trim-nrf_Q=564m3s-1_map.nc + Discharge = 3000.0 + Reference = input\reference\trim-nrf_Q=564m3s-1_map.nc + WithIntervention = input\measure\trim-nrf_Q=564m3s-1_map.nc [C4] - Discharge = 4000.0 - Reference = input\reference\trim-nrf_Q=745m3s-1_map.nc - WithMeasure = input\measure\trim-nrf_Q=745m3s-1_map.nc + Discharge = 4000.0 + Reference = input\reference\trim-nrf_Q=745m3s-1_map.nc + WithIntervention = input\measure\trim-nrf_Q=745m3s-1_map.nc [C5] - Discharge = 6000.0 - Reference = input\reference\trim-nrf_Q=1092m3s-1_map.nc - WithMeasure = input\measure\trim-nrf_Q=1092m3s-1_map.nc + Discharge = 6000.0 + Reference = input\reference\trim-nrf_Q=1092m3s-1_map.nc + WithIntervention = input\measure\trim-nrf_Q=1092m3s-1_map.nc [C6] - Discharge = 8000.0 - Reference = input\reference\trim-nrf_Q=1272m3s-1_map.nc - WithMeasure = input\measure\trim-nrf_Q=1272m3s-1_map.nc + Discharge = 8000.0 + Reference = input\reference\trim-nrf_Q=1272m3s-1_map.nc + WithIntervention = input\measure\trim-nrf_Q=1272m3s-1_map.nc diff --git a/docs/figures/example1_report.txt b/docs/figures/example1_report.txt index bde1d7eb..f1a3c7f7 100644 --- a/docs/figures/example1_report.txt +++ b/docs/figures/example1_report.txt @@ -1,5 +1,5 @@ This program implements the "WAQUA vuistregel" for the estimation of the local -morphological effects of a local measure (i.e. an adjustment to the river). See +morphological effects of a local intervention (i.e. an adjustment to the river). See "RWS-WD memo WAQUA vuistregel 20-10-08" for details). It is based on an estimation of the equilibrium bed level changes in the main @@ -23,8 +23,8 @@ equilibrium can be reached. This is version 3.0.0. -The results are not valid for a combination of multiple measures, or for a -single measure extending over a distance more than 4 km! +The results are not valid for a combination of multiple interventions, or for a +single intervention extending over a distance more than 4 km! In order to use D-FAST Morphological Impact you need to run reference and @@ -44,8 +44,8 @@ Impacted length : 1127 m Critical flow velocity : 0.3 m/s -Condition | Reference file (without measure) | File with measure - 1300.0 m3/s | --- | --- (measure not active) +Condition | Reference file (without intervention) | File with intervention + 1300.0 m3/s | --- | --- (intervention not active) 2000.0 m3/s | trim-nrf_Q=337m3s-1_map.nc | trim-nrf_Q=337m3s-1_map.nc 3000.0 m3/s | trim-nrf_Q=564m3s-1_map.nc | trim-nrf_Q=564m3s-1_map.nc 4000.0 m3/s | trim-nrf_Q=745m3s-1_map.nc | trim-nrf_Q=745m3s-1_map.nc diff --git a/docs/figures/example2.cfg b/docs/figures/example2.cfg index 33a0c3cb..0ab15711 100644 --- a/docs/figures/example2.cfg +++ b/docs/figures/example2.cfg @@ -1,43 +1,43 @@ [General] - Version = 3.0 - CaseDescription = Example 2: Pannerdensch Kanaal - Branch = Pannerdensch Kanaal & Nederrijn-Lek - Reach = Pannerdensch Kanaal km 868-879 - Qthreshold = 800.0 - Ucrit = 0.3 - OutputDir = output - Plotting = True - SavePlots = False - FigureDir = - ClosePlots = False - RiverKM = + Version = 3.0 + CaseDescription = Example 2: Pannerdensch Kanaal + Branch = Pannerdensch Kanaal & Nederrijn-Lek + Reach = Pannerdensch Kanaal km 868-879 + Qthreshold = 800.0 + Ucrit = 0.3 + OutputDir = output + Plotting = True + SavePlots = False + FigureDir = + ClosePlots = False + RiverKM = [C1] - Discharge = 1300.0 - Reference = input\reference\trim-pan_Q=1300m3s-1_map.nc - WithMeasure = input\measure\trim-pan_Q=1300m3s-1_map.nc + Discharge = 1300.0 + Reference = input\reference\trim-pan_Q=1300m3s-1_map.nc + WithIntervention = input\measure\trim-pan_Q=1300m3s-1_map.nc [C2] - Discharge = 2000.0 - Reference = input\reference\trim-pan_Q=2000m3s-1_map.nc - WithMeasure = input\measure\trim-pan_Q=2000m3s-1_map.nc + Discharge = 2000.0 + Reference = input\reference\trim-pan_Q=2000m3s-1_map.nc + WithIntervention = input\measure\trim-pan_Q=2000m3s-1_map.nc [C3] - Discharge = 3000.0 - Reference = input\reference\trim-pan_Q=3000m3s-1_map.nc - WithMeasure = input\measure\trim-pan_Q=3000m3s-1_map.nc + Discharge = 3000.0 + Reference = input\reference\trim-pan_Q=3000m3s-1_map.nc + WithIntervention = input\measure\trim-pan_Q=3000m3s-1_map.nc [C4] - Discharge = 4000.0 - Reference = input\reference\trim-pan_Q=4000m3s-1_map.nc - WithMeasure = input\measure\trim-pan_Q=4000m3s-1_map.nc + Discharge = 4000.0 + Reference = input\reference\trim-pan_Q=4000m3s-1_map.nc + WithIntervention = input\measure\trim-pan_Q=4000m3s-1_map.nc [C5] - Discharge = 6000.0 - Reference = input\reference\trim-pan_Q=6000m3s-1_map.nc - WithMeasure = input\measure\trim-pan_Q=6000m3s-1_map.nc + Discharge = 6000.0 + Reference = input\reference\trim-pan_Q=6000m3s-1_map.nc + WithIntervention = input\measure\trim-pan_Q=6000m3s-1_map.nc [C6] - Discharge = 8000.0 - Reference = input\reference\trim-pan_Q=8000m3s-1_map.nc - WithMeasure = input\measure\trim-pan_Q=8000m3s-1_map.nc + Discharge = 8000.0 + Reference = input\reference\trim-pan_Q=8000m3s-1_map.nc + WithIntervention = input\measure\trim-pan_Q=8000m3s-1_map.nc diff --git a/docs/figures/example2_report.txt b/docs/figures/example2_report.txt index 545ecd1b..94fb558d 100644 --- a/docs/figures/example2_report.txt +++ b/docs/figures/example2_report.txt @@ -1,5 +1,5 @@ This program implements the "WAQUA vuistregel" for the estimation of the local -morphological effects of a local measure (i.e. an adjustment to the river). See +morphological effects of a local intervention (i.e. an adjustment to the river). See "RWS-WD memo WAQUA vuistregel 20-10-08" for details). It is based on an estimation of the equilibrium bed level changes in the main @@ -23,8 +23,8 @@ equilibrium can be reached. This is version 3.0.0. -The results are not valid for a combination of multiple measures, or for a -single measure extending over a distance more than 4 km! +The results are not valid for a combination of multiple interventions, or for a +single intervention extending over a distance more than 4 km! In order to use D-FAST Morphological Impact you need to run reference and @@ -44,7 +44,7 @@ Impacted length : 1094 m Critical flow velocity : 0.3 m/s -Condition | Reference file (without measure) | File with measure +Condition | Reference file (without intervention) | File with intervention 1300.0 m3/s | trim-pan_Q=1300m3s-1_map.nc | trim-pan_Q=1300m3s-1_map.nc 2000.0 m3/s | trim-pan_Q=2000m3s-1_map.nc | trim-pan_Q=2000m3s-1_map.nc 3000.0 m3/s | trim-pan_Q=3000m3s-1_map.nc | trim-pan_Q=3000m3s-1_map.nc diff --git a/docs/figures/main_dialog.png b/docs/figures/main_dialog.png index eb4e9e5e843957490b8c31b15389a858d4178f7e..eb17fdbea16d1b41d42109e1d86ff5cb01aede55 100644 GIT binary patch literal 43612 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 literal 43056 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 diff --git a/docs/figures/report.txt b/docs/figures/report.txt index 59d34105..1e951922 100644 --- a/docs/figures/report.txt +++ b/docs/figures/report.txt @@ -1,5 +1,5 @@ This program implements the "WAQUA vuistregel" for the estimation of the local -morphological effects of a local measure (i.e. an adjustment to the river). See +morphological effects of a local intervention (i.e. an adjustment to the river). See "RWS-WD memo WAQUA vuistregel 20-10-08" for details). It is based on an estimation of the equilibrium bed level changes in the main @@ -23,8 +23,8 @@ equilibrium can be reached. This is version 3.0.0. -The results are not valid for a combination of multiple measures, or for a -single measure extending over a distance more than 4 km! +The results are not valid for a combination of multiple interventions, or for a +single intervention extending over a distance more than 4 km! In order to use D-FAST Morphological Impact you need to run reference and @@ -44,13 +44,13 @@ Impacted length : 8 m Critical flow velocity : 0.3 m/s -Condition | Reference file (without measure) | File with measure - 750.0 m3/s | --- | --- (measure not active) - 1300.0 m3/s | --- | --- (measure not active) - 1700.0 m3/s | --- | --- (measure not active) - 2100.0 m3/s | --- | --- (measure not active) - 2500.0 m3/s | reference-Q1_map.nc | measure-Q1_map.nc - 3200.0 m3/s | reference-Q2_map.nc | measure-Q2_map.nc +Condition | Reference file (without intervention) | File with intervention + 750.0 m3/s | --- | --- (intervention not active) + 1300.0 m3/s | --- | --- (intervention not active) + 1700.0 m3/s | --- | --- (intervention not active) + 2100.0 m3/s | --- | --- (intervention not active) + 2500.0 m3/s | reference-Q1_map.nc | intervention-Q1_map.nc + 3200.0 m3/s | reference-Q2_map.nc | intervention-Q2_map.nc ================================================================================ diff --git a/docs/figures/test4.cfg b/docs/figures/test4.cfg index f092e1b1..7c91361a 100644 --- a/docs/figures/test4.cfg +++ b/docs/figures/test4.cfg @@ -1,23 +1,23 @@ [General] - Version = 3.0 - CaseDescription = Test 3 - Branch = Maas - Reach = Grave-Lith km 176-200 - Qthreshold = 2100.0 - Ucrit = 0.3 - OutputDir = ..\..\..\..\.. - Plotting = True - SavePlots = False - FigureDir = - ClosePlots = False - RiverKM = + Version = 3.0 + CaseDescription = Test 3 + Branch = Maas + Reach = Grave-Lith km 176-200 + Qthreshold = 2100.0 + Ucrit = 0.3 + OutputDir = ..\..\..\..\.. + Plotting = True + SavePlots = False + FigureDir = + ClosePlots = False + RiverKM = [C5] - Discharge = 2500.0 - Reference = ..\..\tests\c01 - GendtseWaardNevengeul\reference-Q1_map.nc - WithMeasure = ..\..\tests\c01 - GendtseWaardNevengeul\measure-Q1_map.nc + Discharge = 2500.0 + Reference = ..\..\tests\c01 - GendtseWaardNevengeul\reference-Q1_map.nc + WithIntervention = ..\..\tests\c01 - GendtseWaardNevengeul\measure-Q1_map.nc [C6] - Discharge = 3200.0 - Reference = ..\..\tests\c01 - GendtseWaardNevengeul\reference-Q2_map.nc - WithMeasure = ..\..\tests\c01 - GendtseWaardNevengeul\measure-Q2_map.nc + Discharge = 3200.0 + Reference = ..\..\tests\c01 - GendtseWaardNevengeul\reference-Q2_map.nc + WithIntervention = ..\..\tests\c01 - GendtseWaardNevengeul\measure-Q2_map.nc diff --git a/docs/techref.md b/docs/techref.md deleted file mode 100644 index d0be8415..00000000 --- a/docs/techref.md +++ /dev/null @@ -1,535 +0,0 @@ -# Software Requirements - -## Introduction - -The purpose of D-FAST Morphological Impact is to provide a first estimate of the bed level changes in the main channel if local measures were to be implemented outside the main channel. -It is based on the conceptual WAQMORF framework originally developed by Sieben (2008). -WAQMORF was developed for the SIMONA system. -D-FAST Morphological Impact implements the same functionality based on results obtained from D-Flow Flexible Mesh. -The detailed list of requirements is given below. - -## Functional Requirements - -1. This program must give the same results for the same data as WAQMORF. -1. Users must be able to run this program in batch mode from the command line. -1. Users must be able to run the analysis based on D-Flow FM results. -1. Users must be able to provide all data via an input file. -1. The input file must be easy to edit for users, i.e. a text file. -1. The report output must be a simple text file consistent with WAQMORF. -1. The spatial output must be easy to visualize in common software. - -1. The should read relevant data directly from D-Flow FM map-files instead of intermediate XYZ files as required by WAQMORF for SIMONA results. - -1. The input file could use the ini-format consistent with D-Flow FM input files. -1. A simple graphical user interface could support users in process of creating the input file. - -1. It would be nice if the software would be more generally applicable than just the Dutch rivers. -1. It would be nice if the software would be able to run besides Dutch also in English. - -All requirements are addressed by D-FAST Morphological Impact. - -## Non-functional requirements - -1. The performance of the tools must be similar to that of WAQMORF, i.e. it must run within seconds. -1. The software must be version controlled. -1. The software must have formal testing and support. -1. The software must run on Windows. -1. The software must be easy to distribute. -1. The software must have a user manual. -1. The software must have technical documentation. - -1. The software should run on any common operating system. -1. The software should be available as open source. - -All requirements are addressed by D-FAST Morphological Impact although the testing has been carried out on the Windows platform only. - -# Code Design - -## Introduction - -The original WAQMORF code was developed in FORTRAN. -For D-FAST Morphological Impact we have selected Python because - -* More domain specialists and users are familiar with Python and it's therefore easier for development cycle. -* Adding a graphical user interface (GUI) is easier in other languages than FORTRAN and by using the same language for kernel and GUI makes the code more consistent and reusable. -* The algorithm doesn't require large amounts of computations, so a native language isn't needed for adequate performance. -* The Python environment is available for free contrary to MATLAB which is also widely used in this community. -* Python supposedly allows for the creation of relatively small redistributable binaries. -* Python combines well with the open source nature of this software and other developments in the Delft3D / D-HYDRO environment. - -The software uses a number of Python modules for specific functionality. -Most importantly the code builds on - -* `netCDF4` for reading and writing netCDF files. -* `NumPy` for the numerical computations using arrays. -* `PyQt5` for the graphical user interface. - -The next two sections describe the file formats used by the software and the subdivision into modules. - -## File formats - -The software distinguishes 6 files: - -* The *rivers configuration file* defines the branches and reaches, and all parameter settings specific for the overall system, per branch or per reach. -* The *dialog text file* defines all strings to be used in the interaction with the users (GUI, report, or error messages). -* The *analysis configuration file* defines the settings that are relevant for a specific execution of the algorithm, i.e. for a specific branch, reach and measure. -* The *simulation result files* define the spatial variations in the velocities and water depths as needed by the algorithm. -* The *report file* contains a logging of the settings and lumped results for the analysis. -* The *spatial output file* contains the estimate of the spatial variation in the sedimentation and erosion patterns that will result from the measure (minimum, mean and maximum). - -Each file type is addressed separately in the following subsections. - -### rivers configuration file - -The rivers configuration file follows the common ini-file format. -The file must contain a `[General]` block with a keyword `Version` to indicate the version number of the file. -The initial version number will be `1.0`. - -Version 1.0 files must contain one `[Branches]` block defining the branches (in Dutch: takken) supported by the system and optionally global default values for parameters. -For every branch named in the `[Branches]` block, the file must contain a data block corresponding to the branch name that contains further information on that branch. -That block defines the reaches (in Dutch: stukken) to be distinguished as well as the branch or reach specific parameter settings. -Further details follow below. - -| Block | Keyword | Description | -|----------------|------------|-------------| -| General | Version | Version number. Must be `1.0` | -| Branches | Branch | Name of branch , i.e. BranchName | -| BranchName | Reach | Name of reach within branch | -| BranchName | QLocation | Location at which discharges for branch are defined | -| B* | QStagnant | Discharge [m3/s] below which main channel flow can be assumed stagnant | -| B* | QMin | Minimum discharge [m3/s] at which measure becomes active | -| B* | QFit | Two discharges [m3/s] used for representing the exceedance curve | -| B* | QLevels | Four characteristic discharges [m3/s] used by algorithm | -| B* | dQ | Two discharge adjustments [m3/s] used by algorithm | -| B* | NWidth | Normal width [m] of main channel | -| B* | PRLow | Low flow propagation rate [km/yr] | -| B* | PRHigh | High flow propagation rate [km/yr] | -| B* | UCrit | Critical (minimum) velocity [m/s] for sediment transport | - -The second value of `QLevels` corresponds to the typical bankfull discharge. -All keywords listed for block `B*` may occur either in the `[Branches]` block or in one of the branch specific blocks where they may optionally be concatenated with the reach number . -Those keywords may thus occur in three flavours: - -1. Plain keyword in block `[Branches]`: global default value valid for all branches -1. Plain keyword in branch specific block: default value for that branch (overrules any global default) -1. Keyword followed by reach number in branch specific block: value valid for that reach on that branch. - -**Example** - -The following excerpt of the default `Dutch_rivers.cfg` configuration file shows the `[General]` and `[Branches]` blocks as well as the first part of the `[Bovenrijn & Waal]` block for the first branch. -It includes a global value of 0.3 for `UCrit` and 100 for `QMin`. -The other parameters are specified at branch level and mostly uniform for the whole branch. -Only `NWidth` and `PRLow` vary depending on the reach selected. - - [General] - Version = 1.0 - - [Branches] - Name1 = Bovenrijn & Waal - Name2 = Pannerdensch Kanaal & Nederrijn-Lek - Name3 = IJssel - Name4 = Merwedes - Name5 = Maas - UCrit = 0.3 - QMin = 1000 - - [Bovenrijn & Waal] - QLocation = Lobith - QStagnant = 800 - QFit = 800 1280 - QLevels = 3000 4000 6000 10000 - dQ = 1000 1000 - PRHigh = 3.65 - - Reach1 = Bovenrijn km 859-867 - NWidth1 = 340 - PRLow1 = 0.89 - - Reach2 = Boven-Waal km 868-886 - NWidth2 = 260 - PRLow2 = 0.81 - - ... continued ... - - -### dialog text file - -The dialog text file uses the block labels enclosed by square brackets of the common ini-file format, but the lines in between the blocks are treated verbatim and don't list keyword/value pairs. -Every print statement in the program is associated with a short descriptive identifier. -These identifiers show up in the dialog text file as the block labels. -The text that follows the block label will be used at that location in the program. -The order of the blocks in the file is not important. -Please note that every line is used as is, so don't add indentations or blank lines unless you want those to show up during the program execution. -Most blocks may contain any number of lines, but some blocks may only contain a single line in particular block that start with `gui_` or `filename_`. -Some data blocks may contain one or more named placeholders, e.g. `{version}`, used for inserting values by means of the Python `format()` method. - -**Example** - -The following excerpt of the default `messages.NL.cfg` dialog text file shows the string definition for 5 identifiers, namely '' (the identifier for an empty line), 'header', 'confirm', 'confirm_or' and 'confirm_or_restart'. -The header string contains one placeholder, namely `{version}` for the the version number. - - [] - - [header] - Dit programma is de "WAQUA vuistregel" voor het schatten - van lokale morfologische effecten door een lokale ingreep - (zie RWS-WD memo WAQUA vuistregel 20-10-08). - - Het is een inschatting van evenwichtsbodemveranderingen - in het zomerbed die als gevolg van een ingreep en zonder - aangepast beheer na lange tijd ontstaan. - - Dit betreft het effect op de bodem in [m]: - - jaargemiddeld zonder baggeren - maximaal (na hoogwater) zonder baggeren - minimaal (na laagwater) zonder baggeren - - Met deze bodemveranderingen kunnen knelpunten worden - gesignaleerd. De resultaten zijn niet direkt geschikt - voor het bepalen van de invloed op vaargeulonderhoud! - - De jaarlijkse sedimentvracht door de rivier bepaalt de - termijn waarbinnen dit evenwichtseffect kan ontwikkelen.' - - - Dit is versie {version}. - - [confirm] - Bevestig met "j" ... - - [confirm_or] - Bevestig met "j", anders antwoord met "n" ... - - [confirm_or_restart] - Bevestig met "j", of begin opnieuw met "n" ... - - ... continued ... - - -### analysis configuration file - -The analysis configuration file follows the common ini-file format. -The file must contain a `[General]` block with a keyword `Version` to indicate the version number of the file. -The initial version number will be `1.0`. - -Version 1.0 files must contain in the `[General]` block also the keywords `Branch` and `Reach` to identify the branch (in Dutch: tak) and reach (in Dutch: stuk) in which the measure is located. -The specified names may be shortened, but they should uniquely identify the branch and reach amongst the names of the other branches and reaches. -Optionally, the same block may also contain `Qmin`, `QBankfull` and `UCrit` values representative for this particular measure if they differ from those typical for the selected reach. -These items are sufficient for a basic analysis. -For a full spatial analysis the user needs to specify the names of the D-Flow FM map-files containing the results of the simulations without measure (reference) and with measure for the selected discharges Q1, Q2, and Q3. - -| Block | Keyword | Description | -|----------------|-------------|-------------| -| General | Version | Version number. Must be `1.0` | -| General | Mode | `WAQUA export` or `D-Flow FM map` (the latter is the default) | -| General | Branch | Name of the selected branch | -| General | Reach | Name of the selected reach | -| General | Qthreshold | Threshold discharge [m3/s] at which measure becomes active | -| General | Qbankfull | Discharge [m3/s] at which measure reaches bankfull | -| General | UCrit | Critical (minimum) velocity [m/s] for sediment transport | -| Q1 | Discharge | Discharge [m3/s] of the low flow simulation | -| Q1 | Reference | Name of D-Flow FM map-file to be used for reference condition at Q1 | -| Q1 | WithMeasure | Name of D-Flow FM map-file that includes the measure at Q1 | -| Q2 | Discharge | Discharge [m3/s] of the transitional regime | -| Q2 | Reference | Name of D-Flow FM map-file to be used for reference condition at Q2 | -| Q2 | WithMeasure | Name of D-Flow FM map-file that includes the measure at Q2 | -| Q3 | Discharge | Discharge [m3/s] of the high flow simulation | -| Q3 | Reference | Name of D-Flow FM map-file to be used for reference condition at Q3 | -| Q3 | WithMeasure | Name of D-Flow FM map-file that includes the measure at Q3 | - -The file names may be specified using relative or absolute paths. -The `Reference` and `WithMeasure` keywords are *not* used when the `Mode` equals `WAQUA export`; in that case the file name are standardized as `xyz_-zeta.00<1/2>.Q`. - -**Example** - -This example shows a complete analysis configuration file for a measure in the first branch/reach of the default `Dutch_rivers.cfg` configuration. -It reports the default settings. -Only the `Version`, `Branch`, `Reach`, `Reference` and `WithMeasure` keywords are required for the full analysis. - - [General] - Version = 1.0 - Mode = D-Flow FM map - Branch = Bovenrijn & Waal - Reach = Bovenrijn km 859-867 - Qthreshold = 1000.0 - Qbankfull = 4000.0 - Ucrit = 0.3 - - [Q1] - Discharge = 1000.0 - Reference = Measure42/Q1/Reference/DFM_OUTPUT_Q1/Q1_map.nc - WithMeasure = Measure42/Q1/Updated/DFM_OUTPUT_Q1/Q1_map.nc - - [Q2] - Discharge = 4000.0 - Reference = Measure42/Q2/Reference/DFM_OUTPUT_Q2/Q2_map.nc - WithMeasure = Measure42/Q2/Updated/DFM_OUTPUT_Q2/Q2_map.nc - - [Q3] - Discharge = 6000.0 - Reference = Measure42/Q3/Reference/DFM_OUTPUT_Q3/Q3_map.nc - WithMeasure = Measure42/Q3/Updated/DFM_OUTPUT_Q3/Q3_map.nc - - -### simulation result files - -The WAQMORF program required that the user had extracted the cell centred velocity magnitude and water depth from the the WAQUA SDS-output files and stored in `xyz_-zeta.00<1/2>.Q` files. -D-FAST Morphological Impact supports these files when running in legacy mode (see section on `dfastmi_cli`). -When building on D-Flow FM simulations, D-FAST Morphological Impact reads the results directly from the netCDF map-files. -These files may contain multiple time steps; the final time steps will be used for the analysis. - - -### report file - -D-FAST Morphological Impact will write a report of the analysis. -This report file is a simple text file consistent with the earlier reports written by WAQMORF. -The length and content of the report vary depending on the availability of the simulation result files. - - -### spatial output file - -The WAQMORF program wrote the spatial output in SIMONA BOX-file format which could be visualize when combined with the curvilinear grid of the original simulation. -D-FAST Morphological Impact still generates such files when run in legacy mode based on WAQUA results (see the `cli` section). - -D-FAST Morphological Impact generates one UGRID netCDF file containing the spatial results of the analysis. -The mesh information is copied from the D-Flow FM map file and the three data fields (erosion and sedimentation patterns for mean, minimum, and maximum impact) follow standardized conventions for data stored at cell centres (`face`-values) on an unstructured mesh. -As a result the data may be visualized using a number of visualization tools such as QUICKPLOT and QGIS. - - -## Listing of Modules - -D-FAST Morphological Impact Python module is subdivided into 6 files: - -* `cmd.py` main file to start the module in any mode -* `batch.py` for the batch mode -* `cli.py` for the interactive command line interface (equivalent to WAQMORF) -* `gui.py` for the graphical user interface -* `io.py` for all file handling: reading of input and configuration files as well as writing of results files. -* `kernel.py` for all scientific steps of the algorithm - -Each file is addressed separately in the following subsections. - -### main function and command line interface `cmd.py` - -This file implements the main routine and the parsing of the command line arguments. -Depending on the command line arguments it will run in one of three modes: - -1. Legacy mode mimicking the existing WAQMORF program (`cli`). -It uses the same input and output files (report file and SIMONA BOX-files), but uses the new implementation of the algorithm and various configuration files. -2. Batch mode using input file (`batch`). -It takes the analysis configuration file as input, obtains the relevant data from the old SIMONA files or the new D-Flow FM result files and writes output files (report file and SIMONA BOX-file or netCDF map-file depending on the selected input format). -3. Graphical user interface (`gui`). -It allows the user to interactively specify the parameters needed for the analysis. The settings can be saved for later batch processing or a batch analysis can be started immediately. - -The following command line options are supported - -| short | long | description | -|-------|:-----------------|:--------------------------------------------------| -| -h | --help | show help text and exit | -| -r | --rivers | name of river configuration file | -| -l | --language | language selection: `NL` or `UK` (default: `UK`) | -| -m | --mode | run mode `cli`, `batch` or `gui` | -| -i | --config | name of analysis configuration file | -| | --reduced_output | write reduced SIMONA BOX files (legacy mode only) | - -This file contains one routine: - -* `parse_arguments` parses the command line arguments and decide on batch mode or legacy interactive mode - -and the main code that triggers the parsing of the command line arguments, loads the language file, and starts the software in the selected mode. - -### batch mode `batch.py` - -This file executes the analysis in batch mode based on a specified analysis configuration file. -This run mode is triggered by calling the program using the command line argument `--mode batch`. -It supports both new and old simulation result files. - -* `batch_mode` reads the configuration file and triggers the core batch mode analysis -* `batch_mode_core` carry out the analysis and report the results -* `countQ` count the number of discharges for which simulations results need to be provided -* `batch_get_discharges` extract the discharges to be simulated from the configuration file -* `get_filenames` extract the simulation result file names -* `analyse_and_report` perform analysis and report results -* `analyse_and_report_waqua` perform analysis based on SIMONA result files and report results -* `analyse_and_report_dflowfm` perform analysis based on D-Flow Flexible Mesh result files and report results -* `get_values_waqua1` extract one data column from SIMONA result file -* `get_values_waqua3` extract three data columns from SIMONA result file -* `get_values_fm` extract results from a D-Flow Flexible Mesh result file -* `write_report` write the report file -* `config_to_absolute_paths` convert all file names in an analysis configuration to absolute paths -* `load_configuration_file` load a configuration file and adjust file names to absolute paths -* `config_to_relative_paths` convert all file names in an analysis configuration to relative paths -* `save_configuration_file` adjust file names to relative paths and save the configuration file -* `stagename` returns the dictionary key for one of the three discharge levels - -### interactive command line interface `cli.py` - -This file implements the legacy WAQMORF mode of running as an interactive command line program which may be used as batch mode by redirecting standard in; in this mode only result files exported from SIMONA can be used. -This run mode is triggered by calling the program using the command line argument `--mode cli`. - -* `interactive_mode` implements the overall interactive loop -* `interactive_mode_opening` displays the opening texts of the program -* `interactive_get_location` implements the interactive selection of the branch/reach location -* `interactive_get_discharges` implements the interactive selection of the discharges - -* `write_report_nodata` writes the report in case simulation results are not available -* `interactive_check_discharge` to interactively verify whether simulation results are available for the requested discharges Q1, Q2 and Q3 and if not query for which alternative discharges then -* `interactive_get_bool`, `interactive_get_int`, `interactive_get_float` and `interactive_get_item` support functions to get boolean, integer, floating point input or branch/reach index from user interaction (legacy mode) - -### graphical user interface `gui.py` - -This file implements the graphical user interface version of D-FAST Morphological Impact. -It can be used to generate and edit the analysis configuration files used for evaluating a single measure. -This run mode is triggered by calling the program using the command line argument `--mode gui` or by not specifying a `--mode` argument since this is the default run mode. -It supports both new and old simulation result files. - -![Example of the main dialog](main_dialog.png "Example of the main dialog") - -This module is subdivided into the following routines: - -* `gui_text` obtains a gui text from the global dictionary of dialog texts -* `create_dialog` to create the graphical user interface -* `activate_dialog` to hand over control to the user interface -* `updated_mode` react to a switch between `WAQUA export` and `D-Flow FM map` modes -* `updated_branch` react to a change in branch selection -* `updated_reach` react to a change in reach selection -* `update_qvalues` update the discharge values in the dialog and indicate the impacted length -* `close_dialog` support function to close the dialog and end the program -* `menu_load_configuration` callback function to ask for an analysis configuration file and trigger loading of that file -* `load_configuration` function to actually load an analysis configuration file and update the user interface -* `menu_save_configuration` callback function to ask for a file name and trigger saving the configuration under that name -* `get_configuration` function to actually extract a configuration from the user interface -* `run_analysis` callback function to run the analysis, generate report and result file (implemented via call to `batch_mode`) -* `menu_about_self` and `menu_about_qt` callback functions to show About boxes -* `main` main routine creating the user interface, optionally load a configuration, and hand over control to the dialog - -* `openFileLayout` support function to create a dialog entries of a text field with a browse for file option for all simulation result files options -* `selectFile` support function to select a D-Flow FM result file -* `showMessage` support function to show a message dialog -* `showError` support function to show an error dialog - -### general input/output `io.py` - -The `io.py` file contains all generic file handling routines for reading configuration files, processing netCDF input and output files, and functions to support legacy input and output formats. - -* `load_program_texts` fills a global dictionary of dialog texts by reading the dialog text configuration file -* `log_text` obtains one text from the global dictionary of dialog texts and writes it to screen or file -* `get_filename` obtains a file name from the global dictionary of dialog texts -* `get_text` obtain one text from the global dictionary of dialog texts - -* `read_rivers` reads the rivers configuration file -* `collect_values1` support function for collecting branch/reach data for a parameter with one value, e.g. `PRHigh` -* `collect_values2` support function for collecting branch/reach data for a parameter with two values, e.g. `QFit` -* `collect_values4` support function for collecting branch/reach data for a parameter with four values, e.g. `QLevels` -* `write_config` support function to write a nicely formatted analysis configuration file - -* `read_variable` for reading data fields from the D-Flow FM map-file -* `get_mesh_and_facedim_names` for obtaining the name of the 2D mesh and the name of the corresponding face dimension -* `copy_ugrid` for copying UGRID mesh information from the D-Flow FM map-file to the spatial output file -* `copy_var` support function for copying an individual netCDF variable from netCDF file to another -* `ugrid_add` for adding a single cell centred variable to a netCDF file containing UGRID mesh data - -* `read_waqua_xyz` for reading the xyz-files containing data exported from the WAQUA model (legacy function) -* `write_simona_box` for writing a SIMONA BOX-file (legacy function) - -* `absolute_path` converts a relative path into an absolute path given a reference path -* `relative_path` converts an absolute path into a path relative to a given reference path - -### core algorithm `kernel.py` - -The `dfastmi.py` file contains all routines for that perform the mathematical processing steps of the algorithm. -This module also contains the main version number. - -* `char_discharges` for determining the characteristic discharges Q1, Q2 and Q3 -* `char_times` for computing the associated time and weight factors -* `estimate_sedimentation_length` for computing the characteristic length scale of the impact -* `dzq_from_du_and_h` for computing the spatial pattern of dzq based on the change in velocity magnitude and local water depth -* `main_computation` for computing the minimum, mean and maximum impact patterns of the measure on the bed levels after one year - - -# Software Maintenance - -Currently we are at the stage of prototyping, but the end goal of the project is to deliver a formal maintained product. -This means that we will be following a set of best practices for software maintenance to assure the quality of the product. - -## Coding Guidelines - -This program has been implemented following the Python PEP 8 style guide using Python 3.8. -The code has been documented using standard Python docstrings and type hinting. -For the static type checker _mypy_ is used. - - pip install mypy - mypy dfastbe - -Variables associated with NumPy, netCDF4 and PyQt5 are not yet properly type checked. - - mypy dfastmi - dfastmi\kernel.py:35: error: Skipping analyzing 'numpy': found module but no type hints or library stubs - dfastmi\io.py:32: error: Skipping analyzing 'numpy': found module but no type hints or library stubs - dfastmi\io.py:33: error: Skipping analyzing 'netCDF4': found module but no type hints or library stubs - dfastmi\batch.py:36: error: Skipping analyzing 'numpy': found module but no type hints or library stubs - dfastmi\batch.py:36: note: See https://mypy.readthedocs.io/en/latest/running_mypy.html#missing-imports - dfastmi\gui.py:33: error: Skipping analyzing 'PyQt5': found module but no type hints or library stubs - dfastmi\gui.py:34: error: Skipping analyzing 'PyQt5.QtGui': found module but no type hints or library stubs - dfastmi\gui.py:491: error: Cannot assign to a method - dfastmi\gui.py:491: error: Incompatible types in assignment (expression has type "Type[str]", variable has type "Callable[[str], str]") - dfastmi\cli.py:35: error: Skipping analyzing 'numpy': found module but no type hints or library stubs - dfastmi\cmd.py:35: error: Skipping analyzing 'numpy': found module but no type hints or library stubs - Found 10 errors in 6 files (checked 8 source files) - -The final two errors report (`dfastmi\\gui.py:491`) are caused by a statement to switch the configparser to case sensitive mode while creating the data structure to be saved to file; most likely the data type is not properly set in the configparser definition. -The code works conforms to the configparser documentation and works properly as is. - -A consistent coding style is enforced by means of the _Black Code Formatter_. - - pip install black - black dfastmi - -## Version Control - -GitHub is used for software version control. -The repository is located at https://github.com/Deltares/D-FAST_Morphological_Impact. -Since D-FAST Morphological Impact builds on WAQMORF, the initial release of the new Python product is labeled as version 2.0.0. - -## Automated Building and Testing of Code - -Automated TeamCity projects will be set up for testing the Python code, for building (and optionally signing of) binaries, and testing of the binaries. -In this way the formal release process can be easily aligned with the other products. -This is ongoing work; the test and build steps are currently run locally - - ================================================= test session starts ================================================== - platform win32 -- Python 3.8.2, pytest-6.1.2, py-1.9.0, pluggy-0.13.1 - rootdir: D:\checkouts\D-FAST\D-FAST_Morphological_Impact - collected 65 items - - tests\test_batch.py ... [ 4%] - tests\test_cli.py .. [ 7%] - tests\test_io.py ........................................ [ 69%] - tests\test_kernel.py .................... [100%] - - ================================================== 65 passed in 1.43s ================================================== - -The results of the software is verified by means of - -1. Unit testing at the level of functions, such as reading and writing of files, and basic testing of the algorithms. -All functions included in `io.py` and `kernel.py` are covered by unit tests. -These tests are carried out by means of the `pytest` framework. -1. Regression tests have been set up to verify that the results of the command line interactive mode (with redirected standard in input for files coming from WAQUA) and the batch mode (with configuration file input for files coming from either WAQUA or D-Flow FM) remain unchanged under further code developments. - -For the regression tests four sets of input files have been selected: - -1. One set of legacy input files coming from WAQUA. -Running D-FAST Morphological Impact on those converted files gives identical results in the same file format as WAQMORF. -1. Those WAQUA results have been converted to a set of D-Flow FM like netCDF files. -Running D-FAST Morphological Impact on those converted files gives identical numerical results but stored in the new netCDF file format. -1. For the same case a set of D-Flow FM simulations was carried out using the same curvilinear mesh as was used in WAQUA. -Since the D-Flow FM results differ from those obtained from WAQUA, the results of D-FAST Morphological Impact are also slightly different. -However, the geometry of this set uses basically the same geometry as the first two sets. -1. Finally, also a set of D-Flow FM simulations using a new unstructured mesh was carried for the same case. -In this case both the geometry and simulation results differ, the D-FAST Morphological Impact are hence also slightly different. - -## Automated Generation of Documentation - -The documentation has been written in a combination of LaTeX and markdown files which are maintained in the GitHub repository alongside the source code. -The PDF version of the user manual and this technical reference manual are generated automatically as part of the daily cycle of building all manuals on the Deltares TeamCity server. \ No newline at end of file diff --git a/tests/batch/Test_FileNameRetriever_legacy.py b/tests/batch/Test_FileNameRetriever_legacy.py index 97e6cd77..d73d2912 100644 --- a/tests/batch/Test_FileNameRetriever_legacy.py +++ b/tests/batch/Test_FileNameRetriever_legacy.py @@ -71,12 +71,12 @@ def given_config_parser_with_data_when_get_file_names_legacy_then_return_expecte def get_expected_q_filename_and_update_config(self, config: ConfigParser, q: str): reference = "Reference" - with_measure = "WithMeasure" + with_intervention = "WithMeasure" q_reference_filename = q + "-" + reference - q_with_measure_filename = q + "-" + with_measure + q_with_intervention_filename = q + "-" + with_intervention config.add_section(q) config.set(q, reference, q_reference_filename) - config.set(q, with_measure, q_with_measure_filename) + config.set(q, with_intervention, q_with_intervention_filename) - return (q_reference_filename, q_with_measure_filename) + return (q_reference_filename, q_with_intervention_filename) diff --git a/tests/batch/test_FileNameRetriever.py b/tests/batch/test_FileNameRetriever.py index 339d0dd9..3a3ec0a6 100644 --- a/tests/batch/test_FileNameRetriever.py +++ b/tests/batch/test_FileNameRetriever.py @@ -127,15 +127,15 @@ def get_expected_q_filename_and_update_config( self, config: ConfigParser, q: str, discharge_value, tide=False ): reference = "Reference" - with_measure = "WithMeasure" + with_intervention = "WithIntervention" discharge = "Discharge" q_reference_filename = q + "-" + reference - q_with_measure_filename = q + "-" + with_measure + q_with_intervention_filename = q + "-" + with_intervention config.add_section(q) config.set(q, reference, q_reference_filename) - config.set(q, with_measure, q_with_measure_filename) + config.set(q, with_intervention, q_with_intervention_filename) config.set(q, discharge, discharge_value) if tide: @@ -143,4 +143,4 @@ def get_expected_q_filename_and_update_config( q_tide = q + "-" + tide config.set(q, tide, q_tide) - return (q_reference_filename, q_with_measure_filename) + return (q_reference_filename, q_with_intervention_filename) diff --git a/tests/c01 - GendtseWaardNevengeul/Qmin_4000_v2.cfg b/tests/c01 - GendtseWaardNevengeul/Qmin_4000_v2.cfg index 2d3bfd40..09e1f7aa 100644 --- a/tests/c01 - GendtseWaardNevengeul/Qmin_4000_v2.cfg +++ b/tests/c01 - GendtseWaardNevengeul/Qmin_4000_v2.cfg @@ -13,14 +13,14 @@ [C1] Discharge = 3000.0 Reference = reference-Q1_map.nc - WithMeasure = reference-Q1_map.nc + WithIntervention = reference-Q1_map.nc [C2] Discharge = 4000.0 Reference = reference-Q2_map.nc - WithMeasure = reference-Q2_map.nc + WithIntervention = reference-Q2_map.nc [C3] Discharge = 6000.0 Reference = reference-Q3_map.nc - WithMeasure = measure-Q3_map.nc + WithIntervention = measure-Q3_map.nc diff --git a/tests/c01 - GendtseWaardNevengeul/Qmin_4000_v2_rkm.cfg b/tests/c01 - GendtseWaardNevengeul/Qmin_4000_v2_rkm.cfg index b7efb3b9..e49866eb 100644 --- a/tests/c01 - GendtseWaardNevengeul/Qmin_4000_v2_rkm.cfg +++ b/tests/c01 - GendtseWaardNevengeul/Qmin_4000_v2_rkm.cfg @@ -14,14 +14,14 @@ [C1] Discharge = 3000.0 Reference = reference-Q1_map.nc - WithMeasure = reference-Q1_map.nc + WithIntervention = reference-Q1_map.nc [C2] Discharge = 4000.0 Reference = reference-Q2_map.nc - WithMeasure = reference-Q2_map.nc + WithIntervention = reference-Q2_map.nc [C3] Discharge = 6000.0 Reference = reference-Q3_map.nc - WithMeasure = measure-Q3_map.nc + WithIntervention = measure-Q3_map.nc diff --git a/tests/c01 - GendtseWaardNevengeul/Qmin_4000_v3_tide.cfg b/tests/c01 - GendtseWaardNevengeul/Qmin_4000_v3_tide.cfg index 59ecc310..a15eee96 100644 --- a/tests/c01 - GendtseWaardNevengeul/Qmin_4000_v3_tide.cfg +++ b/tests/c01 - GendtseWaardNevengeul/Qmin_4000_v3_tide.cfg @@ -16,16 +16,16 @@ Discharge = 3000.0 TideBC = 0 Reference = reference-Q1_map.nc - WithMeasure = reference-Q1_map.nc + WithIntervention = reference-Q1_map.nc [C2] Discharge = 4000.0 TideBC = 0 Reference = reference-Q2_map.nc - WithMeasure = reference-Q2_map.nc + WithIntervention = reference-Q2_map.nc [C3] Discharge = 6000.0 TideBC = 0 Reference = reference-Q3_map.nc - WithMeasure = measure-Q3_map.nc + WithIntervention = measure-Q3_map.nc diff --git a/tests/c01 - GendtseWaardNevengeul/ref_Qmin_Q4000/report.txt b/tests/c01 - GendtseWaardNevengeul/ref_Qmin_Q4000/report.txt index df28dc47..de7a3684 100644 --- a/tests/c01 - GendtseWaardNevengeul/ref_Qmin_Q4000/report.txt +++ b/tests/c01 - GendtseWaardNevengeul/ref_Qmin_Q4000/report.txt @@ -1,5 +1,5 @@ This program implements the "WAQUA vuistregel" for the estimation of the local -morphological effects of a local measure (i.e. an adjustment to the river). See +morphological effects of a local intervention (i.e. an adjustment to the river). See "RWS-WD memo WAQUA vuistregel 20-10-08" for details). It is based on an estimation of the equilibrium bed level changes in the main @@ -23,8 +23,8 @@ equilibrium can be reached. This is version 3.0.0. -The results are not valid for a combination of multiple measures, or for a -single measure extending over a distance more than 4 km! +The results are not valid for a combination of multiple interventions, or for a +single intervention extending over a distance more than 4 km! In order to use D-FAST Morphological Impact you need to run reference and @@ -44,8 +44,8 @@ Impacted length : 299 m Critical flow velocity : 0.3 m/s -Condition | Reference file (without measure) | File with measure - 4000.0 m3/s | --- | --- (measure not active) +Condition | Reference file (without intervention) | File with intervention + 4000.0 m3/s | --- | --- (intervention not active) 6000.0 m3/s | reference-Q3_map.nc | measure-Q3_map.nc ================================================================================ diff --git a/tests/c01 - GendtseWaardNevengeul/ref_Qmin_Q4000_rkm/report.txt b/tests/c01 - GendtseWaardNevengeul/ref_Qmin_Q4000_rkm/report.txt index d34a88cb..18e24adc 100644 --- a/tests/c01 - GendtseWaardNevengeul/ref_Qmin_Q4000_rkm/report.txt +++ b/tests/c01 - GendtseWaardNevengeul/ref_Qmin_Q4000_rkm/report.txt @@ -1,5 +1,5 @@ D-FAST Morphological Impact implements an algorithm to estimate the local -morphological effects of a local measure (i.e. an adjustment to the river). +morphological effects of a local intervention (i.e. an adjustment to the river). The conceptual framework was originally introduced in "RWS-WD memo WAQUA vuistregel 20-10-08" but it has been extended and improved over the years. Check the user manual @@ -27,8 +27,8 @@ can be reached. This is version 3.0.0. -The results are not valid for a combination of multiple measures, or for a -single measure extending over a distance more than 4 km! +The results are not valid for a combination of multiple interventions, or for a +single intervention extending over a distance more than 4 km! In order to use D-FAST Morphological Impact you need to run reference and @@ -48,9 +48,9 @@ Impacted length : 299 m Critical flow velocity : 0.3 m/s -Condition | Reference file (without measure) | File with measure - 3000.0 m3/s | --- | --- (measure not active) - 4000.0 m3/s | --- | --- (measure not active) +Condition | Reference file (without intervention) | File with intervention + 3000.0 m3/s | --- | --- (intervention not active) + 4000.0 m3/s | --- | --- (intervention not active) 6000.0 m3/s | reference-Q3_map.nc | measure-Q3_map.nc ================================================================================ diff --git a/tests/c01 - GendtseWaardNevengeul/ref_Qmin_Q4000_special_backward_case/report.txt b/tests/c01 - GendtseWaardNevengeul/ref_Qmin_Q4000_special_backward_case/report.txt index d34a88cb..18e24adc 100644 --- a/tests/c01 - GendtseWaardNevengeul/ref_Qmin_Q4000_special_backward_case/report.txt +++ b/tests/c01 - GendtseWaardNevengeul/ref_Qmin_Q4000_special_backward_case/report.txt @@ -1,5 +1,5 @@ D-FAST Morphological Impact implements an algorithm to estimate the local -morphological effects of a local measure (i.e. an adjustment to the river). +morphological effects of a local intervention (i.e. an adjustment to the river). The conceptual framework was originally introduced in "RWS-WD memo WAQUA vuistregel 20-10-08" but it has been extended and improved over the years. Check the user manual @@ -27,8 +27,8 @@ can be reached. This is version 3.0.0. -The results are not valid for a combination of multiple measures, or for a -single measure extending over a distance more than 4 km! +The results are not valid for a combination of multiple interventions, or for a +single intervention extending over a distance more than 4 km! In order to use D-FAST Morphological Impact you need to run reference and @@ -48,9 +48,9 @@ Impacted length : 299 m Critical flow velocity : 0.3 m/s -Condition | Reference file (without measure) | File with measure - 3000.0 m3/s | --- | --- (measure not active) - 4000.0 m3/s | --- | --- (measure not active) +Condition | Reference file (without intervention) | File with intervention + 3000.0 m3/s | --- | --- (intervention not active) + 4000.0 m3/s | --- | --- (intervention not active) 6000.0 m3/s | reference-Q3_map.nc | measure-Q3_map.nc ================================================================================ diff --git a/tests/c01 - GendtseWaardNevengeul/ref_report.txt b/tests/c01 - GendtseWaardNevengeul/ref_report.txt index 6fd9ac1b..80a0b69b 100644 --- a/tests/c01 - GendtseWaardNevengeul/ref_report.txt +++ b/tests/c01 - GendtseWaardNevengeul/ref_report.txt @@ -1,5 +1,5 @@ This program implements the "WAQUA vuistregel" for the estimation of the local -morphological effects of a local measure (i.e. an adjustment to the river). See +morphological effects of a local intervention (i.e. an adjustment to the river). See "RWS-WD memo WAQUA vuistregel 20-10-08" for details). It is based on an estimation of the equilibrium bed level changes in the main @@ -23,8 +23,8 @@ equilibrium can be reached. This is version 2.0.0. -The results are not valid for a combination of multiple measures, or for a -single measure extending over a distance more than 4 km! +The results are not valid for a combination of multiple interventions, or for a +single intervention extending over a distance more than 4 km! In order to use D-FAST Morphological Impact you need to run reference and diff --git a/tests/c01 - GendtseWaardNevengeul/ref_stdout_UK.txt b/tests/c01 - GendtseWaardNevengeul/ref_stdout_UK.txt index 15016ed4..03f9707e 100644 --- a/tests/c01 - GendtseWaardNevengeul/ref_stdout_UK.txt +++ b/tests/c01 - GendtseWaardNevengeul/ref_stdout_UK.txt @@ -1,5 +1,5 @@ This program implements the "WAQUA vuistregel" for the estimation of the local -morphological effects of a local measure (i.e. an adjustment to the river). See +morphological effects of a local intervention (i.e. an adjustment to the river). See "RWS-WD memo WAQUA vuistregel 20-10-08" for details). It is based on an estimation of the equilibrium bed level changes in the main @@ -26,8 +26,8 @@ Confirm using "y" ... y -The results are not valid for a combination of multiple measures, or for a -single measure extending over a distance more than 4 km! +The results are not valid for a combination of multiple interventions, or for a +single intervention extending over a distance more than 4 km! In order to use D-FAST Morphological Impact you need to run reference and @@ -63,7 +63,7 @@ bed level changes. These files are: Confirm using "y", or restart using "n" ... y -On which branch is the measure located? +On which branch is the intervention located? river branch nr @@ -83,7 +83,7 @@ The number of the river branch is ... 1 -On which reach is the measure located? +On which reach is the intervention located? river reach nr @@ -104,7 +104,7 @@ The number of the river reach is ... -------------------------------------------------------------------------------- -The measure is located on reach Boven-Waal km 868-886 +The intervention is located on reach Boven-Waal km 868-886 -------------------------------------------------------------------------------- @@ -113,20 +113,20 @@ Confirm using "y" or restart the location selection using "n" ... y -The next three questions will be used to characterize the measure. If a measure +The next three questions will be used to characterize the intervention. If a intervention impacts the hydrodynamics in the main channel at multiple locations, answer the -questions for the part of the measure that is expected to have the most impact +questions for the part of the intervention that is expected to have the most impact on the navigation channel. -Is the measure flow-carrying for all discharges at Lobith above 1000 m3/s? +Is the intervention flow-carrying for all discharges at Lobith above 1000 m3/s? Confirm using "y", or reply "n" ... y Most of the flood plains become flow-carrying for discharges above 4000 -m3/s. Is the measure also bankfull for these discharges? +m3/s. Is the intervention also bankfull for these discharges? Confirm using "y", or reply "n" ... @@ -185,15 +185,15 @@ Input of block 1 data files at Q=3000.0 m3/s -------------------------------------------------------------------------------- -The file name of flow velocity magnitudes without measure is... +The file name of flow velocity magnitudes without intervention is... xyz_velocity-zeta.001.Q1.xyz File "xyz_velocity-zeta.001.Q1.xyz" found! -The file name of water depths without measure is... +The file name of water depths without intervention is... xyz_waterdepth-zeta.001.Q1.xyz File "xyz_waterdepth-zeta.001.Q1.xyz" found! -The file name of flow velocity magnitudes with measure is... +The file name of flow velocity magnitudes with intervention is... xyz_velocity-zeta.002.Q1.xyz File "xyz_velocity-zeta.002.Q1.xyz" found! @@ -208,15 +208,15 @@ Input of block 2 data files at Q=4000.0 m3/s -------------------------------------------------------------------------------- -The file name of flow velocity magnitudes without measure is... +The file name of flow velocity magnitudes without intervention is... xyz_velocity-zeta.001.Q2.xyz File "xyz_velocity-zeta.001.Q2.xyz" found! -The file name of water depths without measure is... +The file name of water depths without intervention is... xyz_waterdepth-zeta.001.Q2.xyz File "xyz_waterdepth-zeta.001.Q2.xyz" found! -The file name of flow velocity magnitudes with measure is... +The file name of flow velocity magnitudes with intervention is... xyz_velocity-zeta.002.Q2.xyz File "xyz_velocity-zeta.002.Q2.xyz" found! @@ -231,15 +231,15 @@ Input of block 3 data files at Q=6000.0 m3/s -------------------------------------------------------------------------------- -The file name of flow velocity magnitudes without measure is... +The file name of flow velocity magnitudes without intervention is... xyz_velocity-zeta.001.Q3.xyz File "xyz_velocity-zeta.001.Q3.xyz" found! -The file name of water depths without measure is... +The file name of water depths without intervention is... xyz_waterdepth-zeta.001.Q3.xyz File "xyz_waterdepth-zeta.001.Q3.xyz" found! -The file name of flow velocity magnitudes with measure is... +The file name of flow velocity magnitudes with intervention is... xyz_velocity-zeta.002.Q3.xyz File "xyz_velocity-zeta.002.Q3.xyz" found! diff --git a/tests/config/Test_configuration_checker_legacy.py b/tests/config/Test_configuration_checker_legacy.py index 93c16077..9fa7123a 100644 --- a/tests/config/Test_configuration_checker_legacy.py +++ b/tests/config/Test_configuration_checker_legacy.py @@ -135,7 +135,7 @@ def given_mode_DFLOWFM_MAP_with_empty_discharge_check_configuration_then_return_ assert not configuration_checker.check_configuration(rivers, config) - def given_mode_DFLOWFM_MAP_with_valid_discharge_check_with_valid_reference_check_but_with_invalid_with_measure_check_configuration_then_return_false( + def given_mode_DFLOWFM_MAP_with_valid_discharge_check_with_valid_reference_check_but_with_invalid_with_intervention_check_configuration_then_return_false( self, configuration_checker: ConfigurationCheckerLegacy, rivers: RiversObject, diff --git a/tests/config/test_DataAccess_core.py b/tests/config/test_DataAccess_core.py index a731634f..661afafb 100644 --- a/tests/config/test_DataAccess_core.py +++ b/tests/config/test_DataAccess_core.py @@ -19,13 +19,13 @@ def given_configuration_file_when_save_configuration_file_then_file_is_saved_wit ): expected_lines = [ "[General]\n", - " riverkm = RiverKM\n", - " figuredir = FigureDir\n", - " outputdir = OutputDir\n", + " riverkm = RiverKM\n", + " figuredir = FigureDir\n", + " outputdir = OutputDir\n", "\n", "[SomeSection]\n", - " reference = reference\n", - " withmeasure = with_measure\n", + " reference = reference\n", + " withintervention = with_intervention\n", ] file_path = tmp_path / "test_file.cfg" @@ -49,7 +49,7 @@ def sample_config(self, tmp_path): } config["SomeSection"] = { "Reference": tmp_path / "reference", - "WithMeasure": tmp_path / "with_measure", + "WithIntervention": tmp_path / "with_intervention", } return config @@ -261,4 +261,4 @@ def add_c_section(self, config: ConfigParser, name: str, value: str): config.add_section(name) config.set(name, "Discharge", value) config.set(name, "Reference", value) - config.set(name, "WithMeasure", value) + config.set(name, "WithIntervention", value) diff --git a/tests/config/test_configuration_checker.py b/tests/config/test_configuration_checker.py index 13a6c0a8..16747b93 100644 --- a/tests/config/test_configuration_checker.py +++ b/tests/config/test_configuration_checker.py @@ -150,4 +150,4 @@ def add_c_section(self, config: ConfigParser, name: str, value: str): config.add_section(name) config.set(name, "Discharge", value) config.set(name, "Reference", value) - config.set(name, "WithMeasure", value) + config.set(name, "WithIntervention", value) diff --git a/tests/files/Qmin_4000_v2_rkm_with_unknown_key.cfg b/tests/files/Qmin_4000_v2_rkm_with_unknown_key.cfg index 03c0a974..7bb5fea0 100644 --- a/tests/files/Qmin_4000_v2_rkm_with_unknown_key.cfg +++ b/tests/files/Qmin_4000_v2_rkm_with_unknown_key.cfg @@ -16,17 +16,17 @@ [C1] Discharge = 3000.0 Reference = reference-Q1_map.nc - WithMeasure = reference-Q1_map.nc + WithIntervention = reference-Q1_map.nc [C2] Discharge = 4000.0 Reference = reference-Q2_map.nc - WithMeasure = reference-Q2_map.nc + WithIntervention = reference-Q2_map.nc [C3] Discharge = 6000.0 Reference = reference-Q3_map.nc - WithMeasure = measure-Q3_map.nc + WithIntervention = measure-Q3_map.nc [Onzin1] Troep = 1000.0 \ No newline at end of file diff --git a/tests/gui/test_dialog_model.py b/tests/gui/test_dialog_model.py index 1894a754..46302f68 100644 --- a/tests/gui/test_dialog_model.py +++ b/tests/gui/test_dialog_model.py @@ -76,9 +76,9 @@ def mock_reference_files() -> FilenameDict: @pytest.fixture -def mock_measure_files() -> FilenameDict: - """Fixture for creating mock measurement files.""" - return {80.1: "measure1.txt", 80.2: "measure2.txt"} +def mock_intervention_files() -> FilenameDict: + """Fixture for creating mock interventionment files.""" + return {80.1: "intervention1.txt", 80.2: "intervention2.txt"} @pytest.fixture @@ -214,14 +214,14 @@ def test_check_configuration( mock_branch: MagicMock, mock_areach: MagicMock, mock_reference_files: FilenameDict, - mock_measure_files: FilenameDict, + mock_intervention_files: FilenameDict, ) -> None: """ Test case for checking configuration. - given: A DialogModel instance and mocked branch, reach, reference files, and measurement files. + given: A DialogModel instance and mocked branch, reach, reference files, and interventionment files. when: Checking the configuration. - then: The configuration is checked with the expected branch, reach, reference files, and measurement files. + then: The configuration is checked with the expected branch, reach, reference files, and interventionment files. """ # Mocking the method calls inside the methods dialog_model.get_configuration = MagicMock(return_value=ConfigParser()) @@ -229,7 +229,12 @@ def test_check_configuration( # Call the check_configuration method result = dialog_model.check_configuration( - mock_branch, mock_areach, mock_reference_files, mock_measure_files, 80.1, 8.01 + mock_branch, + mock_areach, + mock_reference_files, + mock_intervention_files, + 80.1, + 8.01, ) assert ( @@ -238,7 +243,12 @@ def test_check_configuration( # Assert that get_configuration is called with the correct arguments dialog_model.get_configuration.assert_called_once_with( - mock_branch, mock_areach, mock_reference_files, mock_measure_files, 80.1, 8.01 + mock_branch, + mock_areach, + mock_reference_files, + mock_intervention_files, + 80.1, + 8.01, ) @@ -247,18 +257,23 @@ def test_get_configuration( mock_branch: MagicMock, mock_areach: MagicMock, mock_reference_files: FilenameDict, - mock_measure_files: FilenameDict, + mock_intervention_files: FilenameDict, ) -> None: """ Test case for getting configuration. - given: A DialogModel instance and mocked branch, reach, reference files, and measurement files. + given: A DialogModel instance and mocked branch, reach, reference files, and interventionment files. when: Getting the configuration. then: The configuration is retrieved and checked for correctness. """ # Call the get_configuration method config_parser = dialog_model.get_configuration( - mock_branch, mock_areach, mock_reference_files, mock_measure_files, 80.1, 8.01 + mock_branch, + mock_areach, + mock_reference_files, + mock_intervention_files, + 80.1, + 8.01, ) # Check if the configuration parser is an instance of ConfigParser @@ -280,7 +295,7 @@ def test_get_configuration( assert general_section.getboolean("ClosePlots") == dialog_model.close_plots # Check if the condition configurations are not added since Areach is not currently implemented for getting condition configuration. - num_conditions = min(len(mock_reference_files), len(mock_measure_files)) + num_conditions = min(len(mock_reference_files), len(mock_intervention_files)) for i in range(1, num_conditions + 1): condition_key = f"C{i}" assert condition_key not in config_parser @@ -291,18 +306,23 @@ def test_get_configuration_with_reach( mock_branch: MagicMock, mock_reach: MagicMock, mock_reference_files: FilenameDict, - mock_measure_files: FilenameDict, + mock_intervention_files: FilenameDict, ) -> None: """ Test case for getting configuration. - given: A DialogModel instance and mocked branch, reach, reference files, and measurement files. + given: A DialogModel instance and mocked branch, reach, reference files, and interventionment files. when: Getting the configuration. then: The configuration is retrieved and checked for correctness. """ # Call the get_configuration method config_parser = dialog_model.get_configuration( - mock_branch, mock_reach, mock_reference_files, mock_measure_files, 80.1, 8.01 + mock_branch, + mock_reach, + mock_reference_files, + mock_intervention_files, + 80.1, + 8.01, ) # Check if the configuration parser is an instance of ConfigParser @@ -324,7 +344,7 @@ def test_get_configuration_with_reach( assert general_section.getboolean("ClosePlots") == dialog_model.close_plots # Check if the condition configurations are added correctly, based on the length of the mocked files. - num_conditions = min(len(mock_reference_files), len(mock_measure_files)) + num_conditions = min(len(mock_reference_files), len(mock_intervention_files)) for i in range(1, num_conditions + 1): condition_key = f"C{i}" assert condition_key in config_parser @@ -332,4 +352,6 @@ def test_get_configuration_with_reach( discharge = list(mock_reference_files.keys())[i - 1] assert float(condition_section["Discharge"]) == discharge assert condition_section["Reference"] == mock_reference_files[discharge] - assert condition_section["WithMeasure"] == mock_measure_files[discharge] + assert ( + condition_section["WithIntervention"] == mock_intervention_files[discharge] + ) diff --git a/tests/gui/test_dialog_view.py b/tests/gui/test_dialog_view.py index 020f53eb..3b9ff89a 100644 --- a/tests/gui/test_dialog_view.py +++ b/tests/gui/test_dialog_view.py @@ -428,27 +428,31 @@ def test_selectFile_reference_edit(self, dialog_view: DialogView, monkeypatch): assert input_box.text() == "/path/to/file" assert dialog_view._view_model.reference_files[3000.0] == "/path/to/file" - def test_selectFile_with_measure_edit(self, dialog_view: DialogView, monkeypatch): + def test_selectFile_with_intervention_edit( + self, dialog_view: DialogView, monkeypatch + ): """ given : dialog_view - when : selecting a file for a measure edit - then : the measure file should be updated correctly + when : selecting a file for a intervention edit + then : the intervention file should be updated correctly """ # Create a mock QFileDialog.getExistingDirectory function - mock_getOpenFileName = MagicMock(return_value=["/path/to/file_with_measure"]) + mock_getOpenFileName = MagicMock( + return_value=["/path/to/file_with_intervention"] + ) monkeypatch.setattr(QFileDialog, "getOpenFileName", mock_getOpenFileName) # Call the method with the desired key - key = "4000.0_with_measure" + key = "4000.0_with_intervention" dialog_view._select_file(key) # Assert that the appropriate setText and view_model attribute assignment calls were made input_box = dialog_view._general_widget.findChild(QLineEdit, key) - assert input_box.text() == "/path/to/file_with_measure" + assert input_box.text() == "/path/to/file_with_intervention" assert ( - dialog_view._view_model.measure_files[4000.0] - == "/path/to/file_with_measure" + dialog_view._view_model.intervention_files[4000.0] + == "/path/to/file_with_intervention" ) @@ -519,34 +523,34 @@ def test_update_condition_files_with_load_configuration( when : updating condition files then : the condition files should be updated correctly """ - # Mock the reference files and measure files + # Mock the reference files and intervention files reference_file_3000 = "reference_file_10.txt" reference_file_4000 = "reference_file_20.txt" - measure_file_3000 = "measure_file_10.txt" - measure_file_4000 = "measure_file_20.txt" + intervention_file_3000 = "intervention_file_10.txt" + intervention_file_4000 = "intervention_file_20.txt" expected_reference_file_3000 = str(tmp_path / "reference_file_10.txt") expected_reference_file_4000 = str(tmp_path / "reference_file_20.txt") - expected_measure_file_3000 = str(tmp_path / "measure_file_10.txt") - expected_measure_file_4000 = str(tmp_path / "measure_file_20.txt") + expected_intervention_file_3000 = str(tmp_path / "intervention_file_10.txt") + expected_intervention_file_4000 = str(tmp_path / "intervention_file_20.txt") config_file_data = f""" - [General] - Version = 3.0 - Branch = Bovenrijn & Waal - Reach = Boven-Waal km 868-886 +[General] + Version = 3.0 + Branch = Bovenrijn & Waal + Reach = Boven-Waal km 868-886 [C1] - Discharge = 3000.0 - TideBC = 0 - Reference = {reference_file_3000} - WithMeasure = {measure_file_3000} + Discharge = 3000.0 + TideBC = 0 + Reference = {reference_file_3000} + WithIntervention = {intervention_file_3000} [C2] - Discharge = 4000.0 - TideBC = 0 - Reference = {reference_file_4000} - WithMeasure = {measure_file_4000} + Discharge = 4000.0 + TideBC = 0 + Reference = {reference_file_4000} + WithIntervention = {intervention_file_4000} """ config_file = tmp_path / "config.cfg" @@ -563,14 +567,18 @@ def test_update_condition_files_with_load_configuration( == expected_reference_file_3000 ) assert ( - dialog_view._general_widget.findChild(QLineEdit, "3000.0_with_measure").text() - == expected_measure_file_3000 + dialog_view._general_widget.findChild( + QLineEdit, "3000.0_with_intervention" + ).text() + == expected_intervention_file_3000 ) assert ( dialog_view._general_widget.findChild(QLineEdit, "4000.0_reference").text() == expected_reference_file_4000 ) assert ( - dialog_view._general_widget.findChild(QLineEdit, "4000.0_with_measure").text() - == expected_measure_file_4000 + dialog_view._general_widget.findChild( + QLineEdit, "4000.0_with_intervention" + ).text() + == expected_intervention_file_4000 ) diff --git a/tests/gui/test_dialog_view_model.py b/tests/gui/test_dialog_view_model.py index e21e3a40..6bced8ad 100644 --- a/tests/gui/test_dialog_view_model.py +++ b/tests/gui/test_dialog_view_model.py @@ -203,7 +203,10 @@ def test_load_configuration(dialog_view_model, mock_model): mock_model.reach_name = "Reach1" mock_model.config.sections.return_value = ["section1"] mock_model.config["section1"].getfloat.return_value = 10.0 - mock_model.config["section1"].get.return_value = "reference_file", "measure_file" + mock_model.config["section1"].get.return_value = ( + "reference_file", + "intervention_file", + ) mock_model.figure_dir = "mocked_figure_directory" mock_model.output_dir = "mocked_output_directory" diff --git a/tests/io/test_DataAccess_ApplicationSettingsHelper.py b/tests/io/test_DataAccess_ApplicationSettingsHelper.py index 3e4a76c1..36584137 100644 --- a/tests/io/test_DataAccess_ApplicationSettingsHelper.py +++ b/tests/io/test_DataAccess_ApplicationSettingsHelper.py @@ -73,7 +73,7 @@ def test_log_text_replace_variable_id_with_provided_value_in_dictionary( with captured_output() as (out, err): ApplicationSettingsHelper.log_text(key, dict=dict) outstr = out.getvalue().splitlines() - strref = ["The measure is located on reach ABC"] + strref = ["The intervention is located on reach ABC"] assert outstr == strref def test_log_text_replace_variable_id_with_provided_value_in_dictionary_and_write_in_file( @@ -88,7 +88,7 @@ def test_log_text_replace_variable_id_with_provided_value_in_dictionary_and_writ with open(filename, "w") as f: ApplicationSettingsHelper.log_text(key, dict=dict, file=f) all_lines = open(filename, "r").read().splitlines() - strref = ["The measure is located on reach ABC"] + strref = ["The intervention is located on reach ABC"] assert all_lines == strref