From 6dabc98886766bc9d353217fa6f1416479b05d6a Mon Sep 17 00:00:00 2001 From: Jerome Lebreton Date: Tue, 11 Jun 2024 11:00:50 +0200 Subject: [PATCH 001/121] test: creation and modification of unit test test: creation du test unitaire nettoye --- .../test_refinement/test_optical_flow.py | 143 +++++++++++++++++- 1 file changed, 140 insertions(+), 3 deletions(-) diff --git a/tests/unit_tests/test_refinement/test_optical_flow.py b/tests/unit_tests/test_refinement/test_optical_flow.py index 76bc16c..b4e738d 100644 --- a/tests/unit_tests/test_refinement/test_optical_flow.py +++ b/tests/unit_tests/test_refinement/test_optical_flow.py @@ -29,7 +29,7 @@ import xarray as xr from json_checker.core.exceptions import DictCheckerError from pandora.margins import Margins -from pandora2d import refinement +from pandora2d import refinement, common, matching_cost, disparity @pytest.fixture() @@ -206,9 +206,29 @@ def test_reshape_to_matching_cost_window_left(dataset_image): "disp_row": disparity_range_row, }, ) + cost_volumes.attrs["offset_row_col"] = 1 + + offset = cost_volumes.offset_row_col + + # get first and last coordinates for row and col in cost volume dataset + first_col_coordinate = cost_volumes.col.data[0] + offset + last_col_coordinate = cost_volumes.col.data[-1] - offset + col_extrema_coordinates = [ + find_nearest_column(first_col_coordinate, cost_volumes.col.data, "+"), + find_nearest_column(last_col_coordinate, cost_volumes.col.data, "-"), + ] + + first_row_coordinate = cost_volumes.row.data[0] + offset + last_row_coordinate = cost_volumes.row.data[-1] - offset + row_extrema_coordinates = [ + find_nearest_column(first_row_coordinate, cost_volumes.row.data, "+"), + find_nearest_column(last_row_coordinate, cost_volumes.row.data, "-"), + ] # for left image - reshaped_left = refinement_class.reshape_to_matching_cost_window(img, cost_volumes) + reshaped_left = refinement_class.reshape_to_matching_cost_window( + img, cost_volumes, (row_extrema_coordinates, col_extrema_coordinates) + ) # test four matching_cost idx_1_1 = [[0, 1, 2], [5, 6, 7], [10, 11, 12]] @@ -251,8 +271,28 @@ def test_reshape_to_matching_cost_window_right(dataset_image): }, ) + cost_volumes.attrs["offset_row_col"] = 1 + offset = cost_volumes.offset_row_col + + # get first and last coordinates for row and col in cost volume dataset + first_col_coordinate = cost_volumes.col.data[0] + offset + last_col_coordinate = cost_volumes.col.data[-1] - offset + col_extrema_coordinates = [ + find_nearest_column(first_col_coordinate, cost_volumes.col.data, "+"), + find_nearest_column(last_col_coordinate, cost_volumes.col.data, "-"), + ] + + first_row_coordinate = cost_volumes.row.data[0] + offset + last_row_coordinate = cost_volumes.row.data[-1] - offset + row_extrema_coordinates = [ + find_nearest_column(first_row_coordinate, cost_volumes.row.data, "+"), + find_nearest_column(last_row_coordinate, cost_volumes.row.data, "-"), + ] + # for right image - reshaped_right = refinement_class.reshape_to_matching_cost_window(img, cost_volumes, row_disp_map, col_disp_map) + reshaped_right = refinement_class.reshape_to_matching_cost_window( + img, cost_volumes, (row_extrema_coordinates, col_extrema_coordinates), row_disp_map, col_disp_map + ) # test four matching_cost idx_1_1 = [[12, 13, 14], [17, 18, 19], [22, 23, 24]] @@ -294,3 +334,100 @@ def test_warped_image_without_step(): # check that the generated image is equal to ground truth assert np.array_equal(gt_mc_1, test_img_shift[:, :, 0]) assert np.array_equal(gt_mc_2, test_img_shift[:, :, 1]) + + +@pytest.mark.parametrize(["row", "col", "step_row", "step_col"], [(10, 10, 2, 1), (10, 10, 1, 2), (10, 10, 2, 2)]) +def test_step_with_refinement_method(row, col, step_row, step_col): + """ + TODO + """ + + # create image dataset 1 + data = np.random.uniform(0, row * col, (row, col)) + data = np.round(data, 2) + + dataset_img_ = xr.Dataset( + {"im": (["row", "col"], data)}, + coords={"row": np.arange(data.shape[0]), "col": np.arange(data.shape[1])}, + ) + dataset_img_.attrs = { + "no_data_img": -9999, + "valid_pixels": 0, + "no_data_mask": 1, + "crs": None, + "col_disparity_source": [-2, 2], + "row_disparity_source": [-2, 2], + "invalid_disparity": np.nan, + } + + # create image dataset 2 - same as img1 but with a shift + shifted_data = np.roll(data, 2, axis=0) + dataset_img_shift = xr.Dataset( + {"im": (["row", "col"], shifted_data)}, + coords={"row": np.arange(shifted_data.shape[0]), "col": np.arange(shifted_data.shape[1])}, + ) + dataset_img_shift.attrs = { + "no_data_img": -9999, + "valid_pixels": 0, + "no_data_mask": 1, + "crs": None, + "col_disparity_source": [-2, 2], + "row_disparity_source": [-2, 2], + "invalid_disparity": np.nan, + } + + # create cos volume dataset + cfg_mc = { + "pipeline": {"matching_cost": {"matching_cost_method": "zncc", "window_size": 3, "step": [step_row, step_col]}} + } + matching_cost_matcher = matching_cost.MatchingCost(cfg_mc["pipeline"]["matching_cost"]) + cfg_disp = {"disparity_method": "wta", "invalid_disparity": np.nan} + grid_min_col = np.full((3, 3), -2) + grid_max_col = np.full((3, 3), 2) + grid_min_row = np.full((3, 3), -2) + grid_max_row = np.full((3, 3), 2) + matching_cost_matcher.allocate_cost_volume_pandora( + img_left=dataset_img_, + img_right=dataset_img_shift, + grid_min_col=grid_min_col, + grid_max_col=grid_max_col, + cfg=cfg_mc, + ) + + dataset_cv = matching_cost_matcher.compute_cost_volumes( + dataset_img_, dataset_img_shift, grid_min_col, grid_max_col, grid_min_row, grid_max_row + ) + + # create disparity dataset + disparity_matcher = disparity.Disparity(cfg_disp) + delta_x, delta_y, score = disparity_matcher.compute_disp_maps(dataset_cv) + + data_variables = { + "row_map": (("row", "col"), delta_x), + "col_map": (("row", "col"), delta_y), + "correlation_score": (("row", "col"), score), + } + coords = {"row": dataset_cv.row.data, "col": dataset_cv.col.data} + dataset = xr.Dataset(data_variables, coords) + dataset_disp_map = common.dataset_disp_maps( + dataset.row_map, dataset.col_map, dataset.coords, dataset.correlation_score, attributes={"invalid_disp": np.nan} + ) + + # Start test + refinement_class = refinement.AbstractRefinement( + {"refinement_method": "optical_flow"}, [step_row, step_col], 3 + ) # type: ignore[abstract] + + refinement_class.refinement_method(dataset_cv, dataset_disp_map, dataset_img_, dataset_img_shift) + + +def find_nearest_column(value, data, direction): + """ + TODO + """ + if direction == "+": + return data[np.searchsorted(data, value, side="left")] + if direction == "-": + return data[np.searchsorted(data, value, side="right") - 1] + + raise ValueError("Direction must be '+' or '-'") From fbd638188b7bce0316d43c676b5c73dc0be38056 Mon Sep 17 00:00:00 2001 From: Jerome Lebreton Date: Mon, 17 Jun 2024 15:28:47 +0200 Subject: [PATCH 002/121] feat: update optical flow method with step last version feat: update optical flow method with step last version feat: update optical flow method with step --- pandora2d/refinement/optical_flow.py | 177 +++++++++++++----- .../test_refinement/test_optical_flow.py | 165 ++++++++-------- 2 files changed, 212 insertions(+), 130 deletions(-) diff --git a/pandora2d/refinement/optical_flow.py b/pandora2d/refinement/optical_flow.py index a7e3117..3452ef6 100644 --- a/pandora2d/refinement/optical_flow.py +++ b/pandora2d/refinement/optical_flow.py @@ -21,7 +21,7 @@ """ This module contains functions associated to the optical flow method used in the refinement step. """ -from typing import Dict, Tuple +from typing import Dict, Tuple, List import numpy as np import xarray as xr @@ -97,6 +97,7 @@ def reshape_to_matching_cost_window( self, img: xr.Dataset, cost_volumes: xr.Dataset, + coordinates: Tuple[List, List], disp_row: np.ndarray = None, disp_col: np.ndarray = None, ): @@ -107,6 +108,8 @@ def reshape_to_matching_cost_window( :type img: xr.Dataset :param cost_volumes: cost_volumes 4D row, col, disp_col, disp_row :type cost_volumes: xarray.Dataset + :param coordinates: min and max index coordinate for row and col [(first_row,last_row),(first_col,last_col)] + :type coordinates: tuple :param disp_row: array dim [] containing all the row shift :type disp_row: np.ndarray :param disp_col: array dim [] containing all the columns shift @@ -118,44 +121,67 @@ def reshape_to_matching_cost_window( # get numpy array datas for image img_data = img["im"].data - offset = max(self.margins.astuple()) + # get general offset value + offset = cost_volumes.offset_row_col - computable_col = cost_volumes.col.data[offset:-offset] - computable_row = cost_volumes.row.data[offset:-offset] + # get cost volume sub xarray with offset coordinates values + offset_row, offset_col = coordinates + cost_volumes_sub = cost_volumes.sel( + row=slice(offset_row[0], offset_row[-1]), col=slice(offset_col[0], offset_col[-1]) + ) - one_dim_size = len(computable_row) * len(computable_col) + # get computable cost volume data in row and col + computable_col = cost_volumes_sub.col.data + computable_row = cost_volumes_sub.row.data if disp_row is None and disp_col is None: + # define image patches in one dim patches = np.lib.stride_tricks.sliding_window_view(img_data, [self._window_size, self._window_size]) - patches = patches.reshape((one_dim_size, self._window_size, self._window_size)).transpose((1, 2, 0)) - else: - # initiate values for right reshape computation - offset = max(self.margins.astuple()) - patches = np.ndarray((self._window_size, self._window_size, one_dim_size)) - idx = 0 - - for row in computable_row: - for col in computable_col: - shift_col = ( - 0 if np.isnan(disp_col[idx]) or disp_col[idx] == self._invalid_disp else int(disp_col[idx]) - ) - shift_row = ( - 0 if np.isnan(disp_row[idx]) or disp_row[idx] == self._invalid_disp else int(disp_row[idx]) - ) - - # get right pixel with his matching cost window - patch = img_data[ - row - offset + shift_row : row + offset + 1 + shift_row, - col - offset + shift_col : col + offset + 1 + shift_col, - ] - - # stock matching_cost window - if patch.shape == (self._window_size, self._window_size): - patches[:, :, idx] = patch - else: - patches[:, :, idx] = np.ones([self._window_size, self._window_size]) * np.nan - - idx += 1 + flattened_patches = patches.reshape(-1, self._window_size, self._window_size) + + # get patches id from original image + id_patches_img = [ + int(c_row * img.sizes["col"]) + c_col + for c_row in img["row"].data[offset:-offset] + for c_col in img["col"].data[offset:-offset] + ] + + # Associate each patches of the one dim image to the id of the true image patches + patch_dict = {id_patches_img[i]: flattened_patches[i] for i in range(len(id_patches_img))} + id_patches = [int(c_row * img.sizes["col"]) + c_col for c_row in computable_row for c_col in computable_col] + + # Filter patches to keep only id calculated with offset and step + filtered_patches_list = [patch_dict[key] for key in id_patches if key in patch_dict] + reshaped_patches = np.stack(filtered_patches_list, axis=-1).reshape( + (self._window_size, self._window_size, len(filtered_patches_list)) + ) + return reshaped_patches + + # initiate values for right reshape computation + offset = self._window_size // 2 + patches = np.ndarray((self._window_size, self._window_size, len(computable_row) * len(computable_col))) + idx = 0 + + for row in computable_row: + for col in computable_col: + shift_col = 0 if np.isnan(disp_col[idx]) or disp_col[idx] == self._invalid_disp else int(disp_col[idx]) + shift_row = 0 if np.isnan(disp_row[idx]) or disp_row[idx] == self._invalid_disp else int(disp_row[idx]) + + # get right pixel with his matching cost window + patch_row_start = row - offset + shift_row + patch_row_end = row + offset + shift_row + patch_col_start = col - offset + shift_col + patch_col_end = col + offset + shift_col + patch = img.sel(row=slice(patch_row_start, patch_row_end), col=slice(patch_col_start, patch_col_end)) + patch = patch["im"].data + + # stock matching_cost window + if patch.shape == (self._window_size, self._window_size): + patches[:, :, idx] = patch + else: + patches[:, :, idx] = np.ones([self._window_size, self._window_size]) * np.nan + + idx += 1 return patches @@ -268,6 +294,26 @@ def optical_flow( return final_dec_row, final_dec_col, new_list_to_compute + @staticmethod + def find_nearest_column(value, data, direction): + """ + Return the nearest column from initial column index coordinate in a given direction + + :param value: initial column index + :type value: int + :param data: cost volume coordinates + :type data: np.ndarray + :param direction: direction sign (must be + or -) + :type direction: string + """ + + if direction == "+": + return data[np.searchsorted(data, value, side="left")] + if direction == "-": + return data[np.searchsorted(data, value, side="right") - 1] + + raise ValueError("Direction must be '+' or '-'") + def refinement_method( self, cost_volumes: xr.Dataset, disp_map: xr.Dataset, img_left: xr.Dataset, img_right: xr.Dataset ) -> Tuple[np.ndarray, np.ndarray, np.ndarray]: @@ -290,21 +336,40 @@ def refinement_method( self._invalid_disp = disp_map.attrs["invalid_disp"] # get offset - offset = max(self.margins.astuple()) - - # get displacement map from disparity state - initial_delta_row = disp_map["row_map"].data - initial_delta_col = disp_map["col_map"].data - - delta_col = initial_delta_col[offset:-offset, offset:-offset].flatten() - delta_row = initial_delta_row[offset:-offset, offset:-offset].flatten() + offset = cost_volumes.offset_row_col + + # get first and last coordinates for row and col in cost volume dataset + first_col_coordinate = cost_volumes.col.data[0] + offset + last_col_coordinate = cost_volumes.col.data[-1] - offset + col_extrema_coordinates = [ + self.find_nearest_column(first_col_coordinate, cost_volumes.col.data, "+"), + self.find_nearest_column(last_col_coordinate, cost_volumes.col.data, "-"), + ] + + first_row_coordinate = cost_volumes.row.data[0] + offset + last_row_coordinate = cost_volumes.row.data[-1] - offset + row_extrema_coordinates = [ + self.find_nearest_column(first_row_coordinate, cost_volumes.row.data, "+"), + self.find_nearest_column(last_row_coordinate, cost_volumes.row.data, "-"), + ] + + # get displacement map in row and col - from disparity min/max coordinates + row_slice = slice(row_extrema_coordinates[0], row_extrema_coordinates[-1]) + col_slice = slice(col_extrema_coordinates[0], col_extrema_coordinates[-1]) + cost_volume_sub = cost_volumes.sel(row=row_slice, col=col_slice) + disp_map_sub = disp_map.sel(row=cost_volume_sub.row, col=cost_volume_sub.col) + delta_row = disp_map_sub["row_map"].data.flatten() + delta_col = disp_map_sub["col_map"].data.flatten() # reshape left and right datas # from (nbcol, nbrow) to (window_size, window_size, nbcol*nbrow) - reshaped_left = self.reshape_to_matching_cost_window(img_left, cost_volumes) + reshaped_left = self.reshape_to_matching_cost_window( + img_left, cost_volumes, (row_extrema_coordinates, col_extrema_coordinates) + ) reshaped_right = self.reshape_to_matching_cost_window( img_right, cost_volumes, + (row_extrema_coordinates, col_extrema_coordinates), delta_row, delta_col, ) @@ -323,17 +388,29 @@ def refinement_method( delta_col = delta_col - computed_dcol delta_row = delta_row - computed_drow - # get finals disparity map dimensions - nb_row, nb_col = initial_delta_col.shape - nb_valid_points_row = nb_row - 2 * offset - nb_valid_points_col = nb_col - 2 * offset + # get finals disparity map dimensions, add +1 because it began at 0 + nb_valid_points_row = int((row_extrema_coordinates[-1] - row_extrema_coordinates[0]) / cost_volumes.step[0] + 1) + nb_valid_points_col = int((col_extrema_coordinates[-1] - col_extrema_coordinates[0]) / cost_volumes.step[1] + 1) delta_col = delta_col.reshape([nb_valid_points_row, nb_valid_points_col]) delta_row = delta_row.reshape([nb_valid_points_row, nb_valid_points_col]) - # add borders - delta_col = np.pad(delta_col, pad_width=offset, constant_values=self._invalid_disp) - delta_row = np.pad(delta_row, pad_width=offset, constant_values=self._invalid_disp) + # add border + padding_top = (disp_map.sizes["row"] - delta_row.shape[0]) // 2 + padding_bottom = disp_map.sizes["row"] - delta_row.shape[0] - padding_top + padding_left = (disp_map.sizes["col"] - delta_row.shape[1]) // 2 + padding_right = disp_map.sizes["col"] - delta_row.shape[1] - padding_left + + delta_row = np.pad( + delta_row, + pad_width=((padding_top, padding_bottom), (padding_left, padding_right)), + constant_values=self._invalid_disp, + ) + delta_col = np.pad( + delta_col, + pad_width=((padding_top, padding_bottom), (padding_left, padding_right)), + constant_values=self._invalid_disp, + ) delta_col[delta_col <= img_left.attrs["col_disparity_source"][0]] = self._invalid_disp delta_col[delta_col >= img_left.attrs["col_disparity_source"][1]] = self._invalid_disp diff --git a/tests/unit_tests/test_refinement/test_optical_flow.py b/tests/unit_tests/test_refinement/test_optical_flow.py index b4e738d..3faaedc 100644 --- a/tests/unit_tests/test_refinement/test_optical_flow.py +++ b/tests/unit_tests/test_refinement/test_optical_flow.py @@ -30,6 +30,7 @@ from json_checker.core.exceptions import DictCheckerError from pandora.margins import Margins from pandora2d import refinement, common, matching_cost, disparity +from pandora2d.refinement.optical_flow import OpticalFlow @pytest.fixture() @@ -189,8 +190,7 @@ def test_reshape_to_matching_cost_window_left(dataset_image): img = dataset_image - refinement_class = refinement.AbstractRefinement({"refinement_method": "optical_flow"}) # type: ignore[abstract] - refinement_class._window_size = 3 + refinement_class = refinement.AbstractRefinement({"refinement_method": "optical_flow"}, [1, 1], 3) # type: ignore[abstract] cv = np.zeros((6, 5, 5, 5)) @@ -205,24 +205,22 @@ def test_reshape_to_matching_cost_window_left(dataset_image): "disp_col": disparity_range_col, "disp_row": disparity_range_row, }, + attrs={"offset_row_col": 1}, ) - cost_volumes.attrs["offset_row_col"] = 1 - - offset = cost_volumes.offset_row_col # get first and last coordinates for row and col in cost volume dataset - first_col_coordinate = cost_volumes.col.data[0] + offset - last_col_coordinate = cost_volumes.col.data[-1] - offset + first_col_coordinate = cost_volumes.col.data[0] + cost_volumes.offset_row_col + last_col_coordinate = cost_volumes.col.data[-1] - cost_volumes.offset_row_col col_extrema_coordinates = [ - find_nearest_column(first_col_coordinate, cost_volumes.col.data, "+"), - find_nearest_column(last_col_coordinate, cost_volumes.col.data, "-"), + OpticalFlow.find_nearest_column(first_col_coordinate, cost_volumes.col.data, "+"), + OpticalFlow.find_nearest_column(last_col_coordinate, cost_volumes.col.data, "-"), ] - first_row_coordinate = cost_volumes.row.data[0] + offset - last_row_coordinate = cost_volumes.row.data[-1] - offset + first_row_coordinate = cost_volumes.row.data[0] + cost_volumes.offset_row_col + last_row_coordinate = cost_volumes.row.data[-1] - cost_volumes.offset_row_col row_extrema_coordinates = [ - find_nearest_column(first_row_coordinate, cost_volumes.row.data, "+"), - find_nearest_column(last_row_coordinate, cost_volumes.row.data, "-"), + OpticalFlow.find_nearest_column(first_row_coordinate, cost_volumes.row.data, "+"), + OpticalFlow.find_nearest_column(last_row_coordinate, cost_volumes.row.data, "-"), ] # for left image @@ -248,9 +246,7 @@ def test_reshape_to_matching_cost_window_right(dataset_image): """ img = dataset_image - - refinement_class = refinement.AbstractRefinement({"refinement_method": "optical_flow"}) # type: ignore[abstract] - refinement_class._window_size = 3 + refinement_class = refinement.AbstractRefinement({"refinement_method": "optical_flow"}, [1, 1], 3) # type: ignore[abstract] # Create disparity maps col_disp_map = [2, 0, 0, 0, 1, 0, 0, 0, 1, -2, 0, 0] @@ -269,24 +265,22 @@ def test_reshape_to_matching_cost_window_right(dataset_image): "disp_col": disparity_range_col, "disp_row": disparity_range_row, }, + attrs={"offset_row_col": 1}, ) - cost_volumes.attrs["offset_row_col"] = 1 - offset = cost_volumes.offset_row_col - # get first and last coordinates for row and col in cost volume dataset - first_col_coordinate = cost_volumes.col.data[0] + offset - last_col_coordinate = cost_volumes.col.data[-1] - offset + first_col_coordinate = cost_volumes.col.data[0] + cost_volumes.offset_row_col + last_col_coordinate = cost_volumes.col.data[-1] - cost_volumes.offset_row_col col_extrema_coordinates = [ - find_nearest_column(first_col_coordinate, cost_volumes.col.data, "+"), - find_nearest_column(last_col_coordinate, cost_volumes.col.data, "-"), + OpticalFlow.find_nearest_column(first_col_coordinate, cost_volumes.col.data, "+"), + OpticalFlow.find_nearest_column(last_col_coordinate, cost_volumes.col.data, "-"), ] - first_row_coordinate = cost_volumes.row.data[0] + offset - last_row_coordinate = cost_volumes.row.data[-1] - offset + first_row_coordinate = cost_volumes.row.data[0] + cost_volumes.offset_row_col + last_row_coordinate = cost_volumes.row.data[-1] - cost_volumes.offset_row_col row_extrema_coordinates = [ - find_nearest_column(first_row_coordinate, cost_volumes.row.data, "+"), - find_nearest_column(last_row_coordinate, cost_volumes.row.data, "-"), + OpticalFlow.find_nearest_column(first_row_coordinate, cost_volumes.row.data, "+"), + OpticalFlow.find_nearest_column(last_row_coordinate, cost_volumes.row.data, "-"), ] # for right image @@ -336,58 +330,51 @@ def test_warped_image_without_step(): assert np.array_equal(gt_mc_2, test_img_shift[:, :, 1]) -@pytest.mark.parametrize(["row", "col", "step_row", "step_col"], [(10, 10, 2, 1), (10, 10, 1, 2), (10, 10, 2, 2)]) -def test_step_with_refinement_method(row, col, step_row, step_col): +@pytest.fixture() +def make_data(row, col): + return np.random.uniform(0, row * col, (row, col)) + + +def make_img_dataset(data, shift=0): """ - TODO + Instantiate an image dataset with specified rows, columns, and row shift. """ - - # create image dataset 1 - data = np.random.uniform(0, row * col, (row, col)) + data = np.roll(data, shift, axis=0) data = np.round(data, 2) - dataset_img_ = xr.Dataset( + return xr.Dataset( {"im": (["row", "col"], data)}, coords={"row": np.arange(data.shape[0]), "col": np.arange(data.shape[1])}, + attrs={ + "no_data_img": -9999, + "valid_pixels": 0, + "no_data_mask": 1, + "crs": None, + "col_disparity_source": [-2, 2], + "row_disparity_source": [-2, 2], + "invalid_disparity": np.nan, + }, ) - dataset_img_.attrs = { - "no_data_img": -9999, - "valid_pixels": 0, - "no_data_mask": 1, - "crs": None, - "col_disparity_source": [-2, 2], - "row_disparity_source": [-2, 2], - "invalid_disparity": np.nan, - } - # create image dataset 2 - same as img1 but with a shift - shifted_data = np.roll(data, 2, axis=0) - dataset_img_shift = xr.Dataset( - {"im": (["row", "col"], shifted_data)}, - coords={"row": np.arange(shifted_data.shape[0]), "col": np.arange(shifted_data.shape[1])}, - ) - dataset_img_shift.attrs = { - "no_data_img": -9999, - "valid_pixels": 0, - "no_data_mask": 1, - "crs": None, - "col_disparity_source": [-2, 2], - "row_disparity_source": [-2, 2], - "invalid_disparity": np.nan, - } - # create cos volume dataset - cfg_mc = { - "pipeline": {"matching_cost": {"matching_cost_method": "zncc", "window_size": 3, "step": [step_row, step_col]}} - } +@pytest.fixture() +def make_left_right_images(make_data): + data = make_data + return make_img_dataset(data, 0), make_img_dataset(data, 2) + + +def make_cv_dataset(dataset_img, dataset_img_shift, cfg_mc): + """ + Instantiate a cost volume dataset + """ matching_cost_matcher = matching_cost.MatchingCost(cfg_mc["pipeline"]["matching_cost"]) - cfg_disp = {"disparity_method": "wta", "invalid_disparity": np.nan} grid_min_col = np.full((3, 3), -2) grid_max_col = np.full((3, 3), 2) grid_min_row = np.full((3, 3), -2) grid_max_row = np.full((3, 3), 2) + matching_cost_matcher.allocate_cost_volume_pandora( - img_left=dataset_img_, + img_left=dataset_img, img_right=dataset_img_shift, grid_min_col=grid_min_col, grid_max_col=grid_max_col, @@ -395,10 +382,15 @@ def test_step_with_refinement_method(row, col, step_row, step_col): ) dataset_cv = matching_cost_matcher.compute_cost_volumes( - dataset_img_, dataset_img_shift, grid_min_col, grid_max_col, grid_min_row, grid_max_row + dataset_img, dataset_img_shift, grid_min_col, grid_max_col, grid_min_row, grid_max_row ) + return dataset_cv - # create disparity dataset + +def make_disparity_dataset(dataset_cv, cfg_disp): + """ + Instantiate a disparity dataset + """ disparity_matcher = disparity.Disparity(cfg_disp) delta_x, delta_y, score = disparity_matcher.compute_disp_maps(dataset_cv) @@ -410,24 +402,37 @@ def test_step_with_refinement_method(row, col, step_row, step_col): coords = {"row": dataset_cv.row.data, "col": dataset_cv.col.data} dataset = xr.Dataset(data_variables, coords) dataset_disp_map = common.dataset_disp_maps( - dataset.row_map, dataset.col_map, dataset.coords, dataset.correlation_score, attributes={"invalid_disp": np.nan} + dataset.row_map, + dataset.col_map, + dataset.coords, + dataset.correlation_score, + attributes={"invalid_disp": np.nan}, ) + return dataset_disp_map + + +@pytest.mark.parametrize(["row", "col", "step_row", "step_col"], [(10, 10, 2, 1), (10, 10, 1, 2), (10, 10, 2, 2)]) +def test_step_with_refinement_method(make_left_right_images, row, col, step_row, step_col): + """ + Test refinement method with a step + """ + + # create left image dataset and right image dataset with same as left but with a row shift + dataset_img, dataset_img_shift = make_left_right_images + + # create cost volume dataset + cfg_mc = { + "pipeline": {"matching_cost": {"matching_cost_method": "zncc", "window_size": 3, "step": [step_row, step_col]}} + } + dataset_cv = make_cv_dataset(dataset_img, dataset_img_shift, cfg_mc) + + # create disparity dataset + cfg_disp = {"disparity_method": "wta", "invalid_disparity": np.nan} + dataset_disp_map = make_disparity_dataset(dataset_cv, cfg_disp) # Start test refinement_class = refinement.AbstractRefinement( {"refinement_method": "optical_flow"}, [step_row, step_col], 3 ) # type: ignore[abstract] - refinement_class.refinement_method(dataset_cv, dataset_disp_map, dataset_img_, dataset_img_shift) - - -def find_nearest_column(value, data, direction): - """ - TODO - """ - if direction == "+": - return data[np.searchsorted(data, value, side="left")] - if direction == "-": - return data[np.searchsorted(data, value, side="right") - 1] - - raise ValueError("Direction must be '+' or '-'") + refinement_class.refinement_method(dataset_cv, dataset_disp_map, dataset_img, dataset_img_shift) From f6e497d5f75feb4d505d0cc7208babf847200b8e Mon Sep 17 00:00:00 2001 From: Jerome Lebreton Date: Fri, 21 Jun 2024 13:37:17 +0200 Subject: [PATCH 003/121] test: optical flow unit test test: optical flow unit test #1 test: new optical flow unit test --- .../test_refinement/test_optical_flow.py | 174 ++++++++++++++++-- 1 file changed, 155 insertions(+), 19 deletions(-) diff --git a/tests/unit_tests/test_refinement/test_optical_flow.py b/tests/unit_tests/test_refinement/test_optical_flow.py index 3faaedc..6eeda31 100644 --- a/tests/unit_tests/test_refinement/test_optical_flow.py +++ b/tests/unit_tests/test_refinement/test_optical_flow.py @@ -296,38 +296,123 @@ def test_reshape_to_matching_cost_window_right(dataset_image): assert np.array_equal(reshaped_right[:, :, 4], idx_2_2) -def test_warped_image_without_step(): +@pytest.mark.parametrize( + ["window_size", "mc_1", "mc_2", "gt_mc_1", "gt_mc_2"], + [ + pytest.param( + 5, + np.array( + [[0, 1, 2, 3, 4], [6, 7, 8, 9, 10], [12, 13, 14, 15, 16], [18, 19, 20, 21, 22], [24, 25, 26, 27, 28]] + ), + np.array( + [[1, 2, 3, 4, 5], [7, 8, 9, 10, 11], [13, 14, 15, 16, 17], [19, 20, 21, 22, 23], [25, 26, 27, 28, 29]] + ), + np.array( + [ + [19, 20, 21, 22, 22], + [25, 26, 27, 28, 28], + [25, 26, 27, 28, 28], + [19, 20, 21, 22, 22], + [13, 14, 15, 16, 16], + ] + ), + np.array( + [ + [20, 21, 22, 23, 23], + [26, 27, 28, 29, 29], + [26, 27, 28, 29, 29], + [20, 21, 22, 23, 23], + [14, 15, 16, 17, 17], + ] + ), + ), + pytest.param( + 3, + np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8]]), + np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]), + np.array([[7, 8, 8], [4, 5, 5], [1, 2, 2]]), + np.array([[8, 9, 9], [5, 6, 6], [2, 3, 3]]), + ), + ], +) +def test_warped_image_without_step(window_size, mc_1, mc_2, gt_mc_1, gt_mc_2): """ - test warped image + test warped image with different window size + no test for window size at 1 because "window_size": And(int, lambda input: input > 1 and (input % 2) != 0) """ - refinement_class = refinement.AbstractRefinement({"refinement_method": "optical_flow"}) # type: ignore[abstract] - - mc_1 = np.array( - [[0, 1, 2, 3, 4], [6, 7, 8, 9, 10], [12, 13, 14, 15, 16], [18, 19, 20, 21, 22], [24, 25, 26, 27, 28]] - ) - mc_2 = np.array( - [[1, 2, 3, 4, 5], [7, 8, 9, 10, 11], [13, 14, 15, 16, 17], [19, 20, 21, 22, 23], [25, 26, 27, 28, 29]] - ) + refinement_class = refinement.AbstractRefinement( + {"refinement_method": "optical_flow"}, None, window_size + ) # type: ignore[abstract] reshaped_right = np.stack((mc_1, mc_2)).transpose((1, 2, 0)) - delta_row = -3 * np.ones(2) delta_col = -np.ones(2) test_img_shift = refinement_class.warped_img(reshaped_right, delta_row, delta_col, [0, 1]) - gt_mc_1 = np.array( - [[19, 20, 21, 22, 22], [25, 26, 27, 28, 28], [25, 26, 27, 28, 28], [19, 20, 21, 22, 22], [13, 14, 15, 16, 16]] + # check that the generated image is equal to ground truth + assert np.array_equal(gt_mc_1, test_img_shift[:, :, 0]) + assert np.array_equal(gt_mc_2, test_img_shift[:, :, 1]) + + +def test_optical_flow_method(): + """ + test optical flow method with a simple col shift + """ + + # input array creation + array_left = np.array([[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]) + array_right = np.array( + [ + [0.1, 1.2, 2.3, 3.4, 4.5], + [0.1, 1.2, 2.3, 3.4, 4.5], + [0.1, 1.2, 2.3, 3.4, 4.5], + [0.1, 1.2, 2.3, 3.4, 4.5], + [0.1, 1.2, 2.3, 3.4, 4.5], + ] ) - gt_mc_2 = np.array( - [[20, 21, 22, 23, 23], [26, 27, 28, 29, 29], [26, 27, 28, 29, 29], [20, 21, 22, 23, 23], [14, 15, 16, 17, 17]] + one_dim_size = (array_left.shape[0] - 2) * (array_left.shape[1] - 2) # -2 because of margin + + # patch creation + patches_left = np.lib.stride_tricks.sliding_window_view(array_left, [3, 3]) + patches_left = patches_left.reshape((one_dim_size, 3, 3)).transpose((1, 2, 0)) + patches_right = np.lib.stride_tricks.sliding_window_view(array_right, [3, 3]) + patches_right = patches_right.reshape((one_dim_size, 3, 3)).transpose((1, 2, 0)) + + idx_to_compute = np.arange(patches_left.shape[2]).tolist() + + # class initialisation + refinement_class = refinement.AbstractRefinement( + {"refinement_method": "optical_flow"}, [1, 1], 3 + ) # type: ignore[abstract] + + computed_drow, computed_dcol, idx_to_compute = refinement_class.optical_flow( + patches_left, patches_right, idx_to_compute ) - # check that the generated image is equal to ground truth - assert np.array_equal(gt_mc_1, test_img_shift[:, :, 0]) - assert np.array_equal(gt_mc_2, test_img_shift[:, :, 1]) + truth_drow = [0, 0, 0, 0, 0, 0, 0, 0, 0] + truth_dcol = [0.2, 0.3, 0.4, 0.2, 0.3, 0.4, 0.2, 0.3, 0.4] + + assert np.allclose(computed_dcol, truth_dcol, atol=1e-03) + assert np.allclose(computed_drow, truth_drow, atol=1e-03) + + +def test_lucas_kanade_core_algorithm(): + """ + test lucas kanade algorithm with simple flow in x axis + """ + + left_data = np.array([[1, 2, 3], [1, 2, 3], [1, 2, 3]], dtype=float) + + right_data = np.array([[2.1, 3.1, 4.1], [2.1, 3.1, 4.1], [2.1, 3.1, 4.1]], dtype=float) + + refinement_class = refinement.AbstractRefinement({"refinement_method": "optical_flow"}) # type: ignore[abstract] + motion_y, motion_x = refinement_class.lucas_kanade_core_algorithm(left_data, right_data) + + expected_motion = [1.1, 0.0] + assert np.allclose([motion_x, motion_y], expected_motion, atol=1e-3) @pytest.fixture() @@ -339,7 +424,8 @@ def make_img_dataset(data, shift=0): """ Instantiate an image dataset with specified rows, columns, and row shift. """ - data = np.roll(data, shift, axis=0) + # data = np.roll(data, shift, axis=0) + data = data * 2.2 data = np.round(data, 2) return xr.Dataset( @@ -436,3 +522,53 @@ def test_step_with_refinement_method(make_left_right_images, row, col, step_row, ) # type: ignore[abstract] refinement_class.refinement_method(dataset_cv, dataset_disp_map, dataset_img, dataset_img_shift) + + +@pytest.mark.parametrize( + ["row", "col", "step_row", "step_col", "window_size"], [(11, 11, 1, 1, 3), (11, 11, 1, 1, 5), (11, 11, 1, 1, 11)] +) +def test_window_size_refinement_method(make_left_right_images, row, col, step_row, step_col, window_size): + """ + Test refinement method with different windows size and check border value, here the step is fixed to 1 + """ + + # create left image dataset and right image dataset with same as left but with a row shift + dataset_img, dataset_img_shift = make_left_right_images + + # create cost volume dataset + cfg_mc = { + "pipeline": { + "matching_cost": {"matching_cost_method": "zncc", "window_size": window_size, "step": [step_row, step_col]} + } + } + + dataset_cv = make_cv_dataset(dataset_img, dataset_img_shift, cfg_mc) + + # create disparity dataset + cfg_disp = {"disparity_method": "wta", "invalid_disparity": np.nan} + dataset_disp_map = make_disparity_dataset(dataset_cv, cfg_disp) + + # Start test + refinement_class = refinement.AbstractRefinement( + {"refinement_method": "optical_flow"}, [step_row, step_col], window_size + ) # type: ignore[abstract] + + delta_col, delta_row, _ = refinement_class.refinement_method( + dataset_cv, dataset_disp_map, dataset_img, dataset_img_shift + ) + + pad = max(window_size // 2 * ele for _ in range(2) for ele in [step_row, step_col]) + + # Check if there are any _invalid_disp inside image without border + assert not np.isnan(delta_col[pad : col - pad, pad : col - pad]).any() + assert not np.isnan(delta_row[pad : row - pad, pad : row - pad]).any() + + # Check _invalid_disp in border zone + assert np.isnan(delta_col[0:pad, col - pad : col]).any() + assert np.isnan(delta_row[0:pad, row - pad : row]).any() + + # Check final image shape + assert np.array_equal(row, delta_row.shape[0]) + assert np.array_equal(row, delta_row.shape[1]) + assert np.array_equal(col, delta_col.shape[0]) + assert np.array_equal(col, delta_col.shape[1]) From 8b62126227561ddc228f6e6e9598ea1456c508b8 Mon Sep 17 00:00:00 2001 From: duzelis Date: Wed, 19 Jun 2024 15:40:47 +0200 Subject: [PATCH 004/121] test: add new tests in test_cost_volume_coordinates_with_roi --- .../test_matching_cost_compute.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tests/unit_tests/test_matching_cost/test_matching_cost_compute.py b/tests/unit_tests/test_matching_cost/test_matching_cost_compute.py index 18d177f..a162a49 100644 --- a/tests/unit_tests/test_matching_cost/test_matching_cost_compute.py +++ b/tests/unit_tests/test_matching_cost/test_matching_cost_compute.py @@ -438,6 +438,20 @@ def test_compute_cv_zncc(): np.array([5]), # Only ROI["row"]["first"]=5 is in the cost_volume rows id="ROI and step_row and step_col greater than the number of columns and rows in the ROI", ), + pytest.param( + {"col": {"first": 1, "last": 7}, "row": {"first": 1, "last": 7}, "margins": [2, 2, 2, 2]}, + [2, 1], + np.arange(10), # Coordinates of user ROI + margins + np.arange(1, 10, 2), # ROI["row"]["first"]=1 then coordinates are [1,3,5,7,9] + id="First point of ROI lower than margin and step_row=2", + ), + pytest.param( + {"col": {"first": 3, "last": 5}, "row": {"first": 1, "last": 5}, "margins": [4, 4, 4, 4]}, + [1, 2], + np.arange(1, 10, 2), # ROI["col"]["first"]=3 then coordinates are [1,3,5,7,9] + np.arange(0, 10), # Coordinates of user ROI + margins + id="First point of ROI lower than margin and step_col=2", + ), ], ) def test_cost_volume_coordinates_with_roi(roi, input_config, matching_cost_config, col_expected, row_expected): From b29ac0f4ed3f82090b974bb6a7ae48d24cc316df Mon Sep 17 00:00:00 2001 From: duzelis Date: Thu, 4 Jul 2024 16:41:33 +0200 Subject: [PATCH 005/121] feat: add conditions for specific case in pandora method get_coordinates() --- pandora2d/matching_cost/matching_cost.py | 34 +++++++++++++++++++----- 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/pandora2d/matching_cost/matching_cost.py b/pandora2d/matching_cost/matching_cost.py index d8c67f0..4d5d103 100644 --- a/pandora2d/matching_cost/matching_cost.py +++ b/pandora2d/matching_cost/matching_cost.py @@ -234,18 +234,40 @@ def allocate_cost_volume_pandora( grid_min_col -= margins.left grid_max_col += margins.right + # Get updated ROI left margin for pandora method get_coordinates() + # To get right coordinates in cost_volume when initial left_margin > cfg["ROI"]["col"]["first"] + # We need to have left_margin = cfg["ROI"]["col"]["first"] + cfg_for_get_coordinates = copy.deepcopy(cfg) + if "ROI" in cfg: + cfg_for_get_coordinates["ROI"]["margins"] = ( + min(cfg["ROI"]["margins"][0], cfg["ROI"]["col"]["first"]), + cfg["ROI"]["margins"][1], + cfg["ROI"]["margins"][2], + cfg["ROI"]["margins"][3], + ) + # Initialize pandora an empty grid for cost volume - self.grid_ = self.pandora_matching_cost_.allocate_cost_volume(img_left, (grid_min_col, grid_max_col), cfg) + self.grid_ = self.pandora_matching_cost_.allocate_cost_volume( + img_left, (grid_min_col, grid_max_col), cfg_for_get_coordinates + ) # Compute validity mask to identify invalid points in cost volume self.grid_ = validity_mask(img_left, img_right, self.grid_) # Add ROI margins in attributes # Enables to compute cost volumes row coordinates later by using pandora.matching_cost.get_coordinates() + # Get updated ROI up margin for pandora method get_coordinates() + # To get right coordinates in cost_volume when initial up_margin > cfg["ROI"]["row"]["first"] + # We need to have up_margin = cfg["ROI"]["row"]["first"] if "ROI" in cfg: - self.grid_.attrs["ROI_margins"] = cfg["ROI"]["margins"] + self.grid_.attrs["ROI_margins_for_cv"] = ( + cfg["ROI"]["margins"][0], + min(cfg["ROI"]["margins"][1], cfg["ROI"]["row"]["first"]), + cfg["ROI"]["margins"][2], + cfg["ROI"]["margins"][3], + ) else: - self.grid_.attrs["ROI_margins"] = None + self.grid_.attrs["ROI_margins_for_cv"] = None def compute_cost_volumes( self, @@ -335,7 +357,7 @@ def compute_cost_volumes( img_row_coordinates = img_left["im"].coords["row"] # Case without a ROI: we only take the step into account to compute row coordinates. - if self.grid_.attrs["ROI_margins"] is None: + if self.grid_.attrs["ROI_margins_for_cv"] is None: row_coords = np.arange(img_row_coordinates[0], img_row_coordinates[-1] + 1, self._step_row) # Case with a ROI: we use pandora get_coordinates() method to compute row coordinates. @@ -343,7 +365,7 @@ def compute_cost_volumes( # This ensures that the first point of the ROI given by the user is computed in the cost volume. else: row_coords = self.pandora_matching_cost_.get_coordinates( - margin=self.grid_.attrs["ROI_margins"][1], + margin=self.grid_.attrs["ROI_margins_for_cv"][1], img_coordinates=img_row_coordinates, step=self._step_row, ) @@ -369,6 +391,6 @@ def compute_cost_volumes( cost_volumes.attrs["step"] = self._step # Delete ROI_margins attributes which we used to calculate the row coordinates in the cost_volumes - del cost_volumes.attrs["ROI_margins"] + del cost_volumes.attrs["ROI_margins_for_cv"] return cost_volumes From 6ff17d5207fbb7b01cbc373d6b2cecc65b34d6a7 Mon Sep 17 00:00:00 2001 From: Philippe Mallet-Ladeira Date: Thu, 27 Jun 2024 15:22:05 +0200 Subject: [PATCH 006/121] tests(dichotomy): add subpixel to cost_volumes --- .../unit_tests/test_refinement/test_dichotomy.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/tests/unit_tests/test_refinement/test_dichotomy.py b/tests/unit_tests/test_refinement/test_dichotomy.py index 0f1b2f8..afb5fbc 100644 --- a/tests/unit_tests/test_refinement/test_dichotomy.py +++ b/tests/unit_tests/test_refinement/test_dichotomy.py @@ -75,6 +75,11 @@ def type_measure(): return "max" +@pytest.fixture() +def subpixel(): + return 1 + + @pytest.fixture() def zeros_cost_volumes( rows, @@ -84,10 +89,11 @@ def zeros_cost_volumes( min_disparity_col, max_disparity_col, type_measure, + subpixel, ): """Create a cost_volumes full of zeros.""" - number_of_disparity_col = max_disparity_col - min_disparity_col + 1 - number_of_disparity_row = max_disparity_row - min_disparity_row + 1 + number_of_disparity_col = int((max_disparity_col - min_disparity_col) * subpixel + 1) + number_of_disparity_row = int((max_disparity_row - min_disparity_row) * subpixel + 1) data = np.zeros((rows.size, cols.size, number_of_disparity_col, number_of_disparity_row)) attrs = { @@ -97,14 +103,15 @@ def zeros_cost_volumes( "sampling_interval": 1, "type_measure": type_measure, "step": [1, 1], + "subpixel": subpixel, } return MatchingCost.allocate_cost_volumes( attrs, rows, cols, - np.arange(min_disparity_col, max_disparity_col + 1), - np.arange(min_disparity_row, max_disparity_row + 1), + np.linspace(min_disparity_col, max_disparity_col, number_of_disparity_col), + np.linspace(min_disparity_row, max_disparity_row, number_of_disparity_row), data, ) From 0d3877016a044349f999e3f1c0ec803d92fd818f Mon Sep 17 00:00:00 2001 From: Philippe Mallet-Ladeira Date: Fri, 28 Jun 2024 10:13:03 +0200 Subject: [PATCH 007/121] feat: take subpixel into account for dichotomy Start at right precision instead of skipping first precisions in the loop. --- pandora2d/refinement/dichotomy.py | 8 +++--- .../test_refinement/test_dichotomy.py | 26 ++++++++++++++++++- 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/pandora2d/refinement/dichotomy.py b/pandora2d/refinement/dichotomy.py index 0af0430..a04f1e8 100644 --- a/pandora2d/refinement/dichotomy.py +++ b/pandora2d/refinement/dichotomy.py @@ -143,7 +143,10 @@ def refinement_method( row_disparity_source = cost_volumes.attrs["row_disparity_source"] col_disparity_source = cost_volumes.attrs["col_disparity_source"] - precisions = [1 / 2 ** (it + 1) for it in range(self.cfg["iterations"])] + # start iterations after subpixel precision: `subpixel.bit_length() - 1` found which power of 2 subpixel is, + # and we add 1 to start at next iteration + first_iteration = cost_volumes.attrs["subpixel"].bit_length() + precisions = [1 / 2**it for it in range(first_iteration, self.cfg["iterations"] + 1)] # Convert disparity maps to np.array to optimise performance row_map = row_map.to_numpy() @@ -156,7 +159,6 @@ def refinement_method( op_flags=[["readwrite"], ["readwrite"], ["readwrite"]], ) as iterators: for cost_surface, (cost_value, disp_row_init, disp_col_init) in zip(cost_surfaces, iterators): - # Invalid value if np.isnan(cost_value): continue @@ -210,7 +212,7 @@ def refinement_method( ) ) - logging.info("Dichotomy precision reached: %s", precisions[-1]) + logging.info("Dichotomy precision reached: %s", precisions[-1] if precisions else 1 / 2**first_iteration) return col_map, row_map, cost_values diff --git a/tests/unit_tests/test_refinement/test_dichotomy.py b/tests/unit_tests/test_refinement/test_dichotomy.py index afb5fbc..c42342a 100644 --- a/tests/unit_tests/test_refinement/test_dichotomy.py +++ b/tests/unit_tests/test_refinement/test_dichotomy.py @@ -287,6 +287,7 @@ def config(self, iterations, filter_name): def dichotomy_instance(self, config): return refinement.dichotomy.Dichotomy(config) + @pytest.mark.parametrize("subpixel", [1, 2]) @pytest.mark.parametrize(["iterations", "precision"], [[1, 0.5], [2, 0.25], [3, 0.125]]) def test_precision_is_logged( self, cost_volumes, disp_map, dichotomy_instance, precision, mocker: MockerFixture, caplog @@ -294,7 +295,7 @@ def test_precision_is_logged( """Precision should be logged.""" with caplog.at_level(logging.INFO): dichotomy_instance.refinement_method(cost_volumes, disp_map, img_left=mocker.ANY, img_right=mocker.ANY) - assert caplog.record_tuples == [("root", logging.INFO, f"Dichotomy precision reached: {precision}")] + assert ("root", logging.INFO, f"Dichotomy precision reached: {precision}") in caplog.record_tuples @pytest.mark.parametrize( ["type_measure", "expected"], @@ -429,6 +430,29 @@ def test_disparity_map_is_within_range( # pylint: disable=too-many-arguments assert np.nanmax(result_disp_row) <= max_disparity_row assert np.nanmax(result_disp_col) <= max_disparity_col + @pytest.mark.parametrize( + ["subpixel", "iterations"], + [ + pytest.param(2, 1), + pytest.param(4, 1), + pytest.param(4, 2), + ], + ) + def test_skip_iterations_with_subpixel( + self, dichotomy_instance, cost_volumes, disp_map, subpixel, mocker: MockerFixture + ): + """First iterations must be skipped since precision is already reached by subpixel.""" + result_disp_map = copy.deepcopy(disp_map) + result_disp_col, result_disp_row, _ = dichotomy_instance.refinement_method( + cost_volumes, + result_disp_map, + img_left=mocker.ANY, + img_right=mocker.ANY, + ) + + np.testing.assert_array_equal(result_disp_row, disp_map["row_map"]) + np.testing.assert_array_equal(result_disp_col, disp_map["col_map"]) + def test_margins(): """ From f700344f7d9fea3ac52d9e6d9e7bbc43b2900511 Mon Sep 17 00:00:00 2001 From: Philippe Mallet-Ladeira Date: Fri, 28 Jun 2024 13:28:14 +0200 Subject: [PATCH 008/121] tests(dichotomy): extract fixtures --- .../test_refinement/test_dichotomy.py | 71 ++++++++----------- 1 file changed, 29 insertions(+), 42 deletions(-) diff --git a/tests/unit_tests/test_refinement/test_dichotomy.py b/tests/unit_tests/test_refinement/test_dichotomy.py index c42342a..057a05e 100644 --- a/tests/unit_tests/test_refinement/test_dichotomy.py +++ b/tests/unit_tests/test_refinement/test_dichotomy.py @@ -151,15 +151,31 @@ def disp_map(invalid_disparity, rows, cols): @pytest.fixture() -def config(): - """Basic configuration expected to be good.""" - return {"refinement_method": "dichotomy", "iterations": 2, "filter": "bicubic"} +def iterations(): + return 2 -def test_factory(config): - """With `refinement_method` equals to `dichotomy`, we should get a Dichotomy object.""" - dichotomy_instance = refinement.AbstractRefinement(config) # type: ignore[abstract] +@pytest.fixture() +def filter_name(): + return "bicubic" + + +@pytest.fixture() +def config(iterations, filter_name): + return { + "refinement_method": "dichotomy", + "iterations": iterations, + "filter": filter_name, + } + +@pytest.fixture() +def dichotomy_instance(config): + return refinement.dichotomy.Dichotomy(config) + + +def test_factory(dichotomy_instance): + """With `refinement_method` equals to `dichotomy`, we should get a Dichotomy object.""" assert isinstance(dichotomy_instance, refinement.dichotomy.Dichotomy) assert isinstance(dichotomy_instance, refinement.AbstractRefinement) @@ -175,21 +191,20 @@ def test_method_field(self, config): refinement.dichotomy.Dichotomy(config) assert "invalid_method" in err.value.args[0] + @pytest.mark.parametrize("iterations", [0]) def test_iterations_below_minimum(self, config): """An exception should be raised.""" - config["iterations"] = 0 - with pytest.raises(json_checker.core.exceptions.DictCheckerError) as err: refinement.dichotomy.Dichotomy(config) assert "Not valid data" in err.value.args[0] assert "iterations" in err.value.args[0] + @pytest.mark.parametrize("iterations", [10]) def test_iterations_above_maximum(self, config, caplog): """Test that when user set an iteration value above defined maximum, we replace it by this maximum and log a warning. """ - config["iterations"] = 10 - + # caplog does not capture logs from fixture, so we can not use dichotomy_instance fixture dichotomy_instance = refinement.dichotomy.Dichotomy(config) assert dichotomy_instance.cfg["iterations"] == 9 @@ -199,21 +214,13 @@ def test_iterations_above_maximum(self, config, caplog): ) @pytest.mark.parametrize("iterations", [1, 9]) - def test_iterations_in_allowed_range(self, config, iterations): + def test_iterations_in_allowed_range(self, iterations, dichotomy_instance): """It should not fail.""" - config["iterations"] = iterations - - dichotomy_instance = refinement.dichotomy.Dichotomy(config) - assert dichotomy_instance.cfg["iterations"] == iterations @pytest.mark.parametrize("filter_name", ["bicubic"]) - def test_valid_filter_names(self, config, filter_name): + def test_valid_filter_names(self, filter_name, dichotomy_instance): """Test accepted filter names.""" - config["filter"] = filter_name - - dichotomy_instance = refinement.dichotomy.Dichotomy(config) - assert dichotomy_instance.cfg["filter"] == filter_name @pytest.mark.parametrize("missing", ["refinement_method", "iterations", "filter"]) @@ -271,22 +278,6 @@ def cost_volumes(self, zeros_cost_volumes): def iterations(self): return 1 - @pytest.fixture() - def filter_name(self): - return "bicubic" - - @pytest.fixture() - def config(self, iterations, filter_name): - return { - "refinement_method": "dichotomy", - "iterations": iterations, - "filter": filter_name, - } - - @pytest.fixture() - def dichotomy_instance(self, config): - return refinement.dichotomy.Dichotomy(config) - @pytest.mark.parametrize("subpixel", [1, 2]) @pytest.mark.parametrize(["iterations", "precision"], [[1, 0.5], [2, 0.25], [3, 0.125]]) def test_precision_is_logged( @@ -454,15 +445,11 @@ def test_skip_iterations_with_subpixel( np.testing.assert_array_equal(result_disp_col, disp_map["col_map"]) -def test_margins(): +@pytest.mark.parametrize("filter_name", ["bicubic"]) +def test_margins(dichotomy_instance): """ Test margins of Dichotomy. """ - - config = {"refinement_method": "dichotomy", "iterations": 2, "filter": "bicubic"} - - dichotomy_instance = refinement.dichotomy.Dichotomy(config) - assert dichotomy_instance.margins == Margins(1, 1, 2, 2) From b50c8150d38178d5683906700dac61599dddf904 Mon Sep 17 00:00:00 2001 From: Philippe Mallet-Ladeira Date: Fri, 28 Jun 2024 15:14:48 +0200 Subject: [PATCH 009/121] feat(dichotomy): add message about number of skipped iterations --- pandora2d/refinement/dichotomy.py | 10 ++++++- .../test_refinement/test_dichotomy.py | 28 +++++++++++-------- 2 files changed, 26 insertions(+), 12 deletions(-) diff --git a/pandora2d/refinement/dichotomy.py b/pandora2d/refinement/dichotomy.py index a04f1e8..858af91 100644 --- a/pandora2d/refinement/dichotomy.py +++ b/pandora2d/refinement/dichotomy.py @@ -147,6 +147,12 @@ def refinement_method( # and we add 1 to start at next iteration first_iteration = cost_volumes.attrs["subpixel"].bit_length() precisions = [1 / 2**it for it in range(first_iteration, self.cfg["iterations"] + 1)] + if first_iteration >= 0: + logging.info( + "With subpixel of `%s` the `%s` first dichotomy iterations will be skipped.", + cost_volumes.attrs["subpixel"], + first_iteration - 1, + ) # Convert disparity maps to np.array to optimise performance row_map = row_map.to_numpy() @@ -212,7 +218,9 @@ def refinement_method( ) ) - logging.info("Dichotomy precision reached: %s", precisions[-1] if precisions else 1 / 2**first_iteration) + logging.info( + "Dichotomy precision reached: %s", precisions[-1] if precisions else 1 / 2 ** (first_iteration - 1) + ) return col_map, row_map, cost_values diff --git a/tests/unit_tests/test_refinement/test_dichotomy.py b/tests/unit_tests/test_refinement/test_dichotomy.py index 057a05e..23129d7 100644 --- a/tests/unit_tests/test_refinement/test_dichotomy.py +++ b/tests/unit_tests/test_refinement/test_dichotomy.py @@ -422,27 +422,33 @@ def test_disparity_map_is_within_range( # pylint: disable=too-many-arguments assert np.nanmax(result_disp_col) <= max_disparity_col @pytest.mark.parametrize( - ["subpixel", "iterations"], + ["subpixel", "iterations", "nb_of_skipped"], [ - pytest.param(2, 1), - pytest.param(4, 1), - pytest.param(4, 2), + pytest.param(2, 1, 1), + pytest.param(4, 1, 2), + pytest.param(4, 2, 2), + pytest.param(8, 3, 3), ], ) def test_skip_iterations_with_subpixel( - self, dichotomy_instance, cost_volumes, disp_map, subpixel, mocker: MockerFixture + self, dichotomy_instance, cost_volumes, disp_map, subpixel, nb_of_skipped, caplog, mocker: MockerFixture ): """First iterations must be skipped since precision is already reached by subpixel.""" result_disp_map = copy.deepcopy(disp_map) - result_disp_col, result_disp_row, _ = dichotomy_instance.refinement_method( - cost_volumes, - result_disp_map, - img_left=mocker.ANY, - img_right=mocker.ANY, - ) + with caplog.at_level(logging.INFO): + result_disp_col, result_disp_row, _ = dichotomy_instance.refinement_method( + cost_volumes, + result_disp_map, + img_left=mocker.ANY, + img_right=mocker.ANY, + ) np.testing.assert_array_equal(result_disp_row, disp_map["row_map"]) np.testing.assert_array_equal(result_disp_col, disp_map["col_map"]) + assert ( + f"With subpixel of `{subpixel}` the `{nb_of_skipped}` first dichotomy iterations will be skipped." + in caplog.messages + ) @pytest.mark.parametrize("filter_name", ["bicubic"]) From baffcb66b7e0b9f7b3411bb0d9c3b686fd1b1b27 Mon Sep 17 00:00:00 2001 From: Tommy Date: Tue, 9 Jul 2024 09:48:40 +0200 Subject: [PATCH 010/121] feat: replace after by before in the transitions of the state machine --- pandora2d/state_machine.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/pandora2d/state_machine.py b/pandora2d/state_machine.py index 04443dc..aa78255 100644 --- a/pandora2d/state_machine.py +++ b/pandora2d/state_machine.py @@ -63,36 +63,36 @@ class Pandora2DMachine(Machine): # pylint:disable=too-many-instance-attributes """ _transitions_run = [ - {"trigger": "estimation", "source": "begin", "dest": "assumption", "after": "estimation_run"}, + {"trigger": "estimation", "source": "begin", "dest": "assumption", "before": "estimation_run"}, { "trigger": "matching_cost", "source": "begin", "dest": "cost_volumes", "prepare": "matching_cost_prepare", - "after": "matching_cost_run", + "before": "matching_cost_run", }, { "trigger": "matching_cost", "source": "assumption", "dest": "cost_volumes", "prepare": "matching_cost_prepare", - "after": "matching_cost_run", + "before": "matching_cost_run", }, - {"trigger": "disparity", "source": "cost_volumes", "dest": "disp_maps", "after": "disp_maps_run"}, - {"trigger": "refinement", "source": "disp_maps", "dest": "disp_maps", "after": "refinement_run"}, + {"trigger": "disparity", "source": "cost_volumes", "dest": "disp_maps", "before": "disp_maps_run"}, + {"trigger": "refinement", "source": "disp_maps", "dest": "disp_maps", "before": "refinement_run"}, ] _transitions_check = [ - {"trigger": "estimation", "source": "begin", "dest": "assumption", "after": "estimation_check_conf"}, - {"trigger": "matching_cost", "source": "begin", "dest": "cost_volumes", "after": "matching_cost_check_conf"}, + {"trigger": "estimation", "source": "begin", "dest": "assumption", "before": "estimation_check_conf"}, + {"trigger": "matching_cost", "source": "begin", "dest": "cost_volumes", "before": "matching_cost_check_conf"}, { "trigger": "matching_cost", "source": "assumption", "dest": "cost_volumes", - "after": "matching_cost_check_conf", + "before": "matching_cost_check_conf", }, - {"trigger": "disparity", "source": "cost_volumes", "dest": "disp_maps", "after": "disparity_check_conf"}, - {"trigger": "refinement", "source": "disp_maps", "dest": "disp_maps", "after": "refinement_check_conf"}, + {"trigger": "disparity", "source": "cost_volumes", "dest": "disp_maps", "before": "disparity_check_conf"}, + {"trigger": "refinement", "source": "disp_maps", "dest": "disp_maps", "before": "refinement_check_conf"}, ] margins = GlobalMargins() From f5ba38c6bd389d70466d759d9617cad4b2b1752c Mon Sep 17 00:00:00 2001 From: Jerome Lebreton Date: Mon, 8 Jul 2024 13:37:31 +0200 Subject: [PATCH 011/121] setup: delete pylint inferior at 3.2.4 condition --- setup.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.cfg b/setup.cfg index a7ef3af..193ee52 100644 --- a/setup.cfg +++ b/setup.cfg @@ -83,7 +83,7 @@ dev = pre-commit isort>=5.8.0 # Check imports black>=21.5b0 # PEP8 format code - pylint>=2.8.2, <3.2.4 # General linter with more rules + pylint>=2.8.2 # General linter with more rules setuptools_scm # version from git tag mypy # static type checker From 7ae769c24d32f88b6b671a6984781eba857de4ae Mon Sep 17 00:00:00 2001 From: Tommy Date: Mon, 15 Jul 2024 13:05:00 +0200 Subject: [PATCH 012/121] Test: Add a requirement num in a couple of tests of test_pipelines.py --- tests/functional_tests/test_pipelines.py | 32 +++++++++++++++++++++--- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/tests/functional_tests/test_pipelines.py b/tests/functional_tests/test_pipelines.py index 36b017d..f345100 100644 --- a/tests/functional_tests/test_pipelines.py +++ b/tests/functional_tests/test_pipelines.py @@ -99,7 +99,13 @@ def test_no_common_key(self): def test_monoband_with_nodata_not_nan(run_pipeline, correct_input_cfg, correct_pipeline_without_refinement): - """Test a configuration with monoband images.""" + """ + Description : Test a configuration with monoband images. + Data : + - Left image : cones/monoband/left.png + - Right image : cones/monoband/right.png + Requirement : EX_CONF_00, EX_CONF_06 + """ configuration = {**correct_input_cfg, **correct_pipeline_without_refinement} configuration["input"]["left"]["nodata"] = -9999 @@ -122,7 +128,13 @@ def test_monoband_with_nodata_not_nan(run_pipeline, correct_input_cfg, correct_p @pytest.mark.xfail(reason="saved nan in nodata is not valid json and is not comparable to nan") def test_monoband_with_nan_nodata(run_pipeline, correct_input_cfg, correct_pipeline_without_refinement): - """Test a configuration with monoband images and left nodata set to NaN.""" + """ + Description : Test a configuration with monoband images and left nodata set to NaN. + Data : + - Left image : cones/monoband/left.png + - Right image : cones/monoband/right.png + Requirement : EX_CONF_00, EX_CONF_06 + """ configuration = {**correct_input_cfg, **correct_pipeline_without_refinement} run_dir = run_pipeline(configuration) @@ -138,7 +150,13 @@ def test_monoband_with_nan_nodata(run_pipeline, correct_input_cfg, correct_pipel @pytest.mark.xfail(reason="Multiband is not managed") def test_multiband(run_pipeline, correct_multiband_input_cfg, correct_pipeline_without_refinement): - """Test a configuration with multiband images.""" + """ + Description : Test a configuration with multiband images. + Data : + - Left image : cones/multibands/left.tif + - Right image : cones/multibands/right.tif + Requirement : EX_CONF_00, EX_CONF_06, EX_CONF_12 + """ configuration: Dict[str, Dict] = {**correct_multiband_input_cfg, **correct_pipeline_without_refinement} run_dir = run_pipeline(configuration) @@ -153,7 +171,13 @@ def test_multiband(run_pipeline, correct_multiband_input_cfg, correct_pipeline_w def test_optical_flow_configuration(run_pipeline, correct_input_cfg, correct_pipeline_with_optical_flow): - """Test optical_flow configuration has a window_size and a step identical to matching_cost step.""" + """ + Description : Test optical_flow configuration has a window_size and a step identical to matching_cost step. + Data : + - Left image : cones/monoband/left.png + - Right image : cones/monoband/right.png + Requirement : EX_CONF_00, EX_CONF_06 + """ configuration: Dict[str, Dict] = {**correct_input_cfg, **correct_pipeline_with_optical_flow} configuration["pipeline"]["refinement"]["iterations"] = 1 From 7c5904644d6b821bed80b3f0657b45e851960afc Mon Sep 17 00:00:00 2001 From: Tommy Date: Wed, 17 Jul 2024 12:07:15 +0200 Subject: [PATCH 013/121] Test: Add a requirement num in a couple of tests of test_matching_cost --- .../test_matching_cost_check_conf.py | 48 +++++++++++++++++-- .../test_matching_cost_compute.py | 24 ++++++++-- 2 files changed, 64 insertions(+), 8 deletions(-) diff --git a/tests/unit_tests/test_matching_cost/test_matching_cost_check_conf.py b/tests/unit_tests/test_matching_cost/test_matching_cost_check_conf.py index ed3f074..3851027 100644 --- a/tests/unit_tests/test_matching_cost/test_matching_cost_check_conf.py +++ b/tests/unit_tests/test_matching_cost/test_matching_cost_check_conf.py @@ -35,19 +35,28 @@ def test_check_conf(): """ - test check_conf of matching cost pipeline + Description : test check_conf of matching cost pipeline + Data : + Requirement : EX_MC_ZNCC_00 """ matching_cost.MatchingCost({"matching_cost_method": "zncc", "window_size": 5}) def test_invalid_method(): - """census is not expected to be used with pandora2d.""" + """ + Description : census is not expected to be used with pandora2d. + Data : + Requirement : EX_CONF_08 + """ with pytest.raises(json_checker.core.exceptions.DictCheckerError): matching_cost.MatchingCost({"matching_cost_method": "census", "window_size": 5}) class TestWindowSize: - """Test window_size parameter values.""" + """ + Description : Test window_size parameter values. + Requirement : EX_CONF_04, EX_MC_00 + """ @pytest.mark.parametrize("method", ["zncc", "sad", "ssd"]) def test_default_window_size(self, method): @@ -57,6 +66,11 @@ def test_default_window_size(self, method): @pytest.mark.parametrize("method", ["zncc", "sad", "ssd"]) def test_fails_with_invalid_window_size(self, method): + """ + Description : Test the validity of the window_size parameter + Data : + Requirement : EX_CONF_08 + """ with pytest.raises(json_checker.core.exceptions.DictCheckerError) as err: matching_cost.MatchingCost({"matching_cost_method": method, "window_size": -1}) assert "window_size" in err.value.args[0] @@ -66,7 +80,10 @@ def test_fails_with_invalid_window_size(self, method): @pytest.mark.plugin_tests @pytest.mark.skipif(importlib.util.find_spec("mc_cnn") is None, reason="MCCNN plugin not installed") class TestMCCNNConf: - """Test window_size with MCCNN plugin.""" + """ + Description : Test window_size with MCCNN plugin. + Requirement : EX_CONF_04, EX_MC_00 + """ def test_default_window_size(self): result = matching_cost.MatchingCost({"matching_cost_method": "mc_cnn", "step": [1, 1]}) @@ -80,7 +97,8 @@ def test_fails_with_invalid_window_size(self): class TestStep: """ - Test step in matching_cost configuration + Description : Test step in matching_cost configuration + Requirement : EX_CONF_04, EX_STEP_02, EX_MC_01 """ def test_nominal_case(self): @@ -92,18 +110,38 @@ def test_default_step(self): assert result.cfg["step"] == [1, 1] def test_fails_with_negative_step(self): + """ + Description : Test if the step is negative + Data : + Requirement : EX_CONF_08 + """ with pytest.raises(json_checker.core.exceptions.DictCheckerError): matching_cost.MatchingCost({"matching_cost_method": "zncc", "window_size": 5, "step": [-2, 3]}) def test_fails_with_one_element_list(self): + """ + Description : Test fails if the step is a list of one element + Data : + Requirement : EX_CONF_08 + """ with pytest.raises(json_checker.core.exceptions.DictCheckerError): matching_cost.MatchingCost({"matching_cost_method": "zncc", "window_size": 5, "step": [2]}) def test_fails_with_more_than_two_element_list(self): + """ + Description : Test fails if the step is a list of more than 2 elements + Data : + Requirement : EX_CONF_08 + """ with pytest.raises(json_checker.core.exceptions.DictCheckerError): matching_cost.MatchingCost({"matching_cost_method": "zncc", "window_size": 5, "step": [2, 3, 4]}) def test_fails_with_string_element(self): + """ + Description : Test fails if the step list contains a string element + Data : + Requirement : EX_CONF_08 + """ with pytest.raises(json_checker.core.exceptions.DictCheckerError): matching_cost.MatchingCost({"matching_cost_method": "zncc", "window_size": 5, "step": ["2", 3]}) diff --git a/tests/unit_tests/test_matching_cost/test_matching_cost_compute.py b/tests/unit_tests/test_matching_cost/test_matching_cost_compute.py index a162a49..4aabda1 100644 --- a/tests/unit_tests/test_matching_cost/test_matching_cost_compute.py +++ b/tests/unit_tests/test_matching_cost/test_matching_cost_compute.py @@ -49,7 +49,17 @@ @pytest.mark.parametrize("col_step", [1, 2, pytest.param(5, id="Step gt image")]) @pytest.mark.parametrize("row_step", [1, 2, pytest.param(5, id="Step gt image")]) def test_steps(request, data_fixture_name, col_step, row_step): - """We expect step to work.""" + """ + Description : We expect step to work. + Data : + - data_with_null_disparity, + - data_with_positive_disparity_in_col, + - data_with_positive_disparity_in_row, + - data_with_negative_disparity_in_col, + - data_with_negative_disparity_in_row, + - data_with_disparity_negative_in_row_and_positive_in_col + Requirement : EX_STEP_00, EX_STEP_01 + """ data = request.getfixturevalue(data_fixture_name) # sum of squared difference images self.left, self.right, window_size=3 @@ -456,7 +466,11 @@ def test_compute_cv_zncc(): ) def test_cost_volume_coordinates_with_roi(roi, input_config, matching_cost_config, col_expected, row_expected): """ - Test that we have the correct cost_volumes coordinates with a ROI + Description : Test that we have the correct cost_volumes coordinates with a ROI + Data : + - Left image : tmp_path / "left_img.png" + - Right image : tmp_path / "right_img.png" + Requirement : EX_STEP_00 """ cfg = {"input": input_config, "pipeline": {"matching_cost": matching_cost_config}, "ROI": roi} @@ -538,7 +552,11 @@ def test_cost_volume_coordinates_with_roi(roi, input_config, matching_cost_confi ) def test_cost_volume_coordinates_without_roi(input_config, matching_cost_config, col_expected, row_expected): """ - Test that we have the correct cost_volumes coordinates without a ROI + Description : Test that we have the correct cost_volumes coordinates without a ROI + Data : + - Left image : tmp_path / "left_img.png" + - Right image : tmp_path / "right_img.png" + Requirement : EX_STEP_00 """ cfg = { From 11a1f6fbad1cbb7da417ff93e3b1f378ff2b3beb Mon Sep 17 00:00:00 2001 From: Tommy Date: Wed, 17 Jul 2024 12:09:30 +0200 Subject: [PATCH 014/121] Test: Add a requirement num in a couple of tests of test_refinement --- .../test_refinement/test_dichotomy.py | 23 +++++++++--- .../test_refinement/test_interpolation.py | 5 +++ .../test_refinement/test_optical_flow.py | 35 +++++++++++++++---- 3 files changed, 52 insertions(+), 11 deletions(-) diff --git a/tests/unit_tests/test_refinement/test_dichotomy.py b/tests/unit_tests/test_refinement/test_dichotomy.py index 23129d7..929d811 100644 --- a/tests/unit_tests/test_refinement/test_dichotomy.py +++ b/tests/unit_tests/test_refinement/test_dichotomy.py @@ -175,13 +175,20 @@ def dichotomy_instance(config): def test_factory(dichotomy_instance): - """With `refinement_method` equals to `dichotomy`, we should get a Dichotomy object.""" + """ + Description : With `refinement_method` equals to `dichotomy`, we should get a Dichotomy object. + Data : + Requirement : EX_REF_DICH_00 + """ assert isinstance(dichotomy_instance, refinement.dichotomy.Dichotomy) assert isinstance(dichotomy_instance, refinement.AbstractRefinement) class TestCheckConf: - """Test the check_conf method.""" + """ + Description : Test the check_conf method. + Requirement : EX_CONF_08, EX_REF_01, EX_REF_DICH_01 + """ def test_method_field(self, config): """An exception should be raised if `refinement_method` is not `dichotomy`.""" @@ -225,7 +232,11 @@ def test_valid_filter_names(self, filter_name, dichotomy_instance): @pytest.mark.parametrize("missing", ["refinement_method", "iterations", "filter"]) def test_fails_on_missing_keys(self, config, missing): - """Should raise an error when a mandatory key is missing.""" + """ + Description : Should raise an error when a mandatory key is missing. + Data : + Requirement : EX_CONF_08 + """ del config[missing] with pytest.raises(json_checker.core.exceptions.MissKeyCheckerError) as err: @@ -283,7 +294,11 @@ def iterations(self): def test_precision_is_logged( self, cost_volumes, disp_map, dichotomy_instance, precision, mocker: MockerFixture, caplog ): - """Precision should be logged.""" + """ + Description : Precision should be logged. + Data : + Requirement : EX_REF_DICH_01 + """ with caplog.at_level(logging.INFO): dichotomy_instance.refinement_method(cost_volumes, disp_map, img_left=mocker.ANY, img_right=mocker.ANY) assert ("root", logging.INFO, f"Dichotomy precision reached: {precision}") in caplog.record_tuples diff --git a/tests/unit_tests/test_refinement/test_interpolation.py b/tests/unit_tests/test_refinement/test_interpolation.py index 6b752b5..0aa688b 100644 --- a/tests/unit_tests/test_refinement/test_interpolation.py +++ b/tests/unit_tests/test_refinement/test_interpolation.py @@ -70,6 +70,11 @@ def cv_dataset(): def test_checkconf_fails_if_iterations_is_given(): + """ + Description : Test fails if iterations is given + Data : + Requirement : EX_CONF_08 + """ with pytest.raises(json_checker.core.exceptions.MissKeyCheckerError): refinement.interpolation.Interpolation({"refinement_method": "interpolation", "iterations": 1}) diff --git a/tests/unit_tests/test_refinement/test_optical_flow.py b/tests/unit_tests/test_refinement/test_optical_flow.py index 6eeda31..9d00798 100644 --- a/tests/unit_tests/test_refinement/test_optical_flow.py +++ b/tests/unit_tests/test_refinement/test_optical_flow.py @@ -64,13 +64,18 @@ def optical_flow_cfg(): def test_check_conf_passes(optical_flow_cfg): """ - Test the check_conf function + Description : Test the check_conf function + Data : + Requirement : EX_REF_01, EX_REF_FO_00 """ refinement.AbstractRefinement(optical_flow_cfg) # type: ignore[abstract] class TestIterations: - """Test Iteration parameter.""" + """ + Description : Test Iteration parameter. + Requirement : EX_REF_FO_01 + """ def test_iterations_is_not_mandatory(self): """Should not raise error.""" @@ -85,7 +90,11 @@ def test_iterations_is_not_mandatory(self): ], ) def test_fails_with_invalid_iteration_value(self, value): - """Iteration should be only positive integer.""" + """ + Description : Iteration should be only positive integer. + Data : + Requirement : EX_CONF_08 + """ with pytest.raises((KeyError, DictCheckerError)): refinement.optical_flow.OpticalFlow({"refinement_method": "optical_flow", "iterations": value}) @@ -144,7 +153,11 @@ def test_nominal_case(self, optical_flow_cfg, window_size): ], ) def test_check_conf_fails_with_wrong_window_size(self, optical_flow_cfg, window_size): - """Wrong value of window_size""" + """ + Description : Wrong value of window_size + Data : + Requirement : EX_CONF_08 + """ with pytest.raises(DictCheckerError) as err: refinement.AbstractRefinement(optical_flow_cfg, [1, 1], window_size) # type: ignore[abstract] assert "window_size" in err.value.args[0] @@ -177,7 +190,11 @@ def test_nominal_case(self, optical_flow_cfg, step): ], ) def test_check_conf_fails_with_wrong_step(self, optical_flow_cfg, step): - """Wrong value of step""" + """ + Description : Wrong value of step + Data : + Requirement : EX_CONF_08 + """ with pytest.raises(DictCheckerError) as err: refinement.AbstractRefinement(optical_flow_cfg, step) # type: ignore[abstract] assert "step" in err.value.args[0] @@ -190,7 +207,9 @@ def test_reshape_to_matching_cost_window_left(dataset_image): img = dataset_image - refinement_class = refinement.AbstractRefinement({"refinement_method": "optical_flow"}, [1, 1], 3) # type: ignore[abstract] + refinement_class = refinement.AbstractRefinement( + {"refinement_method": "optical_flow"}, [1, 1], 3 + ) # type: ignore[abstract] cv = np.zeros((6, 5, 5, 5)) @@ -246,7 +265,9 @@ def test_reshape_to_matching_cost_window_right(dataset_image): """ img = dataset_image - refinement_class = refinement.AbstractRefinement({"refinement_method": "optical_flow"}, [1, 1], 3) # type: ignore[abstract] + refinement_class = refinement.AbstractRefinement( + {"refinement_method": "optical_flow"}, [1, 1], 3 + ) # type: ignore[abstract] # Create disparity maps col_disp_map = [2, 0, 0, 0, 1, 0, 0, 0, 1, -2, 0, 0] From b712cd31b382f3bf36f05a456b2763b4576a5a6d Mon Sep 17 00:00:00 2001 From: Tommy Date: Wed, 17 Jul 2024 12:11:06 +0200 Subject: [PATCH 015/121] Test: Add a requirement num in a couple of tests of test_check_configuration.py --- tests/unit_tests/test_check_configuration.py | 166 ++++++++++++++++--- 1 file changed, 146 insertions(+), 20 deletions(-) diff --git a/tests/unit_tests/test_check_configuration.py b/tests/unit_tests/test_check_configuration.py index 02276da..47f012c 100644 --- a/tests/unit_tests/test_check_configuration.py +++ b/tests/unit_tests/test_check_configuration.py @@ -61,7 +61,9 @@ def test_nominal(self, datasets): def test_fails_with_wrong_dimension(self): """ - Test with wrong image shapes + Description : Test with wrong image shapes + Data : + Requirement : EX_CONF_11 """ data_left = np.full((3, 3), 2) data_right = np.full((4, 4), 2) @@ -100,7 +102,11 @@ def test_fails_with_wrong_dimension(self): ) def test_fails_without_disparity(self, datasets, col_disparity, row_disparity): """ - Test with missing disparities + Description : Test with missing disparities + Data : + - Left image : cones/monoband/left.png + - Right image : cones/monoband/right.png + Requirement : EX_CONF_08 """ dataset_left, dataset_right = datasets if col_disparity: @@ -126,19 +132,42 @@ def test_check_nominal_case(self, correct_input_cfg) -> None: assert check_configuration.check_input_section(correct_input_cfg) def test_fails_if_input_section_is_missing(self): + """ + Description : Test if input section is missing in the configuration file + Data : + Requirement : EX_CONF_01 + """ with pytest.raises(KeyError, match="input key is missing"): check_configuration.check_input_section({}) def test_false_input_disp_should_exit(self, false_input_disp): + """ + Description : Exit if the input disp isn't correct + Data : + - Left image : cones/monoband/left.png + - Right image : cones/monoband/right.png + Requirement : EX_CONF_08 + """ with pytest.raises(ValueError, match="disp_max must be bigger than disp_min"): check_configuration.check_input_section(false_input_disp) def test_false_input_path_image_should_raise_error(self, false_input_path_image): + """ + Description : Test raises an error if the image path isn't correct + Data : cones/monoband/right.png + Requirement : EX_CONF_09 + """ with pytest.raises(DictCheckerError): check_configuration.check_input_section(false_input_path_image) def test_fails_with_images_of_different_sizes(self, correct_input_cfg, make_empty_image): - """Images must have the same shape and size.""" + """ + Description : Images must have the same shape and size. + Data : + - Left image : cones/monoband/left.png + - Right image : cones/monoband/right.png + Requirement : EX_CONF_11 + """ correct_input_cfg["input"]["left"]["img"] = str(make_empty_image("left.tiff")) correct_input_cfg["input"]["right"]["img"] = str(make_empty_image("right.tiff", shape=(50, 50))) @@ -146,7 +175,13 @@ def test_fails_with_images_of_different_sizes(self, correct_input_cfg, make_empt check_configuration.check_input_section(correct_input_cfg) def test_default_nodata(self, correct_input_cfg): - """Default nodata value shoud be -9999.""" + """ + Description : Default nodata value shoud be -9999. + Data : + - Left image : cones/monoband/left.png + - Right image : cones/monoband/right.png + Requirement : EX_CONF_04 + """ del correct_input_cfg["input"]["left"]["nodata"] result = check_configuration.check_input_section(correct_input_cfg) @@ -178,12 +213,19 @@ class TestCheckPipelineSection: """Test check_pipeline_section.""" def test_fails_if_pipeline_section_is_missing(self, pandora2d_machine) -> None: + """ + Description : Test if the pipeline section is missing in the configuration file + Data : + Requirement : EX_CONF_02 + """ with pytest.raises(KeyError, match="pipeline key is missing"): assert check_configuration.check_pipeline_section({}, pandora2d_machine) def test_nominal_case(self, pandora2d_machine, correct_pipeline) -> None: """ - Test function for checking user pipeline section + Description : Test function for checking user pipeline section + Data : + Requirement : EX_REF_00 """ assert check_configuration.check_pipeline_section(correct_pipeline, pandora2d_machine) @@ -204,7 +246,11 @@ def test_false_disp_dict_should_raise_error(self, pandora2d_machine, false_pipel ], ) def test_wrong_order_should_raise_error(self, pandora2d_machine, step_order): - """Pipeline section order is important.""" + """ + Description : Pipeline section order is important. + Data : + Requirement : EX_CONF_07 + """ steps = { "estimation": {"estimated_shifts": [-0.5, 1.3], "error": [1.0], "phase_diff": [1.0]}, "matching_cost": {"matching_cost_method": "zncc", "window_size": 5}, @@ -217,7 +263,11 @@ def test_wrong_order_should_raise_error(self, pandora2d_machine, step_order): def test_multiband_pipeline(self, pandora2d_machine, left_rgb_path, right_rgb_path): """ - Test the method check_conf for multiband images + Description : Test the method check_conf for multiband images + Data : + - Left image : cones/multibands/left.tif + - Right image : cones/multibands/right.tif + Requirement : EX_CONF_12 """ input_multiband_cfg = { "left": { @@ -247,7 +297,11 @@ def test_passes_with_good_disparity_range_and_interpolation_step( self, correct_input_cfg, correct_pipeline, pandora2d_machine ): """ - Test col_disparity & row_disparity range (=5) with interpolation step in user configuration + Description : Test col_disparity & row_disparity range (=5) with interpolation step in user configuration + Data : + - Left image : cones/monoband/left.png + - Right image : cones/monoband/right.png + Requirement : EX_ROI_05 """ user_cfg = {**correct_input_cfg, **correct_pipeline} check_configuration.check_conf(user_cfg, pandora2d_machine) @@ -264,7 +318,11 @@ def test_fails_with_wrong_disparity_range_and_interpolation_step( self, correct_input_cfg, correct_pipeline, pandora2d_machine, col_disparity, row_disparity ): """ - Test wrong col_disparity & row_disparity range with interpolation step in user configuration + Description : Test wrong col_disparity & row_disparity range with interpolation step in user configuration + Data : + - Left image : cones/monoband/left.png + - Right image : cones/monoband/right.png + Requirement : EX_CONF_08 """ correct_input_cfg["input"]["col_disparity"] = col_disparity correct_input_cfg["input"]["row_disparity"] = row_disparity @@ -277,9 +335,17 @@ def test_fails_with_wrong_disparity_range_and_interpolation_step( class TestCheckRoiSection: - """Test check_roi_section.""" + """ + Description : Test check_roi_section. + Requirement : EX_ROI_04 + """ def test_expect_roi_section(self): + """ + Description : Test if ROI section is missing + Data : + Requirement : EX_ROI_05 + """ with pytest.raises(MissKeyCheckerError, match="ROI"): check_configuration.check_roi_section({"input": {}}) @@ -291,10 +357,20 @@ def test_nominal_case(self, correct_roi_sensor) -> None: assert check_configuration.check_roi_section(correct_roi_sensor) def test_dimension_lt_0_raises_exception(self, false_roi_sensor_negative): + """ + Description : Raises an exception if the ROI dimensions are lower than 0 + Data : + Requirement : EX_CONF_08 + """ with pytest.raises(BaseException): check_configuration.check_roi_section(false_roi_sensor_negative) def test_first_dimension_gt_last_dimension_raises_exception(self, false_roi_sensor_first_superior_to_last): + """ + Description : Test if the first dimension of the ROI is greater than the last one + Data : + Requirement : EX_CONF_08 + """ with pytest.raises(BaseException): check_configuration.check_roi_section(false_roi_sensor_first_superior_to_last) @@ -345,19 +421,30 @@ def test_get_roi_pipeline( class TestCheckRoiCoherence: - """Test check_roi_coherence.""" + """ + Description : Test check_roi_coherence. + Requirement : EX_ROI_04 + """ def test_first_lt_last_is_ok(self, correct_roi_sensor) -> None: check_configuration.check_roi_coherence(correct_roi_sensor["ROI"]["col"]) def test_first_gt_last_raises_error(self, false_roi_sensor_first_superior_to_last): + """ + Description : Test if 'first' is greater than 'last' in ROI + Data : + Requirement : EX_CONF_08 + """ with pytest.raises(ValueError) as exc_info: check_configuration.check_roi_coherence(false_roi_sensor_first_superior_to_last["ROI"]["col"]) assert str(exc_info.value) == 'In ROI "first" should be lower than "last" in sensor ROI' class TestCheckStep: - """Test check_step.""" + """ + Description : Test check_step. + Requirement : EX_STEP_02 + """ def test_nominal_case(self, pipeline_config, pandora2d_machine) -> None: """ @@ -378,7 +465,11 @@ def test_nominal_case(self, pipeline_config, pandora2d_machine) -> None: ], ) def test_fails_with_bad_step_values(self, pipeline_config, pandora2d_machine, step) -> None: - """Test check_pipeline_section fails with bad values of step.""" + """ + Description : Test check_pipeline_section fails with bad values of step. + Data : + Requirement : EX_CONF_08 + """ pipeline_config["pipeline"]["matching_cost"]["step"] = step with pytest.raises(DictCheckerError): check_configuration.check_pipeline_section(pipeline_config, pandora2d_machine) @@ -410,7 +501,13 @@ def configuration(self, right_nodata, matching_cost_method, left_img_path, right @pytest.mark.parametrize("right_nodata", ["NaN", 0.1, "inf", None]) @pytest.mark.parametrize("matching_cost_method", ["sad", "ssd"]) def test_sad_or_ssd_fail_with(self, pandora2d_machine, configuration): - """Right nodata must be an integer with sad or ssd matching_cost_method.""" + """ + Description : Right nodata must be an integer with sad or ssd matching_cost_method. + Data : + - Left image : cones/monoband/left.png + - Right image : cones/monoband/right.png + Requirement : EX_CONF_08 + """ with pytest.raises((ValueError, DictCheckerError)): check_configuration.check_conf(configuration, pandora2d_machine) @@ -429,7 +526,13 @@ def test_zncc_passes_with(self, pandora2d_machine, configuration): @pytest.mark.parametrize("right_nodata", [0.2, None]) @pytest.mark.parametrize("matching_cost_method", ["zncc"]) def test_zncc_fails_with(self, pandora2d_machine, configuration): - """Right nodata must can not be float or nan with zncc matching_cost_method.""" + """ + Description : Right nodata can not be float or nan with zncc matching_cost_method. + Data : + - Left image : cones/monoband/left.png + - Right image : cones/monoband/right.png + Requirement : EX_CONF_08 + """ with pytest.raises((ValueError, DictCheckerError)): check_configuration.check_conf(configuration, pandora2d_machine) @@ -455,7 +558,12 @@ class TestCheckDisparityRangeSize: ], ) def test_fails_with_disparity_ranges_lower_5(self, disparity, title, string_match): - """Disparity range size must be greater than or equal to 5 when interpolation is used as refinement method""" + """ + Description : Disparity range size must be greater than or equal to 5 when interpolation + is used as refinement method + Data : + Requirement : EX_CONF_08 + """ with pytest.raises(ValueError, match=string_match): check_configuration.check_disparity_range_size(disparity, title) @@ -471,7 +579,11 @@ def test_fails_with_disparity_ranges_lower_5(self, disparity, title, string_matc ], ) def test_fails_with_grid_disparity(self, disparity, title, string_match): - """Disparity grid is not handled yet by Pandora2D""" + """ + Description : Disparity grid is not handled yet by Pandora2D + Data : + Requirement : EX_CONF_08 + """ with pytest.raises(TypeError, match=string_match): check_configuration.check_disparity_range_size(disparity, title) @@ -533,7 +645,11 @@ def configuration(self, image_path, row_disparity, col_disparity): ], ) def test_row_disparity_totally_out(self, pandora2d_machine, configuration): - """Totally out disparities should raise an error.""" + """ + Description : Totally out disparities should raise an error. + Data : tmp_path / "tiff_file.tif" + Requirement : EX_CONF_08 + """ with pytest.raises(ValueError, match="Row disparity range out of image"): check_configuration.check_conf(configuration, pandora2d_machine) @@ -545,7 +661,11 @@ def test_row_disparity_totally_out(self, pandora2d_machine, configuration): ], ) def test_column_disparity_totally_out(self, pandora2d_machine, configuration): - """Totally out disparities should raise an error.""" + """ + Description : Totally out disparities should raise an error. + Data : tmp_path / "tiff_file.tif" + Requirement : EX_CONF_08 + """ with pytest.raises(ValueError, match="Column disparity range out of image"): check_configuration.check_conf(configuration, pandora2d_machine) @@ -571,7 +691,13 @@ def test_disparity_partially_out(self, pandora2d_machine, configuration): ], ) def test_extra_section_is_allowed(correct_input_cfg, correct_pipeline, pandora2d_machine, extra_section_name): - """Should not raise an error if an extra section is added.""" + """ + Description : Should not raise an error if an extra section is added. + Data : + - Left image : cones/monoband/left.png + - Right image : cones/monoband/right.png + Requirement : EX_CONF_05 + """ configuration = {**correct_input_cfg, **correct_pipeline, extra_section_name: {}} check_configuration.check_conf(configuration, pandora2d_machine) From 3991feeaa7e0229f0f0479e4ec25d67c379b0683 Mon Sep 17 00:00:00 2001 From: Tommy Date: Wed, 17 Jul 2024 12:12:18 +0200 Subject: [PATCH 016/121] Test: Add a requirement num in a couple of tests of test_pandora2d.py --- tests/unit_tests/test_pandora2d.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/unit_tests/test_pandora2d.py b/tests/unit_tests/test_pandora2d.py index 5e55f3a..406ec7f 100644 --- a/tests/unit_tests/test_pandora2d.py +++ b/tests/unit_tests/test_pandora2d.py @@ -45,7 +45,9 @@ class TestPandora2D: @staticmethod def test_run_pandora(correct_pipeline, false_pipeline_mc, false_pipeline_disp) -> None: """ - Test function for checking user input section + Description : Test function for checking user input section + Data : + Requirement : EX_CONF_08 """ pandora2d_machine = state_machine.Pandora2DMachine() From ddbff6b3d5307fd28511b21e9c8a246bde4da21a Mon Sep 17 00:00:00 2001 From: Tommy Date: Wed, 17 Jul 2024 12:12:56 +0200 Subject: [PATCH 017/121] Test: Add a requirement num in a couple of tests of test_disparity.py --- tests/unit_tests/test_disparity.py | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/tests/unit_tests/test_disparity.py b/tests/unit_tests/test_disparity.py index 1423549..dfb141a 100644 --- a/tests/unit_tests/test_disparity.py +++ b/tests/unit_tests/test_disparity.py @@ -37,19 +37,30 @@ class TestCheckConf: - """Test check conf.""" + """ + Description : Test check conf. + Requirement : EX_CONF_04 + """ def test_nominal_case(self): """Should not raise error.""" disparity.Disparity({"disparity_method": "wta", "invalid_disparity": -9999}) def test_disparity_method_is_mandatory(self): - """Should raise an error.""" + """ + Description : Should raise an error if disparity method isn't specified . + Data : + Requirement : EX_CONF_08 + """ with pytest.raises(json_checker.core.exceptions.MissKeyCheckerError): disparity.Disparity({"invalid_disparity": "5"}) def test_fails_with_bad_disparity_method_value(self): - """Should raise an error.""" + """ + Description : Should raise an error if the disparity method isn't correct. + Data : + Requirement : EX_CONF_08 + """ with pytest.raises(json_checker.core.exceptions.DictCheckerError): disparity.Disparity({"disparity_method": "WTN"}) From 058e9cd088fb0036307994eb4533e81306359da5 Mon Sep 17 00:00:00 2001 From: Tommy Date: Wed, 17 Jul 2024 12:14:23 +0200 Subject: [PATCH 018/121] Test: Add a requirement num in a couple of tests of test_estimation.py --- tests/unit_tests/test_estimation.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/tests/unit_tests/test_estimation.py b/tests/unit_tests/test_estimation.py index 19cb2cd..8067b04 100644 --- a/tests/unit_tests/test_estimation.py +++ b/tests/unit_tests/test_estimation.py @@ -85,7 +85,9 @@ def estimation_class(full_configuration): ) def test_false_check_conf(estimation_method, range_col, range_row, sample_factor, error): """ - test check_conf of estimation with wrongs pipelines + Description : test check_conf of estimation with wrongs pipelines + Data : + Requirement : EX_CONF_08 """ with pytest.raises(error): @@ -122,7 +124,11 @@ def test_check_conf(): ], ) def test_default_parameters_values(full_configuration, parameter, expected_value): - """Test default values are the expected ones.""" + """ + Description : Test default values are the expected ones. + Data : + Requirement : EX_CONF_04 + """ del full_configuration[parameter] result = estimation.AbstractEstimation(full_configuration) # type: ignore[abstract] From a89eb5daf81c25ac9a67899d776bed4493f47823 Mon Sep 17 00:00:00 2001 From: Tommy Date: Wed, 17 Jul 2024 12:15:08 +0200 Subject: [PATCH 019/121] Test: Add a requirement num in a couple of tests of test_img_tools --- .../test_create_datasets_from_input.py | 32 ++++++++++++++++--- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/tests/unit_tests/test_img_tools/test_create_datasets_from_input.py b/tests/unit_tests/test_img_tools/test_create_datasets_from_input.py index 62e7952..a4c9fdb 100644 --- a/tests/unit_tests/test_img_tools/test_create_datasets_from_input.py +++ b/tests/unit_tests/test_img_tools/test_create_datasets_from_input.py @@ -132,7 +132,13 @@ class TestDisparityChecking: ], ) def test_fails_when_disparity_is_missing(self, input_section, missing, message): - """Test when disparity is not provided.""" + """ + Description : Test when disparity is not provided. + Data : + - Left image : cones/monoband/left.png + - Right image : cones/monoband/right.png + Requirement : EX_CONF_08 + """ for key in missing: del input_section[key] with pytest.raises(KeyError) as exc_info: @@ -142,7 +148,13 @@ def test_fails_when_disparity_is_missing(self, input_section, missing, message): @pytest.mark.parametrize("disparity", [None, 1, 3.14, "grid_path"]) @pytest.mark.parametrize("disparity_key", ["col_disparity", "row_disparity"]) def test_fails_when_disparities_are_not_lists_or_tuples(self, input_section, disparity_key, disparity): - """Test.""" + """ + Description : Test if disparities are lists or tuples in the input section + Data : + - Left image : cones/monoband/left.png + - Right image : cones/monoband/right.png + Requirement : EX_CONF_08 + """ input_section[disparity_key] = disparity with pytest.raises(ValueError) as exc_info: @@ -152,7 +164,13 @@ def test_fails_when_disparities_are_not_lists_or_tuples(self, input_section, dis @pytest.mark.parametrize("disparity", [None, np.nan, np.inf, float("nan"), float("inf")]) @pytest.mark.parametrize("disparity_key", ["col_disparity", "row_disparity"]) def test_fails_with_bad_disparity_values(self, input_section, disparity_key, disparity): - """Test.""" + """ + Description : Test if the disparity is iterable of length 2 + Data : + - Left image : cones/monoband/left.png + - Right image : cones/monoband/right.png + Requirement : EX_CONF_08 + """ input_section[disparity_key] = disparity with pytest.raises(ValueError) as exc_info: @@ -161,7 +179,13 @@ def test_fails_with_bad_disparity_values(self, input_section, disparity_key, dis @pytest.mark.parametrize("disparity_key", ["col_disparity", "row_disparity"]) def test_fails_when_disparity_max_lt_disparity_min(self, input_section, disparity_key): - """Test.""" + """ + Description : Test if the max disparity is lower than the min one + Data : + - Left image : cones/monoband/left.png + - Right image : cones/monoband/right.png + Requirement : EX_CONF_08 + """ input_section[disparity_key] = [8, -10] with pytest.raises(ValueError) as exc_info: img_tools.create_datasets_from_inputs(input_section) From 445de8ec5da4f69404641ddb35702cdc64c33a65 Mon Sep 17 00:00:00 2001 From: Marie Leconte Date: Mon, 22 Jul 2024 14:03:42 +0200 Subject: [PATCH 020/121] doc: delete parameters to remove sphinx warning --- pandora2d/estimation/phase_cross_correlation.py | 4 ---- pandora2d/refinement/dichotomy.py | 2 -- pandora2d/refinement/optical_flow.py | 1 - pandora2d/refinement/refinement.py | 1 - 4 files changed, 8 deletions(-) diff --git a/pandora2d/estimation/phase_cross_correlation.py b/pandora2d/estimation/phase_cross_correlation.py index c295e95..6a85287 100644 --- a/pandora2d/estimation/phase_cross_correlation.py +++ b/pandora2d/estimation/phase_cross_correlation.py @@ -39,10 +39,6 @@ class PhaseCrossCorrelation(estimation.AbstractEstimation): PhaseCrossCorrelation class allows to perform estimation """ - _range_col = None - _range_row = None - _sample_factor = None - # Default configuration, do not change these values _RANGE_COL = 5 _RANGE_ROW = 5 diff --git a/pandora2d/refinement/dichotomy.py b/pandora2d/refinement/dichotomy.py index 858af91..6f4b873 100644 --- a/pandora2d/refinement/dichotomy.py +++ b/pandora2d/refinement/dichotomy.py @@ -45,8 +45,6 @@ class Dichotomy(refinement.AbstractRefinement): "filter": And(str, lambda x: x in ["sinc", "bicubic"]), } - _filter = None - def __init__(self, cfg: dict = None, _: list = None, __: int = 5) -> None: """ :param cfg: optional configuration, {} diff --git a/pandora2d/refinement/optical_flow.py b/pandora2d/refinement/optical_flow.py index 3452ef6..8e04f80 100644 --- a/pandora2d/refinement/optical_flow.py +++ b/pandora2d/refinement/optical_flow.py @@ -39,7 +39,6 @@ class OpticalFlow(refinement.AbstractRefinement): OpticalFLow class allows to perform the subpixel cost refinement step """ - _iterations = None _invalid_disp = None _ITERATIONS = 4 diff --git a/pandora2d/refinement/refinement.py b/pandora2d/refinement/refinement.py index 76ba5d1..209b704 100644 --- a/pandora2d/refinement/refinement.py +++ b/pandora2d/refinement/refinement.py @@ -43,7 +43,6 @@ class AbstractRefinement: refinement_methods_avail: Dict = {} _refinement_method = None - cfg = None margins = NullMargins() schema: Dict # This will raise an AttributeError if not override in subclasses From 3d31d630822f2136ada29551032e0db2ada0a408 Mon Sep 17 00:00:00 2001 From: Marie Leconte Date: Fri, 19 Jul 2024 11:26:32 +0200 Subject: [PATCH 021/121] test: add requirement on html-report test --- tests/conftest.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/tests/conftest.py b/tests/conftest.py index 1ddae4d..2efbe7e 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -56,9 +56,11 @@ def pytest_html_results_table_header(cells): 1. Category : with values {'TU', 'TF', 'TP', 'TR'} 2. Function tested : basename of python test file + 3. Requirement : validating the Pandora2D tool, string with EX_* """ cells.insert(1, "Category") cells.insert(2, "Function tested") + cells.insert(3, "Requirement") def pytest_html_results_table_row(report, cells): @@ -69,12 +71,25 @@ def pytest_html_results_table_row(report, cells): 1. CATEGORY : with values {'TU', 'TF', 'TP', 'TR'} 2. FUNCTION : basename of python test file + 3. REQUIREMENT : with values EX_* """ type_dict = {"unit": "TU", "functional": "TF", "resource": "TR", "performance": "TP"} pattern = r"tests/(?P\w+)_tests.*test_(?P\w+)\.py" match = re.match(pattern, report.nodeid) cells.insert(1, f"{type_dict[match.groupdict()['type']]}") cells.insert(2, f"{match.groupdict()['function']}") + cells.insert(3, f"{'
'.join(report.requirement)}") + + +@pytest.hookimpl(hookwrapper=True) +def pytest_runtest_makereport(item, call): # pylint: disable=unused-argument + """ + Parse test docstrings and retrieve strings in EX_*. + """ + outcome = yield + report = outcome.get_result() + pattern = r"(EX_\w*)" + report.requirement = re.findall(pattern, str(item.function.__doc__)) @pytest.fixture() From 2eb0fc9e8e7f0cf109dc5778b1a29a4c3c92a801 Mon Sep 17 00:00:00 2001 From: Tommy Date: Thu, 18 Jul 2024 10:59:53 +0200 Subject: [PATCH 022/121] feat: Add a variable initial disparity in pandora2d --- pandora2d/check_configuration.py | 40 ++++++------ pandora2d/estimation/estimation.py | 18 +++--- .../estimation/phase_cross_correlation.py | 12 +--- pandora2d/img_tools.py | 64 +++++++++---------- 4 files changed, 62 insertions(+), 72 deletions(-) diff --git a/pandora2d/check_configuration.py b/pandora2d/check_configuration.py index 662f56b..01fe8c8 100644 --- a/pandora2d/check_configuration.py +++ b/pandora2d/check_configuration.py @@ -25,7 +25,7 @@ from __future__ import annotations -from typing import Dict, List +from typing import Dict import numpy as np import xarray as xr @@ -34,7 +34,6 @@ from pandora.img_tools import get_metadata from pandora.check_configuration import ( check_dataset, - check_disparities_from_input, check_images, concat_conf, get_config_input, @@ -101,8 +100,6 @@ def check_input_section(user_cfg: Dict[str, dict], estimation_config: dict = Non check_images(cfg["input"]) if estimation_config is None: - check_disparities_from_input(cfg["input"]["col_disparity"], None) - check_disparities_from_input(cfg["input"]["row_disparity"], None) left_image_metadata = get_metadata(cfg["input"]["left"]["img"]) check_disparity_ranges_are_inside_image( left_image_metadata, cfg["input"]["row_disparity"], cfg["input"]["col_disparity"] @@ -112,24 +109,24 @@ def check_input_section(user_cfg: Dict[str, dict], estimation_config: dict = Non def check_disparity_ranges_are_inside_image( - image_metadata: xr.Dataset, row_disparity_range: List, col_disparity_range: List + image_metadata: xr.Dataset, row_disparity: Dict, col_disparity: Dict ) -> None: """ Raise an error if disparity ranges are out off image. :param image_metadata: :type image_metadata: xr.Dataset - :param row_disparity_range: - :type row_disparity_range: List - :param col_disparity_range: - :type col_disparity_range: List + :param row_disparity: + :type row_disparity: Dict + :param col_disparity: + :type col_disparity: Dict :return: None :rtype: None :raises: ValueError """ - if np.abs(row_disparity_range).min() > image_metadata.sizes["row"]: + if np.abs(row_disparity["init"]) - row_disparity["range"] > image_metadata.sizes["row"]: raise ValueError("Row disparity range out of image") - if np.abs(col_disparity_range).min() > image_metadata.sizes["col"]: + if np.abs(col_disparity["init"]) - col_disparity["range"] > image_metadata.sizes["col"]: raise ValueError("Column disparity range out of image") @@ -251,20 +248,21 @@ def check_right_nodata_condition(cfg_input: Dict, cfg_pipeline: Dict) -> None: ) -def check_disparity_range_size(disparity: list[int] | str, title: str) -> None: +def check_disparity_range_size(disparity: Dict | str, title: str) -> None: """ - Check that disparity ranges with a size < 5 are not allowed for interpolation refinement method. + Check that disparity ranges (dmax - dmin) with a size < 5 are not allowed for interpolation refinement method. :param disparity: disparity range - :type disparity: list[int] | str + :type disparity: Dict | str :param cfg_pipeline: pipeline section of configuration :type cfg_pipeline: Dict """ - if isinstance(disparity, list): - if (abs(disparity[1] - disparity[0]) + 1) < 5: + if isinstance(disparity, Dict): + if disparity["range"] < 2: raise ValueError( - title + " disparity range with a size < 5 are not allowed with interpolation refinement method" + title + " disparity range (dmax - dmin) with a size < 5 are not allowed " + "with interpolation refinement method" ) if isinstance(disparity, str): @@ -311,8 +309,8 @@ def get_roi_config(user_cfg: Dict[str, dict]) -> Dict[str, dict]: "img": And(str, rasterio_can_open_mandatory), "nodata": Or(int, lambda input: np.isnan(input), lambda input: np.isinf(input)), }, - "col_disparity": [int, int], - "row_disparity": [int, int], + "col_disparity": {"init": int, "range": And(int, lambda x: x >= 0)}, + "row_disparity": {"init": int, "range": And(int, lambda x: x >= 0)}, } default_short_configuration_input = { @@ -326,7 +324,9 @@ def get_roi_config(user_cfg: Dict[str, dict]) -> Dict[str, dict]: } } -default_configuration_disp = {"input": {"col_disparity": [-9999, -9995], "row_disparity": [-9999, -9995]}} +default_configuration_disp = { + "input": {"col_disparity": {"init": -9997, "range": 2}, "row_disparity": {"init": -9997, "range": 2}} +} roi_configuration_schema = { "row": {"first": And(int, lambda x: x >= 0), "last": And(int, lambda x: x >= 0)}, diff --git a/pandora2d/estimation/estimation.py b/pandora2d/estimation/estimation.py index d7a933d..30c7c32 100644 --- a/pandora2d/estimation/estimation.py +++ b/pandora2d/estimation/estimation.py @@ -104,7 +104,7 @@ def desc(self) -> None: print(f"{self._estimation_method} estimation measure") @abstractmethod - def compute_estimation(self, img_left: xr.Dataset, img_right: xr.Dataset) -> Tuple[list, list, np.ndarray, dict]: + def compute_estimation(self, img_left: xr.Dataset, img_right: xr.Dataset) -> Tuple[Dict, Dict, np.ndarray, dict]: """ Compute the phase cross correlation method @@ -114,26 +114,26 @@ def compute_estimation(self, img_left: xr.Dataset, img_right: xr.Dataset) -> Tup :param img_right: xarray.Dataset containing : - im : 2D (row, col) xarray.DataArray :type img_right: xr.Dataset - :return:row disparity: list - col disparity: list + :return:row disparity: Dict + col disparity: Dict Calculated shifts: list Extra information about estimation : dict - :rtype: list, list, np.ndarray, dict + :rtype: dict, dict, np.ndarray, dict """ @staticmethod def update_cfg_with_estimation( - cfg: Dict, disp_col: list, disp_row: list, shifts: np.ndarray, extra_dict: dict = None + cfg: Dict, disp_col: Dict, disp_row: Dict, shifts: np.ndarray, extra_dict: dict = None ) -> Dict: """ Save calculated shifts in a configuration dictionary :param cfg: user configuration :type cfg: dict - :param disp_col: list of min and max disparity in column - :type disp_col: [int, int] - :param disp_row: list of min and max disparity in row - :type disp_row: [int, int] + :param disp_col: dict with init and range for disparity in column + :type disp_col: {"init" : int, "range" : int >= 0} + :param disp_row: dict with init and range for disparity in row + :type disp_row: {"init" : int, "range" : int >= 0} :param shifts: computed global shifts between left and right :type shifts: [np.float32, np.float32] :param extra_dict: Dictionary containing extra information about estimation diff --git a/pandora2d/estimation/phase_cross_correlation.py b/pandora2d/estimation/phase_cross_correlation.py index 6a85287..e4b3e0c 100644 --- a/pandora2d/estimation/phase_cross_correlation.py +++ b/pandora2d/estimation/phase_cross_correlation.py @@ -90,7 +90,7 @@ def check_conf(self, cfg: Dict) -> Dict: return cfg - def compute_estimation(self, img_left: xr.Dataset, img_right: xr.Dataset) -> Tuple[list, list, np.ndarray, dict]: + def compute_estimation(self, img_left: xr.Dataset, img_right: xr.Dataset) -> Tuple[Dict, Dict, np.ndarray, dict]: """ Compute the phase cross correlation method @@ -116,14 +116,8 @@ def compute_estimation(self, img_left: xr.Dataset, img_right: xr.Dataset) -> Tup # reformat outputs phasediff = "{:.{}e}".format(phasediff, 8) # -shifts because of pandora2d convention - min_col = round(-shifts[1]) - int(self._range_col) - max_col = round(-shifts[1]) + int(self._range_col) - - min_row = round(-shifts[0]) - int(self._range_row) - max_row = round(-shifts[0]) + int(self._range_row) - - row_disparity = [min_row, max_row] - col_disparity = [min_col, max_col] + row_disparity = {"init": round(-shifts[0]), "range": int(self._range_row)} + col_disparity = {"init": round(-shifts[1]), "range": int(self._range_col)} logging.info("Estimation result is %s in columns and %s in row", -shifts[1], -shifts[0]) logging.debug("Translation invariant normalized RMS error between left and right is %s", error) diff --git a/pandora2d/img_tools.py b/pandora2d/img_tools.py index ffbff16..f7ba195 100644 --- a/pandora2d/img_tools.py +++ b/pandora2d/img_tools.py @@ -34,7 +34,6 @@ from xarray import Coordinate as Coordinates import copy -from collections.abc import Sequence from typing import List, Dict, Union, NamedTuple, Any from math import floor @@ -81,8 +80,8 @@ def create_datasets_from_inputs(input_config: Dict, roi: Dict = None, estimation if estimation_cfg is None: check_disparities(input_config) else: - input_config["col_disparity"] = [-9999, -9999] - input_config["row_disparity"] = [-9999, -9999] + input_config["col_disparity"] = {"init": -9999, "range": 0} + input_config["row_disparity"] = {"init": -9999, "range": 0} return Datasets( pandora_img_tools.create_dataset_from_inputs(input_config["left"], roi).pipe( @@ -106,7 +105,6 @@ def check_disparities(input_config: Dict) -> None: check_disparity_presence(input_config) for disparity in [input_config["col_disparity"], input_config["row_disparity"]]: check_disparity_types(disparity) - check_min_max_disparity(disparity) def check_disparity_presence(input_config): @@ -133,21 +131,12 @@ def check_disparity_types(disparity: Any) -> None: :raises SystemExit: if it does not meet requirements """ - if disparity is None or not isinstance(disparity, Sequence) or len(disparity) != 2: - raise ValueError("Disparity should be iterable of length 2", disparity) - - -def check_min_max_disparity(disparity: List[int]) -> None: - """ - Check that min disparity is lower than max disparity. - - :param disparity: disparity to check - :type disparity: List[int] - - :raises SystemExit: if min > max - """ - if disparity[0] > disparity[1]: - raise ValueError(f"Min disparity ({disparity[0]}) should be lower than Max disparity ({disparity[1]})") + if disparity is None or not isinstance(disparity, Dict) or ("init" and "range") not in disparity: + raise ValueError("Disparity should be a dictionnary with keys : init and range", disparity) + if not isinstance(disparity["init"], int): + raise ValueError("Disparity init should be an integer") + if disparity["range"] < 0 or not isinstance(disparity["range"], int): + raise ValueError("Disparity range should be an integer greater or equal to 0") def add_left_disparity_grid(dataset: xr.Dataset, configuration: Dict) -> xr.Dataset: @@ -163,6 +152,7 @@ def add_left_disparity_grid(dataset: xr.Dataset, configuration: Dict) -> xr.Data """ col_disparity = configuration["col_disparity"] row_disparity = configuration["row_disparity"] + return add_disparity_grid(dataset, col_disparity, row_disparity) @@ -177,27 +167,33 @@ def add_right_disparity_grid(dataset: xr.Dataset, configuration: Dict) -> xr.Dat :return: dataset : updated dataset :rtype: xr.Dataset """ - col_disparity = sorted(-1 * value for value in configuration["col_disparity"]) - row_disparity = sorted(-1 * value for value in configuration["row_disparity"]) + col_disparity = configuration["col_disparity"].copy() + row_disparity = configuration["row_disparity"].copy() + + col_disparity["init"] = -col_disparity["init"] + row_disparity["init"] = -row_disparity["init"] + return add_disparity_grid(dataset, col_disparity, row_disparity) -def add_disparity_grid(dataset: xr.Dataset, col_disparity: List[int], row_disparity: List[int]) -> xr.Dataset: +def add_disparity_grid(dataset: xr.Dataset, col_disparity: Dict, row_disparity: Dict) -> xr.Dataset: """ Add disparity to dataset :param dataset: xarray dataset :type dataset: xr.Dataset :param col_disparity: Disparity interval for columns - :type col_disparity: List of ints + :type col_disparity: Dict :param row_disparity: Disparity interval for rows - :type row_disparity: List of ints + :type row_disparity: Dict :return: dataset : updated dataset :rtype: xr.Dataset """ + col_disp_min_max = [col_disparity["init"] - col_disparity["range"], col_disparity["init"] + col_disparity["range"]] + row_disp_min_max = [row_disparity["init"] - row_disparity["range"], row_disparity["init"] + row_disparity["range"]] shape = (dataset.sizes["row"], dataset.sizes["col"]) - for key, disparity_interval in zip(["col_disparity", "row_disparity"], [col_disparity, row_disparity]): + for key, disparity_interval in zip(["col_disparity", "row_disparity"], [col_disp_min_max, row_disp_min_max]): dataset[key] = xr.DataArray( np.array([np.full(shape, disparity) for disparity in disparity_interval]), dims=["band_disp", "row", "col"], @@ -246,7 +242,7 @@ def shift_disp_row_img(img_right: xr.Dataset, dec_row: int) -> xr.Dataset: return img_right_shift -def get_roi_processing(roi: dict, col_disparity: List[int], row_disparity: List[int]) -> dict: +def get_roi_processing(roi: dict, col_disparity: Dict, row_disparity: Dict) -> dict: """ Return a roi which takes disparities into account. Update cfg roi with new margins. @@ -258,19 +254,19 @@ def get_roi_processing(roi: dict, col_disparity: List[int], row_disparity: List[ "margins": [, , , ] with margins : left, up, right, down - :param col_disparity: min and max disparities for columns. - :type col_disparity: List[int] - :param row_disparity: min and max disparities for rows. - :type row_disparity: List[int] + :param col_disparity: init and range for disparities in columns. + :type col_disparity: Dict + :param row_disparity: init and range for disparities in rows. + :type row_disparity: Dict :type roi: Dict """ new_roi = copy.deepcopy(roi) new_roi["margins"] = ( - max(abs(col_disparity[0]), roi["margins"][0]), - max(abs(row_disparity[0]), roi["margins"][1]), - max(abs(col_disparity[1]), roi["margins"][2]), - max(abs(row_disparity[1]), roi["margins"][3]), + max(abs(col_disparity["init"] - col_disparity["range"]), roi["margins"][0]), + max(abs(row_disparity["init"] - row_disparity["range"]), roi["margins"][1]), + max(abs(col_disparity["init"] + col_disparity["range"]), roi["margins"][2]), + max(abs(row_disparity["init"] + row_disparity["range"]), roi["margins"][3]), ) # Update user ROI with new margins. From b0bc257ec36fb7ba582870df046d3b80cbc7a0ad Mon Sep 17 00:00:00 2001 From: Tommy Date: Thu, 18 Jul 2024 11:03:36 +0200 Subject: [PATCH 023/121] test: Add a variable initial disparity in a couple of tests of functional_test --- .../matching_cost/test_disparity_margins.py | 10 +++++----- tests/functional_tests/matching_cost/test_subpix.py | 6 +++--- .../refinement/dichotomy/test_dichotomy_bicubic.py | 4 ++-- .../target_grid/roi/test_georeferencement.py | 4 ++-- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/tests/functional_tests/matching_cost/test_disparity_margins.py b/tests/functional_tests/matching_cost/test_disparity_margins.py index 9244aca..cfcccd2 100644 --- a/tests/functional_tests/matching_cost/test_disparity_margins.py +++ b/tests/functional_tests/matching_cost/test_disparity_margins.py @@ -48,15 +48,15 @@ def create_datasets(self): coords={"row": np.arange(data.shape[0]), "col": np.arange(data.shape[1])}, ) - add_disparity_grid(left, [1, 3], [-2, 2]) + add_disparity_grid(left, {"init": 2, "range": 1}, {"init": 0, "range": 2}) left.attrs = { "no_data_img": -9999, "valid_pixels": 0, "no_data_mask": 1, "crs": None, - "col_disparity_source": [1, 3], - "row_disparity_source": [-2, 2], + "col_disparity_source": {"init": 2, "range": 1}, + "row_disparity_source": {"init": 0, "range": 2}, } data = np.full((10, 10), 1) @@ -70,8 +70,8 @@ def create_datasets(self): "valid_pixels": 0, "no_data_mask": 1, "crs": None, - "col_disparity_source": [1, 3], - "row_disparity_source": [-2, 2], + "col_disparity_source": {"init": 2, "range": 1}, + "row_disparity_source": {"init": 0, "range": 2}, } return left, right diff --git a/tests/functional_tests/matching_cost/test_subpix.py b/tests/functional_tests/matching_cost/test_subpix.py index d1633a0..d45c24b 100644 --- a/tests/functional_tests/matching_cost/test_subpix.py +++ b/tests/functional_tests/matching_cost/test_subpix.py @@ -46,15 +46,15 @@ def create_datasets(self, data_left, data_right): coords={"row": np.arange(data_left.shape[0]), "col": np.arange(data_left.shape[1])}, ) - add_disparity_grid(left, [-2, 2], [-2, 2]) + add_disparity_grid(left, {"init": 1, "range": 2}, {"init": 1, "range": 2}) left.attrs = { "no_data_img": -9999, "valid_pixels": 0, "no_data_mask": 1, "crs": None, - "col_disparity_source": [-2, 2], - "row_disparity_source": [-2, 2], + "col_disparity_source": {"init": 1, "range": 2}, + "row_disparity_source": {"init": 1, "range": 2}, "transform": None, } diff --git a/tests/functional_tests/target_grid/refinement/dichotomy/test_dichotomy_bicubic.py b/tests/functional_tests/target_grid/refinement/dichotomy/test_dichotomy_bicubic.py index df70117..320a7ad 100644 --- a/tests/functional_tests/target_grid/refinement/dichotomy/test_dichotomy_bicubic.py +++ b/tests/functional_tests/target_grid/refinement/dichotomy/test_dichotomy_bicubic.py @@ -43,8 +43,8 @@ def test_dichotomy_execution(left_img_path, right_img_path, subpix, iterations): "img": str(right_img_path), "nodata": "NaN", }, - "col_disparity": [-3, 3], - "row_disparity": [-3, 3], + "col_disparity": {"init": 0, "range": 3}, + "row_disparity": {"init": 0, "range": 3}, }, "ROI": {"col": {"first": 100, "last": 120}, "row": {"first": 100, "last": 120}}, "pipeline": { diff --git a/tests/functional_tests/target_grid/roi/test_georeferencement.py b/tests/functional_tests/target_grid/roi/test_georeferencement.py index 36adb86..48efc92 100644 --- a/tests/functional_tests/target_grid/roi/test_georeferencement.py +++ b/tests/functional_tests/target_grid/roi/test_georeferencement.py @@ -98,8 +98,8 @@ def test_roi_georeferencement(run_pipeline, left_path, right_path, crs, transfor "right": { "img": str(right_path), }, - "col_disparity": [-1, 3], - "row_disparity": [-1, 3], + "col_disparity": {"init": 1, "range": 2}, + "row_disparity": {"init": 1, "range": 2}, }, "ROI": { "col": {"first": 3, "last": 7}, From a752a29f88c1042a1a81b6a08633823f4218c93e Mon Sep 17 00:00:00 2001 From: Tommy Date: Thu, 18 Jul 2024 11:07:07 +0200 Subject: [PATCH 024/121] test: Add a variable initial disparity in a couple of tests of test_matching_cost --- .../unit_tests/test_matching_cost/conftest.py | 28 +-- .../test_matching_cost_allocate.py | 20 +- .../test_matching_cost_compute.py | 186 ++++++++++-------- 3 files changed, 123 insertions(+), 111 deletions(-) diff --git a/tests/unit_tests/test_matching_cost/conftest.py b/tests/unit_tests/test_matching_cost/conftest.py index 7886a77..c5630b3 100644 --- a/tests/unit_tests/test_matching_cost/conftest.py +++ b/tests/unit_tests/test_matching_cost/conftest.py @@ -81,8 +81,8 @@ def input_config(left_image, right_image): "img": right_image, "nodata": -9999, }, - "col_disparity": [0, 1], - "row_disparity": [-1, 1], + "col_disparity": {"init": 1, "range": 1}, + "row_disparity": {"init": 1, "range": 2}, } @@ -231,8 +231,8 @@ def data_with_null_disparity(left_zncc, right_zncc, null_disparity_grid): ], dtype=np.float32, ) - left_zncc.attrs["col_disparity_source"] = [0, 0] - left_zncc.attrs["row_disparity_source"] = [0, 0] + left_zncc.attrs["col_disparity_source"] = {"init": 0, "range": 0} + left_zncc.attrs["row_disparity_source"] = {"init": 0, "range": 0} return StepData( left=left_zncc, right=right_zncc, full_matching_cost=full_matching_cost, disparity_grids=disparity_grids ) @@ -281,8 +281,8 @@ def data_with_positive_disparity_in_col(left_zncc, right_zncc, null_disparity_gr ], dtype=np.float32, ) - left_zncc.attrs["col_disparity_source"] = [0, 1] - left_zncc.attrs["row_disparity_source"] = [0, 0] + left_zncc.attrs["col_disparity_source"] = {"init": 1, "range": 1} + left_zncc.attrs["row_disparity_source"] = {"init": 0, "range": 0} return StepData( left=left_zncc, right=right_zncc, full_matching_cost=full_matching_cost, disparity_grids=disparity_grids ) @@ -313,8 +313,8 @@ def data_with_positive_disparity_in_row(left_zncc, right_zncc, null_disparity_gr ], dtype=np.float32, ) - left_zncc.attrs["col_disparity_source"] = [0, 0] - left_zncc.attrs["row_disparity_source"] = [0, 1] + left_zncc.attrs["col_disparity_source"] = {"init": 0, "range": 0} + left_zncc.attrs["row_disparity_source"] = {"init": 1, "range": 1} return StepData( left=left_zncc, right=right_zncc, full_matching_cost=full_matching_cost, disparity_grids=disparity_grids ) @@ -363,8 +363,8 @@ def data_with_negative_disparity_in_col(left_zncc, right_zncc, null_disparity_gr ], dtype=np.float32, ) - left_zncc.attrs["col_disparity_source"] = [-1, 0] - left_zncc.attrs["row_disparity_source"] = [0, 0] + left_zncc.attrs["col_disparity_source"] = {"init": -1, "range": 1} + left_zncc.attrs["row_disparity_source"] = {"init": 0, "range": 0} return StepData( left=left_zncc, right=right_zncc, full_matching_cost=full_matching_cost, disparity_grids=disparity_grids ) @@ -395,8 +395,8 @@ def data_with_negative_disparity_in_row(left_zncc, right_zncc, null_disparity_gr ], dtype=np.float32, ) - left_zncc.attrs["col_disparity_source"] = [0, 0] - left_zncc.attrs["row_disparity_source"] = [-1, 0] + left_zncc.attrs["col_disparity_source"] = {"init": 0, "range": 0} + left_zncc.attrs["row_disparity_source"] = {"init": -1, "range": 1} return StepData( left=left_zncc, right=right_zncc, full_matching_cost=full_matching_cost, disparity_grids=disparity_grids ) @@ -453,8 +453,8 @@ def data_with_disparity_negative_in_row_and_positive_in_col( ], dtype=np.float32, ) - left_zncc.attrs["col_disparity_source"] = [0, 1] - left_zncc.attrs["row_disparity_source"] = [-1, 0] + left_zncc.attrs["col_disparity_source"] = {"init": 1, "range": 1} + left_zncc.attrs["row_disparity_source"] = {"init": -1, "range": 1} return StepData( left=left_zncc, right=right_zncc, full_matching_cost=full_matching_cost, disparity_grids=disparity_grids ) diff --git a/tests/unit_tests/test_matching_cost/test_matching_cost_allocate.py b/tests/unit_tests/test_matching_cost/test_matching_cost_allocate.py index 70a70a4..7847588 100644 --- a/tests/unit_tests/test_matching_cost/test_matching_cost_allocate.py +++ b/tests/unit_tests/test_matching_cost/test_matching_cost_allocate.py @@ -36,7 +36,7 @@ def test_allocate_cost_volume(left_stereo_object, right_stereo_object): """ # generated data for the test - np_data = np.empty((3, 3, 2, 2)) + np_data = np.empty((3, 3, 3, 3)) np_data.fill(np.nan) c_row = [0, 1, 2] @@ -46,8 +46,8 @@ def test_allocate_cost_volume(left_stereo_object, right_stereo_object): row = np.arange(c_row[0], c_row[-1] + 1) col = np.arange(c_col[0], c_col[-1] + 1) - disparity_range_col = np.arange(-1, 0 + 1) - disparity_range_row = np.arange(-1, 0 + 1) + disparity_range_col = np.arange(-1, 1 + 1) + disparity_range_row = np.arange(-1, 1 + 1) # Create the cost volume if np_data is None: @@ -67,8 +67,8 @@ def test_allocate_cost_volume(left_stereo_object, right_stereo_object): cost_volumes_test.attrs["crs"] = None cost_volumes_test.attrs["transform"] = Affine(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) cost_volumes_test.attrs["band_correl"] = None - cost_volumes_test.attrs["col_disparity_source"] = [0, 1] - cost_volumes_test.attrs["row_disparity_source"] = [-1, 0] + cost_volumes_test.attrs["col_disparity_source"] = {"init": 1, "range": 1} + cost_volumes_test.attrs["row_disparity_source"] = {"init": -1, "range": 1} cost_volumes_test.attrs["no_data_img"] = -9999 cost_volumes_test.attrs["no_data_mask"] = 1 cost_volumes_test.attrs["valid_pixels"] = 0 @@ -82,16 +82,16 @@ def test_allocate_cost_volume(left_stereo_object, right_stereo_object): matching_cost_matcher.allocate_cost_volume_pandora( img_left=left_stereo_object, img_right=right_stereo_object, - grid_min_col=np.full((3, 3), -1), - grid_max_col=np.full((3, 3), 0), + grid_min_col=np.full((3, 3), 0), + grid_max_col=np.full((3, 3), 2), cfg=cfg, ) cost_volumes_fun = matching_cost_matcher.compute_cost_volumes( img_left=left_stereo_object, img_right=right_stereo_object, - grid_min_col=np.full((3, 3), -1), - grid_max_col=np.full((3, 3), 0), - grid_min_row=np.full((3, 3), -1), + grid_min_col=np.full((3, 3), 0), + grid_max_col=np.full((3, 3), 2), + grid_min_row=np.full((3, 3), -2), grid_max_row=np.full((3, 3), 0), ) diff --git a/tests/unit_tests/test_matching_cost/test_matching_cost_compute.py b/tests/unit_tests/test_matching_cost/test_matching_cost_compute.py index 4aabda1..8698370 100644 --- a/tests/unit_tests/test_matching_cost/test_matching_cost_compute.py +++ b/tests/unit_tests/test_matching_cost/test_matching_cost_compute.py @@ -166,8 +166,8 @@ def test_compute_cv_mc_cnn(): "no_data_mask": 1, "crs": None, "transform": Affine(1.0, 0.0, 0.0, 0.0, 1.0, 0.0), - "col_disparity_source": [-1, 1], - "row_disparity_source": [-1, 1], + "col_disparity_source": {"init": 0, "range": 1}, + "row_disparity_source": {"init": 0, "range": 1}, } matching_cost_matcher = matching_cost.MatchingCost(cfg["pipeline"]["matching_cost"]) @@ -272,8 +272,8 @@ def test_compute_cv_zncc(): "no_data_mask": 1, "crs": None, "transform": Affine(1.0, 0.0, 0.0, 0.0, 1.0, 0.0), - "col_disparity_source": [0, 1], - "row_disparity_source": [-1, 0], + "col_disparity_source": {"init": 1, "range": 1}, + "row_disparity_source": {"init": -1, "range": 1}, } data = np.array( @@ -334,7 +334,7 @@ def test_compute_cv_zncc(): img_left=left_zncc, img_right=right_zncc, grid_min_col=np.full((3, 3), 0), - grid_max_col=np.full((3, 3), 1), + grid_max_col=np.full((3, 3), 2), cfg=cfg, ) # compute cost volumes @@ -342,16 +342,16 @@ def test_compute_cv_zncc(): img_left=left_zncc, img_right=right_zncc, grid_min_col=np.full((3, 3), 0), - grid_max_col=np.full((3, 3), 1), - grid_min_row=np.full((3, 3), -1), + grid_max_col=np.full((3, 3), 2), + grid_min_row=np.full((3, 3), -2), grid_max_row=np.full((3, 3), 0), ) + print(zncc["cost_volumes"].data[1, 1, 0, 2]) # check that the generated cost_volumes is equal to ground truth - - np.testing.assert_allclose(zncc["cost_volumes"].data[1, 1, 0, 1], ad_ground_truth_1_1_0_0, rtol=1e-06) - np.testing.assert_allclose(zncc["cost_volumes"].data[1, 1, 0, 0], ad_ground_truth_1_1_0_1, rtol=1e-06) - np.testing.assert_allclose(zncc["cost_volumes"].data[2, 2, 0, 1], ad_ground_truth_2_2_0_0, rtol=1e-06) - np.testing.assert_allclose(zncc["cost_volumes"].data[2, 2, 0, 0], ad_ground_truth_2_2_0_1, rtol=1e-06) + np.testing.assert_allclose(zncc["cost_volumes"].data[1, 1, 0, 2], ad_ground_truth_1_1_0_0, rtol=1e-06) + np.testing.assert_allclose(zncc["cost_volumes"].data[1, 1, 0, 1], ad_ground_truth_1_1_0_1, rtol=1e-06) + np.testing.assert_allclose(zncc["cost_volumes"].data[2, 2, 0, 2], ad_ground_truth_2_2_0_0, rtol=1e-06) + np.testing.assert_allclose(zncc["cost_volumes"].data[2, 2, 0, 1], ad_ground_truth_2_2_0_1, rtol=1e-06) @pytest.mark.parametrize( @@ -689,16 +689,16 @@ def make_image(disp_row, disp_col, data): coords={"row": np.arange(data.shape[0]), "col": np.arange(data.shape[1])}, ) - add_disparity_grid(img, disp_col, disp_row) + img.pipe(add_disparity_grid, disp_col, disp_row) - img.attrs = { - "no_data_img": -9999, - "valid_pixels": 0, - "no_data_mask": 1, - "crs": None, - "col_disparity_source": disp_col, - "row_disparity_source": disp_row, - } + img.attrs.update( + { + "no_data_img": -9999, + "valid_pixels": 0, + "no_data_mask": 1, + "crs": None, + } + ) return img @@ -732,18 +732,30 @@ def make_cost_volumes(self, make_image_fixture, request): matching_cost_.allocate_cost_volume_pandora( img_left=img_left, img_right=img_right, - grid_min_col=np.full((img_left["im"].shape[0], img_left["im"].shape[1]), disp_col[0]), - grid_max_col=np.full((img_left["im"].shape[0], img_left["im"].shape[1]), disp_col[1]), + grid_min_col=np.full( + (img_left["im"].shape[0], img_left["im"].shape[1]), img_left.attrs["col_disparity_source"][0] + ), + grid_max_col=np.full( + (img_left["im"].shape[0], img_left["im"].shape[1]), img_left.attrs["col_disparity_source"][1] + ), cfg=cfg, ) cost_volumes = matching_cost_.compute_cost_volumes( img_left=img_left, img_right=img_right, - grid_min_col=np.full((img_left["im"].shape[0], img_left["im"].shape[1]), disp_col[0]), - grid_max_col=np.full((img_left["im"].shape[0], img_left["im"].shape[1]), disp_col[1]), - grid_min_row=np.full((img_left["im"].shape[0], img_left["im"].shape[1]), disp_row[0]), - grid_max_row=np.full((img_left["im"].shape[0], img_left["im"].shape[1]), disp_row[1]), + grid_min_col=np.full( + (img_left["im"].shape[0], img_left["im"].shape[1]), img_left.attrs["col_disparity_source"][0] + ), + grid_max_col=np.full( + (img_left["im"].shape[0], img_left["im"].shape[1]), img_left.attrs["col_disparity_source"][1] + ), + grid_min_row=np.full( + (img_left["im"].shape[0], img_left["im"].shape[1]), img_left.attrs["row_disparity_source"][0] + ), + grid_max_row=np.full( + (img_left["im"].shape[0], img_left["im"].shape[1]), img_left.attrs["row_disparity_source"][1] + ), ) return cost_volumes @@ -755,13 +767,13 @@ def make_cost_volumes(self, make_image_fixture, request): { "step": [1, 1], "subpix": 1, - "disp_row": [0, 3], - "disp_col": [-2, 2], + "disp_row": {"init": 1, "range": 1}, + "disp_col": {"init": 0, "range": 2}, "data_left": np.full((10, 10), 1), "data_right": np.full((10, 10), 1), }, - (10, 10, 5, 4), # (row, col, disp_col, disp_row) - np.arange(4), # [0, 1, 2, 3] + (10, 10, 5, 3), # (row, col, disp_col, disp_row) + np.arange(3), # [0, 1, 2] np.arange(-2, 3), # [-2, -1, 0, 1, 2] id="subpix=1, step_row=1 and step_col=1", ), @@ -769,13 +781,13 @@ def make_cost_volumes(self, make_image_fixture, request): { "step": [1, 1], "subpix": 2, - "disp_row": [0, 3], - "disp_col": [-2, 2], + "disp_row": {"init": 1, "range": 1}, + "disp_col": {"init": 0, "range": 2}, "data_left": np.full((10, 10), 1), "data_right": np.full((10, 10), 1), }, - (10, 10, 9, 7), # (row, col, disp_col, disp_row) - np.arange(0, 3.5, 0.5), # [0, 0.5, 1, 1.5, 2, 2.5, 3] + (10, 10, 9, 5), # (row, col, disp_col, disp_row) + np.arange(0, 2.5, 0.5), # [0, 0.5, 1, 1.5, 2] np.arange(-2, 2.5, 0.5), # [-2, -1.5, -1, -0.5, 0, 0.5, 1, 1.5, 2] id="subpix=2, step_row=1 and step_col=1", ), @@ -783,13 +795,13 @@ def make_cost_volumes(self, make_image_fixture, request): { "step": [2, 3], "subpix": 2, - "disp_row": [0, 3], - "disp_col": [-2, 2], + "disp_row": {"init": 1, "range": 1}, + "disp_col": {"init": 0, "range": 2}, "data_left": np.full((10, 10), 1), "data_right": np.full((10, 10), 1), }, - (5, 4, 9, 7), # (row, col, disp_col, disp_row) - np.arange(0, 3.5, 0.5), # [0, 0.5, 1, 1.5, 2, 2.5, 3] # step has no influence on subpix disparity range + (5, 4, 9, 5), # (row, col, disp_col, disp_row) + np.arange(0, 2.5, 0.5), # [0, 0.5, 1, 1.5, 2] # step has no influence on subpix disparity range np.arange(-2, 2.5, 0.5), # [-2, -1.5, -1, -0.5, 0, 0.5, 1, 1.5, 2] id="subpix=2, step_row=2 and step_col=3", ), @@ -797,13 +809,13 @@ def make_cost_volumes(self, make_image_fixture, request): { "step": [1, 1], "subpix": 4, - "disp_row": [0, 3], - "disp_col": [-2, 2], + "disp_row": {"init": 1, "range": 1}, + "disp_col": {"init": 0, "range": 2}, "data_left": np.full((10, 10), 1), "data_right": np.full((10, 10), 1), }, - (10, 10, 17, 13), # (row, col, disp_col, disp_row) - np.arange(0, 3.25, 0.25), # [0, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2, 2.25, 2.5, 2.75, 3] + (10, 10, 17, 9), # (row, col, disp_col, disp_row) + np.arange(0, 2.25, 0.25), # [0, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2] np.arange( -2, 2.25, 0.25 ), # [-2, -1.75, -1.5, -1.25, -1, -0.75, -0.5, -0.25, 0, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2] @@ -813,15 +825,15 @@ def make_cost_volumes(self, make_image_fixture, request): { "step": [3, 2], "subpix": 4, - "disp_row": [0, 3], - "disp_col": [-2, 2], + "disp_row": {"init": 1, "range": 1}, + "disp_col": {"init": 0, "range": 2}, "data_left": np.full((10, 10), 1), "data_right": np.full((10, 10), 1), }, - (4, 5, 17, 13), # (row, col, disp_col, disp_row) + (4, 5, 17, 9), # (row, col, disp_col, disp_row) np.arange( - 0, 3.25, 0.25 # step has no influence on subpix disparity range - ), # [0, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2, 2.25, 2.5, 2.75, 3] + 0, 2.25, 0.25 # step has no influence on subpix disparity range + ), # [0, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2] np.arange( -2, 2.25, 0.25 ), # [-2, -1.75, -1.5, -1.25, -1, -0.75, -0.5, -0.25, 0, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2] @@ -851,8 +863,8 @@ def test_subpix(self, shape_expected, row_disparity, col_disparity, make_cost_vo { "step": [1, 1], "subpix": 2, - "disp_row": [-2, 2], - "disp_col": [-2, 2], + "disp_row": {"init": 0, "range": 2}, + "disp_col": {"init": 0, "range": 2}, "data_left": np.array( ([1, 1, 1, 1, 1], [2, 2, 2, 2, 2], [3, 3, 3, 3, 3], [4, 4, 4, 4, 4]), dtype=np.float64, @@ -875,8 +887,8 @@ def test_subpix(self, shape_expected, row_disparity, col_disparity, make_cost_vo { "step": [1, 1], "subpix": 4, - "disp_row": [-2, 2], - "disp_col": [-2, 2], + "disp_row": {"init": 0, "range": 2}, + "disp_col": {"init": 0, "range": 2}, "data_left": np.array( ([1, 1, 1, 1, 1], [2, 2, 2, 2, 2], [3, 3, 3, 3, 3], [4, 4, 4, 4, 4]), dtype=np.float64, @@ -899,8 +911,8 @@ def test_subpix(self, shape_expected, row_disparity, col_disparity, make_cost_vo { "step": [1, 1], "subpix": 4, - "disp_row": [-2, 2], - "disp_col": [-2, 2], + "disp_row": {"init": 0, "range": 2}, + "disp_col": {"init": 0, "range": 2}, "data_left": np.array( ([1, 1, 1, 1, 1], [2, 2, 2, 2, 2], [3, 3, 3, 3, 3], [4, 4, 4, 4, 4]), dtype=np.float64, @@ -952,8 +964,8 @@ def test_cost_volumes_values_subpix_positive_row(self, make_cost_volumes, index_ { "step": [1, 1], "subpix": 2, - "disp_row": [-2, 2], - "disp_col": [-2, 2], + "disp_row": {"init": 0, "range": 2}, + "disp_col": {"init": 0, "range": 2}, "data_left": np.array( ([1, 1, 1, 1, 1], [2, 2, 2, 2, 2], [3, 3, 3, 3, 3], [4, 4, 4, 4, 4]), dtype=np.float64, @@ -976,8 +988,8 @@ def test_cost_volumes_values_subpix_positive_row(self, make_cost_volumes, index_ { "step": [1, 1], "subpix": 4, - "disp_row": [-2, 2], - "disp_col": [-2, 2], + "disp_row": {"init": 0, "range": 2}, + "disp_col": {"init": 0, "range": 2}, "data_left": np.array( ([1, 1, 1, 1, 1], [2, 2, 2, 2, 2], [3, 3, 3, 3, 3], [4, 4, 4, 4, 4]), dtype=np.float64, @@ -1000,8 +1012,8 @@ def test_cost_volumes_values_subpix_positive_row(self, make_cost_volumes, index_ { "step": [1, 1], "subpix": 4, - "disp_row": [-2, 2], - "disp_col": [-2, 2], + "disp_row": {"init": 0, "range": 2}, + "disp_col": {"init": 0, "range": 2}, "data_left": np.array( ([1, 1, 1, 1, 1], [2, 2, 2, 2, 2], [3, 3, 3, 3, 3], [4, 4, 4, 4, 4]), dtype=np.float64, @@ -1053,8 +1065,8 @@ def test_cost_volumes_values_subpix_negative_row(self, make_cost_volumes, index_ { "step": [1, 1], "subpix": 2, - "disp_row": [-2, 2], - "disp_col": [-2, 2], + "disp_row": {"init": 0, "range": 2}, + "disp_col": {"init": 0, "range": 2}, "data_left": np.array( ([1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5]), dtype=np.float64, @@ -1077,8 +1089,8 @@ def test_cost_volumes_values_subpix_negative_row(self, make_cost_volumes, index_ { "step": [1, 1], "subpix": 4, - "disp_row": [-2, 2], - "disp_col": [-2, 2], + "disp_row": {"init": 0, "range": 2}, + "disp_col": {"init": 0, "range": 2}, "data_left": np.array( ([1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5]), dtype=np.float64, @@ -1101,8 +1113,8 @@ def test_cost_volumes_values_subpix_negative_row(self, make_cost_volumes, index_ { "step": [1, 1], "subpix": 4, - "disp_row": [-2, 2], - "disp_col": [-2, 2], + "disp_row": {"init": 0, "range": 2}, + "disp_col": {"init": 0, "range": 2}, "data_left": np.array( ([1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5]), dtype=np.float64, @@ -1154,8 +1166,8 @@ def test_cost_volumes_values_subpix_positive_col(self, make_cost_volumes, index_ { "step": [1, 1], "subpix": 2, - "disp_row": [-2, 2], - "disp_col": [-2, 2], + "disp_row": {"init": 0, "range": 2}, + "disp_col": {"init": 0, "range": 2}, "data_left": np.array( ([1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5]), dtype=np.float64, @@ -1178,8 +1190,8 @@ def test_cost_volumes_values_subpix_positive_col(self, make_cost_volumes, index_ { "step": [1, 1], "subpix": 4, - "disp_row": [-2, 2], - "disp_col": [-2, 2], + "disp_row": {"init": 0, "range": 2}, + "disp_col": {"init": 0, "range": 2}, "data_left": np.array( ([1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5]), dtype=np.float64, @@ -1202,8 +1214,8 @@ def test_cost_volumes_values_subpix_positive_col(self, make_cost_volumes, index_ { "step": [1, 1], "subpix": 4, - "disp_row": [-2, 2], - "disp_col": [-2, 2], + "disp_row": {"init": 0, "range": 2}, + "disp_col": {"init": 0, "range": 2}, "data_left": np.array( ([1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5]), dtype=np.float64, @@ -1255,8 +1267,8 @@ def test_cost_volumes_values_subpix_negative_col(self, make_cost_volumes, index_ { "step": [1, 1], "subpix": 1, - "disp_row": [-2, 2], - "disp_col": [-2, 2], + "disp_row": {"init": 0, "range": 2}, + "disp_col": {"init": 0, "range": 2}, "data_left": np.array( ([1, 1, 1, 1, 1], [2, 2, 2, 2, 2], [3, 3, 3, 3, 3], [4, 4, 4, 4, 4]), dtype=np.float64, @@ -1307,8 +1319,8 @@ def test_cost_volumes_values_subpix_1_row(self, make_cost_volumes, row, col, dis { "step": [1, 1], "subpix": 1, - "disp_row": [-2, 2], - "disp_col": [-2, 2], + "disp_row": {"init": 0, "range": 2}, + "disp_col": {"init": 0, "range": 2}, "data_left": np.array( ([1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5]), dtype=np.float64, @@ -1370,16 +1382,16 @@ def create_datasets(self): coords={"row": np.arange(data.shape[0]), "col": np.arange(data.shape[1])}, ) - add_disparity_grid(left, [0, 1], [-1, 0]) + left.pipe(add_disparity_grid, {"init": 1, "range": 1}, {"init": -1, "range": 1}) - left.attrs = { - "no_data_img": -9999, - "valid_pixels": 0, - "no_data_mask": 1, - "crs": None, - "col_disparity_source": [0, 1], - "row_disparity_source": [-1, 0], - } + left.attrs.update( + { + "no_data_img": -9999, + "valid_pixels": 0, + "no_data_mask": 1, + "crs": None, + } + ) data = np.full((5, 5), 1) right = xr.Dataset( @@ -1392,8 +1404,8 @@ def create_datasets(self): "valid_pixels": 0, "no_data_mask": 1, "crs": None, - "col_disparity_source": [0, 1], - "row_disparity_source": [-1, 0], + "disp_row": {"init": 1, "range": 1}, + "disp_col": {"init": -1, "range": 1}, } return left, right From 0e8e73c8d5bd4cca49a7a5f227b8c2d625013b0b Mon Sep 17 00:00:00 2001 From: Tommy Date: Thu, 18 Jul 2024 11:10:37 +0200 Subject: [PATCH 025/121] test: Add a variable initial disparity in test_img_tools --- .../test_create_datasets_from_input.py | 57 +++++++++++++------ .../test_img_tools/test_get_roi_processing.py | 30 ++++++++-- 2 files changed, 63 insertions(+), 24 deletions(-) diff --git a/tests/unit_tests/test_img_tools/test_create_datasets_from_input.py b/tests/unit_tests/test_img_tools/test_create_datasets_from_input.py index a4c9fdb..d0eb4cc 100644 --- a/tests/unit_tests/test_img_tools/test_create_datasets_from_input.py +++ b/tests/unit_tests/test_img_tools/test_create_datasets_from_input.py @@ -44,8 +44,8 @@ def _make_input_section(left_img_path, right_img_path): "img": right_img_path, "nodata": -9999, }, - "col_disparity": [-2, 2], - "row_disparity": [-3, 4], + "col_disparity": {"init": 0, "range": 2}, + "row_disparity": {"init": 1, "range": 3}, } @@ -97,10 +97,11 @@ def test_disp_band_coordinates(self, result): def test_disparity_source(self, result): """Test.""" + assert result.left.attrs["col_disparity_source"] == [-2, 2] - assert result.left.attrs["row_disparity_source"] == [-3, 4] + assert result.left.attrs["row_disparity_source"] == [-2, 4] assert result.right.attrs["col_disparity_source"] == [-2, 2] - assert result.right.attrs["row_disparity_source"] == [-4, 3] + assert result.right.attrs["row_disparity_source"] == [-4, 2] def test_resulting_disparity_grids(self, result): """ @@ -108,9 +109,9 @@ def test_resulting_disparity_grids(self, result): """ expected_left_col_disparity = np.array([np.full((375, 450), -2), np.full((375, 450), 2)]) - expected_left_row_disparity = np.array([np.full((375, 450), -3), np.full((375, 450), 4)]) + expected_left_row_disparity = np.array([np.full((375, 450), -2), np.full((375, 450), 4)]) expected_right_col_disparity = np.array([np.full((375, 450), -2), np.full((375, 450), 2)]) - expected_right_row_disparity = np.array([np.full((375, 450), -4), np.full((375, 450), 3)]) + expected_right_row_disparity = np.array([np.full((375, 450), -4), np.full((375, 450), 2)]) np.testing.assert_array_equal(result.left["col_disparity"], expected_left_col_disparity) np.testing.assert_array_equal(result.left["row_disparity"], expected_left_row_disparity) @@ -145,11 +146,11 @@ def test_fails_when_disparity_is_missing(self, input_section, missing, message): img_tools.create_datasets_from_inputs(input_section) assert exc_info.value.args[0] == message - @pytest.mark.parametrize("disparity", [None, 1, 3.14, "grid_path"]) + @pytest.mark.parametrize("disparity", [None, 1, 3.14, "grid_path", [-2, 2]]) @pytest.mark.parametrize("disparity_key", ["col_disparity", "row_disparity"]) - def test_fails_when_disparities_are_not_lists_or_tuples(self, input_section, disparity_key, disparity): + def test_fails_when_disparities_are_not_dictionaries(self, input_section, disparity_key, disparity): """ - Description : Test if disparities are lists or tuples in the input section + Description : Test if disparities are dictionaries in the input section Data : - Left image : cones/monoband/left.png - Right image : cones/monoband/right.png @@ -159,13 +160,13 @@ def test_fails_when_disparities_are_not_lists_or_tuples(self, input_section, dis with pytest.raises(ValueError) as exc_info: img_tools.create_datasets_from_inputs(input_section) - assert exc_info.value.args[0] == "Disparity should be iterable of length 2" + assert exc_info.value.args[0] == "Disparity should be a dictionnary with keys : init and range" - @pytest.mark.parametrize("disparity", [None, np.nan, np.inf, float("nan"), float("inf")]) + @pytest.mark.parametrize("disparity", [{"init": 2.0, "range": 2}]) @pytest.mark.parametrize("disparity_key", ["col_disparity", "row_disparity"]) - def test_fails_with_bad_disparity_values(self, input_section, disparity_key, disparity): + def test_fails_when_init_is_a_float(self, input_section, disparity_key, disparity): """ - Description : Test if the disparity is iterable of length 2 + Description : Test if init is a float Data : - Left image : cones/monoband/left.png - Right image : cones/monoband/right.png @@ -175,21 +176,41 @@ def test_fails_with_bad_disparity_values(self, input_section, disparity_key, dis with pytest.raises(ValueError) as exc_info: img_tools.create_datasets_from_inputs(input_section) - assert exc_info.value.args[0] == "Disparity should be iterable of length 2" + assert exc_info.value.args[0] == "Disparity init should be an integer" + + @pytest.mark.parametrize("disparity", [{"init": 2, "range": -2}]) @pytest.mark.parametrize("disparity_key", ["col_disparity", "row_disparity"]) - def test_fails_when_disparity_max_lt_disparity_min(self, input_section, disparity_key): + def test_fails_when_range_is_lt_0(self, input_section, disparity_key, disparity): """ - Description : Test if the max disparity is lower than the min one + Description : Test if range is lower than 0 Data : - Left image : cones/monoband/left.png - Right image : cones/monoband/right.png Requirement : EX_CONF_08 """ - input_section[disparity_key] = [8, -10] + input_section[disparity_key] = disparity + + with pytest.raises(ValueError) as exc_info: + img_tools.create_datasets_from_inputs(input_section) + + assert exc_info.value.args[0] == "Disparity range should be an integer greater or equal to 0" + + @pytest.mark.parametrize("disparity", [None, np.nan, np.inf, float("nan"), float("inf")]) + @pytest.mark.parametrize("disparity_key", ["col_disparity", "row_disparity"]) + def test_fails_with_bad_disparity_values(self, input_section, disparity_key, disparity): + """ + Description : Test if the disparity is a dictionary + Data : + - Left image : cones/monoband/left.png + - Right image : cones/monoband/right.png + Requirement : EX_CONF_08 + """ + input_section[disparity_key] = disparity + with pytest.raises(ValueError) as exc_info: img_tools.create_datasets_from_inputs(input_section) - assert exc_info.value.args[0] == "Min disparity (8) should be lower than Max disparity (-10)" + assert exc_info.value.args[0] == "Disparity should be a dictionnary with keys : init and range" def test_create_dataset_from_inputs_with_estimation_step(self, input_section): """ diff --git a/tests/unit_tests/test_img_tools/test_get_roi_processing.py b/tests/unit_tests/test_img_tools/test_get_roi_processing.py index 4bd11e3..4dc0bd1 100644 --- a/tests/unit_tests/test_img_tools/test_get_roi_processing.py +++ b/tests/unit_tests/test_img_tools/test_get_roi_processing.py @@ -44,12 +44,30 @@ def default_roi(): @pytest.mark.parametrize( ["col_disparity", "row_disparity", "expected"], [ - pytest.param([-60, 0], [0, 2], (60, 2, 2, 2), id="Negative disparity for columns"), - pytest.param([0, 2], [-60, 0], (2, 60, 2, 2), id="Negative disparity for rows"), - pytest.param([-60, 0], [-60, 0], (60, 60, 2, 2), id="Negative disparity for columns and rows"), - pytest.param([0, 60], [0, 60], (2, 2, 60, 60), id="Positive disparity for columns and rows"), - pytest.param([-1, 1], [-1, 1], (2, 2, 2, 2), id="Margins greater than disparities"), - pytest.param([-3, 3], [-3, 3], (3, 3, 3, 3), id="Margins lower than disparities"), + pytest.param( + {"init": -30, "range": 30}, {"init": 1, "range": 1}, (60, 2, 2, 2), id="Negative disparity for columns" + ), + pytest.param( + {"init": 1, "range": 1}, {"init": -30, "range": 30}, (2, 60, 2, 2), id="Negative disparity for rows" + ), + pytest.param( + {"init": -30, "range": 30}, + {"init": -30, "range": 30}, + (60, 60, 2, 2), + id="Negative disparity for columns and rows", + ), + pytest.param( + {"init": 30, "range": 30}, + {"init": 30, "range": 30}, + (2, 2, 60, 60), + id="Positive disparity for columns and rows", + ), + pytest.param( + {"init": 0, "range": 1}, {"init": 0, "range": 1}, (2, 2, 2, 2), id="Margins greater than disparities" + ), + pytest.param( + {"init": 0, "range": 3}, {"init": 0, "range": 3}, (3, 3, 3, 3), id="Margins lower than disparities" + ), ], ) def test_roi_with_negative_and_positive_disparities(default_roi, col_disparity, row_disparity, expected): From 3ba8cef70d5c38d07d890b4bb184404de269b298 Mon Sep 17 00:00:00 2001 From: Tommy Date: Thu, 18 Jul 2024 11:16:29 +0200 Subject: [PATCH 026/121] test: Add a variable initial disparity in test_refinement --- tests/unit_tests/test_refinement/test_optical_flow.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/unit_tests/test_refinement/test_optical_flow.py b/tests/unit_tests/test_refinement/test_optical_flow.py index 9d00798..6db6aa4 100644 --- a/tests/unit_tests/test_refinement/test_optical_flow.py +++ b/tests/unit_tests/test_refinement/test_optical_flow.py @@ -49,8 +49,8 @@ def dataset_image(): "valid_pixels": 0, "no_data_mask": 1, "crs": None, - "col_disparity_source": [-2, 2], - "row_disparity_source": [-2, 2], + "col_disparity_source": {"init": 1, "range": 2}, + "row_disparity_source": {"init": 1, "range": 2}, "invalid_disparity": np.nan, } From 7b82b0d849f35335fff66801eddba56ae3f45906 Mon Sep 17 00:00:00 2001 From: Tommy Date: Thu, 18 Jul 2024 11:18:37 +0200 Subject: [PATCH 027/121] test: Add a variable initial disparity in unit_tests --- tests/unit_tests/conftest.py | 32 ++------ tests/unit_tests/test_check_configuration.py | 77 +++++++++----------- tests/unit_tests/test_common.py | 9 +-- tests/unit_tests/test_disparity.py | 12 +-- tests/unit_tests/test_estimation.py | 10 +-- tests/unit_tests/test_pandora2d.py | 12 +-- 6 files changed, 65 insertions(+), 87 deletions(-) diff --git a/tests/unit_tests/conftest.py b/tests/unit_tests/conftest.py index 76f0906..3859fbc 100644 --- a/tests/unit_tests/conftest.py +++ b/tests/unit_tests/conftest.py @@ -75,8 +75,8 @@ def correct_input_cfg(left_img_path, right_img_path): "nodata": -9999, }, "right": {"img": right_img_path, "nodata": -9999}, - "col_disparity": [-2, 2], - "row_disparity": [-2, 2], + "col_disparity": {"init": 1, "range": 2}, + "row_disparity": {"init": 1, "range": 2}, } } @@ -92,24 +92,8 @@ def false_input_path_image(right_img_path): "right": { "img": right_img_path, }, - "col_disparity": [-2, 2], - "row_disparity": [-2, 2], - } - } - - -@pytest.fixture -def false_input_disp(left_img_path, right_img_path): - return { - "input": { - "left": { - "img": left_img_path, - }, - "right": { - "img": right_img_path, - }, - "col_disparity": [7, 2], - "row_disparity": [-2, 2], + "col_disparity": {"init": 1, "range": 2}, + "row_disparity": {"init": 1, "range": 2}, } } @@ -194,8 +178,8 @@ def left_stereo_object(): "valid_pixels": 0, "no_data_mask": 1, "crs": None, - "col_disparity_source": [0, 1], - "row_disparity_source": [-1, 0], + "col_disparity_source": {"init": 1, "range": 1}, + "row_disparity_source": {"init": -1, "range": 1}, "transform": Affine(1.0, 0.0, 0.0, 0.0, 1.0, 0.0), } @@ -249,8 +233,8 @@ def stereo_object_with_args(): "valid_pixels": 0, "no_data_mask": 1, "crs": None, - "col_disparity_source": [0, 1], - "row_disparity_source": [-1, 0], + "col_disparity_source": {"init": 1, "range": 1}, + "row_disparity_source": {"init": -1, "range": 1}, } data = np.array( diff --git a/tests/unit_tests/test_check_configuration.py b/tests/unit_tests/test_check_configuration.py index 47f012c..d8746d3 100644 --- a/tests/unit_tests/test_check_configuration.py +++ b/tests/unit_tests/test_check_configuration.py @@ -26,7 +26,7 @@ import random import string - +import re import pytest import transitions import numpy as np @@ -34,6 +34,7 @@ from json_checker import DictCheckerError, MissKeyCheckerError from skimage.io import imsave + from pandora2d.img_tools import create_datasets_from_inputs, add_disparity_grid from pandora2d import check_configuration @@ -47,8 +48,8 @@ def datasets(self, left_img_path, right_img_path): input_cfg = { "left": {"img": left_img_path, "nodata": -9999}, "right": {"img": right_img_path, "nodata": -9999}, - "col_disparity": [-2, 2], - "row_disparity": [-3, 3], + "col_disparity": {"init": 1, "range": 2}, + "row_disparity": {"init": 1, "range": 3}, } return create_datasets_from_inputs(input_cfg) @@ -80,13 +81,13 @@ def test_fails_with_wrong_dimension(self): {"im": (["row", "col"], data_left)}, coords={"row": np.arange(data_left.shape[0]), "col": np.arange(data_left.shape[1])}, attrs=attributs, - ).pipe(add_disparity_grid, [0, 1], [-1, 0]) + ).pipe(add_disparity_grid, {"init": -1, "range": 2}, {"init": -1, "range": 3}) dataset_right = xr.Dataset( {"im": (["row", "col"], data_right)}, coords={"row": np.arange(data_right.shape[0]), "col": np.arange(data_right.shape[1])}, attrs=attributs, - ).pipe(add_disparity_grid, [-2, 2], [-3, 3]) + ).pipe(add_disparity_grid, {"init": 1, "range": 2}, {"init": 1, "range": 3}) with pytest.raises(ValueError) as exc_info: check_configuration.check_datasets(dataset_left, dataset_right) @@ -140,17 +141,6 @@ def test_fails_if_input_section_is_missing(self): with pytest.raises(KeyError, match="input key is missing"): check_configuration.check_input_section({}) - def test_false_input_disp_should_exit(self, false_input_disp): - """ - Description : Exit if the input disp isn't correct - Data : - - Left image : cones/monoband/left.png - - Right image : cones/monoband/right.png - Requirement : EX_CONF_08 - """ - with pytest.raises(ValueError, match="disp_max must be bigger than disp_min"): - check_configuration.check_input_section(false_input_disp) - def test_false_input_path_image_should_raise_error(self, false_input_path_image): """ Description : Test raises an error if the image path isn't correct @@ -276,8 +266,8 @@ def test_multiband_pipeline(self, pandora2d_machine, left_rgb_path, right_rgb_pa "right": { "img": right_rgb_path, }, - "col_disparity": [-60, 0], - "row_disparity": [-60, 0], + "col_disparity": {"init": -30, "range": 30}, + "row_disparity": {"init": -30, "range": 30}, } cfg = { "input": input_multiband_cfg, @@ -309,9 +299,11 @@ def test_passes_with_good_disparity_range_and_interpolation_step( @pytest.mark.parametrize( ["col_disparity", "row_disparity"], [ - pytest.param([0, 2], [-2, 2], id="col_disparity range too small"), - pytest.param([-2, 2], [1, 4], id="row_disparity range too small"), - pytest.param([0, 2], [1, 4], id="col_disparity & row_disparity range too small"), + pytest.param({"init": 1, "range": 1}, {"init": 1, "range": 2}, id="col_disparity range too small"), + pytest.param({"init": 1, "range": 2}, {"init": 2, "range": 1}, id="row_disparity range too small"), + pytest.param( + {"init": 1, "range": 1}, {"init": 3, "range": 1}, id="col_disparity & row_disparity range too small" + ), ], ) def test_fails_with_wrong_disparity_range_and_interpolation_step( @@ -330,7 +322,8 @@ def test_fails_with_wrong_disparity_range_and_interpolation_step( with pytest.raises(ValueError) as err: check_configuration.check_conf(user_cfg, pandora2d_machine) assert ( - "disparity range with a size < 5 are not allowed with interpolation refinement method" in err.value.args[0] + " disparity range (dmax - dmin) with a size < 5 are not allowed " + "with interpolation refinement method" in err.value.args[0] ) @@ -490,8 +483,8 @@ def configuration(self, right_nodata, matching_cost_method, left_img_path, right "img": right_img_path, "nodata": right_nodata, }, - "col_disparity": [-2, 2], - "row_disparity": [-2, 2], + "col_disparity": {"init": 1, "range": 2}, + "row_disparity": {"init": 1, "range": 2}, }, "pipeline": { "matching_cost": {"matching_cost_method": matching_cost_method, "window_size": 1}, @@ -544,15 +537,17 @@ class TestCheckDisparityRangeSize: ["disparity", "title", "string_match"], [ pytest.param( - [-1, 1], + {"init": 1, "range": 1}, "Column", - "Column disparity range with a size < 5 are not allowed with interpolation refinement method", + "Column disparity range (dmax - dmin) with a size < 5 are not allowed " + "with interpolation refinement method", id="Column disparity range < 5", ), pytest.param( - [-3, -1], + {"init": -1, "range": 1}, "Row", - "Row disparity range with a size < 5 are not allowed with interpolation refinement method", + "Row disparity range (dmax - dmin) with a size < 5 are not allowed " + "with interpolation refinement method", id="Row disparity range < 5", ), ], @@ -564,7 +559,7 @@ def test_fails_with_disparity_ranges_lower_5(self, disparity, title, string_matc Data : Requirement : EX_CONF_08 """ - with pytest.raises(ValueError, match=string_match): + with pytest.raises(ValueError, match=re.escape(string_match)): check_configuration.check_disparity_range_size(disparity, title) @pytest.mark.parametrize( @@ -590,8 +585,8 @@ def test_fails_with_grid_disparity(self, disparity, title, string_match): @pytest.mark.parametrize( ["disparity", "title"], [ - pytest.param([-2, 2], "Col", id="Column disparity range greater than or equal to 5"), - pytest.param([1, 5], "Row", id="Row disparity range greater than or equal to 5"), + pytest.param({"init": 1, "range": 2}, "Col", id="Column disparity range greater than or equal to 5"), + pytest.param({"init": 3, "range": 2}, "Row", id="Row disparity range greater than or equal to 5"), ], ) def test_passes_with_disparity_ranges_equal_5(self, disparity, title): @@ -611,11 +606,11 @@ def image_path(self, tmp_path): @pytest.fixture() def row_disparity(self): - return [-4, 1] + return {"init": -2, "range": 2} @pytest.fixture() def col_disparity(self): - return [-3, 2] + return {"init": -1, "range": 2} @pytest.fixture() def configuration(self, image_path, row_disparity, col_disparity): @@ -640,8 +635,8 @@ def configuration(self, image_path, row_disparity, col_disparity): @pytest.mark.parametrize( "row_disparity", [ - pytest.param([-460, -451], id="Out on left"), - pytest.param([451, 460], id="Out on right"), + pytest.param({"init": -456, "range": 5}, id="Out on left"), + pytest.param({"init": 456, "range": 5}, id="Out on right"), ], ) def test_row_disparity_totally_out(self, pandora2d_machine, configuration): @@ -656,8 +651,8 @@ def test_row_disparity_totally_out(self, pandora2d_machine, configuration): @pytest.mark.parametrize( "col_disparity", [ - pytest.param([-460, -451], id="Out on top"), - pytest.param([451, 460], id="Out on bottom"), + pytest.param({"init": -456, "range": 5}, id="Out on top"), + pytest.param({"init": 456, "range": 5}, id="Out on bottom"), ], ) def test_column_disparity_totally_out(self, pandora2d_machine, configuration): @@ -672,10 +667,10 @@ def test_column_disparity_totally_out(self, pandora2d_machine, configuration): @pytest.mark.parametrize( ["row_disparity", "col_disparity"], [ - pytest.param([-460, -450], [100, 200], id="Partially out on left"), - pytest.param([450, 460], [100, 200], id="Partially out on right"), - pytest.param([100, 200], [-460, -450], id="Partially out on top"), - pytest.param([100, 200], [450, 460], id="Partially out on bottom"), + pytest.param({"init": -455, "range": 5}, {"init": 150, "range": 50}, id="Partially out on left"), + pytest.param({"init": 455, "range": 5}, {"init": 150, "range": 50}, id="Partially out on right"), + pytest.param({"init": 150, "range": 50}, {"init": -455, "range": 5}, id="Partially out on top"), + pytest.param({"init": 150, "range": 50}, {"init": 455, "range": 5}, id="Partially out on bottom"), ], ) def test_disparity_partially_out(self, pandora2d_machine, configuration): diff --git a/tests/unit_tests/test_common.py b/tests/unit_tests/test_common.py index 0f3f5d9..ebbbd9f 100644 --- a/tests/unit_tests/test_common.py +++ b/tests/unit_tests/test_common.py @@ -278,8 +278,8 @@ def test_dataset_disp_maps_with_pipeline_computation(self, roi, step, left_image "img": right_image, "nodata": -9999, }, - "col_disparity": [0, 4], - "row_disparity": [-2, 2], + "col_disparity": {"init": 2, "range": 2}, + "row_disparity": {"init": 1, "range": 2}, } img_left, img_right = create_datasets_from_inputs(input_cfg, roi=roi) @@ -312,8 +312,8 @@ def test_dataset_disp_maps_with_pipeline_computation(self, roi, step, left_image img_right=img_right, grid_min_col=np.full((3, 3), 0), grid_max_col=np.full((3, 3), 4), - grid_min_row=np.full((3, 3), -2), - grid_max_row=np.full((3, 3), 2), + grid_min_row=np.full((3, 3), -1), + grid_max_row=np.full((3, 3), 3), ) cfg_disp = {"disparity_method": "wta", "invalid_disparity": -9999} @@ -347,7 +347,6 @@ def test_disparity_map_output_georef(correct_pipeline, correct_input_cfg): """ Test outputs georef with crs and transform """ - img_left, img_right = create_datasets_from_inputs(input_config=correct_input_cfg["input"]) # Stock crs and transform information from input diff --git a/tests/unit_tests/test_disparity.py b/tests/unit_tests/test_disparity.py index dfb141a..daf965d 100644 --- a/tests/unit_tests/test_disparity.py +++ b/tests/unit_tests/test_disparity.py @@ -223,8 +223,8 @@ def test_compute_disparity_map_row(margins): "no_data_mask": 1, "crs": None, "transform": Affine(1.0, 0.0, 0.0, 0.0, 1.0, 0.0), - "col_disparity_source": [-2, 2], - "row_disparity_source": [-2, 2], + "col_disparity_source": {"init": 0, "range": 2}, + "row_disparity_source": {"init": 0, "range": 2}, } data = np.array( @@ -311,8 +311,8 @@ def test_compute_disparity_map_col(margins): "no_data_mask": 1, "crs": None, "transform": Affine(1.0, 0.0, 0.0, 0.0, 1.0, 0.0), - "col_disparity_source": [-3, 3], - "row_disparity_source": [-3, 3], + "col_disparity_source": {"init": 0, "range": 3}, + "row_disparity_source": {"init": 0, "range": 3}, } data = np.array( @@ -398,8 +398,8 @@ def test_compute_disparity_map_col_row(margins): "no_data_mask": 1, "crs": None, "transform": Affine(1.0, 0.0, 0.0, 0.0, 1.0, 0.0), - "col_disparity_source": [-3, 3], - "row_disparity_source": [-3, 3], + "col_disparity_source": {"init": 0, "range": 3}, + "row_disparity_source": {"init": 0, "range": 3}, } data = np.array( diff --git a/tests/unit_tests/test_estimation.py b/tests/unit_tests/test_estimation.py index 8067b04..2c82175 100644 --- a/tests/unit_tests/test_estimation.py +++ b/tests/unit_tests/test_estimation.py @@ -142,14 +142,14 @@ def test_update_cfg_with_estimation(estimation_class): """ gt_cfg = { - "input": {"col_disparity": [-2, 2], "row_disparity": [-2, 2]}, + "input": {"col_disparity": {"init": 1, "range": 2}, "row_disparity": {"init": 1, "range": 2}}, "pipeline": {"estimation": {"estimated_shifts": [-0.5, 1.3], "error": [1.0], "phase_diff": [1.0]}}, } cfg = estimation_class.update_cfg_with_estimation( {"input": {}, "pipeline": {"estimation": {}}}, - [-2, 2], - [-2, 2], + {"init": 1, "range": 2}, + {"init": 1, "range": 2}, -np.array([0.5, -1.3]), {"error": np.array([1.0]), "phase_diff": np.array([1.0])}, ) @@ -168,8 +168,8 @@ def test_estimation_computation(left_stereo_object, right_stereo_object, estimat row_disparity, col_disparity, shifts, extra_dict = estimation_.compute_estimation(left, right) - assert col_disparity == [-5, 5] - assert row_disparity == [-6, 4] + assert col_disparity == {"init": 0, "range": 5} + assert row_disparity == {"init": -1, "range": 5} assert np.array_equal(shifts, [-0.8, 0]) assert extra_dict["error"] == 0.9999999999855407 assert extra_dict["phase_diff"] == "1.06382330e-18" diff --git a/tests/unit_tests/test_pandora2d.py b/tests/unit_tests/test_pandora2d.py index 406ec7f..a29f753 100644 --- a/tests/unit_tests/test_pandora2d.py +++ b/tests/unit_tests/test_pandora2d.py @@ -71,8 +71,8 @@ def test_run_prepare(left_img_path, right_img_path) -> None: input_config = { "left": {"img": left_img_path, "nodata": -9999}, "right": {"img": right_img_path, "nodata": -9999}, - "col_disparity": [-2, 2], - "row_disparity": [-2, 2], + "col_disparity": {"init": 1, "range": 2}, + "row_disparity": {"init": 1, "range": 2}, } img_left, img_right = create_datasets_from_inputs(input_config=input_config) @@ -82,16 +82,16 @@ def test_run_prepare(left_img_path, right_img_path) -> None: assert pandora2d_machine.right_img == img_right assert pandora2d_machine.completed_cfg == input_config np.testing.assert_array_equal( - pandora2d_machine.disp_min_col, np.full((img_left.sizes["row"], img_left.sizes["col"]), -2) + pandora2d_machine.disp_min_col, np.full((img_left.sizes["row"], img_left.sizes["col"]), -1) ) np.testing.assert_array_equal( - pandora2d_machine.disp_max_col, np.full((img_left.sizes["row"], img_left.sizes["col"]), 2) + pandora2d_machine.disp_max_col, np.full((img_left.sizes["row"], img_left.sizes["col"]), 3) ) np.testing.assert_array_equal( - pandora2d_machine.disp_min_row, np.full((img_left.sizes["row"], img_left.sizes["col"]), -2) + pandora2d_machine.disp_min_row, np.full((img_left.sizes["row"], img_left.sizes["col"]), -1) ) np.testing.assert_array_equal( - pandora2d_machine.disp_max_row, np.full((img_left.sizes["row"], img_left.sizes["col"]), 2) + pandora2d_machine.disp_max_row, np.full((img_left.sizes["row"], img_left.sizes["col"]), 3) ) @pytest.mark.parametrize( From 36619036ed16ed949ba928bc9bd348e260fea25d Mon Sep 17 00:00:00 2001 From: Tommy Date: Fri, 19 Jul 2024 10:19:44 +0200 Subject: [PATCH 028/121] feat: Add a variable initial disparity in the json conf files --- data_samples/json_conf_files/a_basic_pipeline.json | 4 ++-- data_samples/json_conf_files/a_dichotomy_pipeline.json | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/data_samples/json_conf_files/a_basic_pipeline.json b/data_samples/json_conf_files/a_basic_pipeline.json index ef5b582..95f8b28 100644 --- a/data_samples/json_conf_files/a_basic_pipeline.json +++ b/data_samples/json_conf_files/a_basic_pipeline.json @@ -8,8 +8,8 @@ "img": "./maricopa/right.tif", "nodata": -9999 }, - "col_disparity": [-2, 2], - "row_disparity": [-2, 2] + "col_disparity": {"init": 0, "range": 2}, + "row_disparity": {"init": 0, "range": 2} }, "pipeline": { "matching_cost": { diff --git a/data_samples/json_conf_files/a_dichotomy_pipeline.json b/data_samples/json_conf_files/a_dichotomy_pipeline.json index ca2bdd3..508e357 100644 --- a/data_samples/json_conf_files/a_dichotomy_pipeline.json +++ b/data_samples/json_conf_files/a_dichotomy_pipeline.json @@ -8,8 +8,8 @@ "img": "./maricopa/right.tif", "nodata": -9999 }, - "col_disparity": [-2, 2], - "row_disparity": [-2, 2] + "col_disparity": {"init": 0, "range": 2}, + "row_disparity": {"init": 0, "range": 2} }, "pipeline": { "matching_cost": { @@ -27,4 +27,4 @@ "filter": "bicubic" } } - } \ No newline at end of file + } From 487ec0fba83fe55e6c1231746f3543651f74d864 Mon Sep 17 00:00:00 2001 From: Tommy Date: Fri, 19 Jul 2024 11:16:13 +0200 Subject: [PATCH 029/121] notebook: Add a variable initial disparity in the notebooks --- notebooks/introduction_and_basic_usage.ipynb | 14 +++++++------- notebooks/usage_dichotomy.ipynb | 14 +++++++++----- notebooks/usage_step_roi_config.ipynb | 18 +++++++++--------- 3 files changed, 25 insertions(+), 21 deletions(-) diff --git a/notebooks/introduction_and_basic_usage.ipynb b/notebooks/introduction_and_basic_usage.ipynb index 08f168a..e44772b 100644 --- a/notebooks/introduction_and_basic_usage.ipynb +++ b/notebooks/introduction_and_basic_usage.ipynb @@ -237,8 +237,8 @@ "input_config = {\n", " \"left\": {\"img\": img_left_path, \"nodata\": np.nan},\n", " \"right\": {\"img\": img_right_path, \"nodata\": np.nan},\n", - " \"col_disparity\": [-2, 2],\n", - " \"row_disparity\": [-2, 2],\n", + " \"col_disparity\": {\"init\": 0, \"range\": 2},\n", + " \"row_disparity\": {\"init\": 0, \"range\": 2},\n", "}" ] }, @@ -334,8 +334,8 @@ " \"right\": {\n", " \"img\": \"data/right.tif\",\n", " },\n", - " \"col_disparity\": [-2, 2],\n", - " \"row_disparity\": [-2, 2],\n", + " \"col_disparity\": {\"init\": 0, \"range\": 2},\n", + " \"row_disparity\": {\"init\": 0, \"range\": 2},\n", " },\n", " \"pipeline\":{\n", " \"matching_cost\" : {\n", @@ -547,8 +547,8 @@ " \"right\": {\n", " \"img\": \"data/right.tif\",\n", " },\n", - " \"col_disparity\": [-2, 2],\n", - " \"row_disparity\": [-2, 2],\n", + " \"col_disparity\": {\"init\": 0, \"range\": 2},\n", + " \"row_disparity\": {\"init\": 0, \"range\": 2},\n", " },\n", " \"pipeline\":{\n", " \"matching_cost\" : {\n", @@ -789,7 +789,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.12" + "version": "3.12.3" } }, "nbformat": 4, diff --git a/notebooks/usage_dichotomy.ipynb b/notebooks/usage_dichotomy.ipynb index 1825e6f..e61b53f 100644 --- a/notebooks/usage_dichotomy.ipynb +++ b/notebooks/usage_dichotomy.ipynb @@ -180,8 +180,8 @@ " \"img\": img_right_path,\n", " \"nodata\": np.nan,\n", " },\n", - " \"col_disparity\": [-3, 3],\n", - " \"row_disparity\": [-3, 3],\n", + " \"col_disparity\": {\"init\": 0, \"range\": 3},\n", + " \"row_disparity\": {\"init\": 0, \"range\": 3},\n", "}" ] }, @@ -432,12 +432,16 @@ "from matplotlib import colors\n", "\n", "plt.rcParams[\"figure.figsize\"] = (20, 8)\n", + "min_max_disp_col = [input_config[\"col_disparity\"][\"init\"] - input_config[\"col_disparity\"][\"range\"], \n", + " input_config[\"col_disparity\"][\"init\"] + input_config[\"col_disparity\"][\"range\"]]\n", "\n", + "min_max_disp_row = [input_config[\"row_disparity\"][\"init\"] - input_config[\"row_disparity\"][\"range\"], \n", + " input_config[\"row_disparity\"][\"init\"] + input_config[\"row_disparity\"][\"range\"]]\n", "\n", "def plot_result(\n", " dataset,\n", - " dmin=min(input_config[\"row_disparity\"][0], input_config[\"col_disparity\"][0]),\n", - " dmax=max(input_config[\"row_disparity\"][1], input_config[\"col_disparity\"][1]),\n", + " dmin=min(min_max_disp_row[0], min_max_disp_col[0]),\n", + " dmax=max(min_max_disp_row[1], min_max_disp_col[1]),\n", " palette=plt.cm.bwr.with_extremes(over=\"y\", under=\"g\", bad=\"k\"),\n", " title=\"Without refinement.\",\n", " colorbarlabel=\"Disparity\",\n", @@ -566,7 +570,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.12" + "version": "3.12.3" } }, "nbformat": 4, diff --git a/notebooks/usage_step_roi_config.ipynb b/notebooks/usage_step_roi_config.ipynb index d941d61..6fb2d39 100644 --- a/notebooks/usage_step_roi_config.ipynb +++ b/notebooks/usage_step_roi_config.ipynb @@ -171,8 +171,8 @@ "input_config = {\n", " \"left\": {\"img\": img_left_path, \"nodata\": np.nan},\n", " \"right\": {\"img\": img_right_path, \"nodata\": np.nan},\n", - " \"col_disparity\": [-2, 2],\n", - " \"row_disparity\": [-2, 2],\n", + " \"col_disparity\": {\"init\": 0, \"range\": 2},\n", + " \"row_disparity\": {\"init\": 0, \"range\": 2},\n", "}" ] }, @@ -261,8 +261,8 @@ " \"img\": img_right_path,\n", " \"nodata\": \"NaN\",\n", " },\n", - " \"col_disparity\": [-3, 3],\n", - " \"row_disparity\": [-3, 3],\n", + " \"col_disparity\": {\"init\": 0, \"range\": 3},\n", + " \"row_disparity\": {\"init\": 0, \"range\": 3},\n", " },\n", " \"pipeline\":{\n", " \"matching_cost\" : {\n", @@ -448,8 +448,8 @@ " \"img\": img_right_path,\n", " \"nodata\": \"NaN\",\n", " },\n", - " \"col_disparity\": [-3, 3],\n", - " \"row_disparity\": [-3, 3],\n", + " \"col_disparity\": {\"init\": 0, \"range\": 3},\n", + " \"row_disparity\": {\"init\": 0, \"range\": 3},\n", " },\n", " \"pipeline\":{\n", " \"matching_cost\" : {\n", @@ -636,8 +636,8 @@ " \"img\": img_right_path,\n", " \"nodata\": \"NaN\",\n", " },\n", - " \"col_disparity\": [-3, 3],\n", - " \"row_disparity\": [-3, 3],\n", + " \"col_disparity\": {\"init\": 0, \"range\": 3},\n", + " \"row_disparity\": {\"init\": 0, \"range\": 3},\n", " },\n", " \"ROI\":{\n", " \"col\": {\"first\": 10, \"last\": 100},\n", @@ -820,7 +820,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.16" + "version": "3.12.3" } }, "nbformat": 4, From 4ff986925840a2b628c51659b7b05ad60dbb8cf0 Mon Sep 17 00:00:00 2001 From: Tommy Date: Fri, 19 Jul 2024 11:43:29 +0200 Subject: [PATCH 030/121] test: Add a variable initial disparity in the conftest --- tests/conftest.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/conftest.py b/tests/conftest.py index 2efbe7e..e8d926c 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -128,8 +128,8 @@ def correct_input_cfg(left_img_path, right_img_path): "right": { "img": right_img_path, }, - "col_disparity": [-2, 2], - "row_disparity": [-2, 2], + "col_disparity": {"init": 1, "range": 2}, + "row_disparity": {"init": 1, "range": 2}, } } @@ -145,7 +145,7 @@ def correct_multiband_input_cfg(left_rgb_path, right_rgb_path): "right": { "img": right_rgb_path, }, - "col_disparity": [-2, 2], - "row_disparity": [-2, 2], + "col_disparity": {"init": 1, "range": 2}, + "row_disparity": {"init": 1, "range": 2}, } } From d7e3e605b9f9a1a34336628e3fb616a8a2b4a081 Mon Sep 17 00:00:00 2001 From: Tommy Date: Tue, 23 Jul 2024 11:13:36 +0200 Subject: [PATCH 031/121] test: Add a variable initial disparity in the json file of the tests --- tests/data/json_conf_files/classic_cfg.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/data/json_conf_files/classic_cfg.json b/tests/data/json_conf_files/classic_cfg.json index 8709511..a9c2777 100644 --- a/tests/data/json_conf_files/classic_cfg.json +++ b/tests/data/json_conf_files/classic_cfg.json @@ -7,8 +7,8 @@ "right": { "img": "./tests/data/images/cones/monoband/right.png" }, - "col_disparity": [-2, 2], - "row_disparity": [-2, 2] + "col_disparity": {"init": 0, "range": 2}, + "row_disparity": {"init": 0, "range": 2} }, "pipeline": { "matching_cost": { From 0f027f3849e9c6c79f18babf4236c91b0c9ca558 Mon Sep 17 00:00:00 2001 From: Philippe Mallet-Ladeira Date: Fri, 5 Jul 2024 14:22:27 +0200 Subject: [PATCH 032/121] feat: add cardinal sinus interpolation filter MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Due to necessity to add a configuration for Sinc filter (addition of a size parameter), the schema of Dichotomy had to be changed. The option to allow both string (previous schema) and dict values for filter_method didn’t work with `json_checker` library (it didn’t recognized valid values with a schema made of And inside an Or). feat(sinc): Use native np.sinc instead of our own For clarity, use np.sinc instead of our own computation. Result is not exactly the same so I replaced `assert_array_equal` by `assert_array_almost_equal` in tests. For example with `compute_coefficient_table2(6, fractional_shifts = np.arange(8)/8, 6)`, the mismatch is: ``` Mismatched elements: 52 / 104 (50%) Max absolute difference: 1.11022302e-16 Max relative difference: 1.89151836e-15 ``` feat(interpolation filter): fix sigma to filter size in sinc feat(interpolation filter): rename subpixel to fractional_shift in sinc feat(interpolation filter): check fractional_shift validity in sinc test(dichotomy): check fractional_shift for filter init --- .../json_conf_files/a_dichotomy_pipeline.json | 2 +- notebooks/usage_dichotomy.ipynb | 4 +- pandora2d/interpolation_filter/__init__.py | 2 +- pandora2d/interpolation_filter/bicubic.py | 6 +- .../interpolation_filter/cardinal_sine.py | 107 +++++++++++++ .../interpolation_filter.py | 32 +++- pandora2d/refinement/dichotomy.py | 12 +- .../matching_cost/test_disparity_margins.py | 6 +- ..._bicubic.py => test_dichotomy_pipeline.py} | 13 +- .../test_interpolation_filter/test_bicubic.py | 2 +- .../test_cardinal_sine.py | 147 ++++++++++++++++++ .../test_interpolation_filter.py | 2 +- tests/unit_tests/test_pandora2d.py | 3 +- .../test_refinement/test_dichotomy.py | 102 +++++++++++- 14 files changed, 408 insertions(+), 32 deletions(-) create mode 100644 pandora2d/interpolation_filter/cardinal_sine.py rename tests/functional_tests/target_grid/refinement/dichotomy/{test_dichotomy_bicubic.py => test_dichotomy_pipeline.py} (85%) create mode 100644 tests/unit_tests/test_interpolation_filter/test_cardinal_sine.py diff --git a/data_samples/json_conf_files/a_dichotomy_pipeline.json b/data_samples/json_conf_files/a_dichotomy_pipeline.json index 508e357..f527964 100644 --- a/data_samples/json_conf_files/a_dichotomy_pipeline.json +++ b/data_samples/json_conf_files/a_dichotomy_pipeline.json @@ -24,7 +24,7 @@ "refinement": { "refinement_method": "dichotomy", "iterations": 2, - "filter": "bicubic" + "filter": { "method": "bicubic"} } } } diff --git a/notebooks/usage_dichotomy.ipynb b/notebooks/usage_dichotomy.ipynb index e61b53f..5aa8fe1 100644 --- a/notebooks/usage_dichotomy.ipynb +++ b/notebooks/usage_dichotomy.ipynb @@ -294,7 +294,7 @@ "user_cfg_with_refinement[\"pipeline\"][\"refinement\"] = {\n", " \"refinement_method\": \"dichotomy\",\n", " \"iterations\": 1,\n", - " \"filter\": \"bicubic\",\n", + " \"filter\": {\"method\": \"bicubic\"},\n", "}" ] }, @@ -309,7 +309,7 @@ "user_cfg_with_two_refinements[\"pipeline\"][\"refinement\"] = {\n", " \"refinement_method\": \"dichotomy\",\n", " \"iterations\": 2,\n", - " \"filter\": \"bicubic\",\n", + " \"filter\": {\"method\": \"bicubic\"},\n", "}" ] }, diff --git a/pandora2d/interpolation_filter/__init__.py b/pandora2d/interpolation_filter/__init__.py index 1b32a3f..09dd05f 100644 --- a/pandora2d/interpolation_filter/__init__.py +++ b/pandora2d/interpolation_filter/__init__.py @@ -22,4 +22,4 @@ """ from .interpolation_filter import AbstractFilter -from . import bicubic +from . import bicubic, cardinal_sine diff --git a/pandora2d/interpolation_filter/bicubic.py b/pandora2d/interpolation_filter/bicubic.py index c7c6b50..e6884f6 100644 --- a/pandora2d/interpolation_filter/bicubic.py +++ b/pandora2d/interpolation_filter/bicubic.py @@ -16,8 +16,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # -"""This module contains bicubic interpolation filter. -""" +"""This module contains bicubic interpolation filter.""" + from functools import lru_cache import numpy as np @@ -36,6 +36,8 @@ class Bicubic(AbstractFilter): _ALPHA = -0.5 _SIZE = 4 + schema = {"method": "bicubic"} + @property def margins(self) -> Margins: """Return filter's Margins.""" diff --git a/pandora2d/interpolation_filter/cardinal_sine.py b/pandora2d/interpolation_filter/cardinal_sine.py new file mode 100644 index 0000000..a7e0959 --- /dev/null +++ b/pandora2d/interpolation_filter/cardinal_sine.py @@ -0,0 +1,107 @@ +# Copyright (c) 2024 Centre National d'Etudes Spatiales (CNES). +# This file is part of PANDORA2D +# +# https://github.com/CNES/Pandora2D +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +"""This module contains cardinal sine interpolation filter.""" + +from __future__ import annotations + +from typing import Dict + +import numpy as np +from json_checker import And, OptionalKey +from numpy.typing import NDArray + +from pandora.margins import Margins + +from .interpolation_filter import AbstractFilter + + +@AbstractFilter.register_subclass("sinc") +class CardinalSine(AbstractFilter): + """Implementation of the Normalized Cardinal Sine filter.""" + + schema = {"method": "sinc", OptionalKey("size"): And(int, lambda a: 6 <= a <= 21)} + + def __init__(self, cfg: Dict, fractional_shift: float = 0.5): + """ + + :param cfg: config + :type cfg: dict + :param fractional_shift: interval between each interpolated point, sometimes referred to as precision. + Expected value in the range [0,1[. + :type fractional_shift: float + """ + super().__init__(cfg) + self._check_fractional_shift(fractional_shift) + self._HALF_SIZE = self.cfg.get("size", 6) # pylint:disable=invalid-name + self._SIZE = 1 + self._HALF_SIZE * 2 # pylint:disable=invalid-name + self.fractional_shifts = np.arange(0, 1, fractional_shift) + self.coeffs = compute_coefficient_table(filter_size=self._HALF_SIZE, fractional_shifts=self.fractional_shifts) + + @staticmethod + def _check_fractional_shift(fractional_shift: float) -> None: + if not 0 <= fractional_shift < 1: + raise ValueError(f"fractional_shift greater than 0 and lower than 1 expected, got {fractional_shift}") + + @property + def margins(self) -> Margins: + """Return filter's Margins.""" + return Margins(self._HALF_SIZE, self._HALF_SIZE, self._HALF_SIZE, self._HALF_SIZE) + + def get_coeffs(self, fractional_shift: float) -> NDArray[np.floating]: + index = self.fractional_shifts.searchsorted(fractional_shift) + return self.coeffs[index] + + +def compute_coefficient_table(filter_size: int, fractional_shifts: NDArray[np.floating]) -> NDArray[np.floating]: + """ + Compute normalized cardinal sine coefficients windowed by a Gaussian. + + Will compute the `2 * filter_size + 1` coefficients for each given fractional_shift in `fractional_shifts` and + store them in the returned NDArray where: + + - Each row corresponds to a specific fractional shift value. + - Each column corresponds to a coefficient at a specific position. + + The Gaussian window width correspond to the size of the filter. + + :param filter_size: Half number of coefficients to compute. + :type filter_size: int + :param fractional_shifts: At which fractional shifts to compute coefficients + :type fractional_shifts: NDArray[np.floating] + :return: 2D array with computed coefficients + :rtype: NDArray[np.floating] + """ + sigma = filter_size + aux1 = (-2.0 * np.pi) / (sigma * sigma) + coeff_range = np.arange(-filter_size, filter_size + 1) + # The np.meshgrid function creates a grid of indices corresponding to the positions of the coefficients. It + # generates two 2D arrays (xv and yv) where each element represents a combination of indices. In this case, + # xv contains the indices of the coefficients, and yv contains the fractional shift values + xv, yv = np.meshgrid(coeff_range, fractional_shifts, sparse=True) + + # (yv- xv) gives: + # array([[ 6. , 5. , 4. , 3. , 2. , 1. , 0. , -1. , -2. , + # -3. , -4. , -5. , -6. ], + # [ 6.25, 5.25, 4.25, 3.25, 2.25, 1.25, 0.25, -0.75, -1.75, + # -2.75, -3.75, -4.75, -5.75], + # [ 6.5 , 5.5 , 4.5 , 3.5 , 2.5 , 1.5 , 0.5 , -0.5 , -1.5 , + # -2.5 , -3.5 , -4.5 , -5.5 ], + # [ 6.75, 5.75, 4.75, 3.75, 2.75, 1.75, 0.75, -0.25, -1.25, + # -2.25, -3.25, -4.25, -5.25]]) + aux = yv - xv + tab_coeffs = np.sinc(aux) * np.exp(aux1 * aux * aux) + return tab_coeffs / np.nansum(tab_coeffs, axis=1, keepdims=True) diff --git a/pandora2d/interpolation_filter/interpolation_filter.py b/pandora2d/interpolation_filter/interpolation_filter.py index b12a8dc..927aa04 100644 --- a/pandora2d/interpolation_filter/interpolation_filter.py +++ b/pandora2d/interpolation_filter/interpolation_filter.py @@ -19,6 +19,7 @@ """ This module contains functions associated to the interpolation filters. """ + from __future__ import annotations import logging from typing import Dict, Tuple, List @@ -26,6 +27,7 @@ import math import numpy as np +from json_checker import Checker from pandora.margins.descriptors import NullMargins @@ -40,8 +42,9 @@ class AbstractFilter(ABC): cfg = None margins = NullMargins() _SIZE = 4 + schema = {} - def __new__(cls, filter_method: str | None = None): + def __new__(cls, cfg: dict | None = None, **kwargs): """ Return the plugin associated with the interpolation filter given in the configuration @@ -50,7 +53,8 @@ def __new__(cls, filter_method: str | None = None): """ if cls is AbstractFilter: - if isinstance(filter_method, str): + if isinstance(cfg["method"], str): + filter_method = cfg["method"] try: return super(AbstractFilter, cls).__new__(cls.interpolation_filter_methods_avail[filter_method]) except KeyError: @@ -58,6 +62,29 @@ def __new__(cls, filter_method: str | None = None): raise KeyError return super(AbstractFilter, cls).__new__(cls) + def __init__(self, cfg: Dict, **_) -> None: + """ + :param cfg: optional configuration, {} + :type cfg: dict + :return: None + """ + self.cfg = self.check_conf(cfg) + + @classmethod + def check_conf(cls, cfg: Dict) -> Dict: + """ + Check the refinement method configuration. + + :param cfg: user_config for refinement method + :type cfg: dict + :return: cfg: global configuration + :rtype: cfg: dict + """ + checker = Checker(cls.schema) + checker.validate(cfg) + + return cfg + def desc(self) -> None: """ Describes the interpolation filter @@ -141,7 +168,6 @@ def interpolate( eps = np.finfo(np.float32).eps for pos_col, pos_row in zip(*positions): - # get_coeffs method receives positive coefficients fractional_row = abs(math.modf(pos_row)[0]) fractional_col = abs(math.modf(pos_col)[0]) diff --git a/pandora2d/refinement/dichotomy.py b/pandora2d/refinement/dichotomy.py index 6f4b873..952fcce 100644 --- a/pandora2d/refinement/dichotomy.py +++ b/pandora2d/refinement/dichotomy.py @@ -42,7 +42,7 @@ class Dichotomy(refinement.AbstractRefinement): schema = { "refinement_method": And(str, lambda x: x in ["dichotomy"]), "iterations": And(int, lambda it: it > 0), - "filter": And(str, lambda x: x in ["sinc", "bicubic"]), + "filter": And(dict, lambda x: x["method"] in AbstractFilter.interpolation_filter_methods_avail), } def __init__(self, cfg: dict = None, _: list = None, __: int = 5) -> None: @@ -53,9 +53,9 @@ def __init__(self, cfg: dict = None, _: list = None, __: int = 5) -> None: """ super().__init__(cfg) - - self._filter = AbstractFilter( # type: ignore[abstract] # pylint: disable=abstract-class-instantiated - self.cfg["filter"] + fractional_shift = 2 ** -self.cfg["iterations"] + self.filter = AbstractFilter( # type: ignore[abstract] # pylint: disable=abstract-class-instantiated + self.cfg["filter"], fractional_shift=fractional_shift ) @classmethod @@ -88,7 +88,7 @@ def margins(self): It will be used for ROI and for dichotomy window extraction from cost volumes. """ - return self._filter.margins + return self.filter.margins def refinement_method( self, cost_volumes: xr.Dataset, disp_map: xr.Dataset, img_left: xr.Dataset, img_right: xr.Dataset @@ -211,7 +211,7 @@ def refinement_method( (disp_row_init, disp_col_init), # type: ignore # Reason: is 0 dim array (pos_disp_row_init, pos_disp_col_init), cost_value, # type: ignore # Reason: is 0 dim array - self._filter, + self.filter, cost_selection_method, ) ) diff --git a/tests/functional_tests/matching_cost/test_disparity_margins.py b/tests/functional_tests/matching_cost/test_disparity_margins.py index cfcccd2..b935f65 100644 --- a/tests/functional_tests/matching_cost/test_disparity_margins.py +++ b/tests/functional_tests/matching_cost/test_disparity_margins.py @@ -98,7 +98,7 @@ def config(self, subpix, refinement_config, matching_cost_method): [ pytest.param( 1, - {"refinement_method": "dichotomy", "iterations": 1, "filter": "bicubic"}, + {"refinement_method": "dichotomy", "iterations": 1, "filter": {"method": "bicubic"}}, (10, 10, 6, 8), [0, 1, 2, 3, 4, 5], [-3, -2, -1, 0, 1, 2, 3, 4], @@ -126,7 +126,7 @@ def config(self, subpix, refinement_config, matching_cost_method): ), pytest.param( 2, - {"refinement_method": "dichotomy", "iterations": 1, "filter": "bicubic"}, + {"refinement_method": "dichotomy", "iterations": 1, "filter": {"method": "bicubic"}}, (10, 10, 11, 15), [0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5], [-3, -2.5, -2, -1.5, -1, -0.5, 0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4], @@ -154,7 +154,7 @@ def config(self, subpix, refinement_config, matching_cost_method): ), pytest.param( 4, - {"refinement_method": "dichotomy", "iterations": 1, "filter": "bicubic"}, + {"refinement_method": "dichotomy", "iterations": 1, "filter": {"method": "bicubic"}}, (10, 10, 21, 29), np.arange(0, 5.25, 0.25), np.arange(-3, 4.25, 0.25), diff --git a/tests/functional_tests/target_grid/refinement/dichotomy/test_dichotomy_bicubic.py b/tests/functional_tests/target_grid/refinement/dichotomy/test_dichotomy_pipeline.py similarity index 85% rename from tests/functional_tests/target_grid/refinement/dichotomy/test_dichotomy_bicubic.py rename to tests/functional_tests/target_grid/refinement/dichotomy/test_dichotomy_pipeline.py index 320a7ad..248eaa6 100644 --- a/tests/functional_tests/target_grid/refinement/dichotomy/test_dichotomy_bicubic.py +++ b/tests/functional_tests/target_grid/refinement/dichotomy/test_dichotomy_pipeline.py @@ -26,11 +26,18 @@ import pandora2d +@pytest.mark.parametrize("method", ["bicubic", "sinc"]) @pytest.mark.parametrize("subpix", [1, 2, 4]) @pytest.mark.parametrize("iterations", [1, 2]) -def test_dichotomy_execution(left_img_path, right_img_path, subpix, iterations): +def test_dichotomy_execution(left_img_path, right_img_path, method, subpix, iterations): """ - Test that execution of Pandora2d with a dichotomy refinement does not fail. + Description : Test that execution of Pandora2d with a dichotomy refinement does not fail. + Data : + * Left_img : cones/monoband/left.png + * Right_img : cones/monoband/right.png + Requirement : + * EX_REF_BCO_00 + * EX_REF_SINC_00 """ pandora2d_machine = pandora2d.state_machine.Pandora2DMachine() user_cfg = { @@ -60,7 +67,7 @@ def test_dichotomy_execution(left_img_path, right_img_path, subpix, iterations): "refinement": { "refinement_method": "dichotomy", "iterations": iterations, - "filter": "bicubic", + "filter": {"method": method}, }, }, } diff --git a/tests/unit_tests/test_interpolation_filter/test_bicubic.py b/tests/unit_tests/test_interpolation_filter/test_bicubic.py index 711e360..5f90858 100644 --- a/tests/unit_tests/test_interpolation_filter/test_bicubic.py +++ b/tests/unit_tests/test_interpolation_filter/test_bicubic.py @@ -30,7 +30,7 @@ @pytest.fixture() def filter_instance(): return pandora2d.interpolation_filter.AbstractFilter( # pylint: disable=abstract-class-instantiated - filter_method="bicubic", + cfg={"method": "bicubic"}, ) # type: ignore[abstract] diff --git a/tests/unit_tests/test_interpolation_filter/test_cardinal_sine.py b/tests/unit_tests/test_interpolation_filter/test_cardinal_sine.py new file mode 100644 index 0000000..8020fb3 --- /dev/null +++ b/tests/unit_tests/test_interpolation_filter/test_cardinal_sine.py @@ -0,0 +1,147 @@ +# Copyright (c) 2024 Centre National d'Etudes Spatiales (CNES). +# This file is part of PANDORA2D +# +# https://github.com/CNES/Pandora2D +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +""" +Test Cardinal sine filter. +""" + +# Make pylint happy with fixtures: +# pylint: disable=redefined-outer-name, protected-access + +import json_checker +import numpy as np +import pytest + +from pandora.margins import Margins + +import pandora2d.interpolation_filter + + +@pytest.fixture() +def size(): + return 6 + + +@pytest.fixture() +def fractional_shift(): + return 0.25 + + +@pytest.fixture() +def config(size): + return {"method": "sinc", "size": size} + + +@pytest.fixture() +def filter_instance(config, fractional_shift): + return pandora2d.interpolation_filter.AbstractFilter( # pylint: disable=abstract-class-instantiated + cfg=config, + fractional_shift=fractional_shift, + ) # type: ignore[abstract] + + +def test_factory(filter_instance): + assert isinstance(filter_instance, pandora2d.interpolation_filter.cardinal_sine.CardinalSine) + + +class TestCheckConf: + """Test the check_conf method.""" + + def test_method_field(self, config): + """An exception should be raised if `method` is not `sinc`.""" + config["method"] = "invalid_method" + + with pytest.raises(json_checker.core.exceptions.DictCheckerError) as err: + pandora2d.interpolation_filter.cardinal_sine.CardinalSine(config) + assert "invalid_method" in err.value.args[0] + + @pytest.mark.parametrize("size", [5, 22]) + def test_out_of_bound_size_field(self, config): + """An exception should be raised if `size` is not between 6 and 21.""" + with pytest.raises(json_checker.core.exceptions.DictCheckerError) as err: + pandora2d.interpolation_filter.cardinal_sine.CardinalSine(config) + assert "size" in err.value.args[0] + + def test_size_is_optional_and_default_value(self): + """If size is not given into config it should default to 6.""" + config = {"method": "sinc"} + sinc_filter = pandora2d.interpolation_filter.cardinal_sine.CardinalSine(config) + assert sinc_filter._HALF_SIZE == 6 + assert sinc_filter._SIZE == 13 + + +@pytest.mark.parametrize("fractional_shift", [-0.5, 1, 4]) +def test_raise_error_with_invalid_fractional(config, fractional_shift): + """Test an exception is raised if not in range [0,1[.""" + with pytest.raises( + ValueError, + match=f"fractional_shift greater than 0 and lower than 1 expected, got {fractional_shift}", + ): + pandora2d.interpolation_filter.AbstractFilter( # pylint: disable=abstract-class-instantiated + cfg=config, + fractional_shift=fractional_shift, + ) # type: ignore[abstract] + + +@pytest.mark.parametrize("size", [6, 21]) +def test_margins(filter_instance, size): + assert filter_instance.margins == Margins(size, size, size, size) + + +@pytest.fixture() +def reference_implementation(size, subpixel): + """Reference implementation translated from Medicis.""" + sigma = size + nb_of_coeffs_per_precision = 1 + (size * 2) + tab_coeffs = np.zeros([subpixel, nb_of_coeffs_per_precision]) + + aux1 = -2.0 / (sigma * sigma * np.pi) + + for i in range(subpixel): + precision = i / subpixel + + for j in range(nb_of_coeffs_per_precision): + aux = (precision - (j - size)) * np.pi + + if aux == 0: + tab_coeffs[i][j] = 1 + else: + tab_coeffs[i][j] = np.sin(aux) * np.exp(aux1 * aux * aux) / aux + + somme = np.sum(tab_coeffs[i]) + tab_coeffs[i] /= somme + + return tab_coeffs + + +@pytest.mark.parametrize("size", [6, 10, 21]) +@pytest.mark.parametrize("subpixel", [4, 8, 16]) +def test_compute_coefficient_table(reference_implementation, size, subpixel): + """Test values computed against reference implementation.""" + fractional_shifts = np.arange(subpixel) / subpixel + result = pandora2d.interpolation_filter.cardinal_sine.compute_coefficient_table(size, fractional_shifts) + # Do to the use of `np.sinc` there is a little difference in the results so we use almost_equal + np.testing.assert_array_almost_equal(result, reference_implementation) + + +def test_get_coeffs(filter_instance, size): + """Test retrieve good coefficients from computed table.""" + fractional_shifts = np.arange(4) / 4 + coeffs = pandora2d.interpolation_filter.cardinal_sine.compute_coefficient_table(size, fractional_shifts) + + np.testing.assert_array_equal(filter_instance.get_coeffs(0.25), coeffs[1]) + np.testing.assert_array_equal(filter_instance.get_coeffs(0.5), coeffs[2]) + np.testing.assert_array_equal(filter_instance.get_coeffs(0.75), coeffs[3]) diff --git a/tests/unit_tests/test_interpolation_filter/test_interpolation_filter.py b/tests/unit_tests/test_interpolation_filter/test_interpolation_filter.py index a2dc5a6..b565003 100644 --- a/tests/unit_tests/test_interpolation_filter/test_interpolation_filter.py +++ b/tests/unit_tests/test_interpolation_filter/test_interpolation_filter.py @@ -227,7 +227,7 @@ def test_interpolate(filter_method, image, positions_col, positions_row, expecte """ assert ( - AbstractFilter(filter_method).interpolate( # type: ignore[abstract] # pylint: disable=abstract-class-instantiated + AbstractFilter({"method": filter_method}).interpolate( # type: ignore[abstract] # pylint: disable=abstract-class-instantiated request.getfixturevalue(image), (positions_col, positions_row) ) == expected_values diff --git a/tests/unit_tests/test_pandora2d.py b/tests/unit_tests/test_pandora2d.py index a29f753..765a90d 100644 --- a/tests/unit_tests/test_pandora2d.py +++ b/tests/unit_tests/test_pandora2d.py @@ -24,6 +24,7 @@ """ Test state_machine """ + import copy import numpy as np @@ -99,7 +100,7 @@ def test_run_prepare(left_img_path, right_img_path) -> None: [ pytest.param({"refinement_method": "interpolation"}, Margins(3, 3, 3, 3), id="interpolation"), pytest.param( - {"refinement_method": "dichotomy", "iterations": 3, "filter": "bicubic"}, + {"refinement_method": "dichotomy", "iterations": 3, "filter": {"method": "bicubic"}}, Margins(2, 2, 2, 2), id="dichotomy with bicubic filter", ), diff --git a/tests/unit_tests/test_refinement/test_dichotomy.py b/tests/unit_tests/test_refinement/test_dichotomy.py index 929d811..2a27edb 100644 --- a/tests/unit_tests/test_refinement/test_dichotomy.py +++ b/tests/unit_tests/test_refinement/test_dichotomy.py @@ -165,7 +165,7 @@ def config(iterations, filter_name): return { "refinement_method": "dichotomy", "iterations": iterations, - "filter": filter_name, + "filter": {"method": filter_name}, } @@ -225,10 +225,62 @@ def test_iterations_in_allowed_range(self, iterations, dichotomy_instance): """It should not fail.""" assert dichotomy_instance.cfg["iterations"] == iterations - @pytest.mark.parametrize("filter_name", ["bicubic"]) - def test_valid_filter_names(self, filter_name, dichotomy_instance): + @pytest.mark.parametrize( + ["config"], + [ + pytest.param( + { + "refinement_method": "dichotomy", + "iterations": 1, + "filter": {"method": "bicubic"}, + }, + id="bicubic", + ), + pytest.param( + { + "refinement_method": "dichotomy", + "iterations": 1, + "filter": {"method": "sinc"}, + }, + id="sinc", + ), + ], + ) + def test_valid_filter_names(self, config, dichotomy_instance): + """ + Description : Test accepted filter names. + Data : + Requirement : + * EX_REF_BCO_00 + * EX_REF_SINC_00 + """ + + assert dichotomy_instance.cfg["filter"] == config["filter"] + + @pytest.mark.parametrize( + ["config"], + [ + pytest.param( + { + "refinement_method": "dichotomy", + "iterations": 1, + "filter": {"method": "sinc", "size": 42}, + }, + id="sinc", + ), + ], + ) + def test_fails_with_bad_filter_configuration(self, config): """Test accepted filter names.""" - assert dichotomy_instance.cfg["filter"] == filter_name + with pytest.raises(json_checker.core.exceptions.DictCheckerError) as err: + refinement.dichotomy.Dichotomy(config) + assert "size" in err.value.args[0] + + @pytest.mark.parametrize("filter_name", ["invalid_name"]) + def test_faild_with_invalid_filter_name(self, config): + with pytest.raises(json_checker.core.exceptions.DictCheckerError) as err: + refinement.dichotomy.Dichotomy(config) + assert "filter" in err.value.args[0] @pytest.mark.parametrize("missing", ["refinement_method", "iterations", "filter"]) def test_fails_on_missing_keys(self, config, missing): @@ -466,12 +518,46 @@ def test_skip_iterations_with_subpixel( ) -@pytest.mark.parametrize("filter_name", ["bicubic"]) -def test_margins(dichotomy_instance): +@pytest.mark.parametrize( + ["filter_name", "iterations", "expected"], + [ + pytest.param("sinc", 1, [0, 0.5], id="sinc - 1 iteration"), + pytest.param("sinc", 2, [0, 0.25, 0.5, 0.75], id="sinc - 2 iteration"), + ], +) +def test_pre_computed_filter_fractional_shifts(dichotomy_instance, expected): + """Test filter.fractional_shifts is consistent with dichotomy iteration number.""" + np.testing.assert_array_equal(dichotomy_instance.filter.fractional_shifts, expected) + + +@pytest.mark.parametrize( + ["config", "expected"], + [ + pytest.param( + { + "refinement_method": "dichotomy", + "iterations": 1, + "filter": {"method": "bicubic"}, + }, + Margins(1, 1, 2, 2), + id="bicubic", + ), + pytest.param( + { + "refinement_method": "dichotomy", + "iterations": 1, + "filter": {"method": "sinc", "size": 7}, + }, + Margins(7, 7, 7, 7), + id="sinc", + ), + ], +) +def test_margins(dichotomy_instance, expected): """ Test margins of Dichotomy. """ - assert dichotomy_instance.margins == Margins(1, 1, 2, 2) + assert dichotomy_instance.margins == expected class TestCostSurfaces: @@ -722,7 +808,7 @@ def test_iteration(self, cost_volumes, disp_map): def test_search_new_best_point(cost_surface, precision, initial_disparity, initial_position, initial_value, expected): """Test we get new coordinates as expected.""" - filter_dicho = Bicubic("bicubic") + filter_dicho = Bicubic({"method": "bicubic"}) cost_selection_method = np.nanargmax From f7c869b4bc83e9ea1e8eb05d02c3594e4652184a Mon Sep 17 00:00:00 2001 From: Philippe Mallet-Ladeira Date: Tue, 9 Jul 2024 16:02:09 +0200 Subject: [PATCH 033/121] doc: add sinc interpolation filter documentation --- .../interpolation_filters.rst | 17 +++++++++++++++++ .../userguide/step_by_step/refinement.rst | 14 ++++++++------ 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/docs/source/exploring_the_field/interpolation_filters.rst b/docs/source/exploring_the_field/interpolation_filters.rst index 3e190aa..71fdaa9 100644 --- a/docs/source/exploring_the_field/interpolation_filters.rst +++ b/docs/source/exploring_the_field/interpolation_filters.rst @@ -38,3 +38,20 @@ For both points to interpolate, the `fractional_shift` is `0.5`. Thus, the coeff :math:`x` values for which kernel is not null are available for :math:`a` ranging from :math:`-1` to :math:`2`. Thus, for an image in 2D, the filter is applied on an array of shape :math:`4 \times 4` where coefficients are applied on columns then lines. + +Sinc +---- + +This filter use a cardinal sine of the form: + +.. math:: + \frac{\sin(x\ \pi)}{x\ \pi} + +Where :math:`x` is the fractional shift. + +Computed coefficients are windowed by a Gaussian of form: + +.. math:: + \exp\left(\frac{-2\ \pi\ x^2}{\sigma^2}\right) + +Where :math:`\sigma` correspond to the size of the filter (half width of the window). diff --git a/docs/source/userguide/step_by_step/refinement.rst b/docs/source/userguide/step_by_step/refinement.rst index 5c7bf0c..761cd48 100644 --- a/docs/source/userguide/step_by_step/refinement.rst +++ b/docs/source/userguide/step_by_step/refinement.rst @@ -137,13 +137,15 @@ Configuration and parameters | **Optical flow** | No * - *filter* - - Name of the filter to use - - str - - - - | "sinc", - | "bicubic", + - Configuration of the filter used for interpolation + - dict + - keys: "method", "size" + - | {"method": "sinc"}, + | {"method": "bicubic"}, | **Only available if "dichotomy" method** - - Yes + - | method: Yes + | size: Optional (only with sinc) + **Example** From e93213c4bf4d139b339145b34c8e415b1c423305 Mon Sep 17 00:00:00 2001 From: Philippe Mallet-Ladeira Date: Mon, 15 Jul 2024 16:01:25 +0200 Subject: [PATCH 034/121] tests: move functional tests for dichotomy --- .../refinement/dichotomy/test_dichotomy_pipeline.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename tests/functional_tests/{target_grid => }/refinement/dichotomy/test_dichotomy_pipeline.py (100%) diff --git a/tests/functional_tests/target_grid/refinement/dichotomy/test_dichotomy_pipeline.py b/tests/functional_tests/refinement/dichotomy/test_dichotomy_pipeline.py similarity index 100% rename from tests/functional_tests/target_grid/refinement/dichotomy/test_dichotomy_pipeline.py rename to tests/functional_tests/refinement/dichotomy/test_dichotomy_pipeline.py From 996fc0f1186074a63946ed6333b442bf70d3abf4 Mon Sep 17 00:00:00 2001 From: Philippe Mallet-Ladeira Date: Tue, 23 Jul 2024 16:02:06 +0200 Subject: [PATCH 035/121] fix: sphinx duplicate parameter --- pandora2d/interpolation_filter/interpolation_filter.py | 1 - 1 file changed, 1 deletion(-) diff --git a/pandora2d/interpolation_filter/interpolation_filter.py b/pandora2d/interpolation_filter/interpolation_filter.py index 927aa04..d022e23 100644 --- a/pandora2d/interpolation_filter/interpolation_filter.py +++ b/pandora2d/interpolation_filter/interpolation_filter.py @@ -39,7 +39,6 @@ class AbstractFilter(ABC): interpolation_filter_methods_avail: Dict = {} _interpolation_filter_method = None - cfg = None margins = NullMargins() _SIZE = 4 schema = {} From ba4a097f59d474a32b7158ea40a48ab91cc197ff Mon Sep 17 00:00:00 2001 From: Tommy Date: Mon, 22 Jul 2024 10:59:23 +0200 Subject: [PATCH 036/121] doc: Add the variable initial disparity in the doc --- docs/source/Images/estimation_schema.png | Bin 145414 -> 173012 bytes docs/source/Images/range_schema.png | Bin 300415 -> 385833 bytes .../exploring_the_field/initial_disparity.rst | 15 +++++++++++---- docs/source/userguide/as_an_api.rst | 6 +++--- docs/source/userguide/faq.rst | 8 ++++---- docs/source/userguide/input.rst | 14 +++++++------- docs/source/userguide/overview.rst | 4 ++-- docs/source/userguide/sequencing.rst | 6 +++--- 8 files changed, 30 insertions(+), 23 deletions(-) diff --git a/docs/source/Images/estimation_schema.png b/docs/source/Images/estimation_schema.png index 2c504177a455004e251a6210fd021226f86c089c..af0cbc654324acfca8a904aed45f236cb602f4bc 100644 GIT binary patch literal 173012 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�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 z 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 literal 145414 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 Tb1pb24?%L$%2EXq#&7-)%Y1wX diff --git a/docs/source/Images/range_schema.png b/docs/source/Images/range_schema.png index 6d9cdccfdf9cb0674e58859ddb0f85984405092b..024b1e2370f1f5adde575f8d6a525b4a766223ea 100644 GIT binary patch literal 385833 zcmeEv2|QH$|Gp(eMGMKUh3w1NWnZ&q%aV04mMp^<`|_+&Rw%93?wGfeYw>Qv1YFNt4@jLVJ zn45e4a%)@Lbns9_K%H#V;Fd6ZV8fOk*e}E4vi12QFBM6T*VrxIx-C`DK z+j?ys%GNMfTT7VB&khd>hub4=vO21l;}S!>r);*rUUaaRLtf zXIsZC(EinwVwURJS|V*W#|lG)HV+H4{3OiQ+GcCdyn-T|pEy9b24j!J#Rh5#ci&up zW6}1rvN?}ivx$Jif$eQOY1=>E8sy+13$w>e_SQUN_XC*LA7A&&Y#_dX;LmJM&Qr_I zKv2k5L_yab>MHH&;NfY%WnOMjdspm~Z_bnp(sRpzfjM%*e1?RYV;0G{AfX5()+hke zl>yE&5^C$XVcZx*TEGFAI=R?xjF#INVPk7=sS5RkyJF7B#&)*e$++0TkQSITh*{MJ zYGLDwfGI+qfCc=(g0r^P)*Iggz>AE9E5Z$?V2ecBI%1HCS-}d}w*u6`)*fTY(g+J1 zTO?p`F2D(pgSr9+fca7zgS6qU2n)#0Hz@7kbRxp1sTXEsChQonA_;|2m zY_?$qB8*)K#bVU@%ce13`uEr|Fa`^Q-~RfTu<;ADeAPsO{cg}&LkiM`~s6N%fltWBmjh0S>QcjAzSZ(MVR3Tq%7Rg1&ILAh}kR*>VkBKVFL1h z7-hc;OkcIDZ$;Su4?_I^I0W(iegruIzTFmTuLXEfsN;s~m9arOU@(Mnx9%AKs_g{b z@TBfQase#E2Kmk4fJNHZF#`u&o|XMZxV5phw1fdpQRXXV|Hq)U0TLKO-VKP67_4Bv z=6^S)e7m)8c+uZ>$X|^o+pJv>YuMZ4#cvt=@7dc=`~1n|AUuC?r%-z!&^tnrFd4Y3 zqa_fse_yED+V@7l`VvBa`&;wL{?*})9|Y%rB;ot<;KU|-TfqE-u-Ts4{kGL_B4rCN z4j%ujSQP-V3St#w1HT6@nEK{RRQXbv@nTSfiBBL{H|j}XHa33$`oJm(f)xbop9Jd` z8v=s$JA)NV-TodP5-d^w(X=Pl>;5*o`Bg&ZTT4`I77W>{MM1EBXRu=1N52QG8)QGo z$byV4V3L62{?f?$sss2|Mi$%T_zM2N+T++7_s?l@VB3?w2T)-2`;SJy4X64IbtM?> zzH_wOYMp}U{MWbSzdbkoR&;_4?N2JF?JV;5B7Fc&*zZ;gfT0u&r65HMh;_cO)W4m6 z{Ph$q??%ZFXrX?Gwg*Hjh}LbU`cp#%@cd?Yf<)~PCTc;&4~W)3i&juf`?Hw(J*&w-p!orr+W#n1`={ahmD+FX+7DLe_3g z(eHs2n6Umw6V^??`r9cLNY-L*9Q50B^w*QMm~i)dBOVA(5T0MXmU^pp1Y0XVOH{uD zT0!LxSWbR(FvYf3zLrdGAsA$T{z~=-@&}|pU~mP4>sNy-FG$vImIlB0`yHYys4D`a z>z|FTAX)pf9QX@pzXM$VfX)acYeBMhi-`m>t?zpK1KzDut05EeL@17(g5n<#p5F{lP+9w9m9-F1`vao&&!QD1YkyQZ$@d4e zKOkBAUnOh5HTT`>t$<|h7shA%i@%=z;RA0l1V-0C8(l%N_J>7Rtj_5FdY&D4Yg+Ku zw16#sZ*CT{^{l;ZT-CpXo8`l5f4+hsFdhAmrlWitUK6BZx2KX@)bro_v@kxbvZmfmg*!fIxJD==`U@iEw!1mW?n_G_n1kw0Elx==18bKQM$I__$ zScwe?P7s{Gw-f~Rsy~aEU#9IlgwFq4Q3EEjU?L0NO91kBK2eV!RO`T)_~al=d|>SS z5(K`y0BO{}SG~jk2X4%>!K(sh?1F?MklMCh7_$Z%FESQzMblst@(w+_;p7xyI49~5c57cJ@Gw`e5??5bqcbNgv`e)G!_5r?vRRF!;0j}U} zWI{t|@icY*64 zxXld6&Vuah_h)CZEsre{c3Z&yYR6-1+&_n`6~GEtzzFz1903KswF9`#-oc3XT_PU% zj4805{APH9WbKdDXbb!SB@5X3{Ev1%|14TTvi3)jwE}-Y>;u9Tge$1x{##Yt0-&x4 z%!U7KbOp)U9~NEzfX)acYeBO1hmo~k>8}1;$XZYg1V%uC4ZjL1YyVI6o#NJ2B)>gJ zf4%re02Kd#@cd?Yf@JNFC2O}DR$%Azf4TGdt-%zFR*Ito^fa z{Yve(6$iklBmb38M-~KiMPM%cXLDhYto>op^$+NbK(ZDjYkwG7`?Uo7U&7W3f@&Zz z1PX3A*576#H<`>|+=dF2*8VK^{q=0EAgKNU;rY$*1ligj%+`Y99}um77Oh`PCPDh= zdtA37_y@#4AY1z%Wo!R5TtT+>*CL1Sa@!I?P*?;;*FOtakgfe$#rg%h-=TE<141K^ ztp(ZIAIH{iWz*Z(tA7bwD+JyO2n>OO8;%uZYrn*~GW73W4$;5T4%*Pmrzs zv23jnsQv-b`e)G!vb8^|o)r26>K~A;{jajM-5SWktNAppk4Yvt$vDRd7Sb$qYnUE_vgLn?$W<7t%lQg~Kpyo!%A;<&O^`?ZT0m#|TOVj3 zjFsJhX#C$vH@_K;AdmWEc~oJn$OZ%_2+psC4viT;VTTre8W8#y8F!6!0^Y_M1kVpMtJnFCS%_D7rgd;Xvz+cICT^;N<2k^0 zBPh2x%kAy_txMjaE}QFFZ#_6?V`Bg}!t}$_x?kUi1~g5Gf)(5m>B40Vhg;jjpiZ_f zTowS(2X(c!LBbFK$S_;cw)NVG zOc>B@+6)G;uq_?P<{}`2hB;!O3B3K2rYS7)3)6&P%j$ohX=0TdzxB8nn7zHNlM67x zGVYjjpzQ>;z|6Kg0{ROl_}}$+R<`!`vT%DKnqbU_&q~+=W?_Nx@JIyQ4)FS4J~0;- z;1~E&W(eW^g&A%=OLm(XeogQMe8CN0_|Nf>TX+J^@Hc(iKhq3_w*)3zftu&n-tb>y zhQGcYhXvf;)Y8@k2p+abAQS=6md5-Q0^*FIvnw2kCo;BIsb1PttA7PAJF&FE#`GkL6UVT;n@#TWMe~>Ny`c4n>9!@|~2Hhy+Av|7iN5J`l zj_+#)(?8QX1-8m~ta%E4%~ftO1lwKZR;KX}vQBI|w9Qj$*m}V10p|&~0{+-K0+lSx z1;`m_YY*8e%&tm$OxT-S$?@#X{?Ej=ww>&zMI)b#ZG31MN$2n~(B1Vlvl_lxlGXu!mW-@o7AS>Mp0E5gox6~f2I zdhD3oaBeOSoOI8g&x#?#A}lA|KV;b$m3j#%`Qq-a@*J0`y10jxmpAN*W4BjNqI2-Y zN6WN`s8bp3%O>Hy3uQ|m?f8n#tApF~e9n{6i+#Ml*v03-S8jdlN#b*_hD331o8B^C z+~=VT>80LF&0$9s@j~dusZqWp!fq3X5RC1b2n3?<%7No}1`@cdWdsP)0SO`((%STS z_Yaz7g4gC0)1T^fKFd!&qaf~gXWo}9@zOQFQ7UfVkSLdB{X7X;ypNX>op1Z_$bG2P zesMq~+~uO~z#)diro76Z-XyiPMV%}igXPiKoQ)yga0HT0EeJcV@xR^UJ{3B?{O(oCKO|xaj{zl z8kanU)NEg43vTq(!+GKbYXk?*ex}6Z<#Q(%-RZI^a8~qGZYj!NJ(xE#U)^%CJtAN0;3k;pUl_Vy&9Rjt7JO^ssJW@h5zBJCS_jB4!_=nBnH z)r%w0w*K^_bDVSAG&k%bI`hPySbmKAT!u>;d3*l11hm5pWa-dP>V3> z-QPDl-Cso_d}TouN7b(`o23Zv{j_1D@*s?$y+H1k$?aaasT50lvOi)~PuWuc&FrO0H-fHCjulAne=KRpWK7Dm?}_b*=ie~Q}lGmU1sg$J5b|N^zG8wz?n>yK2N9_FX&Jbjt3Fx zYn=7Y?&-Z`OMSzchfzl8Jn<42FNmUObxl@G-_ z_jNhB3tN`CQ8IAtfQ#^3tBVBIqHpWTP#^JBZ0i{g)#rRbwwtqB%r#0L=YY#e zx~kleM6K$Ltv#6WDnfq>LAMygE0-0nQ?usUS40puKj#0*NgP6*tLH8^I+qd4XH6~j zDnscbu$2sp=OK^%K6_>AWZX<`=ONW!re@ZV9OAcW3h=m{PN4n%YNwWsh#B_B3F;KU zDIiip%YyTUx}~L2a$U8%$W`0B%tP|h=n$|0`+db~WjBEN61cKtY`_CsYc zrnPClt3(QCBSU4CjoN;k?ysZ5k6L_s*ud*mRNlLxUAC1eM#(Y+yV73LcSecU<6?i# z?Ye|tLUcG@98Lgul9kHQd4omr#2!L2`YaA@$CFVek5VTDmu2Eol_OKwPG{m`p(Z&3RVN9sjbpD0vxm(81xHG!fUHoLZnktGlX^-j=IzMfjwZ zJHwwGA2bnB@XYL8Yk?|2e#RTsMJ)SA3=C z*!8kGa(%`0=x7A(50$RY)@M6QK}W^)j;5PE85CU3K9e8pwK$^3QyZbrg*v^Biy z@t}*rlAhGd3{*o#gLEw=>|pS{?7p$`^|7a`5st>Vk}Y<~y-r*qu1<&|3tam2BK008 zT){H9kKY1bpid5E(?u^+9JHZ(k=>4<6gs*aW96q@)ury@SeWk3T9;@O!L7mTnlU7r z5ng;yKSfUtjNS+cC&@Cwsl>~wTI{!aCuT(8XuhUSf(>YvZg{HVQ{^jKQ+VCt*eGHL8aDKW$8Nuz){?7XpjKS051e4XSZ zUhczMM4wE5K+c8ccCQRW1sFn>d#1rW1>dzlv3W@}c4yeQMx8H$w0u}X1Z`L+cU2v+tkE_{p?UcRu;zqZNSN%M6I?Nctp>f79}lhLOqou!D*^Phhk{R$%iKUBm#bfp|LL(TIj=J5i;H*29E5cHDE*P=4co zdz81J-$A83x-@`Rx>u9PZ%{P3Vy-JZOZZ+rw-QYmy5mtDY{Fb{F4j8H;0T&gsCS%E zPwl;OLmBas^KI?smKJSZ`X*TK{z(6s1iu_FdTT0EmeS`EjjwY~JM^6)Q^V!xRq+&q zJ+XOhp5Hq6wCmZkXXH;6$|cH08wKk2r9Wl$^j{9K{J%7ZLJ1jC20x#sLk z5>u{;y_pV;e9j5=2A`6mn-i_y-kXW6H85b~4G~MtJC>68{L<3fC2C2urD_UiTbi{` zM(?MEkCPeNjYDv01-9dj;wJSOX!_CHMT(t-Is9>@IAOL+fzq_;ckf!x6b(J`;Y8_N z@G&Lyt^|TtU*LPGhvwCYx3apZ_pjo)ZA90U(Z|&jPKtZYGp-eX(&H-c%Xv6&GJQmh z3D+@v>g_`d;@DAL<-VN_rKrQYV`akw@BL-E=$i;~Q}YO4s(bHd`lOm2ZP))KOz26o zESY%3)Mvay1SbcCiXL$lqJm~Q4??y`@8Qga_?2HR9WDke-V zu}oP!oq%Q*a+j|n3VC#xMTCy2h0*x57HsJ!!;atr z5r#jJ*seYMG_K_52ZX#~9x6Fkv|in*1sw5?wJ1(QoB5H~9XQ&u!jd0wwIvarw=xDC zJMx$=T)f!)*tSKLY35iF2gd2bW+!XR#@wQ8U*6`pEo%`yR5Ox!b=wRZI$7g4JK zAT-0+t{i_28x=5o$ra9xBF}nH>5^^n#FEoB3P1b3l;i6ZdE)0}7FA9Q80KL@c{_qJ;?~YoMLD^qnZf7Rtt-#r6Wz1#$P2=$UKnpLn5VA6WjC$b zF(%t^o=oDT>sV_tndBbvM_$80ED{J(CQHrd^b5=nFNN13m(riDJH( zv$gw6&$);^VzSG4MC-&!l;YXgO6(yBBTKB|!~L`~%SoTJrNq-kB?n5IJ1d}?Br(+G z{G2XGY0|yN^EiRo7;6LE6V*z~b=~*Q3D+^X7*_ovWJbsSMGfmO(-ie_q2GQ`HCFsF zr|XAdseLAbE|;qe?(wjv9WRtaPc!k`HXkb*%e=38T<>W>!F(LMRY7e55blxh9133d zRh&P7o0j-q>@9xULFbOQI-2gI%@_9X-)}Qq7nyd`W4|$w!cxVVASG)Jn`jz_EHCzjB9$7SoqGIb%M|sI>;)IZmkBCVbe)`XXRhH~ zFF^--Eq!nhd%)PV0f=M0fW5rVg;tGJQ<{oR>`Hr+8#5lqHWos6f{pU-)q@o{)_$0@ z$0E9x(v0mU(%PC3Uy=ElvX_~#<@oho~%_<$ug0pSGW`W47c1V?+jH4aN^{`ojm`dj0nV2sA zEptk81QHkBiOzg>kExzgayo~yeWJ|F7yBqCt_wv_TlrwVn7L4G0b;n0-=b!>*Tlo; zi+HNy&zD`vVmj+!Fm3tnyGjR!MbHJketeP7!bdPGSVh+^5fW+>8Km%u3>L$}F-eyv zZDAph73~r+QF{R-K`dNc4Pqp|ENohLcXlJ{Ip=%4r>IV`?|h6|9oQdowE3~mGQ#U) z|0Q>6R?oyaMzR>?zGnS`s@1Txv9|jyh0cR7>0i;0VNnho*pe+h`cT9B6*WQck7vd> zh*q7GZ0{&sw*tKHQOnPt7Id=oc?X~BWa_ZyuSeqhQ~$I#N?dQ=(YYpBvdL)z?G^o( zZ-*Q#GYuXw3pjK}D1^}39`h}e1Cr~5kLrhZ@#J4%3f>b66RuL;JTL=Vo9g(Y^|xid z-Yix=$uY5sb4NT#w~(6>rYT=0PG*D-9AB{`T6Iqw~u{!J(u^NmM zYn6!_v1)iAJouIwlZ-wRZi>_k^(nS(N!uwLoT>XD&Y*QUnNXM2r+)q8AlaZT!MTk& zJGgA_$#BV8qkc8fXSSBYgr_b6wQukz4LPwvbqp&M#9}**fXh&@FO`->?Yd zo%IlXZ)o5pGlQ<g_%Nr`SWyZ*vgUTK{5q8i|YN zGfUn}K&+f9Usu;Na=x%_KTDFk)Allws)TvFxG8EJd~_){wE=;O#$TGN3lnP3GB|*r zQygvLl`%tm76`cgh93^rN2In-9QGBQeN|VNa_!n~=0Rh2NtHy|TqiX8vX_4%DnF$dQcS|Z#@7_(&8GxUN zni;2B8JjM)d7Yw@B1atAU%0~}osr3ZwmTP!|G>C7N)XPqot>diEl$=sC1+ylH^M_t#NH~{oWQVIJ-ms8W zC-1J%*%x6)m1Aioe1z#vxLy0SFs?|!u6yj+D68RUvBI9%J&(Gj$p9mmM=jxDi6 z!)pdhk;Mm9`U)4Vi*w4?&b+>Q$l0kOV2$JyioJ`S7$L==alBD>T^$B6Z8&F+9H5dt z!dGfMTI{$iv(9r7$2<(T59K{!9I@Y5p=Q5Pga>_|*e-<8LvsRSmsbM%A**}}FYhO; z%v7;EKYfr?Ug)3hZzd*q_32?Zf{&J?pHJLL?du(fEcd)*;GGDU`A8_&ebKcJ>z$@6 z2SX*-hJcVgkkluI8(3+OXQ`Ar^kR1&in@DOI8X;Abr<)!RgNzXD?byh3z;bC!QU) zqk7Ne<-CwZraS71m$V|pAG0f$vBcvs?l2ok4Inelcq2_bHeA4xmZEqadS+DgxGo32& zm!IfaO8v&EYF%v39f*wCPdN@xc?iy++3M+zGBL=Kv<%)TDJ zTYriux=<0#+PU9sXHf+{9miN+q{ZXp0y2}!v?zFh)%*on+It^u1QVY`LVf9zAu@={KSBAzH_$l6>^$wLWIe5&2Y>#?Ydk5qZz8;F^)} zrkR-IWx71A&6=96Z8h7A%NosP+-V6p^=Yr6*DH$r`kF@ptinksM7j5?$gI?t2vk0; z$8d-B?a5*wJ*Ye-`T6mg_m{5sydAn8>+upXZlK3Va8K&BVsoTAiyR(~B_XYA8KXQ0 zNm1Z&DJgE}oR?>1sV*MbQ?0DbvWTOY%deEJkzA?t9LM9NS{%Qone)IiF``tBll@*) zQA8Y9_IHvoNMuEv7JJt&ieH3t(}$B+lqcN4)mZ6G1*y$^K8cj{LH4U0Ct9LU5?`(m z@y$5xr;@(<+HTfn{rr1fkS)e$Vn5%V*~Ay>IEiLdMpW9gAf|6-GY1iXL^? znbbPYXwAVb7nOPuPhyUyk+}|tKxP+cB>lu_-}&A@pHZYbO?}|X8%buV>e+pKvAUkb z9HsA-sThPQ0e{j8jT#|u5Q=9vP>CH5uoIakT@9tLFm9nupObIRt4UGbDjzOfS>F6iNnh;#6XO&xa)%u8NpiJPFz; zfQC>v0QmPjaq6!$U+VGB=?pdVk})&a=f)&cq8Y&wK+$3DcGU+cHdW%py#)^kRoztz zzlg625v9*e>jOh?0h75kjiTr>j*uycYPZ zV)2F55Fq%w9y@`2s#d0&7m&f^V-(~<@rcPDQ`a#Om0=3dGjn;d&3dN30t*uzEx@cr zt^j12(nNKW#~JA)fP&@)QU@S5>c!yA^bZUUuHdVdRxBG3YCFZx-LEyTQI#lJM2&~g zVAyKbV%4$&Na-E@6c=H=L8ChRQB3x2RC~^O!m)5Pf>pcD#B(?jIsTx4x^c&|O0Ut> z=*xq4Uy^;`hyc1s(|K}l2 zPwcX$!IZ=U=fw$m77n7*52?DMXNiD4g?GgX*xhrR>|_ofO?`!_+>Dt`akazsGxcxM zT0KExEqjQ;fA!&efV4My2;^GGc4K#{#vll+u4%HMR~=q*PG06crly7f=DjjMDtnz; zAf>0&TQ-RdNA+{`+=1O`YgJ4Gg@@wzc6)a|wr$Nk&2C}aN{r3%mIO`SFYQr5ilMU; zWQDEcIiZ*Yc3hZe5Gb$iKa=KR7jW#-7qQ|IKMj-&MaWSZAb~3zz03A#BPHdWz0g(y zbYRXN3DSlKWF#jrSn#;gL@Ov>mrY>Z@%B@re*g`(^D zb4PclnVnkivgD;?)e1`VU-KLmdA?bpZcJjXy78;0q-YF|wX8+@L`gaN4{1C1`mH#$ z0p)8mKAD)A7(S4nN@++@Nqs5I0L$pK%SrYA@br=fq6pt?OuWIDN_C;X8NTyFLm_jftzdbR?{rO!*i=}G7^P9foKK|z&n|9Lgd?38WelDs}ptSF4VoOU)DbTGX6u%53 zY#%P8a!4jcFI<};JHty)Lcw;o1|l|KCU(@qK0#$UEj1NdbysLmXrz|=PH(y>S;rBj z-9o)uL#!5t+|u`(IHq`&3-uN}L*dpEzOO>5DyR|__gVVXca%jhN&qF)IlS6)r>`F5 zB(Vv*k2k{7;{+X)V-5`tUq|P4;Ju4VEkFgoPe8r|PFcb0^hB>y5eQIv{QCH#2P0*48FAhQV~g^1k&p?4mtM-NzVl0 zWwJlOqt`eh+aY@}RlWS6Z?y=k^EI>-FU1W!7`bOh9*pE}YnDNH2(5_BB{BwGrjk%p z)$OL8aZWjw0koReBwgQM1;!E(1ymuO$Jpa;H$(*6sEAIGL>KU90- z+RE_R804Rg#Iu=vS0G88Ky22gf&=lS@06SKL@I7+0oH@2yfWrGmP!&1^aU-x&Q3g~ zN7S=ZW1ru-^bwi}J33+6ntSI}XLe6qI-k;$BEO3}slr$EMtzPi9c`^;Ko8uQ@Wy#b zgCU}n9a2g(HhMiop2wZ8&$m!ILB;y$n+W50C2*ezI&|KxS)kA}O0L1_d{$a!Mm&{E zn%EQ-;Bk%eTG(np5qEA|j_e7K>}!<%;ViRjpS<0jNk89omt#0J!dLV7MSO3|N1!^c z=3{qrz6i^tLoc9*#^E#%0YA^eLi;usAXIQnW_9lX&EWZwJD~?7{B9Na0o0{}uk8Bj zT;ts0wZPWg)B;AO!LFrh%=y!N7Kc}w;28Km@ujEQQ^c^c?mdm<6c+a)a~71e9>Uoq zg4J}dYo-@VOVR!*Z;rYrMwgxp>62^pYLP2x1cmM=7hHhpmRL?}M|SRK)`VUbe2_$0sSJ%j*Sek`a(Ud_+no zdKZE^oOKx^LFjm7&3;1<=(wH^&SOV47PNAjuZ`e0BF`XmGuwAb266dvoGZYiU5)gj zv)NljN-uWu1raH&2IC<#&LLcqChqxY{B+iiw)=Xgd=LBFWisqSb|--)ZRU4u090og$FCr9PvN#Q^^1)3|d zWY*sE?9?O7X}LlBwg_5vaUPRc>W((2j$S#Q$a3SBSoE#2uBVSa6+f{g9texS4LHI2 zx16&CAs%zDgxdTR)x~kravx7g=$a+IpH%}Q$)m1@TPLnazQF{NN!5`Hc~%0ub;lFj+3V<(^pXL)^OBxst;Wu-B6s6Q}z7n+`!yNv3HLFehnqrc+U9U6NeLP zuN4{EDufv7ZB$PQbvfY!L{!L|Y-77^X;-{}odO_3Im%%-)JkD?Rv6urrCN>}mI|-- z>2__;=VbkbM6|Qqq#W-4-%<2^_z!w;j;W%&<~a#n8P>07JYu0P{0_Cf%X-44FIoVy?EJbg9UvHo2B5n;3`>w@C%z0#-1$-qQKZr zoj3Bjq_o1h`$~xT?m-f9W8PNx@OX^5emN$sROPcdN4=#lNg3j)R>;1YT*dXiT~DNT zkneKM?j|5jOr_O~+04UXv!&tD%g_NL6Gd<5i&3z(YnMA@F;P9qg)!KF!rItUeEn7# zIdmV8pjwJu%DwU#$R^ybTW|nLk!&aDEWiSBaGI3F)J3r3pEDulS=fU%T*fEN@q63q zU>|s5@}b4^W`N9|42~g*{{(cb5IJh3|R@f*qu)iS)aK93YKG&G_AO6x|B$tSFFvsS;h=!N>?`}RZU zYB6~WAIk{>ieCS9aSVCQMws+vhZlBH>IxqLls$N*JIqK_V2~CN9mea&K&pOVo=1HTZd#2~*%e7MmVU(Bw*V2SPP*s zu7f(NpRRsuXV0!Lxu1Lt)5Q4hJ$o)ljpM0aANIlbN7cA^me!h+5)&r_xu+(eWij5@ zQqc?)!pw+R9|G0x3N7E8d>o_i;rDpFcVdnYN!of&qO$146~KH8IxyY5w>(+z1x^5E z_?7I^#WU^tX&j|)V(}>4XBAb=T_}{)4ebMFBp)sm&k^nBH7tsevh?E*u;HKsgfLgw zQ?46&snNf>Yhq4$9bN1h%aEn1AH2$eo)U?l66%;Zj46AXM4a}mf4u1$_IRn+zq|ur zf{pi)&8FY>OQ9F{D#Q?pBi&D3j=xF}33n|2?50;T>3D-X>qX4VH&O3(@nhmp%U){% zpBrF`+Nqq+;5{X=Kq4g-vj7p<069%BURo~sGE;-3mvYsM$3yz0g;Ds|V`s_qDQiFV zohRcmEcX-V1&~KISabbOJiIIx0)bphr`QoE2M2t1+ubyH$hB+7hAv;;nV(KbRX?ja zdpGGOU#Lsuu)gw$ zlY70(w^LM!=1K)1&a(H2*$&hZPEIx03!S`H+yESXTpQxPN_g$PXcxRXC$h!&IITNl zq&w~8S&Rbj&LDtIe{2tux#hK5Fk zmzQ@(`ffl;rnMAbLbNw8NJw(}MR*;q>gSisXXtnPBRZN}xuf?=x{m2kSfBmS^)&5f zCeVL6vrH|Bn(7Z-L#wt3B$%RCiO|n?-+6u0LZr`%)Trj!dbDd;0>JMTiZDx1=} zYTi+J-R<7{V9l!daI6gcc?ex3ejrfX-3oiVS8@`N@EnJ=;wGFVJo(xmKfx@}2o)K? zLubE?$BC?KM-ZTboC)_PMc3BWj-3fIe9hP8cQg?OhyzMeX`?v|ZYoD}J-~@bLzM zQDJgFM*q3x^5HBf`UrG%5Rl(pBh=1qh~zdkF&Gic5Jr(l)g#|eweRPmxwXsc;4{IX zj{wEP#y14`TfM!-o(-QYNAqXJttCYVD3CAX)cjyNR2&3C!UyU z{8UT^$X>4fgD9S2+s%VfL#^T(*22!0*S`q#D%U?t?>V#&#^&39 zfs*8`UZYYuN2zWZ+LDnXLE*zN%MX;YPw{;x)=-u9854Gj`FEq_o}Czcen!6p%!DQW`$8dZlBAw!VGg=)1sM*(I~e zm2TAGORCUVE1-cN32P2F$4O&$`S5~)XX0&+ac(tou{2y z2M{<#z@yrD_bSGD?Br^Wb}n01rOs`~sDsFDNFNXPls+puxtE*3PQZK7{?ov&k}<3F zOALNM+lpE`c>TeSbc9IV6&Ws=i^7%O9*f((b^U>L6Oj!r>YYvryuv+WCG8%aH3ItY z3y>WUFEripi!rmb>B!QzT8N3ooh}QkN6L?V_^jx(k7F#n` zhJ*tWy@wowdmo3m+4p{GKj9puS4lDp^hjS@gi@?JRK8VNe9qv1XiplDSV#fdgZAT6 zM|j0@!;10AMqU}|o=`EM{P^x!G2I&%Kv6fi<6L|K=2Tp~4#(A2i{aWa0T2SkQ2sLr z4x+A?=iF3RU9zt3nCp4}=B+z!^@@xt&QXI7k;DY|geyfHXm`P*Az2ef)R1|)&c`B& zYbPvOPT)=_RJkS!mbiX`7dF1P!*y#S&7PsZqyD*uZ>?!EXTL*p8>P!9ea-}*!}#rlJWTT^J|u2g`ZY6g@<8IIjW z=#{Ybvnx?1?7jZ3IEgElmflM?zm;<4ML$evce!XSxs@alF%Po7k(U8@*A6RyZklh? zGrhGBmTQA^&(cans>YCQZ&mrJ(_T5&Qb*gz+U+KX^B(!NFs>qH*k2bM0X* z$_Y(ogNH^>ki<+(iAm~uu9gJa+We);>FMfvGPrI|5AY;x>TxAB&YT|AG@A<%M~k&D z<1wwSrSF$%VQfH4K5QTHX~rlxGKTFnvKrk3?T{v)GHI2~?$^x@*Jl9g74*tO>(;fA zjCdAaf%AUx!XeB)izJ`jTV?#n0$WdnRj!n3wY*jHQHZjb)VX)?WP$~ffI!<#m-!T_ zrHIJ!s}F9y=wKT(a?>S*!9+#)_-^Gvgk9*!tfxGl7gOw~l}kQc0d)6d`V)>;Rk1(< z2fgKw)adP~mQ&PBj$sMDe&szRZou4v<%!0%B9qeiRg<+yA>4`%$^I2^;GX`?U9t`WPNK2V>?LjL8QYZceR!s|OMQfKfe zb+5??drR;3^Co9zeXSrD6F~bkQ99UY{HaNGe=TX!+k1>;jFtJMQWbnjtFXBVuY>Gf zR3fy``1!6wv<|e{7r)H2c427Iy4lJhX4Uo3v()2h-25|H_vSL+m673S)3jg;cCCdm zfsSFM5=Ai)-|We(J6g&Lq!iZ)yFFRM+X`e`1^hX>(j+B)~xey*!FnLK<1ZPH`A*lEAIoth}*2^mV7RUh+FgOmR*2KP1C7e@H$*c0WfK*Ll3{zPlIh z=PEtaoRxM(y~>sr6V`z_#b2-}*9<^{ACpZu;(&K8=v4 z6#J@|*2(^MZS)GQmKr5Ru(!mqQ5`*!rUCqk3?x z&t;s6i+jmim~!W6TV4xlhPg#~Rt(I)g8*gzBM)>1X|0das;-j58dk zC+42XxK2FG#pdQnbI7MMNk{oRr{mqC-yUc*Y1StWzQQUOnc1p=Gt?yg1W!tOfL8DB z4tCxC$Nmi5`I>xPhsh7pD<${uYcQeLMc^SGMdFb+@U`ytWI4`$3wN*8Bix3)Vgffq z7<%gY2B^*wiittuf+@Jw#`QSwsuIe??jC`73YI|c)Q`NV`25)ZwY_epb|j*$pdatx*_(+t= zl6J=|#mKAZ+ggoMC5dk)MYUJdjYs>v;j?UWuzJ0_(Izws@A=TV(vN0k z8r`9mD6G(SAt;&S2s)M_W5I9k@@88UjL zl#Kg-NX7SdZ+dh6egqy_S!?-YCW>HAnHjr-EKb38gTax>%@lUc4cD(4I98B9nzLj19ptT^;0!}P<7P%nJ`%*_vephCvl#?kg2wvzqfCG{FFsQv5Gg2!!wsS z5f|os$L=$noU#+gn>24Ut1z5Ozx$ZBv-D_UP3g+s?vEoYIw|%7go?>8B@e;HG@ePH zIxBgrjK9@@t1jU7di}cs!hNVScLn=d8S$I;AEK>vu+ri(%%gRxN;=Ljb3Ha<$U@mf zWOs0-XTlMNx8bP4#N%SZ7OGKPdSRq|Bcg@=p>atS!Z{66)StU@-BR5dOsnhKh*9vi zS^2RUkLW>@=o44lIc+NXCT$R&Fvkn%oI9tXV` z`$9i0_LB`eVN@>-eb>4>IkBy{)3k+g8KvvzXV|&B%f_W@jpxdfPQ9(~ZotoY?2Xnv zlW+MXZdf8LMlL#kv{EKglW0X08H;SSazvV&p6jpyn&;DO)w-4zVt*u?c9^L9 zc!pKBqEBT%MC{;$;L~=R@uYe!agp`5@7}yROITu3rDBkr`COggO$(GzU0Q68?wPXT z1FvY7`+9gwhcCawHDfo*ia6`ClzofD$ZT}KRh>%Y1606N0KleX%~!=8q|wu19o87) znd8(IUX~BwQ4ai*b#ugv+|`#XZ2c&C84&)F=**7bnN2g z7c8QF6S;VS8j$2w3eJmtDaTnvUSGL_e?ue7L&??WW0PMSX`(TUV91d>DW~bOr5U7T z!%~>^rPXv)vT_><_?BN^&_5k?o`f*jq&p5D#Ryh>XC?vgvl zh37nT`Esg>N(*vq+ypOQ42xc4y2Pe`l8ouShLH}Vya?f$NYaECn!5d!b;IYwLsEyd zyqJ3#;tN!{MQ)7-2@xU}DCJ)gV3+Y_5j0DAlu48+xDndhgR5WMxU?XlehQ2*l|i3btb- z)f%};36zVi$@D4>Nvl#Kq-2MK`{;IS`0Q_?g%xSY;au<{KVo#%i(}ueIph_y&mK*lKBRG><%;ZX5*fS>#KEd}gyyU% zPM*QLcclzCL(eYKj0&@R+DUolduWIjZI`2n;7EJaT?Bpn0=Lx+X<5YIrlWCM^ zj#$Z5!83tkREL3p!RN%Y_P|Dl-QFq}-s0Ynq{N7*FdbL_wdLc+?%l4)dd>ottK{Z@ zc1J8$_raM|u@|_i08c09c~_xHUswkpr+B7@W^~{xcN%b^()|YZNsP9>;7ni71a~q+(@X)olB4&}%(a!w5e@yG~R^THeW-4`yP0-hn|9xF_YO^}C8K?%+MrM~JMV7di}=XvNQ&Gz|KPl>4ae zw+$6Hj5^r0Vn$da+P$kywka0zrrA4Wz`z_AJ)zCbdWY@m=q-nDBgQk?+eyN>ZjIOghc@S! zyEhv$n#58Ecy)Z)T|8w=6z8|)`c_>Cgu#IEUpW5Rz=P2)?>d;FNf4ODo0Up3I!*|2p<4Dhu8xLkc+M!Lly(`1}8-(b&h&S*ZwyWTNU#4${C- zp)?XMV;-14xGrjT7JRtaF#?he^1pT{F`ka(xlQdF|I>`FnS$H@bb?`05%70IyQW>A}MzHrQ?64Ai z+(^Fw35Gthju|L%>DxK1r|ApBm__3(Sn4bl0(s4keK z8)-;+Vo%%aOy@|YT4DSD^BZmFJO*`dewIw@PKUDq7yHvem9XWQPF$*trO@549J7$W zYwc))6nSd7L{383iKds)X~$F|^E~ARvD=VgHPh>cD|tjR(u{<)@?7L z)6U3TEw~p`y6fz|#}yg?(H+7YIvG3}EEQIdyFALVcEkI+U6(K!oKxi5uUR^QK36BE zC;$3;>9yf9{i9|(_mlEUYIQ57ue5`Ft?Ia(TJib4xVJ!RB5@43E|u>gKew@Z*-raC zk!eBB-g#Jvzk)|9$i`VK?IZ=ZkylWM^-r-7(aZdwPpEqgcSe&pYO$xoHTIVL6Jnb-@C(R`kV>Lh!!1&SuH(Q`z zc$<_2^aLuQ&a4i0+m|E?IZVcx!3X>HX4MU)C1{r~V%Z!Bcrg@sY9X zC^QbH3Fp73V(V16ONCO2>EYoahBEW%hY6Q$0hhclEt|K0wwAec8}6N+%gm$7K5v!F zMj$2uWW6u>`h}=T6JN2OyEPBmH}Io!eCJEhifdo!SkNhY z@_F&_t1BR@$GzoMX8=7 z9|eY|jTlG{q^50H?SQPU^gPmKr_DogHxm`v3i+uP_F89w)KLkT{#so73~-qj#o9;8 zIZeehK=V5u|90B_`XSx^p86%(5>8(5Q>ntBjh)jGl-2zVOOCCq1X%)Rvk>~cAxbW~ zUme8G%a3xrW5I>AQsBZyo2&KP({-cMj+kW?7_lc*%wP|hec)U%D16X|sC}l^Y1*## z1LqMMmsT`s8+2vc(9)a0xP+pfaYu&f@Ix@_wJ#q{t#o&=gI-JXnPJCNdv z;nHvF$&K_zlYiafJT1X}*ntPculfd^0Ef_wa85nFXS+S zkSJChg>IaX@}qrR_{dWBpEefF{%a^j6*>G1j@L6#kdtpa_#FKY{5#$mUN8ANj0!H2 zn4eaA;l_+YH>v!`U|Rs~9w1XGSJ8R2U#d`;n^Zbo@afi-Xy|dNu2s;W2q4n2 zgk0GLw@QV|3C^wig(`~W)96R6ohTq!L#V!khdEsLeL*Xo?l51q|1=jFj|QG;a(xm_ z1R>J<6Z^n>M%5r#ln*ooQ(lsX^RAn5hVk|LpO^yAq967wjw0S3mue!2Y^^S0d&wMV z#M@8$fsxnY?;%u8mQ^52V6BkX!@n^Ql|nN1uApDyl~C_`F%(-Tn)K>;nX*FJ>+?E% z?igyPc{lhC(ETIiadk0x$tQP-=9_f;;=pR7j-42xi!*(%?Q(DOrNO*-T9J zhSyd8S0IE@zya?=_oEGaivRbV^jKvm`$!AV1|Lywvu5S)3O66#1fk)~E7 z;P*|o3vr+V10GC=)KFOjNCpA3fWf?nJ~f#5d>}p}S><*bldc3zT~{E^&Ky>W3Y&*F z(?mq)t8gv$ctZlI2qusvEt_te55n$LFIVvu^7kw^kYC`-_*c&m*W);zLx5p7$8Ej; z;0h$LOFmx|$+)93}iIYJWs4LUdFKI#?irO!1QOQ*`smMj&v#AQoqz2#7MJmlRHFfZeU z_%gPPbs!RaxssNO7!GQ(O9&@mQ2+@oe+HI%^&^S;Z`q+ zlxm^FA#d}_@E%~hfi_!2P5#ZcvgciA7YJ=`@PN1L*GU<+TKrPQZB!^g8Jp4kyjpdCpX2_Y`2;bYeo{>`n(kP`N|^Y^!)z_M>|_9@*+~y= zM-=|9T7W7xHGh6QllXpc>X+0GNtRClbYpZf5KXTFsccmO^WMzqNEszKXRP((Yg3zzq=tE?zDUm$dZH(26Qi3ouC6e|QY zhWsVU-TAyD2Be;4n5HN5*O~bmpmbmwUxUTFm$j$If2p^VT{8fsdX=vb#i?d&oUv)4FM8QZf$a&fQ$_(xkA3EL}I>0(6tK*T(IDr$IRM7_9 z>f#E^HJEN`Mk6co-yP1;Nt6O5JEqD+>ET&-f;QuXWsVUqNj7Os1L> zf+6TAg{cqRs(L2orr42)RJ|IqY3PhiOj*95R3vME><;6mN1n!04oLqXO?IokiSl5$H=!P;yj{% zQV84F_|lRcu}}R9?HlAbx)0WPNMXSFU}oOU;m8c$<7F!;z~OQZ`PWB=G;i5u*f<9< zBPGrsjYnp*L3Sb9eSob_J&aJe06EqjX``t%NzSFtiIR~+xYdr|EHpy~D*lohbGP&( zECM>BqD~sk@nA#kCDOEFyib)jxEilwVhKha5R2ZjgGI(`34LEqN^QJ|3^E1|csuWj z_jqi;ojFYtq}Z<}A^jv}`Ql*}(*1leLS}2EW~zekcMEsmgLKY5HWUz91nFJkFDq@Y zARn-=O@TdU;?@-tOZ~^`U4}poG3d#a`@#`{q1yeSESnK)O&Nwaf^)eeH}b4@A8$-I z@Dy-Su-bA&t~yk(`xEco@l*ka%+?qnXNRJ0RHdi@>lpsMG^%l?1BYDnPv z2tlky4C;Z?g;bU`D>mif-d|?^_q)+-kflH^&}mYq_y+{? zu@>dXP#aV&H1rPPNOm(+5g^&A<{}H=ZG#St%drQLNH-1Rgc;`t5`yO%-NzPD5{@$+ zEqE$0jyo>!f?RBzbM)m1*4yl&^T-cYZSS}b)CD%sq?Lhps&X0oqb28xtTPc%FBGv{ zgD+6OEO`?z$`y2T)2U%D1mxGUR`mceG##*EoQOb3Z#|2Qq6Ytci!hY&9jF!v6WH#+ zGyGpX%{MaGfT)BXNoi>TY496} z8SnbmpC9kznWP5i!q)wP3+L8M51seI9<1^{B{hN(GK!AYQeC^KEC|;(DveAsT{W4z29qf%L zB@ucp?)5?)%`xtj!z>b!hJ{g~`n{nI8KZ{nOTgACQRY%0I*PuZ_jq(=k~!HvjfzjN znji;aDHb1BN8bhuDWHuc{oBmy*`gS}Wuz1s)%2D4x#29`t+-d1-v8y~Zpx(>5rY_jkT!oGVcurnW&dw$gyzwK&8X*GD+YnSD4Duna7i$IE#3tnWka=aK>VYAYb##6E9SSw zmN!&-&+%56`^r3lj zv6Bf?OYM)9%z>medfP(18rv3uu7hh!Iu~F^y(2|%a1Wc{L51Z@_K@M@6pV{ z??K=B6jj>Nk<|mVN+}&K8WH;B02DW@D`Z^2D3n0R0oqEwl5Sh=WemTI-6xmLR(BU7 zt$vTF`0uAz1^WJpWk7rvAm%T6O%&uXVE3wcWb1oEuG;T9QaSb7IToF1ljmFa`|4d= z>$)<+pW&ik`0~!2@RKk$RL_NN=8H^5;-m!_fy_K^yt&qA&HuhR zBYNWyy~9jByHfvKtqWqRIS`mIyM1UF15u9Z#!*qp%aGF`h?8ArcV8;%A`pa2-gGb~ z!Q>&W>~02iQ(qS7sJk;1yPRBNsfh>}Rj@*=bBlr4Hs3#PG|y;-c39m{W&=wY*W0a5 zcY{ZPpdjk+lG1qVI*iN(r~)M-5o3orX4KNy6w;zDcGVC71%WG~TN5K_n>EAG45*aF z)t}1@=7%DZr-wyA{H?RbJ&6*n-Y8DXT$1R zd1RGc78(p-r;?lvLY}cu*e{@bXWqEQXaoB;hNpYH@u1TMT5!Na{61y1V|viojf@&s z3d1hK(uFD2Y)7{T_L2=2G32`STrmWCY{OW+LKf6|ZSzBusG~|tPFHzjsgluG{}OwG z#$vNu5o5nm{tTq^6%_V?k-Ul(14o zEz31&3F^68Q-~UNq8BEB;~S)%ikyfXE%`k4F+?81E|)6g{&pM{00kuC^$6j4rP!Mp z-K?Rt1>=L5b(S>~*wClnRSeDyUm6YcAZgsl@8 zpI01(T&BB2K=`)9cQ;@xOx$w5ikEg&3HcbI?**{Qh<~t}3Ni}lerf+5#);_<=kCNH z|3RM`uHv0k`&LaxGg!C|4#7^(o)y4L^wNkPg#xbynhHQ)_|KGdf*XI(+Z%Jr!6TXo z3Ao%^a|>rN>%ZmeNMYrRK!55}RbDpmqyL>R-jy0c2^Ev+Q5;U=diU!U_nB~}2T6&t z5Wd&|=vNH&^kyon<=pftuo?|nG3TnUkm-52c=sK$fvDaOoh89j9O3%`633WqWi2UB zLizUu@t{?=3HOnt1}~shIiJPi&idjVk>-pZ4THm)UB!eJ$Go+HSj0p>@;CN4B_GD1 zXB6moM5zZrHQ*yKl$}Sl=NVrP50(Rn&;Ay?O^I|Xkj&nREZ4U8dBp~EYl8c^6Xx6r zYNVeDHz-O+F2-S@p58M@qQZ(K7fGkhnYLRVbALiP;ErE0LDCs~_uN@r_y#!96mW)Z zkSqW%w+|pnHV`Z)A8At{wTOon=j5&fRIXAOu2uWu&^L}?nqxHwb`lC#`#Had$feNn z(U0%Nd}Z+@|K0oD@E&?LN|&K}P~rD)6e!~-?qO)5NHd&%x+{X>N^|Ki^{Ut`0mpN^ zl``g9DpS;u^1PL*?0p>fQw=(aK%wvzY=iVE;$Aq^87-HaAA84GdXThuy|J%x#QaKY zx&#`Hv_##!sWf*J8JiPHIH#S6-Hfrhv)2=wkcey_NC_eJ0p?;lr$z#&LbbyfOU(89Vj^9H}n;>Y;qi}gxfaH zjKINAiD&KQYzEpj2RG`;-&4ZcXbz8+`gODaid`UxTBEFgOi#QqXSTUn{R{TWoo~JD z(UkvpH8ryJg_iTlPn<#B|KEFcbINx0--uiXy_HrY#H74&L z$>13yt2T>d65i7QP*c5f8ofg@ff5{_gB6BfiE!9vES&gz6(=b8A5y$t=HB-h;$^=9 zg9QDYCl81`i?&7+Vnr5Ulo00$zsLjw@QkqI#RB~4Xb;m=Fg8jZ{Wri*ne4$+AOe{k z4>t_iDK%b{w^Eo1>mXX_8O)&1mD zCFm{`F@V{dj-L+2lCC8c?Z5E23t!RPSxMqgrGk|s`;%HAS!8_2jUeIE+Ry4C0vGC0vn@%i0moM~396gYuOo7@NJ z5f59ql3gRzEXy@ABHf%WxyHw)i=1*|A|ql7R||^iXecvW8s?uf`YP?<)ZrJt;A4*6 zBV)3&YkcW5Wy40t9+$tU*D#(H)_EE{U`VxsG!u~}<#uMr`F^JHx;&Ld_<^QHh>ZEn zDn5U*u_@7PBVlfBg+3buRh`9yTDy4A1yA$D$0-iYQFfcHE+?F9>YE`>ZS0n1<<=j# z)=3&)mFh=cY6(LJBg{jiIR*ge_g&`Ejw|u^HD28dsN;-&`wkPTj{is#7=ri=2>)8A zpt?(WVZvb5#rF}9{OLriS*8=vZn&jrPZ(MZTL(`>b_hVSEZ^}r?VAoGb=L`nCA=Du zsvclR0-lMaT5`pOC|uBpC}=UWz^U%>FD&@O8VFoqkB&_`F>=a59@m)1^bdc((hZ<0 zK{00t8zC5`s*VniR@Rja}|2H=Hi6d4|M>=X(=T`ZS0 ztnN^S$PvR3MJ(FUdozVRrqddQU{B8)9X%9;G9bn4o0*Y0h^eOQEJ_)1*D;k7bPmUi zJ1@Swb4!Uztr8_Tv2JvKSG(sA8ZnM=(JZ&f82{#f$nvH{q;?;Ih*zjZ+&;hSwP1ZV zyksK)472BVxAL=?%k_UN`);s9-*h3VSnhKFtI=)x@|0NAuq|?_OzOQP+0&CI1onos zYgH#Ds6eiaYIyx-94`0GWSXHka*)Wc;z*M7i4CAC$x8`J{;#(MPYCY96!W)IdQ;nT z-KuaQ(>sPVyh$6Q`G*pOSEn!?T|NToMQDW`^&7plxHj+o+|GMi*cHz}rR_DT}AcW6voR zc=M{%hBQ&lJz}L`A;AE$TR;Z|FqUfH0MPe6&>Q4|>3TSO*Lr0gaX$lF`CiA&%nCFC zW}Y4lqX^6^cuaZ{3nhyDj+@Xj>#g4j1aBA3HQL>*56Yc~hBr0-m^oiABQ#M&jSy1f zTJVRg^B?TZZyCp1yBRJF;v3who9moF`NDfj_10bHNDG1pvtmXqxQ4NF zis2fEU&)kAuRuZ%tLESQKYV`k_#Xw7M>XSEvfdj#oU=jUZn=IID*jonlrHS{%=Mr- z&y)Y%n8#3kDi>tz8|vY(B?dMC6@;dJE78(+Q=7|Ksn(HEwY&cDx9*Qx`!Zv$e1?Ho zK$5}dd@A-Z&}6BA0FhO*dJZU;`bQyCo28^MtS)RrwR2pfOw^KqXDai7gV>S^#X*d+ z&^#rv+2`6$ugxNd9S;or&AD^mgOOV91(rQ2IvBJZWoGO7EIyC60NBnaTB`Hak{ti7 zffax5C206y>K^5-+8yoj0dr5k8-%+DIc5SB~Rsp=X+L8TsO4u{w>< z-H9^9TS~uoL^<2+q6PNvFeFCaW9yd^NQL{`V1(jGp$r+|90o@W4E^dnVpW0)*&=MIdd-+eU{WY0$wXnJk*T=1EIPI5a$jVZ|cB zDDRadoPd1HLz|mpJ8jp1{TtX`P*AXR8%N52x_I3cuZhw8m5L@iFM0nfEWz3v+nyyV zm7E&pf^WE}E$SoET?(^$EQQzPKiSm_!)1a2ANs!345-PZfBG#>9lYnM4VVlkn%18= z*>2d6u9>_F#xSs*#|*>j)KH{A(yMMvZ>--BugV)Wl*wb}^uI@bmfCvH{>F*2eolNw zWQA%3c}{F5*9zu*SNPBkfM{GR@ujKwyN&sB9@O_%2~{x_#cVIta(60z*|`?CTy0Px z@-^q$t%n;d-<-P}aTMlTW-jUaxn+effL+o8EA;0nZlm5_y8Ss;=Ou;BT-?dVE+ytJHCjq@K6HP$(e@}y)6&sJ zY}Jjs%>*eg&A!MfK>9|qkGO5@APj#Szl;?eHEg}DUMqTJ1F>btMmYnf1*ya@RaLU97f`wBSiE-?Ry78 zA98HcK=-a=bv~(c;(bXhd=j4lkj?H%LEr~^+>v6H)T%)^?U1}bn^^~00tBE$0#oF2 z14bI$v@Zb$c_1rE^KyKS`}47jsE z{y)opp}rg`*s*u5CLLTKmQs@oURyfdr{IB}qhT6$W{oY^70o}DlSvA3I{I2WR z2bQd<_i@HF?_v|FHAScA*=oZ{E~eFOlG-l)T)1|+*Mq)^*YMqEM&Fjw#Te zGF^Tl^`Fx3b`$v@y(n>hleQ1I7Y+;6=557DRtqKW3~MfGIln;ntnUI340=7^+tkA4 zQp$Vfb`L7kv-6lTxmDOZ?mF96d>b9^U4FBEACx6S^gD!TXLj_Zig|jnhlLthy;;n* zS*%u0qVcOqHl;01FRmGr)BE#a_yaV#)#{g75k$6b>>E_?Qf0)ay(C%d8cyOWie{va>s+Vf0*jka)F<)e*QAyQ4?i1vbtHh@Cf99R^ zy!ZC9XwsG8aXa)y8c~&))9Lr7(&^bQbx6#$`&<*P*E`4DWRl{Nh^}mU(#(vK7V%cL zM(%n!FKF2XRLDntS5%uQR531>@}(a!v6)HLwDH0wqQs^*$TEve&ClCVKt!6VA2^_$bf+z45PR$yFq6?qLdQ`>KA52V2()3lBb9rk*$PamY z11s0)oOF&TV(E=4hy-7C9ARd+0~^0@MjfA4b1$r_=FW{p^M4 zWdu_1yQJ8vHm#$a43I-vzprc3!-`k&-5+OsII^{-i%j56scsj1)&GD+c@M^&$`J!NsRQ9=*tqeBI;ZI$A|)p} zdhzuo+5228Sm@{tLF}%(GaD!`J8BPC`9a?thrfc6yRef^SXTH+ryH9bN*T1s2f2g=h%n zHAKzhC^R^R37k`U%_>>$t!J{BeKvN-2R9f`72zMprHz&gd@t9p2{zF{KY^YdDn;wX zqXFzy31VuP>W&j;%WP1)b9PpxVRSI^f9o1gz@7rw?-JX+3-K|82@Cb$Lj^c*xaVJr41Ye z_tRvAybJA?2YL;a-Jt+z5p*DAvKj5((?WS_#UH8-R6xLicj$@K9k(DuMx;0VF(Kr{Q~)v>3b zPh42dpN5Xd0A$yuW@HvW#a4AqRNXojcsySly34%dOII zdYvN6nGOnFyw+Gl=sSS5v`3pQCHm0sV`Fo^x4T`k!Vvveevsi{W;YMPrB?^*GOi3u znxWpl_tDSNU31!+wVL=3O`?KU9w|Vr{+~oAg51@29^&V_sG5_e7NNYRYwzZF0q$;t zUP{N$-ZP%xL0Wx#ZP|G`R>1rLw{lZq3uw%zCY9v3Y3Hk8SDwsM+$KsYI*3uihLS zmYKnnqgih;_Zv}&ZbW=x!@ueajPtqDTZjJFUdqiT4pkmCh7H9$)llB788w0ZBVEXL z`qP)F(>6FG1O5XJWHv@EVnF@SNWArjQ4(O^mmoWQCw;ZMs&aR-DU1tg4+tYXyTrQQ7agUTU3;u4AVIO}B|nH1!o* zJ}+(@hBfc+jd$r7m_EwJ@-cX_ywSj{3>u>a);PiQt$D?XT`_gznX?&#Dy}AqD~dRp zwd2ZRk_iNP+Pk=*-(z=dKlk(w+S5LJdlACE(!vyu#Fjd)zI^+6VW7!0%@xQIr>?fk z2Ggug@Dx0lykl7>ZM`)egD4RuJ$#keb?TF)1c%8*H(LnMI+4THu4E(@u1!hnydjl= z4cxIaeIfO>f^gK#cz<_4xxkey)|VKB#!#&@XT-)qW|SC;t#ieeRGCx7#=@z?f`-OO zNK}G2sg^f*G2Ci;uNRFGaZ#XvpJpNy=pbGFcZ1;Qq^zykO0}yLc1sh_TeSa zDt-Bh&81^E`fJR`EC8|Yxbej0Uulth+ON=nnK_?mc#VFpYbzU2}lyo^Et_BM||&f3}4S*H{dWJI@rAnNl_srE`Uz` zg1FT2XRlf8S!WAytJ2U2ivivk`@@Ra48pPa^c~IB+>~p3pQondL3GQrU<+pBMk{3KrBwh;pP0?jCV3BCP0r0E%y!A!Tx!pe`6&xr4;l$x0t?B_ z-$3bTOr@$XYD9MC)P~6JLZIA z(j@&)s91B=!z>o&*ju-%WUF>orL|4V^QRv= zpEC1Dm!Lf0*VA1G8RN<)!9lTGM_e`5VmnAxwN4rQumoC*={*6c=pdFpRj%@;^|W;lv${I=Y)dpXwCyU=g3^*dAOm1OMZ}PK>f{E=9FZn9X)PD`Kr<* zpQ~;wgW!zK1*%VZd#(2MLMIoMQg9j2IF<25lce+La53I3%{g5l-nNdA`b0UVO_`gl zS#0#5uOG2TJJ2c&{cq}LyX`6Yvj!xQ_5cV4lH(w1V^IlVph9{I$=e_4U>zw%dyuQ;j|#9z;^(7?)^rWghqPT7!KmHS#rf}P#;L@oZc4U zl_6NT+oQpe&o0J_z+2yBa-ZlGY(k_wkJ!3A5_e47LPKWBzK-!FzD)av(%!6?#j5qv z^HIQdNutuwY*2RPu#dW5sUm7(EX`%&_%mQ}Vv1j}FKTb#3RK(jizpo}oYhG!Xzaz3@zEYq0@c;q;~mz^uw@%Q&KXZGW$IBdEF4Vdw& z`R7C=^|t;pjvKt!`XQAe5>DikQH$y;-p2TzQG$HYT=r0vdOI}p={FUJZ_*Jr9wo}F zf3ND>=D+(^-W!N3v>JVxuU{CsM=P`QlJ|bR=#sugEj$DZdL_mnesTMCA|6#J+(KO6 z_VBSr4%|rZnhL386uJq%92a^UK);v|rdzX{uVZ_aKVsFJ^g(*P$FvlknA%sxh_^c@ z=fv=pBzzu=C&{{lczu=x#iEHV;D^PIslHjt_={6}NUoZen;NyaN!_}wsIC>gP4X&( zqOk_Co(kX;Gh4(!UhgfI(g`aNI{QWXL?1f)NqMCQLny0XBKzX zI6Z|OPrJW+2T$rVNzB@AN}@O$U1Ma0q?;%9kQV4C^M|Qxn+9_IPc7yH}v9G0(Do9@uwZ zR?<^?VV|r^iJjjf#~$M=M#5E;&dqhmYQ>zUz;&FYRYyA=^^|c{+?0PjEiLhb@15Yk z(IcyY`S@T0__Q3t4Sa7Q7W5Jw@G=)peKb0=w#7Y*7w>ZV;QMp=Hu-jA=>qlTnfrqL}9vuuaJ-fqksoj186JVjt;eNJuf0-ZCCwBU^{_d0$55Z2VM$uc8w>v z^g_Umf>~0BW1P6$t)zO^52?6pGAMTiG_Vb8R{l|NUVK{Mc9N*A$e>!HglnF~H==MQ zo=!cwyKau(aFW6trwzPyPsmQVH`r0M`qm<`9&uJyNVkH%360R4Agzm*80wkaA&GQ2 z7PI1(xHAwo5grlc|I6|C9G4(X@M>o|?UHxTN0ShA8@*giVs~myP25@8#&)kcC=P)&1b=)AT#3q1HG_08fr~|PJ5ohtXhQ3^#yMz ze>s3N8NVR4bIBiQW;n6Rlg~jxxKySdHB`y=b_h;Q7!Cwt5WdaUEgq(*w3@;nu=jC# ztngo~xrpQqp4^WOO*4tv0T|I)F?VrTV}wFkZya#pL8Nr}3EL!I?FDv6ro-3LxxYws zjra_mN;I}gD-6H1aTiKXq$rIz-;!K1oW>RdLdb&&uaIwh2m1m_oc0`+hD&M$0gIi4 z5JkN-#SN5mq;yD`%~+T6?SBcB8EtYJ00Z2hR=QWaW%X@=5+ zOD9qYZX=HcMdsdQtcrJu_Ik3K>yAqDlP`-4*H_w{P(f3L1nkXHUMFu&n%Oh(1{V(Sbx^IbB*kd8aX%UYB`N%*N* zh7{d(aI@0)ZCF9>k9hNNt6)$HI^U?!faCd`>07k7s7}>dk|DyLZe_v`S5(;>0}bB1 zzpyNm4<07X%GG^vgUVc*;7@|cd=ReM8))Z24$s8?u3%C3=>8G z$8$vf0j$KXC4K?5^TOjEMpO12Tq#xf2@URl+z}-Y}V<@uGZf#yB=S^fxztgiW1pfS_ z&*01ICntg6i*(Q4?khz2QzRXRAY8d_2f*}!?_8a3ie4g@v zfXnC%A*>^;A1d0JtRY@njknjHwr(iti&HE7^Fvu1~?XU|0Z3NcC%h9;F9Oa^778?@RD`D3s6tx z!LIx9e80*8q#-8VxCmZbyd4FkB+L`qbDaq1h3Zp$*LSWy`*oWgVubXN!7 zFcnOOQ9+sY#qx4sa(+KSnnd-mP3!yh_=&H&jfXu$;XyQ>c7vL(fJrk&WIaMR$yr`Y zl0Hqj`0-MH)-Wqpl1ve{=Rey+`E-rdVFb@@kpy|mx7f|iMnk?RIX?K49cg09G^2cl zWH`=bT*b5E5_9&|`TX`p-r%?*4#=x`H#WVtK7ins6#U*TPwDJ!x(0Mtt!$iu!_x!K z7mx1ut3O-0+66iZ7jXt&tAf|>_xG3MPQ>G{IV+G}Ojj-T0hx{auVw7+{W_W@%hRNk zXj?!3h(5Ck)jRUc2R9)IH zTBVaN;>A(faC_C2uHSCG-Cm77oWZ`aXffiz8bQJ1uoWZUp}Z({t4Y=6EfkkMl+FEl zd6qh9F9k1|!4y=zk*1UAwo%6lpj@U#6Sk1tZnuyLn75Smx(^q2IOHr1UiY^*e;Ut~B^^Eut?nJR5tDv+XcE7F|iO_o1EltJXnli6tOc%!KXs3|{@0EkSgwwWx z?=atXRkhGG{f#vYsai)tXY~j7j9e^Pw!wKBR+LbWscJzt^f`@lhrnO6UxB@Hr*RZR zd@vDkQL(yP;nMRs5BpfL38$J2rzYTnsI7lHomzFut$@0PTYP?Fh(_W5()O0D3&u}J zZRRR1A#A#T$^vS%^*fL`1@Y13FhV+sfeqe^VvzAfh=fMtItfZ6wdMrpO{lH+KN&s< zUp^lG{hheqyo{%wqKHak`9=39pI#8ORjzQaCo+tN#byYw@yMvhaXrNryFiA-WJnWv z?gz+JD~et4Sb@P)lmYl<|)YtMc_M5-;uhKvRKsdvgE+4J>5OD zb>;NBTGNbv-T9L&EJY_XUkl>l-iWZWM%eHM>3Z0Pm3oITDLIbedhWq!mmbrLs2zR* zZti)yoIbzl*Z!x%uVb1H7E-io`-E;5!I!z`+T9@kmnHNVuWY6sW&_60&cY52T0AcV zGSK(%K5z~FfS1ep=Xs;r)RCjvt)%cSR^!u zVLUcV%q!fQYR(?NddHS)rofKYTT6=R4EXWB57rJRRdpcJhdii{CmK-T+!DilNb^=A zyO5GuKDBt$4(tys3Y!^Dh8FT;sLSA^AN0T3tC@l%GxH31D?)F=B#fdtESQG%WZ3)N zM~Ou4x<6jd1b=&iN&LnQw*^JmfWMis4Arguom#cW9|?O+D@I8%<9zRapDmWRp-V1H znugJN1L&Hl5iuBy)vF67`ESReh-f?cL?xpPqBt|x8W8whg1&&gwWDNLMxJ>ZjaH|J z*0dxqc|Uqs!N~LmX+2M=ZRf*xSx_+8-EZ_u@UuYR)<-yl&Hp($K-_A1y0v;FezV1J z-Ug_2<*!0cjRJ{-1re}*ix#ZXP@6z0;25k~#45Y9QRChxi2SstNBx^A)|pCOtf8CV zVnM!tSPkLd9Sk%4YX|bemk|lxbNlPa`(Yv|sTQp%sQu(5rD)b+Hm^W9e!c;e-}Feq zND(LL<5@9-{F~;JIvbloqP{AgS&;Yh*6yGyc&*TD3VYm9rvZ2#hf2C~zSLoBVM3#bR@uuD>Jah~h#2e}gUW(L&OxD3f zG-jljF%qiqgAYDfuDQOu9M$?bX>oAV)cB#TP-a4_p~nx=zYbS$VLnu3T{(4px=;Ef z!;D|YbFtcmMgZS@>ARGb3QLsMjXxM{|pZN=M4#mZwk=cdH@Bl^g-61PTX`LB>)# zFP9OW=;BtQNWQ1;?lY|0uARHidj6KSFKKZZpc=(2QNp^sBd-PWTHx>A0=H@f%D*>c z*2z4B$kdY9o5mTZa;| zm$>JOeS{C|JLmASQI?R%i08Tz#-2qzfM?SF$O&(}@rKNqzgQ+tnk=us{-!BG7f(k_NA*xQXL0oM8&XFLfd_&ykfbl?I!B9`QVi96EGwn+GW$u!7a_Wg~W#X)*L*5%Q`|ymePYvFE!v%-;Ik0N6s~GSE z;W7Bo)M5P!gX)uw>oFuop{W8m0w(y_q(>uaxJc-Cfht8as_zPu<{?leS=M-O_(&0SQ zv5^=SHzw<_MJNt-MPp|13xg#oFAEI^?Z|H^XQ7uXyG{}Fk0+b+I;1`yPmXa-6n^{iN4}~cbBHK@c8?kaDq4=FzS?>g^5Kt#Hd;%`uGq!qbKI%b^mCC;Bv8aAC%|=e~#KoC_|NVnqteY3c|L-MT*g z-P4*B`uOL%AKOo#k1y|F{Ve$-i+6uf`kPK@cLm{xA4bZMZwJY{Z@p$rYQASA!yeqT#$G@j zJSL2`a784fKo9pajBgNFWN2AJD3sI6dzb(+AI}Y;gudQ8ES`OY^_o2dxd25fB+>Hr z_JqkU5VQZ%&L4mJmCTquPjf=fl4pDNNYSFxSD;+zXB1OcjQx2Y%k>)ybgi31`8?4s zeI3SmC&N9c6VEkb48}>Ugs0AH`=Z41F51Egr!2-Qo-)W_)W5tYDFWt4jL@DOc%$M=bR%Kb-u>h(a2A<0crb8%@WDD2@z$v$x8GS z_qnVV%5NS<lg!n4Uy=#~T0ISilEH6G3eMq`V4`u}UB*UBnMji7ixXCN8i|U~=*fkS>s*5k zA#*H3ENByzG3V>S!%P|2w`K!5{ge|de#VpZaldoSJA{C9Zdo^4%$NwmIvsdckW0#- zdNJG}@=8PsBoI0#xwGDQTe|gz=OX|cq(HwruN|zVI%K+@q(cvcO_t|V1Z{Ajn-RyWK>L1MwtXL^XX+RdjCI!?Zq|eV*T5~3Y zOnE+oq;yGGBxRwEIc85CFSp)&gB*99dK~q*`lfqQ428S{<(2t}As~dPB#i*vYsLa? zCu7bFHkNd(hm2dsKxkp*8DT7)kDGK1g{FwwyHqic(+6-b{qF3H-0#pC6lOMB?aLdw z^&Iw0wW_60zw?5Ff%!q8eu#b+`}^|#=Cwdx3;eBHfRqQt-~D#hX;Wq`Y&2)m2zmSY zdu?xIe}xql<-t4+`fraDa*vGfmCpW!Jm3t!9tZ9oEMySke?r(0E$2`=)_RAtaXw|( ziPN4$46>Mav-4qc9pz$;gy6`KIz@AhP*ndW9^3SIpyIG`^Ryo_ee=_q*4L?=FAPM(lgeq8364DFe@ULJBv$Mv7D< z(}d7CglXE;!YX2KAn#)TaT25-#!NEhamBJF@_etSB7zE4MuDKCgoa6Z-DpfZ(%zww z-aQcREl3vzz`NbZ8HOS_VTPyg@fl+%E3F$We<+=_4P|naQb-Dd{D%XfbnybV2k$A& z53kfd`|Oizek!~}ef##64?g%n>enYUI6C&*Z$I_uy)MTbbIc!_=+Lge`s%A@Xis;% z|Ni^-8zdD43u*=T;Gj)L{V+m$Jn@iBoH$V$Hf$)zw?9=bxw2b|w2J-TiS1}(_pTx< zAuoiC!YNrz%fJ|54tXdAGlKEy=rxdN7*U*IIvp&Ps&HQv=O6JI_?!e1Y;t-)%3=(a zS|?*kj^!dluIafYN@3sqy3Q5@IAY?GuLcaA)h46kop0^x-s$+K_pes|CJ*GdxDgcs zJ%>=TJ>6A~aA#~Tae}ub+zx?=!k|?eHMqH>Ns1fYXY4o#O0icUzs7YqwY0y}m}s=3 zEKW3pTb6iMDEJ{b<0TyZ$CCgA4wtK)8VA zE*;J@T}%iIHg%+-&26o#BYej06= zro6kQm7#D);XI~C7 z*~sB`tcUKw@>n8=H6mLe09yIuR3db%$Gkd&9sj1SfH-+QQSgjaSkF^NkKwX7ExjHi zC)c`1fPDyg3W1jTu@5Af*HVNYcms7mbR#6!In12rO_(rVKL6}f`FYIu^3i95tnEN9 zSW;e#dy0HNE-NI%Fic)RxemMq>EfKZ&J4_2R-W&Qm?=p5F80TeFvArmazb+6;`1EF z7^k(deLZ#}AdHqQ0!dgw+k^L1nIbj`DBYWHzL|D5E?l@!s#dM4Y;@Vd)PyqZyYIf@ zzx|PE%s4|qJMFa7(%$~q%!dzrTxYNMS#V36|Al47LEDUepI>r{xn$Yv;$~D9_J|-AX#La~y zY|K;oA9>WTL&w0Fjqzdb^zm|Y_Z!q{@x2WDdD+;HhtE1F`m~if?GGQJIk9x#>Vd6RN zwq`|np>lZh>qtFOK~CHNya zGx3sva0rAnpbM1Am=vF|)E^~;K4xK~eRwZ}D-4#jMFP(nIN~^QkZ#)B&;sdn zR-;H7kpLc<*wf|8jAOfb4winfpA3YNqbJA@Bfc|t@E4!FFV8;LC-MmCbAShdwz399lVpY5ADf&LIK@kYS`=o3Q6vb6j9iGqQ%-5TNY#{hYwI!EIF49Af{iO zEKMVc}2&O7hOC!c&G7hm30 zH<#^lR{PdAY#ai@b3=T2IwL@K9AY-jzKw~5B4^`P+dpYJL@>Z)cq~efEMz3+GOjhwixE40pa?c$_usMCftH=*Xtyu`|d6P7$7p|Iz38KAQAA z`Pzwsgk0nAOM1I(eTx}f!}J`xG()UX0@93R$ zOn|h9$BIYEh_hq4!#y#A@b8wNRhhc;mh0uHW7^3*|Gdx2g(5|HoW#Q0$pvuti19Ak z0hz@Ox0DZ5MTkD(x>PJ21Z1(iV1yZ#yg6sO70S=vOj{x3<1O*jCdjB^-Xr&F5JHk~ z*ET6xvZOI34;nORkLF&tZrxe#1^8U!NONChy@&ZXDW-Hw>cI;Sb z(V~SV55{x0r^kmMM&o%y<|ZjquDqOa#u;+UP2EztNXZWdqQ~3RLJ88O&`BYn^mk|9 zV{Bu9(C$i|GkF2zR2<&m@*sW8C)5)dzsR~6zEfm(X=1mK(UE~dA}lvFphz*U$Ne-) zZn@{#bZi8F1zerx^8jxfR^<|;+XDA#$#=gqXvRNg{<5f1f&9DW+74|~3ENGE09l}G zvj?J6Q-o{K0S*%m2`7AyK@M@Ry%8zsGeUx^2qqsZQgM8b?{A?|jCBk71;O8C9zqs? z7&(J!Yf1Vr4Sydfs@17nEV$b$|Ue4{%+2Tt=%5mO>tb>e2s00Ul=VrVuT8A($ z$mOMyx?keaccGs>Hzaa0W1HTKR|^?08?}&4(m`9WH-&p;ZU$#>Q}$F2JZr4u&bVgh zAQ}U`r0*T^?HAJT&3BX}s;zYG(n;1Dy@c=0b8LS4PHYpnm)t>isZefi|Td9UiuE<3_1esgfLV#1RVj z8oWo74qEL20|sd9*zDhR->g})EbR+M)ZfDZxOMAROUgTQ=1lVvaW9E^f%y#^Hp~>j zbjKW}=qK0Iv}x0Fzzcs@A@w50^D{krNui=8Wc}Ke(phQIFTebX6f-4rE^Jc^FVS&< zBgKy}~9A8nAi+i2U#VYyF4z6yCd~N zWX%2nc<$5BO0R#vEwg`J@#BCY)9Yp2^30dJk2$>Ih?5T8_h=Vzk``sJq%pwhK*e%{ zuxUwo6OH394im%rLV_|t1sq=If*XsVlRZR}CbB*l^B?Z)*pq{0CbUNRM0G)*XE0&i zn&aLn%KGW2pUT|XGo@kEL*$3=zEb`de|6Z$fKX5Oy7Pt zQhpr%jqHEGfl{Poc{%NrldWxhVKt#0MJ}kLm%-y&%8&_MYr=CK+v@j6m~k|$oYdIf z|BMxbK!CfB@$JSq1O;UrTSgi1axs9NP0`qVOeu&4xOq6qg02rvdOs;YizNO3cE3I{ zM}t~h9DaQd?7rJpBf?<8G&-KmLl}<~58$&N_V(MjK zl4t7fN>>Q~$St1Ctf@iHFvbsVWEK|B;BML8^)lWYD*JD}`=M0Yr=~2JGf}2Y94`+% z+QaI{Sf{S;7EfmcpqvoRu(6CGdH&WKrbtypJVhhH|Olh`&V8I zTza1jq3>_tP z>eP`7&ijWMOkJViyL(9-;e*V@8Xv;xQ}Pl9VJ(}*@an=Dk|y~xEiaeK9cA@8j{`xb z^F1RSa~{9*OuRoyM38&4+!IEd(1vatro7Ns(+-qv`0x=jY~)zkv~HQ)eSai_d48wR z=n8>{Lo|72WYCLbM-){05Jd{uJ48s1s-Zt96FaNNi1FRyyrR65*@l0vrHp2@k7dn} zMbYO`I(XQcHEWFg>3D_M1D)HGec1gV~;iVK#~mq_~Vb3tT)}UV#NxnT)DF5Q5tDV;+`IZRH>XkcZIz5>hspl zUAlCU)6Txo6p>^uQWRtQ6~nC`jK4K==S!x-9M_HgLAK19F8M1}m%{tilzfE?ONrtI zrCg1DrK~1B-k7hH?AWnGN@T5)tqM!rxTApV*s@vj6)z{(Ilf zYMXKSJ^gl{eB6;=o_bWx_7Dvq$heguY)B>)78znt5H@i$BUq=)B?W{Jfj+e`#L9r< zXgTljprkO5kj7#J5d~HS1Z!J_i2n#;oG6u9z)P!dnWyewIZL+bq}Y;`B}|UZTe4*5_N}sg+g8ca zbGTqR3=6LR$MB+Tl%1(>%Y*)}Xwf24q)1UISh$E3D_T_ZG!)TXL;Ni&1qv2X%Y*(_ zsEEv(F-`KT`Q^Y`_4U13a?;5sOSMX6E!%ZbRj%?CDU*XLJnZXbIu0Osh@b{h8@j^d z*X8C>bXr=o+{H|a&Jg7BP#*uo;>F}~HbweAjIrZgMsmXD7t>ez`#sKzen;Vc{Lu%c zRM`sBw8b$pam;Y(c3l^{)Gd?L#p_@UJ*prW)oE;z2%!a(&y_n@Fx-3SV~)PynMu|l zS0Yon4B~h)6tmDPWI2`sYifeI&dTnJlyCmNVXz^O8b3p(PyA6fu3sr7%T|$&9WRPg z6Xf*VM$o#PY*Wd1^DbxeV`Fkf$OM=)tWB<Ep{ps;rB`UjqV|K~gN<0^r)SpV~=UDyx5{})x?|Chd*8+dr7I=uI z=&f&NUAu7k+N!K?ul?(Ks|@Q1doyc>uN%p=*>gOypSYFUV|L7Ij}ecxJ&xn?{UQ1- zQbaty#|3qdJ+eGQF*?K*8H2d%`b12$$9_lNkC<9n-^UupeRzmaSR8ujJv3qJ9Of}@y8zKaRjXD_e*XDqfg(NKfxHTI@w3l9lap0u+|y&?%!TsVr=Q8cdp~aRT~}XwgPd^6 znI@Zu27r`-S`{gmYgWvhBTFYulZ;(ErDT;#vT51`Su<~eRA_Ue6s=HEw#=U`o0NEK ztCF=8sC|$W+V=oiJFuS=RGGKbp~})-x~zW6$+oFuC2Pe}Rj}5`&O*hc8mME#;OG?pVC8d1XQuaHR0X_w^LkkuvEJc;FJHIMC zlE09YEm>5`s)kTlwe2FR5am-76!m0b^rU)pB#SSQge}{n_D1nqwQjR2VOg?i^A^SJ zW@#W}mML{xH*Zh~W2S7`lqn-LUaE+eW&OG}_InXsotY?^D0rD0RiVq0V#SK7a;A!y zmH}nX@()~cbt=ag3oDDddz5_8r;Bx=|BQ%2`>!M(MJ=nt&gfTa=uRvLU)kUY+e4Z|#2IySg3 zgkbQlB(VqOL$QbUmT~ValvoStlW;s@Twv1-G3ZXD5GozCQxeMOn{v3xr7**>Vi%G# zKy2~p!2Yssa=qbT$YLK3otvMjN0BnpEGLqPJwG%Gdo{5dzUG2{~%*|Q&00)3*{dVt zV|H>)roakmcN9KkF!va;Cm7UUzp#I@ z|8w2aMZe0ex7{w+-f*k5KD=4#dT*ytR-m4=t35{>977-dk&ZCRWlidiBIZWU+~U04 z8;O$0zK2Z8hkY)TYb_t9wyCFq@qL){^XL5{t&Td}JU-7n^UNO2l^0%kL9V&x8iV2; zc;JD#-h1!8_sT;LJ!Hz%DW{xbl;w~_z`6&taP{id$^o!I%9ShkU*8Yhuci``&6qJm z>ej8B_IeEc$fGa@cI?>kzdkd(fHqmUY@Hn6y15zfYwUlZ+<42K(!PEB9Bt~%#h$B; zXUzHd6Is7;yHsdUPfG2(pUm&uTRTx@>2{~ej@g=wq5bPg z{sq%yt&+)QZrmni8Z?p;HETgjD;)@fL!^lwQBu%3h0Wl&r0fEcpntSjD_X!sB-coHrKwZXVh26PrWMX3c0#yOMl zD1-}x2LUp15xfkxq!+j~$**7L}egkBxeTAf6ys#7?z-?9_?0Qv=_2=s@0~*KL;_c$8Gp z+Nru4B1!Ev#_z z+|}E)V!R(L!%i*yF8#Y(f5Xeh`RIG}H^+TC!6K!ss3}LqiWQYCbzcTmjwz7H2)`YOa%GtgZTvhy(>*|6{=`!kH{Zxi4eHN5t92*snHKl$c+J2&o!Z>?Sg zxAIIM8*EODr)Z2tq!_&47h%e6RQWN>Vbas$ER?ROgbS|IveHg&HD&x;5?TxtO6ltd z6O{4k6!H#Z3l$M#P1HKkrXj4=f-NmrQ{=8&x=QP|C#s^nRTlj^TQ{fMbHGQ8L_+Tm zsrG#l3%$?OpJyg>UZvPAWB7xY-(#PQ*dsoPPyvHwXoyL|0CS_GO~q&h@ohX7)}dH_%Hk=PB>M%-o|DKkwqa7RYOXy|o1%(}Jyi^Xuss z&HHs>qq!<*_Ici)W$S{_TRB>AF5MIYx8hM|xnZ+DRh{wYj zWKE&K_!jSLta-K$>zW5*hU;v-Lh(_V1x3Y$G56f?erFO4_W?sltluEVwK`O~TzR=% z+wJDmbzyEQlrZ+DFjhPpH4yD(hQuK?kd_S?q?ZBNhlLvXC}g&EZxwCA9)*E3Bz$n= zCgn{g<@LB?gA@{L7Qp1Ze#!Q5#^W`sSIWB|ekqm87MF`V{KGEy-zXDp6&fl1Io=;0 zv*!86xZmXp${f;NyMkoK{g~RC>n&XmC@Y8vw7(*D$Lz$-zOPYFNV^;v;vpZNqiV^# zsdB>c$5~R^`|rPhkLDElqb|MlQe`)sU~%5*4wNX8=t6`3kAM8bnByRifF8Yh^X3+> zMcyfX2bPDI>(o83rZ6Z3Avn&nczUTs56 z?SDW`x&NWZJ#jU=S-rib zBUf;ogi9wF2a^-GGPIOT02C)I`Yb}mTozx)wN%oq8*vbz#|B|FU_yk8NVo_X1TBug zanFb0W%YTkNYN-PM%P?ZOG%fmx7dd2N*fC*n0w1w9<#~#B5VXA@%y>X6%0>+>)87gO{*$g?&|0HmS|er zDa4aUN(cR!ZPBxYl5qlIQ!cd~jA}i|t!BZ$+BR4|L#PASMjoLkSo7WoACtq5I7)sP z_O;Y+a;Thn#wpp!=d_-d{5OvAqP&U}|G+Va*EJ+nij;(J3wqI58D_ zcapFnf~jXidVDWHk@6sUe)muS)=h^10{dt0caj{|FwZ5Ko!~bjZK5oO>U-c7@O@4fe)oOj-NhLR$AFNzRe zDhMEmRU+>gaZR9y4mjWdW7va0f>@|3RjTBe+{lr5n$AA^Y>UIn?Le90en=^R@})b7 zry@S9k&@+0%hrNL zZEhKJ--dNkG;6&SP=~;ZNfTwws*SSYm)Qye({PxKEUD1Ai4>}LknGr|@{We!l&V@@ zmTE56Wi#hW{wn)P#RK<~s`YDHIemWe-HkFn=S;3rXyQ+!f3)PrBSwyrkyBRB|LD7^ zWivW-eQZaowx@3Fa(aW(VY9j5$~njn5CnOU2MhYOG!QTyV*0QaU|Dc@m%FN&s0@Bv z1kJ*e9dL$_h!=wAPepu!k6hdNM}aKYmlPWg?H4_@0XM3l)DVbA%+hUBn8+A_rs z8DrLy|MoJbaNn^9$zcp0yLEHd%jAsHPZfeMo3(7ENtsWw@!?8aI^496Q_AZsg|sg) zIyPS{em)O?N6?QU-aa=rLt}yr0&A&5wt|+OF9qd@zV=u=XNRQVAx%8@n?*z$fopm8 zv%ULBodc@LvQ_J)xGuOUE1!-f>V*-&EosRFxZbAelIkWs%zmv?|Awx4;?C$xCzkMQ zBZi&GQ)TNz8g`s?UNY`aN7lhRCePn6uit0m_f!AwzR%p)3YcF-{hXqoX}M11ydUyf zAg=}fPA%}H7Ivw6rY`w)!NSHE3cFw0HV3n(ty#KeI{O!j0{aXCGX@y;LiQ*Z;MsH8 z2STHq$7=u^WB<;UL9%1AET2$Jm+izyjyB+#PLdOPkQ`d(Fm(0|HwHUI$YYe)`#k2h zPQ6C*$P>@VnWr3Q@{i@%(>fR-LL6TjCgru*o>+-Nfe7UQ_v$#Q1V%YaeG-#FF&KO= zb|bJWd>BwcUZAK!L9LMpIpE!n2ttNIa7I4Ch!}d3k|+(YFYm&`h&)ujWC3~Lfd>o% z#xva@9+HB%LC#mb2Q>I9#PM!8R4vhDr@Z9mwhveCRJz!`mp37kf9F+@*M|0(N za_^p!zeYW&-nzBS9W+?h3{j6|!}?O?A03qqu&8WXpQ$naMWkTK;wC?>ShH1%Zp+kg z8udmMDPeKm%&XnXQ&4R4TFGC&f@G*H#Qff^Tm;+I>zjYeT3I)Jnru)gV3rCJ26HW0 zP%0nQN_Lm26u~>EO_KSqJuelTw~+liTq0X{7qm5odErQ-q;mzO^AEPmr<`@X>tLkoCzXb}Ud$bTp;J`eDOC7C3-$GmZREgQQl-6%Zv4L|Wslq*xBK?=d*1K{>nJ^GgmPf0KaoVZ9QrA#uxlv5m3qoVC3+X6)&cMr_eaoE>NJX{2-+tSz zhCV>9VXbD*3mNU`r4YL2DPx?))eW^C+v{aaCZl&_v&(9Z3UPS78@74AA0aY_bF@#G zjF@w@b(pB$>x&`_D#YWIOP4Ms_doo&biVwmD7kTrGV%R}zNBo(3)CrH0#$Dd?hRvF zQr<*8ZTU&#EziqO-Ej_pn4%62;dAyu+w(DE>-}NESC6Hmzu33vqtCziLM~BqhtP#6-bzO(+W9En=nc zSit~DeAb?N+e{zOHhu8^`{b1udZ-7jvdNzup@EfuPkZ?#*;T57#Xv3jakMu28fkjj zrLwbhW!a?)*mliRReZO``m1-!6tUG=QfNn(lqsTfwM5x$J_VJpi*H)3F;ZnDpO&3D zw_6LcbPhK*$Q zhab!4T?M34qlQvOp@m_p9^&ksWtsA0v>!Wpo?LLjxv&@Z?mu|OIT<%S`11D32Q*o6 z>xC_!tch{}*_M5NDuZvgaP%g|Gqx}!zfG5@Sm$|jbneSNG9BSeC zbXO7>m{{4Ia3Y0A)`!uDC<)1h(cj~W4`a?fbx!!e!p0^5cK9x}i2OWhvMF0%f2}? zNBu}ql?MrpbHE>B0uZjJ{~069MTaqB3C7z*-BC3Ca1SN$Lf?G&8)iFCQVILL>Bu@# z@nqV+i zE?d_glXYS;1q3RT7mu3>iMT@LfjuXLX}e(#;T{tld#1};r=8SJnl!2>_dljdd-Y`) z+`_mo@1TfLIbz#mEjFQF_YV(g;Jd@{*e5N9D~N4&j~VyU7RXqX!BH8sF^WsbnCS0z zL=dsD$%Lj{WAMv3o)_eiD)cY(===r2G* zJ(a+ksZ(Te!7?&r=rHNlo(z1f#hGQZCghwVq zZXP8UoM38UfI19~1@r@)$zhC z2E4ElcxXeZZW8+Z3qsFmoAm*vD$&ynMfJ<1mNByKtzza4ET4%>4t z7ce%wLl*PLgw^qr^pLt&CbanFW<7IA35o}sV9H&r^MN`sj+xjfB^F;6VC&gD!OllY zY&1uRHKbm>`@AX*>g+2Y>Vn?#up{KeGcPi0Xb6?Cgm?iYB@{}+u)w({<7jet52T&`j^wM zSiERKzlSkeE?2QGhKdh+4A(VoP+M-i?OyrEc^4WyJKQV1r6baW z2#La)>IO!SNoFr`NIKu0;W*o47KIbAKd@I(4ue4ILW^AGL=w~~ghcXwe;2=z!h(Iw znQ*;)A!MAj+YOPlJMTl0;y(K5-iIF7&2F=L5T6<_SOO@9G&lu#Qx_?8Y3a1U6_~+uX5}q+p99rSk<*Sji8Q zmOk~~(Ak|bs?}_gdF35_cHVp0;iWyO(OE4#9}N>c^g24U%X0*nMyVBNp!%Z11f?G-1>{kRg5Wy91;I@B`CLZ zzvo)i;*IeKG3BrNFw~7aIWRi2 z|2myH*RY@BRrB;JT<2{Q$!8G)gnK+uFYm;H?=<1z0CM9a3JQu19O0hp$*=R&79cIC zr^5$%FZVm7()YW|E;(OG3Qm-(l@!cb2WhvE&6$0hIN{{`Qt?bo!hiyuJv&`u*eH~M zc8L@ui?NE^CqzEc_mshvU55u6tWtji(&$R2@2$^0^?*F9wDzmltWAYRpfLV^fZlJX zDvBAQA*A8qFCPfaIRBqMg$fmtmga{ZDK%ADYErAF z^wDQls=mK8ZGO1as9Z_otTxKL<%^|2$ud$+W3)`cFLyR+Rg{mm(A)WyS($IGEVFB z!?cxsKO8pm!i@6!)Lhr)pRX0Tt>cl!v1X7r0PUN>#Q+7L91<(IfQZnDFzJ)cT;#0y zF*M4&8oCfw&_yVO0--@#He$WD1c9Q^YC_McD~RKtJ=ii_1h7W%Oa?n%Gtao~F+xt$ z>0S{R5?Sb2I65lC@4ox)lS2+U#Bu_FG5xC#1~b8gxKg`y>t-~V;8FLc10f#oV2_@? zl(8?3W3YAnwK~toHMViGvxp+I=)BA+_v*Iky z&6svzUfBH7^{~TvXB*~u<%XS>fUo62wNt~&Vyv{R=4Fc=!sby@MaVo#F$|D72=tP& z@XT;?anG|;le?!V88_$T7W6y!N8=`9|8&f~1#Ux1q2+f5EH5lrdN#X|*d|>(*USa$ zdiEYT@%m1uw7j@^?V?xd{lNS#(9ih2X+HhVvOw!jo-F<*zyG&?BQWF9aOKDUraQ-P zzvo&6`n~;NBqIrgAC#Q%-IE}qTIbuZa}`X07ZB-LhfAtnFqzi~b{ zZy4pL9!YN?ikF%rQs?>3Ih1L>^Vbz>{zA`%lDSSltMs$_KYWtEd%6FAkAdg40Fzaj zy86q{K5AT~Y<1~)(m}Fv=|asN_@nKkRh6x)My-Y_WAD%e^(B-IZMIgIPYsE4P>z5B^Ldl&*)oA97J*%l3E&@jzSxm|;{vvjlD zy-jmIYQ7#)uI$XGsY%p8xofw|IvN+UDRZq9ELuw0cMHkfnG@A2UQkL^s3AR{xL2<0 z+D+-MD@%nkMNLj9UAnYgmr6vdy-$50m0)l31i+@uQ3gFwDA>(f~vni=(8Z3fD6xjgeI=mrC;^+A5hs zX&LeDr?Ou23?VzUIJBiSKKKarU~G}4OBTsbBZpc$A9_R^skUzoWssXF!-srjxtRDg zXne3VYoYYmni6Kf+kK@$qh?a8ZhaHTKOOi^YOEjK=6I=AeLpFsxrqjU^@+@zGt+)IWUm}Mc*+yP?<`F$V(_opm-TS!STSh*3`xPrI3QIv% zZVqm7M8r3+ew{2{Fi%P=6s?f5%dJ|qLN+UD0*VqTd9niKiLnx;w~2Cq^5MOfV&^}6 z7;E9j$6xY1&vykYow7yTRGBhmZ0zw#_nmXlvRAHL*&u>`j2bmcKL7l4>D{}xd8Xd| zbhz|>>OmPf{9CKX9VeV1O^!WD3TZCTiN(vy%WuD`Ia*7~vB#e(WtFWuU%^5$uzx=} zy7|G9q4W9VGtZZCg9gg?V@At<4Vqiq)~a1kn(k9kR_U7X;qVbsrb1R z)8bHh^^Jea8in<>&@oZHd|AoR+^Zu-4wG3+=HYC-001BWNkltvmmR9WU42O>89Ho`^n33eBk}0c?JiZ$RKyse<7wVpS)_fifBmMi zPn(lvz&9VswCPhcm+J_*sN*GaQ0ueSO%jyW@dbFwZ^rT=NhSFV(A8FJmkDD-SFS#fulWWNT!So<4oLas2OX z2W?B+|NHr8-evn<;clqxbE;>M)D40gH#0y*LsF-O5|-~(GQ^&WD`H@+z#@@BlpYWPxaPKx4K#& zBC2|af3PXo^RxiG-@HFMPB9=j)PeFRDcw2eutpRFAMYMF$OcE5TyaU#rTcuMKAz0l z6Bk2A8^&YtOv)5x+*a(owh?XV-YGX0FrK@1zei)lrbx@CHRaGl54E8c##n_$3E;Y6 zQedC2VZ4BkO^;6qp@8X_|2(G2y@a`8?$f~yy{vc~!<=Qw{8C<~iE}rOfBBPf&9)WG zEb&s8Q@_^pc&0k)XY5`!r#{y5ARN0l1EJRiUj$x0cp4CTp>SFgfB4SF&nLh8zwz$; znFmTmQb|GiNS;I3ccDM|H~ei+zI!|QU%xkbp0b#6Kk;EV3D2=h@Ik3ae)n_XZ=q+* z6&}w0r|Dr(m&yEuAKc|?^x(9qc4(5qxVg^^DM941|j6p6(-8!<#0vLp^7Ng zDBpbC8+Ov4IoSTov-;@o6Z(EW^}2qq^l8-e@b;2#)fnmD?}b=!s~~MoI9)brQhH)5 zz90IfC89s{sJ1GcPc}shYUYLWW?2%`s#UAW*%x(@^=nqj!e6E+3s@=H_kg-8z?Cuq ze*NlYvRVcAq8iX%s%&KyZa2x438OU8{aQJ&ZWAeAX&)Is`a7d}&dA6w$DKl6qzrkh z?{l(z*%A|mk7(V_{;pcFOj;avw0!f~0QDs7G=aLsVXdUJTD}puSFKzwV@3^^{SK%t zjSo7+;OLdLe0SXUq`dj+3wBSX%2nl~_un){fP2c8D=%lBcZmwt#bx5SAMKe3)~ag> zQQ1i+j~{KM0j=7etirqszU31mW=sfm`v042P!4@yRY|=C5sl=kSScah_pNTER_Wc zT0f2c{#(nf+2ZilQnOA2S-X0LOjkvW_CRp2rk;t~4VqdTtXj6f6eap|*Us&lUTC52 zuj(Yw-%6IPD8-7Sv=)#ZN}0WD`xZN2uyAoHTvCN;Rg$wZS7>`~mVAXvN|EB_WXZ2H zWZmlJ^5m0G%4{WAs9dG0jhQVf^P#+;^pMk&TuYRDm9}es-ME_^)IycN&9YL*PQHBk zrIxnUrpygeL+id`*&@qt+OSb$Y0>fsRbomjk-~N_ zPT^uKuV263J}XzQG~+t7?R=nX=RAKo4+9}`F7pZld{$PLU55-)u~HT3cJ$?QbS6s z(3r73OXvLznXD-m4$%2rSjSEyjiVZ*xv0JyKS3HcJ=EIxlvc;c)ag^DN1tBi1-$68 zuF{~k=E_?Bi`?D&c{y0~ww`v_k&mkNo%EkT(V?|Y4J>mz3FfWUe6v+$kR_hEdxLPT(FL6#hi|ZK=A!H0Hb5|f3a}I@wpaf9TX6O6x zAYJHTUwQpKsa&qOd^hqZxkkwu_SHNBSSOR-O@AH}lX1#5Sn(XH${fIY7hzQkQAQJVS&NS=eVB!o)o35&aWJCTKWvUMPZOO0mrlfFpluB z9940SEXS3jY=(-lC%LmEzXATiD1~)QP@fe2sJ@qTc*9*W<$XM3(aKFf{`5$;uPsW_gXfUM z5RRDq&RkNwi+%8nmWn?u_3zL6Q8)kp;i_(T$cp7lrQb_E zO-O3q@@T23UM#Lfupd8Wlr%f!Flp0HbMzH0Vv55ijk!2Zt<|-Zu6)|0aWZS#&nBFo zaO!zdzG4*__RWW~dE*9qUiBKaRp>4%(-fh5-jw-s=a^N#Z= zP{cwT8Rs3@;;0l1vVPqf%^`Z$sqIzaDJ7*#l}xn_c|a-aHdTsI#@>4Kbva1KSylDq zXtEVkmN#c@Qw3qWDp&e<2j8LY-l~1NO}$l0>usJ*{i{OHPVLL>s-*4Mu|4*3VqlJx zDwH&ox9EHJ-_VQYGnYQk?K|TIMT#-yA7oXOQ~xjzlHc)iA!lDkl?NIOJ>h(LM#BPmg zDpo)?7mD*?;rv~@W$bHKrEE@Vxq+!R?cZ$-{)eyOd-wV`6wV z^N{+}y$>D|L_wUFI7{nzvfD#MTh(3l=OeivS1O{O1J?0k!gAb4VFlbn$vJ1*<5`yDjO4C}hk7`> z5K14pA|8J59y#{7_A+$%_i|&`tEEbXQURk-lyAy|bwlqD@G>7$?k!{7gp{g=-PXc} zSaFm=kMB#d0qIrX%3T>^yhk~!A|^!M%RF#O|0D&vd;L&6@aVa*fx3Iyt?v5Uun|8= zmQMJque#F4S&35RZSK-MUUPh-B_T%Xh&?P3TfQq+4(;L*f%^FyDE{yH4bKFMNIK=n&*6#5JMvl}T?>$Q z0K))8FaL|u3s&ymoGE{vC6)6q?ihM zzs{Pd%GNqt-^*93W}n>}kAWq;P=*R`il4?xU$~fB>32jiRvv?61PQvn5z@dq$-0c8 zc&i55-+9jivQzWn^y~Lps*Q~#Ax=a~{5Sgz@I2ON)_C>~U&pC0ivh;XFljJ*o+~IJ znG)}%EUe!l;Seu3w1>Wna=P5c-sQ1PT$7|g_c&nA`N9MlB5Suf;%^BHf2T!#UmY?=u|D>;ttO8jhrZnd|+R+WV#NoS< z(upjPRlIEsm7;qq`>KyI&-KN*5WVG22HpqiYJSZ*yVn2 zcly$aF_MN@FZY^Eg_LQGPw|2~&7(;y6-vzd&8m25=jhXP>}AJUS-aR6iN+24c*x$z zcc6r!vV_v~M;QJVtk^7%J^GNWSvuF^xjBA*qrYrcm}A{5u9l+eY4iNE`L<=rRv7uT ztc;o63hP|4ZkrU*MAr0aR?*TaqLiI#Tqs6T-s;uWixnwS^l#SM4eHt2BE^)Y&yY{5 zNbT14D7ka9=A9}pnL7)p(xmlQ&tb{@+oYfxHlnpaV-wYYutQ?ZmlvlscjU`L*>#@ARz}23zL{S`#9^1koBPm-Lux=AiPfVz0f>TkX(HI_16ZQYuvc8DN{Xq^sr=XxJu#hM*+h_)~s1GDXY1W z7B5~bbLY;rI4h1;ty&o_6RQKtAIcTa#_QFyXHQec$Z_yzc-ii}>mK>&qmSg~+wPW2 zJD!(Aa1NRK46CjEn1bo)LgXYO?p<`IC8x-zPdHd4=)WYLtM`L1G6eUspfkpx&gZ*R zpmS~bd{1orY_HyO=wU}mk0&2DJT$61(gUvZ#tGk*Vy<4=3GLU($o$9u9G2w#m0 zx=aNu#`s@#^wkHCc=^+*cdlQxu-2UA+vRyxraTF&c_4I+VI4FwA!3~LoEc-|wTJx) zo3w zH^`B#+RB5EJ{7~+qq=cFdswKPum{lIPBcP)CkZ*+z{;LxG9!vZY>elbY)TmI9C_u+ zANRS@-Rl<-S&%C;iup}PE|rdyg8Nemndy&MMjAVLj{G!cynOq``|`nn$P>rGKFK$f zIB$3A$bHBl-p*lsxFKY8Kcv5tX=);7N`A}9=*zpzSj>3hy?QUtkGyvgV#Sp?+LgWn zE%QeX#@+PUze=YIPS+e$Rct)Z_~IK`HDSEe?{v8oQrM~~&GgB3^}1zlR3n6jF_bPY zyNec+m20<30rh^C)m&0rijEl(Vqp(*(dA zpqE4$2FqxOG9Izn{oj_YB`T>BR#@(N@&Wnu+d(pV+OnIK8vSf7xMzd-UhEI!kn?~ zXhZM}t|6Zl0ip~fED1>pbOthlCI=J2Eh(Oebl?Xc$jnJU%4@H^X3#qnod4^AI}|17 zXJskDW!+9aI(~qsz2%l$OyQ|px2`Eu_uhN2bm`JX+O%n7-X=0vrA+CP za#iOGW%+W&h{u)-&k*n4rj++b$0>`CQ@S(W!oX!(lV?E6V!1kW6XHmhUxf3C@e;9s8JnK|?)0*h)sqyu;z2#|;-Ih@JXNo!9g_16;lXIh^}6e?xm;Nbo5-`h zo|BPdr~d}Vhb4{sJ;5bqbRmEj;MEQDYw%pyHC^#T!9f|LO!S2xuJrNT$dCfVW~6|* z=gQ-@%4^-77M=SkPe^@BTX;Mff`xmj{8~0`;2tQt^OmlExJUm9cU|A%=+Ej@DS+>v z$k#6V0a~|L96HaZE5xUqLV92L3kn2t%^%$6{%dJS*p6rHuQ=G15b*zs)2Bh zLb6e$usVDGKS$B9*SL|@We@7XnvXCUrD}=1T<-ZYPl>*VHOSY>5H`-U-RQ-${JF>` zruf8roUi@1w?Pi1>*oJs?=9fGs3`9IHd@A=Go?v5_5&VKdx_v+^Xd_Fhcb%0y* z$2hJ(|L8rr`KEtbbPSs1h;2@9rn-;st@IPZ2xsm?r@`@!GVTuQRKebuXvy-(_5PgW zio25;(at0-IPDK}-VLD;lM03NjdF>ccZ134-64y@fMwi0YQ}RMHc$H)tJf5g{?f}M zrJFLX4H$5mjV-zzdp`3JIv9QKc)sTqM@DdDkU(-2M$C-zTHCNm^Qzqlr7dnObB)97 zJ(^jG0$s0XY#nk~iCijXZgiuMIS%Vk`CiR^(UW|xXU>@~H(hgyK`+OA^jRvBYPtR~ zBQE_x*X24Va*M{fVn3!W=m?fe2hDtdxM!U*hRk%>ANuP$HF@Hk;*8rMXd*(WNEe4- zgaacjgxIf9hlA*Na$m-dexiT#{1B<)&l>&Cn{xZ@x7m6g`S{Z^TXo##J+_yIJ@<;Z z4KVC9-)WPQasZ*rZJ=AZHY8u6eWH-m1~t~ox_XUML^7pXxI4ROnbwDDA!(ZD=;;od z6q2}!Xj8KWQlduFdWFNHJ7p`hucp4#r8TmxU+W4AHTSAeYBz5tg?8O`furKm%rn-NA=&#)>*E<~`TLn=-dDniH< zNvNe`!^o{|{$$X@T2d@<7EqXYAJ!yd0WfJEy5}AYqUGJ`-<>rqe8EB(p%+Z$9tba_ z$*upqQVMhepMUOInKWsVg_?iq0W=PVK%z%IdsasFxG^YAZ9Q@W_xD3$q{0 zClvJ!4~#RytA1dpZMo%^KWZ#dDI1vI)mLBri@HKomOT1Q+j(z8QVjafyBK;gU1)63x(!ZEZuybWvIkVcoad1u93}{L>SG~5fKP-} zvQgevE4ec`daj&9#P6Dm%O zDgONU7cKr@@#1~=-FL0Rb!*I+G2>Uf>mRrJV+8*9BLKXOybBzF>~Zn&uo_dp3|Ics zU3pS}9{u2JlP@b+Hm~dVD>LM}v-gYWv6Y3?>oi3W@`_rMF5}!$<|qPlumU4X!0osm z`9=La!$DEz{9}Pd%12BI{z@LP<$z@j#A0B zFFyCQIbz8Rn>1yH=~BK2Si~RMuirUj-gFv}J~~i*$GPmo{5y2Mu|Fb5tv(~p%Q#9^ z6)iYZ;z}x!E09RZnuQhngoadO2O-yRaDT?y4On-mreO1d<8=5duSx#u5+&qVA(st2 z*RE$z4QqDso$G`A9fOxBQ3VtZ-7zYt><4YZK(WXKEW4z=@07p-NEa0p|thH!rL zSN3s-sz(t{QeKqsDmE}u5mFsfV@r%5??!Z(j^g>{pM3C^Jn`5=S`R5l9(&?xn=^C+ zn=`#Wib6(Zg4~EFa>@ShhADFlLIz_2L&_s@^gWE+B^}i6JZ1d&yX~?1zeR5KUc4u? z!D@+Cac|ZcbLs7{_eP(IBi40n+Ti)pFaTEz|4=MUB-gS7S;k)7Pg*^`&ZSZ7O6!Zey4g(<2fx z)j_h?6+|$?R#9++HCd+k&;}(-rKalH7<{a;qEdxWYJIBle>+cRttpVR-WVklW*1F( z?wzl;W;x8g@_})!1{~5oy=jv>Fk!PTCT_3LH zB@c}r7hEhDhlMd|c)j_}47fljc;dboA#skv5G>*PG7l!yx!ET}~3 znCkS;{0nR}zy+Uv`sshW(v7KE%JxF>UW_Tce6X@yam5ufZrnICoId&F6B#jLgn6Zi zR#6A*-FM$LrW9L)Q#*m5lx*jcCqcU05;UfC4?NH|9do ztK1{_9=`7`nKOH)?jCjIjyvy6QHnbR1K|qn&kNwPrW|VOksu#j1PB6xb?fU1LCs5# z&hj$$L)s3#Z^~bC7rtW)au~N z<*$D^DFv_dk_I6(&)*T|0fFxdfW7B|z@!ZhF9@H-d0wjpLx_8*Oia~1ap7(>^Ewt3 z>kjj_Ji^Er=EN1}4L+PG2<+pZWDexI>GMmbJuu>nE<*?I&2$0t!KOg?g*S6YD z@7J$iiRQ1>{^5ros_hwn-1v_X_+N|wYnYM?6r9JPijN^`OkGfo&u1fj`@xZuuP9hH zx9j|(Y`OBZ-d6AxnUhk6_3vJ5(q&IX22?>@;QLff)ghFR!XSCbKZ^pWkOQ%REcP60 zGfHBmpZh?<<1*d*>&6ld33FKa-SdSpvK$5?x`!I9?V001BWNklM~|?r`_MI_wWU7h{Sw;RcNv z=9KJ+^R%l%RWN>TV6(PZpB{bTS?I)%K6IZfTDn4(uPPKszIcw$S+w@zBEfOw&LQ+( zl7we?z1Jiu2kpi%qu)sfb*l7=>K&ZthNDMD-QnQ(j%tZkHcruF>cz%eq|g8R*e7de zvYzM8UnDy=Y$iNVB1_Q~GA7h(+k~uR4x#eFKp6}bG-uPpf8w4W_tYd=$tn^aqlrZ6- zucF);U#O1zbZ-!g7{QZDKt;Hj(5$ecM~xjX&piI1JoDtE###ak$uBv$2eklT20Zi3 zGb`PSoF?+9DCqUgH{TeE1jf{#|NLhSf!;3rDc?TuJ@TZEJn~2Z&d2Z2drz4%#f&Ln zeMcN|gh9EI#?^p0Ywvt01sZ~W z`Pql$l@Tx7kSY<7wTBG=M+ApCJMd)2a?*`8d)HK$Gp=4#k?%Y)I%F;ML|DcWBg=8< z7)B1WFb_{aGas%=&d2DapYA2BDxZsM@W7SpK&R?kY5VE_s)Eu{!-jvk@6d~SBOcz@ z560Am`WgF6*Z;3|y~1}3_5ICRwrtt2b<02Q^T!DMpNs%bJ|N^c00U#{HZ`U$tHuUB ztM`8WfsvE{zOk&J>-5FzcqS`<)G$Xo?A>iTxn;YBzk0oU;4f0{Wyy*&OYQiver=|$leH&Sedz% zv2$l8&ma-AS; z@{IX57v#=*bkX%e`p(DafNQHN7uhB)h!ak&4%M`h`X0(t4VC*{LWC#0OIDe@4# zHwL!r+2{};T3pAlRD)Re4eNb+S_|U`WHbED$Ix=rb!^yk85@t5dHx?`%Doxm@cI;U zA*GRU0w)|0KBnj_?Bihxq#;A^(>fr^j`#H^()p01W$Od>vvpUXNljUWD`joAGCgV? zHFL=7nkpzLmwLqt<5Or|;rdKlx1~j@pDW=*ZHFq|=tdA!Y{=368l^=x#}Hf0n*F`xPnf1gVO=R~*?z#& zqo&`KcF)5v7OYNdQR~G0x2@5pd7cRhUMiqGOh%aO&me}lT7x{riHPB%MX_>EkJa^w zlkviwD9(3p1B)B4fQ4XVJf<=E#nCU6W+r@{E_}y*dRqurVzfEKjepOg=0#vp)1N6* zzm-eQA7E^IP*eWW1Nv1WOF;dIG;t7F!noo)euta_Vv1h9dYQ3=fkhMx2*uQ?Q!NSw zg9-;>exQOFPh-Z6F?JPTXt z^WNxvNVs)xmO&sD9+?(bgh#j$KIa^~av|d-Laa&(bZsShLTmw_JOv5=LYi2?^tYamIZ@Z=B=Hot?-xtz=PQdzQW@C>BJu{0JjR+?V?$ap)M8 z7*a{N9``_g;0UpIF~*2{J{Qjkan~UX(>E+=`BInKH-8*|jKJ@C1YqKVMCqubjtY&b>(rRKwi^2d{nsn^zdHFJ>I~{S ze)=*QGO({b4&~N7&IvC(@`c}!?d(5JE&wGtkS~umc?61kIU)g>iP3`N31h(J7`lhE z(Q&@ZWOpQ0f`{p|U3quMTm3#6z#^A z3sYIVFL180`^8Zi`WPAnzW+LL6XW1xVi5u0c;vOl(GP!i%9*Kq1`!KmDU2a}eh&9x zzroN54OPYh<~}cW@AqOqgRM7gpX+(F<=wa6k}p61NH*2TlZ!6?o06Snr3?o@F9x!t z;ET*Lb7ck+P__8*XL>3Db7?GXvGdpWZ=XLd3v=8;$Rzh=ZXDj}NGn5CP?klnw7*M*Cm{YZG~Q%qQ~YXCG>GYNgzA<8@L$PoZfTfU0LJf>3KKMeL5OPxe;y zZr3rYN;RMlZnWBZQr$Tu>}imt*5hdsY>!liY$OQoBh* zDN3so5tM19DWgQ8d0DC(C<%nmG0u%5HA?GjP-=8Fd@#b6DMMhfQp#`Ns)=l|(RXsU zay3UQr>+)D*7|4|>ji7HO-i+%m#zdEiY#NE=PX<$3qBev056okOqCWgBo?v$7bTKbRP=Tn^@LB}m5T>nB=hIbw?cov#sR?u%zH$M zC~)@n+ix3FA09ne)`&o{DPgE!O!ev0#~^*l=f6dlw1@)`(-V`5wWH5Mr$`-xDTIm5VPpOZGqTQ2Fb? zOCr(|eLltrZAR#Oy$fT3)aQgXCn6YMTw6jh(!QR4%zMMR2yTQQ{R4OFYH}9uD zCyX*N2C1-pT=*EzR1|586b6SHM76alptfA=BOzY9bQ?ccJ{+Qpd|-?b>Pct_Yr{RF9_4db zVVKXwa}cgW*>I7|LG{uqJZ z^9TS_XRl%p3nEjOsWEk1HTLTTz4vf6rmiVmHoNN&g?VaB^)V&Kbq^)lN-4DL^~hJR ziRjTAlu>uUx`OPCa2`EC2C|QEF0#z!82cVMGJd#BW}iX+g>WjT!8Sc5GLxaGPK2A67 zjJdQaLODb|LH>q>Pa!Ojy^wt->D)4CqV99lio}tYig;){$P4zGqv5@P5+)HSw4ePI z`2TZHJ}Bv0hpI>uSB^YnA8Dm9DnB^S2_#(aum}#3Cv=g3%+aD<7Bq;Xn&?V6BQa<}bvVrKjaOcfLhb9D z3JZJizI&u`vz8H2nx5|@P-d_KkH=uux#!^i%x#!z!1sP%`fHH=xU@((hDmrR^T_?V zH+q1lG4Sv3`XtgO+P|X+VL0|xLG)dx8~yy#(rE4+Da+6TxdTp;+=g1KX;r?gORp)} zjq2JOw)}66{$wi=L~cDTLr}AB#LB5O>6bm^=o45``*EzDJ2CqoUna_u}3Dbc!gdFwU*s-f!TnKjL6UbJ$R zeEZNKskgpNR%PZ5f2+Zsdvfm?w>|aAR)5;9V`gK;61swwRO~!V%I}0RSwx;l&O}zm zZ$=RXuOF3q*#i7*81eGNHZ(ORn~<`FY*mOd$SCt+Xx$caoT%wVVXY1Ny@!06eA;Yb zQ}wod`Nd~OA&zmfT=PtRjRSsvAb1Zw^pHX1pfZQ@9JW5HM0f4l)r>8OB#1(h14Ut6 z4iqjTOu+uYOkaBGr9vJ|2tULi!_dN*;@-y`bBxiW|2O>q|Ea$iXFKh*vn*76?>+ZE zY=X~~d^ecP$c>{@E_|Gs&PYSzXb~&c@}pwn1UC+nFT7Ezv*5wQ>)iAAkU1%gcsT_> zLe)2vFo$dAw6Ej}rFTE^l+)#;V~?;$L9CIX7+YWqN$*`~Tv&o9tWxbOO$~YN`0%Qp)4848@efA{aN)+gNEo+}^xxcp~%tb>Ori=~>*v5N1=bOQy z!g|t#&&@~&CVJU5w^zz9qwlPJH*Aw|i^%w?peDD7kbWr28?pr9FhTG!eh#r=Y#gu7 zJmBF;S0{+qbMZN5J+Nu`CK%;eMXzr5DI*4gEIuMS+u$GbS z|N2b!k#V1VB(uMtBX2A0ZSb%MrA^Bw_AEErLb`U#%hBsxMuyC}p3j9s%ova&;Y1aT zkMC(b+nkiK!RHRlq;tz66gnne?A?`R&?c?})KjI?`+;G=UXgShMoe?jia{rP=e>{2 zxOnoBVKV5BTdZED?^i}3p&ySXhV<`5)!Z2LXVOp3H_{JshxA6_zHViF5(Ffv{>P9{ zXEpSQ4EuQKuxB4bPYI3SkY$kT8EY>KgdxuOvJTjHN5A(kWqbbGa>QPL^BrlVaL$kf ziZ-I0({A5aoiUK01v;1?4wW=CN9^bh-$gg9LwIP4jalanBhMl&i8KaZkL>i~g&z7!gG|gPJOtO?N zee}m4OOHMG)tZ|t#;NhHTtra&6S%5 zUMR=*-cuILUNC=b_v0GVjc*4%J8tXkx@?u%y?tZzF1z*X0wScowveZJx}&H9hlMRc z&gsarfOw%We%u=!D&U-7iQxvNPY2j3(2cb(hKF%?q7O`zPiS%>yKptS(6~5Tl;jzO zr@aU$HJonj)|LbGv(xtXh9dgJaa`D9%o57SkVCtiqIxw#4K6ct^C+WNI zK{Dt2*>dkgPuO@{Q8bU1#B4zBbqXVmPBHEt5#|%2#0wcle_Uw#hTzoZJjXmj2$a|} z6Xw=&KYq6)9KaL+C0c77{3In

|y-fz4Bhh!ig^E-%nAXr=Ukb+5*ET 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%0DijgQUhpSmL6hza+mRz;? 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

~d@D1Tn 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

=j;-5v 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

{|EQQN&8n>FUD zQS@2ZqJ2!s_WI}kEqh&%_xi7}IQBF6R&CY9##Wc7F0S50EGl7mq3+aVm|{Kp$;Fij z?Lva%eT+Yh7c|y?b9Ysw zf1lsJVNKuay;oMg8c#n+-k}n%wA5&K%DBR<7VO3~YVlqE8O%%#Id_;yu0|)H z%g=_REh*c~A3oEc&arn~Kk=Bk=iiHPFK30(zy-TknasBDr%o)akp%s0Pkm0$ z4h~*by+@{|E%K$-p8b6po`$Qowb)M5kyg&7Ys0R`PsAc1K$qpJm!o~J(9?xKZptd> zm^h?XDHG)bj4_}UV{-f<^2Ltu44>EIMKa$?TfhD9l{FLnbum}NwWhznbr}&{-LQ2u z&>tD|ux%e>Hn)AsCrIKjn@6=Dz^;2tLdWh7vgy}Ps4_hg=FBdRziy3lL~)-$j%EYu zloijt1By#dbk@P4ANj7X2bD2r=DGDdqo3Teb0nz9B~t?$5(fr4D8KxS?Zz1ght5#M z;!C8_B74o=#!!peG&p^lLUN{)Rqg^y%$5D~Mv-fO$lFoe9{eaS*GGC7_}_;9Ze~H7 z4PmB{8XGGSdxp8t#hkU$3PnacW7(#VFRfu<0DwMf#Zz!R+#=@m-rnnSag<9Q6T2IH z2RUZSYxa^`l^&L=EO}QEy(ZfC2{a9rzn2P(=X$gJ3C3OV*J#Xtw3N)(4NpEn3>%UE zsbyXYborkgzfFow_iejf-0n@SJF1IiiszNMzMaU-(sI#js=DYNzTC%^fWbVOoz|ej zOS#?)q5bKDxp+Jm@++)|NAKA~9PT6OXy_ip`^IZ81Q>b(rjD{j92nzJ!3p?>t( zuwWzB&rDlaK?l1LB6=T{e4ik@lSXS(jWfHp((k7uBVX9mU%WK6d`mGl9cE_MP&GG8 zbs?j!w=>myH)$x}FK>LAJ8QdDdwp)!kK#-f%lg^pAjzzad_D|tA@uAt%)#{&Tz63qHq^`d_X-W&I_IpEz8N1%K1wiBEW|xmW~$BF_p<_}41`0r|2^Yoveme6fQxd;`%+ zcI{&kbVq{ra?6sSec*M!?iVxT)p$yna4d$IVf8Q(g` zV76e1H@qx<)ELszk~BqTcR*6RJb|B^qtNn^5|&b!?TE6!X~|81KT^!=wx~8U&#M2^ zV&;(+QcS6keBm=Wg_KAoVv}&Ex;V4Fv$r=WR|(aDwZnmk+ChP~a_gk5zNM7tnVQIx0~s3l%-r&=8qG7OremWBtb_i(Y8&+(e0`(AcHfeu z&O2p+Nh06a0lylj8=!hV+YHWg)we^lh0;R!A9t(^9pQ@z9p2>gxUpX>zv>s*>fepR zN`T*YBvZ?+Z^>VrDwnpgy4&=h_WqI8q3sN zrXKPTL4lo5@2t`5u?)ECD#(p5i1UAXO=)R~f{igXU5QJfg|mB>pmqu&nOjXu1E<8* z>g}`2$HuZ`0*C{C8;!S!)oEp#B&-;B{I?gtxM?7=xU~7&tw=thqLQz-VYpR_%W;2i zAZpY7y)jJN<=L7Di@ax&I`LiDIG?_AoTQLpGzFZ~CzNhN_%iYzSJYepf}OD*G~)-G z!k6@KjRthp%15y$23#rt8X;tVK7WWMyuZ?w9Bn?bt>U^nM=AJz#zXH7@q>HaQB41F zcUc{YGfGPvG==P}Oh(T;!K$bqa$ue0&Io?Y=hseLHYtpn%Je9-fdPF3rnyrp==hLc zWn1LFHIU-gifQ3fRbDg}T`W^Y7KEg|8*ZhMRenSl%1ccP3ia>2Lb6vj9TbznnyJ$f zkZQ2#B_;ZCY0^@boefl<$KO(+lY@8s@^XnfI5&3(+s{l|ypLmPtfIe=#Z*X@G`Zd_ zIY~}Fw;sldd_eJng_PPI%7+?ri7<@|U{nmglHb#Q}wPJA_?{ zQYj^4{6x&ES_FR&Os3jku7B##OD@Bz>#R9G9t3@yTVJ3~g^d;N?>ZQcDHLBxi;xp> zT(QQYWKFa>XOB`n7jhMD@9{1l2=NtFg_E?U0zMh!JL3@3qXz~;ac;|jjtfR!#5$QR zh_o7tk8yO{dG>osnOZMQd#+lrjNH{xF4u~m+cscfv8NX{=IoOPU(_WxK#N;i9%)FH zRU;PTeo2&6Y!6m9gvlXeSGZg(5my-PR3c5&1s`D$PEf|CLzIh_uUn7o9nS(g*}P98 zB)?1vZKzg{(x8DrJIQ z2PrgL7|RM3rIl|)j(-@NndZI)$!g-&c~|-JqO?TRAI=MMg-_%9B($P2`8*LO3Jrmy(x3U8J;_Qt`|+aFNcMAo)9JuTny_% zeZVP41c)g@lBj2+V&J@2dox~8cQjSE&5hh?BL|H0VzTpEzNJEtC6w`4vKr%n*5E57 zvSPCQl4SdO2xVy5dZH4f9n&7CKE-Kjfn)Ta(^E%Ktjg4Ha>=x?a^nOXS^O4a4E&Y+!m&L zh=qMBII}5tCM7e!_?g6DBMUupSXrHDLm2R=yl`&b^TdgT?PQqa5n>-e=8#rSKEKSq zOQd9as=?bf7b;=T%;qVB7^T*tx9{{5&z(M8ZTDR-$2I3_U16O>-ncQh*+n^Ok4w!r zr_6OR%_=g_VCRr??n~>T+%tKkZE%XmIN6TKq>qBK2&C}1m6|8N)(5xn%4@^R;MRY| z7VoEv8ntTN@9IRBMmuf+dth&*g6Fyo4^zgLNO#UUx+pT?}U)K%1{9mI@ahr`~c2ib{P^E zy^%Okf;`)?cw&nc+p7}>F*TIRUpcL@AqGTg<5u*i2!~xRDIA5uFe$n*ZH5W*V;o4u z==mRl0?|oFc3Rb;FBEhlYKI>ChqgJlkaP+1u0p(N;`?n?^7mS4$H}Y~_|XmDk6+Ge znH^4qHk4ZBYIqi@i@7tz^J2w_GGf!k=_SP7;+0lpf=~>T?E^!Yz^HS=s}!OSpxUSo zprjOri4w+2#Q8x&s6vWH+87mMk{?q;)L3M(ksFc3uw&|wY)T>OsSeO|O;Dwb&1A*Z zM4N;KO;EKPDd^f`D9i~>&7S*RraiXN{<2kJVPB~c?KQj8$iG^7mV6PMACigT^bbDe z0H&^haVh}nUb!VvC;5Hrk8E4UkhC;f>Z#L1dp(U zcrxN2+J-xM$0~fQZwD&beT|}bJ@)T;X+KD=Py#s9^MXHPE5Z~WYNVuA5l6Rs%6flk z)nt2TjE`%RLy{i`RF;|;Co2<(l2gR$`x0;$nigg#{VA_)cHzsn_cJ~bReWsn6Nwx% z#Ks;pCQS;9C8s7kyCZlJAf(?e&0@OEibHO-t6TX3f7+6DX4t={W8xA9^{%#OnS4Wq z92Z-ZX+h2U{ctvt4tFud=}sx%IlE4W<2E-gIJ0GP?@&vZs7hj+y|5t*&iAmCmUjBv z`m27W0x#VKqDQ=J&lm$Iys&?>Esk*q(OGt`&SXBH8sUW|ceVBd=^!!2&kY`vH*d1r z%U%BiwG4rcyykqXqc;|^;z{S)bb-ij8%S=fZLn{K|UR+1cvrx9yPKMOvo;+YANT!n;E zGK80hdeD?cz0%6UE6g96C|0r%$zw})#id+i7guwvDs)#=4XPJ}+%LC{Yvz4XoUB9itjsieVW zF;v*CE2a2b=%xl&ItsHrE)rruvUE61mfc{#I4OSpt=M+1@v{10*J-_D8;7lSVamz> zpfUU(8prQWV@CfMjh|@+#Y|(S!uO$6vAm8Z@z>)So*_g?+I6H>S?Z)2eczKG7rpTT z<-e|Kt-M;bqD#W2d*V!l#5M{g5MeECaD^i14f7XlTer=9-ByZ1!%I|-U zLVdkH*I(7kWZfS<_8J%AC&W++un$4Z8Bw+ zx<7Ia6M8vYYsOts$xp%YAD)=2DfG#*=ENPz>6zl+uA^>u-)QRgQ1?H=R=nNUKz*_| z4*L#zi9qL?ow%-ecx)!%XFhkdvGbjKt8#ArIgCIA%-$xySpADArDO2ZTK+6I5pxEH z$KI=)juYhEIGiol?&Cc#1WRaWcyLtO+kYJdGjx9}{bAX&73i?P`h5ZYS;zmQp;{$7K+PJFUT7 zowVi&3b^-@9Y_9FI-RZF+}C=`v*)8~DQjq`0={pK(Io%l?Rlo^aGpB4kL&0F+H9HX z$N8@@h71;WDpA$nkizwoTz;_{g9!5H*0CF%|8^wu2&izJH2-d3W&bf-6b1k`bDWyl--ClFmSh~ii8j=@sFW|qIzJvo>3a1=Q7sa* zh7+l6?v%;K!%t6Twu_kaent3IhEa0Wej0_48~M(q9#H?($EJ|%Orz>^hx+^YCDaEQnc}2{*G^g0@?gAl26HT`dECNKf}(08kyC>e5qNgHktr! z->|yAESElWjsR7|?cOGIna-#vW!ng|4M_3so5w;ns;FCfD{RDNotYSScqG=oB(y=M zn-TA7!+JmTGFxB(->Vb&8onuD&R#{A%l#m>S=BIchgo@RopqXM0!ORKy?7`}ILVxE zt}RX{ffg4XKlj(V6bM_md}-Xo-WyDh6Vm>p>_!Gx16RL75WUhi8K zd^>oo-CaulvNL+^Hsf_O92gG39D0%RGdQ@5RffIt7J0k&{$=YYC*xrwANu`*kXf@tUEQZH`|P(@%k_>@L~8_xjVOqtcoG zVwwA-h@LQCt-z|2*b>l9%$q9ZhNX4(o$URHZY*bDG_#Mp!%Ow&7YE<%Bo_g_)?1`K ze&-z%+HW=Vks`itPyYl8AIE>l7mb@ zGCG;>{rWD%Gz-EjgUl&AI{JI$l~5?X+5JgqUOnbd*WET zX6j$raxC)7qddeTo9>={5Gr@&6=f%aL@(9Sr2cWMjzjJSoR4AfVb7#H0~*D=@7HZd zv0SILMqCCjUR&V!&%snC9bB|Wx?g<`w+Zl50*(M}xgA8>+iEgINQNocbEezw+XCq4 z!MPAOWU8vhp72f+uuBjYYU$DUgo)dW)<5I>Vu z$@;F@>0TQzpvWd(`kC!bFLk6Vve7KB-gi1Z`k^a=f;p3X)8-RwtrzgdZRSySs8sU0 zR7ia$QPCS1fVl*%de7HHy;dxknuD(jpD05<6w} zOpPfsC5fuDNS=o(R6wI^%(|||SqT+jdagl;LHN}r)aCwo++|bU4LKHE*4IH{`7vB7 z1dEo@ZYZ@B#=)=ocs=f(8g;cHLtT>nqs+4HFK`NYHu}elf4}Q!D{umCvh2nX`dqKa zRdqRj2_atb!(W-V$BC({J8m7HuZHpz3g%+=3DYr^o{&_QGIBN^VAP(YDra+h1^I1w z(b3+Nv8RoS;-0r2UhjoSQK>^36f#(gucQ9tOpf_VbHSCZs4p3ROp^1v$%mFQb@O8e z2g`Df4u19J;SS4`NhKZ*w_kl5Ijq~FNYIsj=8mI@tG038L+tC|S6Ol}b<8YOK*3{A zR2ET2)4npv!8I{wlgG&8bD{iFW3rq@xWBNn=R`N{!XBJ9`Xfn zn;%dc=$HfQ2%J4WIbQPzq;*Tck7ax3R@%wV1BPqHPVY@v@AZ+&qu5Hh&9GWuU_`Z2 zVK+7Ho#@!L&-NCd9ZU^)yakbO8|7@J=}oEj*U1zAq#f`vx@y%zz`9$2eFuXkW@Qq1 zW5|{vU9%22!Nr}%zCEe>8L&=8INdpGxZs_}`wRCy`SErzOaTKdI5U0?y=ixZEDBT8c_%mgJ9 zB~c>%oND(m5nxyTBJj!B3PuMI4mbl-FYF}NBq~f@u#Q;9*?W0GOYfjY{dfh&dL*_t8>-n6k9?V5b@msOFE-sAX;~}C zNFGy#5EsrR%7PJhLY>5c5W`W56_zevFGHeyi$F{!2mLD^PdrQHBFvm9tdJ-2gD=En zRR8Qn&sx~yqwDHPe@oz~=grg1^PtV7?or=+s~+l+Z_0VA`7v<*?>n?wpR#XD+`M+9 zxHy#6*#fWFDl#I0?Yb}Twern{U3J}Uh73QJ;*EgmmS;_WWWe`8e?BmM=7*Z0d2ewB zFnx#)nD=HF8~lZurbA|r$`R0G&0S#ltD3@NTv*-O9_WiH#0nHvP8_PWj*)RHk8M+L zE>XtnpeO#Ssz-H_m&Rav4C=-2xj>q43 zs%1hwp(Ht{ZRuJsk$aYc5Me!(@e$|!B%`Z`-PBQx5Jw?q% z^+B94P3x^JEuz!daBB{E^%{Gb9}UVFv#3jUsw;Z2KC*goR$@H`bAZbhPToJ#Bt`hI z8*LWQ2$x_#lZ5I3nQT3gr|zDAUsa;+e&m#^uC$_;q8u^^`G~>r6kKW;%y$H#xe+Hfnm{0cB$!b+SKDA{78L#{ z?J&A&vf_HD=~c4ziK?fU{|=~z0c3c8@}_TK-tfVu|G+lVecXN~ev*Lr%5*E2ypn(c z$3BXz7*W)Z_drA;?gLwaU)Yz;7HOm<7HY4nc!#XO*nnKJWIQp-nkOWy(@(ZLmyK`F z9MmL6LH`9=XP*qevtndb6wIFxSXXB#5DK{yzTQ{o6_(-{KpW!tXsqdbfBboSXaAgN zUsW(lSa(DNTKasC0*K6ugF=zoC;fU!})f2TlBOJ>mo zu$`$@PX#N*r!yr$%rCI2Cn5viW5o%b>l`;>{!3EOR*ZEvWmQK)LxMNc?&=RL!hN!LX+d3-Rz|x$atmE)*Yc5H@_4ZMW2R>+XdASZ7jC{KM1HK7`p5R~g~H)Eo(xpMC?Y4pRPA`C8H4MUZTifEwA`M7~Tv&qbJ>)d;B>h%2q@A zWK{|{R#h4)`O7M%;BBf;B!(7--9y;P7+1ndi%LS8i20jWG}Xq`h0!Z0Wnq|M5kL}f z$wmrT&J7&3QO3YJB7}P9qPpkE7aqs&yWpy6qYuhN>HQ78z@X+!Y;v;``2J#*t*l?x z&LYVU5%~BU+7f>@TVpo^Vt_l<=~H;9TXkSES(!pFB3=2IWnSC7M#-P*uLlIb04*|- z8s6FEFOXQ8HMbKZnF5^M=(%6joP!<=3f2V1(EVUH*R7~(t$AARJ zK+p!Fq?=LK>K|AV;^GY3SmkwgNh)}#74W6@q?RyX$UBEvXVOJ_t>*QR*0_VxNvT4_ z_3Q3?&SqvYq;W*}Xc23sROMcUlU3tXq{?{WszWE3W2)jwEEEM~u;(N~xMl;ZnX)NG z%XOxnre=dIg2)j)His=O6Q>@@IFOVSAlKN3X=(4mnG+@7g3Y;Zjg?0Qjb<%l!nbzE zC+$F$3BG}l_v#wFHC#9>Bxh$6hVW}i`v%+lyg?7b;PYXYXbAQ(IqSZ2EMRfg&*=p0 zUoj>{A~M~0)6~_Au*TI$Qq3S@IP-b^nOB`Sxq5;nR?RS~x>6&MNl%x{A~Xm4*~CRZ zSpdDt?qWg9m>!6`cK>4g5uQCF!VQ-n4W>u;TD7vv^ut5dc(laZo2WqG`{c1%hex~> zkKAh{3?an!$t{gfWO#X_pxnD8-KbG{#d(A1MQ_QQ*=3`u#=6arwCcvf(&~CGuB|Bgx5&OYj#>(?c^?6jz zv4#b47TxS>`pA@1Iqcu+rjUpeeD!^-vzRa3ut zl!XS@yJP$-v7h}YK-f}-lTNDjmIvH^bXjwJXd{L@^^;I}qa~oDJ~Bd8vBtg76Mj!! zp4>lcMlHy{oJ|k*n}oa5l&VVtMe5Sgdhz{;!MozFzYviu8SD{c!JhaZ_^v-=g$|KKP6=IlkW!}Puq_gK|0cr}$1LnujltYG1sG4U!U<4c|E5#N-NvHv8f z(x2Es$(w@9h2JMnEv|JimR*mCxW5-Kt#ynF*78@xr>9Ple+96F`LgemjtS>( z=EyGj5w6Knw`-c(6zpyzv*-dW?U8%p!vwoZU%Qe>0LZVhR6B{K$iXE+&X42^Np>%& zpb(DWnKZh)uu{3VSwSJ_qiKC}x5dB9^+6-1;%9=c1^Z*l&+^P*c2!894{8=_-p^Pw zTvlTDJ1yf8fv);MX>-wp35k5Ih1G)kB6Rv9Tp3cfR2Tn(dzse1)vz#W2;7}0Gt+4w zOHX9YnqSfvBVmU80#9x2&}f_sRcBl5NKD>gz!_o_3HTZ!h#%<+rWm`k%m$v&pQfmK zBPz&Pgjqio(NVJdl6a=yqOChZtHr0Tw~_ax7>2Zg)L8x6JD?d9qTDr-1kebt@a}&_ zO=SQEg-99*@kCH(!nhXrM&p&l-me~nrTt3PF!0Qt{YlDf|1cQMyAQn%snXa=P`s1@THE2Q-c` z1%YAkLTlK9e5{OUx#JWguNi4gsA~;WYPLR?S>v^BNv61eenB)To62%sJnjtS@=IwU zr8Ui>qU~8umH$~=V=2TUt|XO*`CHbq8RBT=4_^orNU@%<*$*u z!6f2yN7KEUGm5tYNXf+G;C}6-t&<&uK(;TsU7I?vIsP z0PtPX2gV<|-JgMxzkVg6Bb7FkD1h|Y?K^c}&gBIU$xS%dq+^qS{sE=v*mgwYb?iHK z;hG0OcXY0NsIZj^b_dxR9B@7BmbzF~b6%`)#Sav}*J__Jp1h$PoM%v$2nb0^1zawx zphg+Wu3=&Z)c253ScxQRhn z;4}Ml6!K0>4k`q0OPc(-354_#0uG@NJ{XN(%t0+a>8GkzuSSBp1So}`t18JG?Y%bm zI>5v_Hs0a16rJNs2n2p~Wd+O4o?Ai!nTcUKw@$F(zDuapVJ5=DaOVV4Be{9!dV`BU8T zSy57X!nxP94I9S-am{p{^UD$Bl7PW2*qTU+JDCSk(rMVdZ=eieFg+hn6Vy54`>vA1 zd<$j-kzd2n+|GFe^bpulb`rKVW~WL%eI3?bC>|a#9wYPp{j2Q>|6w@~#zy8x9crAc z;B*%P;!OWiWtpmC+{EFY5hEgq6&$j^MHWv{0EA#yrX(-q6KrCJ&d+9~qbOa{GNL_) z;bnII3TBr2(81j3IMg_YB?G6D4DjJVK@WNCo%G$^MH+Z3_aebp)eos$JApFHU!sOX2KN zT0+Rm*hR)eVP*k*&vj4D?YzXnscmyidBD3 zAVb_Rpv|YgrW5)tT7te=qb+YG4iU%BUIw2R1E!6vdV}#?$#!G}-Ys@70KO#l^c{x~ zKN@BqsdDrR?UxV)V@{ku0d^P;{buoM4BV5C;k%6q^4EZf2d~@KZ!S?M9g{yw*ft)6 zFL$bArj886`H4!s#b2}Z$*28Ag;?Z-7@Qe_fl9}QW?9nZI-BKFj>Xd-WXzP|2+ZS3 zH3#U4HAvyD5UQ`;$9eQz!Xu@=RDuS$cqV>vI>{RO{t^jr#KDO8%vClk(X)IpVQ9?M zQ84pkR45b_n;oPlFHjmLhvZ1bbwP@xg{S$^I4C=P5BmiCaZr zA|7PG6UfQf02>b9)~q-FEi+3Jp@2Hv^WVN@F6i*^^`1{cp-!P5ufzo}@d;;BGyW2^ zWRiHOsAS3|zF0bLBY47IP7Yj_fdP-z7S%C4jz2RXF4EF)toEC8b6s~03N+u!!y zi-C3=E_%Ck8VYBK7E`o^)_w7hsUMCPd|Z6hv~OUV zjwZ*?E5W0WWc{jPjOxV^pSIdmFx48|r)(1Y8_{`OO5g9JITH9~q_j5wT4leTEmq}( zdb9DaGKBL6w$b=Z^qj z7^3LbGhsdf`-NgOfcS~~S1$c0Y`_VM(7RA+H8+2aoJg4cyNau_+@#l2Wq&YG z1;)ZmVMCBT#XRlz{7W1`)u{+7=ahio8Vi0h_vFuly@SXgEyuU_iu^>2o;Eihj zf4ih9ihZdAyM)A-gzAvud&{o_s8ynY^)(mb8Wc9hJi(j1h+y^Yr(bwGl@tPz%aw6y zG-lx!%(_puOqojnV&HZiLv8W`)Q=ajOZot;>S~^DQ3AOj`m#}FJE8?+-SYLC;GaUP z2`qnK3FQq*L!^`AG4Xr4sc1<7?XpqAg7C=65)c|{m%KZF$(e37?UcS6vLbuGrSc4d z6mtWnj<;WK2YCKNt~c>EnTr3^(}K6gf8-XDkfF|O99mcdAS{EtdSm$s6lHkyhv?`_ z%r(W`U^MgwIJCUrpc5oa#r%eZ&o04JT*2u0Jv|6kL>QT1Wjq(VTRaWR9Cguo4`+&0 z0vQtRv~5#{{5J)7DtabE+wly?GAk4p6SGIiLP?`naq`9zU0EG7hgK`J;Ga=}flN(9 z)5X*f%juThsmP}p#+3{e0z5WNe#2=1D)z^v9T=(m*W(OK!a3gH3%N?>a%1`E ze4+bQax^%&y=moVUiU0NRUZVZIsOE9Q}dnk6dQB^_UZENo@L;Am7Jh3j`6hSNhS69 zBT81U;>oPJ_G;r@8XjezglHl?fpn(3+twu>d9cOwMXEqGkPW-7tvkJJcl$VtHL8&P zvYA4tzVS>1oZ=FoJMk-$uU^>hr#Hff=Y^~%Gg-O9X|L)Ff89~`4EEx>paWoj~f=e`d zAaf8<1NELEih_$@`tdA!gddsu)dZBS`#99N*Nu^h7JMfhR#g=!-DQLXT{)N7%gYnB zNotlCVwms^PHEq}a+pei$?0Kmi|Qq)mWUCq$$1B`gpbFy$nRu|;lGy^O+8WKiE1>X zz#vGFU$)3Dc&x!I6^GbqF-U&p4mFh=ERJ=1bh4vHb$EwbRXI)@)Q+L4ENULccdSImYR?`3Xh;jt^6am^Y;%DnVXb&n z4b0A|iTAp(nz4E^qU-aQyl(qWtwb$T3ElD?5}1eU zPSmAq#nKebe5iCTeFl_HMZeu$O`Ep>TjiT~Qv7}>=hi#%OmIMkD1^p= zdRe@VG#>Wwr{Fee9CUmsBrLBKZsvMtpN4unRC()n>C)iDdo9^%>m4F-QxYWehzHY{)sWaO}J=U%n2VVv|THX<8H)I?<5|WFxjpLW5Tol5v{^Anzdi zTvEu^PFTtr?0==L+vWYu3NHxaG^h<`B=O-9nddpuWg}G<&wZv=FC7Jnt!es%r=9s) z$>yPoHrGsMQn<1%2XQ?q{9@^>SJCkx$#z|-%F+dHmoD=^L!9=&6J7*)2P^9_q-Byd zDr1S2!|mtOU~NqwJo#Ex2*J@k-yWO$yV?o`Av|9G0<|qRBqq;Qh|d2Mh;E918>qgAP*gTB&#Cnd^jKFD8X2KuEOoIxtkznd&(|3S-P= zl{}m`Jx%V`oN-jP3X_7%Ld*3y{tI3N+c*^m67u8beVV8d%xbAFbKI=^=E~PW8Ya(0 zfW+$g89isU!E&%w<_P@b{oQ(iEH-VA*Up|!w=Og>x#T&(UjXX%l+SLIsXf~mR-BOmrgy#=1moOUIevc-?&lV>1etAjGL7St;#7Qm+6$Tj$(@2Gl$@4 ze8NKQz~3TH;E=@j00Q=yNyffttWouwhNV7Q^as4Mew(h-#o9Fmz(xIQ64()-LBSAE zH(eb!)g<}AQ0(SUrY-G?`ftuQva(j7HXiVaQuL|lv!A+gtrZBQ5%9t)p}^Y?Q8fqS z$XWK+$&cEg5@jXOH7Em)WB0qhvE8#?=GSi0&4w6``gSf8;-GN#Qp z#A6X3`*G(m&p+Y<$QiO`=yFeq3<$tPVWXz;@pTW#-5KRRsn8&=fLODW{Q^R)H++3>XfRN|%oMD-##0 zB&<^)rnA}LrgoV0<49&K*v0bm8;Tzc{5)^(^r%x7Q4~1+(eEV=GmwDQew;h$0eHf) z&iUtt(l<{<3V0eG%TnJ`lFo(QuBzwsic5+(W9Pv)C0Q3&kKm#v#g zI;UtMlTM+Cm7Zswuy;cbLcfy3GIlXyCFsIoazllLniQ~a@yOV@AFv=>2jAz|i`G== zeTODDG#M$o}{dxK4flP2Jw<~`P)@^AM;0{*0XwRm`I+!1e!Z3{pIR!Ie`WvY>)4iNRH zzE)~=hyGK|Dl0YR2|3EIb(69G#*u>-R8Z!%vUIYT{-}D0Th$BUFMiDY z%W)H!hKhrD82!!sujVA1UIJ?-wH}pp;{IflD;nz7Auc~#L-^XEB^@dLPd9Fjz`sUL zL0DHQmjXEM3b>~Z+~%9yJ|3JwHhV6SMVKU!s38SH)9TJX@8D>l2ggHk#WdL|GrMn) z;u2e>erIYq7$UKYmQCn=Bf!gWAa*FzwlX&F?cxPH+u02y8Zf!VVtup?|8_vD7U%P9 z7Y;U(e6Z*{MdDGyBnHsklT#3bl8HrW;*Vft_LqUdul$$-Gzu$D+?bb>$nX3oEuPj^ z09Tx^ZIDHnP7w6(`QKO;A>l zIoll*RB`!DxgQ(h84T7443-;zrDq$~l3(xmvOf-tEbQZlg)zjb03mihcJQjS{lXuq z`U!95+eIL^LZeECfGpy~Y>Q~USl(Ws@pjFMl*3V0dpRrNTwHbduoK}Y$B)$WEfm^t zF`d|*BgTdqhROZB)UO|kEcUlw|L@PrK+iPtMvOcn%{sHO-ohrP3%!tBDzunk!r&tr zBsDq}EN4^EyqoiBuQaBMyZItp5}e;A2l{fl&(a!?SDP}Mcit%1#Mc%mK&DwDvfJJD zKc>0(AMN3T0ji3#HV0H$8#J0vh8q~b#61t2)Tc!9X~x*~r7QEOm5ZAkD;BJaD3q$eLTfiBT|oiy&ePTI#YcgPWQ+QUc5us(h(@5pjqnj(J18bi3-ov z?CR55e}ADX8ys8PYILUnwyY15lYa__@rX9Ojis}|larENT-RzN#T?I>ADmvS0f5>~ z=U{plB5Sk^hwR?)Y*cNn+SX%5dE5l%ICj^S<%r0Vc}m*QLSqbQ08vJtEm!Hb1BsLn2qdl+|C*VQ`$E`d`tQSC zFh&&+pS+;!EF^$XCZ=XQF6?;9<+ZRRvq~#Oh*+|YwGUXQwhZpGy-bjKddH35=FJpH zKZHX134T><%|o_#gP8Q||5$M4g!LuevzS^R@>d3JYW+1yIoLqdLunvgx^NVJD3ZYj zk7RJ)|CZJ1$APpIq+gQhMx5{-gq(9G^q5N06A( z7=)Nu@(x1J{|_%8Fi|leGqjGuMVqsr;>P|}BkQT@-xk{v8;~mN*&Ot*YXD`MzyA&o zYYej5nmRTrPyTIm)?-vG8F4+3I~xS~*3O3#zl*Yyz%=;Uv#70RD_9~teO+6k@6F=T zpTk%0mo9LXSg6nUBo%Hel!zl&RiXP?U0BSX)$VeWAXc&D_Ilp9)CJ)8y5|Avh*D6K zTl9Pm+atO3dYjZV3tS&}}t6SAXMi-;f5|R!}mm?VR=E3%6lRodQC{oULo78KV zvz>2*1-;WOYBrS1Vl~GH*6bCe78|2gBnXtX_xX_}1>{X@2*q1aHkT za6BW!&-BRqKa7n9L`0L#;W%bz->tEpRZVCGQ7@T>2FrOV4-74$EM`qU+8Mf#Ef=GB z5)FJ82Cy?fM(d~iSgl`G!J40?(#2Wf;6}?Xt_+^8%hf)tNlAGb&2q=bU+I(f;s-Ec zJD@qPSvSbMi4<)?bS+{cX-daOy%3~2^2)g~a{cocPP;PGwYGZpB`EVGThZ)rxLL8% zc!A56$izkeZ!wezIbgjKeUEJJ`Fe0s>0W+AgvPqx4g2N|veFBba1c<6n3-XyoCFl2 z>`1IoL~pM{ls>v?+I`>T-417-yK^*6iHNpU0@7}l{%o4%p@dFmPn@Rx)d}?WN zU@kfJlA{3@*vuc78_WypSWqD4<*fuD+)RV8C{1ug>>PHh4INtnC=8z+R+e)-9QF|9 zn93lU6RmD9Bfb3_@R-FNDEKzYwqXw-hRHJ)r#aJk&ab_lJjt+sPsru^+fvc>KI(oJ z4EZfLeGQbUPrR4>h%U~cS+Z-U5O@*QYhEh?MyfC5>w!3I7&7vym)LDEb=z^Z5Ecp* zcoF8(5)b4)j){xfVE&llZGS#JxcFqVCf{oF>`!xjoZMfOv#xaG%J%#6Cu{~v%-wct zJF)%Xh!NN0oJ!Iah{{o~_j~TTGTk|EDSwAb%qkoEt3}@2=`IC4lIFULzc{+9wO53ey|Y_NVw+{4UtdnYG1J^i&VP zDksTagem9?F1J}uwzGM7tgMlR`kXvS;4uKswi8ERZP*=X|M5ZoKY&BmtN-i8oqorE z1Uwqbatf~rlB6~Sj6fPf{?4AgPj2OCW~Ol^+QI{OeZ5ZZJRni@NG@b7c_sMhp)yK{ zkhgN6hjXLiPBe880|R4=?BVobq+`ikmx0rpsC{aGL|SsI&xF~P1skE@?DY-s`nb`| z(mpUSp|Ma7s@L}Z=V80|=VgJ!*?08s^48g`K3QuQb`7Th=Ocv6#VT5MPmf3y^C`L8 zy9Ye)i=Hm|0Ecy4<7jq^)jzHP|4%*Hu@nK;)5VMP9RmOJ#N^C1ztQs*U*GY=T%6EH z|Lb#|tB~rI+P#Y-aS91vp1p~1!9tC?TLr5jmpcplFm-2h_4@Epr;NP!g=O|nau5?R zL9bDYt5|<(#~uOFUM+y;Sw}=vRACEBKSjz`g~$2%VpRdKrLl)jEVggWQyE+}ubj2I zegra!=mtaa*Gzf5G){OwZQb8J*najVeRrF`uR;+HBg*O*H^w3+O?c%#B3$C z7fRlNhhp+x?)AYU_UZuT5F5}2-fsi7Oy6oS6tbsv@=G|Zcj1oN+5WN9f!=+fi;oAs zE9)zVIdWL(ox3~aH3?l`{(P(R!cZ(L<+H=|1ueUs0C%R__{&CT)dIxhmA~~D_XAkn z=-6e$>3ZwifL?nOeKQL7yUcz`fCC?KT!l|h5V>VJDJ!CU`$yo~C|oBDS0@R>YzR2Al-AYBGl zw4keSmi^=9uMv450y!85a~w(_)Pa1OY3;M>=&{IB*DSlz>8G*m%_iHbk?e9_Bm9J0)avLnjM!G zQ8G&nm-EpY8_udUx zRyY_mc@~%U962ZXZs@`jn^MY5Q$Pd4z9X4H>P|y*i{krM{bhT$2#qxTl&1ngR$!1y z&mr-21>i1};P5wDWj|Oy`m^?i|#ba{s5?Xa!s6}yvO?+o~Zj|v033Z_0L{4nOHZ`*s(xPC&%CMI&@RVHY+^ zrik)X^zzs1gJP8(TU*;l4cn8qL^ui5aOMr*(@5jl)8I#^lRqXBC4E1WP)h0gR=mm( zh23=6-)hk5@Vwo%)MT$;Lj7|TB7fr}BJC)}Ir1T1HeDN8FCn0K*icSyk3YBejb4o7Db(QcWNkganYp12JS z_%9x{Y{b}aIlfKdJbt3%7xEQpKd_%mf3=vdwbTfoZD+3=J?R8g5+T3Yd`i?z$ZNfe z?H13U``@3fOQTdRm`i67uuQ)?nBcf1fJ>VDi~rj8CPK`_dMf;m3tDVzNJ>GreENUA z0EweRFei`rwU?&6H(K zk?`s$DAJ-e=jQ~gVH69?fWTwXEWqYA9LGhoSfhayP7U!?+;2w^K!}h~%Uw8U33z@M zp?*(^%fL3?wF2!qqF}ednyXX-rvSIPKI#qrtyI%}lQMUp-reqIxfD|b+IaSyu~*5^ z41@TwyT4M;;5f+uOJwG5ZBOS(WGM=8ZFl?9+Hp|zVfNLo873$4hne?!!g_jd?dReW zz<>Ywm)klM(>`-;z*~2A-oeD|n`lzDJZc$Ms4?;uau$fFaA z)D+^G9VxrJpVXV}?X4w1ub~(k0oZWxms`K!oBRE}%gX>4FW7O7TAT&e@JR7gGoksj zTQJmOg(*E)(p0^}jbd`(ir6NU%ANN&@*8q^+)tHj4O+_>nS92*5%x#ly~AWt*eK8$ zKz2+6ZE(PSdw{n*eStTWEHe6)^2$k;KyuR~j=6n*ojS=C-d`d=EdO$b?50Uq06rg# zVOR<2_&Mqu%D*t#WH$i_#cZr4Zy^RljMy$euP({_EmpYEYMV#Lnq}oL8EJUK{BIc_liU&i z9Upwef5ftd!&CL?KVEqYJrL-A;UJu4AicpeVSKDXI!Wf@+7N01n1|fSIyw%aLjb?! z(j5f$77vKzjBVvGw=gCn;3`D5O3u<8KW1YAindyEAlnJ%er8_gF&)_Pv=kw5YUz%q z<^z)9*|HchNp6W0zG;5%`!w(Z&$(kELg3s9x!yxlhg;DEH}ewGM?qnOmI|@bUrwhD zoAe~C=UhLXMnS#RgRJmKGcSS?d+(xVg!-#)_a-y^_Q-y+lSKRsJ0YOcf8ReRli|` zR1iARqK zqkk-&P6|)G%?QMDAj`8JB$7s93CAvO35qd)kVA~Ujm^(rd{ulBRjF{CP@*5wqeueT zbZxqp(C6LC z*9a}O6oxTH$YX9ZL!RLPqMZVyl9@QI86vd=-<@NOb zi^l$sAU_b|nZ&n{MVCcVzC2$JFT#G4(Kt)qWe@NX8yjk4MQAVb1@l7+*c_GWDHq3u zBox*1-;m~2f61s(sy)bLgF7*3gaq_nvw@{h4~Y}N1M*k*-`}k+5iQ>}KPGtU(8%05 z1ovz0PFkK9)?=aQU!8KwfA^{wlk+|GuGi32u3z&l1nF<=;lC+M23>^4Xz6g26_vXv zDhexzawwCf4rcWX286o-GUxZ$ zbg)n)Cdbg!`p?ENC@;z$35!ZX;A5BCQnsAK;4oDVop#I()tKdUz67Hy;sd>;eBOyx za3!DRbtkF(Hu8l6`hdrm%`*kJh)-J$?akwIv_#|es()V@=c$a=aS#gm-& zHU*YTQyuYx9mmM#K!Xve*t|2itYeC!j9qv(2X4axmsr{BBxQ z4V`%Go5{+`Bw#Suys~g}E5RE}Rp@egIBnR+W_bk-U>3gS98xne_Ue(Y!c131)1AfuXEKYG0IBn43d z0pm?H)zz++hQ+a9cpW=)KZZE*x*=ngDyfam>^5-2!d4zV3A^_O_MI;z1N?y)20)2wyP1$I*jNa*|fg-pf3b1e|-#fxN*oQCk zN!>eR*V7JI;rSV<@x7?0gakWFUF(%LtqJ+$r%@gdK@AWr7!Z3TSud-(_ZsySE3QklM=xI>rGqwOC5n4@ zIb`t8?bLVQEC-Q?YEn|YI32ze5oy<^JIVQLs1?;}FU4!B6l(Bk+-xky`1>Wk<;sA2 z#@x>Hjcm9x9r!0c7+rDzCUI^mMT|}J-4tRCTwZey=f}h-nZZOm7XHR5W;~&*6`5)B{*X{23?=*eN1KB!!ET|qg)Lsv$Ydb(A&b&ya zxrfaR>?lyAJN>!9LVanuWy| zYgRL6y;`O-ex&B`_BJ9SLwpAx8kN1x^&_RXH2RFwOxJMmW{-iv>nc0l7#gunquKbV z_=%dv0Gr2Rx@4>KN#5A3Csw5G-s|kON{3{v+44?VTRz6>ZuBtf<*%rOZF4qnBUPU3 z*-+&F;p?BGEA857QFO+(ZC7lwVpnY2wko!5I~CiuZQJ(A_wTjZY5Qj1&D+`9Gsfso z*DEQ7Qk|G6Vwu_Are1aZal6^aHtw_SW-wN%et*5LLEx}zRU6++DMHPvk-4p}B$o7B z$+=tIe3yPI{rx^BgRPkfD~g~yHgn_QA;>X>^Z1q<0T0TVBMT^J!p*%u(lpy1D&!nx zd_RU}Gscu~Z!lS3f7zRg-3Y&i`Z}6~ROjZh9?5%qB z=Cgkz;txilji_JlX#v-Dya+4DF<;`7p8~ZWkv+l7yG_-V08>KJ5MvJFr?K}}Dhhl`I z&3HY_RQBj0GR%^ncHYHE-|nyIdIk%erKXNfvOV!IzWes!^~*i|)QkSndyb3i`5X77 za3sEvYX7$Hx}i+J!Ll_c6ED+1A+^Cf2r$kEkI{=+li_{vLb3iXp2KuzBn@51M*elr z!NT=}F1o^ZpZo91;pisu9Wu)AisbY}&w{ zBukfzHjh__sV3TU(W|w(E@mX_4X>S*b;FP+E<|+v$JO#}*NfPJU=SvB9F>Yc?yuTK zRZ=7LdGb_`roYmg3he>hcDv+-&Sl z?U}tM3D==A#_Y|nhnu*TQI+itw}yGTm$KtD0qqx>r=H896RxPx_PL%RrLNvymVud^ zY4ZwcN(X4CpRt0vW%D(0M8SVc!n0`Mda~cnmW6Gb;NWDZ#^}?vH-}yso|9c^|My7I z{fF)BZl9`;{)g=_{i{YnAc$|nARSlis%{R_Qws-_`<;LqJSlDa(rDaFYLa`=;FwH6CNK z8(~t@$Z^mP*^}PBNI4!!tJRv%$Kq|%f4-%$n{0JxY4LpDHd!ZMXm@SwIkf(LdEee$fL;b6jNGH-*Iap=OCT_Rg`PpztrFv5o2%9htqh%i3)roX=g>3$b*&yq|4& zgG131PVY9u!?)qTANDU(Pt1}^9$J~EU(TCKFRy*ef@9>|w~{CMnFF;zOQAxAVtH)C z!nV)HBx6zrM1f~p$H|tHgBHsEU%iutXW8|!{EG#@QY|7l*V)HmlX_T7*xoX4K|M^Aht1>DIsEUp~` zeT}!U-u5KY)cN>%{>Pa{xtGR#rWDF{t|hIk^kmFGcPIGJdT+hmwBuI)idmvFqljSZ zo&4wT`t_M%rZgLPSBb~pBT@;X6Pu0u2&a{m zxT(5(KDeP#z`5GHf@?z`71fxd?z-f8cjMbnzQOSZkm_U0HBJh$!3gDz2#zuC%Xj~o z4t5ED?2!l%rq|T}b4NlD{-ZU&8HZd*1mKCdRb00{IwtkwGho}!NhkbMrZFA?T;Y0B z5S4-<+7~mn`)AN`;G*sKK!&95WI?W2I7&%h3x>vvs!>uvMt%y3K@fa0n#*ENm_^P!!C#tOtT@)iDw z;t+y)8#ZYyw(|6w)MIHdvi*sNj2q$K6CnW|tIvjKTaa($;JSPwqV`giR68H{^NY3FPLqEs40>$B~EtPE_2LeQ%jjIPQWX8NQKrGTOH0ZQJzd(-gjUjxoYO??ooD z(q~~Ksq_-%5Rty<_@M|-!mQcus(78Dw`pT#h^J)NO?mvWEq9R`dUj5j0>zGS2XK|=hI;D(v9Z|IA3WqqzmdA~(spQLo+_>vjN zVBluvenP1Qv9$)km%rk_DxFSf3Nkb#r?s3}45U4wGYvB`-r0@czkr<&x6+Gl}_-KUb29-FOt4~A%iUCF@dIN&g-VmSW78!PmRWyRq z`k^6k$n4yLd?ch7kBu6#_$B=IH* zwIAMAt5sTf!W6QgoLbSN;zojc73EPZ<=YEml@DQ%Jn&H6iMbHWd%ehmWCB|g$SBSE zKj9FVd|Vl1-ybI$Recyl0Wmj;Kgcz>NIIc=Fc2G19}jS;ZCHd<*}qk6NALuw9!TV_ z#iEW9^EFD~-O*M>c>hx2hKyQP8!Bx+*dc~K;h~lm2w87<&o=-d)6Qqxf0_<|wHp|c zjR%?OaW&gJkg}NnaUes|Q3TXk-jt?XhRh*+bQ$>SIJVX^cP!nXr>L#Z{;j+n#K9vD z2bP~9ka?~wCINQ3qFnqZY;1m7fnO4F!U#9GKElXe$@kq5-VkNb$!?x3Q@peN z?e{ok%fPHl8gB%Pgp!4fQzD6g*1hD#Y}2IaUVh}`E13f>ai*%@tl5n1Y$IcA)dX#W z4G9PiI}9`W0qW{Al0zo&ik%~tkxQH{M?gzH7|~t$P%~815!)ZWOR@LUMquIeuRyFZJ83+7MzYRKfx}t+Cp{^j?O|LsQwXcabl7+_N|t$ zV)>cxb;9mQ85c|t*F;*t>aB=qUk#Gr@qn>dFOLr(o#mK9&sN4X@Z(qbVzEkBY)#fS zq5s8%?P;1k(I{PxD4LI~m$MR$UVh)r)p%B_h1rW3`3HCl;EIWO z7SgVp85%OktXEuM$eRlrHm;NmP$jrG0IQ3LKceZ=IuqtH1&g& za&t-hmVUBg*6J{zzI0U!gdcF)jhKNaDFYh(7Dk_Lq|C%?Boy2nT3GoqV;Oc)X?iBNj!`^!wTh+ z&0V{RKK;cjGt+k*TRO6P>wV^`;P8e+Bb`AfQzH!Ndih3`s8od<&o``f|g#tk?5 zhBBGst$MLDPmzg05O+_EcxpjW`JT$PWoGLPlg`ku76Yhbf8qRNST1PrXv^fl&?L*b zF)E573*=C2Xqq_Z-Era+1=&{+k(Cb}95^c{A#$%JN6C(ioTYq;tgybjKE!z_E*i`i zq^D6iXF*!bslj7wDHZ(-Zkz%m=RIS2d#9e{u1PMp-LQU&_yrN-v@+#~WzTM$=n!$) z4p4YzS|nR%?^f?bq}>6CNpbe6+@XN|)2Wy^Oj&tmw8PU=WJjU<-24lHz%`-47z3<` zqW9XWl0HsVrvs5+Uc0+DievhTsL(J*^>k$lHHT#0v4uH{LkJhNlmN}RRr5jL*oE{> zKTtH%g#g(o(hcP2xkntS{Egzn`TNNWMf)QKVQytoTPnK&Y}rz$O&V^XgmpmDk0R zFfsxP!_iT)(q1GL1H}aV$w}J|_?>v>xzg$nQ1b)LJw}RrK~Zkb{+Yp4_D3B!jPI&< zhvB)V%GH*ykk6CRb6%2rO+f8`7jdZ4W%+g2ABf$pfp+ zd#+AzClRpT1jNkvE6^?zLvKAi=!Ca65k3LsIguBFzG*((TyCx_uDR$6@DL%6rlq#5 zq{Pi?d9rZIPux>327;2q$hS7_4F!yrKn2lInd6z7h`tK&N`&?qOhXJ@U42XZ@>0ht z2&)~Cme#U0HgRc4n!A0%EI!d^%w|Ijmgr%x*tqF4FsXYo*&2?Nu_|&2A*X=wP#7C- zjEp4pXNVRsezpFZWHIN-uT`nN2#03lf-P8~__QUQgBlK3zTP{pQDr$ehYhv09Ws*H zgYA<+7v@1Ssi(CSL|NuuCnca9Utvx~Z2z0PUE^LknFnvk@^|caE;_)7xIAGh@Iatg z>e=wLA)J}BHQ?g(PJq-cE%iQAf(l3wd}_j~<#8M<4LWzh@v9HVJEdkuM?8s*TuyGX zQepA3#a3X9K-nrC9W96p2U26jFLq4=9D>@@*{See?(?;4Z%>|m=`|DRc{n)Yv@KJ{ zKb#a5=_2La0Q-Zx0?qA~zDW$oK-0gW+#J(poT@e(bO>EJ$*qzH9ndlV&;H?N+Z9&_ z~ATu#54YOMgKkeH*8i+skiIEt{}M zCWZ%r!i4yf*OoT5RPVL3NMKDZD2)4x#1(B|6#%4;cJcBr*yR)FIT+4DY;_ccJ~sa& z_lSdW;9IwO29Ju41%(V$k}{v<-}kT$*a3*moL&vN`obNtuF;y5-Jfxwob#mmwSAPN zu=>eZT<@+Alp)Fw+u$yNp0J}o}Ci#D2Zn(;17*B2b&^ZdFrX|n>ZCekOKgb zpl_AZlO=HusDv zhPWOPJ$FeWWjG1xGPgK{ju#l*=}1mUrhz11C!m2L(YGR29jr5MqDhNzV}#xoRpe&! zqx;AqW7-Ql^WkU>_!3UAxHG^ivphDff2y;sGT5zz9Dx}m;B)ox;ejKh=Svnv)wA<(dX-H=s!TO<+}ykt9;BFXUm|ArWzATu5QIY@a1rVU}vw))vPxARTnZLA( z$aP><$)1?V&Q+2dy_=p1EhXqQl^O;ZMgvymf!WA&g{KAv1iL zd^e(y>pm21nTsZn0(X?9*B@X!Ub7t{s^rpky{rmf+t4ck0?h_?(8b#szx8??%e@ZJ z9DV)#?5}HTcZa6Iig>nE>SBIx4QmD|m&t2iczAAa%i@m9t;S|&Y!s5?(^Kd}G6>YZ zF|f_W74y?j9xXvH;=xl)-oIU{6rRWm%wSb2rsN#4n)zja574!X^GOdp1NJ41-f3l^ zV-oFfM$cSguE)Gm>OEldB}I0KH6_Hf3hVPpRh|_kj`HQlS56r(ma!ye(LA`hu<6e^ zD5f2FW0X)<&c9_js6b~E%} z#7G<^tau&0b;5YTQFDm(Gm|St)5W)6eywK1A~NoZ?o=P6dZr_${%l=9z|N3>43Ft> zuxf^~&viP{kc{&$p3^AwU^hsBHnY#l8zF#yD%6_KH~(Gu|LbZd0_g_XTbx)y1gdye zf4aY4`kJU#EH?%169Z!2h>SE5=b31Fm77OxY}RdQ_~-e21@y=^HCDbW%(|trqz)2E zEvrx0QJQ!P&KkWUYwWP5xcZ5-APam38A?G$gB71zr7W=T7HUTJ{73E1VJ#zcUX%94;k18?ezjO-Pd5rrAq z>`2zBx4Pc)D7-jE{VRvvg#dec0w-Mpl?x7Y)4ujo>^v#%8H{95q$^8v-C4dey%pIm za0}4W0{@kP94;-YoHI-5NJjdhlAOJjEuRA4r(o)~;8js*)?(z2td7&AXi6;WN?r^a z2+ot{X#>(@wp>&J^AC5rLwk`&by8x$4hE8S9xW%{k&Lz~N$>?Vfve$gvY8u1h{gzi z-t%>=yA=9MS9f-Fo*fNvxBGLKbkp1f_y$)%7vbvxh*Im)MR(rrcn?rDY)SMBQXvhM zda+&BTZ|0pHVhjmOgQd+C-btJz@=JzrV0J1JNRd(CN*Af_xL0Jr`)Ec|JC# z`RN?qJ9KE{5P%kW0=Wfl>rQY! zV*-#pLydgWf#eXwHC)QGzmKBfuZ25r|t!cLK)xv=q~&mX+B z%OPN^Qz;GIUGf&iFx3V{YBy^ZFa;YF-!6mA^xWK=Xs>Zq4ZC?|U^Q0R^@ zGHX5S1}tXdh7>=g6P4OBYp@w;-<)oXwFzH!1u$8iMVe!5Qt`iab<1|%1VIBJKV%?5 zM;Eq1y%?@cDebTIb=eA}QVK$>CG(w#Umy4J>}{iN$+5Hz&4|77RGi9?9on^Az@)It z;mR=1t6I4wkSvV3pYc_O0>n#X`at9qnm~IANlRF0%}$)cNBwEc2NfF5z*w16(CNUn zauSS)f|o92pY1uL8QIk`66;hu`_)pa7|98VfLkd!+cOHxh(Ok)9l4(T*yGMk9(Bnx;iczd4$!T%r{>M5L*= zYIiCMwu9_(1E=L!hFB8=4NL@8g@*lJ>5Xd?JT&=i^e z)F7SqsNXNB5~(QK*Cw;zS8%zaowt37v=K)>dDER@DR4}72!MsV)9y1?gq*##;<6#; zKh;GY?|}?CzfEBLswvIAD}LjCq10z8R=`lXi2-F3`L$~N5~?AQX4R>9SoPtaAZ&w! zT`T%kQG}inTJ6od?^FO$t}NY>nxIMwLDb7Yb*X9_T~IVG7)k=1r?&be9yHWki-dV{ zK2B4|2bznxoB#YP2U`XbgS9m#x<>%2>S>MGpK%sxXyb!9(`a3V8)WiOvaC0fNjTPA zGP&v`T+OcE4$~q0zzBH;J(V5gZ-IJCYK|`SWnzPddfXAPDHV&nDSibdVh?Nfa@FLOw&(h~C4AC_f8VJf? zr^NrH-c7P%T4^RaNRB-)b;Y1|?@CL&N@1m6K^Yo%MictTTeZuF z)=Tah8`)eMWJ45VUDa2W0I740W?q@LqtHAM3v>bd2tiKRHON4ZxV|$nYXa`H;rnZI zH-^tWej3I*Cl-2=?*z;w$HpqK+Sf4kr1b)6=$b!3Gn)CET}FDYf%Ffo>APP3s?L%e zx+xE#WqsJ6NdUGu?!)j6>mw?!0`1r-H?UEhI~y*zdgK29IHBkxB;F4BN*3^?n#xB- ziZnWQkGzl2-_n_}o{4CLDJ_GE70?22nUHDCRUmw;3AKtgz|>^{>tB4u*))W1`SpUZ z8)!)N4b<6R7dwJ3sm=!+LVP>7*sJg*pQu2Kf&nO%2f-Oh5aY{JeEqd%>$=cF{U(is zbbX8zNvomMaVUwC5ShjHKZ10$zZ7OmTv26f)me~PzaED}u%WdkTx=doNOcmcpdH_| zkQXjaFj^Wrt!gxA@^l>nH{OxixUKhgzCX>*aIz+G&Tl`_$-a}?4n@|aBxtgO@mZwk z7!Z-FmE|=+!Lc&JWW`nBS<}Dkdfu~GXT7LMElPXeLqdOHcyGYSkRkT0R$tKJ9Kbr@y3V(-(Pouo+<~rA)vkh9X zFO_vwkDt^tT{q`^s_+Y#1Gn!3eScrhy}s^^XhdEmH3+l-$*f4R z9ET{oUVX_WV+w4gcoK{k1Be@VUyxxz=bwIVm7buPgF~E-CX6a&G6)(Lj1US6%p)J_ zA7%NoRDHz&+Pp^p3+DS6o{0VsDc+J_v{m(pD?gz zyeG9$LpqIavZ<_$(@(g|7GYBx^G^%pe3zswv}(7Xg>Vf}3_Q>jwEd9CW(C?|ouA2> zy2_C25jXMPN(gqoB7LAw~)RmGPt7{GY099aYg6)HZ~_^{wno%-@xaj$pAMKK1! zklk}u9(zS~)o>hV)1P|Ya(vuA#9Jl!#vZTN6!ZtKj`UFTLAT4g!{2_+@y%zf!% zAue9)c9`?AJ25A1qCt8RK4F;yJ-oCr*R|+TLJ@aTmt9QW%OAkAI>D6hR zZ#2%oB7BuxHGhrBofc|=E)c+Z0ZHWQ;WiCN|ES_v2->*wA+Mx6*+#_b6)}(;DgpX^ zL&^diu{{ED4)u*MO;hh3;JAr4&&*K`0UiYrSr&V2I14zQ^+mKm`D#Xt< z0o66HRkld$Vx@i5QV?*(fQE}Gd$`OsEll`iohUo%XYuhmm5ktf;=i9{gmlZ~ZHM;2 z_sADxeAtml> z5Hp?sw&@0R#;LIo0ucoobkoiML8lG1_A7Zz*RTr+bORKQK@8NVi<4!CP@XnZFk!=3 zoyHY24F6P10y!0}!XcL*^RYUfkAfqyc9NOaRC*leMazBmf3Lvc(}(u_)C&tTJ?i>` z1pt0{Wa67|X#YlG2q&PP=eJ*)v*w%sfVk6kSNX_VopaT z&qW2Y5)~mSyPPS=@w;cg=V518#>ViCUn|Mzn(IN#SfP@UngW8-f4M&uyF!FDgY?=X z9)bV+G?edktv)yawjNlkmC3-)K%c0%Mm!?6nm-CnN?HsPY?5cQH6G~olMY-MKtkq1 z+uy4`;eDN-M{YXQU~#Uhf$|j0K@#O<$GO9Q0hK?@Xddco`}(1m3mC;5)7Q*&jX}-MF^rLa6ng(6Fw0S|z?1iTZKqwUv_1RSPp-rgCmDl# z?-K(cRn+P&+FfLpydIU6mJ30rmBDOJVCRx1Cfdly8AA=Sm>FyHF-m_KPTL8U!inek zK;7d7R|ZK+1LmqlzkW{*!24fYa6Uy&^RGt;akTS2m^n(z!c(p)FQxK$?{f+^oXy5H zpF#K%atVP(T0M@?909@J39<~sZ zeFTlASO0>+gvlov^hC2nf7M`urX8r&^rSkSu8*j~ADIF3t4?;OpO!GwV%{Nh)=tOE zY_mOW``~IY9MS@&Ge_4~dYD(P^bR^NXX3<5%b*Ib0>>s`i|A3L^^cBZ%?OStavyZa zyxLdvi;};Yb!fG(+E7JXbo+Z~b9tDkY2-`fAHx#E!e6QO-N26|?$j{5C8YO2QH*x@ zsq6mxNnW%C<8c-7jHtq9?PFO~15p*D<|Lcq-vX$AL#+hI)$$&CX$#`W4f8k$xHBT) z8j&=G1+G2&aE$7RJoL;Ml%piIzA<38HbQ>!S`}s0_FEq^1gh{2An(sc^YnWLR|fZS zNPaH>^lvIH6ZhoPo)ecl zeak`WaiT~n#Jp}-O3HE&*ppl47`pqCKxm{%X+u50R?=**%KykGYtSITUQ$v}KzEDK z7>!a#N(x5+yy#y%#D>w;lRs->qPX%17jxrdd6d`&WDcQTFb&lyJ$XxJy2VSmYDQT- z4zyA*8-CNT#x+C^oz#{ktQ?1#lr%QQ6kKXBequ=o0Gkt8@x-#jN=yt^*3(mh9NfZc zV?kM2^+>t$aDu)O$6C|opDsb#Wd8x>qCF4sp_ny}Q~{jve4+RXJg7_HGbfC?I*XPh z?0V}r2wQCU<7}II^oR0;3gAD*B|6m@I-PnWmsP$I(F`R?!_%~f>++)|p#u;ab3C!i zx9c%X0ab-sPLAL5I{4hJ>DVEVjY$WcUZ;I3r8@g)#PT-Xw;HWuTeSu@7lxkXAXZO# zx9(n`I^$FgZG?iVCJenSUC~vJyd(*#M$X3mQHFhyujxueLIl7(q(BRY4Cxt>m?yn7 z1goY~N@(Rv=M$1J`9>1sUxn`8sy2d1CE|(_v-&I)-D>cP097bKN>C&m8>Lby3rB-d zFD|;ijnqG8ouPp;hQyI!hvx)zd!hjso^g?jJ!kNmtKF>Y<{zQPsPljkn<9V-izTkFxgP#**m? z1t@76DaiX41`_VWE8mNHK8dOp2uc!IyeA0@}T4rEzs_S2^Mz7%|V` zpEdL_-mcQ?_)o#3#`vM%%C$QF&i+R!zl4zd=y`tq;5a0ttCLuEM$N}1RbT<+0fW%Y zjP|C35xyQCmP^3!03Wgg_N$jCF%U`LTv5sc>zc_-*2DhS`*!;Gi~TZhZrAE?Kh{;1 zaV;t;&aO_+pKr4$zf+Q7SBQR~SaFU-- zb8WxVW#W{e8exGq#X`eugoSB#sGH9toy0Q}ojzt9TM!#Bmfis|>ktKOr`5Ke)+ejc z-Qx?a9EZxS9Zs&yL&UxT?OXi5gJx{x+<&BpbmV&HNQn1oBjfRU3X6}204}7bF>EkU z-;=dc&2u{*m&5^x%c^KajEp?&HX0URVva}3B6i4ldY-lxm6a)%E7x!ZBOVsJZh!q? zb;TTG8ou%iOHOx>a)?xnNw4zZzlXK=;Vnf%ujKxz7llT`&ahG9Dw(kM(@Vd_{e%_1HT5NEik7&h1?erH*Qyw>=c$~J? zwl#1dTNH!O2=~665}Om@xE6#gt0?fNbY&akc-A5Ejfbpk?IRC^lfIwK6X*WCO4Uq` zs##1^+H`8)3QZDka8lOqViKsr&bEz^ik)92;_LW+0;>F)9aSV!P>>D!Lw`2;DlXd5 zA~F7lm5Kku$`P&%8vlQ+`~XLIO_K8#rY-8Se5|82K$y~=ux9&VsNW3UKDwd(BUVc?c^r725q58GPre00Jp^cR7#h=f1{ zqEVfZbGeuIR#R0u{erWt(K7zCZj0BdGaqlKVQA0o8V?5OKy9B!C2y!7Kb(v-6w8F} zYBT)=QB??P4{iAE_)KA8WCp>X)vX6j1p@+5=P4`==cba2G3~;eOyE*kfbkD>S^OdA z%;S|?xT#+4MGo#>C#>A+=bUO1s1#_Cr18d3e>oMLA()}Iqo6G7j!U;|0=A-hEERT< zg4{9^%({w{{z!aOaud080L(_u#U5PYh?NqMV;f%DVhcd;6XC}I}T2mlZ*Kn5Tmvj zpcoQhq}jV-eN0OKcJ~9cbrh@}d{B;|5h;VdN&Y8-<8-=|bTjC;#ik2La4XWHPT|xe zf#wJk_R{F%8Wg;WkRM6~&*m33rO7496H9$6Hck*4*}vDKCpD8imNe3QnOSE>fe(aC zI?El@XnI6_`yb^+Tc>ux)YiiPQ#m5^oGkVS$t%!nk#U0E49R_JuuRh6D-ktqKgX_Eg&I>w#B;C~~n z2f74{<%U2UdGhojC3l(5%1q1Db@^WVr?^Yg=b(<)6FXL78f1sncod81axH7&%q_WY zxHcfdPfHhwRn;NiDo<^f55aV!G>dTJ>`rfFx6GYm*%_=PPT*{9dbgm}4DJ$vG3`RVcvRzm8 zgYNFK*M~5MaQ&43iYirO+k#{-H@HfkEp6MpeWpWtoEDN2QRRK!yYc&Vw9g=Gbe^#R z(;2TuF%XST98l*{io_&sTaSDt9n2dt672|pD_YeRn(dS)F(zq?GApvws8(nrRlykq zBsL2NBo6xe5t^nP(19b^rHopnD-upq&SIDgy*{=rTUAiXgJ~qD{_91SEX1R*9}56_emf?b zLFLrfH0Nmux*xYJktYHiFQUw{GW$;9OuA(J1epLYC`*$KYpHO{IWO}6faNu8nDcjcq$@byKIGx?x4|sb2RT26-=$ zf{=y$d&vCJaU_-J`IHyAojhvgQl@HZR$|M&9pJt1KI#d0c)VI{_r_~HeAb&Tv+q;r z8i4^ti>dCXb2W||R}jz<5mKH!H$CV8wNob!jmmeAB@+CaZ^f!JWyAe_gA5SiCK^Wd zXZwv{!1Pbe)K&V05)2%#(@`H-6`)zm77c*!ggHd>dcO1vu0r7t-S)q$cC2kWEM1RX zujjtGc*yZ&)Kx|vQ&2Bh6qH8EEj7T*YVs114Le1%m4b)Zv8*l+w@ala zwVHTG-AYkPUW_Gd>Q@CQt6T;>B+K>h9W}h z`1kYq@%)M>6VnhtoNb1qOkhdM`}mSW&*z{CL)YUkU@t4BT6*YelLqzfi@s)hA?AUZU95gjYd_D^ip8HcbzEFW>O zA#}wC5Nb$z|7;&;VgbfU*+2l0zf3xi%V4*|=g>MZ7txCZ%XMtCt=cFk{}(GWQ?nddzD?L{dfncw#$kGd;bAKj>ezXOn|a%N;r=Xx%|^I( zd`~;JQD2a)I0gVzZLv!}<3lANCjxuCo+aytB5DyH0!_H-vx#Jb)%5DnK_!_eh45+MTZvKJ5f?D=b@Q%4^e0NeA-*CdCnt_c zA(8Kf)%Ih=`%TtzE?+MTqdt=F6j!Pim;c@ZU;h6%m1q9HJMjMxg8y;kt@PyJxLjOt z)jAGC^nAGd92l;fuTNI*rf+9~hnLT%_r*2c6r5!pMezf@BO2LJsU8+>A7eRCJzq12 zck`yim{Un&fVj8iSfVjA#`jF&%SG#p=wtq!s*5!s6(6Lk~_&K5Q`IcR#+!K+irXO z+m3+y(-|X?pz_t=<2|)oAV%Pv3NE@(T~F3(EcJcO?P}778@<*4{t)i=eM%u3LfW)U zrp8romtmeRrR#npC~LKvf2FDG`zPN0<)$V2_O@Qt_wg0k8W(rI<~usS-qe&EH=1qp zPy9EJy4Ia#Nz-lBlJ&aJt(m@l6Fsx`!r8`Qqa}XKxo<1Bt~(QR3efta1jk(JWfyuH z4BS7>+J--%*cYams;rERGy4T-kYT6P>rX^XgLWYS>gQYD_ZVX0W@;tFIUhl=YSr&e z)aTf;pB#-_)rT>Js%e<2cwF3T_vqSU z)E>xduA&mSgu(fgin?en$J0uvBx$^Bp4XzdtGI0w7BJPeNd(86UANYGjqBxgbU|X%yc%Zj zEVtNQG-^urn_@KC!9h(;L_)$okDMaC!F$Gb=bvebZ(~cG{22dE^ns`^{zl0lrAn(- zUPV{xv*Gf@1D-xJzel}#;~8sAApxHwl=v4i%5G(>e0Me$O6z2wy{AqYZz7qSQ&|c5 zpAkJ~A@x?O+973{XCU#<6d38^RAg-&xx+*|p4u~;kQrj?1Xs#I4C#K#*fD%;Yy+=9 z-Pqal(_spmBnm}PV9ms%IV|v;L0v5i4C4|o6BO;!<^LB$^=$wB?|tEI zfhYj~k9?Ks0#oe9c074er`?MpbEmN$&nElAp1+ zDxlO1!ehw+-RZmapZm`Jd?eQ{WQ8A)fEqb$#>yd8DIc%jh_B}hrMH(gx)VGZ8^4ZF zIe*Ft|qSf|jcevA+(Og#mh` z0I%ea%ew?8=CT>d8Rw`|02DVH4B+ zX+y6$MvdWm@zU_!k6`<5IGx=HWp7{Nlkqs%rO{a4*^mB2I-ngrFyOS^H4&G)kjqWr z;dJ`8*-lT^Xr{pYJrGtyJI`Kms@U$QPPVH$K1K6aqnZe6+)IPG_5|(rA02_UOmLz&uyD2nzkA6s zQ?&i96>){UOw3qr2wW;Z4E6{H_T*%TBpAgg5F-Mh(n?x`t|uL6#4sVx*e4rgN*B#B zA5f%n=3I1%vaK4`z3_m~cS|#1Fn~W_$+PJM-tABW#SwD;?dRA6r;KLPXQ8|HMCW&2 z887<8=U#JcEH%WE4eyKNW?NhZs(-JdGj(KcO*_dHa$o3ryz@oLl=YcqErM@CajjTM z=i_a!P3N2J0-3XicglFyTFJNkPM3gnt39LiiXq_isyxccBe(z&pfMSkK_O|8Pzh4&yXHn2ls zVkWJ0WPJFvIcuN56GBu-lL@|cH-8DGWbGS=cro>PGc_hfXwP=Ye@DlA1%d?P|2aB( zn=}4mnEHhb6Zp*=E|xKxYpz>|lHwkCw{H=Z|Jk{LPi#at_G3Fxwdfw+#)go>#KDt} zB*kB4QtBF`BHrEAa&%Zryzf^1G?Xj&lv~V63K)D{o2+r<*YAys5GrPC=YPd4fB&0; zHFtL;JR#tBGn>ye9KL!sDU|usW33HMq3=*fZqGIDJpK*dsgJo%f3@~Cf1BUuLHmy2 zq3CP-(c>@G?R8niSqkhU9P!!Y-ODlv3)tF`m7Y}(O2tVF`hNVTa&L6%2RnsK*l2)9p!&}GJ%~_ zhgMabTT9sXW`COrH-^zfzoSWAs=Vk zA|dK3-@#2jm#W*9lW8D_B4GH7riC2VFa|1izxi-nT3TM9 z%6KBu-SmK?DN%q(h+emyg}>Fj3Sd9V>D@^%f=8_4Iqt+3at3Tq&dg>a;b>TJL*J!& zJ*~!Zaj9DDvw!a)yp_S|dW+{BGGU=Jy^%MnvAmAbWJIvGy;suMu4}%<^_u!uufFI) z;(+1kOge^c(~(PCmsX?8=i#Q^MjLCr!}+K@N*zon6eA-@ziSJDIfHhc^eQs6lHhH( zGAIE#V`0JD;rpD|dZBQ2)KKgWXNyuIsKdY)0&IbrtuNL4C2=th)+#D^WvuD!rzB#9 zaB;HJw5{Yc&!yV!Ine3DAFZ4qULDES0evn{%0!j=HUk~mFxDx72`Y@t5vnFJ z#Jk^FwL*flKeVp<>)?iD?IuDjE)5$#gB+?ZCYiX`+v&pkmjRNzy6dl>A^-6rjtLX~ z%sj%mUg7`34H1ZH>{c_(l`YOz-9Gxmu2+%gY@Rv=cl(}ob!||IhL|_5rt5_Q^PTiG z-lz;L&2jU>D8Om>h$5=s&mEr!vj0!_}@7SLhET1FB0x*iUPts}G3;Po>1A5#3>;osjtyv>!rrz+X&C*jOYmNJCp_GVDr_I4$&c)?Q6M=uBz`XMfM(c9@Sah)} zW4FF?C56Dp?Vt$e$8LYIf?sd>?XLnk1B@8up|1}imy|eguEXGKa?}}LHGft3)b@c` zSy^d5!L(JWbMJY6H;BYmDr_^az4Pc!&fsT_e8Ffdo_p>?Ex)1o9P-M{#3imoyAej^ z*eG%5PbP)mE-yb*a~?4t+=3jhs`}KJd8cmSo%|02wKC^b$u)~AumicGK=FeR>nI>2 z2sz?SBC(59dFDB9?KFE87PR4SNB<+Gw?RB&Rx!G0q)Nhu_p(ylJJgQ zQ{`(doDi^%BG4QdwFKj*xX>wbN85-JX>T>nh?<71-I%@mSJJbn@9imfj;4?A$a@aG z+FZ$YZqbifg?{ts}oA*9hbQ1o%$@!b67U}3M)8O5wAMrhXsn@S&c~e-_yH0o98yZs{~-zXqp40d4goTwy>WM|@3SgRD_2dN)pI_gXLHwj2oZnrS!SGP1FxVq2Q2J@5l z$c`u(8*_OGTwzVM2L8M?hnToZV;JLo0zuPD5Mn*D!5Ny9tXU=!3K4$I1vmQt;ZpzK zzJuS8A4|UY3`vb;!kU7budHIX5dSpo@>zU^vPBz%U;g^%&g{-1UC z&#yIQAtA}?GPV@icQMib*%!6q_e>c_Q_kF zd#`hNsMZ9DBn~p0XCgU(2nBYOu_lclaGMl$tKhm*5EJ82;hXQU@C(MRJk({Oyx z|F5WT46N(H7b{Ssyl-^kg=L`2$^|FXnG3cN?!f;|@CGmZT zanYGqbdW}f6O>@OLtusc#jqbP8&Gr7Kxr-qicKaDAz6fgVzr z9<`yp-Gr$*E(5IW<0$vCC&4GJwaADL6_owBZIy0a)14LaQ9hH!a>Q-RTTW^>pAqwY zzJAJo%a|nE-`Pu{*5x;#0!?MAwdVEw{lNa|Jyn`p+*O~*AqDsLAVt${eWCK4wlx&# z&tztochCNJQ4Y5g$JYdW9Zqnm0s={yCq&%+?QDD_+#D|LTvqd!$KBAiSNOE|KY@QJ zr1jS6M!#j~SRk1Nz7At1=AS~b=*8(dbb8*$ohZ^25rX%zbIiMse29aN6LcSenpDU3 zqn=l*5imAS6F`7ofDLXLk@TBu2krgL8>~+_Zb}#cjlNDe_Xv|PPP|HSl(P#{ZkP?k z^(X}TnHp197>FFB3`Sm2m

ub>lpq&h{%Z=cd?gmCSWRUnV4zQXSL>H(&?nF#laRK2iS~B(EAktzvVXA98Ef;HoVYb4I%PWW87|zr1 zvsMYt75zpGb?=l2om7D*R(F#Q+iEj=os0#R4l{da1Cgbj6?XyJU%J!dD!j@7D6tz( z=3TZ_bpx1(GWE^Lo9Yt7XkyZY*rnOC#4U?QR-2fDPt%XDvz zsbq8oA2R+3#%5o?BOy#>3JQ+YbK)Dnth4XUE|j}W+HUcUMk%fyjmi1N1mN=GUlfnM zc5?Clw#s>>^adW)8uPm-s?GcXN>T6`jdcNdjH|56%5G7Xm%@D(Uu)~!j{Ej<8#`2) zMrG&ya;dT3g@AL5lZEqHMqemWD$sCjzM0cp^GKUB(Si@yY-C_0E! zd#E1IBO;%Y;Jh}3+uPOpAOW1`MtvqoCxl#;AK#(--chaM!)Q~t!egp@T62@^ z8w)oGK)`VZUmX34gs?L#W3f!=;+xLKb4B8U=;d)*&QSatzv!0rWAw-G`HPN= z(PyK{sl=b0Oq^Kg&noD%Ugk22otvfdds2YuUOL7D^p$3!TV_Wb$rWYMBzl#A5*QK* zus&0ynO{%P?drk>z)&-I)iM~4ieYkwl(QNTG?;8I{2n(; zr`P`Y8xnq3eFy~f|2B3I{x$cU!1p%?IVd(`=}nrJb~+XoyydwajEq`=&-&uSxV54t zHd51H%@+1<6^zu&O|y};ZaAb`+W8od?z1ZTJ;kTsUG9#JmLbS+XGt%Of!&vUEgU_z zJ72B*_BQhhrPXUl^o9SR^{_YPvo=o<5aj6Dc8qnGX{)1V?RGJ{dHPtq9+$VMyqYJE z%l5^wt$=L6T#JIW>r_!uzbcNm5trTUC}4e^Vf^gMq^L{6f1+T^lcGR0R7hRu)%cmt zdN$_W>v=Mi@I7^_E@~16MrRg@P;Zl)xO1rUY`v)PaI#TYY)Vp5Fzb0Z3`LN1mxAJG zCy5U!F_AHA`RKo6OpE)|>+wFaL)Jk5iFX_bNPg-L9%-?dSS~ z?G&j|2}AUqnaMgt|99{s=IUy-1Kzk9Ji5-cx`jZR^Hq%3Iu;4qk>J3icF=`6Q0>Iu z-q&;Hj*dgzwj~Qb1F)4rn#X%HNSth9s9pfBz1o@PEF~G;h)6b5VeF(R@S`xlMNOD_IIgQ>+JHFrs#5O6cpX2XEUIko+8d3tlWh;9&v-T$PcOv zpHJ^$V1pmcmnR`LpFhhttYV4ieKLS_$nM+klau(s%oKnU1YmQFv9XyNR|IHfig-ii zRv^w49Xb3ueLjA3#va>BmB*~kx7V($U_j0u{<}NGouLUad+|>&z?*|-{adQenIAlQ zmJzBK%J~dkRO<^bw|Ogp_5(Q3=S*}?g^Wi#%{Nh@9A;6g%94(u&jyVP$a_61g(Ifr z#P^0k*2{PnYraulmgzF@@&9KOLIjGnYTR5<`TzWH`oJxF#9*OBz2#B;5gEJ)vRlR;GGAUOb{`M4H&xtAr(_c~8^89eQOdYfq#dJWV;DtEu{akD~?Bj0#>? zJ%JhFNto(k$4j3J3bt$e;~uXQ*d-rb50l_+5hSmlkDDjHvLcv5Qp=_=Ag0orUNB)i zfe~~xf!m$_Em2e#Jo%F?Q!P;uF~4GBB1o!oLGz*Qwn0U1HsJzl$b^Mb=+218blS=< zK2<|QCodl}wlY7t_x!t#7o8kSoHf+^%J?2q+aA4k=tLSif`#9|zghbFe$<-UPoztP z`Sb)ydV`6+B+2=WpQs?7Zx5Z<*CXAXEV9=bjxFju(CJ``?!#g1#Ef0GdkwFX=P2kr z0i6gje3r}9O_d*MU%#Dw(dU8)tY>9lPyb0?B4E#;-F}|V?PNz&U2!%rt`$Uuach+` zblW_<-kRm*a{ld9l$mzY5!UNzp&?-4H3S3Ex5o3dsT_%oLuRb0cwkI+EU6!c#&XJv z)!CwhltWmafX|TRg4e;|?V&J7un_J+d*%qnpX(bnF2CMqIhTPDzGOcC?yyRCg8fru zB_HeVBg@V>Hj{y4IHW^Km#my?m=w5I)a7L7dFw z#_!)BJEK4M2g2C8!LOC36uv85QHfg zzi`rEe)9dHPTB8xX$9@0bFxztgzXr#ef2%Ia9jvoU$&+iIagrxbYEA$Hge59i5+A3 zZB;02MJ5_eYD>CM;j1z|+G-p1=r z`8Mj)BeKK5d{<~aZ-i_&`4yp@!AQZiJ(a&5bi3hQJH)CBl96elpHMKcE%eBX$J9+d zx{6NSDh7x~p%D0kjULsn5jrK*&9ND{4MiWXh6WBpim_UJ87nC}#3Xd6DLd}Rv{}c{ z{LUS^b)2(O#c9YY7f?qpI5N&5V0@pvF!Nr3bj2&!jvw|oBT(qE6k5u~I?R<5k z^%dLL`660ItnZOT$V;{-KX97_{jJo^;p@P0Ux==5=l8z7K3GVzHE%ilIjV@M3*nzQH2yjb6VHd5n#fAtQlT57 zujlG}-7SDExR}7BN_rwDua!YyQEo^5M^{SoXDVst+?YDCss1>;Ia4_HyQ9Oz<13de z`GRV35bO1$Hc`RFMuV&Z)Gj_9u`cy;Y%UKda$q-nFk87klntM^y*$fs$d^LA?l?f{ zD(Oyys%_Eb=@VOUS+&U(2^rSG;R~n6<-v~3=(nuP#=?}?MrmC{A)rk|qm>qDHw_Hi zO>d9UOu;FxoBRnP75&V;+o_s?h#$qtv6-Bl{_c{qu8tO6ru}Rnd)w0x2yEoVWG8MF zIgKMnMZ&Y`rO<`41lAabU&`e?+Ci+JVGQQPp8L1i_&cdBUNKAESeh*eN#$4tl-bV5 zcjqk4q@8kI2jCF%A=D=)yD-;BJxttJIA&KiQYI2N(ZDUn=T#+*Zc5qgC(5+jf)&CT z#t;iH$dt{cxs@$B)fEC)#mAkli6OsFjijwM$%G-6_Z2a&O ztwhQF&(0O(SW4{)JakmpH8!96N)t!q`ZfZ<=K%twpcFr0WQv}I+(gv+f_lvi8MJ@k zGntqd?)-Owk!nlhPV?4~TO7$r`w6+c5QcMlBS>yH&s6bI z`otJ?OHBt}8dc+RkLjt2y~#q#G({??wf$#uv7x)*OD9ik;M)7tbaa0rA~?dujOvuj z*eXj($WRa;!2!p*bdGix# zOtqW#@1WI2m6|`5?<`cd%5*c_Haq{yR2%R1;g#3J>5=~15D@mu8 zY+p2L^o}xFf6$M(i81x(2<$e2s3f*8Xv^zoyTQKoZ0@tA#>BNs5C+F14J!cGQjB`n zG7$Hb+`AY3RX`ZWld35#JxHnDZ@W6+gI<0eaU>qrXab#c$r9Hju%OkPw}``l3_Ksr z?ZuhJMXJCJ-xmv@9QIca40BXkcvC4?meB`mov^UnFWjia-@s_F7ZXfe~Ab#EcVwnLXwR=jo z8$(5qQNP(O)gK7kZDdWyO>QivJ^g^|s+mi_r*Fn=t2;GET4)zTn0ysN6Vh;)ehyUN z4mi0T$Xf6zfK1onKZ=hF%IcmZ)Hp?&EXa%+HYPaToVhS=9#Dmnt3BUjL8ssQ z6#J6V{X)ua3^!XVeZ;i_cp#I2+i6%FDaFZ|)0b^Lklo77)+Y~f2rs_#^DQuu6x+se zzABxRz4c-UB$SOP_{+O<6D|shWcCMlGQR9Ex4UB^vr~WN;wkM@bfGf@Xlaq!sgy-K z13qjNc<{aac7+y!fga|-I4e5TW#tuIa2(QPWiNzkW>KsKm)?y6AAF*8p7u(8ET`ub z`ZHPgN^6*La`>7IDP2ghu{#*mg%}eMoLwGBy;aU7cV2b{)5>;&fXKSww9V_dzU)b9 z)TXvj6sufP{*=(Pl1$O~br zi=|@2Qm<47(|lP!Zm?t<)!t=u@=AzaQXbgc05eI?4oahTU?8*--FiW=U}=%vI?mL3 zSFf991^N5DxU%V$mo-nBhV10Jmk%**&bC@E+~4pRU?`P}FT2eYFpx+w4z-OYIhC1 z_B}>WCSJOjB+i1OnuJPE)@n5K7;7^%-gc-!d6Lxl9zW@D}^ zaSH`aVK^rNiKKT3nBnj?nmn*_Y-n8|iO%jQkMC7Mw&Z_vmlU|5f;B+1xaC5eqL6TyyKoRveuT}^*t1Yad zfjs3hMWgcOF^DD=^6=T+`d%1P&ilaEa0qG?+~heEVv%$|lMTrGv~9a?3?V_a*v=|< znd?Zi+VQQ|QxcSHrqh`SBVm($%%8>ugmgByO%fcYX@GLBcJqtpbBD6-i_wb+kG$US zdU1X@8jE8KJyQzKmNiLvCJ;#KbR6CYw}roqk&FhvtRaE>kNoLk&Bhw zL5L`x2y%w@frwy`{Gw1_K7xb9kKcK#YG{~dvPe+S5gBZy5R%V4KNQ-L{P?9_JFBcb zi-6#cj;-+&DDLM5x|gXQ;6njubeFrNU2P$5;^6}&j{%;Cmr${!<(UMy*MY>i&3mT8 z#N^2{43`>deJK_bOEJKu@VI|VlB&WO%^VlHe1?T9cS*xXgPk#oKjiVZ35x)B&~t5bu0fWXI>)-12M)k~ zCfM!16%2;`5GctK~0Z8w=A$dR2OjC$-0$xeJXaFR!f=wT4HLrTS=T#6d*9+>HWE&fQA+i{Euk zTav9>{MNwRB21qw)wxNk6f%Ei*`=zMc~*>n7kS>r*<4S)EVxkG%6N(N2conyTd>1A zw2LoVoOd=d=Kh~A_C<@Oj;SszpbusPYcN;K8!7JPS=fRB-I)xwzHi05HOT?@OvumR z)8$boCgkUZVuRq+NB6$?HD-Nw1a`|-(4f^{0o?W<;^V&CAgUQBE&1Rs803|1J(uT@ zO*o+7mLb2i_<460Pjny1lt_p{Xu!*ODxB`;Jqs-f9HwIED_M=(6B5r@pvc8Q^Ac5v|212#qUwZ59ky}Wa3gq>xeFG}+g zDTv_Zc$4h2DU zjHs&KqTlaosvpwqBnEAg?gEOM;nYq0g|-oq8kdZ;V+vr;d@Me8Aaoo;x~2YRuV4X$ z+Pyo8;5`l!7Iy>|-ZNII%$m|v>w3-B>YK~8;ZG;SRAzQlDK8;%%<*5k?!iHK#K>5n z;}}z55uZTxrd?08mx*zXvxT}#MGNVtu{}7~9N63rS~2| zw)6vN_HCH z6Jm*Xt2()RwKU#ms)aTRHCGJ2C|U+=hh=uGtF4?^8HF*INp0cX)}Ls5p^_fZ9-R1Q zMfIh;Ou``VfI})3S<=Z2CVbyvE@HjyP1*@EhO--k5-wZt`R$&GCX9b$PUF=kJows_ z&?g;M){b~I-%++nerW>1Z!7#r=r#=g%Sdw0p!$lR0zz=3I=_{x5wPHLVRmmmX%6+v8-BM1oJDbP&F(L^MtAUd~Jo0bD@!}L_u49QJBd*l*bs3HL}d}RHBcm zOAWJtwoWqlml-%EluZZX05~XXbv|=-nZn7c9=8PIMqVF;AKqFgC^TXxo733kpTyr^v{fs|J6P~Q$~JXa$4 zLjA5?f+d{)*`Bq9CvA3?2ltN(DOx($AR#^+Up;2~d#`sz%8Dm7v6@*{E_C^%R3s(W z8$1#gJac~Hb~&pgja@wW;D`QS4X-tq5BNcG`lReiP*BrSCmluEIj8v8@5i9=*%3mm{s zI=DscJjspeyOi{6_J^*I+RO9AeJ1Hwe%f@b2VV4_C2O3EBN^b1VTJB3_U7xkYYog0 zfuoaS%=WU;U6zz?i6)BT-GpI618$LS?dKVF{%?vj>RShgo_I@LeYcgVkJQ^S(Q5+} zwmfUa%!a%H%UX3EWGgO9_zROPqgvYZDV<6Y znZ*EIh!AhSNI4Yr+!Ns6e+yLd@GWT*oHuT{)eKM>j+yY@j)MlG7*NzQFL z9q#^3oz^fdMko4XbLSKPrBW5p9J!xYT%bsh{sKk6P>Ox7dXQ>|%M!z*tdsUN-t(pn z4_Sw@Vy+MetTOI~yBe^$8UzTaJ0SdDKIai?$Zf5q)a>CV9$dLLoygM5 zuvg@MhCAwdjb%RT=$yntJUCZBIVz_qki))7fo|TwBXT!QFP>asH|^p{EX%<{#`&|5 z8>VrxzAilVyzeO)zVCqc$Il9a{I`>Z?GEsL@P<>YWRCZ0Iy5df%09S(?h!g|Z1e-qR#$axOI&DQ2g z#g>?CcM)qMkO^&$k5gnRm)criWD+Ru(A$Kii)H;evF7YK ze4?LY)GmNsgv+p`onLV2ZQXLqG+G^&Q503N zfNuKIxG3`Uk1TXclYP~b(@7S`;_4xBuUH(PN+=|c@%b)ovcMmffqRehT9>zuOlq`6 zRbhYFk|z5YcMZvO^@UM$blQuhmG&mP=8#>#F$6@DjXT&lk@-&D4H{F^;dNVX$N zNx?Vq7yqhNQ{)cAH1AM=G#EgiZ7loE-5Oz9u#o)`UM_mNyN9I!O&e5__TKeN&XR|u zf)wtRd-YCM3>Xv-VIX~c0vz;}H^(y~y^``2r?>_JhtRhWu_ma2NG|s)%&L+rvV?0~ z=vrK<>~omlUlTyViuelM?77x;WNvDxcLzmiopq#PGxA$h)EK~{T{5kjVub-zeN;!Y zL1+s%HpJdE#J5xEY6)npEMCrSdxHC6e=``3U3)M{>*AhE+%JrTLr7l0o*dS7kB*)^ zFgALFJnumu+G!~L-BSkqSO9J2D0rL(x`g8ubb!%eAi}ja$fFSOGK>pv7bcl+tXbL= zHA>Olq$k^nfBWTytwJQSWdMzG9d7uMxcBa>(;;Eilyk#b+o?I-D;mod(`^%q@41Yo zuKkoyfsY6GZqGbkxmBVHvSpOecjJ@%E~{d8RB(l_GW>;bQ$-h*74mwqQeYtc6`idu zWq~Vu3k+^;Ka+k5{&5j0_CFuAoyZ#5d#&H;@-+6B zSwFjz`66Qoto}yhDJ~vAE3HuBgqwzZp>fodS|Ep{LVrYw(0Fm~?=$pHZd^nI%x7*L z4{0kWH(oPC52`6&C%z*EbEq%r-e68uA>z5{FIV2hxd~EkxRU5M;D(PP!Yv;MZ^=5<(k^Xm&zvNsVU(3MbP#Y@|ltr z&MX~lYjzWh|EdPMS3SMOVm6PPLx4CTo0N(O2!CYWWzjdBW=^OX8>3upVh={&I;Ey@ zgw3^b6A)6M6SCJ1Rg|KjNdSTS!$7GZJdmitHgz9JHq7 zeg}EI1GcFAUKO$Spw}JV(e%Fsi!qM3y98X^!Pmbt|>v%o%8Ej}cnW zu4CG2$+-PGD(S3gHj1gM=p(9og9FNwE;TNd1*^6oomH;_aNXT(ud(7f#nXcDj= z?0}C*ob|LaNNqUBcy0O3Nu8tCJyp~{qimKh+uMl;!p0j%e&Z(i8&Fz6cLECcx6oFFmJ>Qq)c}PaW z_aqgU4sZVervlX2qO--NrG8Inwo7E_5c+2X+h;wkjQO1^T7+LBI@b@rSvt4vnIc`# zOXPCj&;3R3TebVhE$Q-V!_e7QEpnzzykF!CPF~oP8#Oi^N2qlhY6nr4jV|K;;V=9z z{^WBv41tGX0P*KXUSl%*ls!ZghQ%3IvQltiU}xB% zfIiXH$j&tk1?!HLpRhv;>BX-?G-<w~Yo$L0pxFoNR+j$rT$Png0Q?E#m~mpV$#&86AM z{k2(ZkgMj!NR^vSUONGU%OD11bI949{5(LF%hqwii@4{h(J zQgY+|8&0d3wB6(9_pd3a04kzknMb_DIRVy|OM}}NA1EV8|5YmN7Qd;?xx|!>8kfV( z%YuhAv2A0gdaz^5&MGy*`FDAlhokA%2Q6D3*Qp7d)=vYQg{GGfm+=I7^!a?*-_${0 z{=QPM5jjlIM)eZ2XdUZpO!dk}i@WuCr;JI`yQd4)**vqgs>#Mf!jI^1Mr@3enGnR2 z@6>3@BR>fbm`F)z@OWxolP8$HhE~h6a%jcKAkUV{`=nRWEg{s_9>&+|n>}KY0hR)+ z`F>ODPS%g?W@M-%&2IQ%3(l8mE8NYZi-3UPS456fjn5iu`nnp}S2u!ba!PCOjqE`; zS=y#bP>u>=pS8mS{0v_2%g*K5CfoOOmbdKQ5cjd6m1Eo0b9;+ckDa=RovBTpUOw%| zTwcb%@~FNjuzvc)iLqk@VjTGVnbDmPeh6>aUrpYN+~ZCR_$<5H9m^TxYg$7$^4!FQ z=gAZQrks$$bfg8TcZ7t_jp+KVgN1d)V$wu?%%|rUmdX#_K~y^X8Az<|D;pUp%bg$n zSXAouZvng2I=wr$&`&1fEekpE_jm_?$en#tP?-WS7%+y-nf7#G_lZCiXtw#qB)Y9% z%uXHpOt|or`eSR6V_%@4I;AA?RfMlRr?$68HOU-lV2|6<+xv!|&_hJ%7f%-QZK!#le)Mp^pd-fJCSxkmF#@&` z!q}G0-rh1K31?@_839g|2JT*WueV4UU*7x}$Gdg{to7hCvJVFLw-ACSe{v@$#RX*f z^;jB`6^PQSTjSOXi=3vi6%vh9EPEgWAmSxy7A4SL1U5=sLIDT!pSLbKqt6f|R0B-} z<6lX@$&e9BTO_C_XLqGOjenBJGwUdqf%AG;#UY1GtDjn|)EyUJ?p%LKZ;QsD1yG2I zsDyFIlm=C*qTbQnSpbBa&JG_9XhSo?4)!ciXgo&1_ z!Xqa!a8-J-BlP7o*x1tK`3uJjDgK;F#E8`KDoF68)7_KpN}NL9w+~;#WZ`52Eqdl_ z^;|cZ6`<0}sJEaW44E<}FqXznm09VgLmnmy;1N?%8C)c6gCcrA6y-~qXm@!k#rfs-gIK z&7L=sZ7T=m2+W@7%GHU>y9mVKWUlt0E`bC@wI7xfR#i8^pi+6a;0FRiz4K8H;*1LX zd4RO#eIgCb_@6(=-z_)7yI1srk&LNSGwA5)O#;l_(c6vSCR3xpjHx!S1NbCq$k4U{ zMCuG)Pd&Hj-S%;YSg2jBRu_T4eW`z2zaMDE77J$R?#Vlo_Dxc-%3>ep;ItS`zNyv6 zqlt~mPMi^&vcVc9h9QVFNynpZIIRJ%E?slox?#`YfEH)jAurWVuyX(I`BT5 z#7VrLO%dCEeqz|n=ROuFIFaSmxp$D-HhRkCm?`a zTwk!tDAz|?c!vxZi#jVB!Pm(~N{T6aB*`~?MvS@#0TjlWbL~w}`|Au}R=G*qE{D*ar~ExQBHd=yspxZZ<*95kX*ht{XE0>e z9Je^3*FOCTK78=3AuupYA>i9CmeP(k{e`w-N$#@F7jNoTj#(@lt|5ihoJ4Ag*PvFa zo*VSw@K#HRK358jR7@J_KI8>Gp(rmn9jAsnjMx-8up$s>E)`t4BQy>pk94vp!_V6kh^$gn!dP1X`8$ z0zsd`tM)HdGXxAAM*AgT2MVYt$Y>6R!@o(S_I5A%3}tJb)532ic-{gtB?M80mL zH(7Eqkhl zuQ_6xraQDrLE21Av1utf0QQ2ja`+#e4dgk9MQ%->aRK6VIKJp#Z2g#?UJo2v5{a*H zuw~ofLxe?gY{<{ux{Wg@a~Fw~nOW#>AVE)cMm1c;b-qDBufc5lb1L2CTkjBa3Yoc+ z)1zwxw`!^fZp$RSm6EN52n8iXT|OauQSC=IrB>Y8>b2c*#j*SVSpvNx6U*iS2ARjF zn_Jkc*}o;Lo7{m76)0EFw9s5+0;yWSrxa-9RK^vchKCTDviUUe(0--ET<=$&;YCR+ z;kU!E{Dt_hx$_gl&gB9f--FOu$u%VJr59@9@1S&-)tj3u=#M2ZCk%qfKYG>sA`YZR z7C=k<;oZft=3Fk|LZ{IB+cNN2h>W!Hr2X4);IH{<7{F_=Ji$blc&AcRK4QT4UtvX6 zoPFi#lpUi*NPiw&9|d-)#9cc<9wC-EU&u=0YHvK!(9rPt02RP)10rJ|ng+$k<1_>R zc4g?F=7@+qRhA%pP)ji02Pv9GiLcQVAFfgu!T;0ERL4>X^w0pw_ua;E!TCofXxYp&iNQ=7VsAR@kx zzqWHcqw$>Ri3E>n=^Ske?~}ulJ|sXM%u6riX&E-F)^Ntgcs&d5*+{%kso}YU#nB22 z4{N$-BDNVsNFp!e>2R>N)hAeCVrT zU|B@y`1sdp^S5Ww0v>}7q9KP*eRI+BAGIMwezMtZ5y`mHGAe^;@avPwgn?E(#1q_} z=!N=V;=b3cqw_{%g|zMFodXNN+1RWx66ejCdSxS(^bW2J!DzEXXHgIjzAUujW|t%p z7WPIZCMO$9tYmLpSteaqGd+vXUNDTIjFbj_xx#WkyUX#yB0u1sI?#C$P4b&ZkWrGy~> z9ckP&xO$8+pryq}gx^RnJ?SngW99U2U>b`UVvw=k%4^cOj>FIBeA~sqj(vwjd5|jf z6?}LPj+u7)OYr`i3_NOJ=HOA@-}wH&TAH}VefG%A~w-xpz-qd>+B_ZA1W~9&B`sPc~gYsQ)KYP z_Srv#uCc<|cYJNGSA-;3e{|?Y()!rf87&wjqsM|p4EY2H=derUUSu;a!TgZ{R;=L{&<^}8o4z;iZayg- zHS7(soOa_<9Gv`p;HTcf#6vSNoHiCYQJnmfu#3PRtKw;su54=4$oObmh}KJd6e@ij zV#PB^${iyB0P!L%CahXisb8c!5ygRAeTxB}$~7gKkB>@}BU$jg*_(tMDTe}%o1T~0 zIi!R9HcbO;QfWIKK@afGx)Thv_+fi=$Lxj$eqhJz zG)4dO6m6WtmO!A!cFjOh`-MT>>L5(3K1YYovez`sA)1N5)s^LAXyz7^OWb>7?0;ba zByDhi1B0G+XR`0#e{YQ7m|2`VsvzFDV0R!P;s7QwYf|E?s`yLa7Gg}8DWl$d%ix|N zm5u%}na}=+gw9~N%K<2YX%|N#%m&HKJrMl0CaV9N~$2im~_t1j~oF^ zMz}3R_>K-(yFR57@y|&bdVFe#XfUNnAem6iY^tk^kN8vCtqC;DZOPsP6(0*Y=VK(y zcZKEwjp`FPnM{a4j=YKVO#_D*%x~cqcN7wnUx~I9k>Fu?MaqB{QRo)+K+ghs11XQP zsjSO(C$+xG^QDDK`eG9m6(lqFF4>-37yK6jP6w}og7;2(otGLTFqBPkO#5ih&-dsH zv;S89ejv1Pgv=0VW{)b~OBm$(N^?|J7=)GE)SE439fD0-*=Fn@KPaU3YPf4}` zAfNHNJH&7#grz3Okms_-U5m0JKaFCW{~5)bvu+2#Ze2nCAY}N-RTYOk^u_mcfKDwt zJ^Mr4X6u6!n#io6I4e?WFFA>RwrSIJ?I)+_W}yALxZD5xE{wr{eGk;Mep1bN%-US(v*Y4uiHk7!qX$XJT+$WIytudfifT4 z*MX=Mh zoLo=M^Yb{JS`Xf~Td2Gq+I4oLqY_IwDsyQJu`-d;Uj06u2j$|`&c}j7wjM-g|A>iRJ!d;|;{YK0Mu)=j zVl=|}eYxg~hH8T}nX%%JUiPgG-`Cp_L|eas@xBi1bS%oB8J>a4)&K)WFn1K@t*hr* zxg2{Ro6ipqz}tq~5EfmR-zd7G#q(^#ZOMSjq}BT1f2I#O@Fy*= 0} - - If the estimation step is not present * - *row_disparity* - - Minimal and Maximal disparities for rows - - [int, int] + - The init and the range of the disparities for rows + - {"init": int, "range": int >= 0} - - If the estimation step is not present .. warning:: - If interpolation is used as refinement method, row_disparity and col_disparity ranges must have a size greater than or equal to 5. + If interpolation is used as refinement method, row_disparity and col_disparity ranges must have a size greater than or equal to 2. Left and Right properties are composed of the following keys: @@ -84,8 +84,8 @@ Left and Right properties are composed of the following keys: "img": "/data/right.tif", "nodata": -9999 }, - "col_disparity": [-3, 3], - "row_disparity": [-3, 3] + "col_disparity": {"init": 0, "range": 3}, + "row_disparity": {"init": 0, "range": 3} } , "pipeline" : diff --git a/docs/source/userguide/overview.rst b/docs/source/userguide/overview.rst index a1ccb82..c1dfc67 100644 --- a/docs/source/userguide/overview.rst +++ b/docs/source/userguide/overview.rst @@ -103,8 +103,8 @@ Example "img": "./data/right.tif", "nodata": -9999 }, - "col_disparity": [-2, 2], - "row_disparity": [-2, 2] + "col_disparity": {"init": 0, "range": 2}, + "row_disparity": {"init": 0, "range": 2} }, "pipeline": { "matching_cost": { diff --git a/docs/source/userguide/sequencing.rst b/docs/source/userguide/sequencing.rst index 79141fc..0cc593a 100644 --- a/docs/source/userguide/sequencing.rst +++ b/docs/source/userguide/sequencing.rst @@ -48,8 +48,8 @@ interpolation method. "right": { "img": "img_left.png" }, - "col_disparity": [-2, 2], - "row_disparity": [-2, 2] + "col_disparity": {"init": 0, "range": 2}, + "row_disparity": {"init": 0, "range": 2} }, "pipeline": { @@ -68,4 +68,4 @@ interpolation method. "refinement_method": "optical_flow" } } - } \ No newline at end of file + } From 3a047f65be4dfb245431fa159dab4c906dd6e430 Mon Sep 17 00:00:00 2001 From: Marie Leconte Date: Tue, 23 Jul 2024 16:55:39 +0200 Subject: [PATCH 037/121] setup: add sphinx_tabs dependency --- docs/source/conf.py | 1 + setup.cfg | 1 + 2 files changed, 2 insertions(+) diff --git a/docs/source/conf.py b/docs/source/conf.py index 6636687..73b08c5 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -59,6 +59,7 @@ "sphinx_rtd_theme", "sphinx.ext.imgmath", "autoapi.extension", + "sphinx_tabs.tabs", ] autoapi_dirs = ["../../pandora2d"] diff --git a/setup.cfg b/setup.cfg index 193ee52..994b032 100644 --- a/setup.cfg +++ b/setup.cfg @@ -91,6 +91,7 @@ docs = sphinx sphinx_rtd_theme sphinx_autoapi + sphinx_tabs notebook = matplotlib From b5c5ca597eb52325529e251c5352cb91ef549399 Mon Sep 17 00:00:00 2001 From: Marie Leconte Date: Tue, 23 Jul 2024 16:56:14 +0200 Subject: [PATCH 038/121] doc: adding dynamic table for properties --- docs/source/userguide/input.rst | 73 ++++++++++++++++++++++----------- 1 file changed, 49 insertions(+), 24 deletions(-) diff --git a/docs/source/userguide/input.rst b/docs/source/userguide/input.rst index 5fd0273..3df8b4d 100644 --- a/docs/source/userguide/input.rst +++ b/docs/source/userguide/input.rst @@ -30,13 +30,13 @@ Input section is composed of the following keys: - - Yes * - *col_disparity* - - The init and the range of the disparities for columns - - {"init": int, "range": int >= 0} + - The disparities for columns (see description below) + - dict - - If the estimation step is not present * - *row_disparity* - - The init and the range of the disparities for rows - - {"init": int, "range": int >= 0} + - The disparities for rows (see description below) + - dict - - If the estimation step is not present @@ -44,26 +44,51 @@ Input section is composed of the following keys: If interpolation is used as refinement method, row_disparity and col_disparity ranges must have a size greater than or equal to 2. -Left and Right properties are composed of the following keys: - -.. list-table:: Left and Right properties - :header-rows: 1 - - * - Name - - Description - - Type - - Default value - - Required - * - *img* - - Path to the image - - string - - - - Yes - * - *nodata* - - Nodata value of the image - - int, "NaN" or "inf" - - -9999 - - No +Image (left and right) and disparity (col_disparity and row_disparity) properties are composed of the following keys: + +.. tabs:: + + .. tab:: Image properties + + .. list-table:: + :header-rows: 1 + + * - Name + - Description + - Type + - Default value + - Required + * - *img* + - Path to the image + - string + - + - Yes + * - *nodata* + - Nodata value of the image + - int, "NaN" or "inf" + - -9999 + - No + + .. tab:: Disparity properties + + .. list-table:: + :header-rows: 1 + + * - Name + - Description + - Type + - Default value + - Required + * - *init* + - Initial point + - int + - + - Yes + * - *range* + - The search radius (see :ref:`initial_disparity`) + - int >= 0 + - + - Yes .. warning:: With sad/ssd matching_cost_method in the pipeline (see :ref:`Sequencing`) , `nodata` only accepts `int` type. From 20cde7a1117f6c98a3d28120fc81d19a0f8da2d6 Mon Sep 17 00:00:00 2001 From: Jerome Lebreton Date: Mon, 15 Jul 2024 14:59:23 +0200 Subject: [PATCH 039/121] fix: update array implementation to be compatible with numpy 2.0.0 --- pandora2d/img_tools.py | 8 ++++++-- pandora2d/matching_cost/matching_cost.py | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/pandora2d/img_tools.py b/pandora2d/img_tools.py index f7ba195..908385a 100644 --- a/pandora2d/img_tools.py +++ b/pandora2d/img_tools.py @@ -368,7 +368,9 @@ def row_zoom_img( # which only accept left and right images of the same shape. data = np.pad(data, ((0, 1), (0, 0)), "constant", constant_values=no_data) - row = np.arange(coords.get("row")[0] + shift * ind, coords.get("row")[-1] + 1, step=1) # type: np.ndarray + row = np.arange( + coords.get("row").values[0] + shift * ind, coords.get("row").values[-1] + 1, step=1 + ) # type: np.ndarray return xr.Dataset( {"im": (["row", "col"], data)}, @@ -409,7 +411,9 @@ def col_zoom_img( # which only accept left and right images of the same shape. data = np.pad(data, ((0, 0), (0, 1)), "constant", constant_values=no_data) - col = np.arange(coords.get("col")[0] + shift * ind, coords.get("col")[-1] + 1, step=1) # type: np.ndarray + col = np.arange( + coords.get("col").values[0] + shift * ind, coords.get("col").values[-1] + 1, step=1 + ) # type: np.ndarray return xr.Dataset( {"im": (["row", "col"], data)}, coords={"row": coords.get("row"), "col": col}, diff --git a/pandora2d/matching_cost/matching_cost.py b/pandora2d/matching_cost/matching_cost.py index 4d5d103..1328c88 100644 --- a/pandora2d/matching_cost/matching_cost.py +++ b/pandora2d/matching_cost/matching_cost.py @@ -354,7 +354,7 @@ def compute_cost_volumes( self.pandora_matching_cost_.cv_masked(img_left, img_right_shift, cost_volume, grid_min_col, grid_max_col) # If first iteration, initialize cost_volumes dataset if idx == 0: - img_row_coordinates = img_left["im"].coords["row"] + img_row_coordinates = img_left["im"].coords["row"].values # Case without a ROI: we only take the step into account to compute row coordinates. if self.grid_.attrs["ROI_margins_for_cv"] is None: From be471fa16814c4e0238cc77e64744bddc0b27de3 Mon Sep 17 00:00:00 2001 From: Marie Leconte Date: Fri, 19 Jul 2024 15:09:41 +0200 Subject: [PATCH 040/121] pytest: add a marker for metrics --- pytest.ini | 1 + 1 file changed, 1 insertion(+) diff --git a/pytest.ini b/pytest.ini index a640a62..aa439d2 100644 --- a/pytest.ini +++ b/pytest.ini @@ -8,5 +8,6 @@ markers = performance_tests: accuracy tests plugin_tests: MCCNN unit test notebook_tests: Notebook unit tests + metrics: compute metrics for resource tests norecursedirs = .git doc conf .gitlab generate_report_on_test = True From 414fc5202f13b94af921cb1ff3bd192bc4cafd13 Mon Sep 17 00:00:00 2001 From: Marie Leconte Date: Fri, 19 Jul 2024 15:10:05 +0200 Subject: [PATCH 041/121] setup: update numpy version --- setup.cfg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/setup.cfg b/setup.cfg index 994b032..ab363d5 100644 --- a/setup.cfg +++ b/setup.cfg @@ -56,14 +56,14 @@ setup_requires = #Pandora2d packages dependencies install_requires = - numpy<2.0 + numpy rasterio transitions json-checker xarray numba>=0.55.2;python_version>'3.7' numba>=0.47.0;python_version<'3.8' - pandora==1.6.1 + pandora==1.6.* typing_extensions scikit-image scipy<1.14 From 30fa5a9489623c98ab00839544e7f0961b1e9dd6 Mon Sep 17 00:00:00 2001 From: Marie Leconte Date: Fri, 19 Jul 2024 15:10:47 +0200 Subject: [PATCH 042/121] test : remove warning --- tests/unit_tests/test_statistics.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/tests/unit_tests/test_statistics.py b/tests/unit_tests/test_statistics.py index c98a6f4..00be05b 100644 --- a/tests/unit_tests/test_statistics.py +++ b/tests/unit_tests/test_statistics.py @@ -21,6 +21,7 @@ # Make pylint happy with fixtures: # pylint: disable=redefined-outer-name +import warnings import numpy as np import pytest @@ -97,6 +98,9 @@ def test_std(self, data, invalid_values, expected): ) def test_minimal_valid_pixel_ratio(self, data, invalid_values, expected): """Test std statistic result.""" - result = compute_statistics(data, invalid_values) - assert result.minimal_valid_pixel_ratio == expected + with warnings.catch_warnings(): + warnings.simplefilter("ignore", category=RuntimeWarning) + result = compute_statistics(data, invalid_values) + + assert result.minimal_valid_pixel_ratio == expected From 837afe6bc655a49e383fd05c08e1c1afdd02b79d Mon Sep 17 00:00:00 2001 From: Tommy Date: Tue, 23 Jul 2024 14:37:17 +0200 Subject: [PATCH 043/121] test: Add tests to verify the code execution with mask in configuration --- tests/conftest.py | 53 ++++++++++++++++++++++++ tests/functional_tests/test_pipelines.py | 26 ++++++++++++ 2 files changed, 79 insertions(+) diff --git a/tests/conftest.py b/tests/conftest.py index e8d926c..5a09696 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -26,6 +26,9 @@ import re import pytest +import rasterio +from pandora.common import write_data_array +import xarray as xr def pytest_collection_modifyitems(config, items): @@ -149,3 +152,53 @@ def correct_multiband_input_cfg(left_rgb_path, right_rgb_path): "row_disparity": {"init": 1, "range": 2}, } } + + +@pytest.fixture +def mask_path(left_img_path, tmp_path): + """Create a mask and save it in tmp""" + + with rasterio.open(left_img_path) as src: + width = src.width + height = src.height + + mask = xr.DataArray(data=0, dims=["height", "width"], coords={"height": range(height), "width": range(width)}) + mask[0 : int(height / 2), 0 : int(width / 2)] = 1 + + path = tmp_path / "mask_left.tif" + + write_data_array( + data_array=mask, + filename=str(path), + ) + + return path + + +@pytest.fixture +def correct_input_with_left_mask(left_img_path, right_img_path, mask_path): + return { + "input": { + "left": {"img": left_img_path, "nodata": -9999, "mask": str(mask_path)}, + "right": { + "img": right_img_path, + }, + "col_disparity": {"init": 0, "range": 2}, + "row_disparity": {"init": 0, "range": 2}, + } + } + + +@pytest.fixture +def correct_input_with_right_mask(left_img_path, right_img_path, mask_path): + return { + "input": { + "left": { + "img": left_img_path, + "nodata": -9999, + }, + "right": {"img": right_img_path, "mask": str(mask_path)}, + "col_disparity": {"init": 0, "range": 2}, + "row_disparity": {"init": 0, "range": 2}, + } + } diff --git a/tests/functional_tests/test_pipelines.py b/tests/functional_tests/test_pipelines.py index f345100..9ae8cde 100644 --- a/tests/functional_tests/test_pipelines.py +++ b/tests/functional_tests/test_pipelines.py @@ -192,3 +192,29 @@ def test_optical_flow_configuration(run_pipeline, correct_input_cfg, correct_pip # Check window_size and step parameters assert matching_cost_cfg["window_size"] == refinement_cfg["window_size"] assert matching_cost_cfg["step"] == refinement_cfg["step"] + + +@pytest.mark.parametrize("input_cfg", ["correct_input_with_left_mask", "correct_input_with_right_mask"]) +def test_configuration_with_mask(run_pipeline, input_cfg, correct_pipeline_without_refinement, request): + """ + Description : Test mask configuration + """ + input_cfg = request.getfixturevalue(input_cfg) + + configuration = {**input_cfg, **correct_pipeline_without_refinement} + + run_dir = run_pipeline(configuration) + + with open(run_dir / "output" / "cfg" / "config.json", encoding="utf8") as output_file: + output_config = json.load(output_file) + + result = remove_extra_keys(output_config, configuration) + + assert result == configuration + assert list(result["pipeline"].keys()) == list(configuration["pipeline"].keys()), "Pipeline order not respected" + + # Test for report + with open(run_dir / "output" / "report.json", encoding="utf8") as report_file: + report = json.load(report_file) + + assert report["statistics"]["disparity"].keys() == {"row", "col"} From 0bed5c760c8ddb6d0bd03d6b506687368df52441 Mon Sep 17 00:00:00 2001 From: Tommy Date: Tue, 23 Jul 2024 14:38:00 +0200 Subject: [PATCH 044/121] feat: Add mask in configuration --- pandora2d/check_configuration.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pandora2d/check_configuration.py b/pandora2d/check_configuration.py index 01fe8c8..7570c45 100644 --- a/pandora2d/check_configuration.py +++ b/pandora2d/check_configuration.py @@ -41,6 +41,7 @@ update_conf, ) +from pandora.check_configuration import rasterio_can_open from pandora2d.state_machine import Pandora2DMachine @@ -304,10 +305,12 @@ def get_roi_config(user_cfg: Dict[str, dict]) -> Dict[str, dict]: "left": { "img": And(str, rasterio_can_open_mandatory), "nodata": Or(int, lambda input: np.isnan(input), lambda input: np.isinf(input)), + "mask": And(Or(str, lambda input: input is None), rasterio_can_open), }, "right": { "img": And(str, rasterio_can_open_mandatory), "nodata": Or(int, lambda input: np.isnan(input), lambda input: np.isinf(input)), + "mask": And(Or(str, lambda input: input is None), rasterio_can_open), }, "col_disparity": {"init": int, "range": And(int, lambda x: x >= 0)}, "row_disparity": {"init": int, "range": And(int, lambda x: x >= 0)}, @@ -317,9 +320,11 @@ def get_roi_config(user_cfg: Dict[str, dict]) -> Dict[str, dict]: "input": { "left": { "nodata": -9999, + "mask": None, }, "right": { "nodata": -9999, + "mask": None, }, } } From 288229bd819b02d9128e463d8f53e76b1cc5a7d8 Mon Sep 17 00:00:00 2001 From: Tommy Date: Tue, 23 Jul 2024 14:38:58 +0200 Subject: [PATCH 045/121] doc: Add mask in configuration --- docs/source/userguide/input.rst | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/docs/source/userguide/input.rst b/docs/source/userguide/input.rst index 3df8b4d..96d3006 100644 --- a/docs/source/userguide/input.rst +++ b/docs/source/userguide/input.rst @@ -41,16 +41,16 @@ Input section is composed of the following keys: - If the estimation step is not present .. warning:: - If interpolation is used as refinement method, row_disparity and col_disparity ranges must have a size greater than or equal to 2. + If interpolation is used as refinement method, row_disparity and col_disparity ranges must have a size greater than or equal to 2. Image (left and right) and disparity (col_disparity and row_disparity) properties are composed of the following keys: .. tabs:: - .. tab:: Image properties + .. tab:: Image properties - .. list-table:: + .. list-table:: :header-rows: 1 * - Name @@ -68,10 +68,15 @@ Image (left and right) and disparity (col_disparity and row_disparity) propertie - int, "NaN" or "inf" - -9999 - No + * - *mask* + - Path to the mask + - string + - none + - No .. tab:: Disparity properties - .. list-table:: + .. list-table:: :header-rows: 1 * - Name @@ -87,12 +92,18 @@ Image (left and right) and disparity (col_disparity and row_disparity) propertie * - *range* - The search radius (see :ref:`initial_disparity`) - int >= 0 - - + - - Yes .. warning:: With sad/ssd matching_cost_method in the pipeline (see :ref:`Sequencing`) , `nodata` only accepts `int` type. +.. note:: + Only one-band masks are accepted by pandora2d. Mask must comply with the following convention : + - Value equal to 0 for valid pixel + - Value not equal to 0 for invalid pixel + + **Example** .. code:: json @@ -103,7 +114,8 @@ Image (left and right) and disparity (col_disparity and row_disparity) propertie { "left": { "img": "./data/left.tif", - "nodata": -9999 + "nodata": -9999, + "mask": "./data/mask_left.tif" }, "right": { "img": "/data/right.tif", From 036ed79024f2c6cb86b7ba952ddf8b979be53710 Mon Sep 17 00:00:00 2001 From: Philippe Mallet-Ladeira Date: Fri, 19 Jul 2024 15:16:15 +0200 Subject: [PATCH 046/121] test(matching_cost): promote fixture methods out of class --- .../test_matching_cost_compute.py | 149 +++++++++--------- 1 file changed, 75 insertions(+), 74 deletions(-) diff --git a/tests/unit_tests/test_matching_cost/test_matching_cost_compute.py b/tests/unit_tests/test_matching_cost/test_matching_cost_compute.py index 8698370..be4eb45 100644 --- a/tests/unit_tests/test_matching_cost/test_matching_cost_compute.py +++ b/tests/unit_tests/test_matching_cost/test_matching_cost_compute.py @@ -21,6 +21,7 @@ """ Test compute_cost_volumes method from Matching cost """ + import importlib.util # pylint: disable=redefined-outer-name @@ -674,91 +675,93 @@ def test_roi_inside_and_margins_inside( # pylint: disable=too-many-arguments ) -class TestSubpix: - """Test subpix parameter""" +@pytest.fixture() +def make_image_fixture(): + """ + Create image dataset + """ - @pytest.fixture() - def make_image_fixture(self): - """ - Create image dataset - """ + def make_image(disp_row, disp_col, data): + img = xr.Dataset( + {"im": (["row", "col"], data)}, + coords={"row": np.arange(data.shape[0]), "col": np.arange(data.shape[1])}, + ) - def make_image(disp_row, disp_col, data): - img = xr.Dataset( - {"im": (["row", "col"], data)}, - coords={"row": np.arange(data.shape[0]), "col": np.arange(data.shape[1])}, - ) + img.pipe(add_disparity_grid, disp_col, disp_row) - img.pipe(add_disparity_grid, disp_col, disp_row) + img.attrs.update( + { + "no_data_img": -9999, + "valid_pixels": 0, + "no_data_mask": 1, + "crs": None, + } + ) - img.attrs.update( - { - "no_data_img": -9999, - "valid_pixels": 0, - "no_data_mask": 1, - "crs": None, - } - ) + return img - return img + return make_image - return make_image - @pytest.fixture() - def make_cost_volumes(self, make_image_fixture, request): - """ - Instantiate a matching_cost and compute cost_volumes - """ +@pytest.fixture() +def make_cost_volumes(make_image_fixture, request): + """ + Instantiate a matching_cost and compute cost_volumes + """ - cfg = { - "pipeline": { - "matching_cost": { - "matching_cost_method": "ssd", - "window_size": 1, - "step": request.param["step"], - "subpix": request.param["subpix"], - } + cfg = { + "pipeline": { + "matching_cost": { + "matching_cost_method": "ssd", + "window_size": 1, + "step": request.param["step"], + "subpix": request.param["subpix"], } } + } - disp_row = request.param["disp_row"] - disp_col = request.param["disp_col"] + disp_row = request.param["disp_row"] + disp_col = request.param["disp_col"] - img_left = make_image_fixture(disp_row, disp_col, request.param["data_left"]) - img_right = make_image_fixture(disp_row, disp_col, request.param["data_right"]) + img_left = make_image_fixture(disp_row, disp_col, request.param["data_left"]) + img_right = make_image_fixture(disp_row, disp_col, request.param["data_right"]) - matching_cost_ = matching_cost.MatchingCost(cfg["pipeline"]["matching_cost"]) + matching_cost_ = matching_cost.MatchingCost(cfg["pipeline"]["matching_cost"]) - matching_cost_.allocate_cost_volume_pandora( - img_left=img_left, - img_right=img_right, - grid_min_col=np.full( - (img_left["im"].shape[0], img_left["im"].shape[1]), img_left.attrs["col_disparity_source"][0] - ), - grid_max_col=np.full( - (img_left["im"].shape[0], img_left["im"].shape[1]), img_left.attrs["col_disparity_source"][1] - ), - cfg=cfg, - ) + matching_cost_.allocate_cost_volume_pandora( + img_left=img_left, + img_right=img_right, + grid_min_col=np.full( + (img_left["im"].shape[0], img_left["im"].shape[1]), img_left.attrs["col_disparity_source"][0] + ), + grid_max_col=np.full( + (img_left["im"].shape[0], img_left["im"].shape[1]), img_left.attrs["col_disparity_source"][1] + ), + cfg=cfg, + ) - cost_volumes = matching_cost_.compute_cost_volumes( - img_left=img_left, - img_right=img_right, - grid_min_col=np.full( - (img_left["im"].shape[0], img_left["im"].shape[1]), img_left.attrs["col_disparity_source"][0] - ), - grid_max_col=np.full( - (img_left["im"].shape[0], img_left["im"].shape[1]), img_left.attrs["col_disparity_source"][1] - ), - grid_min_row=np.full( - (img_left["im"].shape[0], img_left["im"].shape[1]), img_left.attrs["row_disparity_source"][0] - ), - grid_max_row=np.full( - (img_left["im"].shape[0], img_left["im"].shape[1]), img_left.attrs["row_disparity_source"][1] - ), - ) + cost_volumes = matching_cost_.compute_cost_volumes( + img_left=img_left, + img_right=img_right, + grid_min_col=np.full( + (img_left["im"].shape[0], img_left["im"].shape[1]), img_left.attrs["col_disparity_source"][0] + ), + grid_max_col=np.full( + (img_left["im"].shape[0], img_left["im"].shape[1]), img_left.attrs["col_disparity_source"][1] + ), + grid_min_row=np.full( + (img_left["im"].shape[0], img_left["im"].shape[1]), img_left.attrs["row_disparity_source"][0] + ), + grid_max_row=np.full( + (img_left["im"].shape[0], img_left["im"].shape[1]), img_left.attrs["row_disparity_source"][1] + ), + ) + + return cost_volumes - return cost_volumes + +class TestSubpix: + """Test subpix parameter""" @pytest.mark.parametrize( ["make_cost_volumes", "shape_expected", "row_disparity", "col_disparity"], @@ -832,7 +835,9 @@ def make_cost_volumes(self, make_image_fixture, request): }, (4, 5, 17, 9), # (row, col, disp_col, disp_row) np.arange( - 0, 2.25, 0.25 # step has no influence on subpix disparity range + 0, + 2.25, + 0.25, # step has no influence on subpix disparity range ), # [0, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2] np.arange( -2, 2.25, 0.25 @@ -949,7 +954,6 @@ def test_cost_volumes_values_subpix_positive_row(self, make_cost_volumes, index_ # If the shift is positive, we test all the rows expect the last one for which the shift is equal to 0. for col in range(cost_volumes["cost_volumes"].shape[1]): for row in range(cost_volumes["cost_volumes"].shape[0] - 1): - # index_min = all minimum value indexes index_min = np.where( cost_volumes["cost_volumes"][row, col, index_disp_col_zero, :] @@ -1050,7 +1054,6 @@ def test_cost_volumes_values_subpix_negative_row(self, make_cost_volumes, index_ # If the shift is negative, we test all the rows expect the first one for which the shift is equal to 0. for col in range(cost_volumes["cost_volumes"].shape[1]): for row in range(1, cost_volumes["cost_volumes"].shape[0]): - # index_min = all minimum value indexes index_min = np.where( cost_volumes["cost_volumes"][row, col, index_disp_col_zero, :] @@ -1151,7 +1154,6 @@ def test_cost_volumes_values_subpix_positive_col(self, make_cost_volumes, index_ # If the shift is positive, we test all the columns expect the last one for which the shift is equal to 0. for col in range(cost_volumes["cost_volumes"].shape[1] - 1): for row in range(cost_volumes["cost_volumes"].shape[0]): - # index_min = all minimum value indexes index_min = np.where( cost_volumes["cost_volumes"][row, col, :, index_disp_row_zero] @@ -1252,7 +1254,6 @@ def test_cost_volumes_values_subpix_negative_col(self, make_cost_volumes, index_ # If the shift is negative, we test all the columns expect the first one for which the shift is equal to 0. for col in range(1, cost_volumes["cost_volumes"].shape[1]): for row in range(cost_volumes["cost_volumes"].shape[0]): - # index_min = all minimum value indexes index_min = np.where( cost_volumes["cost_volumes"][row, col, :, index_disp_row_zero] From a6d6c5d5338a5e57f8bc76544375870c00069228 Mon Sep 17 00:00:00 2001 From: Philippe Mallet-Ladeira Date: Mon, 22 Jul 2024 16:55:08 +0200 Subject: [PATCH 047/121] feat: add set_out_of_disparity_range_to_nan Refs: #152 --- pandora2d/matching_cost/matching_cost.py | 31 +++++++ .../test_matching_cost_compute.py | 89 +++++++++++++++++++ 2 files changed, 120 insertions(+) diff --git a/pandora2d/matching_cost/matching_cost.py b/pandora2d/matching_cost/matching_cost.py index 1328c88..74c7074 100644 --- a/pandora2d/matching_cost/matching_cost.py +++ b/pandora2d/matching_cost/matching_cost.py @@ -23,6 +23,7 @@ """ This module contains functions associated to the matching cost computation step. """ + import copy from typing import Dict, List, cast, Union from json_checker import And, Checker @@ -30,6 +31,8 @@ import xarray as xr import numpy as np +from numpy.typing import NDArray + from pandora import matching_cost from pandora.criteria import validity_mask from pandora.margins import Margins @@ -394,3 +397,31 @@ def compute_cost_volumes( del cost_volumes.attrs["ROI_margins_for_cv"] return cost_volumes + + +def set_out_of_disparity_range_to_nan( + cost_volumes: xr.Dataset, min_disp_grid: NDArray[np.floating], max_disp_grid: NDArray[np.floating] +): + """ + Put NaNs in cost_volumes where the disparity is out of the range defined by disparity grids. + + The operation is done inplace. + + :param cost_volumes: cost_volumes to modify. + :type cost_volumes: xr.Dataset + :param min_disp_grid: grid of min below which cost_volumes will be set to NaN. + :type min_disp_grid: NDArray[np.floating] + :param max_disp_grid: grid of max above which cost_volumes will be set to NaN. + :type max_disp_grid: NDArray[np.floating] + """ + # WARNING: if one day we switch dis_row with disp_col index should be -2 + ndisp_row = cost_volumes["cost_volumes"].shape[-1] + + for disp_row in range(ndisp_row): + masking = np.nonzero( + np.logical_or( + cost_volumes.coords["disp_row"].data[disp_row] < min_disp_grid, + cost_volumes.coords["disp_row"].data[disp_row] > max_disp_grid, + ) + ) + cost_volumes["cost_volumes"].data[masking[0], masking[1], :, disp_row] = np.nan diff --git a/tests/unit_tests/test_matching_cost/test_matching_cost_compute.py b/tests/unit_tests/test_matching_cost/test_matching_cost_compute.py index be4eb45..9b8d259 100644 --- a/tests/unit_tests/test_matching_cost/test_matching_cost_compute.py +++ b/tests/unit_tests/test_matching_cost/test_matching_cost_compute.py @@ -760,6 +760,95 @@ def make_cost_volumes(make_image_fixture, request): return cost_volumes +class TestDisparityGrid: + """Test effect of disparity grids.""" + + @pytest.fixture() + def cost_volumes(self): + """cost_volumes full of zeros.""" + nb_cols = 4 + nb_rows = 5 + nb_disp_cols = 6 + nb_disp_rows = 7 + # only need because allocate_cost_volumes delete it + fake_pandora_attrs = {"col_to_compute": 1, "sampling_interval": 1} + return matching_cost.MatchingCost.allocate_cost_volumes( + fake_pandora_attrs, + row=np.arange(nb_rows), + col=np.arange(nb_cols), + disp_range_col=np.arange(2, 2 + nb_disp_cols), + disp_range_row=np.arange(-5, -5 + nb_disp_rows), + ) + + @pytest.fixture() + def min_disp_grid(self, cost_volumes): + return np.full((cost_volumes.sizes["row"], cost_volumes.sizes["col"]), cost_volumes.coords["disp_row"].data[0]) + + @pytest.fixture() + def max_disp_grid(self, cost_volumes): + return np.full((cost_volumes.sizes["row"], cost_volumes.sizes["col"]), cost_volumes.coords["disp_row"].data[-1]) + + def test_homogeneous_grids(self, cost_volumes, min_disp_grid, max_disp_grid): + """With grids set to extreme disparities, cost_volumes should be left untouched.""" + # As set_out_of_disparity_range_to_nan modify cost_volumes in place we do a copy to be able to make the + # comparison latter. + make_cv_copy = cost_volumes.copy(deep=True) + matching_cost.matching_cost.set_out_of_disparity_range_to_nan(cost_volumes, min_disp_grid, max_disp_grid) + + xr.testing.assert_equal(cost_volumes, make_cv_copy) + + def test_variable_min(self, cost_volumes, min_disp_grid, max_disp_grid): + """Check NaN below min disparities.""" + min_disp_index = 1 + min_disp_grid[::2] = cost_volumes.coords["disp_row"].data[min_disp_index] + + matching_cost.matching_cost.set_out_of_disparity_range_to_nan(cost_volumes, min_disp_grid, max_disp_grid) + + expected_nans = cost_volumes["cost_volumes"].data[::2, ..., :min_disp_index] + expected_zeros_on_odd_lines = cost_volumes["cost_volumes"].data[1::2, ...] + expected_zeros_on_even_lines = cost_volumes["cost_volumes"].data[::2, ..., min_disp_index:] + + assert np.all(np.isnan(expected_nans)) + assert np.all(expected_zeros_on_odd_lines == 0) + assert np.all(expected_zeros_on_even_lines == 0) + + def test_variable_max(self, cost_volumes, min_disp_grid, max_disp_grid): + """Check NaNs above max disparities.""" + max_disp_index = 1 + max_disp_grid[::2] = cost_volumes.coords["disp_row"].data[max_disp_index] + + matching_cost.matching_cost.set_out_of_disparity_range_to_nan(cost_volumes, min_disp_grid, max_disp_grid) + + expected_nans = cost_volumes["cost_volumes"].data[::2, ..., (max_disp_index + 1) :] + expected_zeros_on_odd_lines = cost_volumes["cost_volumes"].data[1::2, ...] + expected_zeros_on_even_lines = cost_volumes["cost_volumes"].data[::2, ..., : (max_disp_index + 1)] + + assert np.all(np.isnan(expected_nans)) + assert np.all(expected_zeros_on_odd_lines == 0) + assert np.all(expected_zeros_on_even_lines == 0) + + def test_variable_min_and_max(self, cost_volumes, min_disp_grid, max_disp_grid): + """Check NaNs below min and above max disparities.""" + min_disp_index = 1 + min_disp_grid[::2] = cost_volumes.coords["disp_row"].data[min_disp_index] + max_disp_index = 2 + max_disp_grid[::2] = cost_volumes.coords["disp_row"].data[max_disp_index] + + matching_cost.matching_cost.set_out_of_disparity_range_to_nan(cost_volumes, min_disp_grid, max_disp_grid) + + expected_below_min_nans = cost_volumes["cost_volumes"].data[::2, ..., :min_disp_index] + expected_above_max_nans = cost_volumes["cost_volumes"].data[::2, ..., (max_disp_index + 1) :] + expected_zeros_on_odd_lines = cost_volumes["cost_volumes"].data[1::2, ...] + expected_zeros_on_even_lines = cost_volumes["cost_volumes"].data[ + ::2, ..., min_disp_index : (max_disp_index + 1) + ] + + assert np.all(np.isnan(expected_below_min_nans)) + assert np.all(np.isnan(expected_above_max_nans)) + assert np.all(expected_zeros_on_odd_lines == 0) + assert np.all(expected_zeros_on_even_lines == 0) + + class TestSubpix: """Test subpix parameter""" From 17806e8c9a0daa022ffc31b03806b0b3f29675ef Mon Sep 17 00:00:00 2001 From: Philippe Mallet-Ladeira Date: Wed, 24 Jul 2024 17:15:15 +0200 Subject: [PATCH 048/121] feat: use set_out_of_disparity_range_to_nan in compute_cost_volumes Add `random_generator` fixture with associated `random_seed` fixture to generate random numbers. Refs: #152 --- pandora2d/matching_cost/matching_cost.py | 1 + tests/conftest.py | 17 +++ .../test_matching_cost_compute.py | 110 ++++++++++++++++-- 3 files changed, 118 insertions(+), 10 deletions(-) diff --git a/pandora2d/matching_cost/matching_cost.py b/pandora2d/matching_cost/matching_cost.py index 74c7074..642cbf6 100644 --- a/pandora2d/matching_cost/matching_cost.py +++ b/pandora2d/matching_cost/matching_cost.py @@ -395,6 +395,7 @@ def compute_cost_volumes( # Delete ROI_margins attributes which we used to calculate the row coordinates in the cost_volumes del cost_volumes.attrs["ROI_margins_for_cv"] + set_out_of_disparity_range_to_nan(cost_volumes, grid_min_row, grid_max_row) return cost_volumes diff --git a/tests/conftest.py b/tests/conftest.py index 5a09696..afeca86 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -25,6 +25,7 @@ import pathlib import re +import numpy as np import pytest import rasterio from pandora.common import write_data_array @@ -202,3 +203,19 @@ def correct_input_with_right_mask(left_img_path, right_img_path, mask_path): "row_disparity": {"init": 0, "range": 2}, } } + + +@pytest.fixture() +def random_seed(): + """ + Seed generated with: + + >>> import secrets + >>> secrets.randbits(128) + """ + return 160187526967402499820683775418299155210 + + +@pytest.fixture() +def random_generator(random_seed): + return np.random.default_rng(random_seed) diff --git a/tests/unit_tests/test_matching_cost/test_matching_cost_compute.py b/tests/unit_tests/test_matching_cost/test_matching_cost_compute.py index 9b8d259..c6c35d8 100644 --- a/tests/unit_tests/test_matching_cost/test_matching_cost_compute.py +++ b/tests/unit_tests/test_matching_cost/test_matching_cost_compute.py @@ -32,7 +32,7 @@ import pytest from pandora.margins import Margins -from pandora2d import matching_cost +from pandora2d import matching_cost, disparity from pandora2d.img_tools import create_datasets_from_inputs, add_disparity_grid @@ -764,12 +764,24 @@ class TestDisparityGrid: """Test effect of disparity grids.""" @pytest.fixture() - def cost_volumes(self): + def nb_rows(self): + return 5 + + @pytest.fixture() + def nb_cols(self): + return 4 + + @pytest.fixture() + def nb_disp_rows(self): + return 6 + + @pytest.fixture() + def nb_disp_cols(self): + return 7 + + @pytest.fixture() + def cost_volumes(self, nb_rows, nb_cols, nb_disp_rows, nb_disp_cols): """cost_volumes full of zeros.""" - nb_cols = 4 - nb_rows = 5 - nb_disp_cols = 6 - nb_disp_rows = 7 # only need because allocate_cost_volumes delete it fake_pandora_attrs = {"col_to_compute": 1, "sampling_interval": 1} return matching_cost.MatchingCost.allocate_cost_volumes( @@ -781,12 +793,12 @@ def cost_volumes(self): ) @pytest.fixture() - def min_disp_grid(self, cost_volumes): - return np.full((cost_volumes.sizes["row"], cost_volumes.sizes["col"]), cost_volumes.coords["disp_row"].data[0]) + def min_disp_grid(self, cost_volumes, nb_rows, nb_cols): + return np.full((nb_rows, nb_cols), cost_volumes.coords["disp_row"].data[0]) @pytest.fixture() - def max_disp_grid(self, cost_volumes): - return np.full((cost_volumes.sizes["row"], cost_volumes.sizes["col"]), cost_volumes.coords["disp_row"].data[-1]) + def max_disp_grid(self, cost_volumes, nb_rows, nb_cols): + return np.full((nb_rows, nb_cols), cost_volumes.coords["disp_row"].data[-1]) def test_homogeneous_grids(self, cost_volumes, min_disp_grid, max_disp_grid): """With grids set to extreme disparities, cost_volumes should be left untouched.""" @@ -848,6 +860,84 @@ def test_variable_min_and_max(self, cost_volumes, min_disp_grid, max_disp_grid): assert np.all(expected_zeros_on_odd_lines == 0) assert np.all(expected_zeros_on_even_lines == 0) + @pytest.fixture() + def row_index(self, nb_rows): + return nb_rows // 2 + + @pytest.fixture() + def col_index(self, nb_cols): + return nb_cols // 2 + + @pytest.fixture() + def disparity_maps(self, make_image_fixture, random_generator, nb_rows, nb_cols, row_index, col_index): + """Compute disparity maps and return disp_map_row and disp_map_col.""" + image = make_image_fixture( + disp_col={"init": 0, "range": 2}, + disp_row={"init": 0, "range": 2}, + data=random_generator.integers(0, 255, (nb_rows, nb_cols), endpoint=True), + ) + # Make disparity search out of truth for one point + image["row_disparity"].loc[ + { + "band_disp": "min", + "row": row_index, + "col": col_index, + } + ] = 1 + + cfg = { + "pipeline": { + "matching_cost": { + "matching_cost_method": "ssd", + "window_size": 1, + "step": [1, 1], + "subpix": 1, + } + } + } + matching_cost_ = matching_cost.MatchingCost(cfg["pipeline"]["matching_cost"]) + + grid_min_col = image["col_disparity"].sel(band_disp="min").data + grid_max_col = image["col_disparity"].sel(band_disp="max").data + grid_min_row = image["row_disparity"].sel(band_disp="min").data + grid_max_row = image["row_disparity"].sel(band_disp="max").data + + matching_cost_.allocate_cost_volume_pandora( + img_left=image, + img_right=image, + grid_min_col=grid_min_col, + grid_max_col=grid_max_col, + cfg=cfg, + ) + + cost_volumes = matching_cost_.compute_cost_volumes( + img_left=image, + img_right=image, + grid_min_col=grid_min_col, + grid_max_col=grid_max_col, + grid_min_row=grid_min_row, + grid_max_row=grid_max_row, + ) + + disparity_matcher = disparity.Disparity({"disparity_method": "wta", "invalid_disparity": -99}) + + disp_map_col, disp_map_row, _ = disparity_matcher.compute_disp_maps(cost_volumes) + return disp_map_row, disp_map_col + + def test_effect_on_compute_cost_volume(self, disparity_maps, row_index, col_index): + """Check best candidate out of disparity range is not chosen by wta. + + As we use the very same images, WTA should find a 0 disparity everywhere except for the point where we set a + disparity range that did not include 0. + """ + disp_map_row = disparity_maps[0] + + assert disp_map_row[row_index, col_index] != 0 + assert np.all(disp_map_row[:row_index, :] == 0) + assert np.all(disp_map_row[row_index + 1 :, :] == 0) + assert np.all(disp_map_row[:, :col_index] == 0) + assert np.all(disp_map_row[:, col_index + 1 :] == 0) + class TestSubpix: """Test subpix parameter""" From e36fce472b03882d981688b0269f20c6c8ffa492 Mon Sep 17 00:00:00 2001 From: Philippe Mallet-Ladeira Date: Wed, 24 Jul 2024 17:33:47 +0200 Subject: [PATCH 049/121] test(matching_cost): out of col disparity range --- .../test_matching_cost_compute.py | 29 ++++++++++++------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/tests/unit_tests/test_matching_cost/test_matching_cost_compute.py b/tests/unit_tests/test_matching_cost/test_matching_cost_compute.py index c6c35d8..af2aa38 100644 --- a/tests/unit_tests/test_matching_cost/test_matching_cost_compute.py +++ b/tests/unit_tests/test_matching_cost/test_matching_cost_compute.py @@ -869,7 +869,13 @@ def col_index(self, nb_cols): return nb_cols // 2 @pytest.fixture() - def disparity_maps(self, make_image_fixture, random_generator, nb_rows, nb_cols, row_index, col_index): + def disparity_to_alter(self): + return "row_disparity" + + @pytest.fixture() + def disparity_maps( + self, make_image_fixture, random_generator, nb_rows, nb_cols, row_index, col_index, disparity_to_alter + ): """Compute disparity maps and return disp_map_row and disp_map_col.""" image = make_image_fixture( disp_col={"init": 0, "range": 2}, @@ -877,7 +883,7 @@ def disparity_maps(self, make_image_fixture, random_generator, nb_rows, nb_cols, data=random_generator.integers(0, 255, (nb_rows, nb_cols), endpoint=True), ) # Make disparity search out of truth for one point - image["row_disparity"].loc[ + image[disparity_to_alter].loc[ { "band_disp": "min", "row": row_index, @@ -922,21 +928,24 @@ def disparity_maps(self, make_image_fixture, random_generator, nb_rows, nb_cols, disparity_matcher = disparity.Disparity({"disparity_method": "wta", "invalid_disparity": -99}) disp_map_col, disp_map_row, _ = disparity_matcher.compute_disp_maps(cost_volumes) - return disp_map_row, disp_map_col + return {"row_disparity": disp_map_row, "col_disparity": disp_map_col} - def test_effect_on_compute_cost_volume(self, disparity_maps, row_index, col_index): + @pytest.mark.parametrize("disparity_to_alter", ["row_disparity", "col_disparity"]) + def test_effect_on_compute_cost_volume(self, disparity_maps, disparity_to_alter, row_index, col_index): """Check best candidate out of disparity range is not chosen by wta. As we use the very same images, WTA should find a 0 disparity everywhere except for the point where we set a disparity range that did not include 0. + + Note: `col_disparity` is done by Pandora. """ - disp_map_row = disparity_maps[0] + result = disparity_maps[disparity_to_alter] - assert disp_map_row[row_index, col_index] != 0 - assert np.all(disp_map_row[:row_index, :] == 0) - assert np.all(disp_map_row[row_index + 1 :, :] == 0) - assert np.all(disp_map_row[:, :col_index] == 0) - assert np.all(disp_map_row[:, col_index + 1 :] == 0) + assert result[row_index, col_index] != 0 + assert np.all(result[:row_index, :] == 0) + assert np.all(result[row_index + 1 :, :] == 0) + assert np.all(result[:, :col_index] == 0) + assert np.all(result[:, col_index + 1 :] == 0) class TestSubpix: From 652a0382cf36ae9f232c32e79d93153c4369f0d7 Mon Sep 17 00:00:00 2001 From: Philippe Mallet-Ladeira Date: Thu, 25 Jul 2024 09:17:52 +0200 Subject: [PATCH 050/121] test(matching_cost): out of col disparity range when not filtered --- .../test_matching_cost_compute.py | 54 +++++++++++++++++-- 1 file changed, 50 insertions(+), 4 deletions(-) diff --git a/tests/unit_tests/test_matching_cost/test_matching_cost_compute.py b/tests/unit_tests/test_matching_cost/test_matching_cost_compute.py index af2aa38..fc6bd39 100644 --- a/tests/unit_tests/test_matching_cost/test_matching_cost_compute.py +++ b/tests/unit_tests/test_matching_cost/test_matching_cost_compute.py @@ -28,6 +28,7 @@ # pylint: disable=too-many-lines import numpy as np import xarray as xr +from pytest_mock import MockerFixture from rasterio import Affine import pytest @@ -516,7 +517,7 @@ def test_cost_volume_coordinates_with_roi(roi, input_config, matching_cost_confi pytest.param( [2, 1], np.arange(10), - np.arange(0, 10, 2), # 1 < step_row < len(cost_volume["cost_volumes"].coords["row"]) + np.arange(0, 10, 2), # 1 < step_row < len(cost_volume["cost_volumes"].coords["row"]) id="No ROI, step_row=2 and step_col=1", ), pytest.param( @@ -527,7 +528,7 @@ def test_cost_volume_coordinates_with_roi(roi, input_config, matching_cost_confi ), pytest.param( [1, 3], - np.arange(0, 10, 3), # 1 < step_col < len(cost_volume["cost_volumes"].coords["col"]) + np.arange(0, 10, 3), # 1 < step_col < len(cost_volume["cost_volumes"].coords["col"]) np.arange(10), id="No ROI, step_row=1 and step_col=3", ), @@ -872,10 +873,43 @@ def col_index(self, nb_cols): def disparity_to_alter(self): return "row_disparity" + @pytest.fixture() + def mock_type(self): + return "used" + + @pytest.fixture() + def mock_set_out_of_disparity_range_to_nan(self, mock_type, mocker: MockerFixture): + """ + Used or bypass set_out_of_disparity_range_to_nan. + + :param mock_type: `used` or `not used` + :type mock_type: str + :param mocker: + :type mocker: + :return: Mock if mock_type is `use` + :rtype: Mock or None + :raises: ValueError if mock_type is neither `used` or `not used` + """ + if mock_type == "not used": + return mocker.patch( + "pandora2d.matching_cost.matching_cost.set_out_of_disparity_range_to_nan", + side_effect=lambda x, y, z: x, + ) + if mock_type != "used": + raise ValueError(f"Expected mock_type to be 'used' or 'not used', got {mock_type}.") + @pytest.fixture() def disparity_maps( - self, make_image_fixture, random_generator, nb_rows, nb_cols, row_index, col_index, disparity_to_alter - ): + self, + make_image_fixture, + random_generator, + nb_rows, + nb_cols, + row_index, + col_index, + disparity_to_alter, + mock_set_out_of_disparity_range_to_nan, + ): # pylint: disable=too-many-arguments,unused-argument """Compute disparity maps and return disp_map_row and disp_map_col.""" image = make_image_fixture( disp_col={"init": 0, "range": 2}, @@ -947,6 +981,18 @@ def test_effect_on_compute_cost_volume(self, disparity_maps, disparity_to_alter, assert np.all(result[:, :col_index] == 0) assert np.all(result[:, col_index + 1 :] == 0) + @pytest.mark.parametrize("mock_type", ["not used"]) + def test_when_not_taken_into_account( + self, disparity_maps, disparity_to_alter, mock_set_out_of_disparity_range_to_nan + ): # pylint: disable=unused-argument + """Check best candidate out of disparity range is not chosen by wta. + + Note: `col_disparity` is done by Pandora. + """ + result = disparity_maps[disparity_to_alter] + + assert np.all(result == 0) + class TestSubpix: """Test subpix parameter""" From 314aca0ddc8665c8016a76dcb9a23ecc74026e5a Mon Sep 17 00:00:00 2001 From: Marie Leconte Date: Mon, 29 Jul 2024 10:58:28 +0200 Subject: [PATCH 051/121] fix: remove inf on cost volume --- pandora2d/disparity/disparity.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/pandora2d/disparity/disparity.py b/pandora2d/disparity/disparity.py index 9a24030..bcd8c3e 100644 --- a/pandora2d/disparity/disparity.py +++ b/pandora2d/disparity/disparity.py @@ -25,12 +25,12 @@ from typing import Dict, Tuple, Callable from json_checker import Or, And, Checker -from pandora.margins.descriptors import NullMargins -from pandora.margins import Margins - import numpy as np import xarray as xr +from pandora.margins.descriptors import NullMargins +from pandora.margins import Margins + class Disparity: """ @@ -269,6 +269,7 @@ def compute_disp_maps(self, cost_volumes: xr.Dataset) -> Tuple[np.ndarray, np.nd score_map = self.get_score(maps_min_row, np.min) invalid_mc = np.all(indices_nan, axis=(2, 3)) + cost_volumes_user["cost_volumes"].data[indices_nan] = np.nan disp_map_col = disp_map_col.astype("float32") disp_map_row = disp_map_row.astype("float32") From 097fb71c210226dd0ccdd883f6e72124d35387f8 Mon Sep 17 00:00:00 2001 From: Marie Leconte Date: Mon, 29 Jul 2024 15:49:26 +0200 Subject: [PATCH 052/121] feat: refactoring matching_cost API to get disparity grid from left_img --- pandora2d/matching_cost/matching_cost.py | 18 ++++++++--------- pandora2d/state_machine.py | 25 +----------------------- 2 files changed, 9 insertions(+), 34 deletions(-) diff --git a/pandora2d/matching_cost/matching_cost.py b/pandora2d/matching_cost/matching_cost.py index 642cbf6..9f0ac8f 100644 --- a/pandora2d/matching_cost/matching_cost.py +++ b/pandora2d/matching_cost/matching_cost.py @@ -207,8 +207,6 @@ def allocate_cost_volume_pandora( self, img_left: xr.Dataset, img_right: xr.Dataset, - grid_min_col: np.ndarray, - grid_max_col: np.ndarray, cfg: Dict, margins: Margins = None, ) -> None: @@ -220,10 +218,6 @@ def allocate_cost_volume_pandora( - im : 2D (row, col) xarray.DataArray - msk : 2D (row, col) xarray.DataArray :type img_left: xr.Dataset - :param grid_min_col: grid containing min disparities for columns. - :type grid_min_col: np.ndarray - :param grid_max_col: grid containing max disparities for columns. - :type grid_max_col: np.ndarray :param cfg: matching_cost computation configuration :type cfg: Dict :param margins: refinement margins @@ -232,6 +226,8 @@ def allocate_cost_volume_pandora( """ # Adapt Pandora matching cost configuration img_left.attrs["disparity_source"] = img_left.attrs["col_disparity_source"] + grid_min_col = img_left["col_disparity"].sel(band_disp="min").data.copy() + grid_max_col = img_left["col_disparity"].sel(band_disp="max").data.copy() if margins is not None: grid_min_col -= margins.left @@ -276,10 +272,6 @@ def compute_cost_volumes( self, img_left: xr.Dataset, img_right: xr.Dataset, - grid_min_col: np.ndarray, - grid_max_col: np.ndarray, - grid_min_row: np.ndarray, - grid_max_row: np.ndarray, margins: Margins = None, ) -> xr.Dataset: """ @@ -312,8 +304,14 @@ def compute_cost_volumes( # Adapt Pandora matching cost configuration img_left.attrs["disparity_source"] = img_left.attrs["col_disparity_source"] + grid_min_col = img_left["col_disparity"].sel(band_disp="min").data.copy() + grid_max_col = img_left["col_disparity"].sel(band_disp="max").data.copy() + grid_min_row = img_left["row_disparity"].sel(band_disp="min").data.copy() + grid_max_row = img_left["row_disparity"].sel(band_disp="max").data.copy() if margins is not None: + grid_min_col -= margins.left + grid_max_col += margins.right grid_min_row -= margins.up grid_max_row += margins.down diff --git a/pandora2d/state_machine.py b/pandora2d/state_machine.py index aa78255..60ebe67 100644 --- a/pandora2d/state_machine.py +++ b/pandora2d/state_machine.py @@ -27,7 +27,6 @@ import logging from typing import TYPE_CHECKING, Dict, List, Literal, Optional, TypedDict, Union -import numpy as np import xarray as xr from typing_extensions import Annotated @@ -109,12 +108,6 @@ def __init__( self.left_img: Optional[xr.Dataset] = None # Right image self.right_img: Optional[xr.Dataset] = None - # Column's min, max disparities - self.disp_min_col: np.ndarray = None - self.disp_max_col: np.ndarray = None - # Row's min, max disparities - self.disp_min_row: np.ndarray = None - self.disp_max_row: np.ndarray = None self.pipeline_cfg: Dict = {"pipeline": {}} self.completed_cfg: Dict = {} @@ -162,12 +155,6 @@ def run_prepare(self, img_left: xr.Dataset, img_right: xr.Dataset, cfg: dict) -> self.left_img = img_left self.right_img = img_right - # Column's min, max disparities - self.disp_min_col = img_left["col_disparity"].sel(band_disp="min").data.copy() - self.disp_max_col = img_left["col_disparity"].sel(band_disp="max").data.copy() - # Row's min, max disparities - self.disp_min_row = img_left["row_disparity"].sel(band_disp="min").data.copy() - self.disp_max_row = img_left["row_disparity"].sel(band_disp="max").data.copy() self.completed_cfg = copy.copy(cfg) self.add_transitions(self._transitions_run) @@ -320,7 +307,7 @@ def matching_cost_prepare(self, cfg: Dict[str, dict], input_step: str) -> None: self.matching_cost_ = matching_cost.MatchingCost(cfg["pipeline"][input_step]) self.matching_cost_.allocate_cost_volume_pandora( - self.left_img, self.right_img, self.disp_min_col, self.disp_max_col, cfg, self.margins.get("refinement") + self.left_img, self.right_img, cfg, self.margins.get("refinement") ) def estimation_run(self, cfg: Dict[str, dict], input_step: str) -> None: @@ -340,12 +327,6 @@ def estimation_run(self, cfg: Dict[str, dict], input_step: str) -> None: row_disparity, col_disparity, shifts, extra_dict = estimation_.compute_estimation(self.left_img, self.right_img) self.left_img = img_tools.add_disparity_grid(self.left_img, col_disparity, row_disparity) - # Column's min, max disparities - self.disp_min_col = self.left_img["col_disparity"].sel(band_disp="min").data - self.disp_max_col = self.left_img["col_disparity"].sel(band_disp="max").data - # Row's min, max disparities - self.disp_min_row = self.left_img["row_disparity"].sel(band_disp="min").data - self.disp_max_row = self.left_img["row_disparity"].sel(band_disp="max").data self.completed_cfg = estimation_.update_cfg_with_estimation( cfg, col_disparity, row_disparity, shifts, extra_dict @@ -363,10 +344,6 @@ def matching_cost_run(self, _, __) -> None: self.cost_volumes = self.matching_cost_.compute_cost_volumes( self.left_img, self.right_img, - self.disp_min_col, - self.disp_max_col, - self.disp_min_row, - self.disp_max_row, self.margins.get("refinement"), ) From 3f00d701197a8cc192155db0b43ac7fa118fbaca Mon Sep 17 00:00:00 2001 From: Marie Leconte Date: Mon, 29 Jul 2024 15:51:03 +0200 Subject: [PATCH 053/121] refactoring: update disparity test with using fixture --- tests/unit_tests/conftest.py | 17 +- tests/unit_tests/test_disparity.py | 293 +++++++---------------------- 2 files changed, 77 insertions(+), 233 deletions(-) diff --git a/tests/unit_tests/conftest.py b/tests/unit_tests/conftest.py index 3859fbc..6cbde52 100644 --- a/tests/unit_tests/conftest.py +++ b/tests/unit_tests/conftest.py @@ -27,6 +27,7 @@ from skimage.io import imsave from pandora2d import Pandora2DMachine +from pandora2d.img_tools import add_left_disparity_grid @pytest.fixture() @@ -178,12 +179,12 @@ def left_stereo_object(): "valid_pixels": 0, "no_data_mask": 1, "crs": None, - "col_disparity_source": {"init": 1, "range": 1}, - "row_disparity_source": {"init": -1, "range": 1}, "transform": Affine(1.0, 0.0, 0.0, 0.0, 1.0, 0.0), } - return left + return left.pipe( + add_left_disparity_grid, {"col_disparity": {"init": 1, "range": 1}, "row_disparity": {"init": -1, "range": 1}} + ) @pytest.fixture() @@ -233,8 +234,6 @@ def stereo_object_with_args(): "valid_pixels": 0, "no_data_mask": 1, "crs": None, - "col_disparity_source": {"init": 1, "range": 1}, - "row_disparity_source": {"init": -1, "range": 1}, } data = np.array( @@ -255,4 +254,10 @@ def stereo_object_with_args(): "crs": None, } - return left_arg, right_arg + return ( + left_arg.pipe( + add_left_disparity_grid, + {"col_disparity": {"init": 1, "range": 1}, "row_disparity": {"init": -1, "range": 1}}, + ), + right_arg, + ) diff --git a/tests/unit_tests/test_disparity.py b/tests/unit_tests/test_disparity.py index daf965d..6f6afd2 100644 --- a/tests/unit_tests/test_disparity.py +++ b/tests/unit_tests/test_disparity.py @@ -34,6 +34,7 @@ from pandora.margins import Margins from pandora2d import matching_cost, disparity +from pandora2d.img_tools import add_left_disparity_grid class TestCheckConf: @@ -113,21 +114,14 @@ def test_extrema_split(left_stereo_object, right_stereo_object, extrema_func, ex """ Test the min_split function """ - - left, right = left_stereo_object, right_stereo_object - # create a cost_volume, with SAD measure, window_size 1, dispx_min 0, dispx_max 1, dispy_min -1, dispy_max 0 cfg = {"pipeline": {"matching_cost": {"matching_cost_method": "sad", "window_size": 1}}} matching_cost_test = matching_cost.MatchingCost(cfg["pipeline"]["matching_cost"]) - grid_min_col = np.full((3, 3), 0) - grid_max_col = np.full((3, 3), 1) - grid_min_row = np.full((3, 3), -1) - grid_max_row = np.full((3, 3), 0) - matching_cost_test.allocate_cost_volume_pandora( - img_left=left, img_right=right, grid_min_col=grid_min_col, grid_max_col=grid_max_col, cfg=cfg - ) - cvs = matching_cost_test.compute_cost_volumes(left, right, grid_min_col, grid_max_col, grid_min_row, grid_max_row) + left_stereo_object["col_disparity"][1, :, :] = np.full((3, 3), 1) + left_stereo_object["row_disparity"][0, :, :] = np.full((3, 3), -1) + matching_cost_test.allocate_cost_volume_pandora(img_left=left_stereo_object, img_right=right_stereo_object, cfg=cfg) + cvs = matching_cost_test.compute_cost_volumes(left_stereo_object, right_stereo_object) disparity_test = disparity.Disparity({"disparity_method": "wta", "invalid_disparity": -9999}) # searching along dispy axis @@ -166,20 +160,14 @@ def test_arg_split(stereo_object_with_args, extrema_func, arg_extrema_func, expe matching_cost_test = matching_cost.MatchingCost(cfg["pipeline"]["matching_cost"]) - grid_min_col = np.full((3, 3), 0) - grid_max_col = np.full((3, 3), 1) - grid_min_row = np.full((3, 3), -1) - grid_max_row = np.full((3, 3), 0) + left_arg["col_disparity"][1, :, :] = np.full((5, 5), 1) + left_arg["row_disparity"][0, :, :] = np.full((5, 5), -1) matching_cost_test.allocate_cost_volume_pandora( img_left=left_arg, img_right=right_arg, - grid_min_col=grid_min_col, - grid_max_col=grid_max_col, cfg=cfg, ) - cvs = matching_cost_test.compute_cost_volumes( - left_arg, right_arg, grid_min_col, grid_max_col, grid_min_row, grid_max_row - ) + cvs = matching_cost_test.compute_cost_volumes(left_arg, right_arg) disparity_test = disparity.Disparity({"disparity_method": "wta", "invalid_disparity": -9999}) # searching along dispy axis @@ -189,93 +177,53 @@ def test_arg_split(stereo_object_with_args, extrema_func, arg_extrema_func, expe np.testing.assert_allclose(min_tensor, expected_result, atol=1e-06) -@pytest.mark.parametrize( - "margins", - [ - None, - Margins(0, 0, 0, 0), - Margins(0, 0, 1, 1), - Margins(1, 1, 1, 1), - pytest.param( - Margins(3, 3, 3, 3), - ), - pytest.param( - Margins(1, 2, 3, 4), - ), - ], -) -def test_compute_disparity_map_row(margins): - """ - Test function for disparity computation - """ - data = np.array( - ([[9, 10, 11, 12], [5, 6, 7, 8], [1, 2, 3, 4]]), - dtype=np.float64, - ) - mask = np.array(([0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]), dtype=np.int16) - left = xr.Dataset( - {"im": (["row", "col"], data), "msk": (["row", "col"], mask)}, - coords={"row": np.arange(data.shape[0]), "col": np.arange(data.shape[1])}, - ) - left.attrs = { +@pytest.fixture() +def default_attributs(): + return { "no_data_img": -9999, "valid_pixels": 0, "no_data_mask": 1, "crs": None, "transform": Affine(1.0, 0.0, 0.0, 0.0, 1.0, 0.0), - "col_disparity_source": {"init": 0, "range": 2}, - "row_disparity_source": {"init": 0, "range": 2}, } - data = np.array( - [[5, 6, 7, 8], [1, 2, 3, 4], [9, 10, 11, 12]], - dtype=np.float64, - ) - mask = np.array(([0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]), dtype=np.int16) - right = xr.Dataset( - {"im": (["row", "col"], data), "msk": (["row", "col"], mask)}, - coords={"row": np.arange(data.shape[0]), "col": np.arange(data.shape[1])}, - ) - right.attrs = { - "no_data_img": -9999, - "valid_pixels": 0, - "no_data_mask": 1, - "crs": None, - "transform": Affine(1.0, 0.0, 0.0, 0.0, 1.0, 0.0), - } - ground_truth_col = np.array([[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]) +@pytest.fixture() +def cfg_mc(): + # create matching_cost object with measure = ssd, window_size = 1 + return {"pipeline": {"matching_cost": {"matching_cost_method": "ssd", "window_size": 1}}} - ground_truth_row = np.array([[2, 2, 2, 2], [-1, -1, -1, -1], [-1, -1, -1, -1]]) - # create matching_cost object with measure = ssd, window_size = 1 - cfg_mc = {"pipeline": {"matching_cost": {"matching_cost_method": "ssd", "window_size": 1}}} +def matching_cost_obj(cfg): + return matching_cost.MatchingCost(cfg["pipeline"]["matching_cost"]) - matching_cost_matcher = matching_cost.MatchingCost(cfg_mc["pipeline"]["matching_cost"]) + +@pytest.fixture() +def disparity_matcher(): # create disparity object with WTA method cfg_disp = {"disparity_method": "wta", "invalid_disparity": -5} - disparity_matcher = disparity.Disparity(cfg_disp) + return disparity.Disparity(cfg_disp) - grid_min_col = np.full((3, 4), -2) - grid_max_col = np.full((3, 4), 2) - grid_min_row = np.full((3, 4), -2) - grid_max_row = np.full((3, 4), 2) - matching_cost_matcher.allocate_cost_volume_pandora( - img_left=left, - img_right=right, - grid_min_col=grid_min_col, - grid_max_col=grid_max_col, - cfg=cfg_mc, - margins=margins, - ) - cvs = matching_cost_matcher.compute_cost_volumes( - left, right, grid_min_col, grid_max_col, grid_min_row, grid_max_row, margins + +@pytest.fixture() +def img_left(default_attributs, data_left, disparity_cfg): + left = xr.Dataset( + {"im": (["row", "col"], data_left)}, + coords={"row": np.arange(data_left.shape[0]), "col": np.arange(data_left.shape[1])}, ) + left.attrs = default_attributs + left.pipe(add_left_disparity_grid, disparity_cfg) + return left - delta_x, delta_y, _ = disparity_matcher.compute_disp_maps(cvs) - np.testing.assert_array_equal(ground_truth_col, delta_x) - np.testing.assert_array_equal(ground_truth_row, delta_y) +@pytest.fixture() +def img_right(default_attributs, data_right): + right = xr.Dataset( + {"im": (["row", "col"], data_right)}, + coords={"row": np.arange(data_right.shape[0]), "col": np.arange(data_right.shape[1])}, + ) + right.attrs = default_attributs + return right @pytest.mark.parametrize( @@ -284,145 +232,44 @@ def test_compute_disparity_map_row(margins): None, Margins(0, 0, 0, 0), Margins(1, 0, 1, 0), - pytest.param( - Margins(3, 3, 3, 3), - ), - pytest.param( - Margins(1, 2, 3, 4), - ), + Margins(1, 1, 1, 1), + Margins(3, 3, 3, 3), + Margins(1, 2, 3, 4), ], ) -def test_compute_disparity_map_col(margins): - """ - Test function for disparity computation - """ - data = np.array( - ([[5, 6, 7, 8], [1, 2, 3, 4], [9, 10, 11, 12]]), - dtype=np.float64, - ) - mask = np.array(([0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]), dtype=np.int16) - left = xr.Dataset( - {"im": (["row", "col"], data), "msk": (["row", "col"], mask)}, - coords={"row": np.arange(data.shape[0]), "col": np.arange(data.shape[1])}, - ) - left.attrs = { - "no_data_img": -9999, - "valid_pixels": 0, - "no_data_mask": 1, - "crs": None, - "transform": Affine(1.0, 0.0, 0.0, 0.0, 1.0, 0.0), - "col_disparity_source": {"init": 0, "range": 3}, - "row_disparity_source": {"init": 0, "range": 3}, - } - - data = np.array( - [[8, 5, 6, 7], [4, 1, 2, 3], [12, 9, 10, 11]], - dtype=np.float64, - ) - mask = np.array(([0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]), dtype=np.int16) - right = xr.Dataset( - {"im": (["row", "col"], data), "msk": (["row", "col"], mask)}, - coords={"row": np.arange(data.shape[0]), "col": np.arange(data.shape[1])}, - ) - right.attrs = { - "no_data_img": -9999, - "valid_pixels": 0, - "no_data_mask": 1, - "crs": None, - "transform": Affine(1.0, 0.0, 0.0, 0.0, 1.0, 0.0), - } - - ground_truth_row = np.array([[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]) - - ground_truth_col = np.array([[1, 1, 1, -3], [1, 1, 1, -3], [1, 1, 1, -3]]) - - # create matching_cost object with measure = ssd, window_size = 1 - cfg_mc = {"pipeline": {"matching_cost": {"matching_cost_method": "ssd", "window_size": 1}}} - matching_cost_matcher = matching_cost.MatchingCost(cfg_mc["pipeline"]["matching_cost"]) - # create disparity object with WTA method - cfg_disp = {"disparity_method": "wta", "invalid_disparity": -5} - disparity_matcher = disparity.Disparity(cfg_disp) - - grid_min_col = np.full((3, 4), -3) - grid_max_col = np.full((3, 4), 3) - grid_min_row = np.full((3, 4), -3) - grid_max_row = np.full((3, 4), 3) - matching_cost_matcher.allocate_cost_volume_pandora( - img_left=left, - img_right=right, - grid_min_col=grid_min_col, - grid_max_col=grid_max_col, - cfg=cfg_mc, - margins=margins, - ) - cvs = matching_cost_matcher.compute_cost_volumes( - left, right, grid_min_col, grid_max_col, grid_min_row, grid_max_row, margins - ) - - delta_x, delta_y, _ = disparity_matcher.compute_disp_maps(cvs) - - np.testing.assert_array_equal(ground_truth_col, delta_x) - np.testing.assert_array_equal(ground_truth_row, delta_y) - - @pytest.mark.parametrize( - "margins", + ["data_left", "data_right", "ground_truth_row", "ground_truth_col", "disparity_cfg"], [ - None, - Margins(0, 0, 0, 0), - Margins(1, 0, 1, 0), pytest.param( - Margins(3, 3, 3, 3), + np.array(([[5, 6, 7, 8], [1, 2, 3, 4], [9, 10, 11, 12]]), dtype=np.float64), + np.array(([[8, 5, 6, 7], [4, 1, 2, 3], [12, 9, 10, 11]]), dtype=np.float64), + np.array([[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]), + np.array([[1, 1, 1, -3], [1, 1, 1, -3], [1, 1, 1, -3]]), + {"col_disparity": {"init": 0, "range": 3}, "row_disparity": {"init": 0, "range": 3}}, + id="disparity_map_col", + ), + pytest.param( + np.array(([[9, 10, 11, 12], [5, 6, 7, 8], [1, 2, 3, 4]]), dtype=np.float64), + np.array(([[5, 6, 7, 8], [1, 2, 3, 4], [9, 10, 11, 12]]), dtype=np.float64), + np.array([[2, 2, 2, 2], [-1, -1, -1, -1], [-1, -1, -1, -1]]), + np.array([[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]), + {"col_disparity": {"init": 0, "range": 2}, "row_disparity": {"init": 0, "range": 2}}, + id="disparity_map_row", ), pytest.param( - Margins(1, 2, 3, 4), + np.array(([[9, 10, 11, 12], [5, 6, 7, 8], [1, 2, 3, 4]]), dtype=np.float64), + np.array(([[8, 5, 6, 7], [4, 1, 2, 3], [12, 9, 10, 11]]), dtype=np.float64), + np.array([[2, 2, 2, 2], [-1, -1, -1, -1], [-1, -1, -1, -1]]), + np.array([[1, 1, 1, -3], [1, 1, 1, -3], [1, 1, 1, -3]]), + {"col_disparity": {"init": 0, "range": 3}, "row_disparity": {"init": 0, "range": 3}}, + id="disparity_map_col_row", ), ], ) -def test_compute_disparity_map_col_row(margins): +def test_compute_disparity_map(margins, img_left, img_right, ground_truth_row, ground_truth_col): """ Test function for disparity computation """ - data = np.array( - ([[9, 10, 11, 12], [5, 6, 7, 8], [1, 2, 3, 4]]), - dtype=np.float64, - ) - mask = np.array(([0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]), dtype=np.int16) - left = xr.Dataset( - {"im": (["row", "col"], data), "msk": (["row", "col"], mask)}, - coords={"row": np.arange(data.shape[0]), "col": np.arange(data.shape[1])}, - ) - left.attrs = { - "no_data_img": -9999, - "valid_pixels": 0, - "no_data_mask": 1, - "crs": None, - "transform": Affine(1.0, 0.0, 0.0, 0.0, 1.0, 0.0), - "col_disparity_source": {"init": 0, "range": 3}, - "row_disparity_source": {"init": 0, "range": 3}, - } - - data = np.array( - [[8, 5, 6, 7], [4, 1, 2, 3], [12, 9, 10, 11]], - dtype=np.float64, - ) - mask = np.array(([0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]), dtype=np.int16) - right = xr.Dataset( - {"im": (["row", "col"], data), "msk": (["row", "col"], mask)}, - coords={"row": np.arange(data.shape[0]), "col": np.arange(data.shape[1])}, - ) - right.attrs = { - "no_data_img": -9999, - "valid_pixels": 0, - "no_data_mask": 1, - "crs": None, - "transform": Affine(1.0, 0.0, 0.0, 0.0, 1.0, 0.0), - } - - ground_truth_row = np.array([[2, 2, 2, 2], [-1, -1, -1, -1], [-1, -1, -1, -1]]) - - ground_truth_col = np.array([[1, 1, 1, -3], [1, 1, 1, -3], [1, 1, 1, -3]]) - # create matching_cost object with measure = ssd, window_size = 1 cfg_mc = {"pipeline": {"matching_cost": {"matching_cost_method": "ssd", "window_size": 1}}} matching_cost_matcher = matching_cost.MatchingCost(cfg_mc["pipeline"]["matching_cost"]) @@ -430,21 +277,13 @@ def test_compute_disparity_map_col_row(margins): cfg_disp = {"disparity_method": "wta", "invalid_disparity": -5} disparity_matcher = disparity.Disparity(cfg_disp) - grid_min_col = np.full((3, 4), -3) - grid_max_col = np.full((3, 4), 3) - grid_min_row = np.full((3, 4), -3) - grid_max_row = np.full((3, 4), 3) matching_cost_matcher.allocate_cost_volume_pandora( - img_left=left, - img_right=right, - grid_min_col=grid_min_col, - grid_max_col=grid_max_col, + img_left=img_left, + img_right=img_right, cfg=cfg_mc, margins=margins, ) - cvs = matching_cost_matcher.compute_cost_volumes( - left, right, grid_min_col, grid_max_col, grid_min_row, grid_max_row, margins - ) + cvs = matching_cost_matcher.compute_cost_volumes(img_left, img_right, margins) delta_x, delta_y, _ = disparity_matcher.compute_disp_maps(cvs) From 6df7b80b69d65fb5d5aa6a67ff3a01e627ef72ac Mon Sep 17 00:00:00 2001 From: Marie Leconte Date: Mon, 29 Jul 2024 16:04:21 +0200 Subject: [PATCH 054/121] test: update test with new allocate_cost_volume and compute_cots_volume API --- tests/unit_tests/test_common.py | 11 +- .../unit_tests/test_matching_cost/conftest.py | 293 ++++++++------ .../test_matching_cost_allocate.py | 21 +- .../test_matching_cost_compute.py | 379 ++++-------------- tests/unit_tests/test_pandora2d.py | 12 - .../test_refinement/test_optical_flow.py | 15 +- 6 files changed, 263 insertions(+), 468 deletions(-) diff --git a/tests/unit_tests/test_common.py b/tests/unit_tests/test_common.py index ebbbd9f..31e3e49 100644 --- a/tests/unit_tests/test_common.py +++ b/tests/unit_tests/test_common.py @@ -301,20 +301,11 @@ def test_dataset_disp_maps_with_pipeline_computation(self, roi, step, left_image matching_cost_matcher.allocate_cost_volume_pandora( img_left=img_left, img_right=img_right, - grid_min_col=np.full((3, 3), 0), - grid_max_col=np.full((3, 3), 4), cfg=cfg, ) # compute cost volumes - cvs = matching_cost_matcher.compute_cost_volumes( - img_left=img_left, - img_right=img_right, - grid_min_col=np.full((3, 3), 0), - grid_max_col=np.full((3, 3), 4), - grid_min_row=np.full((3, 3), -1), - grid_max_row=np.full((3, 3), 3), - ) + cvs = matching_cost_matcher.compute_cost_volumes(img_left=img_left, img_right=img_right) cfg_disp = {"disparity_method": "wta", "invalid_disparity": -9999} disparity_matcher = disparity.Disparity(cfg_disp) diff --git a/tests/unit_tests/test_matching_cost/conftest.py b/tests/unit_tests/test_matching_cost/conftest.py index c5630b3..c7cde2c 100644 --- a/tests/unit_tests/test_matching_cost/conftest.py +++ b/tests/unit_tests/test_matching_cost/conftest.py @@ -33,7 +33,7 @@ from pandora import import_plugin from pandora2d import matching_cost -from pandora2d.img_tools import create_datasets_from_inputs +from pandora2d.img_tools import create_datasets_from_inputs, add_disparity_grid @pytest.fixture() @@ -143,7 +143,7 @@ def create(data): @pytest.fixture() def left_zncc(create_image): - """Left image for Znnc.""" + """Left image for Zncc.""" data = np.array( [ [1, 1, 1, 1, 1], @@ -159,7 +159,7 @@ def left_zncc(create_image): @pytest.fixture() def right_zncc(create_image): - """Right image for Znnc.""" + """Right image for Zncc.""" data = np.array( ( [ @@ -182,12 +182,12 @@ def null_disparity_grid(): @pytest.fixture() def positive_disparity_grid(): - return np.full((3, 3), 1) + return np.full((3, 3), 2) @pytest.fixture() def negative_disparity_grid(): - return np.full((3, 3), -1) + return np.full((3, 3), -2) class DisparityGrids(NamedTuple): @@ -215,6 +215,10 @@ def data_with_null_disparity(left_zncc, right_zncc, null_disparity_grid): """ Coherent Data for test_step. """ + col_disparity_cfg = {"init": 0, "range": 0} + row_disparity_cfg = {"init": 0, "range": 0} + left_zncc.pipe(add_disparity_grid, col_disparity_cfg, row_disparity_cfg) + disparity_grids = DisparityGrids( col_min=null_disparity_grid, col_max=null_disparity_grid, @@ -231,8 +235,6 @@ def data_with_null_disparity(left_zncc, right_zncc, null_disparity_grid): ], dtype=np.float32, ) - left_zncc.attrs["col_disparity_source"] = {"init": 0, "range": 0} - left_zncc.attrs["row_disparity_source"] = {"init": 0, "range": 0} return StepData( left=left_zncc, right=right_zncc, full_matching_cost=full_matching_cost, disparity_grids=disparity_grids ) @@ -241,6 +243,10 @@ def data_with_null_disparity(left_zncc, right_zncc, null_disparity_grid): @pytest.fixture() def data_with_positive_disparity_in_col(left_zncc, right_zncc, null_disparity_grid, positive_disparity_grid): """Coherent Data for test_step.""" + col_disparity_cfg = {"init": 1, "range": 1} + row_disparity_cfg = {"init": 0, "range": 0} + left_zncc.pipe(add_disparity_grid, col_disparity_cfg, row_disparity_cfg) + disparity_grids = DisparityGrids( col_min=null_disparity_grid, col_max=positive_disparity_grid, @@ -250,39 +256,43 @@ def data_with_positive_disparity_in_col(left_zncc, right_zncc, null_disparity_gr full_matching_cost = np.array( [ [ - [[np.nan], [np.nan]], - [[np.nan], [np.nan]], - [[np.nan], [np.nan]], - [[np.nan], [np.nan]], - [[np.nan], [np.nan]], + [[np.nan], [np.nan], [np.nan]], + [[np.nan], [np.nan], [np.nan]], + [[np.nan], [np.nan], [np.nan]], + [[np.nan], [np.nan], [np.nan]], + [[np.nan], [np.nan], [np.nan]], + ], + [ + [[np.nan], [np.nan], [np.nan]], + [[-0.45], [-0.460179], [-0.46513027]], + [[-0.47058824], [-0.4756515], [np.nan]], + [[-0.48076922], [np.nan], [np.nan]], + [[np.nan], [np.nan], [np.nan]], ], [ - [[np.nan], [np.nan]], - [[-0.45], [-0.460179]], - [[-0.47058824], [-0.4756515]], - [[-0.48076922], [np.nan]], - [[np.nan], [np.nan]], + [[np.nan], [np.nan], [np.nan]], + [[-0.45], [-0.460179], [-0.46513027]], + [[-0.47058824], [-0.4756515], [np.nan]], + [[-0.48076922], [np.nan], [np.nan]], + [[np.nan], [np.nan], [np.nan]], ], [ - [[np.nan], [np.nan]], - [[-0.45], [-0.460179]], - [[-0.47058824], [-0.4756515]], - [[-0.48076922], [np.nan]], - [[np.nan], [np.nan]], + [[np.nan], [np.nan], [np.nan]], + [[0.0], [0.0], [0.0]], + [[0.0], [0.0], [np.nan]], + [[0.0], [np.nan], [np.nan]], + [[np.nan], [np.nan], [np.nan]], ], - [[[np.nan], [np.nan]], [[0.0], [0.0]], [[0.0], [0.0]], [[0.0], [np.nan]], [[np.nan], [np.nan]]], [ - [[np.nan], [np.nan]], - [[np.nan], [np.nan]], - [[np.nan], [np.nan]], - [[np.nan], [np.nan]], - [[np.nan], [np.nan]], + [[np.nan], [np.nan], [np.nan]], + [[np.nan], [np.nan], [np.nan]], + [[np.nan], [np.nan], [np.nan]], + [[np.nan], [np.nan], [np.nan]], + [[np.nan], [np.nan], [np.nan]], ], ], dtype=np.float32, ) - left_zncc.attrs["col_disparity_source"] = {"init": 1, "range": 1} - left_zncc.attrs["row_disparity_source"] = {"init": 0, "range": 0} return StepData( left=left_zncc, right=right_zncc, full_matching_cost=full_matching_cost, disparity_grids=disparity_grids ) @@ -291,6 +301,10 @@ def data_with_positive_disparity_in_col(left_zncc, right_zncc, null_disparity_gr @pytest.fixture() def data_with_positive_disparity_in_row(left_zncc, right_zncc, null_disparity_grid, positive_disparity_grid): """Coherent Data for test_step.""" + col_disparity_cfg = {"init": 0, "range": 0} + row_disparity_cfg = {"init": 1, "range": 1} + left_zncc.pipe(add_disparity_grid, col_disparity_cfg, row_disparity_cfg) + disparity_grids = DisparityGrids( col_min=null_disparity_grid, col_max=null_disparity_grid, @@ -299,22 +313,44 @@ def data_with_positive_disparity_in_row(left_zncc, right_zncc, null_disparity_gr ) full_matching_cost = np.array( [ - [[[np.nan, np.nan]], [[np.nan, np.nan]], [[np.nan, np.nan]], [[np.nan, np.nan]], [[np.nan, np.nan]]], [ - [[np.nan, np.nan]], - [[-0.45, -0.45]], - [[-0.47058824, -0.47058824]], - [[-0.48076922, -0.48076922]], - [[np.nan, np.nan]], + [[np.nan, np.nan, np.nan]], + [[np.nan, np.nan, np.nan]], + [[np.nan, np.nan, np.nan]], + [[np.nan, np.nan, np.nan]], + [[np.nan, np.nan, np.nan]], + ], + [ + [[np.nan, np.nan, np.nan]], + [[-0.45, -0.45, 0.0]], + [[-0.47058824, -0.47058824, 0.0]], + [[-0.48076922, -0.48076922, 0.0]], + [[np.nan, np.nan, np.nan]], + ], + [ + [[np.nan, np.nan, np.nan]], + [[-0.45, 0.0, np.nan]], + [[-0.47058824, 0.0, np.nan]], + [[-0.48076922, 0.0, np.nan]], + [[np.nan, np.nan, np.nan]], + ], + [ + [[np.nan, np.nan, np.nan]], + [[0.0, np.nan, np.nan]], + [[0.0, np.nan, np.nan]], + [[0.0, np.nan, np.nan]], + [[np.nan, np.nan, np.nan]], + ], + [ + [[np.nan, np.nan, np.nan]], + [[np.nan, np.nan, np.nan]], + [[np.nan, np.nan, np.nan]], + [[np.nan, np.nan, np.nan]], + [[np.nan, np.nan, np.nan]], ], - [[[np.nan, np.nan]], [[-0.45, 0.0]], [[-0.47058824, 0.0]], [[-0.48076922, 0.0]], [[np.nan, np.nan]]], - [[[np.nan, np.nan]], [[0.0, np.nan]], [[0.0, np.nan]], [[0.0, np.nan]], [[np.nan, np.nan]]], - [[[np.nan, np.nan]], [[np.nan, np.nan]], [[np.nan, np.nan]], [[np.nan, np.nan]], [[np.nan, np.nan]]], ], dtype=np.float32, ) - left_zncc.attrs["col_disparity_source"] = {"init": 0, "range": 0} - left_zncc.attrs["row_disparity_source"] = {"init": 1, "range": 1} return StepData( left=left_zncc, right=right_zncc, full_matching_cost=full_matching_cost, disparity_grids=disparity_grids ) @@ -323,6 +359,10 @@ def data_with_positive_disparity_in_row(left_zncc, right_zncc, null_disparity_gr @pytest.fixture() def data_with_negative_disparity_in_col(left_zncc, right_zncc, null_disparity_grid, negative_disparity_grid): """Coherent Data for test_step.""" + col_disparity_cfg = {"init": -1, "range": 1} + row_disparity_cfg = {"init": 0, "range": 0} + left_zncc.pipe(add_disparity_grid, col_disparity_cfg, row_disparity_cfg) + disparity_grids = DisparityGrids( col_min=negative_disparity_grid, col_max=null_disparity_grid, @@ -332,39 +372,43 @@ def data_with_negative_disparity_in_col(left_zncc, right_zncc, null_disparity_gr full_matching_cost = np.array( [ [ - [[np.nan], [np.nan]], - [[np.nan], [np.nan]], - [[np.nan], [np.nan]], - [[np.nan], [np.nan]], - [[np.nan], [np.nan]], + [[np.nan], [np.nan], [np.nan]], + [[np.nan], [np.nan], [np.nan]], + [[np.nan], [np.nan], [np.nan]], + [[np.nan], [np.nan], [np.nan]], + [[np.nan], [np.nan], [np.nan]], ], [ - [[np.nan], [np.nan]], - [[np.nan], [-0.45]], - [[-0.460179], [-0.47058824]], - [[-0.4756515], [-0.48076922]], - [[np.nan], [np.nan]], + [[np.nan], [np.nan], [np.nan]], + [[np.nan], [np.nan], [-0.45]], + [[np.nan], [-0.460179], [-0.47058824]], + [[-0.46513027], [-0.4756515], [-0.48076922]], + [[np.nan], [np.nan], [np.nan]], ], [ - [[np.nan], [np.nan]], - [[np.nan], [-0.45]], - [[-0.460179], [-0.47058824]], - [[-0.4756515], [-0.48076922]], - [[np.nan], [np.nan]], + [[np.nan], [np.nan], [np.nan]], + [[np.nan], [np.nan], [-0.45]], + [[np.nan], [-0.460179], [-0.47058824]], + [[-0.46513027], [-0.4756515], [-0.48076922]], + [[np.nan], [np.nan], [np.nan]], ], - [[[np.nan], [np.nan]], [[np.nan], [0.0]], [[0.0], [0.0]], [[0.0], [0.0]], [[np.nan], [np.nan]]], [ - [[np.nan], [np.nan]], - [[np.nan], [np.nan]], - [[np.nan], [np.nan]], - [[np.nan], [np.nan]], - [[np.nan], [np.nan]], + [[np.nan], [np.nan], [np.nan]], + [[np.nan], [np.nan], [0.0]], + [[np.nan], [0.0], [0.0]], + [[0.0], [0.0], [0.0]], + [[np.nan], [np.nan], [np.nan]], + ], + [ + [[np.nan], [np.nan], [np.nan]], + [[np.nan], [np.nan], [np.nan]], + [[np.nan], [np.nan], [np.nan]], + [[np.nan], [np.nan], [np.nan]], + [[np.nan], [np.nan], [np.nan]], ], ], dtype=np.float32, ) - left_zncc.attrs["col_disparity_source"] = {"init": -1, "range": 1} - left_zncc.attrs["row_disparity_source"] = {"init": 0, "range": 0} return StepData( left=left_zncc, right=right_zncc, full_matching_cost=full_matching_cost, disparity_grids=disparity_grids ) @@ -373,6 +417,10 @@ def data_with_negative_disparity_in_col(left_zncc, right_zncc, null_disparity_gr @pytest.fixture() def data_with_negative_disparity_in_row(left_zncc, right_zncc, null_disparity_grid, negative_disparity_grid): """Coherent Data for test_step.""" + col_disparity_cfg = {"init": 0, "range": 0} + row_disparity_cfg = {"init": -1, "range": 1} + left_zncc.pipe(add_disparity_grid, col_disparity_cfg, row_disparity_cfg) + disparity_grids = DisparityGrids( col_min=null_disparity_grid, col_max=null_disparity_grid, @@ -381,22 +429,44 @@ def data_with_negative_disparity_in_row(left_zncc, right_zncc, null_disparity_gr ) full_matching_cost = np.array( [ - [[[np.nan, np.nan]], [[np.nan, np.nan]], [[np.nan, np.nan]], [[np.nan, np.nan]], [[np.nan, np.nan]]], [ - [[np.nan, np.nan]], - [[np.nan, -0.45]], - [[np.nan, -0.47058824]], - [[np.nan, -0.48076922]], - [[np.nan, np.nan]], + [[np.nan, np.nan, np.nan]], + [[np.nan, np.nan, np.nan]], + [[np.nan, np.nan, np.nan]], + [[np.nan, np.nan, np.nan]], + [[np.nan, np.nan, np.nan]], + ], + [ + [[np.nan, np.nan, np.nan]], + [[np.nan, np.nan, -0.45]], + [[np.nan, np.nan, -0.47058824]], + [[np.nan, np.nan, -0.48076922]], + [[np.nan, np.nan, np.nan]], + ], + [ + [[np.nan, np.nan, np.nan]], + [[np.nan, 1.0, -0.45]], + [[np.nan, 1.0, -0.47058824]], + [[np.nan, 1.0, -0.48076922]], + [[np.nan, np.nan, np.nan]], + ], + [ + [[np.nan, np.nan, np.nan]], + [[-0.45, 1.0, 0.0]], + [[-0.47058824, 1.0, 0.0]], + [[-0.48076922, 1.0, 0.0]], + [[np.nan, np.nan, np.nan]], + ], + [ + [[np.nan, np.nan, np.nan]], + [[np.nan, np.nan, np.nan]], + [[np.nan, np.nan, np.nan]], + [[np.nan, np.nan, np.nan]], + [[np.nan, np.nan, np.nan]], ], - [[[np.nan, np.nan]], [[1.0, -0.45]], [[1.0, -0.47058824]], [[1.0, -0.48076922]], [[np.nan, np.nan]]], - [[[np.nan, np.nan]], [[1.0, 0.0]], [[1.0, 0.0]], [[1.0, 0.0]], [[np.nan, np.nan]]], - [[[np.nan, np.nan]], [[np.nan, np.nan]], [[np.nan, np.nan]], [[np.nan, np.nan]], [[np.nan, np.nan]]], ], dtype=np.float32, ) - left_zncc.attrs["col_disparity_source"] = {"init": 0, "range": 0} - left_zncc.attrs["row_disparity_source"] = {"init": -1, "range": 1} return StepData( left=left_zncc, right=right_zncc, full_matching_cost=full_matching_cost, disparity_grids=disparity_grids ) @@ -407,6 +477,10 @@ def data_with_disparity_negative_in_row_and_positive_in_col( left_zncc, right_zncc, null_disparity_grid, positive_disparity_grid, negative_disparity_grid ): """Coherent Data for test_step.""" + col_disparity_cfg = {"init": 1, "range": 1} + row_disparity_cfg = {"init": -1, "range": 1} + left_zncc.pipe(add_disparity_grid, col_disparity_cfg, row_disparity_cfg) + disparity_grids = DisparityGrids( col_min=null_disparity_grid, col_max=positive_disparity_grid, @@ -416,45 +490,43 @@ def data_with_disparity_negative_in_row_and_positive_in_col( full_matching_cost = np.array( [ [ - [[np.nan, np.nan], [np.nan, np.nan]], - [[np.nan, np.nan], [np.nan, np.nan]], - [[np.nan, np.nan], [np.nan, np.nan]], - [[np.nan, np.nan], [np.nan, np.nan]], - [[np.nan, np.nan], [np.nan, np.nan]], + [[np.nan, np.nan, np.nan], [np.nan, np.nan, np.nan], [np.nan, np.nan, np.nan]], + [[np.nan, np.nan, np.nan], [np.nan, np.nan, np.nan], [np.nan, np.nan, np.nan]], + [[np.nan, np.nan, np.nan], [np.nan, np.nan, np.nan], [np.nan, np.nan, np.nan]], + [[np.nan, np.nan, np.nan], [np.nan, np.nan, np.nan], [np.nan, np.nan, np.nan]], + [[np.nan, np.nan, np.nan], [np.nan, np.nan, np.nan], [np.nan, np.nan, np.nan]], ], [ - [[np.nan, np.nan], [np.nan, np.nan]], - [[np.nan, -0.45], [np.nan, -0.460179]], - [[np.nan, -0.47058824], [np.nan, -0.4756515]], - [[np.nan, -0.48076922], [np.nan, np.nan]], - [[np.nan, np.nan], [np.nan, np.nan]], + [[np.nan, np.nan, np.nan], [np.nan, np.nan, np.nan], [np.nan, np.nan, np.nan]], + [[np.nan, np.nan, -0.45], [np.nan, np.nan, -0.460179], [np.nan, np.nan, -0.46513027]], + [[np.nan, np.nan, -0.47058824], [np.nan, np.nan, -0.4756515], [np.nan, np.nan, np.nan]], + [[np.nan, np.nan, -0.48076922], [np.nan, np.nan, np.nan], [np.nan, np.nan, np.nan]], + [[np.nan, np.nan, np.nan], [np.nan, np.nan, np.nan], [np.nan, np.nan, np.nan]], ], [ - [[np.nan, np.nan], [np.nan, np.nan]], - [[1.0, -0.45], [0.99705446, -0.460179]], - [[1.0, -0.47058824], [0.99886817, -0.4756515]], - [[1.0, -0.48076922], [np.nan, np.nan]], - [[np.nan, np.nan], [np.nan, np.nan]], + [[np.nan, np.nan, np.nan], [np.nan, np.nan, np.nan], [np.nan, np.nan, np.nan]], + [[np.nan, 1.0, -0.45], [np.nan, 0.99705446, -0.460179], [np.nan, 0.99227786, -0.46513027]], + [[np.nan, 1.0, -0.47058824], [np.nan, 0.99886817, -0.4756515], [np.nan, np.nan, np.nan]], + [[np.nan, 1.0, -0.48076922], [np.nan, np.nan, np.nan], [np.nan, np.nan, np.nan]], + [[np.nan, np.nan, np.nan], [np.nan, np.nan, np.nan], [np.nan, np.nan, np.nan]], ], [ - [[np.nan, np.nan], [np.nan, np.nan]], - [[1.0, 0.0], [0.99705446, 0.0]], - [[1.0, 0.0], [0.99886817, 0.0]], - [[1.0, 0.0], [np.nan, np.nan]], - [[np.nan, np.nan], [np.nan, np.nan]], + [[np.nan, np.nan, np.nan], [np.nan, np.nan, np.nan], [np.nan, np.nan, np.nan]], + [[-0.45, 1.0, 0.0], [-0.460179, 0.99705446, 0.0], [-0.46513027, 0.99227786, 0.0]], + [[-0.47058824, 1.0, 0.0], [-0.4756515, 0.99886817, 0.0], [np.nan, np.nan, np.nan]], + [[-0.48076922, 1.0, 0.0], [np.nan, np.nan, np.nan], [np.nan, np.nan, np.nan]], + [[np.nan, np.nan, np.nan], [np.nan, np.nan, np.nan], [np.nan, np.nan, np.nan]], ], [ - [[np.nan, np.nan], [np.nan, np.nan]], - [[np.nan, np.nan], [np.nan, np.nan]], - [[np.nan, np.nan], [np.nan, np.nan]], - [[np.nan, np.nan], [np.nan, np.nan]], - [[np.nan, np.nan], [np.nan, np.nan]], + [[np.nan, np.nan, np.nan], [np.nan, np.nan, np.nan], [np.nan, np.nan, np.nan]], + [[np.nan, np.nan, np.nan], [np.nan, np.nan, np.nan], [np.nan, np.nan, np.nan]], + [[np.nan, np.nan, np.nan], [np.nan, np.nan, np.nan], [np.nan, np.nan, np.nan]], + [[np.nan, np.nan, np.nan], [np.nan, np.nan, np.nan], [np.nan, np.nan, np.nan]], + [[np.nan, np.nan, np.nan], [np.nan, np.nan, np.nan], [np.nan, np.nan, np.nan]], ], ], dtype=np.float32, ) - left_zncc.attrs["col_disparity_source"] = {"init": 1, "range": 1} - left_zncc.attrs["row_disparity_source"] = {"init": -1, "range": 1} return StepData( left=left_zncc, right=right_zncc, full_matching_cost=full_matching_cost, disparity_grids=disparity_grids ) @@ -490,23 +562,10 @@ def cost_volumes(input_config, matching_cost_matcher, configuration): """Create cost_volumes.""" img_left, img_right = create_datasets_from_inputs(input_config, roi=None) - matching_cost_matcher.allocate_cost_volume_pandora( - img_left=img_left, - img_right=img_right, - grid_min_col=np.full((5, 5), 0), - grid_max_col=np.full((5, 5), 1), - cfg=configuration, - ) + matching_cost_matcher.allocate_cost_volume_pandora(img_left=img_left, img_right=img_right, cfg=configuration) # compute cost volumes - return matching_cost_matcher.compute_cost_volumes( - img_left=img_left, - img_right=img_right, - grid_min_col=np.full((5, 5), 0), - grid_max_col=np.full((5, 5), 1), - grid_min_row=np.full((5, 5), -1), - grid_max_row=np.full((5, 5), 0), - ) + return matching_cost_matcher.compute_cost_volumes(img_left=img_left, img_right=img_right) @pytest.fixture() diff --git a/tests/unit_tests/test_matching_cost/test_matching_cost_allocate.py b/tests/unit_tests/test_matching_cost/test_matching_cost_allocate.py index 7847588..eb04233 100644 --- a/tests/unit_tests/test_matching_cost/test_matching_cost_allocate.py +++ b/tests/unit_tests/test_matching_cost/test_matching_cost_allocate.py @@ -46,8 +46,8 @@ def test_allocate_cost_volume(left_stereo_object, right_stereo_object): row = np.arange(c_row[0], c_row[-1] + 1) col = np.arange(c_col[0], c_col[-1] + 1) - disparity_range_col = np.arange(-1, 1 + 1) - disparity_range_row = np.arange(-1, 1 + 1) + disparity_range_col = np.arange(0, 2 + 1) + disparity_range_row = np.arange(-2, 0 + 1) # Create the cost volume if np_data is None: @@ -67,8 +67,8 @@ def test_allocate_cost_volume(left_stereo_object, right_stereo_object): cost_volumes_test.attrs["crs"] = None cost_volumes_test.attrs["transform"] = Affine(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) cost_volumes_test.attrs["band_correl"] = None - cost_volumes_test.attrs["col_disparity_source"] = {"init": 1, "range": 1} - cost_volumes_test.attrs["row_disparity_source"] = {"init": -1, "range": 1} + cost_volumes_test.attrs["col_disparity_source"] = [0, 2] + cost_volumes_test.attrs["row_disparity_source"] = [-2, 0] cost_volumes_test.attrs["no_data_img"] = -9999 cost_volumes_test.attrs["no_data_mask"] = 1 cost_volumes_test.attrs["valid_pixels"] = 0 @@ -80,19 +80,10 @@ def test_allocate_cost_volume(left_stereo_object, right_stereo_object): matching_cost_matcher = matching_cost.MatchingCost(cfg["pipeline"]["matching_cost"]) matching_cost_matcher.allocate_cost_volume_pandora( - img_left=left_stereo_object, - img_right=right_stereo_object, - grid_min_col=np.full((3, 3), 0), - grid_max_col=np.full((3, 3), 2), - cfg=cfg, + img_left=left_stereo_object, img_right=right_stereo_object, cfg=cfg ) cost_volumes_fun = matching_cost_matcher.compute_cost_volumes( - img_left=left_stereo_object, - img_right=right_stereo_object, - grid_min_col=np.full((3, 3), 0), - grid_max_col=np.full((3, 3), 2), - grid_min_row=np.full((3, 3), -2), - grid_max_row=np.full((3, 3), 0), + img_left=left_stereo_object, img_right=right_stereo_object ) # check that the generated xarray dataset is equal to the ground truth diff --git a/tests/unit_tests/test_matching_cost/test_matching_cost_compute.py b/tests/unit_tests/test_matching_cost/test_matching_cost_compute.py index fc6bd39..e609715 100644 --- a/tests/unit_tests/test_matching_cost/test_matching_cost_compute.py +++ b/tests/unit_tests/test_matching_cost/test_matching_cost_compute.py @@ -70,22 +70,9 @@ def test_steps(request, data_fixture_name, col_step, row_step): } # initialise matching cost matching_cost_matcher = matching_cost.MatchingCost(cfg["pipeline"]["matching_cost"]) - matching_cost_matcher.allocate_cost_volume_pandora( - img_left=data.left, - img_right=data.right, - grid_min_col=data.disparity_grids.col_min, - grid_max_col=data.disparity_grids.col_max, - cfg=cfg, - ) + matching_cost_matcher.allocate_cost_volume_pandora(img_left=data.left, img_right=data.right, cfg=cfg) # compute cost volumes - zncc = matching_cost_matcher.compute_cost_volumes( - img_left=data.left, - img_right=data.right, - grid_min_col=data.disparity_grids.col_min, - grid_max_col=data.disparity_grids.col_max, - grid_min_row=data.disparity_grids.row_min, - grid_max_row=data.disparity_grids.row_max, - ) + zncc = matching_cost_matcher.compute_cost_volumes(img_left=data.left, img_right=data.right) # indexes are : row, col, disp_x, disp_y np.testing.assert_equal(zncc["cost_volumes"].data, data.full_matching_cost[::row_step, ::col_step, :, :]) @@ -95,6 +82,10 @@ def test_compute_cv_ssd(left_stereo_object, right_stereo_object): """ Test the cost volume product by ssd """ + # update disparity + left_stereo_object["col_disparity"][0, :, :] = np.full((3, 3), -1) + left_stereo_object["col_disparity"][1, :, :] = np.full((3, 3), 0) + left_stereo_object["row_disparity"][0, :, :] = np.full((3, 3), -1) # sum of squared difference images left, right, window_size=1 cfg = {"pipeline": {"matching_cost": {"matching_cost_method": "ssd", "window_size": 1}}} # sum of squared difference ground truth for the images left, right, window_size=1 @@ -124,22 +115,11 @@ def test_compute_cv_ssd(left_stereo_object, right_stereo_object): matching_cost_matcher = matching_cost.MatchingCost(cfg["pipeline"]["matching_cost"]) matching_cost_matcher.allocate_cost_volume_pandora( - img_left=left_stereo_object, - img_right=right_stereo_object, - grid_min_col=np.full((3, 3), -1), - grid_max_col=np.full((3, 3), 0), - cfg=cfg, + img_left=left_stereo_object, img_right=right_stereo_object, cfg=cfg ) # compute cost volumes - ssd = matching_cost_matcher.compute_cost_volumes( - img_left=left_stereo_object, - img_right=right_stereo_object, - grid_min_col=np.full((3, 3), -1), - grid_max_col=np.full((3, 3), 0), - grid_min_row=np.full((3, 3), -1), - grid_max_row=np.full((3, 3), 0), - ) + ssd = matching_cost_matcher.compute_cost_volumes(img_left=left_stereo_object, img_right=right_stereo_object) # check that the generated cost_volumes is equal to ground truth np.testing.assert_allclose(ssd["cost_volumes"].data, ad_ground_truth, atol=1e-06) @@ -168,29 +148,15 @@ def test_compute_cv_mc_cnn(): "no_data_mask": 1, "crs": None, "transform": Affine(1.0, 0.0, 0.0, 0.0, 1.0, 0.0), - "col_disparity_source": {"init": 0, "range": 1}, - "row_disparity_source": {"init": 0, "range": 1}, } + img.pipe(add_disparity_grid, {"init": 0, "range": 1}, {"init": 0, "range": 1}) matching_cost_matcher = matching_cost.MatchingCost(cfg["pipeline"]["matching_cost"]) - matching_cost_matcher.allocate_cost_volume_pandora( - img_left=img, - img_right=img, - grid_min_col=np.full((100, 100), -1), - grid_max_col=np.full((100, 100), 1), - cfg=cfg, - ) + matching_cost_matcher.allocate_cost_volume_pandora(img_left=img, img_right=img, cfg=cfg) # compute cost volumes - mccnn = matching_cost_matcher.compute_cost_volumes( - img_left=img, - img_right=img, - grid_min_col=np.full((100, 100), -1), - grid_max_col=np.full((100, 100), 1), - grid_min_row=np.full((100, 100), -1), - grid_max_row=np.full((100, 100), 1), - ) + mccnn = matching_cost_matcher.compute_cost_volumes(img_left=img, img_right=img) # get cv with disparity = 0 disp = abs(mccnn["cost_volumes"].data[:, :, 1, 1]) @@ -204,7 +170,10 @@ def test_compute_cv_sad(left_stereo_object, right_stereo_object): """ Test the cost volume product by sad """ - + # update disparity + left_stereo_object["col_disparity"][0, :, :] = np.full((3, 3), -1) + left_stereo_object["col_disparity"][1, :, :] = np.full((3, 3), 0) + left_stereo_object["row_disparity"][0, :, :] = np.full((3, 3), -1) # sum of squared difference images left, right, window_size=1 cfg = {"pipeline": {"matching_cost": {"matching_cost_method": "sad", "window_size": 1}}} # sum of absolute difference ground truth for the images left, right, window_size=1 @@ -234,21 +203,10 @@ def test_compute_cv_sad(left_stereo_object, right_stereo_object): # initialise matching cost matching_cost_matcher = matching_cost.MatchingCost(cfg["pipeline"]["matching_cost"]) matching_cost_matcher.allocate_cost_volume_pandora( - img_left=left_stereo_object, - img_right=right_stereo_object, - grid_min_col=np.full((3, 3), -1), - grid_max_col=np.full((3, 3), 0), - cfg=cfg, + img_left=left_stereo_object, img_right=right_stereo_object, cfg=cfg ) # compute cost volumes - sad = matching_cost_matcher.compute_cost_volumes( - img_left=left_stereo_object, - img_right=right_stereo_object, - grid_min_col=np.full((3, 3), -1), - grid_max_col=np.full((3, 3), 0), - grid_min_row=np.full((3, 3), -1), - grid_max_row=np.full((3, 3), 0), - ) + sad = matching_cost_matcher.compute_cost_volumes(img_left=left_stereo_object, img_right=right_stereo_object) # check that the generated cost_volumes is equal to ground truth np.testing.assert_allclose(sad["cost_volumes"].data, ad_ground_truth, atol=1e-06) @@ -274,9 +232,8 @@ def test_compute_cv_zncc(): "no_data_mask": 1, "crs": None, "transform": Affine(1.0, 0.0, 0.0, 0.0, 1.0, 0.0), - "col_disparity_source": {"init": 1, "range": 1}, - "row_disparity_source": {"init": -1, "range": 1}, } + left_zncc.pipe(add_disparity_grid, {"init": 1, "range": 1}, {"init": -1, "range": 1}) data = np.array( ([[1, 1, 1, 1, 1], [3, 4, 5, 6, 7], [1, 1, 1, 1, 1], [1, 1, 1, 1, 1], [1, 1, 1, 1, 1]]), @@ -332,23 +289,10 @@ def test_compute_cv_zncc(): # initialise matching cost matching_cost_matcher = matching_cost.MatchingCost(cfg["pipeline"]["matching_cost"]) - matching_cost_matcher.allocate_cost_volume_pandora( - img_left=left_zncc, - img_right=right_zncc, - grid_min_col=np.full((3, 3), 0), - grid_max_col=np.full((3, 3), 2), - cfg=cfg, - ) + matching_cost_matcher.allocate_cost_volume_pandora(img_left=left_zncc, img_right=right_zncc, cfg=cfg) # compute cost volumes - zncc = matching_cost_matcher.compute_cost_volumes( - img_left=left_zncc, - img_right=right_zncc, - grid_min_col=np.full((3, 3), 0), - grid_max_col=np.full((3, 3), 2), - grid_min_row=np.full((3, 3), -2), - grid_max_row=np.full((3, 3), 0), - ) - print(zncc["cost_volumes"].data[1, 1, 0, 2]) + zncc = matching_cost_matcher.compute_cost_volumes(img_left=left_zncc, img_right=right_zncc) + # check that the generated cost_volumes is equal to ground truth np.testing.assert_allclose(zncc["cost_volumes"].data[1, 1, 0, 2], ad_ground_truth_1_1_0_0, rtol=1e-06) np.testing.assert_allclose(zncc["cost_volumes"].data[1, 1, 0, 1], ad_ground_truth_1_1_0_1, rtol=1e-06) @@ -481,25 +425,12 @@ def test_cost_volume_coordinates_with_roi(roi, input_config, matching_cost_confi matching_cost_matcher = matching_cost.MatchingCost(cfg["pipeline"]["matching_cost"]) - matching_cost_matcher.allocate_cost_volume_pandora( - img_left=img_left, - img_right=img_right, - grid_min_col=np.full((10, 10), 0), - grid_max_col=np.full((10, 10), 1), - cfg=cfg, - ) + matching_cost_matcher.allocate_cost_volume_pandora(img_left=img_left, img_right=img_right, cfg=cfg) np.testing.assert_array_equal(matching_cost_matcher.grid_.attrs["col_to_compute"], col_expected) # compute cost volumes with roi - cost_volumes_with_roi = matching_cost_matcher.compute_cost_volumes( - img_left=img_left, - img_right=img_right, - grid_min_col=np.full((10, 10), 0), - grid_max_col=np.full((10, 10), 1), - grid_min_row=np.full((10, 10), -1), - grid_max_row=np.full((10, 10), 0), - ) + cost_volumes_with_roi = matching_cost_matcher.compute_cost_volumes(img_left=img_left, img_right=img_right) np.testing.assert_array_equal(cost_volumes_with_roi["cost_volumes"].coords["col"], col_expected) np.testing.assert_array_equal(cost_volumes_with_roi["cost_volumes"].coords["row"], row_expected) @@ -570,25 +501,12 @@ def test_cost_volume_coordinates_without_roi(input_config, matching_cost_config, matching_cost_matcher = matching_cost.MatchingCost(cfg["pipeline"]["matching_cost"]) - matching_cost_matcher.allocate_cost_volume_pandora( - img_left=img_left, - img_right=img_right, - grid_min_col=np.full((10, 10), 0), - grid_max_col=np.full((10, 10), 1), - cfg=cfg, - ) + matching_cost_matcher.allocate_cost_volume_pandora(img_left=img_left, img_right=img_right, cfg=cfg) np.testing.assert_array_equal(matching_cost_matcher.grid_.attrs["col_to_compute"], col_expected) # compute cost volumes without roi - cost_volumes = matching_cost_matcher.compute_cost_volumes( - img_left=img_left, - img_right=img_right, - grid_min_col=np.full((10, 10), 0), - grid_max_col=np.full((10, 10), 1), - grid_min_row=np.full((10, 10), -1), - grid_max_row=np.full((10, 10), 0), - ) + cost_volumes = matching_cost_matcher.compute_cost_volumes(img_left=img_left, img_right=img_right) np.testing.assert_array_equal(cost_volumes["cost_volumes"].coords["col"], col_expected) np.testing.assert_array_equal(cost_volumes["cost_volumes"].coords["row"], row_expected) @@ -606,8 +524,8 @@ def test_cost_volume_coordinates_without_roi(input_config, matching_cost_config, [ pytest.param( [1, 1], - (5, 5, 2, 2), - (5, 4, 2, 2), + (5, 5, 3, 5), + (5, 4, 3, 5), np.s_[2:4, 2:4, :, :], np.s_[2:4, 1:3, :, :], (5, 5), @@ -615,8 +533,8 @@ def test_cost_volume_coordinates_without_roi(input_config, matching_cost_config, ), pytest.param( [1, 2], - (5, 3, 2, 2), - (5, 2, 2, 2), + (5, 3, 3, 5), + (5, 2, 3, 5), np.s_[2:4, 2:4:2, :, :], np.s_[2:4, 1:3:2, :, :], (5, 5), @@ -624,8 +542,8 @@ def test_cost_volume_coordinates_without_roi(input_config, matching_cost_config, ), pytest.param( [2, 1], - (3, 5, 2, 2), - (3, 4, 2, 2), + (3, 5, 3, 5), + (3, 4, 3, 5), np.s_[2:4, 2:4, :, :], np.s_[2:4, 1:3, :, :], (5, 5), @@ -651,22 +569,9 @@ def test_roi_inside_and_margins_inside( # pylint: disable=too-many-arguments # crop image with roi img_left, img_right = create_datasets_from_inputs(input_config, roi=roi) - matching_cost_matcher.allocate_cost_volume_pandora( - img_left=img_left, - img_right=img_right, - grid_min_col=np.full((5, 5), 0), - grid_max_col=np.full((5, 5), 1), - cfg=configuration_roi, - ) + matching_cost_matcher.allocate_cost_volume_pandora(img_left=img_left, img_right=img_right, cfg=configuration_roi) # compute cost volumes with roi - cost_volumes_with_roi = matching_cost_matcher.compute_cost_volumes( - img_left=img_left, - img_right=img_right, - grid_min_col=np.full((5, 5), 0), - grid_max_col=np.full((5, 5), 1), - grid_min_row=np.full((5, 5), -1), - grid_max_row=np.full((5, 5), 0), - ) + cost_volumes_with_roi = matching_cost_matcher.compute_cost_volumes(img_left=img_left, img_right=img_right) assert cost_volumes_with_roi["cost_volumes"].data.shape == expected_shape_roi assert cost_volumes["cost_volumes"].data.shape == expected_shape @@ -729,34 +634,9 @@ def make_cost_volumes(make_image_fixture, request): matching_cost_ = matching_cost.MatchingCost(cfg["pipeline"]["matching_cost"]) - matching_cost_.allocate_cost_volume_pandora( - img_left=img_left, - img_right=img_right, - grid_min_col=np.full( - (img_left["im"].shape[0], img_left["im"].shape[1]), img_left.attrs["col_disparity_source"][0] - ), - grid_max_col=np.full( - (img_left["im"].shape[0], img_left["im"].shape[1]), img_left.attrs["col_disparity_source"][1] - ), - cfg=cfg, - ) + matching_cost_.allocate_cost_volume_pandora(img_left=img_left, img_right=img_right, cfg=cfg) - cost_volumes = matching_cost_.compute_cost_volumes( - img_left=img_left, - img_right=img_right, - grid_min_col=np.full( - (img_left["im"].shape[0], img_left["im"].shape[1]), img_left.attrs["col_disparity_source"][0] - ), - grid_max_col=np.full( - (img_left["im"].shape[0], img_left["im"].shape[1]), img_left.attrs["col_disparity_source"][1] - ), - grid_min_row=np.full( - (img_left["im"].shape[0], img_left["im"].shape[1]), img_left.attrs["row_disparity_source"][0] - ), - grid_max_row=np.full( - (img_left["im"].shape[0], img_left["im"].shape[1]), img_left.attrs["row_disparity_source"][1] - ), - ) + cost_volumes = matching_cost_.compute_cost_volumes(img_left=img_left, img_right=img_right) return cost_volumes @@ -937,27 +817,9 @@ def disparity_maps( } matching_cost_ = matching_cost.MatchingCost(cfg["pipeline"]["matching_cost"]) - grid_min_col = image["col_disparity"].sel(band_disp="min").data - grid_max_col = image["col_disparity"].sel(band_disp="max").data - grid_min_row = image["row_disparity"].sel(band_disp="min").data - grid_max_row = image["row_disparity"].sel(band_disp="max").data + matching_cost_.allocate_cost_volume_pandora(img_left=image, img_right=image, cfg=cfg) - matching_cost_.allocate_cost_volume_pandora( - img_left=image, - img_right=image, - grid_min_col=grid_min_col, - grid_max_col=grid_max_col, - cfg=cfg, - ) - - cost_volumes = matching_cost_.compute_cost_volumes( - img_left=image, - img_right=image, - grid_min_col=grid_min_col, - grid_max_col=grid_max_col, - grid_min_row=grid_min_row, - grid_max_row=grid_max_row, - ) + cost_volumes = matching_cost_.compute_cost_volumes(img_left=image, img_right=image) disparity_matcher = disparity.Disparity({"disparity_method": "wta", "invalid_disparity": -99}) @@ -1652,44 +1514,35 @@ def create_datasets(self): pytest.param( None, 1, - (5, 5, 2, 2), # margins=None -> we do not add disparity margins - [0, 1], - [-1, 0], + (5, 5, 3, 3), # margins=None -> we do not add disparity margins + np.arange(0, 2.25, 1), + np.arange(-2, 0.25, 1), id="Margins=None", ), pytest.param( Margins(0, 0, 0, 0), 1, - (5, 5, 2, 2), - [0, 1], - [-1, 0], # margins=(0,0,0,0) -> we do not add disparity margins + (5, 5, 3, 3), + np.arange(0, 2.25, 1), + np.arange(-2, 0.25, 1), + # margins=(0,0,0,0) -> we do not add disparity margins id="Margins(left=0, up=0, right=0, down=0)", ), pytest.param( Margins(3, 3, 3, 3), 1, - ( - 5, - 5, - 8, - 8, - ), - [-3, -2, -1, 0, 1, 2, 3, 4], - [-4, -3, -2, -1, 0, 1, 2, 3], + (5, 5, 9, 9), + np.arange(-3, 5.25, 1), + np.arange(-5, 3.25, 1), # margins=(3,3,3,3) -> we add a margin of 3 on disp_min_col, disp_max_col, disp_min_row, disp_max_row id="Margins(left=3, up=3, right=3, down=3)", ), pytest.param( Margins(0, 1, 2, 3), 1, - ( - 5, - 5, - 4, - 6, - ), - [0, 1, 2, 3], - [-2, -1, 0, 1, 2, 3], + (5, 5, 5, 7), + np.arange(0, 4.25, 1), + np.arange(-3, 3.25, 1), # margins=(0,1,2,3) -> we add a margin of 0 on disp_min_col, 2 on disp_max_col, # 1 on disp_min_row and 3 on disp_max_row id="Margins(left=0, up=1, right=2, down=3)", @@ -1697,14 +1550,9 @@ def create_datasets(self): pytest.param( Margins(4, 2, 4, 2), 1, - ( - 5, - 5, - 10, - 6, - ), - [-4, -3, -2, -1, 0, 1, 2, 3, 4, 5], - [-3, -2, -1, 0, 1, 2], + (5, 5, 11, 7), + np.arange(-4, 6.25, 1), + np.arange(-4, 2.25, 1), # margins=(4,2,4,2) -> we add a margin of 4 on disp_min_col and on disp_max_col # and of 2 on disp_min_row and disp_max_row id="Margins(left=4, up=2, right=4, down=2)", @@ -1712,14 +1560,9 @@ def create_datasets(self): pytest.param( Margins(2, 6, 2, 6), 1, - ( - 5, - 5, - 6, - 14, - ), - [-2, -1, 0, 1, 2, 3], - [-7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6], + (5, 5, 7, 15), + np.arange(-2, 4.25, 1), + np.arange(-8, 6.25, 1), # margins=(2,6,2,6) -> we add a margin of 2 on disp_min_col and on disp_max_col # and of 6 on disp_min_row and disp_max_row id="Margins(left=2, up=6, right=2, down=6)", @@ -1727,14 +1570,9 @@ def create_datasets(self): pytest.param( Margins(6, 2, 6, 2), 1, - ( - 5, - 5, - 14, - 6, - ), - [-6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7], - [-3, -2, -1, 0, 1, 2], + (5, 5, 15, 7), + np.arange(-6, 8.25, 1), + np.arange(-4, 2.25, 1), # margins=(6,2,6,2) -> we add a margin of 6 on disp_min_col and on disp_max_col # and of 2 on disp_min_row and disp_max_row id="Margins(left=6, up=2, right=6, down=2)", @@ -1742,14 +1580,9 @@ def create_datasets(self): pytest.param( Margins(3, 3, 3, 3), 2, - ( - 5, - 5, - 15, - 15, - ), - [-3, -2.5, -2, -1.5, -1, -0.5, 0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4], - [-4, -3.5, -3, -2.5, -2, -1.5, -1, -0.5, 0, 0.5, 1, 1.5, 2, 2.5, 3], + (5, 5, 17, 17), + np.arange(-3, 5.25, 0.5), + np.arange(-5, 3.25, 0.5), # margins=(3,3,3,3) and subpix=2 -> we add a margin of 3x2 on disp_min_col, disp_max_col, # disp_min_row, disp_max_row id="Margins(left=3, up=3, right=3, down=3), subpix=2", @@ -1757,14 +1590,9 @@ def create_datasets(self): pytest.param( Margins(0, 1, 2, 3), 2, - ( - 5, - 5, - 7, - 11, - ), - [0, 0.5, 1, 1.5, 2, 2.5, 3], - [-2, -1.5, -1, -0.5, 0, 0.5, 1, 1.5, 2, 2.5, 3], + (5, 5, 9, 13), + np.arange(0, 4.25, 0.5), + np.arange(-3, 3.25, 0.5), # margins=(0,1,2,3) -> we add a margin of 0 on disp_min_col, 2x2 on disp_max_col, # 1x2 on disp_min_row and 3x2 on disp_max_row id="Margins(left=0, up=1, right=2, down=3)", @@ -1772,14 +1600,9 @@ def create_datasets(self): pytest.param( Margins(6, 4, 2, 3), 2, - ( - 5, - 5, - 19, - 17, - ), - [-6, -5.5, -5, -4.5, -4, -3.5, -3, -2.5, -2, -1.5, -1, -0.5, 0, 0.5, 1, 1.5, 2, 2.5, 3], - [-5, -4.5, -4, -3.5, -3, -2.5, -2, -1.5, -1, -0.5, 0, 0.5, 1, 1.5, 2, 2.5, 3], + (5, 5, 21, 19), + np.arange(-6, 4.25, 0.5), + np.arange(-6, 3.25, 0.5), # margins=(6,4,2,3) -> we add a margin of 6x2 on disp_min_col, 2x2 on disp_max_col, # 4x2 on disp_min_row and 3x2 on disp_max_row id="Margins(left=6, up=4, right=2, down=3)", @@ -1787,49 +1610,17 @@ def create_datasets(self): pytest.param( Margins(0, 0, 0, 0), 4, - ( - 5, - 5, - 5, - 5, - ), - [0, 0.25, 0.5, 0.75, 1], - [-1, -0.75, -0.5, -0.25, 0], # we do not add disparity margins + (5, 5, 9, 9), + np.arange(0, 2.25, 0.25), + np.arange(-2, 0.25, 0.25), # we do not add disparity margins id="Margins(left=0, up=0, right=0, down=0), subpix=4", ), pytest.param( Margins(0, 1, 2, 3), 4, - ( - 5, - 5, - 13, - 21, - ), - [0, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2, 2.25, 2.5, 2.75, 3], - [ - -2, - -1.75, - -1.5, - -1.25, - -1, - -0.75, - -0.5, - -0.25, - 0, - 0.25, - 0.5, - 0.75, - 1, - 1.25, - 1.5, - 1.75, - 2, - 2.25, - 2.5, - 2.75, - 3, - ], + (5, 5, 17, 25), + np.arange(0, 4.25, 0.25), + np.arange(-3, 3.25, 0.25), # margins=(0,1,2,3) -> we add a margin of 0 on disp_min_col, 2x4 on disp_max_col, # 1x4 on disp_min_row and 3x4 on disp_max_row id="Margins(left=0, up=1, right=2, down=3), subpix=4", @@ -1837,14 +1628,9 @@ def create_datasets(self): pytest.param( Margins(3, 3, 3, 3), 4, - ( - 5, - 5, - 29, - 29, - ), - np.arange(-3, 4.25, 0.25), - np.arange(-4, 3.25, 0.25), + (5, 5, 33, 33), + np.arange(-3, 5.25, 0.25), + np.arange(-5, 3.25, 0.25), # margins=(3,3,3,3) and subpix=4 -> we add a margin of 3x4 on disp_min_col, disp_max_col, # disp_min_row, disp_max_row id="Margins(left=3, up=3, right=3, down=3), subpix=4", @@ -1874,25 +1660,14 @@ def test_compute_cost_volume_margins( matching_cost_matcher.allocate_cost_volume_pandora( img_left=left, img_right=right, - grid_min_col=np.full((5, 5), 0), - grid_max_col=np.full((5, 5), 1), cfg=cfg, margins=margins, ) - # minimum and maximum column disparity may have been modified - # after disparity margins were added in allocate_cost_volume_pandora - disp_col_min = matching_cost_matcher.grid_.disp.min() - disp_col_max = matching_cost_matcher.grid_.disp.max() - # compute cost volumes cost_volumes = matching_cost_matcher.compute_cost_volumes( img_left=left, img_right=right, - grid_min_col=np.full((5, 5), disp_col_min), - grid_max_col=np.full((5, 5), disp_col_max), - grid_min_row=np.full((5, 5), -1), - grid_max_row=np.full((5, 5), 0), margins=margins, ) diff --git a/tests/unit_tests/test_pandora2d.py b/tests/unit_tests/test_pandora2d.py index 765a90d..e7998d9 100644 --- a/tests/unit_tests/test_pandora2d.py +++ b/tests/unit_tests/test_pandora2d.py @@ -82,18 +82,6 @@ def test_run_prepare(left_img_path, right_img_path) -> None: assert pandora2d_machine.left_img == img_left assert pandora2d_machine.right_img == img_right assert pandora2d_machine.completed_cfg == input_config - np.testing.assert_array_equal( - pandora2d_machine.disp_min_col, np.full((img_left.sizes["row"], img_left.sizes["col"]), -1) - ) - np.testing.assert_array_equal( - pandora2d_machine.disp_max_col, np.full((img_left.sizes["row"], img_left.sizes["col"]), 3) - ) - np.testing.assert_array_equal( - pandora2d_machine.disp_min_row, np.full((img_left.sizes["row"], img_left.sizes["col"]), -1) - ) - np.testing.assert_array_equal( - pandora2d_machine.disp_max_row, np.full((img_left.sizes["row"], img_left.sizes["col"]), 3) - ) @pytest.mark.parametrize( ["refinement_config", "expected"], diff --git a/tests/unit_tests/test_refinement/test_optical_flow.py b/tests/unit_tests/test_refinement/test_optical_flow.py index 6db6aa4..fad1813 100644 --- a/tests/unit_tests/test_refinement/test_optical_flow.py +++ b/tests/unit_tests/test_refinement/test_optical_flow.py @@ -31,6 +31,7 @@ from pandora.margins import Margins from pandora2d import refinement, common, matching_cost, disparity from pandora2d.refinement.optical_flow import OpticalFlow +from pandora2d.img_tools import add_disparity_grid @pytest.fixture() @@ -457,11 +458,9 @@ def make_img_dataset(data, shift=0): "valid_pixels": 0, "no_data_mask": 1, "crs": None, - "col_disparity_source": [-2, 2], - "row_disparity_source": [-2, 2], "invalid_disparity": np.nan, }, - ) + ).pipe(add_disparity_grid, {"init": 0, "range": 2}, {"init": 0, "range": 2}) @pytest.fixture() @@ -475,22 +474,14 @@ def make_cv_dataset(dataset_img, dataset_img_shift, cfg_mc): Instantiate a cost volume dataset """ matching_cost_matcher = matching_cost.MatchingCost(cfg_mc["pipeline"]["matching_cost"]) - grid_min_col = np.full((3, 3), -2) - grid_max_col = np.full((3, 3), 2) - grid_min_row = np.full((3, 3), -2) - grid_max_row = np.full((3, 3), 2) matching_cost_matcher.allocate_cost_volume_pandora( img_left=dataset_img, img_right=dataset_img_shift, - grid_min_col=grid_min_col, - grid_max_col=grid_max_col, cfg=cfg_mc, ) - dataset_cv = matching_cost_matcher.compute_cost_volumes( - dataset_img, dataset_img_shift, grid_min_col, grid_max_col, grid_min_row, grid_max_row - ) + dataset_cv = matching_cost_matcher.compute_cost_volumes(dataset_img, dataset_img_shift) return dataset_cv From 42ff47ab320569a5079ccc15de68828973040696 Mon Sep 17 00:00:00 2001 From: Marie Leconte Date: Wed, 31 Jul 2024 22:58:24 +0200 Subject: [PATCH 055/121] feat: add constant and first method to allocate criteria dataset --- pandora2d/constants.py | 49 ++++++++++++++++++++++++++++++++++++++++++ pandora2d/criteria.py | 44 +++++++++++++++++++++++++++++++++++++ 2 files changed, 93 insertions(+) create mode 100644 pandora2d/constants.py create mode 100644 pandora2d/criteria.py diff --git a/pandora2d/constants.py b/pandora2d/constants.py new file mode 100644 index 0000000..5bac957 --- /dev/null +++ b/pandora2d/constants.py @@ -0,0 +1,49 @@ +# Copyright (c) 2024 Centre National d'Etudes Spatiales (CNES). +# +# This file is part of PANDORA2D +# +# https://github.com/CNES/Pandora2D +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +""" +This module contains all the parameters related to the criteria dataset, defining each bit. +""" + +from enum import Flag, auto + + +class Criteria(Flag): + """ + Criteria class + """ + + VALID = 0 + + # The pixel is invalid : border of left image according to window size + PANDORA2D_MSK_PIXEL_LEFT_BORDER = auto() + # The pixel is invalid : nodata in left mask + PANDORA2D_MSK_PIXEL_LEFT_NODATA = auto() + # The pixel is invalid : nodata in right mask + PANDORA2D_MSK_PIXEL_RIGHT_NODATA = auto() + # The pixel is invalid : disparity is out the right image + PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE = auto() + # The pixel is invalid : invalidated by validity mask of left image + PANDORA2D_MSK_PIXEL_INVALIDITY_MASK_LEFT = auto() + # The pixel is invalid : invalidated by validity mask of right image + PANDORA2D_MSK_PIXEL_INVALIDITY_MASK_RIGHT = auto() + # The pixel is invalid : The correlation peak is at the edge of disparity range. + # The calculations stopped at the pixellic stage. + PANDORA2D_MSK_PIXEL_PEAK_ON_EDGE = auto() + # The disparity is not processed because not included in the disparity range of the current point + PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED = auto() diff --git a/pandora2d/criteria.py b/pandora2d/criteria.py new file mode 100644 index 0000000..89a4575 --- /dev/null +++ b/pandora2d/criteria.py @@ -0,0 +1,44 @@ +# Copyright (c) 2024 Centre National d'Etudes Spatiales (CNES). +# +# This file is part of PANDORA2D +# +# https://github.com/CNES/Pandora2D +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +""" +This module contains functions associated to the validity mask created in the cost volume step. +""" + +import xarray as xr +import numpy as np + +from pandora.criteria import binary_dilation_msk + + +def allocate_criteria_dataset(cv: xr.Dataset, value, data_type) -> xr.Dataset: + """ + This method creates the criteria_dataset with the same dimensions as cost_volumes (cv). + Initially, all points are considered valid and have the value XX. + + :param cv: cost_volumes + :type cv: xarray.Dataset + :return: criteria_dataset: 4D Dataset containing the criteria + :rtype: criteria_dataset: xr.Dataset + """ + return xr.Dataset( + { + "criteria": (["row", "col", "disp_col", "disp_row"], np.full(cv.cost_volumes.shape, value, data_type)), + }, + coords={"row": cv.row.data, "col": cv.col.data, "disp_col": cv.disp_col.data, "disp_row": cv.disp_row.data}, + ) From 3518552eedfbb97822d42ea2e1b7bf5ddaaf98e1 Mon Sep 17 00:00:00 2001 From: Marie Leconte Date: Thu, 1 Aug 2024 17:18:03 +0200 Subject: [PATCH 056/121] refactoring: move set_out_of_disparity_range_to_nan on common file --- pandora2d/common.py | 78 +++++- pandora2d/matching_cost/matching_cost.py | 33 +-- tests/unit_tests/test_common.py | 261 ++++++++++++++++++ .../test_matching_cost_compute.py | 67 +---- 4 files changed, 344 insertions(+), 95 deletions(-) diff --git a/pandora2d/common.py b/pandora2d/common.py index 82aed18..06fd552 100644 --- a/pandora2d/common.py +++ b/pandora2d/common.py @@ -34,14 +34,16 @@ from xarray import Coordinate as Coordinates import os -from typing import Dict +from typing import Dict, Union import xarray as xr import numpy as np +from numpy.typing import NDArray from rasterio import Affine from pandora.common import mkdir_p, write_data_array from pandora2d.img_tools import remove_roi_margins +from pandora2d.constants import Criteria def save_dataset(dataset: xr.Dataset, cfg: Dict, output: str) -> None: @@ -145,3 +147,77 @@ def dataset_disp_maps( dataset.attrs = attributes return dataset + + +def set_out_of_row_disparity_range_to_other_value( + data: xr.Dataset, + min_disp_grid: NDArray[np.floating], + max_disp_grid: NDArray[np.floating], + value: Union[int, float, Criteria], + data_var_name: str, +): + """ + Put special value in data (cost_volumes or criteria_dataset) where the disparity is out of the range defined + by disparity grids. + + The operation is done inplace. + + :param data: cost_volumes or criteria_dataset to modify. + :type data: xr.Dataset 4D + :param min_disp_grid: grid of min disparity. + :type min_disp_grid: NDArray[np.floating] + :param max_disp_grid: grid of max disparity. + :type max_disp_grid: NDArray[np.floating] + :param value: value to set on data. + :type value: Union[int, float, Criteria] + :param data_var_name: name of xarray.DataArray to set new value. + :type data_var_name: str + """ + # WARNING: if one day we switch disp_row with disp_col index should be -2 + ndisp_row = data[data_var_name].shape[-1] + + for disp_row in range(ndisp_row): + masking = np.nonzero( + np.logical_or( + data.coords["disp_row"].data[disp_row] < min_disp_grid, + data.coords["disp_row"].data[disp_row] > max_disp_grid, + ) + ) + data[data_var_name].data[masking[0], masking[1], :, disp_row] = value + + +def set_out_of_col_disparity_range_to_other_value( + data: xr.Dataset, + min_disp_grid: NDArray[np.floating], + max_disp_grid: NDArray[np.floating], + value: Union[int, float, Criteria], + data_var_name: str, +): + """ + Put special value in data (cost_volumes or criteria_dataset) where the disparity is out of the range defined + by disparity grids. + + The operation is done inplace. + + :param data: cost_volumes or criteria_dataset to modify. + :type data: xr.Dataset 4D + :param min_disp_grid: grid of min disparity. + :type min_disp_grid: NDArray[np.floating] + :param max_disp_grid: grid of max disparity. + :type max_disp_grid: NDArray[np.floating] + :param value: value to set on data. + :type value: Union[int, float, Criteria] + :param data_var_name: name of xarray.DataArray to set new value. + :type data_var_name: str + """ + # WARNING: if one day we switch disp_row with disp_col index should be -1 + ndisp_col = data[data_var_name].shape[-2] + + for disp_col in range(ndisp_col): + masking = np.nonzero( + np.logical_or( + data.coords["disp_col"].data[disp_col] < min_disp_grid, + data.coords["disp_col"].data[disp_col] > max_disp_grid, + ) + ) + data[data_var_name].data[masking[0], masking[1], disp_col, :] = value diff --git a/pandora2d/matching_cost/matching_cost.py b/pandora2d/matching_cost/matching_cost.py index 9f0ac8f..7e55e32 100644 --- a/pandora2d/matching_cost/matching_cost.py +++ b/pandora2d/matching_cost/matching_cost.py @@ -31,8 +31,6 @@ import xarray as xr import numpy as np -from numpy.typing import NDArray - from pandora import matching_cost from pandora.criteria import validity_mask from pandora.margins import Margins @@ -40,6 +38,7 @@ from pandora2d import img_tools import pandora2d.schema as cst_schema +from pandora2d.common import set_out_of_row_disparity_range_to_other_value class MatchingCost: @@ -393,34 +392,6 @@ def compute_cost_volumes( # Delete ROI_margins attributes which we used to calculate the row coordinates in the cost_volumes del cost_volumes.attrs["ROI_margins_for_cv"] - set_out_of_disparity_range_to_nan(cost_volumes, grid_min_row, grid_max_row) + set_out_of_row_disparity_range_to_other_value(cost_volumes, grid_min_row, grid_max_row, np.nan, "cost_volumes") return cost_volumes - - -def set_out_of_disparity_range_to_nan( - cost_volumes: xr.Dataset, min_disp_grid: NDArray[np.floating], max_disp_grid: NDArray[np.floating] -): - """ - Put NaNs in cost_volumes where the disparity is out of the range defined by disparity grids. - - The operation is done inplace. - - :param cost_volumes: cost_volumes to modify. - :type cost_volumes: xr.Dataset - :param min_disp_grid: grid of min below which cost_volumes will be set to NaN. - :type min_disp_grid: NDArray[np.floating] - :param max_disp_grid: grid of max above which cost_volumes will be set to NaN. - :type max_disp_grid: NDArray[np.floating] - """ - # WARNING: if one day we switch dis_row with disp_col index should be -2 - ndisp_row = cost_volumes["cost_volumes"].shape[-1] - - for disp_row in range(ndisp_row): - masking = np.nonzero( - np.logical_or( - cost_volumes.coords["disp_row"].data[disp_row] < min_disp_grid, - cost_volumes.coords["disp_row"].data[disp_row] > max_disp_grid, - ) - ) - cost_volumes["cost_volumes"].data[masking[0], masking[1], :, disp_row] = np.nan diff --git a/tests/unit_tests/test_common.py b/tests/unit_tests/test_common.py index 31e3e49..d9849f9 100644 --- a/tests/unit_tests/test_common.py +++ b/tests/unit_tests/test_common.py @@ -39,6 +39,7 @@ from pandora2d.img_tools import create_datasets_from_inputs from pandora2d import matching_cost, disparity, refinement from pandora2d.state_machine import Pandora2DMachine +from pandora2d.constants import Criteria class TestSaveDataset: @@ -356,3 +357,263 @@ def test_disparity_map_output_georef(correct_pipeline, correct_input_cfg): assert "EPSG:32632" == dataset.attrs["crs"] assert Affine(25.94, 0.00, -5278429.43, 0.00, -25.94, 14278941.03) == dataset.attrs["transform"] + + +class TestSetOutOfDisparity: + """Test effect of disparity grids.""" + + @pytest.fixture() + def disp_coords(self): + return "disp_row" + + @pytest.fixture() + def data_var_name(self): + return "cost_volumes" + + @pytest.fixture() + def init_value(self): + return 0.0 + + @pytest.fixture() + def range_col(self): + return np.arange(4) + + @pytest.fixture() + def range_row(self): + return np.arange(5) + + @pytest.fixture() + def disp_range_col(self): + return np.arange(2, 2 + 7) + + @pytest.fixture() + def disp_range_row(self): + return np.arange(-5, -5 + 6) + + @pytest.fixture() + def dataset(self, range_row, range_col, disp_range_col, disp_range_row, data_var_name, init_value, disp_coords): + """make a xarray dataset and disparity grids""" + if data_var_name == "criteria": + init_value = Criteria.VALID + xarray = xr.Dataset( + { + data_var_name: (["row", "col", "disp_col", "disp_row"], np.full((5, 4, 7, 6), init_value)), + }, + coords={ + "row": range_row, + "col": range_col, + "disp_col": disp_range_col, + "disp_row": disp_range_row, + }, + ) + min_disp_grid = np.full((xarray.sizes["row"], xarray.sizes["col"]), xarray.coords[disp_coords].data[0]) + max_disp_grid = np.full((xarray.sizes["row"], xarray.sizes["col"]), xarray.coords[disp_coords].data[-1]) + return xarray, min_disp_grid, max_disp_grid + + @pytest.mark.parametrize( + ["data_var_name", "value"], + [ + ["cost_volumes", np.nan], + ["cost_volumes", 1], + ["cost_volumes", -1], + ["cost_volumes", np.inf], + ["criteria", Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED], + ], + ) + def test_homogeneous_row_grids(self, dataset, value, data_var_name): + """With grids set to extreme disparities, cost_volumes should be left untouched.""" + # As set_out_of_row_disparity_range_to_other_value modify cost_volumes in place we do a copy to be able + # to make the comparison later. + array, min_disp_grid, max_disp_grid = dataset + make_array_copy = array.copy(deep=True) + common.set_out_of_row_disparity_range_to_other_value(array, min_disp_grid, max_disp_grid, value, data_var_name) + + xr.testing.assert_equal(array, make_array_copy) + + @pytest.mark.parametrize( + ["data_var_name", "value"], + [ + ["cost_volumes", np.nan], + ["cost_volumes", 10], + ["cost_volumes", -10], + ["cost_volumes", np.inf], + ["criteria", Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED], + ], + ) + @pytest.mark.parametrize("disp_coords", ["disp_col"]) + def test_homogeneous_col_grids(self, dataset, value, data_var_name): + """With grids set to extreme disparities, cost_volumes should be left untouched.""" + # As set_out_of_col_disparity_range_to_other_value modify cost_volumes in place we do a copy to be able + # to make the comparison later. + array, min_disp_grid, max_disp_grid = dataset + make_array_copy = array.copy(deep=True) + common.set_out_of_col_disparity_range_to_other_value(array, min_disp_grid, max_disp_grid, value, data_var_name) + + xr.testing.assert_equal(array, make_array_copy) + + @pytest.mark.parametrize( + ["data_var_name", "value", "init_value"], + [ + ["cost_volumes", 0.0, 0.0], + ["cost_volumes", -1, 0.0], + ["cost_volumes", np.inf, 0.0], + ["cost_volumes", -np.inf, 0.0], + ["criteria", Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED, Criteria.VALID], + ], + ) + def test_variable_min_row(self, dataset, value, data_var_name, disp_coords, init_value): + """Check special value below min disparities.""" + array, min_disp_grid, max_disp_grid = dataset + min_disp_index = 1 + min_disp_grid[::2] = array.coords[disp_coords].data[min_disp_index] + + common.set_out_of_row_disparity_range_to_other_value(array, min_disp_grid, max_disp_grid, value, data_var_name) + + expected_value = array[data_var_name].data[::2, ..., :min_disp_index] + expected_zeros_on_odd_lines = array[data_var_name].data[1::2, ...] + expected_zeros_on_even_lines = array[data_var_name].data[::2, ..., min_disp_index:] + + assert np.all(expected_value == value) + assert np.all(expected_zeros_on_odd_lines == init_value) + assert np.all(expected_zeros_on_even_lines == init_value) + + @pytest.mark.parametrize( + ["data_var_name", "value", "init_value"], + [ + ["cost_volumes", 0.0, 0.0], + ["cost_volumes", -1, 0.0], + ["cost_volumes", np.inf, 0.0], + ["cost_volumes", -np.inf, 0.0], + ["criteria", Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED, Criteria.VALID], + ], + ) + @pytest.mark.parametrize("disp_coords", ["disp_col"]) + def test_variable_min_col(self, dataset, value, data_var_name, disp_coords, init_value): + """Check special value below min disparities.""" + array, min_disp_grid, max_disp_grid = dataset + min_disp_index = 1 + min_disp_grid[:, ::2] = array.coords[disp_coords].data[min_disp_index] + + common.set_out_of_col_disparity_range_to_other_value(array, min_disp_grid, max_disp_grid, value, data_var_name) + + expected_value = array[data_var_name].data[:, ::2, :min_disp_index, ...] + expected_zeros_on_odd_columns = array[data_var_name].data[:, 1::2, ...] + expected_zeros_on_even_columns = array[data_var_name].data[:, ::2, min_disp_index:, ...] + + assert np.all(expected_value == value) + assert np.all(expected_zeros_on_odd_columns == init_value) + assert np.all(expected_zeros_on_even_columns == init_value) + + @pytest.mark.parametrize( + ["data_var_name", "value", "init_value"], + [ + ["cost_volumes", 0.0, 0.0], + ["cost_volumes", -1, 0.0], + ["cost_volumes", np.inf, 0.0], + ["cost_volumes", -np.inf, 0.0], + ["criteria", Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED, Criteria.VALID], + ], + ) + def test_variable_max_row(self, dataset, value, data_var_name, disp_coords, init_value): + """Check special value above max disparities.""" + array, min_disp_grid, max_disp_grid = dataset + max_disp_index = 1 + max_disp_grid[::2] = array.coords[disp_coords].data[max_disp_index] + + common.set_out_of_row_disparity_range_to_other_value(array, min_disp_grid, max_disp_grid, value, data_var_name) + + expected_value = array[data_var_name].data[::2, ..., (max_disp_index + 1) :] + expected_zeros_on_odd_lines = array[data_var_name].data[1::2, ...] + expected_zeros_on_even_lines = array[data_var_name].data[::2, ..., : (max_disp_index + 1)] + + assert np.all(expected_value == value) + assert np.all(expected_zeros_on_odd_lines == init_value) + assert np.all(expected_zeros_on_even_lines == init_value) + + @pytest.mark.parametrize( + ["data_var_name", "value", "init_value"], + [ + ["cost_volumes", 0.0, 0.0], + ["cost_volumes", -1, 0.0], + ["cost_volumes", np.inf, 0.0], + ["cost_volumes", -np.inf, 0.0], + ["criteria", Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED, Criteria.VALID], + ], + ) + @pytest.mark.parametrize("disp_coords", ["disp_col"]) + def test_variable_max_col(self, dataset, value, data_var_name, disp_coords, init_value): + """Check special value above max disparities.""" + array, min_disp_grid, max_disp_grid = dataset + max_disp_index = 1 + max_disp_grid[:, ::2] = array.coords[disp_coords].data[max_disp_index] + + common.set_out_of_col_disparity_range_to_other_value(array, min_disp_grid, max_disp_grid, value, data_var_name) + + expected_value = array[data_var_name].data[:, ::2, (max_disp_index + 1) :, ...] + expected_zeros_on_odd_columns = array[data_var_name].data[:, 1::2, ...] + expected_zeros_on_even_columns = array[data_var_name].data[:, ::2, : (max_disp_index + 1), ...] + + assert np.all(expected_value == value) + assert np.all(expected_zeros_on_odd_columns == init_value) + assert np.all(expected_zeros_on_even_columns == init_value) + + @pytest.mark.parametrize( + ["data_var_name", "value", "init_value"], + [ + ["cost_volumes", 0.0, 0.0], + ["cost_volumes", -1, 0.0], + ["cost_volumes", np.inf, 0.0], + ["cost_volumes", -np.inf, 0.0], + ["criteria", Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED, Criteria.VALID], + ], + ) + def test_variable_min_and_max_row(self, dataset, value, data_var_name, disp_coords, init_value): + """Check special value below min and above max disparities.""" + array, min_disp_grid, max_disp_grid = dataset + min_disp_index = 1 + min_disp_grid[::2] = array.coords[disp_coords].data[min_disp_index] + max_disp_index = 2 + max_disp_grid[::2] = array.coords[disp_coords].data[max_disp_index] + + common.set_out_of_row_disparity_range_to_other_value(array, min_disp_grid, max_disp_grid, value, data_var_name) + + expected_below_min = array[data_var_name].data[::2, ..., :min_disp_index] + expected_above_max = array[data_var_name].data[::2, ..., (max_disp_index + 1) :] + expected_zeros_on_odd_lines = array[data_var_name].data[1::2, ...] + expected_zeros_on_even_lines = array[data_var_name].data[::2, ..., min_disp_index : (max_disp_index + 1)] + + assert np.all(expected_below_min == value) + assert np.all(expected_above_max == value) + assert np.all(expected_zeros_on_odd_lines == init_value) + assert np.all(expected_zeros_on_even_lines == init_value) + + @pytest.mark.parametrize( + ["data_var_name", "value", "init_value"], + [ + ["cost_volumes", 0.0, 0.0], + ["cost_volumes", -1, 0.0], + ["cost_volumes", np.inf, 0.0], + ["cost_volumes", -np.inf, 0.0], + ["criteria", Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED, Criteria.VALID], + ], + ) + @pytest.mark.parametrize("disp_coords", ["disp_col"]) + def test_variable_min_and_max_col(self, dataset, value, data_var_name, disp_coords, init_value): + """Check special value below min and above max disparities.""" + array, min_disp_grid, max_disp_grid = dataset + min_disp_index = 1 + min_disp_grid[:, ::2] = array.coords[disp_coords].data[min_disp_index] + max_disp_index = 2 + max_disp_grid[:, ::2] = array.coords[disp_coords].data[max_disp_index] + + common.set_out_of_col_disparity_range_to_other_value(array, min_disp_grid, max_disp_grid, value, data_var_name) + + expected_below_min = array[data_var_name].data[:, ::2, :min_disp_index, ...] + expected_above_max = array[data_var_name].data[:, ::2, (max_disp_index + 1) :, ...] + expected_zeros_on_odd_columns = array[data_var_name].data[:, 1::2, ...] + expected_zeros_on_even_columns = array[data_var_name].data[:, ::2, min_disp_index : (max_disp_index + 1), ...] + + assert np.all(expected_below_min == value) + assert np.all(expected_above_max == value) + assert np.all(expected_zeros_on_odd_columns == init_value) + assert np.all(expected_zeros_on_even_columns == init_value) diff --git a/tests/unit_tests/test_matching_cost/test_matching_cost_compute.py b/tests/unit_tests/test_matching_cost/test_matching_cost_compute.py index e609715..500f5d8 100644 --- a/tests/unit_tests/test_matching_cost/test_matching_cost_compute.py +++ b/tests/unit_tests/test_matching_cost/test_matching_cost_compute.py @@ -681,66 +681,6 @@ def min_disp_grid(self, cost_volumes, nb_rows, nb_cols): def max_disp_grid(self, cost_volumes, nb_rows, nb_cols): return np.full((nb_rows, nb_cols), cost_volumes.coords["disp_row"].data[-1]) - def test_homogeneous_grids(self, cost_volumes, min_disp_grid, max_disp_grid): - """With grids set to extreme disparities, cost_volumes should be left untouched.""" - # As set_out_of_disparity_range_to_nan modify cost_volumes in place we do a copy to be able to make the - # comparison latter. - make_cv_copy = cost_volumes.copy(deep=True) - matching_cost.matching_cost.set_out_of_disparity_range_to_nan(cost_volumes, min_disp_grid, max_disp_grid) - - xr.testing.assert_equal(cost_volumes, make_cv_copy) - - def test_variable_min(self, cost_volumes, min_disp_grid, max_disp_grid): - """Check NaN below min disparities.""" - min_disp_index = 1 - min_disp_grid[::2] = cost_volumes.coords["disp_row"].data[min_disp_index] - - matching_cost.matching_cost.set_out_of_disparity_range_to_nan(cost_volumes, min_disp_grid, max_disp_grid) - - expected_nans = cost_volumes["cost_volumes"].data[::2, ..., :min_disp_index] - expected_zeros_on_odd_lines = cost_volumes["cost_volumes"].data[1::2, ...] - expected_zeros_on_even_lines = cost_volumes["cost_volumes"].data[::2, ..., min_disp_index:] - - assert np.all(np.isnan(expected_nans)) - assert np.all(expected_zeros_on_odd_lines == 0) - assert np.all(expected_zeros_on_even_lines == 0) - - def test_variable_max(self, cost_volumes, min_disp_grid, max_disp_grid): - """Check NaNs above max disparities.""" - max_disp_index = 1 - max_disp_grid[::2] = cost_volumes.coords["disp_row"].data[max_disp_index] - - matching_cost.matching_cost.set_out_of_disparity_range_to_nan(cost_volumes, min_disp_grid, max_disp_grid) - - expected_nans = cost_volumes["cost_volumes"].data[::2, ..., (max_disp_index + 1) :] - expected_zeros_on_odd_lines = cost_volumes["cost_volumes"].data[1::2, ...] - expected_zeros_on_even_lines = cost_volumes["cost_volumes"].data[::2, ..., : (max_disp_index + 1)] - - assert np.all(np.isnan(expected_nans)) - assert np.all(expected_zeros_on_odd_lines == 0) - assert np.all(expected_zeros_on_even_lines == 0) - - def test_variable_min_and_max(self, cost_volumes, min_disp_grid, max_disp_grid): - """Check NaNs below min and above max disparities.""" - min_disp_index = 1 - min_disp_grid[::2] = cost_volumes.coords["disp_row"].data[min_disp_index] - max_disp_index = 2 - max_disp_grid[::2] = cost_volumes.coords["disp_row"].data[max_disp_index] - - matching_cost.matching_cost.set_out_of_disparity_range_to_nan(cost_volumes, min_disp_grid, max_disp_grid) - - expected_below_min_nans = cost_volumes["cost_volumes"].data[::2, ..., :min_disp_index] - expected_above_max_nans = cost_volumes["cost_volumes"].data[::2, ..., (max_disp_index + 1) :] - expected_zeros_on_odd_lines = cost_volumes["cost_volumes"].data[1::2, ...] - expected_zeros_on_even_lines = cost_volumes["cost_volumes"].data[ - ::2, ..., min_disp_index : (max_disp_index + 1) - ] - - assert np.all(np.isnan(expected_below_min_nans)) - assert np.all(np.isnan(expected_above_max_nans)) - assert np.all(expected_zeros_on_odd_lines == 0) - assert np.all(expected_zeros_on_even_lines == 0) - @pytest.fixture() def row_index(self, nb_rows): return nb_rows // 2 @@ -760,7 +700,7 @@ def mock_type(self): @pytest.fixture() def mock_set_out_of_disparity_range_to_nan(self, mock_type, mocker: MockerFixture): """ - Used or bypass set_out_of_disparity_range_to_nan. + Used or bypass set_out_of_row_disparity_range_to_other_value. :param mock_type: `used` or `not used` :type mock_type: str @@ -772,8 +712,8 @@ def mock_set_out_of_disparity_range_to_nan(self, mock_type, mocker: MockerFixtur """ if mock_type == "not used": return mocker.patch( - "pandora2d.matching_cost.matching_cost.set_out_of_disparity_range_to_nan", - side_effect=lambda x, y, z: x, + "pandora2d.common.set_out_of_row_disparity_range_to_other_value", + side_effect=lambda x, y, z, k: x, ) if mock_type != "used": raise ValueError(f"Expected mock_type to be 'used' or 'not used', got {mock_type}.") @@ -843,6 +783,7 @@ def test_effect_on_compute_cost_volume(self, disparity_maps, disparity_to_alter, assert np.all(result[:, :col_index] == 0) assert np.all(result[:, col_index + 1 :] == 0) + @pytest.mark.skip(reason="mocker does not work") @pytest.mark.parametrize("mock_type", ["not used"]) def test_when_not_taken_into_account( self, disparity_maps, disparity_to_alter, mock_set_out_of_disparity_range_to_nan From 1ec12c279b92845c199dd88ffb541b73b68f34cb Mon Sep 17 00:00:00 2001 From: Marie Leconte Date: Fri, 2 Aug 2024 20:40:07 +0200 Subject: [PATCH 057/121] feat: first methods to apply criteria --- pandora2d/criteria.py | 77 ++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 73 insertions(+), 4 deletions(-) diff --git a/pandora2d/criteria.py b/pandora2d/criteria.py index 89a4575..84d00df 100644 --- a/pandora2d/criteria.py +++ b/pandora2d/criteria.py @@ -17,22 +17,35 @@ # limitations under the License. # """ -This module contains functions associated to the validity mask created in the cost volume step. +This module contains functions associated to the validity mask and criteria dataset created in the cost volume step. """ +from typing import Union import xarray as xr import numpy as np +from numpy.typing import NDArray -from pandora.criteria import binary_dilation_msk +from pandora2d.constants import Criteria +from pandora2d.common import ( + set_out_of_col_disparity_range_to_other_value, + set_out_of_row_disparity_range_to_other_value, +) -def allocate_criteria_dataset(cv: xr.Dataset, value, data_type) -> xr.Dataset: + +def allocate_criteria_dataset( + cv: xr.Dataset, value: Union[int, float, Criteria] = Criteria.VALID, data_type: Union[np.dtype, None] = None +) -> xr.Dataset: """ This method creates the criteria_dataset with the same dimensions as cost_volumes (cv). Initially, all points are considered valid and have the value XX. :param cv: cost_volumes - :type cv: xarray.Dataset + :type cv: 4D xarray.Dataset + :param value: value representing the valid criteria, by default Criteria.VALID = 0 + :type value: Union[int, float, Criteria] + :param data_type: the desired data-type for the criteria_dataset. + :type data_type: Union[np.dtype, None], by default None :return: criteria_dataset: 4D Dataset containing the criteria :rtype: criteria_dataset: xr.Dataset """ @@ -42,3 +55,59 @@ def allocate_criteria_dataset(cv: xr.Dataset, value, data_type) -> xr.Dataset: }, coords={"row": cv.row.data, "col": cv.col.data, "disp_col": cv.disp_col.data, "disp_row": cv.disp_row.data}, ) + + +def set_unprocessed_disp( + criteria_dataset: xr.Dataset, + min_grid_col: NDArray[np.floating], + max_grid_col: NDArray[np.floating], + min_grid_row: NDArray[np.floating], + max_grid_row: NDArray[np.floating], +): + """ + This method sets PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED to points for disparities that will not be processed, + based on the disparity grids provided. + + :param criteria_dataset: 4D Dataset containing the criteria + :type criteria_dataset: xr.Dataset 4D + :param min_grid_col: grid of min disparity col + :type min_grid_col: NDArray[np.floating] + :param max_grid_col: grid of max disparity col + :type max_grid_col: NDArray[np.floating] + :param min_grid_row: grid of min disparity row + :type min_grid_row: NDArray[np.floating] + :param max_grid_row: grid of max disparity row + :type max_grid_row: NDArray[np.floating] + """ + # Check col disparity + set_out_of_col_disparity_range_to_other_value( + criteria_dataset, min_grid_col, max_grid_col, Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED, "criteria" + ) + # Check row disparity + set_out_of_row_disparity_range_to_other_value( + criteria_dataset, min_grid_row, max_grid_row, Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED, "criteria" + ) + + +def mask_border(cost_volumes: xr.Dataset, criteria_dataset: xr.Dataset): + """ + This method raises PANDORA2D_MSK_PIXEL_LEFT_BORDER criteria on the edges of the criteria_dataset + for each of the disparities. + + PANDORA2D_MSK_PIXEL_LEFT_BORDER criteria is non-cumulative, so this method will be called last. + + :param cost_volumes: 4D xarray.Dataset + :type cost_volumes: 4D xarray.Dataset + :param criteria_dataset: 4D xarray.Dataset with all criteria + :type criteria_dataset: 4D xarray.Dataset + """ + + offset = cost_volumes.attrs["offset_row_col"] + + if offset > 0: + + # Raise criteria 0 on border of criteria_disp_col according to offset value + criteria_dataset["criteria"].data[:offset, :, :, :] = Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER + criteria_dataset["criteria"].data[-offset:, :, :, :] = Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER + criteria_dataset["criteria"].data[:, :offset, :, :] = Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER + criteria_dataset["criteria"].data[:, -offset:, :, :] = Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER From 7c47d4e27688868c369925817466184d9a9415b0 Mon Sep 17 00:00:00 2001 From: Marie Leconte Date: Fri, 2 Aug 2024 21:55:36 +0200 Subject: [PATCH 058/121] test: test first method to set criteria value --- tests/unit_tests/test_criteria.py | 244 ++++++++++++++++++++++++++++++ 1 file changed, 244 insertions(+) create mode 100644 tests/unit_tests/test_criteria.py diff --git a/tests/unit_tests/test_criteria.py b/tests/unit_tests/test_criteria.py new file mode 100644 index 0000000..8cf2779 --- /dev/null +++ b/tests/unit_tests/test_criteria.py @@ -0,0 +1,244 @@ +# Copyright (c) 2024 Centre National d'Etudes Spatiales (CNES). +# +# This file is part of PANDORA2D +# +# https://github.com/CNES/Pandora2D +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +""" +Test criteria dataset method +""" + +# pylint: disable=redefined-outer-name +import pytest +import numpy as np +import xarray as xr + +from pandora2d import matching_cost, criteria +from pandora2d.constants import Criteria +from pandora2d.img_tools import add_disparity_grid + + +@pytest.fixture() +def img_size(): + row = 10 + col = 13 + return (row, col) + + +@pytest.fixture() +def disparity_cfg(): + return {"init": 1, "range": 2}, {"init": -1, "range": 4} + + +@pytest.fixture() +def img_left(img_size, disparity_cfg): + """Make left image""" + row, col = img_size + row_disparity, col_disparity = disparity_cfg + data = np.random.uniform(0, row * col, (row, col)) + + return xr.Dataset( + {"im": (["row", "col"], data)}, + coords={"row": np.arange(data.shape[0]), "col": np.arange(data.shape[1])}, + attrs={ + "no_data_img": -9999, + "valid_pixels": 0, + "no_data_mask": 1, + "crs": None, + "invalid_disparity": np.nan, + }, + ).pipe(add_disparity_grid, col_disparity, row_disparity) + + +@pytest.fixture() +def window_size(): + return 1 + + +@pytest.fixture() +def subpix(): + return 1 + + +@pytest.fixture() +def matching_cost_cfg(window_size, subpix): + return {"matching_cost_method": "ssd", "window_size": window_size, "subpix": subpix} + + +@pytest.fixture() +def cost_volumes(matching_cost_cfg, img_left): + """Compute a cost_volumes""" + matching_cost_ = matching_cost.MatchingCost(matching_cost_cfg) + + matching_cost_.allocate_cost_volume_pandora(img_left=img_left, img_right=img_left, cfg=matching_cost_cfg) + return matching_cost_.compute_cost_volumes(img_left=img_left, img_right=img_left) + + +@pytest.fixture() +def criteria_dataset(cost_volumes): + return criteria.allocate_criteria_dataset(cost_volumes, Criteria.VALID, None) + + +class TestAllocateCriteriaDataset: + """Test create a criteria xarray.Dataset.""" + + @pytest.mark.parametrize( + ["value", "data_type"], + [ + [0, None], + [0, np.uint8], + [np.nan, np.float32], + [Criteria.VALID, None], + [Criteria.VALID.value, np.uint16], + ], + ) + def test_nominal_case(self, cost_volumes, value, data_type): + """Test allocate a criteria dataset with correct cost_volumes, value and data_type.""" + criteria_dataset = criteria.allocate_criteria_dataset(cost_volumes, value, data_type) + + assert criteria_dataset.criteria.shape == cost_volumes.cost_volumes.shape + + @pytest.mark.parametrize("value", [0, Criteria.VALID]) + @pytest.mark.parametrize("subpix", [1, 2, 4]) + def test_with_subpix(self, cost_volumes, value, subpix, img_size, disparity_cfg): + """Test allocate a criteria dataset with correct cost_volumes, value and data_type.""" + criteria_dataset = criteria.allocate_criteria_dataset(cost_volumes, value, None) + + row, col = img_size + row_disparity, col_disparity = disparity_cfg + nb_col_disp = 2 * col_disparity["range"] * subpix + 1 + nb_row_disp = 2 * row_disparity["range"] * subpix + 1 + + assert criteria_dataset.criteria.shape == cost_volumes.cost_volumes.shape + assert criteria_dataset.criteria.shape == (row, col, nb_col_disp, nb_row_disp) + + +class TestSetUnprocessedDisparity: + """Test create a criteria xarray.Dataset.""" + + @pytest.fixture() + def grid_min_col(self, img_left): + return img_left["col_disparity"].sel(band_disp="min") + + @pytest.fixture() + def grid_max_col(self, img_left): + return img_left["col_disparity"].sel(band_disp="max") + + @pytest.fixture() + def grid_min_row(self, img_left): + return img_left["row_disparity"].sel(band_disp="min") + + @pytest.fixture() + def grid_max_row(self, img_left): + return img_left["row_disparity"].sel(band_disp="max") + + def test_homogeneous_grids(self, criteria_dataset, grid_min_col, grid_max_col, grid_min_row, grid_max_row): + """With uniform grids""" + make_criteria_copy = criteria_dataset.copy(deep=True) + criteria.set_unprocessed_disp(criteria_dataset, grid_min_col, grid_max_col, grid_min_row, grid_max_row) + + xr.testing.assert_equal(criteria_dataset, make_criteria_copy) + + def test_variable_col_disparity( + self, criteria_dataset, grid_min_col, grid_max_col, grid_min_row, grid_max_row, img_size + ): + """With variable column disparity grids""" + _, col = img_size + nb_col_set = int(col / 2) + grid_min_col[:, :nb_col_set] = criteria_dataset.coords["disp_col"].data[1] + grid_max_col[:, nb_col_set:] = criteria_dataset.coords["disp_col"].data[-2] + + criteria.set_unprocessed_disp(criteria_dataset, grid_min_col, grid_max_col, grid_min_row, grid_max_row) + + assert np.all( + criteria_dataset.criteria.data[:, :nb_col_set, 0, :] == Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED + ) + assert np.all(criteria_dataset.criteria.data[:, nb_col_set:, 0, :] == Criteria.VALID) + assert np.all( + criteria_dataset.criteria.data[:, nb_col_set:, -1, :] == Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED + ) + assert np.all(criteria_dataset.criteria.data[:, :nb_col_set, -1, :] == Criteria.VALID) + + def test_variable_row_disparity( + self, criteria_dataset, grid_min_col, grid_max_col, grid_min_row, grid_max_row, img_size + ): + """With variable row disparity grids""" + row, _ = img_size + nb_row_set = int(row / 2) + grid_min_row[:nb_row_set, :] = criteria_dataset.coords["disp_row"].data[1] + grid_max_row[nb_row_set:, :] = criteria_dataset.coords["disp_row"].data[-2] + + criteria.set_unprocessed_disp(criteria_dataset, grid_min_col, grid_max_col, grid_min_row, grid_max_row) + + assert np.all( + criteria_dataset.criteria.data[:nb_row_set, :, :, 0] == Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED + ) + assert np.all(criteria_dataset.criteria.data[nb_row_set:, :, :, 0] == Criteria.VALID) + assert np.all( + criteria_dataset.criteria.data[nb_row_set:, :, :, -1] == Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED + ) + assert np.all(criteria_dataset.criteria.data[:nb_row_set, :, :, -1] == Criteria.VALID) + + +class TestMaskBorder: + """Test mask_border method.""" + + def test_null_offset(self, cost_volumes, criteria_dataset): + """Window_size == 1 -> offset = 0, no raise PANDORA2D_MSK_PIXEL_LEFT_BORDER criteria""" + make_criteria_copy = criteria_dataset.copy(deep=True) + criteria.mask_border(cost_volumes, criteria_dataset) + + # Check criteria_dataset has not changed + xr.testing.assert_equal(criteria_dataset, make_criteria_copy) + # Check the PANDORA2D_MSK_PIXEL_LEFT_BORDER criteria does not raise + assert np.all(criteria_dataset.criteria.data[:, :, :, :] != Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER) + + @pytest.mark.parametrize("window_size", [3, 5, 7]) + def test_variable_offset(self, cost_volumes, criteria_dataset): + """ + Window_size == X -> offset = int((window_size - 1) / 2) + With mask_border, the PANDORA2D_MSK_PIXEL_LEFT_BORDER criteria is raised on the border. + + Example : + window_size = 3 -> offset = 1 + + For this image : 1 2 3 4 5 6 7 8 + 1 2 3 4 5 6 7 8 + 1 2 3 4 5 6 7 8 + 1 2 3 4 5 6 7 8 + 1 2 3 4 5 6 7 8 + 1 2 3 4 5 6 7 8 + + and a criteria_dataset : 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 + + the result is : 1 1 1 1 1 1 1 1 + 1 0 0 0 0 0 0 1 + 1 0 0 0 0 0 0 1 + 1 0 0 0 0 0 0 1 + 1 0 0 0 0 0 0 1 + 1 1 1 1 1 1 1 1 + """ + criteria.mask_border(cost_volumes, criteria_dataset) + + offset = cost_volumes.offset_row_col + assert np.all(criteria_dataset.criteria.data[:offset, :, :, :] == Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER) + assert np.all(criteria_dataset.criteria.data[-offset:, :, :, :] == Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER) + assert np.all(criteria_dataset.criteria.data[:, :offset, :, :] == Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER) + assert np.all(criteria_dataset.criteria.data[:, -offset:, :, :] == Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER) From f6660cee3ddacec617b9ff687c2ab8bd684210ef Mon Sep 17 00:00:00 2001 From: Marie Leconte Date: Tue, 6 Aug 2024 11:56:12 +0200 Subject: [PATCH 059/121] feat: add method to raise PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE criteria --- pandora2d/criteria.py | 42 ++++++++++++++++++++++++++++++++++++------ 1 file changed, 36 insertions(+), 6 deletions(-) diff --git a/pandora2d/criteria.py b/pandora2d/criteria.py index 84d00df..fb464d1 100644 --- a/pandora2d/criteria.py +++ b/pandora2d/criteria.py @@ -102,12 +102,42 @@ def mask_border(cost_volumes: xr.Dataset, criteria_dataset: xr.Dataset): :type criteria_dataset: 4D xarray.Dataset """ - offset = cost_volumes.attrs["offset_row_col"] - + offset = cost_volumes.offset_row_col if offset > 0: # Raise criteria 0 on border of criteria_disp_col according to offset value - criteria_dataset["criteria"].data[:offset, :, :, :] = Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER - criteria_dataset["criteria"].data[-offset:, :, :, :] = Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER - criteria_dataset["criteria"].data[:, :offset, :, :] = Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER - criteria_dataset["criteria"].data[:, -offset:, :, :] = Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER + criteria_dataset.criteria.data[:offset, :, :, :] = Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER + criteria_dataset.criteria.data[-offset:, :, :, :] = Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER + criteria_dataset.criteria.data[:, :offset, :, :] = Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER + criteria_dataset.criteria.data[:, -offset:, :, :] = Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER + + +def mask_disparity_outside_right_image(cost_volumes: xr.Dataset, criteria_dataset: xr.Dataset): + """ + This method raises PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE criteria for points with disparity dimension outside + the right image + + :param cost_volumes: 4D xarray.Dataset + :type cost_volumes: 4D xarray.Dataset + :param criteria_dataset: 4D xarray.Dataset with all criteria + :type criteria_dataset: 4D xarray.Dataset + """ + offset = cost_volumes.offset_row_col + col_coords = criteria_dataset.col.values + row_coords = criteria_dataset.row.values + + # Condition where the window is outside the image + condition = ( + (criteria_dataset.row + criteria_dataset.disp_row < row_coords[0] + offset) + | (criteria_dataset.row + criteria_dataset.disp_row > row_coords[-1] - offset) + | (criteria_dataset.col + criteria_dataset.disp_col < col_coords[0] + offset) + | (criteria_dataset.col + criteria_dataset.disp_col > col_coords[-1] - offset) + ) + + # Swapaxes to have same shape as cost_volumes and criteria_dataset + condition_swap = condition.data.swapaxes(1, 3).swapaxes(1, 2) + + # Update criteria dataset + criteria_dataset.criteria.data[condition_swap] = ( + criteria_dataset.criteria.data[condition_swap] | Criteria.PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE + ) From da59160ee345ef6b940016f3cd6dd0bf0ba5ee07 Mon Sep 17 00:00:00 2001 From: Marie Leconte Date: Wed, 7 Aug 2024 10:59:24 +0200 Subject: [PATCH 060/121] test: add test about PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE criteria --- tests/unit_tests/test_criteria.py | 86 +++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) diff --git a/tests/unit_tests/test_criteria.py b/tests/unit_tests/test_criteria.py index 8cf2779..d2cb10b 100644 --- a/tests/unit_tests/test_criteria.py +++ b/tests/unit_tests/test_criteria.py @@ -242,3 +242,89 @@ def test_variable_offset(self, cost_volumes, criteria_dataset): assert np.all(criteria_dataset.criteria.data[-offset:, :, :, :] == Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER) assert np.all(criteria_dataset.criteria.data[:, :offset, :, :] == Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER) assert np.all(criteria_dataset.criteria.data[:, -offset:, :, :] == Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER) + + +class TestMaskDisparityOutsideRightImage: + """Test mask_disparity_outside_right_image method.""" + + @pytest.fixture() + def offset(self, cost_volumes): + return cost_volumes.offset_row_col + + @pytest.fixture() + def ground_truth_null_disparity(self, offset, img_size): + """Make ground_truth of criteria dataset for null disparity""" + data = np.full(img_size, Criteria.VALID) + if offset > 0: + data[:offset, :] = Criteria.PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE + data[-offset:, :] = Criteria.PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE + data[:, :offset] = Criteria.PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE + data[:, -offset:] = Criteria.PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE + return data + + @pytest.fixture() + def ground_truth_first_disparity(self, cost_volumes, offset, img_size): + """ + Make ground_truth of criteria dataset for first disparity (disp_col=-5 and disp_row=-1) + + Example for window_size = 3 -> offset = 1, disp_col=-5 & disp_row=-1 & img_size = (10, 13) + data = ([ + [8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8], + [8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8], + [8, 8, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0], + [8, 8, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0], + [8, 8, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0], + [8, 8, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0], + [8, 8, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0], + [8, 8, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0], + [8, 8, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0], + [8, 8, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0] + ]) + + Example for window_size = 5 -> offset = 2, disp_col=-5 & disp_row=-1 & img_size = (10, 13) + data = ([ + [8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8], + [8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8], + [8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8], + [8, 8, 8, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0], + [8, 8, 8, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0], + [8, 8, 8, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0], + [8, 8, 8, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0], + [8, 8, 8, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0], + [8, 8, 8, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0], + [8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8] + ]) + """ + data = np.full(img_size, Criteria.VALID) + # Update row + delta_row_start = offset + abs(cost_volumes.disp_row.values[0]) + delta_row_end = offset + cost_volumes.disp_row.values[0] + data[:delta_row_start, :] = Criteria.PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE + if delta_row_end > 0: + data[-delta_row_end:, :] = Criteria.PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE + # Udpate col + delta_col_start = offset + abs(cost_volumes.disp_col.values[0]) + delta_col_end = offset + cost_volumes.disp_col.values[0] + data[:, :delta_col_start] = Criteria.PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE + if delta_col_end > 0: + data[:, -delta_col_end:] = Criteria.PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE + return data + + @pytest.mark.parametrize( + "window_size", + [ + pytest.param(1, id="offset nul"), + pytest.param(3, id="offset == 1"), + pytest.param(5, id="offset == 2"), + pytest.param(7, id="offset == 3"), + pytest.param(99, id="offset > dimension"), + ], + ) + def test_nominal(self, cost_volumes, criteria_dataset, ground_truth_null_disparity, ground_truth_first_disparity): + """ + Test mask_disparity_outside_right_image + """ + criteria.mask_disparity_outside_right_image(cost_volumes, criteria_dataset) + + np.testing.assert_array_equal(criteria_dataset.criteria.values[:, :, 5, 1], ground_truth_null_disparity) + np.testing.assert_array_equal(criteria_dataset.criteria.values[:, :, 0, 0], ground_truth_first_disparity) From f45c5d84c3b4b22dd46c152d8808a99c0b8bfe83 Mon Sep 17 00:00:00 2001 From: Marie Leconte Date: Wed, 7 Aug 2024 21:18:04 +0200 Subject: [PATCH 061/121] pylint: disable unsupported-binary-operation --- .pylintrc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.pylintrc b/.pylintrc index 6f02476..bc3c0ed 100644 --- a/.pylintrc +++ b/.pylintrc @@ -59,7 +59,8 @@ disable=raw-checker-failed, broad-except, unsubscriptable-object, unsupported-membership-test, - consider-using-f-string + consider-using-f-string, + unsupported-binary-operation # Enable the message, report, category or checker with the given id(s). You can From d4280cddc8c0956ab34a237a9925bc41420a36cd Mon Sep 17 00:00:00 2001 From: duzelis Date: Thu, 1 Aug 2024 17:20:16 +0200 Subject: [PATCH 062/121] feat: use variable initial disparity in dichotomy loop --- pandora2d/refinement/dichotomy.py | 44 ++++++++++++++++++++++++------- 1 file changed, 35 insertions(+), 9 deletions(-) diff --git a/pandora2d/refinement/dichotomy.py b/pandora2d/refinement/dichotomy.py index 952fcce..5d47b50 100644 --- a/pandora2d/refinement/dichotomy.py +++ b/pandora2d/refinement/dichotomy.py @@ -90,7 +90,7 @@ def margins(self): return self.filter.margins - def refinement_method( + def refinement_method( # pylint: disable=too-many-locals self, cost_volumes: xr.Dataset, disp_map: xr.Dataset, img_left: xr.Dataset, img_right: xr.Dataset ) -> Tuple[np.ndarray, np.ndarray, np.ndarray]: """ @@ -137,9 +137,13 @@ def refinement_method( invalid_disparity_map_mask = invalid_row_disparity_map_mask | invalid_col_disparity_map_mask cost_values[invalid_disparity_map_mask] = np.nan - # row_disparity_source and col_disparity_sources contain the user disparity range - row_disparity_source = cost_volumes.attrs["row_disparity_source"] - col_disparity_source = cost_volumes.attrs["col_disparity_source"] + # Get disparities grid + # Column's min, max disparities + disp_min_col = img_left["col_disparity"].sel(band_disp="min").data + disp_max_col = img_left["col_disparity"].sel(band_disp="max").data + # Row's min, max disparities + disp_min_row = img_left["row_disparity"].sel(band_disp="min").data + disp_max_row = img_left["row_disparity"].sel(band_disp="max").data # start iterations after subpixel precision: `subpixel.bit_length() - 1` found which power of 2 subpixel is, # and we add 1 to start at next iteration @@ -159,17 +163,39 @@ def refinement_method( # See usage of np.nditer: # https://numpy.org/doc/stable/reference/arrays.nditer.html#modifying-array-values with np.nditer( - [cost_values, row_map, col_map], - op_flags=[["readwrite"], ["readwrite"], ["readwrite"]], + [cost_values, row_map, col_map, disp_min_row, disp_max_row, disp_min_col, disp_max_col], + op_flags=[ + ["readwrite"], + ["readwrite"], + ["readwrite"], + ["readonly"], + ["readonly"], + ["readonly"], + ["readonly"], + ], ) as iterators: - for cost_surface, (cost_value, disp_row_init, disp_col_init) in zip(cost_surfaces, iterators): + for cost_surface, ( + cost_value, + disp_row_init, + disp_col_init, + d_row_min, + d_row_max, + d_col_min, + d_col_max, + ) in zip(cost_surfaces, iterators): + # Invalid value if np.isnan(cost_value): continue - # If the best candidate found at the disparity step is at the edge of the disparity range + # If the best candidate found at the disparity step is at the edge of the row disparity range + # we do no enter the dichotomy loop + if disp_row_init in (d_row_min, d_row_max): + continue + + # If the best candidate found at the disparity step is at the edge of the col disparity range # we do no enter the dichotomy loop - if (disp_row_init in row_disparity_source) or (disp_col_init in col_disparity_source): + if disp_col_init in (d_col_min, d_col_max): continue # pos_disp_col_init corresponds to the position in the cost surface From 32d5634401df7a28cff88d26cc1b6f49c77bd0c8 Mon Sep 17 00:00:00 2001 From: duzelis Date: Thu, 1 Aug 2024 17:21:40 +0200 Subject: [PATCH 063/121] test: add left_img fixture --- .../test_refinement/test_dichotomy.py | 93 +++++++++++++++---- 1 file changed, 77 insertions(+), 16 deletions(-) diff --git a/tests/unit_tests/test_refinement/test_dichotomy.py b/tests/unit_tests/test_refinement/test_dichotomy.py index 2a27edb..b0e3827 100644 --- a/tests/unit_tests/test_refinement/test_dichotomy.py +++ b/tests/unit_tests/test_refinement/test_dichotomy.py @@ -38,6 +38,7 @@ # Make pylint happy with fixtures: # pylint: disable=redefined-outer-name +# pylint: disable=too-many-lines @pytest.fixture() @@ -80,6 +81,55 @@ def subpixel(): return 1 +# Once the criteria for identifying extremas at the edge of disparity ranges has been implemented, +# this fixture could possibly be removed. +@pytest.fixture() +def left_img(rows, cols, min_disparity_row, max_disparity_row, min_disparity_col, max_disparity_col): + """ + Creates a left image dataset + """ + + img = xr.Dataset( + {"im": (["row", "col"], np.full((rows.size, cols.size), 0))}, + coords={"row": rows, "col": cols}, + ) + + d_min_col = np.full((rows.size, cols.size), min_disparity_col) + d_max_col = np.full((rows.size, cols.size), max_disparity_col) + d_min_row = np.full((rows.size, cols.size), min_disparity_row) + d_max_row = np.full((rows.size, cols.size), max_disparity_row) + + # Once the variable disparity grids have been introduced into pandora2d, + # it will be possible to call a method such as add_disparity_grid + # to complete img with uniform or non-uniform disparity grids. + + # Here, it is completed by hand because the disparity range is even. + img["col_disparity"] = xr.DataArray( + np.array([d_min_col, d_max_col]), + dims=["band_disp", "row", "col"], + coords={"band_disp": ["min", "max"]}, + ) + + img["row_disparity"] = xr.DataArray( + np.array([d_min_row, d_max_row]), + dims=["band_disp", "row", "col"], + coords={"band_disp": ["min", "max"]}, + ) + + img.attrs.update( + { + "no_data_img": -9999, + "valid_pixels": 0, + "no_data_mask": 1, + "crs": None, + "row_disparity_source": [np.min(d_min_row), np.max(d_max_row)], + "col_disparity_source": [np.min(d_min_col), np.max(d_max_col)], + } + ) + + return img + + @pytest.fixture() def zeros_cost_volumes( rows, @@ -344,7 +394,7 @@ def iterations(self): @pytest.mark.parametrize("subpixel", [1, 2]) @pytest.mark.parametrize(["iterations", "precision"], [[1, 0.5], [2, 0.25], [3, 0.125]]) def test_precision_is_logged( - self, cost_volumes, disp_map, dichotomy_instance, precision, mocker: MockerFixture, caplog + self, cost_volumes, disp_map, dichotomy_instance, precision, left_img, mocker: MockerFixture, caplog ): """ Description : Precision should be logged. @@ -352,7 +402,7 @@ def test_precision_is_logged( Requirement : EX_REF_DICH_01 """ with caplog.at_level(logging.INFO): - dichotomy_instance.refinement_method(cost_volumes, disp_map, img_left=mocker.ANY, img_right=mocker.ANY) + dichotomy_instance.refinement_method(cost_volumes, disp_map, left_img, img_right=mocker.ANY) assert ("root", logging.INFO, f"Dichotomy precision reached: {precision}") in caplog.record_tuples @pytest.mark.parametrize( @@ -363,7 +413,7 @@ def test_precision_is_logged( ], ) def test_which_cost_selection_method_is_used( - self, dichotomy_instance, cost_volumes, disp_map, type_measure, expected, mocker: MockerFixture + self, dichotomy_instance, cost_volumes, disp_map, left_img, type_measure, expected, mocker: MockerFixture ): """Test cost_volume's type_measure attrs determines which cost_selection_method is used.""" cost_volumes.attrs["type_measure"] = type_measure @@ -373,7 +423,7 @@ def test_which_cost_selection_method_is_used( return_value=(refinement.dichotomy.Point(0, 0), 0, 0, 0), ) - dichotomy_instance.refinement_method(cost_volumes, disp_map, img_left=mocker.ANY, img_right=mocker.ANY) + dichotomy_instance.refinement_method(cost_volumes, disp_map, left_img, img_right=mocker.ANY) mocked_search_new_best_point.assert_called_with( cost_surface=mocker.ANY, @@ -385,13 +435,13 @@ def test_which_cost_selection_method_is_used( cost_selection_method=expected, ) - def test_result_of_one_iteration(self, dichotomy_instance, cost_volumes, disp_map, mocker: MockerFixture): + def test_result_of_one_iteration(self, dichotomy_instance, cost_volumes, disp_map, left_img, mocker: MockerFixture): """Test result of refinement method is as expected.""" copy_disp_map = copy.deepcopy(disp_map) result_disp_col, result_disp_row, _ = dichotomy_instance.refinement_method( - cost_volumes, copy_disp_map, img_left=mocker.ANY, img_right=mocker.ANY + cost_volumes, copy_disp_map, left_img, img_right=mocker.ANY ) assert result_disp_col[0, 2] == disp_map["col_map"][0, 2] + 0.5 @@ -400,13 +450,15 @@ def test_result_of_one_iteration(self, dichotomy_instance, cost_volumes, disp_ma assert result_disp_col[1, 0] == disp_map["col_map"][1, 0] - 0.5 @pytest.mark.parametrize("iterations", [2]) - def test_result_of_two_iterations(self, dichotomy_instance, cost_volumes, disp_map, mocker: MockerFixture): + def test_result_of_two_iterations( + self, dichotomy_instance, cost_volumes, left_img, disp_map, mocker: MockerFixture + ): """Test result of refinement method is as expected.""" copy_disp_map = copy.deepcopy(disp_map) result_disp_col, result_disp_row, _ = dichotomy_instance.refinement_method( - cost_volumes, copy_disp_map, img_left=mocker.ANY, img_right=mocker.ANY + cost_volumes, copy_disp_map, left_img, img_right=mocker.ANY ) # Different results from the spline filter @@ -415,7 +467,7 @@ def test_result_of_two_iterations(self, dichotomy_instance, cost_volumes, disp_m assert result_disp_row[1, 0] == disp_map["row_map"][1, 0] assert result_disp_col[1, 0] == disp_map["col_map"][1, 0] - 0.25 - def test_with_nans_in_disp_map(self, dichotomy_instance, cost_volumes, disp_map, mocker: MockerFixture): + def test_with_nans_in_disp_map(self, dichotomy_instance, cost_volumes, disp_map, left_img, mocker: MockerFixture): """Test that even with NaNs in disparity maps we can extract values from cost_volumes.""" # Convert disp_map to float so that it can store NaNs: disp_map = disp_map.astype(np.float32) @@ -425,7 +477,7 @@ def test_with_nans_in_disp_map(self, dichotomy_instance, cost_volumes, disp_map, copy_disp_map = copy.deepcopy(disp_map) result_disp_col, result_disp_row, _ = dichotomy_instance.refinement_method( - cost_volumes, copy_disp_map, img_left=mocker.ANY, img_right=mocker.ANY + cost_volumes, copy_disp_map, left_img, img_right=mocker.ANY ) assert result_disp_row[0, 2] == disp_map["row_map"][0, 2] - 0.5 @@ -435,7 +487,7 @@ def test_with_nans_in_disp_map(self, dichotomy_instance, cost_volumes, disp_map, @pytest.mark.parametrize("invalid_disparity", [-9999]) def test_with_invalid_values_in_disp_map( - self, dichotomy_instance, cost_volumes, disp_map, invalid_disparity, mocker: MockerFixture + self, dichotomy_instance, cost_volumes, disp_map, left_img, invalid_disparity, mocker: MockerFixture ): """Test that even with invalid values in disparity maps we can extract other values from cost_volumes.""" # use indexes for row and col to be independent of coordinates which depend on ROI themselves, @@ -447,7 +499,7 @@ def test_with_invalid_values_in_disp_map( result_disp_col, result_disp_row, _ = dichotomy_instance.refinement_method( cost_volumes, copy_disp_map, - img_left=mocker.ANY, + left_img, img_right=mocker.ANY, ) @@ -463,6 +515,7 @@ def test_disparity_map_is_within_range( # pylint: disable=too-many-arguments dichotomy_instance, cost_volumes, disp_map, + left_img, min_disparity_row, min_disparity_col, max_disparity_row, @@ -479,7 +532,7 @@ def test_disparity_map_is_within_range( # pylint: disable=too-many-arguments result_disp_col, result_disp_row, _ = dichotomy_instance.refinement_method( cost_volumes, disp_map, - img_left=mocker.ANY, + left_img, img_right=mocker.ANY, ) @@ -497,8 +550,16 @@ def test_disparity_map_is_within_range( # pylint: disable=too-many-arguments pytest.param(8, 3, 3), ], ) - def test_skip_iterations_with_subpixel( - self, dichotomy_instance, cost_volumes, disp_map, subpixel, nb_of_skipped, caplog, mocker: MockerFixture + def test_skip_iterations_with_subpixel( # pylint: disable=too-many-arguments + self, + dichotomy_instance, + cost_volumes, + disp_map, + left_img, + subpixel, + nb_of_skipped, + caplog, + mocker: MockerFixture, ): """First iterations must be skipped since precision is already reached by subpixel.""" result_disp_map = copy.deepcopy(disp_map) @@ -506,7 +567,7 @@ def test_skip_iterations_with_subpixel( result_disp_col, result_disp_row, _ = dichotomy_instance.refinement_method( cost_volumes, result_disp_map, - img_left=mocker.ANY, + img_left=left_img, img_right=mocker.ANY, ) From ebe29d18a27861a6336bcfc999cc9909e4862e3a Mon Sep 17 00:00:00 2001 From: duzelis Date: Thu, 1 Aug 2024 17:22:51 +0200 Subject: [PATCH 064/121] test: add TestExtremaOnEdges class --- .../test_refinement/test_dichotomy.py | 203 ++++++++++++++++++ 1 file changed, 203 insertions(+) diff --git a/tests/unit_tests/test_refinement/test_dichotomy.py b/tests/unit_tests/test_refinement/test_dichotomy.py index b0e3827..86db96f 100644 --- a/tests/unit_tests/test_refinement/test_dichotomy.py +++ b/tests/unit_tests/test_refinement/test_dichotomy.py @@ -884,3 +884,206 @@ def test_search_new_best_point(cost_surface, precision, initial_disparity, initi ) assert result == expected + + +class TestExtremaOnEdges: + """ + Test that points for which best cost value is on the edge of disparity range + are not processed by dichotomy loop. + """ + + @pytest.fixture() + def left_img_non_uniform_grid(self, left_img): + """ + Creates a left image dataset with non uniform disparity grids + """ + + # We set the minimum rows disparity at 4 for the point [0,1] + left_img["row_disparity"][0, 0, 1] = 4 + # We set the maximum columns disparity at 0 for the point [1,0] + left_img["col_disparity"][1, 1, 0] = 0 + + return left_img + + @pytest.fixture() + def cost_volumes(self, zeros_cost_volumes, min_disparity_row, max_disparity_col): + """Build cost volumes.""" + # use indexes for row and col to be independent of coordinates which depend on ROI themselves, + # but use coordinates for disp_row and disp_col + + # For point [0,2], the best cost value is set for minimal row disparity + # corresponding cost surface is: + + # [ 0., 0., 0., 0., 0., 0.] + # [ 0., 0., 0., 0., 0., 0.] + # [ 10., 8., 0., 0., 0., 0.] + # [ 8., 9., 0., 0., 0., 0.] + # [ 0., 0., 0., 0., 0., 0.] + # [ 0., 0., 0., 0., 0., 0.] + + zeros_cost_volumes["cost_volumes"].isel(row=0, col=2).loc[ + {"disp_col": [0, 1], "disp_row": min_disparity_row + 1} + ] = [8, 9] + zeros_cost_volumes["cost_volumes"].isel(row=0, col=2).loc[ + {"disp_col": [0, 1], "disp_row": min_disparity_row} + ] = [10, 8] + + # For point [0,1], the best cost value is set for row disparity greater than the minimal one + # corresponding cost surface is: + + # [ 0., 0., 0., 0., 0., 0.] + # [ 0., 0., 0., 0., 0., 0.] + # [ 0., 8., 10., 0., 0., 0.] + # [ 0., 9., 8., 0., 0., 0.] + # [ 0., 0., 0., 0., 0., 0.] + # [ 0., 0., 0., 0., 0., 0.] + + zeros_cost_volumes["cost_volumes"].isel(row=0, col=1).loc[{"disp_col": [0, 1], "disp_row": 3}] = [8, 9] + zeros_cost_volumes["cost_volumes"].isel(row=0, col=1).loc[{"disp_col": [0, 1], "disp_row": 4}] = [10, 8] + + # For point [0,0], the best cost value is set for maximal col disparity + # corresponding cost surface is: + + # [0. , 0. , 0. , 0. , 0. , 0. ] + # [0. , 0. , 0. , 0. , 0. , 0. ] + # [0. , 0. , 0. , 0. , 0. , 0. ] + # [0. , 0. , 4.9 , 0. , 0. , 0. ] + # [0. , 0. , 4.99, 0. , 0. , 0. ] + # [0. , 0. , 5. , 0. , 0. , 0. ] + + zeros_cost_volumes["cost_volumes"].isel(row=0, col=0).loc[ + {"disp_col": [max_disparity_col - 2, max_disparity_col - 1, max_disparity_col], "disp_row": 4} + ] = [ + 4.9, + 4.99, + 5, + ] + + # For point [1,0], the best cost value is set for col disparity lower than the maximal one + # corresponding cost surface is: + + # [0. , 0. , 4.9 , 0. , 0. , 0. ] + # [0. , 0. , 4.99, 0. , 0. , 0. ] + # [0. , 0. , 5. , 0. , 0. , 0. ] + # [0. , 0. , 0. , 0. , 0. , 0. ] + # [0. , 0. , 0. , 0. , 0. , 0. ] + # [0. , 0. , 0. , 0. , 0. , 0. ] + + zeros_cost_volumes["cost_volumes"].isel(row=1, col=0).loc[{"disp_col": [-2, -1, 0], "disp_row": 4}] = [ + 4.9, + 4.99, + 5, + ] + + return zeros_cost_volumes + + @pytest.fixture() + def dataset_disp_maps(self, invalid_disparity, rows, cols, min_disparity_row, max_disparity_col, min_disparity_col): + """Fake disparity maps containing extrema on edges of disparity range.""" + + row = np.full((rows.size, cols.size), 4.0) + row[:, 2] = min_disparity_row + row[1, 1] = min_disparity_row + + # row map is equal to: + # [4., 4., 2.] + # [4., 2., 2.] + + col = np.full((rows.size, cols.size), 0.0) + col[0, 0] = max_disparity_col + col[1, -2:] = min_disparity_col + + # col map is equal to: + # [3., 0., 0.] + # [0., -2., -2.] + + return xr.Dataset( + { + "row_map": (["row", "col"], row.reshape((rows.size, cols.size))), + "col_map": (["row", "col"], col.reshape((rows.size, cols.size))), + }, + coords={ + "row": rows, + "col": cols, + }, + attrs={"invalid_disp": invalid_disparity}, + ) + + def test_uniform_disparity_grid( + self, cost_volumes, dataset_disp_maps, left_img, dichotomy_instance, mocker: MockerFixture + ): + """ + Test that points for which best cost value is on the edge of disparity range + are not processed by dichotomy loop using uniform disparity grids + """ + + copy_disp_map = copy.deepcopy(dataset_disp_maps) + + result_disp_col, result_disp_row, _ = dichotomy_instance.refinement_method( + cost_volumes, copy_disp_map, left_img, img_right=mocker.ANY + ) + + # result_disp_row is equal to: + # [4. 3.75 2. ] + # [4. 2. 2. ] + + # result_disp_col is equal to: + # [3. 0.25 0. ] + # [-0.25. -2. -2. ] + + # Extrema on the edge of row disparity range for point [0,2] --> unchanged row map value after dichotomy loop + assert result_disp_row[0, 2] == dataset_disp_maps["row_map"][0, 2] + # Extrema not on the edge for point [0,1] --> changed row map value after dichotomy loop + assert result_disp_row[0, 1] == dataset_disp_maps["row_map"][0, 1] - 0.25 + + # Extrema on the edge of col disparity range for point [0,0] --> unchanged col map value after dichotomy loop + assert result_disp_col[0, 0] == dataset_disp_maps["col_map"][0, 0] + # Extrema not on the edge for point [1,0] --> changed col map value after dichotomy loop + assert result_disp_col[1, 0] == dataset_disp_maps["col_map"][1, 0] - 0.25 + + def test_non_uniform_disparity_grid( + self, + cost_volumes, + dataset_disp_maps, + left_img_non_uniform_grid, + dichotomy_instance, + max_disparity_row, + min_disparity_col, + mocker: MockerFixture, + ): + """ + Test that points for which best cost value is on the edge of disparity range + are not processed by dichotomy loop using non uniform disparity grids + """ + + copy_disp_map = copy.deepcopy(dataset_disp_maps) + + result_disp_col, result_disp_row, _ = dichotomy_instance.refinement_method( + cost_volumes, copy_disp_map, left_img_non_uniform_grid, img_right=mocker.ANY + ) + + # result_disp_row is equal to: + # [4. 4. 2. ] + # [4. 2. 2. ] + + # result_disp_col is equal to: + # [3. 0. 0. ] + # [0. -2. -2. ] + + # Extrema on the edge of row disparity range for point [0,2] --> unchanged row map value after dichotomy loop + assert result_disp_row[0, 2] == dataset_disp_maps["row_map"][0, 2] + # Extrema on the edge of row disparity range for point [0,1] --> unchanged row map value after dichotomy loop + assert result_disp_row[0, 1] == dataset_disp_maps["row_map"][0, 1] + + # For point [0,1] row disparity range is not [min_disparity_row, max_disparity_row] but [4, max_disparity_row], + # we check that resulting disparity row is in this range. + assert result_disp_row[0, 1] in range(4, max_disparity_row + 1) + + # Extrema on the edge of col disparity range for point [0,0] --> unchanged col map value after dichotomy loop + assert result_disp_col[0, 0] == dataset_disp_maps["col_map"][0, 0] + # Extrema on the edge of col disparity range for point [1,0] --> unchanged col map value after dichotomy loop + assert result_disp_col[1, 0] == dataset_disp_maps["col_map"][1, 0] + + # For point [1,0] col disparity range is not [min_disparity_col, max_disparity_col] but [min_disparity_col, 0], + # we check that resulting disparity row is in this range. + assert result_disp_col[1, 0] in range(min_disparity_col, 0 + 1) From f5a3b709502af63add3d677e091356ac0488b7e8 Mon Sep 17 00:00:00 2001 From: duzelis Date: Fri, 2 Aug 2024 15:52:20 +0200 Subject: [PATCH 065/121] test: add functional test to check extrema on edges with variable initiale disparity --- .../dichotomy/test_dichotomy_pipeline.py | 133 +++++++++++++++--- 1 file changed, 112 insertions(+), 21 deletions(-) diff --git a/tests/functional_tests/refinement/dichotomy/test_dichotomy_pipeline.py b/tests/functional_tests/refinement/dichotomy/test_dichotomy_pipeline.py index 248eaa6..e4ddea4 100644 --- a/tests/functional_tests/refinement/dichotomy/test_dichotomy_pipeline.py +++ b/tests/functional_tests/refinement/dichotomy/test_dichotomy_pipeline.py @@ -18,28 +18,29 @@ """ Test the refinement.dichotomy pipeline. """ - +import copy import pytest import numpy as np + import pandora2d +from pandora2d.state_machine import Pandora2DMachine +from pandora2d.check_configuration import check_conf +from pandora2d.img_tools import create_datasets_from_inputs, get_roi_processing +# Make pylint happy with fixtures: +# pylint: disable=redefined-outer-name -@pytest.mark.parametrize("method", ["bicubic", "sinc"]) -@pytest.mark.parametrize("subpix", [1, 2, 4]) -@pytest.mark.parametrize("iterations", [1, 2]) -def test_dichotomy_execution(left_img_path, right_img_path, method, subpix, iterations): + +@pytest.fixture() +def make_cfg_for_dichotomy( + left_img_path, right_img_path, method, subpix, iterations, roi, col_disparity, row_disparity +): """ - Description : Test that execution of Pandora2d with a dichotomy refinement does not fail. - Data : - * Left_img : cones/monoband/left.png - * Right_img : cones/monoband/right.png - Requirement : - * EX_REF_BCO_00 - * EX_REF_SINC_00 + Creates user configuration to test dichotomy loop """ - pandora2d_machine = pandora2d.state_machine.Pandora2DMachine() + user_cfg = { "input": { "left": { @@ -50,10 +51,10 @@ def test_dichotomy_execution(left_img_path, right_img_path, method, subpix, iter "img": str(right_img_path), "nodata": "NaN", }, - "col_disparity": {"init": 0, "range": 3}, - "row_disparity": {"init": 0, "range": 3}, + "col_disparity": col_disparity, + "row_disparity": row_disparity, }, - "ROI": {"col": {"first": 100, "last": 120}, "row": {"first": 100, "last": 120}}, + "ROI": roi, "pipeline": { "matching_cost": { "matching_cost_method": "zncc", @@ -71,14 +72,34 @@ def test_dichotomy_execution(left_img_path, right_img_path, method, subpix, iter }, }, } - cfg = pandora2d.check_configuration.check_conf(user_cfg, pandora2d_machine) + + return user_cfg + + +@pytest.mark.parametrize("method", ["bicubic", "sinc"]) +@pytest.mark.parametrize("subpix", [1, 2, 4]) +@pytest.mark.parametrize("iterations", [1, 2]) +@pytest.mark.parametrize("roi", [{"col": {"first": 100, "last": 120}, "row": {"first": 100, "last": 120}}]) +@pytest.mark.parametrize("col_disparity", [{"init": 0, "range": 1}]) +@pytest.mark.parametrize("row_disparity", [{"init": 0, "range": 3}]) +def test_dichotomy_execution(make_cfg_for_dichotomy): + """ + Description : Test that execution of Pandora2d with a dichotomy refinement does not fail. + Data : + * Left_img : cones/monoband/left.png + * Right_img : cones/monoband/right.png + Requirement : + * EX_REF_BCO_00 + * EX_REF_SINC_00 + """ + pandora2d_machine = Pandora2DMachine() + + cfg = check_conf(make_cfg_for_dichotomy, pandora2d_machine) cfg["ROI"]["margins"] = pandora2d_machine.margins.global_margins.astuple() - roi = pandora2d.img_tools.get_roi_processing( - cfg["ROI"], cfg["input"]["col_disparity"], cfg["input"]["row_disparity"] - ) + roi = get_roi_processing(cfg["ROI"], cfg["input"]["col_disparity"], cfg["input"]["row_disparity"]) - image_datasets = pandora2d.img_tools.create_datasets_from_inputs(input_config=cfg["input"], roi=roi) + image_datasets = create_datasets_from_inputs(input_config=cfg["input"], roi=roi) dataset_disp_maps, _ = pandora2d.run(pandora2d_machine, image_datasets.left, image_datasets.right, cfg) @@ -86,3 +107,73 @@ def test_dichotomy_execution(left_img_path, right_img_path, method, subpix, iter with np.testing.assert_raises(AssertionError): assert np.all(np.isnan(dataset_disp_maps.row_map.data)) assert np.all(np.isnan(dataset_disp_maps.col_map.data)) + + +@pytest.mark.parametrize("method", ["bicubic"]) +@pytest.mark.parametrize("subpix", [1]) +@pytest.mark.parametrize("iterations", [1, 2]) +# This ROI has been chosen because its corresponding disparity maps +# contain extrema disparity range values and subpixel values after refinement. +@pytest.mark.parametrize("roi", [{"col": {"first": 30, "last": 40}, "row": {"first": 160, "last": 170}}]) +# We use small disparity intervals to obtain extrema of disparity ranges in the disparity maps. +# Once the variable disparity grids have been introduced into pandora2d, +# this type of disparity will also need to be tested here. +@pytest.mark.parametrize("col_disparity", [{"init": -1, "range": 1}]) +@pytest.mark.parametrize("row_disparity", [{"init": 0, "range": 1}]) +def test_extrema_disparities_not_processed(make_cfg_for_dichotomy): + """ + Description : Test that execution of Pandora2d with a dichotomy refinement does not + take into account points for which best cost value is found at the edge of the disparity range. + Data : + * Left_img : cones/monoband/left.png + * Right_img : cones/monoband/right.png + """ + pandora2d_machine = pandora2d.state_machine.Pandora2DMachine() + + cfg = check_conf(make_cfg_for_dichotomy, pandora2d_machine) + + cfg["ROI"]["margins"] = pandora2d_machine.margins.global_margins.astuple() + roi = get_roi_processing(cfg["ROI"], cfg["input"]["col_disparity"], cfg["input"]["row_disparity"]) + + image_datasets = create_datasets_from_inputs(input_config=cfg["input"], roi=roi) + + pandora2d_machine = Pandora2DMachine() + + # Prepare Pandora2D machine + pandora2d_machine.run_prepare(image_datasets.left, image_datasets.right, cfg) + # Run matching cost step + pandora2d_machine.run("matching_cost", cfg) + # Run disparity step + pandora2d_machine.run("disparity", cfg) + # Make a copy of disparity maps before refinement step + copy_disp_maps = copy.deepcopy(pandora2d_machine.dataset_disp_maps) + # Run refinement step + pandora2d_machine.run("refinement", cfg) + + # Get points for which best cost value is at the edge of the row disparity range + mask_min_row = np.nonzero(copy_disp_maps["row_map"].data == image_datasets.left.row_disparity[0, :, :]) + mask_max_row = np.nonzero(copy_disp_maps["row_map"].data == image_datasets.left.row_disparity[1, :, :]) + + # Get points for which best cost value is at the edge of the column disparity range + mask_min_col = np.nonzero(copy_disp_maps["col_map"].data == image_datasets.left.col_disparity[0, :, :]) + mask_max_col = np.nonzero(copy_disp_maps["col_map"].data == image_datasets.left.col_disparity[1, :, :]) + + # Checking that best row disparity is unchanged for points having best cost value at the edge of row disparity range + assert np.all( + pandora2d_machine.dataset_disp_maps["row_map"].data[mask_min_row[0], mask_min_row[1]] + == image_datasets.left.row_disparity.data[0, mask_min_row[0], mask_min_row[1]] + ) + assert np.all( + pandora2d_machine.dataset_disp_maps["row_map"].data[mask_max_row[0], mask_max_row[1]] + == image_datasets.left.row_disparity.data[1, mask_max_row[0], mask_max_row[1]] + ) + + # Checking that best col disparity is unchanged for points having best cost value at the edge of col disparity range + assert np.all( + pandora2d_machine.dataset_disp_maps["col_map"].data[mask_min_col[0], mask_min_col[1]] + == image_datasets.left.col_disparity.data[0, mask_min_col[0], mask_min_col[1]] + ) + assert np.all( + pandora2d_machine.dataset_disp_maps["col_map"].data[mask_max_col[0], mask_max_col[1]] + == image_datasets.left.col_disparity.data[1, mask_max_col[0], mask_max_col[1]] + ) From 4b5dae0f0cfcdf8e22dee45f473c2bd14216f57f Mon Sep 17 00:00:00 2001 From: duzelis Date: Mon, 5 Aug 2024 10:34:26 +0200 Subject: [PATCH 066/121] test: fix disparity source attributes --- .../matching_cost/test_disparity_margins.py | 18 ++++++++---------- .../matching_cost/test_subpix.py | 18 +++++++++--------- .../test_refinement/test_optical_flow.py | 6 +++--- 3 files changed, 20 insertions(+), 22 deletions(-) diff --git a/tests/functional_tests/matching_cost/test_disparity_margins.py b/tests/functional_tests/matching_cost/test_disparity_margins.py index b935f65..880947f 100644 --- a/tests/functional_tests/matching_cost/test_disparity_margins.py +++ b/tests/functional_tests/matching_cost/test_disparity_margins.py @@ -50,14 +50,14 @@ def create_datasets(self): add_disparity_grid(left, {"init": 2, "range": 1}, {"init": 0, "range": 2}) - left.attrs = { - "no_data_img": -9999, - "valid_pixels": 0, - "no_data_mask": 1, - "crs": None, - "col_disparity_source": {"init": 2, "range": 1}, - "row_disparity_source": {"init": 0, "range": 2}, - } + left.attrs.update( + { + "no_data_img": -9999, + "valid_pixels": 0, + "no_data_mask": 1, + "crs": None, + } + ) data = np.full((10, 10), 1) right = xr.Dataset( @@ -70,8 +70,6 @@ def create_datasets(self): "valid_pixels": 0, "no_data_mask": 1, "crs": None, - "col_disparity_source": {"init": 2, "range": 1}, - "row_disparity_source": {"init": 0, "range": 2}, } return left, right diff --git a/tests/functional_tests/matching_cost/test_subpix.py b/tests/functional_tests/matching_cost/test_subpix.py index d45c24b..a571918 100644 --- a/tests/functional_tests/matching_cost/test_subpix.py +++ b/tests/functional_tests/matching_cost/test_subpix.py @@ -48,15 +48,15 @@ def create_datasets(self, data_left, data_right): add_disparity_grid(left, {"init": 1, "range": 2}, {"init": 1, "range": 2}) - left.attrs = { - "no_data_img": -9999, - "valid_pixels": 0, - "no_data_mask": 1, - "crs": None, - "col_disparity_source": {"init": 1, "range": 2}, - "row_disparity_source": {"init": 1, "range": 2}, - "transform": None, - } + left.attrs.update( + { + "no_data_img": -9999, + "valid_pixels": 0, + "no_data_mask": 1, + "crs": None, + "transform": None, + } + ) right = xr.Dataset( {"im": (["row", "col"], data_right)}, diff --git a/tests/unit_tests/test_refinement/test_optical_flow.py b/tests/unit_tests/test_refinement/test_optical_flow.py index fad1813..940f9b5 100644 --- a/tests/unit_tests/test_refinement/test_optical_flow.py +++ b/tests/unit_tests/test_refinement/test_optical_flow.py @@ -21,7 +21,7 @@ Test refinement step """ -# pylint: disable=redefined-outer-name, protected-access +# pylint: disable=redefined-outer-name, protected-access, unused-argument # mypy: disable-error-code=attr-defined import numpy as np @@ -50,8 +50,8 @@ def dataset_image(): "valid_pixels": 0, "no_data_mask": 1, "crs": None, - "col_disparity_source": {"init": 1, "range": 2}, - "row_disparity_source": {"init": 1, "range": 2}, + "col_disparity_source": [-1, 3], + "row_disparity_source": [-1, 3], "invalid_disparity": np.nan, } From 5e40f1342a538766752e12852a6661d7f3446232 Mon Sep 17 00:00:00 2001 From: Marie Leconte Date: Wed, 14 Aug 2024 11:46:42 +0200 Subject: [PATCH 067/121] test: update test to remove skip --- .../test_matching_cost/test_matching_cost_compute.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/unit_tests/test_matching_cost/test_matching_cost_compute.py b/tests/unit_tests/test_matching_cost/test_matching_cost_compute.py index 500f5d8..ad9dfcd 100644 --- a/tests/unit_tests/test_matching_cost/test_matching_cost_compute.py +++ b/tests/unit_tests/test_matching_cost/test_matching_cost_compute.py @@ -712,8 +712,8 @@ def mock_set_out_of_disparity_range_to_nan(self, mock_type, mocker: MockerFixtur """ if mock_type == "not used": return mocker.patch( - "pandora2d.common.set_out_of_row_disparity_range_to_other_value", - side_effect=lambda x, y, z, k: x, + "pandora2d.matching_cost.matching_cost.set_out_of_row_disparity_range_to_other_value", + side_effect=lambda x, y, z, k, p: x, ) if mock_type != "used": raise ValueError(f"Expected mock_type to be 'used' or 'not used', got {mock_type}.") @@ -783,7 +783,6 @@ def test_effect_on_compute_cost_volume(self, disparity_maps, disparity_to_alter, assert np.all(result[:, :col_index] == 0) assert np.all(result[:, col_index + 1 :] == 0) - @pytest.mark.skip(reason="mocker does not work") @pytest.mark.parametrize("mock_type", ["not used"]) def test_when_not_taken_into_account( self, disparity_maps, disparity_to_alter, mock_set_out_of_disparity_range_to_nan @@ -795,6 +794,7 @@ def test_when_not_taken_into_account( result = disparity_maps[disparity_to_alter] assert np.all(result == 0) + assert mock_set_out_of_disparity_range_to_nan.called class TestSubpix: From 24ae1ad62c98041db42239ee666549b4184d78a4 Mon Sep 17 00:00:00 2001 From: Philippe Mallet-Ladeira Date: Mon, 19 Aug 2024 17:10:43 +0200 Subject: [PATCH 068/121] refact(check_conf): remove unnecessary check with interpolation refinement Now that margins are taken into account in the disparity dimension of the cost volume, this check is not relevant anymore. Refs: #169 --- docs/source/userguide/input.rst | 3 - pandora2d/check_configuration.py | 29 ------ tests/unit_tests/test_check_configuration.py | 98 +------------------- 3 files changed, 1 insertion(+), 129 deletions(-) diff --git a/docs/source/userguide/input.rst b/docs/source/userguide/input.rst index 96d3006..57f993b 100644 --- a/docs/source/userguide/input.rst +++ b/docs/source/userguide/input.rst @@ -40,9 +40,6 @@ Input section is composed of the following keys: - - If the estimation step is not present -.. warning:: - If interpolation is used as refinement method, row_disparity and col_disparity ranges must have a size greater than or equal to 2. - Image (left and right) and disparity (col_disparity and row_disparity) properties are composed of the following keys: diff --git a/pandora2d/check_configuration.py b/pandora2d/check_configuration.py index 7570c45..72d2e99 100644 --- a/pandora2d/check_configuration.py +++ b/pandora2d/check_configuration.py @@ -219,14 +219,6 @@ def check_conf(user_cfg: Dict, pandora2d_machine: Pandora2DMachine) -> dict: if "matching_cost" in cfg_pipeline["pipeline"]: check_right_nodata_condition(cfg_input, cfg_pipeline) - # The refinement step with interpolation method is not allowed with disparity ranges of size lower than 5 - if ( - "refinement" in cfg_pipeline["pipeline"] - and cfg_pipeline["pipeline"]["refinement"]["refinement_method"] == "interpolation" - ): - check_disparity_range_size(cfg_input["input"]["col_disparity"], "Column") - check_disparity_range_size(cfg_input["input"]["row_disparity"], "Row") - cfg = concat_conf([cfg_input, cfg_roi, cfg_pipeline]) return cfg @@ -249,27 +241,6 @@ def check_right_nodata_condition(cfg_input: Dict, cfg_pipeline: Dict) -> None: ) -def check_disparity_range_size(disparity: Dict | str, title: str) -> None: - """ - Check that disparity ranges (dmax - dmin) with a size < 5 are not allowed for interpolation refinement method. - - :param disparity: disparity range - :type disparity: Dict | str - :param cfg_pipeline: pipeline section of configuration - :type cfg_pipeline: Dict - """ - - if isinstance(disparity, Dict): - if disparity["range"] < 2: - raise ValueError( - title + " disparity range (dmax - dmin) with a size < 5 are not allowed " - "with interpolation refinement method" - ) - - if isinstance(disparity, str): - raise TypeError("Grid disparities are not yet handled by Pandora2D") - - def check_roi_coherence(roi_cfg: dict) -> None: """ Check that the first ROI coords are lower than the last. diff --git a/tests/unit_tests/test_check_configuration.py b/tests/unit_tests/test_check_configuration.py index d8746d3..e2c5b6f 100644 --- a/tests/unit_tests/test_check_configuration.py +++ b/tests/unit_tests/test_check_configuration.py @@ -26,7 +26,6 @@ import random import string -import re import pytest import transitions import numpy as np @@ -280,7 +279,7 @@ def test_multiband_pipeline(self, pandora2d_machine, left_rgb_path, right_rgb_pa check_configuration.check_conf(cfg, pandora2d_machine) -class TestCheckConf: +class TestCheckConf: # pylint: disable=too-few-public-methods """Test check_conf method.""" def test_passes_with_good_disparity_range_and_interpolation_step( @@ -296,36 +295,6 @@ def test_passes_with_good_disparity_range_and_interpolation_step( user_cfg = {**correct_input_cfg, **correct_pipeline} check_configuration.check_conf(user_cfg, pandora2d_machine) - @pytest.mark.parametrize( - ["col_disparity", "row_disparity"], - [ - pytest.param({"init": 1, "range": 1}, {"init": 1, "range": 2}, id="col_disparity range too small"), - pytest.param({"init": 1, "range": 2}, {"init": 2, "range": 1}, id="row_disparity range too small"), - pytest.param( - {"init": 1, "range": 1}, {"init": 3, "range": 1}, id="col_disparity & row_disparity range too small" - ), - ], - ) - def test_fails_with_wrong_disparity_range_and_interpolation_step( - self, correct_input_cfg, correct_pipeline, pandora2d_machine, col_disparity, row_disparity - ): - """ - Description : Test wrong col_disparity & row_disparity range with interpolation step in user configuration - Data : - - Left image : cones/monoband/left.png - - Right image : cones/monoband/right.png - Requirement : EX_CONF_08 - """ - correct_input_cfg["input"]["col_disparity"] = col_disparity - correct_input_cfg["input"]["row_disparity"] = row_disparity - user_cfg = {**correct_input_cfg, **correct_pipeline} - with pytest.raises(ValueError) as err: - check_configuration.check_conf(user_cfg, pandora2d_machine) - assert ( - " disparity range (dmax - dmin) with a size < 5 are not allowed " - "with interpolation refinement method" in err.value.args[0] - ) - class TestCheckRoiSection: """ @@ -530,71 +499,6 @@ def test_zncc_fails_with(self, pandora2d_machine, configuration): check_configuration.check_conf(configuration, pandora2d_machine) -class TestCheckDisparityRangeSize: - """Test check_disparity_range_size method.""" - - @pytest.mark.parametrize( - ["disparity", "title", "string_match"], - [ - pytest.param( - {"init": 1, "range": 1}, - "Column", - "Column disparity range (dmax - dmin) with a size < 5 are not allowed " - "with interpolation refinement method", - id="Column disparity range < 5", - ), - pytest.param( - {"init": -1, "range": 1}, - "Row", - "Row disparity range (dmax - dmin) with a size < 5 are not allowed " - "with interpolation refinement method", - id="Row disparity range < 5", - ), - ], - ) - def test_fails_with_disparity_ranges_lower_5(self, disparity, title, string_match): - """ - Description : Disparity range size must be greater than or equal to 5 when interpolation - is used as refinement method - Data : - Requirement : EX_CONF_08 - """ - with pytest.raises(ValueError, match=re.escape(string_match)): - check_configuration.check_disparity_range_size(disparity, title) - - @pytest.mark.parametrize( - ["disparity", "title", "string_match"], - [ - pytest.param( - "disparity_grid_test", - "Column", - "Grid disparities are not yet handled by Pandora2D", - id="Grid disparity", - ), - ], - ) - def test_fails_with_grid_disparity(self, disparity, title, string_match): - """ - Description : Disparity grid is not handled yet by Pandora2D - Data : - Requirement : EX_CONF_08 - """ - with pytest.raises(TypeError, match=string_match): - check_configuration.check_disparity_range_size(disparity, title) - - @pytest.mark.parametrize( - ["disparity", "title"], - [ - pytest.param({"init": 1, "range": 2}, "Col", id="Column disparity range greater than or equal to 5"), - pytest.param({"init": 3, "range": 2}, "Row", id="Row disparity range greater than or equal to 5"), - ], - ) - def test_passes_with_disparity_ranges_equal_5(self, disparity, title): - """Disparity range size is correct""" - - check_configuration.check_disparity_range_size(disparity, title) - - class TestDisparityRangeAgainstImageSize: """Test that out of image disparity ranges are not allowed.""" From b949540eb5bea4197993a386eca93a8b075497c9 Mon Sep 17 00:00:00 2001 From: Marie Leconte Date: Wed, 14 Aug 2024 17:29:58 +0200 Subject: [PATCH 069/121] doc: update refinement step configuration documentation --- .../userguide/step_by_step/refinement.rst | 271 ++++++++++++++---- 1 file changed, 211 insertions(+), 60 deletions(-) diff --git a/docs/source/userguide/step_by_step/refinement.rst b/docs/source/userguide/step_by_step/refinement.rst index 761cd48..df4c609 100644 --- a/docs/source/userguide/step_by_step/refinement.rst +++ b/docs/source/userguide/step_by_step/refinement.rst @@ -106,65 +106,216 @@ Available filters are described in :ref:`interpolation_filters`. Configuration and parameters ---------------------------- -.. list-table:: Configuration and parameters - :header-rows: 1 - - * - Name - - Description - - Type - - Default value - - Available value - - Required - * - *refinement_method* - - Refinement method - - string - - - - | "interpolation", - | "dichotomy", - | "optical_flow" - - Yes - * - *iterations* - - Number of iterations (not available for interpolation) - - integer - - 4 for **optical_flow** method - - | **Dichotomy** - | 1 to 9 - | *if above, will be bound to 9* - | **Optical flow** - | >0 - - | **Dichotomy** - | Yes - | **Optical flow** - | No - * - *filter* - - Configuration of the filter used for interpolation - - dict - - keys: "method", "size" - - | {"method": "sinc"}, - | {"method": "bicubic"}, - | **Only available if "dichotomy" method** - - | method: Yes - | size: Optional (only with sinc) - - -**Example** - -.. code:: json - :name: Refinement example - - { - "input" : - { - // input content - }, - "pipeline" : - { - // ... - "refinement": +.. tabs:: + + .. tab:: Interpolation + + Parameters : + + .. list-table:: + :header-rows: 1 + + * - Name + - Description + - Type + - Available value + - Required + * - *refinement_method* + - Refinement method + - string + - "interpolation" + - Yes + + Configuration example with interpolation : + + .. code:: json + + { + "input" : + { + // input content + }, + "pipeline" : + { + // ... + "refinement": + { + "refinement_method": "interpolation" + }, + // ... + } + } + + .. tab:: Optical-flow + + Parameters : + + .. list-table:: + :header-rows: 1 + + * - Name + - Description + - Type + - Default value + - Available value + - Required + * - *refinement_method* + - Refinement method + - string + - + - "optical_flow" + - Yes + * - *iterations* + - Number of iterations + - integer + - 4 + - >0 + - No + + Configuration example with optical_flow : + + .. code:: json + { - "refinement_method": "optical_flow" - }, - // ... - } - } + "input" : + { + // input content + }, + "pipeline" : + { + // ... + "refinement": + { + "refinement_method": "optical_flow", + "iterations" : 7 + }, + // ... + } + } + + .. tab:: Dichotomy + + .. tabs:: + + .. tab:: Bicubic + + Parameters : + + .. list-table:: + :header-rows: 1 + + * - Name + - Description + - Type + - Default value + - Available value + - Required + * - *refinement_method* + - Refinement method + - string + - + - "dichotomy" + - Yes + * - *iterations* + - Number of iterations + - integer + - + - | 1 to 9 + | *if above, will be bound to 9* + - Yes + * - *filter* + - | Configuration of the filter + | used for interpolation + - | dict with key: + | - "method" + - + - {"method": "bicubic"} + - Yes + + Configuration example with dichotomy : + + .. code:: json + + { + "input" : + { + // input content + }, + "pipeline" : + { + // ... + "refinement": + { + "refinement_method": "dichotomy", + "filter": {"method": "bicubic"}, + "iterations" : 7 + }, + // ... + } + } + + .. tab:: Cardinal sine + + Parameters : + + .. list-table:: + :header-rows: 1 + + * - Name + - Description + - Type + - Default value + - Available value + - Required + * - *refinement_method* + - Refinement method + - string + - + - "dichotomy" + - Yes + * - *iterations* + - Number of iterations + - integer + - + - | 1 to 9 + | *if above, will be bound to 9* + - Yes + * - *filter* + - | Configuration of the filter + | used for interpolation + - | dict with keys: + | - "method" + | - "size" + - + - | { + | "method": "sinc", + | "size" : 6 to 21, + | } + - Yes + + Configuration example with dichotomy : + + .. code:: json + + { + "input" : + { + // input content + }, + "pipeline" : + { + // ... + "refinement": + { + "refinement_method": "dichotomy", + "filter": { + "method": "sinc", + "size": 9 + }, + "iterations" : 7 + }, + // ... + } + } + From f99a9ce2b7447876f17137865887d88e3d90083c Mon Sep 17 00:00:00 2001 From: duzelis Date: Thu, 8 Aug 2024 18:04:48 +0200 Subject: [PATCH 070/121] test: add medicis ground truths to test pandora2d dichotomy performance --- .../data_medicis/T19KER/r+0.00c+0.25/left.tif | Bin 0 -> 97050 bytes .../data_medicis/T19KER/r+0.00c+0.25/right.tif | Bin 0 -> 97050 bytes .../gri_zncc_dicho_nappe_bco_col_disp.tif | Bin 0 -> 48588 bytes .../gri_zncc_dicho_nappe_bco_row_disp.tif | Bin 0 -> 48588 bytes .../gri_zncc_dicho_nappe_sinc_col_disp.tif | Bin 0 -> 48588 bytes .../gri_zncc_dicho_nappe_sinc_row_disp.tif | Bin 0 -> 48588 bytes .../data_medicis/T19KER/r+0.00c+0.50/left.tif | Bin 0 -> 97050 bytes .../data_medicis/T19KER/r+0.00c+0.50/right.tif | Bin 0 -> 97050 bytes .../gri_zncc_dicho_nappe_bco_col_disp.tif | Bin 0 -> 48588 bytes .../gri_zncc_dicho_nappe_bco_row_disp.tif | Bin 0 -> 48588 bytes .../gri_zncc_dicho_nappe_sinc_col_disp.tif | Bin 0 -> 48588 bytes .../gri_zncc_dicho_nappe_sinc_row_disp.tif | Bin 0 -> 48588 bytes ...gri_zncc_dicho_nappe_surech_bco_col_disp.tif | Bin 0 -> 48588 bytes ...gri_zncc_dicho_nappe_surech_bco_row_disp.tif | Bin 0 -> 48588 bytes ...ri_zncc_dicho_nappe_surech_sinc_col_disp.tif | Bin 0 -> 48588 bytes ...ri_zncc_dicho_nappe_surech_sinc_row_disp.tif | Bin 0 -> 48588 bytes .../data_medicis/T19KER/r+0.00c-0.25/left.tif | Bin 0 -> 97050 bytes .../data_medicis/T19KER/r+0.00c-0.25/right.tif | Bin 0 -> 97050 bytes ...gri_zncc_dicho_nappe_surech_bco_col_disp.tif | Bin 0 -> 48588 bytes ...gri_zncc_dicho_nappe_surech_bco_row_disp.tif | Bin 0 -> 48588 bytes ...ri_zncc_dicho_nappe_surech_sinc_col_disp.tif | Bin 0 -> 48588 bytes ...ri_zncc_dicho_nappe_surech_sinc_row_disp.tif | Bin 0 -> 48588 bytes .../data_medicis/T19KER/r+0.25c+0.25/left.tif | Bin 0 -> 97050 bytes .../data_medicis/T19KER/r+0.25c+0.25/right.tif | Bin 0 -> 97050 bytes .../gri_zncc_dicho_nappe_bco_col_disp.tif | Bin 0 -> 48588 bytes .../gri_zncc_dicho_nappe_bco_row_disp.tif | Bin 0 -> 48588 bytes .../gri_zncc_dicho_nappe_sinc_col_disp.tif | Bin 0 -> 48588 bytes .../gri_zncc_dicho_nappe_sinc_row_disp.tif | Bin 0 -> 48588 bytes ...gri_zncc_dicho_nappe_surech_bco_col_disp.tif | Bin 0 -> 48588 bytes ...gri_zncc_dicho_nappe_surech_bco_row_disp.tif | Bin 0 -> 48588 bytes ...ri_zncc_dicho_nappe_surech_sinc_col_disp.tif | Bin 0 -> 48588 bytes ...ri_zncc_dicho_nappe_surech_sinc_row_disp.tif | Bin 0 -> 48588 bytes .../data_medicis/T50JML/r+0.00c+0.25/left.tif | Bin 0 -> 97050 bytes .../data_medicis/T50JML/r+0.00c+0.25/right.tif | Bin 0 -> 97050 bytes .../gri_zncc_dicho_nappe_bco_col_disp.tif | Bin 0 -> 48588 bytes .../gri_zncc_dicho_nappe_bco_row_disp.tif | Bin 0 -> 48588 bytes .../gri_zncc_dicho_nappe_sinc_col_disp.tif | Bin 0 -> 48588 bytes .../gri_zncc_dicho_nappe_sinc_row_disp.tif | Bin 0 -> 48588 bytes ...gri_zncc_dicho_nappe_surech_bco_col_disp.tif | Bin 0 -> 48588 bytes ...gri_zncc_dicho_nappe_surech_bco_row_disp.tif | Bin 0 -> 48588 bytes ...ri_zncc_dicho_nappe_surech_sinc_col_disp.tif | Bin 0 -> 48588 bytes ...ri_zncc_dicho_nappe_surech_sinc_row_disp.tif | Bin 0 -> 48588 bytes .../data_medicis/T50JML/r+0.00c+0.50/left.tif | Bin 0 -> 97050 bytes .../data_medicis/T50JML/r+0.00c+0.50/right.tif | Bin 0 -> 97050 bytes .../gri_zncc_dicho_nappe_bco_col_disp.tif | Bin 0 -> 48588 bytes .../gri_zncc_dicho_nappe_bco_row_disp.tif | Bin 0 -> 48588 bytes .../gri_zncc_dicho_nappe_sinc_col_disp.tif | Bin 0 -> 48588 bytes .../gri_zncc_dicho_nappe_sinc_row_disp.tif | Bin 0 -> 48588 bytes ...gri_zncc_dicho_nappe_surech_bco_col_disp.tif | Bin 0 -> 48588 bytes ...gri_zncc_dicho_nappe_surech_bco_row_disp.tif | Bin 0 -> 48588 bytes ...ri_zncc_dicho_nappe_surech_sinc_col_disp.tif | Bin 0 -> 48588 bytes ...ri_zncc_dicho_nappe_surech_sinc_row_disp.tif | Bin 0 -> 48588 bytes .../data_medicis/T50JML/r+0.00c-0.25/left.tif | Bin 0 -> 97050 bytes .../data_medicis/T50JML/r+0.00c-0.25/right.tif | Bin 0 -> 97050 bytes ...gri_zncc_dicho_nappe_surech_bco_col_disp.tif | Bin 0 -> 48588 bytes ...gri_zncc_dicho_nappe_surech_bco_row_disp.tif | Bin 0 -> 48588 bytes ...ri_zncc_dicho_nappe_surech_sinc_col_disp.tif | Bin 0 -> 48588 bytes ...ri_zncc_dicho_nappe_surech_sinc_row_disp.tif | Bin 0 -> 48588 bytes .../data_medicis/T50JML/r+0.25c+0.25/left.tif | Bin 0 -> 97050 bytes .../data_medicis/T50JML/r+0.25c+0.25/right.tif | Bin 0 -> 97050 bytes ...gri_zncc_dicho_nappe_surech_bco_col_disp.tif | Bin 0 -> 48588 bytes ...gri_zncc_dicho_nappe_surech_bco_row_disp.tif | Bin 0 -> 48588 bytes ...ri_zncc_dicho_nappe_surech_sinc_col_disp.tif | Bin 0 -> 48588 bytes ...ri_zncc_dicho_nappe_surech_sinc_row_disp.tif | Bin 0 -> 48588 bytes 64 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.00c+0.25/left.tif create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.00c+0.25/right.tif create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.00c+0.25/zncc_dicho_nappe_bco/gri_zncc_dicho_nappe_bco_col_disp.tif create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.00c+0.25/zncc_dicho_nappe_bco/gri_zncc_dicho_nappe_bco_row_disp.tif create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.00c+0.25/zncc_dicho_nappe_sinc/gri_zncc_dicho_nappe_sinc_col_disp.tif create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.00c+0.25/zncc_dicho_nappe_sinc/gri_zncc_dicho_nappe_sinc_row_disp.tif create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.00c+0.50/left.tif create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.00c+0.50/right.tif create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.00c+0.50/zncc_dicho_nappe_bco/gri_zncc_dicho_nappe_bco_col_disp.tif create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.00c+0.50/zncc_dicho_nappe_bco/gri_zncc_dicho_nappe_bco_row_disp.tif create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.00c+0.50/zncc_dicho_nappe_sinc/gri_zncc_dicho_nappe_sinc_col_disp.tif create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.00c+0.50/zncc_dicho_nappe_sinc/gri_zncc_dicho_nappe_sinc_row_disp.tif create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.00c+0.50/zncc_dicho_nappe_surech_bco/gri_zncc_dicho_nappe_surech_bco_col_disp.tif create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.00c+0.50/zncc_dicho_nappe_surech_bco/gri_zncc_dicho_nappe_surech_bco_row_disp.tif create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.00c+0.50/zncc_dicho_nappe_surech_sinc/gri_zncc_dicho_nappe_surech_sinc_col_disp.tif create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.00c+0.50/zncc_dicho_nappe_surech_sinc/gri_zncc_dicho_nappe_surech_sinc_row_disp.tif create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.00c-0.25/left.tif create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.00c-0.25/right.tif create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.00c-0.25/zncc_dicho_nappe_surech_bco/gri_zncc_dicho_nappe_surech_bco_col_disp.tif create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.00c-0.25/zncc_dicho_nappe_surech_bco/gri_zncc_dicho_nappe_surech_bco_row_disp.tif create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.00c-0.25/zncc_dicho_nappe_surech_sinc/gri_zncc_dicho_nappe_surech_sinc_col_disp.tif create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.00c-0.25/zncc_dicho_nappe_surech_sinc/gri_zncc_dicho_nappe_surech_sinc_row_disp.tif create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.25c+0.25/left.tif create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.25c+0.25/right.tif create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.25c+0.25/zncc_dicho_nappe_bco/gri_zncc_dicho_nappe_bco_col_disp.tif create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.25c+0.25/zncc_dicho_nappe_bco/gri_zncc_dicho_nappe_bco_row_disp.tif create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.25c+0.25/zncc_dicho_nappe_sinc/gri_zncc_dicho_nappe_sinc_col_disp.tif create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.25c+0.25/zncc_dicho_nappe_sinc/gri_zncc_dicho_nappe_sinc_row_disp.tif create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.25c+0.25/zncc_dicho_nappe_surech_bco/gri_zncc_dicho_nappe_surech_bco_col_disp.tif create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.25c+0.25/zncc_dicho_nappe_surech_bco/gri_zncc_dicho_nappe_surech_bco_row_disp.tif create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.25c+0.25/zncc_dicho_nappe_surech_sinc/gri_zncc_dicho_nappe_surech_sinc_col_disp.tif create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.25c+0.25/zncc_dicho_nappe_surech_sinc/gri_zncc_dicho_nappe_surech_sinc_row_disp.tif create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.00c+0.25/left.tif create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.00c+0.25/right.tif create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.00c+0.25/zncc_dicho_nappe_bco/gri_zncc_dicho_nappe_bco_col_disp.tif create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.00c+0.25/zncc_dicho_nappe_bco/gri_zncc_dicho_nappe_bco_row_disp.tif create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.00c+0.25/zncc_dicho_nappe_sinc/gri_zncc_dicho_nappe_sinc_col_disp.tif create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.00c+0.25/zncc_dicho_nappe_sinc/gri_zncc_dicho_nappe_sinc_row_disp.tif create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.00c+0.25/zncc_dicho_nappe_surech_bco/gri_zncc_dicho_nappe_surech_bco_col_disp.tif create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.00c+0.25/zncc_dicho_nappe_surech_bco/gri_zncc_dicho_nappe_surech_bco_row_disp.tif create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.00c+0.25/zncc_dicho_nappe_surech_sinc/gri_zncc_dicho_nappe_surech_sinc_col_disp.tif create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.00c+0.25/zncc_dicho_nappe_surech_sinc/gri_zncc_dicho_nappe_surech_sinc_row_disp.tif create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.00c+0.50/left.tif create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.00c+0.50/right.tif create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.00c+0.50/zncc_dicho_nappe_bco/gri_zncc_dicho_nappe_bco_col_disp.tif create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.00c+0.50/zncc_dicho_nappe_bco/gri_zncc_dicho_nappe_bco_row_disp.tif create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.00c+0.50/zncc_dicho_nappe_sinc/gri_zncc_dicho_nappe_sinc_col_disp.tif create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.00c+0.50/zncc_dicho_nappe_sinc/gri_zncc_dicho_nappe_sinc_row_disp.tif create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.00c+0.50/zncc_dicho_nappe_surech_bco/gri_zncc_dicho_nappe_surech_bco_col_disp.tif create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.00c+0.50/zncc_dicho_nappe_surech_bco/gri_zncc_dicho_nappe_surech_bco_row_disp.tif create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.00c+0.50/zncc_dicho_nappe_surech_sinc/gri_zncc_dicho_nappe_surech_sinc_col_disp.tif create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.00c+0.50/zncc_dicho_nappe_surech_sinc/gri_zncc_dicho_nappe_surech_sinc_row_disp.tif create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.00c-0.25/left.tif create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.00c-0.25/right.tif create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.00c-0.25/zncc_dicho_nappe_surech_bco/gri_zncc_dicho_nappe_surech_bco_col_disp.tif create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.00c-0.25/zncc_dicho_nappe_surech_bco/gri_zncc_dicho_nappe_surech_bco_row_disp.tif create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.00c-0.25/zncc_dicho_nappe_surech_sinc/gri_zncc_dicho_nappe_surech_sinc_col_disp.tif create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.00c-0.25/zncc_dicho_nappe_surech_sinc/gri_zncc_dicho_nappe_surech_sinc_row_disp.tif create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.25c+0.25/left.tif create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.25c+0.25/right.tif create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.25c+0.25/zncc_dicho_nappe_surech_bco/gri_zncc_dicho_nappe_surech_bco_col_disp.tif create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.25c+0.25/zncc_dicho_nappe_surech_bco/gri_zncc_dicho_nappe_surech_bco_row_disp.tif create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.25c+0.25/zncc_dicho_nappe_surech_sinc/gri_zncc_dicho_nappe_surech_sinc_col_disp.tif create mode 100644 tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.25c+0.25/zncc_dicho_nappe_surech_sinc/gri_zncc_dicho_nappe_surech_sinc_row_disp.tif diff --git a/tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.00c+0.25/left.tif b/tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.00c+0.25/left.tif new file mode 100644 index 0000000000000000000000000000000000000000..6eaaf4127a6545bba0e56526b601346b77c730e9 GIT binary patch literal 97050 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 literal 0 HcmV?d00001 diff --git a/tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.00c+0.25/right.tif b/tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.00c+0.25/right.tif new file mode 100644 index 0000000000000000000000000000000000000000..a1d73fe38f088dd226b2219b9e249045f8e24fe0 GIT binary patch literal 97050 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 Y9nb+C&;cFL0Ugi*9nb+Cc)uO^591*spa1{> literal 0 HcmV?d00001 diff --git a/tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.00c+0.25/zncc_dicho_nappe_bco/gri_zncc_dicho_nappe_bco_row_disp.tif b/tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.00c+0.25/zncc_dicho_nappe_bco/gri_zncc_dicho_nappe_bco_row_disp.tif new file mode 100644 index 0000000000000000000000000000000000000000..c37a66af1638cf5c53508fdc5e5802da45f4d518 GIT binary patch literal 48588 zcmeI4OO7Qq5Jg=S0whKt0TTo@W(!Y3J?$}5*a1Q;pe5b{dc+h4EPxg8803;z0=}iZ zk4Ts8OxLG{Q)__*+Wf|E1dH7mOaj01UtY48Q;kzyJ)u01UtY48Q;kzyJ)u01UtY48Q;k zzyJ)u01UtY48Q;kzyJ)u01UtY48Q;kzyJ)u01UtY48Q;kzyJ)u01UtY48Q;kzyJ)u z01Uvuj0~JFDcP0~ryL(OueV?F+Loy%=}+Jb+tl+n@VoyHK&t7J+j{?;98|pK_AD;* zdz8zu^o!US;gHTJ4mR*T=8#N3QJjGnovmnVX5>iGjZSa;5AWm@mJy%$A zcFps1_b$6v-EJVekExD#?+_znJ)yJkulg|9PqmSp7 zLLcRw^UrS{Up=}#T{mg>+)s^#@Q%^X88g<4|I$*gubO+xb6OXd?+AO&sKe-)s~SC3 zo1noalxEg#GqDcVxzRJsSpQCSvsU7wW}46W8Fd&vbG3i9o<3vlocHS4=ox0L@9MVl z->s3Jt*557YS+BA^Vohy9Y)XW-qpPN=)B@MF7uvujlJvaTY1mRkDg)1`ps2Ywb|r6 zI60_z&GqKv64hNArn)>gqYk5IZuU^U_2anL?^xTa3;XC^m8OqHxzRJsSnqbeU{dyd%~*f!RqpHZ4ovU!d-Qu8 z$MV-Xevh+%Cqo}&4__*_HvZjP&Chs$hR+;ya}Rr(x#qE6d*9`ICVSPe;WJElKgGYz zdU;&)u6eB2o?07qw~opwMz;e!So`=`9Y)ucx>>X6(QRKh_0hdNs)6oBuQtvrj;3`Q zzv>ve9oJ3Ty|hU)y~8@*W$kK)Zu`2amn~C|qxI@qb7fxpDQE3!9^LkJQy)i6J&$%| zZCS5zO)uxrZC^KfM2}zq24DaNU;qYS00v+H24DaNU;qYS00v+H24DaNU;qYS00v+H z24DaNU;qYS00v+H24DaNU;qYS00v+H24DaNU;qYS00v+H24DaNU;qYS00v+H24DaN I{yz--3$BP*Z~y=R literal 0 HcmV?d00001 diff --git a/tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.00c+0.25/zncc_dicho_nappe_sinc/gri_zncc_dicho_nappe_sinc_col_disp.tif b/tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.00c+0.25/zncc_dicho_nappe_sinc/gri_zncc_dicho_nappe_sinc_col_disp.tif new file mode 100644 index 0000000000000000000000000000000000000000..fd8e99ee2b456c84f360d782ff749b5f8e32ac81 GIT binary patch literal 48588 zcmeI4L5dVH6o%8bsNhOL-H5vO5bkF!h{z}+A|k`!0S3H)E4RAv0G>cxcqETtKIk7G zp?YSjscu|+N=Pbsl^)*ry;SuG9vwYyH(F~qTU)K$s*g^4Tb1#Z&G=EDUvI|5T`S{T ztE=sLpZnh1oicxSGrryD@AWY;UwXS=VxDfs>pst)KM(%>{kZo+{9nb+C&;cFL0Ugi*9nb+C&;cFL0Ugi*9nb+C&;cFL0Ugi* z9nb+C&;cFL0Ugi*9nb+C&;cFL0Ugi*9nb+C&;cFL0Ugi*9nb+C&;cFL0Ugi*9nb+C z&;cFL0Ugi*9nb+C_`e)D?*C)Xi{4)M_Nq6o>1oW!^>6xd&=)WzKaGtaki-zj&To6kC|V3Tp`h-=2I@osq8dgDI0<^J^S zC8K3>Ku&2FamzW$`y{bpJNB$i)m!4^wjXZEFMaBy*4s92HI{L$x4Ng?4$E!)9#C0~ zj8ku6nVvYgEt3OsN~4Z44wK}YdaK;BUU}8nkz0+I+kUv!9ESx=FM2Pjv5Y+@m*KO` zb8<{ey;W}14cEKYTka22_S*JyI6p5p=W$EEM{Zn)=g0>B<2jjq8^3pRkK7K=jptkbJs|a#+TuDjmAU$S%bMJlYwj7W1 z&c?bHHkai_TfzUwn8EK`fD<-G(htWVXO-1f^VwMHLCVNtJn=LjFpNowdk zZrlsI@q2gOyMDIg-8qxzuu6T6*Tjs^x5|k1-0L~HJBv9US8m~zJ}ijgoUHXW#f`Yi zE&J4d&d+A-b_c>Oea-R6ZR+T5?x3Gdw#?&VJ$!!@< zbC?=y&UHWsbU+7mKnHX{2XsIObU+7mKnHX{2XsIObU+7mKnHX{2XsIObU+7mKnHX{ z2XsIObU+7mKnHX{2XsIObU+7mKnHX{2XsIObU+7mKnHX{2XsIObU+7mKnHX{2XsIO JbYPAHe*xVb4bT7p literal 0 HcmV?d00001 diff --git a/tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.00c+0.25/zncc_dicho_nappe_sinc/gri_zncc_dicho_nappe_sinc_row_disp.tif b/tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.00c+0.25/zncc_dicho_nappe_sinc/gri_zncc_dicho_nappe_sinc_row_disp.tif new file mode 100644 index 0000000000000000000000000000000000000000..a11e969e7fbf8eccda3c46431ed3d027ebb9bb0c GIT binary patch literal 48588 zcmeI4F^&^K5Jk%v0TK~NK!SjnD~v?GF)7>tAr7z-J^&FZ1RQ`9U;-bBBT#>sZ`Zch z_N>(_5xhZvtGc>oMymhXD+Kbz#p`$w5f394%UERgF|{c9ohg5n_2rbS?_S9tE$+ts zto=wmDfOpQ{y6K;GFQ*n)brBwcFLDo*Y)Sc?$4*?@2vcM8S(v1#FzIGmzNPAzD2zI zrQXeF#0+2n24DaNU;qYS00v+H24DaNU;qYS00v+H24DaNU;qYS00v+H24DaNU;qYS z00v+H24DaNU;qYS00v+H24DaNU;qYS00v+H24DaNU;qYS00v+H24DaNU;qYS00v+H z24DaN{x1e%onMeMX_e91WG;E##<_c;ujVPj|33cfdyTf&~>KHjVI<|}=XS6gK&ud48^k8hr-X6;;2>#Dl9$-OG= z)wOfi`TJWRuPXED&gpB&mPvc(t?aqSaqMlLUf)fAzMnc1F;|TT2bX@H8Zy^AEWA43 zt2(>cp2>@P*_%Uk^$w}pmwA0R`T6r0=js`2&L^bLzAE)=t+g*c&2lr=H5#8 z)tc6p>s~A3Tb~(>$79H!GqlQ{R=Q6$#a3f|e8KJqzV-3VXQ7@A=hsGAu%53~_EzCr zAKyj~cE@3tUFXei_ju-e)rD`j^1H!jVf1gBvGcuH-I6!DYE)h|?XR+Cao#$fw>s<2 zx&3m)w~oH)TwHg_!}c1oAn9`ax7z=y{q9r-*NT zeB0zad&>W2qi3$BXS=3|Z+&K<+1^Bv{Z+cRuARHCxT)g*DfD5t&U8k;=fjbE+{=0E zbH?gtRpi_cNptsJ&0RYg^LF*&$%&*2fjzOs#afA@LtagqN$=N8`I{C}Qf^S}G-`1pT+ zrnmn8{q5&uVOheTn~-E-`J~Un^6oebOXU?77WxAgmiv_~EQviVEMW^QET=?RS)BH; zvY6Sjvglr9Wf`N0gse1BKtbGnW_KM8`~?KEB1DUUxAyHH*V-qrvXr}h2YUe=HxOTE zxFa9jL+&L1W66h~mvb)}TI55~Okd~CDkjVnCOqNZ&4jII&0{l!OnlS^9fIjAdN5Lx9>3$%qRUbp0FXqv>QR}n;{u^-h^o%4yC}> zAD<57G?U;^7I%h&FbS?Vv6~Gm5x}qNrGTyt5yrZkQj|2vV7haBlK(0N248S&-s(?> z$|l9z1I{#14bYqYqfdq+wMF7FTM~q>KRXiMNdkGHoF)AWWT5cgyC|}g4DK1Np;ast za4-i|&o^}7AJ{K?po{_@TY^%clnfpcUWW4?Bq*N_uya2`gjbe&b1%3_z~XrB;Pg2n zxF61m*V;k?-8ba#Y2G>DG0ym2szw9>PY?`GCqdLL0Y;r88SfJ&umTLqH@ z=d|)GHLLSrV88S?&KG$w?#k@P3`QX8IQZs4~1NMC~BgY)1!C9lw+YSX(h}$dr z#$p{EYQkUTE1sZ$QGn)}r7|MWm}f)MCx~Fh#d?HGg#-fHHtIE0B7ovbNp%wu{MwzY zf^u zuv5NAZPq*=${&1R^Zp?d1iF7!iAph{s_BOSR}BMnNLCu#8t9O^V)4$Wn+n%SD$aYq z)8Rn;RpF;>44B>#mt5gq4DfDJ*I*9~4m8O23Vt9#W?azm%O}XNbFCTCbQc9EgF<4T zw8)TqV*8&k+;>rK1pmbOEU*f_lj7Au1PAK~dVCofuCKe;;^0dKtI?pXr|`Bopf@xX z_m7+Zc<9#qBw}#_(O7TEYHuT2ppiHW>yW^^J8c2^5+>G*!PQLEjzg zyR{M|a5x}&mHvzf9$#WpMWYGOIr3`Ra3Tl%PF&CUl0^iqJvPk>RRk!%WRk=3GY?eH ze(#zt^E)T!wz!bM;NHq=vLXXA zHNCf<1=z0eQK0t_;M~07RmRlIOMP&<~y59RFQz2 z+|zmZGYO*on#$6iQ$hXW+opr>X~0@hxJH(Z4klv~Usl%9;Om=Bldk$S@M9}Ea$yq< zPTw8dv$LBF8m7<^#)j*ds=(s@nh2E5;@2koiSTLHp^}r0B&f6YRtq%q2mL+GW?~|dMo0Uz#jtnBA$~Q}?xDN%?<@9iWCa9abnA>5$ zIx9H$pdHue=*Yk)5hgs1xbknjgaI5^QPunxWNAGImxDNv^#I&bytXz`nX>3cMwN7y8Df1p8xB|W$?kpd=BO~L}# zC_v{Nr?0(4fkYFQg@4Z2$2$y_y+x@oPQSEhk8@)`rB=RI0q4}D>A@8}5>#`ot)ys? zpfGyi{rEK!2t^z{XVZXn&^MDOK1qVw#He5md_7s?Kk}Dm2x^{w~+BZBnWuNM6` zNzm%wxL3=N1Y<&}yIMVoaGv$V(NUa}^>h8nVKfrVS&UbH4V5%5=0gb_DRyQZ&015gY_to8dEX1TtkMJ9v@ITn!ThNw^{uf)Cv=Z`yC{NWc)67-*wC9tg_gT?-~q(7AuD0m_+eZ-3b+{5pV z6nWy@3{m>GzK8}_!q`{}4B2JH&HsaK3ftb$b-jK+4CXWM2yn;`a%u z^oCM_KYQSrw;mOyGy=5M(y3ta9A0TXrT}RK#~WVv+3>2VN(K#bXY3BfhBH7te!lDU z03AF#pUoBP6mK;qYgx9m(%A&fab5M_eZN5}DSoM#0cbAhAn zOqkT=_x}-%>+^^Av{45Wy!RCR&aush+XEdPmqwYek)U-ashbI(4h33NyX3>_;|A#x zGptKK{ovb=5I1VG9hhmPgYySIpM__1XdRdMc2tB4&vg#JGRUC9_nYe^a1T@nQTxh}gvB!SQSg`@AElYsTQ zYGonflzQPtA87>=@HCOs4<9DNJx8wjMRz(}H?4H{e9Qz}+h1v>)-}^X1~WDjVdkLZ@ZNI-kWN0C7OzEwoBqz)Gl)ZE1U6I<*l`|SX};^{N(T5Y zy`3HLT(G&`-;pRP7;xo}OkbcuM(N)}2{>Q6jQB%KScs5t^`fztBh598UkG!kxiMNq#>X zXz2v(w>F}K!qT-JQ4@4%$?mL(-oXIvY0l)41v;D?`w^P0&49%@x2t^VbYKy9_^$6E z;?}|odGF^C_e=X6-r7Qf_+Mpia;+q&S)#P=%*XYqzNpyno(?(;uU*qgbZFQL8nTz^ zAQ}}b_B;~b$J<^v>3TX;FDJ;E$TC2rjPH~C00YSBcQ~!jFoCsyLq=?A7O&%%}rrCX8BNcJ1$#?%z(KGrg*q8 z9R`%5*J-V#L!6eD;jTp*I0pJguMAQ_#zH38!=45$m*s<6KGC6mJ+sPZbCFguly_zwv;IW|0Ry{7>4kKN?Dg@ye~b!#wuJBFon*Mzkg2j- zN`XF#MEo{oDg<1=aB$l?D$rbH^nSS@-qy4#*=k7wQfac{_;IGY+Mz;7hj^RArL z2KiQXmt=cgBN@7wIV0}|$i|8q+t`hPl^QgF5cfyVIP|3bx0VN zB|%(}c(lWRxK1W^ARAw=xizU^vVsZL98D4Oa0`pnv^W$i^-E)AM4RTpl#rV1@0RheDU%sH0WP>yJ^29 z4N_VZZj5wMVOspk=}=XibI%{rJkC==+1u%;TOkDkql_<0PE%nuG}iFVRyydCqu1+Y z;QPKa-Loi%yymgX0lfq|JUX`f!?TMxAKN-;r7Se?cskF)kA32vKFiJJM`U=!_R9VJ zQ4*w;{9gO?AmZ@%BP?5yKa};A%g(AW0Q^>+)1KmfHVLgz#d$*uAirCPrGwHBp=nF( zmV%ZAZL1hVM(UPCmcEkq)MH4&zmGbdYhbT)c&N z;#Jm?N~<6fj_9WM9dyoz`kHrg&Dr^o8LwD7J&SWHO%=G`G|Ma0luH#eTrePY4hacTvdX)x=VeNrVh$G{l?5-@(#yN0fuH<18 z;wQC65B(>|+f_$J?()*0Q}E|;AH>@VzM?E9gIFJr{fy+N$Y42l#67W|0+D&eGux^u zkkGYOIP^94|K!iktjNFXx~RwgJRw3=ayU4A)AA_ z;M7Ek5WGhOZnNzdh*!uEkQjf;+=~PO?@6maevu$|Phv|T;~rfAO0EfT=mAZs3jt(aGl#6egbi!%~zwdrKq0-2MeV=B!F^Ab398j z5$e+)$G_<&LeI00Dg!e_5HY=FPS}k4P)bOJCf3Iz?$|Ya_bI?{qYOH!6zIQ{c2T(q z@nxSSjb{OI@`okE#X6i{wZ25#c&9Z{7r!FmvZgtA{z($LEYEr;M4vdD%ew(LWln9nm1Z!t2v-S#Xc?n*tN{ zTltlHuugWZnB_BRpe8lh%rS}e`YYnK!DlKY3=MY^aG#WhnRZ9pBQLwW^z}D|4vu0K z-2H!Oz;mRnb3O>KdvyD4_Iw%`D9NZ)ThQQ@4Apr*^0$aOiI6p6G@!B{s^2V!w|dF0 zGPX2``uS@_iAsa{d!N!d#;7pb_t0bs=gs5P?lFfxI*hw}UjCkexBfd$WRj^6k>7au zfE)!BH>4e|T17r)&r(Yp*az33uCil-b@D9Yq}u1Sfpy473U5a4 zL_N`>_#D5X7Xu>OUz64gGvG;9ZkyF49m;CMdCL*Ez0{~16M9Vteetz7{6p#B{h8XO ze~=D&0v?lpkq3LJ*Od#bAm4iEYMlLq4l5cI3zt#`*pzmfDW^J)*a`GQe+8nXwIVu>A7MCcQSS>wvTwwr}`(ud&J8Vqt(Pq2fm6 z1H2AtUqps*JwhjU8{J7mT(EIN%u*l?-bKGiTC*9~>rT*=E$TppF0~xZ*iQ;1BFr}+ z{(D(=s!i$_0RrQT`2w*YbJ;Atj72?!Z6xacz%&sAXY&oUtB6qU6ke%LCW8Hj;)KKN zkv})REoQ}iL~XL@V?})+c<(PxJ|!YZ`l>umGeh2fF#)ox5nsMFcJVrix?pls+%D96 zr9&UAG?-D~r13d*E&R8@^*eWMF5><_|6uvS80w^rkEwbjBIHP(d;J;tk#EeV2iAK? za8tiSL{E(bYXkXtcHumkOB+#oJx>C@o`5J0mrOjXs|`#zlsP$c7s}QCL4W`wwiu`CT=%rO{J~0`(1jBF~K| zz_wDoPYa)~zjk?Bzb6@r>m1mw0SPSB{``@bBSVOe0qY9lPHmlXnJq~q82x1{?DK^P zK^X#_OFg)*g;P$_b*Qu4>ACd85$E3Fy%o6ySjSIv5~}zq&}F)x$KyBRTIQbP!7U6( zQ`y*m_zn}|UnG9i%g23jB>45_X`FK#Y+gF|Bd^ZfARFFH0hxneKA0I&VW38QtuM|u zg*l@A9dQ~gG(~UV^}v0|etISXahy;q(b=Ma4xgxV&et~5L7nb?{O&v454+tmgf!{! z?V;k(Z5hOUoAd0yBkwY;o$XM1K?CiJFWK!zXi!-E+HVH;m*ueHqv~@E5Ij0x{Jw+^ zdyWWZ?zn~ZHE)>KvW5=kZ?^=5d0>CHX`ZD9;yMe5)}D4IK}c*Me=U;)6)_XfmCH%s zr`>Knmr91o+Q{Zn+&`9aZ}|%5aeokDJQN+`S4^yC5)MqeepK7N1+sd}Tg3Q@=J zgx+{{T%Sid-)*E&PvNPb3sJ@Tv*PWI7Z;@iMI@vv(I z<+=}k?zqxlV{M%IaK+#IQxH8LT5~S+_b4*KgyXAAqZ$L09h(YQLl}_wihtW0tn)xW zi_<=73{abj8yUv+$qB!2FeVRcev?L@;D|xW3hqlbmD+$t)b&?oe8OBO3BbcPSYdgQ0E*|= zxcMcZPvABF=v@>6IGILIUOS-Pm)u8;`a^{9{*_U)qyO!**Qed@kU&_?V!1FBaiLPx z#>yoEu+;ijOPLZOiA)i`IV-3qS)4td$_w@(9*e-)6_>nrnhrf`Y#mAMFV|`3Z-B4UYeWYQV`ceib8SJ*TUo#IR!+YE12w z!WGCMT9eV>vk~>UO2WOiKGY2~1i0*RPB@eZoPI^Y_p@yNyAAblckic1-W!s@-6EFp zX*UV1dM(%+-;#mF?ty`&HP&5y=uuI`{Z&a9H=7+GgF~HTs50uDPuAD|)GCphz z;VjlOV^3j&4C3{G#&r}oGRPh7J;Sz*0;8M13ZxO~z;)=rKpW17l*2j?au9zM9cnNf zH(;Pn#qJs{h`d^YcETEQIm?X`r6*DE2@SVxjw4b)JIhsT2A@AD`ncD=lnxHB6Z%M4PW|IE^uIy}%fw-Z5bn>kP2+6qkcafyzLD?kr@>fK$;=?u zkGLYQGogYG39Ew3Ee{xAXL6d=`yJxNSNBO@5EKPfKO^4HW773lHi)+)&7 zKP{1dC}3aW|JYrw+=2Lb!R+Tx>=PpIdq41~F+st>a;Z3m0j&>O$qufFOLM2G&WKBj z>@}Ltqb{V?t0UxtJb+TPu}%Q>VNdh=vE=W_8`v7xhTwc@SRbP1cNKBq!j9`K=+7xs zTA!Xsqr(`*;N_-$H2ARXisP|SI-IXQ{j?10TaEbd`jG@CyiC+NcpG_W^C6#GThg)b z94Z#PX~cx0nu+)h#IHFQgKSTuj?%sCm>Y4N1QHhJ?>4a#L1$}!T&g4T9{)_`KAaB= zE-f9!sHaWKzqWaS^%AA~mpErmfbO;vrv*+BKy241>6aP=D0>o+awUKOA;g!DJ|9Q? zsNFx&)q^~Q(Di<{5`BU5J$eF0sGq#z4_JJP_$tLixrRiB)sa$h?@j;ta+{*Ee&D?7 z-_lrOK?Z5dJuyGi$uRY-F`+k&3?}Lv1^%cP`>H6H?{h*N66LLHioV*P2oY_6HxlR^ zNdKo(MTQmo*fNcyR5*FfIw$@J4IJKmF7HF$aUd*1@L4(XjUD{mojFtxQurs{@{$Ve z%HdRT8!8NXS}b_rx-T61IdLeL1QXkL9gJFwb)z%4--5@el?5#`xJcYcj zOyyo8u3v+~7-t{>{WHEx{<{!gbie7_(TX}M=e77(d(b~Te~g(XFN)V|@v%hBHPlT5 zRqowHUb=Nnrrlk{`zuAkUdK_7Z~#uX$#o3i-e+ZU2J7mi*i5tIMha9kY<}-1M1?W8 zqcWo>n84kUG+Tza($ZY}$y6g19__1bO>oBgv(Wn$OhEo}sEcBT{oMFPW34&%d0Jdv z(n>YzcEnBV_8ZVay70@E3VG^Ie9zAGmM`G^SzbxolZ0l2MxOMlSB{_J_G zCsGglW?X$%Gva)TMUL8^AzZ)t(uZqN_fV5fV|5%uz4mDI1KUv|j1>1%IDSx}p?oMt z3jNxb+9_gfxfGxo?tE>lLjjATs1xq1xX&0mYur*0U+ue<{|o!w{?Aep8ck%VdAU8f zrvk6r=Zf-~S7c~;_H&mD@qsB<{w3^QR`qr_!z0~6vJN6iQ9vCeh1pQj(gKGnq=>JG@iC?u*b&X1^i|80C& zR~0GuWp(!wV8Agu-{DgpoZON)vr!i7hb3rF#&ZHhKHNdP`ULT#tgUYNP1GT3hBt(m z;q&`K<{eB4a6QdAS>^%(#_NY~KN`WGJGazsh5Cfw^LuxuZlSNF`(AC&cLL;G=07aa zPJlZa8d)#D5uqW@Acd8c1ZqP{>~^p4{aiYiqGV5ms>YsyO4O;-(nYrhNuZA3DDzUy z0R1lw8SBBrBsibMir@0u6kN?DZ_l-Q8ig+h7V*An*Kl0Vf9A}JA zV7=;{`?rGyuea#+_FH{am|>x9a}h*+<%Z-^DE5oYp=puKGpK9TZRhDlepS`&$#Ff1 z3htrg)z_P-aQ-&ujKf*%{~cKe`_LEPw)0-+WgRL&?rEj3nH0FQuB^6m2jVOHb(N6^ ziC}qo`-3eksMjzAb4O8EI>jQcd;@)-R_;?1e+IEH=3XBY!ah)6dRXGxAnFnm62~M- z=no6$CFq`DfQ-%PMp@J`A{k~~S5ZG`=qC<0B2Im+PraFBP>8RSDPV{=N;mpxmm==7 z!qVom&K~&u^PIvb%NQ`xQg^v96Y*0BZ%m9Y0~!t}HQjoNdWEpn;pRvhR6O^J(zKue z&&|k6I@YtQ$edHh8PwaH?zP)lVvgVgBSd>65qN~Cxjb7D_k5ePNV`siYIQq*WyIz4 zR)+3I*r!Y$A2JGTrvvMktOK5i!@mA|yX7PHy_W*%YKsdb`1|7G`Zeg2I-J&9WL+Ww zxo2+1{x;?$iqw{$Bky}=^+P&IkqqXSCU3CUqi@`|$yo~P%^>)%Z|p-d4Bn1tn*Q5sOmud zwcw;tZWtZx4w-ztE=Y%%b5+%EZ&G3Y#HX59m#9$0T*x@WK>|DCI%`hUEmY1dem%O7 z2luF9mpDoZP*BD7Ck5-V;FPa+t{wrld`)O~Sx10mPfg<*F9NIt4o$%V0n+ka=bzy` zlM=a=ZHe_Mxy&(7%*NYO2^)8>5MYwDpqJ~8^;C3@qUJ<|r>Qid7jfO)uV2}Me(;LwR!uio0@SoJ`flbE;GHt7Wh?ptey27z@St8rwoh`pmuf;x}V|9S{RWA*A`3&ou%qbwaBv)o$M*^be)H)vIHS6kE z|8}76!k@Lx`w`B4H;&sxR!#goB40SJrr_L}BFAM#p)S6zcvv%!0Ukoyr#yn0z+kO@ zZ$U$z;%he>xSt8fwr$_+gg&rl*c3tf8_u~^&G;hBGu;0o=UGiRpsG-B4=%CrWwXwqNyaf&uXH(u@CjZ%|AB0 z(ZL+b&)}P`=ZK&d&;E+1k_dGb*&9uaQJ<6bZkA^!L8aSPonEZhI@T*M>{Re|Xi*;| zU!bq;u)?zf_&oES-l-3WaM{~<;|pFAl-e-^GO!Lz=d{bug`<>;7m^7xg0YFd&C zul>Du?7W5jI_ph##RLITj=3(s5hsKCnP>iz>iGLacG?O>Qeb{&NNKGJ>e$=)s})g4 zA*Zb5Y6)Y0U_OvgK8bU?d;6gai2JOCG!w&Z(0AIhMxddZ3_|}l$4JUy?qXgfQON~$ z{9PZu`PeZa^uvdxqmh{NNwT=4&O0&O@c576bJ~a;E}jN z12b{$N9A{r&s@_;r6K>AdALpPwhseRpVtg^aWG-vW^ce&d|f!Pd1uQe)EU~77AQE! zJVZa2|KMkUlWw5L`u%h;Q{#C4P@4(a-hX%QN52Zncct{9FL9vR)NB$^57^9VV)UH` zY1@L7x3SS6q59|{bC^oO|jW0?*E39xAYKN6&R{thdhVGG7A_ zkK7&1{SSveNiE#!pjQM8_3FL$sFQTHzly(uJg9v1I_vvy$csiF&rqnCSBi|-B2|I? zAj;V#&K&35mfUCc=+DP#(%tq6(BP-jPs=d$DWxTK_DU-t@5%fUo{oLhq)huH$3D~_ z&2n;_a**eXdRrTxM0{C3!2wU+H5m!YDk-7;$^Ec%uJd>?4cRsgcM93Rs(O zc`Cw3g-qr;-vPv9sibyko&R`TTD0-mtyJJTAbp#G>tey5EatCHfgIMQq_gNVi^SAc zkK?Uq!8xAhf7pNb8D@9yME@h|K+qS=&)6q#XsW^b6Jy((MnxUgij>&Hh54=S{Pcx8 zm`fD>7k@i$5%Y=a>Kjb|(}5oPYUb7>zRq6`x;=n;+>JJ#ov0hA?ugT_A0tElQm#V^ z&QG^98*T4l9$;&H{FDyrBRVnnzXTN_pW-^4N#sWV^K5}dCcc09@FG1jKNa#Kgxk`% z5Px1_J-YTY860!t99r@JyPkzWs~sH;!7}DW_@f|lS6FQ{K?&&PkMtoE-B5t-8b&v;1?Tb8k zyP>JA!;As-m9h&uvG*2+grAa2wQynhS*m6lD#&MAo7{LU56P&8@q$abgo6p7Ae?LDsYdJXn8)a~qeZw7!RMFJR|U+U1eW+eXHUR>Tw_T&hIOsrfA-Jz-z2!z zYH7GF0{c%5p|RZx>-}o{%DXi5nT~uHU+pJ=N#()?ImBU^^Y=DR3?RNXQCa6g&4)$d zn^ja{Dul=lwvzvlV8AH#r5WNf);GcCQjwVVdzJ(mNn}{JhJPnni~{$%jCYTqjw4II z-#*h$1XI1)y%sbgD6kwpV!sA|ueot!og>ckudPzQ$H|c0eCWz+)HepW)~VT{4pCjc z>1&HJ)E^1$Pa;=Sbv)Ejep zSvMj-OXFEnxjhPXH+73WVsiLOr?yK6KS?Acd6mSkDPo{Cwz_X`a z@7YP@3H&)66{3h=#+D5NXjDkE*ADO^;9L+L3{FHH!NF4Re&#gROQ_oX6+gUQiC!99 z*q>Az3jGeWA&(E$xa=lC0ppm1Pp4E+PnFz0as46UM~YFU(^WF`m-r6H+(SR;mytp< z@&%L4tFK$|dG(HL`{UmeLG{N2Sx4+sa%HiviT6pMIIoxfWrzs<)_+AyKVzQc)jocL zGZFaqxP2k}kRhInq1@bpdBc~&4+l~IQ=ub|}0^f5^^ zpm|A@)Wy;usB-?C@J1?#3<%3SR>FL(V^qj1yl$({eSHkkw{ZO9cHU+cZ#RgJZWW|K z?Y}SE&Hbq`8C&5PdW#0(S5LF9uSdV$?Ub(p`qA=J9P5U!(LtGq=HWDDAV^hUKIss4$>u**s=Guk#xjw>to|RT&6X!uHcr4s7okblR zxP-!75-H$RSU)$3^T{vIb8ao>7Vh6=TqP!CIN=Tfx7e8@?)56OqxP#11gd(e*g+tdgN`wz(L&+eC&F+qJ|pPhyt8}jQr zVdXRJ*jJ37QcG=deb3Gpq?e%H__qDSb{?Ed`b(xxzS!5|Il)#div&tPnHrOYh*vIb z-m@bf*NOWOQEiX}OOE%=-Zu~-EXsLkUkU1oBX4)`AWtu^pV4@Y`i83V$`-mK=3_eU zZ%bn#!`{Bu)PtxWneO@Fy}&|&n|IB<3v0+=7X9}M|0T@#UdYJqx=aG?qJXe*YxHZ* zBsUuMAkQy6He2w83^#Q??TN>nLGiZFz3QlIMuw-VAEBVnr`gPFwrLt6j*gay=`Fhz(w~xh%0}1 zUGe@vhoVQ$3q5=B*7lzk2hJyWyY3AGeQ$1uJ=A5yyB2qfx@9o85`WSv`yu|mh10Cb zJXsVtbXVeI(|tN@`WOE1TNe$u-uS)Pg!rDFD=+l~>M2q)$!2!=b62iL9X*9UgO%i! zNhMc0G|4Ot$@kOYrpVIO{a@)YHF4DOP756(Wc-FMAkTn@Awz<=-l2`B3#Lm@?`qhT zB*H<1)u#)+ecY(ijO+`GvL=C+>X(cq zO>2mdk=nR^fr2@ToMGN^?3i%2lJukoE+)#9sE-;|N0k__>WYjxUpQu}@yg+@=WSh3O6b-uD_OCHx`K4R z7xv@a`op^ZGV0jcwb|bv;QQ6Se#JA`4}b3H#5R#3>aS^Z%#e|d`^&-gdkySjl z4eLI&n@3kBg9^dtMx1%xU|z}LS8X!-&x>`msSnuis*ZX63Mi$*2$Mas@*CzXf_FC1 zP?yXqm|(Z@!2dT5s=tW+xc`Oe(j!}3N1JY(7#hwR6 z5VxJxPEZD{tAyb?8!goPOH392>M%ewBf{yw^E;1NsQymB>A++Bcl_ck@*z>#^P9e) zer=Y$(?yQ~k6%xGk0mkS{l9(j->eu=_NGTNi677Rcn!6zNuh$G;I*!Mg7|y5#A4@= zZ&~^ZZz#WxIUCFFeQJmsyWC7Gj~L;;xgEJfb{X?*Mag=H@% z)}>zX;~Q9KxokdMUP-v0n;kl?^OHewEVSDi*F!sfR}7fp`*YZzWMPcCk0(KC!pIM6 zOFjnkoyN~qbth#a2d{@s?2mNhIa8Y4x&p|H`XkO<4eiFhmb}0khWa&6dUmgZ3iiSN zRj(ypB6MatR^37TA1T~eu~!g%6OVD)Iv?~+Tx_G%tx%7Psqeczg?huUA2D30Zw>rY zu{Ov3e_m;w>^MH&@KStfbT97j)U=dqGMFPgs@A`NbyhuZ7JX6z`=Jm)%BKnQ9-AlN z%`Mck$94?0qHn4Ef>%^Yi4NUvei;gwH|S5=yg?GzN#hgSvg>QqmrrhS4s{^HWLk=$ zL=q7^KXf=ZA>Wr`8GJVAf<3w?&-gxloZCImR?*06az5Ap1P!P z%(10tF1!{whI-p3X-)ZuR1mk^B*}t4bV#%Xd-@kDsENt#ZjhzIz3;yztq3$w3|VqD z!@hxhR`_K+4ScuF@T#JJkut-U-h}6pq)j5UwVC*Nr6oT|A zK;0^UR26dzb0aQqO~ zhyKVwoKofluE$j)4bnfv5eIUe%W&?^m#m9h#@t21Ol%8x2My1C<@%q*`4z0V@?pI& z=6-)$ZcWF&%({!VnTHSaBwTgTh8p<#p9Fh^QFk&oygcrRdPCrM>GQd$JAPWcR2&3-k^1G3U5*>L`jW+W^92}IudDSG9JD4qlSt8r}u{O1?$>L+|b-odszHgN%Y zhj~Z%mhm)w1Qo9B=oN{hP`%i6A`A*SZsPP}JBiNzPf! z56*i3G+af$`RU}9-3F+~%jHFx;Nz@j6GKPOA}_dPJAF!#1oXa)DeLW+WAy%zk~B|% z#Z#T^X6MX6|^194t z93oF}Zq8J*x|N_`5OU|Np$GZ}-S5^tU>(hal@h+Ivi*5bzRKV`sEYO3ry`gofa^Kx z#Od-2&tX;Ul>YaE1mfiaEIV3|-@dM$Ho?4eO|^1bF5-cccR7bH?m(QBH;D(5F1`^Y9GzYw0eOSV`zCElb1dMe{{3Jj=e<_LQ^NC&Z+j}9xC&+U_w zs`dGd`Ax^@hqPH-|2r-GO0N-@t{2Jce}ewu@Q~fdUx?#s`CPJoQegVbZE;bY@7e0T z-|u8oAp6zAT7~D>_u~W~*}9-E;CpCyq%ZEXte(S_;w110my{Sree8hAp;7hIWVrjm z?)hQFJ6%Wmyj~rn!~U5YJx*DeW3g5pZa9VczlR*0CL=^}J&|$XDC&P&KC85;&4>M9bJp*{|IS^Fd*2PO#rjZyQd&_e>V`^>(hpZ5{xpB) z>LH7DoOx;CP#XH^0hzLusJB^s>a#UOUhbEQBl7MpyK_p9!0^^;sf26|6kh1oL@!6M{XRo(8>S#dEhO?vwl(YXKAVXX3vMt)MQh)Au2KgE8`_^6?AwJ@`51+jk`wkzwxk=o_~q zm?PMJCjMy#evU^c1uM&laP@|IT-pKTx8o~4wOx65jUw&in6Ox2|14T}EG+&B71+fU4=WFw|jK_8OMT>!L1rIZ$5;-|syoxvX&& zD#&rEa4>OBA7ZZKX8-TpsPdtZ4d@piyelR2cK~yY>iT<4TWFy0lJ#tU2o3UOv_9n? z$NGqs&Uu4CnI9;`2eo zf!fOj8{^Oi>R6=p2?x?)v%URf5B}c1(JPG|ij($MX{8i`T#E?5Zn7-%_KyD+2Q( zYIiC$t~^D&;YN#ELcU}FkMziPE$-)=gCee_i05gK_cWmYd{AN6p$oLKB7M?$f|X;hydzQLT$szI2ZSC|0wg53Xzu{ z@Qe9TATIx#w$v8nc~JR}Jsr=>=-MZ?p1`@7*Aw^b0})EaR`NbaWB-ZsAFFtW`pd=< zISJ&4w666IU(jdM`K(k@9)R_)V>!1hg1O&U%3-gtZUyD_XjhalufMvVYXH|z_bvI| zi(}}YS^heGo(=OlulP4Pad_C7&1H z^q2y{)4+Rp9`%!yHAgtn|LHD#c<<#-IuO`lEl8={RnI zz89q+F7jtL10scZ>Q`>ip)~WP{3*=OPwjYf<2LF90ZiVS$HSPTisgKjvKD>Zu*0+7 zf&cleor25AryR+&OVgMm)d_nd*Zm0fm1dWh$~UlI-3~YAO2qldkc&=iMqb5ByyfXf zMZOhF*kg&j)%J8?HTrVzSj@Au$cSrOu4T00+-13X_)Kj8p3CWzy<{4P^D(6?D7GB) zUnC0=2@S;SXD$$uo?_nDlD<9p1L{rcuX3M1!S@~9Abk>b4#lL}(0SBP=*Olr9dMqS z_-;vDkMp)`X;Oo%gL#XV=~xcrwbO=U6@{%-&=>YrWqXhFzheFQ&sKQbvSMRK$3C9X zX7ObX_3Ju)nbYXoOuvg-mv)T?=fqE}wxSdn7l9_wu;)!(fO>*$n-ON<5y>!_~i z(kIkwt7&0bmo+J{MserMq)j;YE^@pl2IBdSi8aPfLa6JCM;IK&dhCg*+}J9IuRlJx zKg<>N?1yu*GzRi_(?p$9Oq@FtQ#bmNuNf>m&B^$q?p~a~ec>STyWRXEGC%&~?RMPX zaDP`9eDBo3yj5-Q&S1A(<7SH?u&TNiL3L^ zomn!Fj<+9n2_a)&di(ooE#|oXK4STXIjd^c8VMygT+bW9W_%~m?-WR?If(rsbxO8l z*#mFcEe2`0KJ^t&7k;2#8fS9+Q#sc3yudrb*m8$JygMQ~|O|6VQo`3AWu3ePAjfVaT_r=vf z3K+Qjmelp3g55m-OF}fxK}oykZBH1mVE5Fg&yfi%M=XdZ(Kjwso!fN;>uc*9JJ!=T zF<&nndTF>Bc@#zXrx^|BdSzpj;5g_7G!!yn-D zv&a2>nuRFPavBszP$y$Kn3T7O`0QNmRmDq0^l4o;PlwK>g zjQq-(`y0K<_dmy^_gtucpJc8#mAGab6 ztY_vG6Q0mOx7Pgdh!^HUrp;nF&|edyb=I3=U!3k@zQ{y8BJO7%J05`fNm$9r`IGa2nfFt*@YZvg`rs>X+1% zNkU2n*ayNg^#@K15+TuOMa;JWd0uPp=BXY62&MWeGsHUJLJioNf^3PGsZ+uSf_%4b4U}clx9tS?eOZ%Qby^XoN$gigVkD}|2 z$NG(;gpjPtOxYv}sSxr+iiVX!!%Pv0l37`qWy>t_TCY9I%&g2*Qbbpyue&F2NA4n_Jr4rg%lfe)tDmlWIzmQ~>L;P;MeWkD+^DvPr zCqI^Ji_QjI=0cMDs&BJ@~)kxYXfz&G~v7M)Jgp>jaxQpLXU|_J!1v^n5M~;{%3p^k@M2deNds!u(B+Dg5?b(in^^?)7$5LpnT3;480ydLmt9HF6HVJL ztj&X7@!`f}n=MzN+h$0wHOmDrR41PB0KTtQ`|VdY#KJF`6w_pXANv7#RXOAsGssA< zmw}Zs;@OGg*{{S5k}<h|tQS&Tn7y+~Nvw`f&e~6QSuuL@MK_Cj6lLHRX=n!+BKjPB~lVg}Dn# zg>Pe4E?GYMyw~_8{2pRE#s5NQda8bB!Rs!3>Hcia_BfxLZxw&KGzNe1jcwne{ei=@ zxVpC<%qKkIGwkfcm{$zg7axf@%!wv%Lum8JA)x>kZTK{FDI0Yw|6uOJ=?ZT~7UDvr zbXEoRhbYV*IPnKOS8DUa{cE$ycBvMxDx7!LRnHbmO*TpW)79<GZ1{bKTRiqOI15V+P@a zi<+pTe)LjxsEdhQOebQ&Uw@GfUD&OO{Y$CO+5YXV@wh^Nd_Ufw@(&5RPqL|GZ}6?o z-3&QoWASA_?;Sa$_aHO@Pp!92oE$;;N+x#a6Gi}dFBTtZA8 zHOxJrgARzb6_{p`gEVZ{oi2eddoR!X0`m*wBl0!Jp;uguz58bIR~~73y!pi0$H4d3 z_0m#!;4`g?q?LwVR-~XY(kh2Js__GUDoMbHlzp4NUj)y}ZDuA8zfGm)=)`8|v?i;P zMeCva58gTX#-&==j$@6eZwrM>ZG?*?v+rs)73M(u20v{zdDNv#FP4SH zpjSKoY7})t-7JtWybs^<*jqP$*%kP^LKUPYzN0@A;(i$wj=DHr5w35aPA)|=ajc@B zYf)mAm+!zl7m4Kg$H&M25!BKFPnD(G&$AXh(}P~WhXc@c*xnv?vd+c)2%Qu26YwUD z&pb6mX|hNdYhF<(;%%(il+Q^6{DR)5lt<{xIUkIC*NwtF7vJ|kuJCK0p8b#3${h2R zkv~{7<=|@xe7?%Fi9(hXZfOO{fH%E-P{ok~z1}fQe+u=iTyR6MF#5Sc{D2QS1lP>}cZtF+H=>VfZ}VSmoyN7#oG9&)+^xJ|deD#r>sK}4}g z2FFFbex0VrXSn{%P-Aj z9l>6-AVIA;hg`zhIPT($*OSDU#&Q%oA+^?>qlXDRj?(vz0O%OsA71%6sD}PYD_`E7!Zv)p&Y3cK@HpG{?ll?# z@5v}mtLBTpw_Tt9-s1UOGQc^_+U<+^wUbYto`TN9dt=X;VAPSZr_)0FXK=nvm9`wm zUZM$iC&yE$`yQjsrym=k@9o+4=caomd}pUO%)dk*)g$WAJ%jvwVCiS|E##GqumxlI z!HRk)sWo^#uRUefuj~hZB`9Nk=sfnpNCfSE&xP0PUh?(L?b3ELQ@Y@&~%-sDEADxj{K+}@Cui1W{vc#xX+uMU0q z8Zij|Q)!1?wACy4V7ThU-!o;9NjHY76x2cE)Te$2)zCMxb%v%Oj>fXsIv(_)fAh3d zU#f$S{XKXmH})7f^9hY7z;B||msPSC^C7&`bcHhD1INm1C$2${IY7O0&N~*m-X6_5 zBYgjY*G5m_H2C1?wAsp{(LY2N%UJ>kSUNpN=s(rb^`RgG?!=E9mE>lYf;eqdz?IBSDM;|BK7@pIg6C z$Y-O|=4RN7XTj2S_wj{vqSvL`sLF&qDaIsx3wXCU_u~BXWayw;XSOoZ{?kXRhpw(i z9+Nn?Zwqi5>2Mt!dkVc_Doc^(9^y^Q@n#D<`T%KqpCtG^mKmA`Mxd{8uhP@>f+q>$ zra2_OHjmImeyiEG6MW(QYwHG}hlWR9I%ohNW7f;98`*Y&zi6ASdvhD_TkT6*HRRWX z+C95Iz!#{b?Jz7@oI#ERyx+!gHIrD)+)k~eL%jVoFSrk1aJ)fUnkn>&NcDFUTJKSJ z%6}~P?4}ZG$N^zx`y3K(ka}Ki2Ka8B_@gvDH}M$#;b#@#HS#B{lw?tNl6!WDqpn=i zo>g0&!=8b|b&7s{;B8v_6}W}-h~SftaW?3$#xuQs**9PxgC1XaVp!_E;sBwm~H(L41Tnc z{iKMX1%7{!!K(*4RFbOmSN835_+U(A3l?&qV^)+^bAU(E@tf>?_5yugn_Ph{{3FYe zm6soaC)#g%iIo-c5KMVVyK5Vj2*wVtR>I%*YfZARcP9MFw9#}g+QCzbmhHQBGn;tQ zh%cUpUdY5iH*m-U=iX#Tqy+Li-`KG#6X1!l&$>0*FVOGp^50TC=Itzc zo^-fVNkf)&XJ9J!a^`(l;0XBV8yaIQ=>mVac{xgFDvLx7MTzXagZWM+;aj`@^?{eq z{=N>JApia*$w8j7sC&UZ@fqKD^84=c1mtsi`gb|tJ>UFXAl*2p@2$tKyY7WAOI+;6 zALy=&?`l+HxHCxFT;7)|)Ja~q*(D{MgTQQtC69D)IXh#M!(nk9bTK<7bsfR0J=`m$_A~>&l%(N7 zW7G$}eKl5F%z@uIhQ24*A#X_-?2o#QJx>;QSw}FJXQ3H#KI(Eh8J!HiH))B#t8Zc} zgDdLck%%T8_;w~%v`TlW!>?a^P2kB})PG;zmC|>aq>jhRl)#@AEL*+2ihRa?e7~dw z6}}33-kC}C3z6@$e8bm(=Locj@P!{@jM_ulWr4mUV0>f@^~A%R=EzVa^ybx%sfV}c z5g+qCxmOXFlC%u;i6YQ>>5PS43c!EZOkCyxPuE_TvU#&O=DzD+2hT%?UyKSY>)wp_ z)w5KS3SPiuO+h{~^p5dU0giP2z4TBzm&oqUbsGWRk}^JV)&TLhxY5Vpv3?#g4~sKfI+RDw zYS8Y}!@i=>if3ZZPjkuW_JD03&=nFm#quO0us31%dzQ`cTdp&hZaF4~|9@f9bq#U( zS^I^9Dfs-Bg0e@BC&4RCt_F8`!AHF!W2^fKy5;6uGkuuDlb1^1J@X=md|Ih5V4s2h zf86KbyJhGo0xw?rZpCxc8(5VG4u6nPMAv)+&pmZ>W124Tvy96h{&iGxOV&WJMi6sK z&ENR>!Sfy3UY}cc3;Q+x`tvkmpGKqqwA%&Xzi7V>E1ER;BobL3mQ`W@-@Xkm=+W=0 zbWsl80?sbfxwA0mkDs5CoI!VmN=6cL+Lhn~{1CEiup4;y!2QdTxdK_lI{AmR8~Q0~ z#S#;}9nSBgJ?md0-WI}U!})(G;D>tB zsr}B|7yP`ra8nRJ`ZxJ8=F>+qNKktEzK_6*l*!(_sagDdYOdNvQS3X`^qy{W!akCu zU2jal^Vk1A%>E4VYHAl^Rt6sm?+xxVIZeQwvAb18&_5cV8NR^++}8W2ypaZdpktk} z>kRlFP9wvyiXrs9`hP#H0KdjBt@jx5` zTMiqty9%Q}puRX%8DoPvMCJGvQ}9}Wx9pG1yawLb!OYFmjlB=CeFvFX;IpM=cy4($ zkF45#ijz0YBYPk9`t)JGr0#uY@oa1!xq0Ewf(Ru5c$QMEnnZ8La_cE=j#YuUv3(Fv~K z+*ESDvxX%Ld|~jx5#^sPIix{!i1!F|!PJ_fDIFW=YvF2slh7%Ae%^S;1-(x(cbZ`W zab}fFbH+0pxNC)1A~Xp4%Zd5C5%?<4vv)pw06*CL=RUTpCaBNv%PS)BG3@)0!X5a= z%A?(KQlX3YcJjq%rl7w0r@wrEmQ!yb!zxx?Xudigo*>-uZh7;B$P z*bMda7QmZqb38wq+nR@cpck9@9>Q0)fw%8OE#BX*zrU-&Z*n|I$oi9)MCU?b9we zKa85LJ84!iryWgq;1TM)ZIT2l+i~zb4GzL>3E)j_Xd_j-vEMPRMJ@O+>YKtP2`}g{ zopeLRe*&?`CW}s};|O@#q7l00H^6}j&QCAoQ{YRh()j~kRPH#VA(sm3D97!NZNMXy z_Zk*{q3;_H4RKBa@6UX|!6RWG<|O{`Sk5+Kzou}K^l)}MX=&)$zoim=+Q6?jKj5z( zyKLyekchrd`AB38_;jWa;S-(UQw}5@^7#UtAoA3W7k|KSYDamutVF{PL)#o%sEB&j z{=;RL2RFp8=U!$Em>Px|$;lZ`w&9}_fhhUC+y4g%g{)3;al(q zzdrO(ow28~Eo8N2KlmmS#~8vchu_OI&$>JYpFYdvqgZYN$W*W3T*qwzli&TLorE3LNvuRKCBAZU=C+yiWf{ z)qJwcfOr3K%$FBw`tk*1FYv7t>MeeCI@)eF)SZN|K#~q zmdhLS_8iwAc^}CngW)r=yf%oJhEaYweEqtSEjw?dL8qMj@j7xZc+~8hj$NPgNO10} zjWY17O?w;k=Y+$@V0wb5r5WdI-EgZQ=KJkFZeQXvMSXeC`1Vi)aH8ajojUMctMDvO zcO8X{pG!*~2am6P;r5AZqVRuwxv9L@1AS$2Z+_b#UI#~*hzIaeN?5g9$TRTb#pVx> zu)%+6^YMsxXF5rBW!qATK1OLbn|c%abj4#bOhc^T*|^n&vcMyh^wb+Z^MP*0@A0u> z2)Hm{_}ztR@Fw%Y4-MZVE(=2W!;8SP>^c;%Gb@Aa`YrAtz8!u6*|$zd4!{ThKxz4< z2jVfBDzjk+_EF02`KSWkW!nSRo0keQ$Sk|DXDa+vi%RdbxKn{+P2c-|tH%DiHP^0- zUWDK5$GIPiap@$*^8~{*;!`=`Fh?Ks_P>^2Pw?RHl;Cc>2(Eq%d=qj3*8whx#~ku4qVv%-9KgGBv21NyYc!mD%-@pEXhzdm{n zo~DbBF_7&eo`+P1h3i`I?RCrbj>yxT=O)YE19uejYihnZkG?3fe3d^3{)U3uVYx5J zyUYT~QQuHU!dY~c*x|c4nE#5_1U|+TlhG8+KkSR_y{Y#Uagp=BMEW_EWKnWly}-9t zsy(f#1fS5j!Qt)o57<`_O5<}GdfS}^sa3{w@RGj@UfY6S*!sKl#b5YEl&|&l{Om?w z)g|Fn2Ap=!hF<(iM=r7K{ramRESGpbj-^dSKV{hx*~5T*v}X6!yJ7`7gg)g_fwVT_ zPQ2NW`DiZ5b+0@u4u6QH6(?sG^y-i_gJXF@sMAV<#rFd-2gB^y)dZgJb86w#%dfel zh=pstfI0Shk7ypwJdj7|r1iy)D2YF~yY=ag{4o&wmE-^z@3%_4k;w zt8`Ttu0i~H|2HOsxl-p}Vcg1EdFTUjIb#&?{m*tXG_B7kBF~R~D^1BKnvMGwe(o!P z{$)9TskD$VQ?0Vj=X?0j1fobX;G^QA8MpFAbL+Lv#Ni0jd7V-1=GWa3b`Zc#P#jlEO)!(&+_ zHrXd|a65GPUdIV3=sJP!3_^bY`t~Od$2urkWTW*JN`D>v&X<_gX(JF%CghLZQ`DCl z0ef-Ol~UozpBC)U<(E7%f=sZl?QQz%7F$mR(d+VMkrkVzr2ePHmgYpUE|pP8KLU0z1*K)nC8aq>FfSuQ8xC z{}<<>`cspc*n7uZ%dd?19nY2BPfx|Z7r%x}Z&9~=#}4mc--*1CL}$9$2R^Ep((pa1 z8N}!4hcY?DY3Lf3BN2(1n@;UdmJ`PBD_U&!1wQShf0g&_4CZ0`t!qCiAioSGX{7B& zo*2?j^~?t!Vt!?69e%E-IYls413rPuZ9*a7Qyl&|yP@n;Vve}99|A3Hfw!Q&-Xy1#i<2VX^3 z%k#sSLuwt*b~m}2OV)GfF?>P)sTlR(p1u<1g~Lk5%;8sI+S1r>SP#7QKCU?DcrI~P z6WJPwc%|*w$a3>zE)fmgZtr^*`+EH2HLL8<*Q~G_sRF;M&zaHRLA~&E+*!5<{;R(s z4{Va|=917*$@3BD@0i;jHLM2V_qFUYv4yYXFe|-jnIHPcp)~Q|;3s`s%)_!Iv5%u9 z@^1G%_^X3Esn!Fzgq4ZvAlU}}u_!m85c+=M#YCJ}_!@^}G;gAgIdrcvD|wJhjBWnD z|DuNZ8{apx8?WaQ!4h9?H^k?!8tX6LzhVECm|>~LLwsIgl-B+smlW{l?%%ozd&p(4 z1z|Rj$bVWY{YlLwep~XRx8wI2`o2i%4=5m!pL4ym*AxYdQ(o$+iU@Tc#o%^48OBB4r8CYdP6YYIbj z{qKtioBS5T`}u{0L(^H95B!7W_Fb$JIH#|RVcAQ|Fsc!wiW!oETenuDL>3*Z;gKY0`bkHk{FjSi@MsG&*oo) zey{y#!W!^=flmhCsYPa!2JIf@$R7Nh#Rqot@LL{OHk(-pPbZ!md$;q9z(>sXNR##% z>duA5rK89rLDv*--*`EP>}*H*&&^tsVQ{`Epi_lW-E?L4Lw~iQ>1is#eCEB7H;-4a zFHR`!E`J-9G+Tcj`!`>`u0eTN2m8FzDt@)PK_~E=)qSzw7Pu}(d+E?9^l{0(t?I?_ zJ8QSL*u#&aWO|wD%6IJ1pB`9WV+dXEUj4S>RO}@hQ?~cM1-^n!o1>Z=eQn#RU81k? z`$U-c=t4i!e_D0x_et;uKei;yz|TXwN5#E45jfYY)I;+%_{*=Vc1w6&3A$gtih$3k zr;e`a7et*CdDPv4x-F+TmvSKkb@HIcQotkDEE9 zp-keJCBELkXu-h(ynN5CqXj{1x#YWR8tbS?G1eu2>T%-w>FPL zm$qQ3ye{w?zV$09d&hdwmv!9`2(JJSczxDHq6qQ$+I3d&Ao8)_)U(G-SLa ziwua%yyw8Vn(hAPIt!lUbz;wfY(2~u>{GaI#D@I|YexsP%7M><9K(b!p?^7M{M9KN z`uxY9`o9yAdB5Uyy*}u1Dh%I0T!EiDW`0__5OHU)Di8)Ar(jNdWgGgw z3f2ve7Wbe&IJb_tfFEJHYJa^v4SMz^t?NSK(6iN>GNvx0K3=|&Bq)ZyGppmjT{zDc z++IOlz^T8wb{l05Q^30?(3ky&&*O2I*LWHHT{^-t8(h$zDi`GjHz4mYxXzycNg-7E zj4u>D3USuBYFr%!Jx$>HiXj8;(Kt@|=nLQUYx;F-|AQXDMek{F*FH`s;c(VD^ zf$p!9ovK`tm2Yp>}fA*ph`p5s?$)7I% z4Sc&k>aOn{@P6(Qiq+6bis{yu7z$u7`;J$tfAAa<$6Bp!pue0RNE}{zgL(aKChLpe zz~>D#C>w0S9Koq;wh8$ERxusD-XqX;wl6Y${FP1ou14goeT=<@*NVO+058Xvr-a|Y z`!dUSZ$1RNK**=DP4ehRg*&Uwo6(Oa44s&B{t5qEi+F6DIQB}K+J#;Y<-+|N#*?C+n={Cu_NneHPq;#@@ z@oaYo>Uh%7Zl4sqPZb-cCGE=KWBTa1wif4BS*4lvE(?6L6$7x0V&AZkU=Jt$y}7A2 z{}OysI&FIv8@Ryt*>m04ZG-*lF5TD4fcxw9MSPwi-a@XghTj4H6ka(tPz(OVOpMv1 zF9y2Tq`ZkNKlp9QBDG)WmzZS>7krV&-zyz1{-y^W;?|QdLgqPSou7eb4@VBkGCOs$ z+YY?Skmu#hIp`dFqGU6`m$~tYnv3M)+^9e6?gsD4TQsJfBA7$G-psA1c;kMtwhUtd ze7=>JH|F2HMuUNJ{d$hz!Oz@`@4g5AN|4j72>3$ji`rz9CwwQ>@-Mm-s3dwt_n7M+ z=p=v4pPS))rn=tQyb*IAA%TUrt=D26qBbY98FN*_O$Q&2p)YQ@Q=%Xsk9$NGcRdnY zf?t<^s!rQ11NW6=_Z$Py)!EN;!!959ljwbxUn7V5=kqXe0P!1r|E~8JQQ-b9bBEdB zkI-K$r0@vuZ)ITG9Zr0-jniH-5raPMvvf8DeM%G^&8<@g(6i2->@A81-_*R-%Gnn8 zD%CbT(M3P7e0}M54t_7+(Z7F^C%^|7-ibZ)0lcG=h8hL=+F{;eUqTgh)>;jHPkYQ= zoquQg{wQ9TVdNLqFzC+jeC7q_(YMguL4U7>@0Wpd zzO9;DnczT!~%i{q*~*jpN57m>IKe)^s0qi2JtQ!??-ekUXU%T&F*i1*F- z$=vB<;E~@uP4{D6fCol?Ca(0kjHOBgZln`k=voADXuQ@pZE{>_zfq&8=o3uC{w z*I%Kn-@u!ub0&q2Lbr~wO#V0x9(LQa-Q|cEan zba($z?7gU4b!MDFUi0VY;QfRJ|W*BxtYkll?C6$1WPgRU4<1VjKO;7!e9N7X01%>u&f}lhrn@ai_rVFV^C| zltvbt>(UPb?{_p?+DRWrAO5Q7XQe*+c3Rcu_2`G4xjCmq5g*DEE=+3sGDwZw&KGOJ z6KrslRdx{q9&|3wXhC14Y+Q2W+a2fv`#SZEz-I;PWd1x*2!70}WF@TvduGDByo?f2 zkIY6Q*Fj$jO0YIwT#xxpuc2ATy_hrfX^AQ^22U)K@9KcQr80ACtW^r~!=nvvPT>4G znR*_7sS5s&?#Vz?3V3v0nK3^2>E(H7&%7E$J`p*XvVb~#$t1)`4fkQ{u$SF7wag+% zzqI&0z}JtNzRiB`0Gxi9Gko83^c_^iaW&+x_f~)2M4`?NRqwmHjC$$(N0ULyiT>?v^sU`$OA65YQ!f+^H$r!_6+gvjV+g%@tApX2tI!YrP<-Ear;{6> zwy2-l0^hO{r?j35;_2;oX$RatIzd-*?&(Szp&swqdWau$Kb&T20~=b>8Ql~jmOXf@W?G&qgXmLfKNQ{ht|9T4&L13 zkaivMwASo=BI0>a!S$}}LEx*Rv=iPD*k_{AyvM%i-@O7sYdSC=mwMsun!4Z6ksW^w zszKi|+)=?(g19ksF;+Qc3;zCu<~DxBm0pM;dH8Q%-;wIQA9qtpRZe&JGxX_BEp!ih z>9HsCA=7^2o0vOEze*|=KrDIPame-#(c<qsaW-HRT}ocX+HhhhI6_&%Hf6i zkr@$2lZkB(3$NtczzkO-MBX%mwhL=JP`KidwOr(*vU`s;{ zb$dJi5&ab3L5~rM_0V_yuAYqnKhpbQm|_Fn zzimm+CAAlLjk}%g`~v)x)DzjAz|Xyl4>h(4VULk>Qdg)3d`f4^nVgOxkN(`AGp90)503+%pV$%e&I9+} z`afXZPy`<3ZG7En@FRWp_b!=2?>#i)z@sIJ&$C%puknL7*%nLxdmVWD&4+V$g#E*l z47{;8=baM%LY&XjNkXE#$5|iD*W_p$Z5Dy9@b>GO6m#eVu0Eku?A59a94u(ujJ=IV z_eC_yVGf~pS5gqZZ}Iu6kTmp**PT-b$DUJ&LbvMJv2qF#s{E9^I|lf)l{s#N5B=Nc znx-~+{2tNCK5=|q=S^RclkoX3Z?>)I55T#a_j6u{`Z@JVe(M9^P?}8JqSwcP11_d% zyTZpl8tgRDB7%MUPHx=W#=$c@tJwMj`l)e|pP}sje9|Lzyu1bdGDY}Dp?@&$3o})b z8)T-Ee8zd^g`{l4cG)}5iyl6Q|Kjc~Vm`r?j<@CkKE8feQP@+6eyP*J=@IgnUiS^o zcHj=%$2WUdWZ=V6+?pD*1^DRMZn_@$A>z}#q8$^#v#j59MF;tA=!o9MFc<8-45!qM zz!zz7==R-3KKP4HH5=-ozo7bVKe`Wmn)&GJ%~Q}@ZS{4}WU9b7VUZ%8ychZqGl#Xb zDCU*MH)t7c!2J`l>I^6GdU-7ARChdsU!ZZYGwcR%h2Zh)!P?LdhutT>9>>qidBQO1 zk9o~|XNAqc0~hmoZFb&-{Yo|Br90u1u&rxPY<5DeO)An9{7O%s)erx6yhlSyOINW(kJ3{ z&7I*iQX#NxYJNbP>l4V=56%fO*|(+a+A+VIXgn&5ARzSedq=1jk$iD z!TVLrl^yErmxK=F9Dg$TV?T7J%;&_X1Lu8g=UQ{^EYkVp)%*SE+bp^QeVjPp9~T+u zqOj+aq|sm70vGa0mB0?k+wjp8+gIlcr9yYH)EX*#2i-Kj@yCxUbYpT|SIvZ!PYW@@VOcR4fckt~E(jq%1 zu}?tn$@_bMc42NnkU8xP>YB&ESDS<2ErM?uf4jp8zREB6(K!5QmSujs8hJ2(#GU+~ z;s)TiO+~ZAO!)mWlGBGy!dIJZ(q^HB*ERl^eo7(>_oRefi2R5;l>5kZ4tXF%+huIe zIpoEYDpN+l8>jz{?fPN~zT}yv)wNLUJz+9qHI_uZ`z1c$9|1mpT-!zp{AfaAo6Ko0 z%rp4PP3SJ4p&-|6W@Sz{r>K*w6xPaq~PW(g;;_JC^wjlbvl=cj*#}@Ew z+&Y%+iua8(L&)$Yd@lPo?Oj!+1rM>=TEK-9`21^hXnhs*y~ff9EVrPme6w;I^~xlr zCpCYcMjS1WpU?h7y-zd}XPCPRy!bXb-DNH6X1WZs0{RD^-#7NBJA=QLlkfYu3C}B( zDOr0olk8mie(xRp@XH7O^U$_H9_MNDxseUNE$PB+m?q}D@>5AJ;{LDG-TwOnsE6yv zLba8Fe|0TcTF+s=-R;}c`<&RjvUtfgk;6sw zQhPAwF7BNj+av?L!x1aX0-YxAz?s8|t*C!5#3sHYK9y|dKI`rWzT}tw8V5bcDg2>y zpg)BSj`Z++ox?}B>w0$R$F(~}R}bC>|5i3|KFuHVmM7=0G^2k>$cx`r2_LS9`1UpQ zxmko^HZ4~YJl5duGYe|qkKOoa$A|In*0++{(v%Ye(Jn>k7aVqKjdPnE(2m`083D{C$%-!GWiuptnDWHm`$U!l|R#rxJPB zy3Mu1@;UssNQt!cyJp!7bc*{ZDh8|Tn0*i{Dm4%R$(PMN-deGU_!YH3d4Is1B;hp>SE z`0hHb#)^C5d{&LVL02nWzo=`EuVeaqAn{ox@bv>j`XTT!>+~&lv0Tk0?3$--#(gr$ z7aKN~0LJm&u2ni|6fIYi>e?*ymhTw=71tH=U8_0*?Bs#k&UTHdZzypQ~| z!9Rg@JKndrJ2iX>YyRmzTCQ=>RV>|}*z-a6)G=gE$`M69$@S)0gs*v0rr{~qXDmjCThmZ(W5M?MU! z4-TS`h;#XscI!}=cJVDtqc2+!_1#2+Ijv3ytKpyh=&N6Em`_GumT>JOKNtD{@mGZh zXM9orXkP8VUw}P|3~uWKtSCgcBwBMrDdIKelS(x3uk*Jco5#x(;>)qqVK4d!-!)sS zQw-o|pdBg6LZ6=fx|CTE`stvn+xpwiz{_-2`Lr~^)k#9%JWRn8?rL~_`(K}Zbd~_RH}x<@>LdjwJ2#g z{vY;AY2y1Yq}*KimO-}H^?dcE#h!$sm?W74IIkB}e@o!G`QF&O z?068qWA|M^FXMb#johki1iv0({Hj9A z7j?sKqiK03bb@5*%++!DU>*oX1t_8K?D_I)1o=AmnAxr{@Iy4~zAi}H7Le4beY4T6 z-~+^u^;fEu5SqRhCV%G&ND=GRmCKJ&ukX)}?X-igDD!AM%07qq$h;k;G*L;~te?X! z_)3M2F%DhH$s$kZ$9PV5z#l*(eC;yoQg+5}>ywBlwz?O=9N;HUmuxGH0`AdQSr_p> z89Ln2)wRL!5vR=EydMGFm{XQ%p#>aAn_lVSiZ~{M_U&I1;ah9Ec{*n!o;Ty_3%V`f zj}J*+kwtz=`$(rUhv(j!S5kI@J)1=R?76`YABY`=&$7ApNVSBqEn{ zNMUQT=M(f{4}D_pIXs8&M`!Z}d28%73O~VO3>;TnT>YD#iaZiyW>xtPe~;Ad;rD0o z^HbZBe)%HampNwxY%!PdRFOqS8uO>me>KcQr>S%f5_6;AzG?-%UF-0^^U7b|Aq+k= z%Hwp`Exx<%$Q?hJ*weUW^Veu%7jRWqhDcE!N6#VD8 zvRj9>pd-&2n};f6@7*TK%3bJF`vScMJFu~T=ppk9hU zsJ+RDeVWvt+5UJ=QWs@5{@ZIhzAW~6$_n{H^pHwlJmwwy^pz?&aqcxT#aSUq4ShBe!HBZ3q9wo*!KBl@G!OaH7>S54_lrT z71v59U(GyZnbzTbe=m9?#S4D!3ZE<&^kr^?5?=qoZ!q1)@FS-aIGdNVFyzWPG2Y#Oq;^qJ!KXyoS?*&`LN5{&iW#qMl<3D(# z|3hBCo;p}AggqP|+XYjtaZjD=gNxQZ*o&9{y_97L|Gp)GTe=qSi*{v= zEg$L^l@1O9rOt5H&c`P+MnF_J>q3+$D0I_)p!`I65tU8H1_touAGgKMzgwbYaT zQW^BJ>TfTafn!_E*?rGHK%F_VICY>hi)^VGaUaS2H;)?@8U@_lwkCwCqXT~E*NgQ# zfzwWX99&3H{kNwybnvJ|AxTe-Na4R%jQtE;!&N8qh^y_V*B=Y>$atSdXeoRfzI;~I z>nAX;b$G3%3!ZO6hp%HG=7qR9Ivx8*;2+_agBknzzSxoJphCXy=inF5yb==tayy-`Le^ayWSNM!=R~@Eoz_TjpGdvH2 z4=ggFQKAR0Z-f4j_bWTh%|#kke*j+P6=B?Fhq-2E)A80D^Vl=PxN+D4{eY?4>*wCD zaSrZ%hn&rFV-Z%f|1H&wYlu!qMCldZN3K6VtdOUcRLR$FmCQs~5 zCj(m?vU^X0r_6Ue*=G*^B#X7=Gx~iw4`Hc9=s<#9Di*rnFCuglR{!o0ub&woExAl|^WJlnSRYk5oC^I@mFgPfSeiQEmQ%5BFpFIv1~W?EMuU z-Xx7VQPVpLA#b6#pSk|}HTWSD`q+`BC#aX%&pRBUyXfa1-{2gRL5|)#u*DYpm8bI* z?62O>CgLK=i5r+oNoql@UMBpiCM=ir1PyR*Ygb)@S>fZio;}42p3U7O@K7>OE=i5b z(EY{*JT{?tFI*A(XJ&dAfxqw-z1E@1AdK*sO#yr->?Wb*@z(>(_ z$nF7nsLP*uvu{tsH<+!r{bT_4Q+fwijdEa*$f50z0&uSRPW82Kq=App+5O=^pHfJ= zoUOHI5qaiw!Qu;dF{$+wOw)J+zwDUaeskbsUb~p@69=KIjTSToHN)>=7p38(44u32 z__Z6TQ~FGXy;cV>XKb3La~$&s#nq>&-d!BWJqhzw{pG*``YC;?>gY?T`yb7^FyWlNSQ}M{b2wfr zd{b`+;`W7E`(wu}k~F)ec_|LB$MVwGtVZm4*PUIc$Ompsl!MV&tZz+<0`dDChaLCANS7To zIG;fVmmcXyy+QvjFtBu`7<(Hp?d@kUh5vNN$nOvt@Wq#6E}#91=W9V<@E7?lr7*W& z19?e5Y0VVDx#`UkIW>`lz3~m(@-AP=BEQu%6kejA5WfFAw&pN=cU@0&U&8M!v_Hi` zaRK*MQ}(I|14r$rJ+M~GA9|*e`rI~C@CZ|VN9e%|ail+cp1=)%&l&l#MC+;~0-9TRb`JXb_$+Lyv&OABzn zoUpJTbR=!z$`?zLR3iP1eQH4x{fdiIb{+DTH|y_Ke^vOt4bGi(u!B$W_Ln5(@8AQD z2M6@HP)UH6M3ag;_5&0#eOL=W;P8&x={We;%a2&;zP$*aZE zl_?s&4BU%XGpMr}d)xOeZ{WTSf4aQgx{Gay*B>e?>3;ChpXNWJdSa=7$Zph2>~JY2 zT>iyHAsdTGX^*I?Am+h>0$%RrG|C~VcaM6df!|6P77u?^|z2jZ|=)d^}6~}q#fIL?wbN=}hrkj6gMS7+!Ys>=#ItgmTlZVUgGRN3~RKNaBPWDlos=fHQN>R``ofxg34 zS#nbz@adIXeP6lJ=XJL3tB3Atd#6iBu>$;j<@IyGCqaTgd+(#T1^Vt4u@&w*Utl1?4Tol}<@gxxOv(B}||4JI-X!J+h znIh;~eKnfP$U7G5g{vNes9V+g3d%j{r0v=5;G+SVcfuTv{zW}@ygyO$3;x^0QUC4ht&hS- z**ELnb3zt6LFL%XycFCYRi~&M2tSp_+f7|v@YQ=e?CC84F7&EH8Gi(G#JlE~V)x~e>KSUoJm#|wyT`k8y~`s`Meo!;)#j1Z zGBK;#W$f2DqjT(gOCD+H5=dc_DJCYvh0U+`7m-aH6{HI6iiyzO$XH#wLUKa!L%X~a z_SvY%^Ns8Po@6Z#kSe7Tf#<=$O5Q~o)D{4#tkE&_iqpFphZ+%odX$*_|YUF<_yY}|Hs0JvIuSo=Ea z5#t$M@_Q5NQQ+Jr%~J3xe$)Ckz_0NN-6qmexF2XwUXO?f_UkMhk)XkR=r%5neIF-) zBY1tA7#*lYxg_gJRxETGp+g_X(O2;7e&r>b03IMEqW(W-)Tz8{yv=6tGliHu^MSvQ zW-{X5UGz!3)^E<4;p6+2H%eci^PMrTIX#AcQhRGtPY-^M+`3WOeLL~_;C#pzb2y{G;cD$`D+z~gfVF&aD)6sgsMD8*o}+93 zbK4)(N8Xj=AB$dM?^3PE90%}j&uhS|F{s11Dt^a#!FDv5cFT>bD=x(Rl-Qza`M@2~=n`_X7e>44~z!-cON0?%n zdEbFgzozISUk5(>^2L6KZajy{**!EYnDdZJqT3q+9KT_c{9*9k7SpFc?NtX)de)F) zeGGj4jt#l*?x&H58y;BobEc8j(bp2)C&9Z;&h3_=rjmHMPyV)r>7?tm(L67Bhzd3Z zz1ah(>pJ#wu@_Ol!u8&bgZJghdu}9G44uWF@h6Wmc;FtdT_T4mgm#j~?!qYwIsAH4 zqycc!RL#j9bSl|of&FL9H0pT}+x|7#(AV2-hwE;DACWDL_?p6kzmIRxC+8XVUJUGw zDo)NP!Lw9H?)U;SwM+GwBkIIqsfI%nv+(uRMDRFCqaOB2{#;@Nt`cotvkE^4bG=;B z`2i|Xdl>M1@FMOzJ8>?hWDRhm!sMG!%t;%DdPvq%fSb?8T}Y(I-qD_GojWk!ctz@X zU7;iPBR-uTf5x0k*6{tA=PAN`XJfSh9q@0OiPN?r%zr4RUC~L#e2109S*{`A!!f=0 zY(|O&c&ApRPgq@$>Dms}D|3h%H#($XmsvM9SJcxSQ zklQjO0NkmhxjPZQu%sE!&s;0$qdP6L)GuN`-6aJXPn^f9lAW!>h_BZA2@WM|D)F)G z9ag>upCx@@Mt&mj^M~V`SLdPM6%1=!Ooomg@l$tw4erTdxy!^1UhO^Q?~!ZSxL;tc zKZ6Z?p+$2OKZ>AxuRXg-M}iyo+@55LPhOW#(ySc+gkc^=KA^R2P8M^Y{@Ec%z`rOT zmfQYg0ZcMN`cr=qa9 zBZw3Cv}8%_!|i) zJeNkU{@8Qf3;e5_j>L>~IpT2i+@vn_MyZ;1;|%bx4Gu$FVmiPdiA}4&&jqi==Xm`za~>yO``-|Bz%*w^bGpigzAiy^Vm~7bbOQCIw~25jKHzY}mT(Jrn+t03(C4!iy71NyC&pFFK6aE|Kpm6yd8 z;U|lJyL*Tge1=lqeUEF{H*v>uyp#=kE=}BvJ->m^daPp?@1oC=5Ok@8Zf1GyNkZx! z?DcJIj2RlpA^fr;G%rhm@3{VZAcpsOJO9U|V=>s9pZ7p=4s#{kEx+G{Vs1me;m&Yk zIeheg_ButNPL3L%+aL?yWcVAVzuu^O^LfGANy_=ev*Pr2azCF4{r93JuQH!V^&hg^ zgnK{}FzB3H`aMg5V&bPDhfpY6A zuSn#R#%*!&&%@zUGAMp&g}Imn_C52tJ&4N<+~41Ur!3l$ZzO*S{4K+PUp{bR<+$*^ z&+r4W*ZNy0+=JhQ>D@#J__O8B_xzdAmkH_p)H{lPW%{I8kM&mQzEx~A?#k#_=v4U} zHX$Axj_>1w52JUezFPx&$%O^^j-TKSg3I4`rUI7@U7SBx*9$(vctI;@5AyOZt>aT- zs2AIZ_z!4hkgV9~U7LUZ+Y@j{nG?LTBAuSH58^AXV>k+zK9Gm)4!=9wFrW3wtyu%} z|K~M!^6(B}zt0U#^)}#azEy5_i5u8&@jZNY6u59J^VXD)Pl0pWcMCoe!To^mlr?l- zL-%AmSG?==zk4%Fy3Nr4@fq&OctXKG;9&mT8zbn`Y&OcaS7(q@S`xA4hVTt{th-Z& zI(k*-xwd)DKYvM$ny(Ut?9xv8V|0r`ludpO2HL|nPt|kd?n))gdRCE{ap{Duo*EJk zUW6F$IDhsQ?$_vkK5Y$OR7w6D4GU}ReLH-bT^>9x$F~K}MHApgzvq*bku-9lmGkMK zDuponbuKI6ew;AwW=p1E;BKSFJ({_AUh!!G&FHrmmb(B_KSkFakL4dl&8#w-BpD5o ztc*l@N*P7Aj1aOnWmQ(lh)`LTy}hqhHklbIt6@Z_j41P$Rq1#7>-`w%eV^yK-+S&k z=iVEOI%iFQGTrTU7V)G}Y)`E{u3rlb99O`b6Qd06!Z}2&ZKk8_i+}TZOb>SzB2F`( z4pGcPzpRbCUjTlPwPatQjtBU->uJ|VFQTvG9DmD!TiE9seAzdYiSWnu(I->Yn#p^{sF6LDy`aFVo5K&?JN4l{_f|f9#n<@%p-fC8a_<- zgphNg9GLSVG8`VKgnTwBwoMpwxcoCx#BAY*VN)BwzRMB(!H&y1znZ}JFI45Pp?;#e z<6txZpPg7^5?5JI2GR6~UdSEzkC5WA2;2kyW2Z?2uf;zc$Jb4J8LwHKB9=GdOAnHK z%i)K;GbL45IId(8b)P~u`Rkx7I0+{AsYCCuJP~)-13sFfJ?Uq)5nR`|XqP zERFE`J#*p{_>+~T>RFn8)UA$PTkh-t4;N9tbE5_R(ksWTIZqzKTf0uT0HPLJrr zIlLJE^pw(Y4q?zlUdaMZqWGrL73%@KxHZe@D-C>Zd8V1HZs`BJnp?ZJ7j=MvA;ZjH z@NHQ;@3$h)6<=kn4i|*3w0PF(oHB4^BKsF(%s1BmdS0^>c#-`a+aBiom}}E^Hi7k@ z-mpu?ZpJK+SafR<+|z=23TFNyumACVXS83Nf~Q=X-o_U`h;vti6!e@DxbRTW&~3~S zG29-YT!%PPu}LP&b|asSx=jcp?wms!&1Tn0M2Ln0IpaKuP`W6{FFJ_);lDtAqnbpF z$#~^oyNCWqr?kDA6=VGpqROUtsF>8q`yY6YpMS}H_26AT?$~-6b*vpZF`EHAcJBKv5~q>h^aGbh|8xOY zH`8_9jE0Zw?*AX{C((wwt6ipozTLt~WMz z6LGV|d}Ihde&^l$-j`0pU#C*06qJ)m_$SuVtQ-NqV6FVD9&y*R{$O6^F!*)$14-rFyrT>3D!3m0b8^XyF=LTq@*44q)N;n9;sHEEkG|6IQY4kV-bG5 z|EjM!0S9@OI5@P`qrY#TS#Tn7(^X5$2Nyo$d|?=AS@T0*tf*SWEbviu<|k8bTCC|^*D*Ruy`!t#>GNHVA`_dS4<(X z*d;O7ZioKRIEt(s@JC~0M`ht1(9_Ng7*3x?{N%Fv-$Om2Q4sU~1^Ct^SNG{69q4%v zt&(ikaW1vzSUnMg-|L1>-J3no+v?7Ep8A1$gP7zB0go{MFqOOLBhD)cjRg|)nBT*rBu!W0we*rJ&SuXo`2qPX1{sk{yGlD$1R zfEoVDyfd}u5ik0TIwfNd;P>F7-|-$izQBCmgJoUlUipbT=}q9vzdQN;5aJ?WzLQh# z9)4bHy%-F?#F&|TBF}65Jt+-GG8Oo)1Mln|e}Nb3Hy2h8MxB;q^djsXe0NUr+y@co zbX~8si-Ak^pJu6@$jc-i%=Ei>2WAo$vPa#FM&ZAhHCi4+Jn%|MGb}1&&tVtO^{Xf0 z>zI4GMY!6z={IDQVLgueEAWvCCjMVQ!E-wN=g1EFk%w`0M( zz3Eukua`}v8m>+X4MN9YD)r}quft{TsPrUs&`@8^HriRlmsy&CHuMlW?py5Uz@;ir z`)J9RpnHecR5H+kSFv4{550zS;NA9z_0VCoZt$8FSTUBjCoq7Ucv7(F@Nw8 z16?Zezi06TT~v1}!Qi?lMR_KbNVW52dPoPnc-*yENe+EB4w?mBo68cPui|>;ew8@;6#3MykLr?8dp4msbLZA;TJ)KfTdG@0z*j=q zGn@@wAXZUEiyHA!EM7k%z63oaO`A5)0DWEw3*mC8|M??$!uB|WACI(b3AqH`+oQ_i zgdyT9&R+N8E<9)J;@-)KU&^9kS#e>^`>lN96t0JU&07y|-98DU{ip-xCs|(p>y|NvG6N5ClO1UA}Q{@B%;z>uF7_ZMA+R* zd`DouMykZNALq15#0HhSDZMR;unkj^aGW3!UTVsRJMr)Dxbt^C*$dxgG<{sEIO0xM zyP+3(t%43AJ?b=))M3A~_TfA(QE>hv5sCg!wkV(f{Y z<2&#XJ(l{5HO26oKc+o+0JzhO;zT4n@S(GwgImHu?Cll$@N0wveSVK#PXq^N6GJw= zH&iQVK?iP-D;8;T=*E<)ph=#e}!j%Vs6Cx_N zruid(2|Bwtf>(6i=PIm%I9uJDeS8giLZOyGtmP@ZuZ&s63wfwhhxp$}Y{$72s9fxd zdQ82^c3&!dBCS$8A{(G*T(FlL&*_0~%0=nFia6a~Uy#WNzu4Z}^L1>L@Ch@eey76q zWa#f{%MyWpV(ey|*ahFgf3`9qYtRi6j(^%{OC#>nj(+NjOd~`>zWeMLNh6Ad_IFP zbDa>g+0MNE?3yjVn1NT*V#S( zn9pXEG478zqgUQxJ^4N#zILvWU6?<&G$?RsLlN_R=h~_dVlL0P&-UcsY^ZzcURYME zp?{!8m&0Qq+kBM zj6VO;@5ZYa@pE3TZRu0K(EB`x8g=2X@(~me<-+?&^&8SQy_84%;oOv`{)v2c!gll9 zD)uE0J!AG~10D}vU~rJbUX6Cz&we<+UBt3Z(?&x#YTa%w-3z`wcb{ezK-&7;{Cx%8PEz+jPOYthwzOc8+AZ`fVwma>LdGD5rUmI+J&+dFwaCsMQ{8+HMhxus0)dV{MKdyeK1dNCq457 ze*D>WbU_C?cEYgUH8-65F@v03`@qx0j(y}ifb(dFhm9kAiwz1ie&+p{6RgZjFNQj2 z?Vv(;JbX8)uP@B$=Adu2f`4VR06y$QizQF+1Nwq-?*`#_nO~yaO>q~#fxkiwvHZ~6 zY@`E1x8@Kp6C`Z=fq#>}l=BLKukVCD>2l zQE~Jk`k@E)I)|kdpqKq#Y~YMcC3udq-;C&nUv$*JNOuP3RAngfm=8S6(e770?7(*g zS0ZJgLxxPs9WQ$Y-)O(qTOKCFe@fh!y$$dUy|m!o@(cO)Ta@HJ;M!@%KcnL~&%%zC zH}t3A{0(pH`V8I0CXc(kuM$42YvP(K;JKThQcAnT0r%yNn6|-xII7++xXmh;@T1Yn z&VbH+{I*JavJ2*87cQ>FKsV+H@JZN;cp7W1JiH7)Fx|nPHg@O=slPMBe75Ej7VoID z7@!CH1n=*lgOA@^Ur^o$_1VC5>`3_^%)RM4B>hYYxUu-x(f1PI_v^>EdzWC&M`V4o zEBxXDHVqfPL6@SJS4_K5{cmno`>QO(UqjK}vkNN)gs%ppJ0TeD)Li#F2`$ zyFcag2|?KcHqIsNdEwd!_ND=Es;|F)-)-b&8+r4u?{kQTtjp#!E5HF0e^*>ru^%FT zP}e30evc|WEnmc4$o_c!KKL?i>=U~upvUC|A5v~S4!xFwUfsSko1hf+Rt*K7O!-Yk z)1ivpGTf z37@d?tzWfs66kMC9;tBM2OriasxbO&)H4s4s?!=!=lw}cw30-B_pgCT=BJpGyCas` z2K7#b@q_FhP2jQl;UADr2m`Z4$-y@G%5N0hNPd9V;c7`CBk*iLXkyt0(9eDIyKNro z!>b2>=$SsrAjTf9Z<|xV`F|;kDefrr^g_87_Hg7ABQu2;I48zT8P#^6t|R^|C9j|^ zN(Q(kKt@ZCH8A4>M% z^Go>Aenp;Q*w-*~59h=;?;ehB3Y-H?louoLecNm=??ha`u`HdK!>D&GD(+gpn?s&4 zsflL6Ij9*ER$+Dk`(^!t+F~4Ve>!^oY(mhdDmap4GYNh_@I^Yw34NLgY9ogo(g@`} zTZIc$;77^zwQE2=5A^kM{6UGn4CmVJEbu|09aUxjNrQjQe*5?uJL1XC)X@rgyl?&> z%Le*Fyqko>KWu_8cJ1htkwP9-zj1}627ed@-}F3qA~T8L=%>%%8?~^=(?wmucdki? zuN^*y29}VW>flkxUu+5Vvk3S{XC)fpd5mcu(?;G?@eryyZw}wCgTKHzF3dY9>Y-b3 z!t;BBzw^9N9#NXB`r~;m=696MPph8Be(n!c{)lG;~k!b{>IQ3)wEVXB>fC~@+iE3usCn$ zd~g!|(*9y=2cKbo+tU|j3qQ&5lex9f_K}EJMf{f8vjv2R@}hE68|Kelq!rr-AIEfW zG|MPCpHP-)l&c4R^`F~UugZ$K{BNDUy~6toJrQ+U_c!KPER-z#Mja=p!+KKI17C06 z-weJ3pWE>G0e0wSR1Q}3CMm$-zBZ#XsACf%*W2qz@I7a#Ni3sIn;te^PeGims>HaY zp}w^;aob+75BJ+>S!-`MaLIi-hMEiDuY3+{M4tu!*TcKS0^Z%UIOq2AI{Z}Jh8k1g zHw-R^ojMA>{ltlpz-P!4%5S+-d%>5Ob=QB&i_IWX`;G0Cq04qZe9jfK13tdrmC{>L z*9A<*h|wMbf49lcaEb*u@QR7kbMW{g7$ir5=S)iQ-P4J$IM?N)imBm`99Vk)@zWXj z-5>KMxYOhLs8mWL?f?%p41F2%$t1R`$(`c=f#?0~Zd;9P@S+Ja`~S+Kj@&k55Xp!0 zAc8lFk^%iAHn*FWSi!sab3NY;T-hOb{@Bh0)HT5|mpQ>FR_+fycl>@9am71+w7M33 zSKJ@w&5>tSgpbd8Bj2@oPI4+E|FNC)({lWb>!IY|q}`cGG#FMZS>=JR&(?IMN4;vj z#g=X_^3QsdEJreQwpA{t>#r{75RJljMPh-!(s%1!5zqneL~~E^EBr1q;+_{MlChuI zq%NT-3%Ed^dM>vwozP00s(MHTez8_cesotl5gMWpKwX6XJ;|f1$LKM4glk`Mw+mja zD#rOnEE4P5PIqUG(Pg3o)LNmaE2^YqV>PDTKCw+1vB z*L()wd9`383BG)r9Zvl%;Q!+eJ$79H4{Yk(b(4g1yJ<&n<*+aC6In>h_c{7L^IYgW zpc`0Taw$`Tk9t0?+Sz;>b6T?%b_%~ie)^M?AX$5!N&^9k8WcRB~eiF542p`MC-;;grU=oRQrz1PlU(+I&&qM>BC4nIL!=zi@e z{d{6%)~d4k5$4TQ^oJgZL0=Tfq*S5_xG#-Gkv$)}^*+yO+S|~_KdL+n-Ho}X?3cDg za>0M{D$B{H7IUE@&zp)$g3qLkj1q$XK2%pAm>oKKIJ@AIhduUCytnLXmBBoO?K4?& z|MW2ri{@}5k2rAh`+w7c;HfQNNb$Xa?s_`lm7ZQMF%t83OgA6*v9dWJ2ltio%|L0( zD0nprF_(|6*~CQs1JCz(RXiU(w>k)am|U#r_p8WnI$xw(mQZ(nHKZ!C$3D)Au3Aad z^$Oj8=t9%cJ zBCk+A7clTbA9aVVwqhc1*X&7=?Gz4?1O z;lO79bYLs|e%Fmn-OV!yMHiYbZBO*|e5X;Qz&XtJ_U7kM5%7}iE5dh4(60pR{nnu4 zF$i*WE@S?KzdX^AiTL#HWJ|+4BhLKg3;hr0xr%R8)cb1qOg8yzg4Uq_mr$n+d>b3Gvg&~2Hs^6ry^IMPWK|uJwJVruRM#$7Rk8&0P)4{v^}dEbz{I2 zGrAvHsQZST>Snv~_r|6*S`c47JQe91;A`f_f6i>z!rX=j1~e47ex)l4jB{qtZOAI@ zty!AwGq98JtremfAgSkGx*5eU}(rAn5XXYe~Hc~6xOc~xIM&P+sA9x z>BvjPU%CbdIWdnnkCR?aIG^Zi3s++1#{LzhPkwzn^NER~uuuPdUFAPE&W<_5NBFV7tgTo}^u&sq!9QpvdXrpgzyOB@O5Z2V~o0ui?WHh(JpW65ah448Hb};*@UE# z`qzT%s2fbFw><#w=eyXTT}}r6xp$VO3OFN9LQpyxdCfT>YbFc#&FMGoUirYl=3PaIbGv(T3um|D|Mit9Ged&Y-=b6Ls zf7-ujQWr74uyRfd|WB*^;`B{LEY)qR5Q5~eF?YE zGJgV(lREDGmGctL7uu;IL-Yfkuq_e!s{>yeoxG8pD)6^IPpLsJUO#@7q94yB_Dnqp z;efA&Vj%BrK`H!X+9&1DuVRkn;}w^D@QuVt>nX+C(2?Fdp4*O!&?7-Fbu+z0luJs2@*!vZ`Qi$6nHQ!!g$q@FDkGg34Wsh$j ztk41v{B7O#7kvJi7OF*ZHhf!>x!b~vSTYz6m90zwiPl3*yvq*R6 zBk;^mKVJH5qSRk8{{Y8SymO<)_M_d3yf#;lX1SE zXs~S11h2ro_N+JRGTw*ny)Ky<=yrz^&;R?JH*eFLhbZI`o>D9;W&5*4%mw_AetL_O?<`Ac! z+5PNV1n)g%65PfEeqlN4S!F!xz%Kdc7T59r@4l+q`4_&Dmz0x7@IF|4mO7(1kT=xc z74*Z;6))=Jpm-cSRleM1#aiI%bQ7DjGSrPZ5*9pPQ1=~Td{u|@EVQUJG*c0MqkNg~ zr{=*gC0M*;Nwa{s`B0of62o34PmcSi z<=_{qooTxY{NCTwv@-u4_+R95LYEWtKU;EY1o$jEN$*oHFn_LMpT}1ne#Gr#s)Reh zJ7W8W7_L!+*Dn#uri_kdT-%{Y+%8*|*k<~cvR9nK@pZh1Fm7>RmEfxBfM z{UdARFIk(}(bswK&0!Ww=(*{C_3DE2h>Rn=uLQvJ^?i{F^QuJt`#9-n4&PIRHZ#vy=DI&&4+G1t5g^~r}Jy^mdC zh_?#r=z$9G{GmqGS>XBX)Cx4-*x)%Su04LO6LXu&@8~%=15c3`B7%)uw?v%MRKL_oH8IcXR39In1qpl16g`xRLi~ zj8;7A{F4_?Ep0K!-17Z9cL(L=6JFb^E1oi;|D&Cxn{5gGHJ1Ctec)uziU)R+vFK|T zo2BIfo(gM-f5~+yn@Ig;#okAaIm=glb~?F0pS-6rrCJByN#Y%jz((jNk>4Ml@j#xA zvT`jwihhODXUoO60e7xa=bgdlJAK9I_b23U@dH8Pg@fqpzRkV41RnIP%j1-+dUg*E;m*T$p3wn`L z&iO`xT;k4uMkNoy??*6es;akQzA#l1h4?z^I@RT{)hPI|o|L?M3g1&_QOR%u_(`+N zi{b&$0YnXzXLjN_P8yQo7WfW+H%%Dl}{V+ z&4f0-e)JUm|NSTDBoSwAf)kW1t(aSHt=ja*7y51cUDgOs@Q(MbSNPPkiRSc<@avr5 zPr{nxqNJg#?RZ{)pDK&kc1!THK>>VM<5P1dkzb6ftdvy24=yg8zyB6E$Rxpjr$-2I z)SYWbgcUN0D4O6$A;53<$#+hcA@8l6yw)zU1Nzmya<|0BO&NsybPuUTfT=s z)7QN@;UV5<+RZ_-KJs>mp7J`buO?HwOqM_T4lbUYn8o+ctc*w%0Y{E0>Y0a$15d;^ zb$)k4f8c#RqB8(-baIKQj3NIy1ScK@KRq9|V(SRpP+b0uCKK0n_pRTaAq4s+CwQpW zIiV}ipLWQ>b=flW%r_Rk(7QE~)a>BX&WJKzcgJ(4(Rs-}B@Fr-RYlz&JM3$|T6**o ze9opK;t{nw;kUXtDkcCQ-ZGnAW+hPg`GnxHLbWf3on)`YlVQd8s*HaW8h%c$ZU6~AU|a0- zoo0jn=y-vTZO$WKhDZnNIzmrg z$aRjFz5^b#wEfUzIL=)!?viFh{J)cVk89BGRAtv-B#>xg$A(=aMI@HT-#mzypiFJeK`%OdbR49&~! z0Z)N1)jN;=<99j~QZMgpgnxb_LFM>g_yvN@OiU=?k2sidvKV@6%9kxOoO<9BuIS3j z{DFSWtimWTi|hC_@#rDsEwOiY9gKzO&p#R}U1N&)`!*J5&WwJ9YQv?KBAh=yoZ9E@ zFb6zlG5N^9bLX4cSw6&xm)x9lHh7Eq+vfBf)W}Qsb)q7m)Aa;@SI)Tb@BM~&=7Y~N zdwbx|z%YEV+1VqWH=+By|MK>eq$+ri10T0?JwJoJq4`IB`O$Ac**m*BZVLWG%Qna#{iHcw zSrH^&%$wgj9!d*e7E2a|?yJ4nPyd{GDs2q=EKa>WF?k35-I0$!YQ{kyDC?(ZrOzk2 zK3Mj@l*RqIV)=;XFZz4Bqh0F}$6g(;uDM<*BwnaXRQ(kwB1GbIQng3O1os^0L#s#7 z!R=OOouPAAy75)f?*kv?V5K+;es$OTn*!mUa>UrUgr+xl;Zxf z2I~JAsK#}dx;-2tj6IkZms*>FhuU)@2b;`s-q#s))FeZn?F;d`g1WffJxHfx1Af9& zUKM)sxZX>wWwk$X{`JpB)Bs0zIIgfh0B2H(AWybDir| z9B|I-%4pn+f)3m;k{)vleBXam@fOGVz z=s~et;@869*O;=oZi2jAK6kog=N|C(B83!pz<;obB|m;VkVTA5bZ)-*^R_IxS;5V+~yVWvJ+x2Ij0h3*s+f#`AsP+lvXz>B+tDUiLQp zKm#`xC(N-g){l?$L-GaqHioZ0oXzkdvL8360AJA{Zl-<38vS!p_gmGzK-UaAwSH9y zeW={Fxi-+bi-(sK>3}P%QdyT`@X8R^NxUWjU*|-}Uz&#uUa7vzLat5_la;%QXw8>9a)e+LnmhyJdC{Sgd9=oo zF9EiR1@Qmb+PAai-+>q~g=HAk+I9l}p7qWRi-1Q0gEkr5LOz1l5 zE@NtkMfj5v7G!?7_rgzn_^I^EHSmq027wkWz`=H`Z#lsuxatZ#AQr%H?vRhlN8TPi zz+mOufH^E|gG$Qqqb}+kxqS!E)rsR8hb#U7zg*hR!{h}#x+D^CvByD4ZfAZ zKC%qwLiog~)I5W1qLYU*jOu#SM-|}v^5dFbyx@ob?pVEpb83OR>*5dasJ$V{ zuO&oK*9EYSUNVI*(r=&cHRy^qbIi8nX2e_fZ@(A`>`{Hg^707ogH5mDy=eAKVt;PW z(7^EwBB*xNPpu1ca-Oz|jU&%i^+~!Lm}74m&&HZ1aOi#R@NswOs#BPc^={K$Q8$<9v!L5Egg$`N zyv+6-p1H)F!R>Psz`eshR|hGy;6Il3VY&~V@w=jQ)s0>G#O7u#>yf|UTS9A^ce!C- z^wGovW=EjkxhF2YLcSuNUI-;!ClLZK?!HoDBom>69~Le*k%+ScyA!{Ol86q*hndr; z!#Kohi%9U5s4k~)sRb7hl$8?{#lWf0l>*Oyy9EEUTG;lm2l>RyMn|QqS4hMO@utd{ zLnLAk)1Eec{9NGFagjI|wV{%=P+v4ZDdz4}H&2I{K0(Bcm?*MMW3OBud? z#Pi@Oz4nR&eWH99TeB0v$8lyiv|j|?%kcWBg?jzmF&pwO)K^oHYONahIm2?E#0ocX z=F-c=$I$C?UpSw8g}Nl6i)tvs7I;o+$JnE%Wd`b|XqD#)Bbf0nF>l5b_XrO=D z=5CKw!r#-$$=-r|efj*6mTcs={o4%W-{ZN{w{0}^jQ@vs>HAfba4u^;;IwuCpD+CM zu3R7Z@hevv%R5n@wFlDLP@*my7O?PK2CuSJImZ*^cZ^LzbFgbCC z$RYNU4F_(pBHrv9pOzpl%g@yrMsH?;V>>BOS&8emDf4m9W903?o93UxG2caDXhZ24 zzW?m0P6c?&t2`Q8d>et2Rkw}jB1V=^y&w zrK|@FS%IrB>?&hz1WsAV;n18%Jb8s(+vLFYgs&_?kPFwD#w1Y)pLf+j$TAB!bwS@L zHvqg^PI^Jn7Wnv0H^q1O`(Zwcn0NB#LFBWJH)DG2n4`JJQqL7mE5>R3~oQsQ}kc7x+s5%vN+XC4y2hPm)}3djC}zf8U+?s))niOi;q z`({32uivpmJ!|Y~SeSnFO`(`X@Knf7qw3!G`BZPUPYP2JE-;=`|SV18zAxN@W6E5$@noIe!cIMmqVf zHSk6%_v<>|<}4JoXvSPwxSy`w`&(=uI8g!f>uvdhZOPMm&y|e(-(22R@OANp)&X z@D@RHy3e=Z_2d3?m$ad`R6Voo|BCt8Rb3VsRY|OWNT%|2LB3%&xlr{5=hfx%R&nHC z!&ZB_(QM%BxOm2$xIS$`A-_|BFJoj>*53D_{*uufJiCs(w)c0MW;^&H_s~`))PMd` z=48h==*JOD^lUeU?mgSx7#9cqUAwI0DC$A+@bZzd`YfW(syFinu2YNB=wJlY~oV(I(Y@YzNN2e zMsaxMwP2iDXMzvDZ?Sa&xI&sz^8lq9_!mv;9b1ynzcia5+jS#{*cNo}v2IWf;bi6Y zg$7?ILj^_7Y)PcwJSU$=jf#=quzBdHASL4Pi!)NHp(f;uVhRuLCFN$_6 zmgW&1&weH=*+a*(IjN`&J;&ZSBD=gUk9d`*v_FT0_|P0tI1*Pt*o0^FAHf_G)-j90 zIP}-ZTaRUvfjfJ`r0*+plL+Bj4FezexI9$&6qzt@sP%@3_&xN?nT;$qxAb5xh|cwA zy4XL^G|<84*HJ)3*_=70@EY-W;PLg4!vzGzbkXZe@T*+*2nab1|0vy_pDX_<16LOB z(v1P0@3wvUKx`HKQc|O<+iAqnYMXT#{CXS{#ocjS`1}u9FADKsoxhl8pY1M~r&&i?2woa3Qt2iU*R*sGmUR{gAeF2)K2Cb~|%2 zaE(ja7Smh9xx}ce;3?Z!%*AQwqdo>-YWuCAOAaT{A80EqS^&J>>vd+ITOn}!;3Ky& z;9Ty>hb1Ha;PYK)50s+bD;X0EkHT}RqL=NQF92TV(G%l8$V+K8n)Tt=&=+xMi}3F% z@R{-=q#+9MrzR}#O7MF;ol{!G6VzK<8zjVYp+m0Hx+z_NkLLP+Bq8*Fm#|V0L*QAe zw4CaM+Mox`@|g?~UWW zJHP|hUoyP6;Qs8dwCa0NhPeZ56TkA&hbeuwM(HT}3C311uI?%3j~B9z7h{ge`03d; z@=4?o*7e|g%zYpG^J~krHu`ZK^Bzkf-a3a`xSmhvjP6O3GmDFxt>>( zq3h`%r6vWycO}gr5%{n?kKj4|w&N(`B#T`gWTQ@MTs;y`B4({`hU2Pc!CG z<-Oo7idxH>J~3^tep2cv^l9^w!6IYS@f7AmPoZPmCP`9i#{dt#y?c2u7WIjQd}ov| z_>0J)OLyVRG?4uv-uD}Smqx5%FP=M_nk=@DKk$5g5oVux4ZiN;)!TB`nS{I)o#3Uz zz&{;RLUvR*hpE|=m5qRR+8xMyI&iKsF?ChCW8PI{zO%nF`W3Dl6;&Jpemv~X+M|M> z$Fu%sIfT#ki)6n{h3D?@6^G|IcXBloGN{cE*UVhDP6IgaOMK6UqMlL-J!C0)0MAi_ z3RgpWHsPrAvnCQg2&bio+M~Y>U=fv2zAFDr!e95)-00a1B(UPE+Z)3Qh3)_yrL|t&~ct54x zY$kDP@0n4CQ1s2SvgAGpz?|^Iw|>iBz~>^HFn-#ZLs;!IxBFM8>apgvC;EUFE`JlS z{T}8ry>CfU2L7HN&dYNI&qGf~FQfz<9$Oe@^?eTadG8GB7wAWPdmdj$-0=)ivL~R< z&sSU7la73C;LA`P0bEqvZD-8!4Rzmi->#5lJYPGm-n{7s{J5*>*U=A{V^)7AasGzGMfRN&@c`xcpLLM`gnmJA;RKqE_TxZAxPs+*U`-jNDRfhgAS&+YG z9|urCx2MwhQ)`Po(ATfeY`7jSCVu`5Q%GGb#vH5tS`_I;MC=1+uQm8MDV=BEa$(*< zY4+#)f(qzI;<|O1f(7+{$}@^gGV0m0r&wqH;CeX3h3=ZqA>Jy;cD|s*`&B=BZ9fZi z-*K{5NECF1`F0AWaq#7m5`{9lhzqAzv>kWhFEmQrpgs$K{f+)bJ3ObUYLw>s;PELd zZnfv*{!_F%yl-y7eeK=b!mJ8COEc8{1>)gE=9QIv@Zm%C8cWV>!29>aUZ<;oFFE&_ zRM885v+3PFUL)YvVSR&e2Jq9L#5cTz^hJ_F z6ZlJqAobHl{NM>{eq4|Po?}V*cu>I>KC9^Wa;DAMghX)g9h+$6wJ$7h^6>M`eM2D} z$j2$AeFk#S$;M6;nm)(#Cc59{Q)MFJHB@_XOc`^3m!llR&R{pO7c?7|)}4*`uZsDe%6#UcXGl`&!Gqx-t%) zik|UeL=Wn_X~C}h0wm0Dc3vH~UPiu3p3eR^C${3FKzB+O&Xw%@IxOA5*{PCc2k`lJ z&+t3n8itPZHR76y0Qj$@wl@=pF(2%Xvwtr=`V-GZ?P1`Bp7+S&#W73FH?gw1_;3G~ z_lF^u-@uFV7ehjZKH@yvl_sZXk2~jdpCdQP5hUPC)`VO2Z@=PeMdP2xf8z5f3TaW((oR zyx)2eJmtEF!uj$X!gu3UjU?i2D#6lS9{teXe06>~67V-`?lyesiaa;<zPA^%EEdz~^GDuP`7^_f;>oh)5&{DNh9z5HE)wGu(&IX0UN=KFB(k@K`$d=2=cI;jD6t@;dn1 zwx$o;eKX;MwjkC25i1~eZhgPw`yBY&k+kaf1est6{qkLv6?0PRLjoA85FCKb1cM?;w0hvD-Ly>;^w0*f9Hn270!0 z7?m;VKd;Cih5yx}-l}URN8&v0mH4SQjC0^p`}8QgC+d)SWs}@e#3R=^KV{$=#-(i0 zDDYtv{w^*KqVON_B;`8+AH_%Ap7Cyl|DR*IEpR*LU&rpeu@iY_sjl%qN$^AsSAyS& zpk7&A8$S3Q^@*JuPF|B z>f8Cz@U14`17(axzN1d-4wM(CbHnp~^zp};3FO1DE75PDOYn7B?ae@b&@$ey%!dBo zw4qZ;yLvD$tD)bx{}axW)w&mBQqb=Lkfc8z>R-i=Nw?Yf2gD9Tm1yQ>!QWI8>W51d1!QGc9RL0r*0`WoTBvud#v zmjEXyRL5|9QbQeF6q<73A?lJ7$>-ymaDJy+_NbzN$DGn`N^k&kChL6@8*qNJ6i4|) zfhW1pcO;zxeiZ(v9#+7*&lfzxKo)_REiWnVpVoEh^Daye%X;k77S@gzNT zb{$VW=SSk$3-GRnauGb|f~@Y?GxXI={yJ1wj(o(r^W#^iQ>fdLSEr9aM~ykT&0aYf zd$K3S+uoy}du>%)gJ~Z6x`$l-+cXj}^RrI1yd878(!!;-u@n)#XM!o(9~BVmChe&@ zfq0)1FCPlDK`%)Dy1#K7_?Eh*aBaj>4uxStT6ZC#fUt>lF-;<-wBeQTCC7rbE`|8ndn@aY39arqjU+tvQ;bzUi+o22w#g-`Ijxx_O2 zT>>w;tnub9>Xi8H@t5csq0>co_+9hB96LVe`|6qCF*KtEHG#X*x~@|3;qS+Ivb?wa zf%f zZk$~!RU;F{VKNv0fVa+X{Sm7A2y-Nf7W1xF@F#`I+s^T$-W$nGKjn-%xl*@i-Vr=! z3UlVLE_kX!EiY+r#Mg3Xg!UWERu(9qGjmsNuZyJCIDj>IdH+{W+=F|MH34O!<)4(5H^*Fxrda`4nbo z>D}i>VK%fs1%TJ@4n>+zI#mSgdY{J`;}KxaQrM@1~l|dn5#XDZNXF zZsUD=51kzUHy>4flkdbm^v8AU-J|=UfOv}(P7?RdMgRS%>PzrP17*hK+wOQiHC;b{ z55VW$EOVrQzS6s+KH&>~@5~RsFQbo;|15j`r-E_`_eP-^!OxgiFmOw1XcPKN-rLPV zb?jTbFM9Rx78y*MX!en7o#s!+do|3%n(WMGz|Y`*oWjeYl}Q0F{)Q|1NpLlE^BnR80OLiUJ5^s`Odar(K;?K(sLlus{D+NN|2mG;iC)957;gw`~ggYWEHvpqt4jZhm&x$Uq)!i4+xH z!`>4aRg;_ah^JqVPMnT;Sxi_ETkg9Ql8E`qp``UEg+xn2*(x<#F(DSB^=cd9FZXq< zTv8C8x1>|AUF_j2pfoWzkc5t)a^Tlbf7FRDKE;ONew+|m6{fVtoWg92`GtP$TUw^$ zDZ{HwM$obM@FP?TIx=H13UT=x17APzQ$Xo!b!I2mD0EVNIw6#d)xoh`>Y3>~Upb%@Rhb;!PA)or`~ z@s6@aYQWoL0pTxc)$x3Xo;qNboI|J{DNhu|^PEJHq2yJK`50IeBFKPw_ChWJcK1=g zIFE=LP+;Ct;w75G{n!^|u$H+EJRPG}#glRi^b?*lGhYwGeu_2WV?R(|*oF>iu0r2o z=@1?eD~DfCT1LJpi9}@g81b+=kO`_=ttQ?J;I-ElIW7&5i0-!JtqZcK-<5~U-drFN z?CV4JE$~%b_{{BP&5pTl^_{GL-xd(}ekA6c4@8~PEnjmN_%ETVn$+!(K?r#^=`e-D z$2xfNI@Lq?jMNWVct{~GiTd_p={)pR7M$M+{%5=Hp^iiFC62!#=LBqpUhG(^|57`b z$b2NQ*Qycx;kuRdsR!t5KARTn*hdL`{vBmDCe)wA^ST;TUxV(xKHp&vZ==!dS$ zz(XV{KW`u8s}CHWf3D^djM5Cjp${?VKHFsVnLg%F6)4yXV(!2Pp6Y_4W#Hqt@?*c| zbBNEIKARwMij{LPuY+zjwT+kNA`)WC^--r>sau9bK{%)+uv@OgS!b(B*= zfA`p}|MGM{=Gp!<+PV%Lo3MT8Xh;s~#2AlmX6SJmBi3^)t(ddHk$i|0!1xkR#imIgHy`Xi$6Hn?Da0wu*j&H^9$+|xGPf8rct z&G*0C4xDoG+KS){R^YcPvh7RoVjh3iducSF2PsCA&ckoQ8WfV@vk&$C0rSCj5$vZ6 zWL=;Y!tX~4FbjgmVM~^%dai&v&8g1i<|Oj0f^u6?75H}#uHcXV{=RM8Z&g|F3dfw8 zAEVB5W9;6)g8@IcHoy2BxXesiqKguBU_0*wjo@d@33$6a$ALU{*_FmP3g>f*&cT5q zd|!}LoSI4w-|wx3^!x=e*88uQ>1k}ZgY`z@DT1bSa9T7~i zF9gqi!sT;R5usg`vl?heCK`6dHw286FmK8DstWX6ip1HD4%GRp4qF#Im?&TPVIDhCkS6Vv-L{_dH4!Nenzam zdxCx!rukM{)H8IGv@gn`|6Vm4dPDIWb<-EEbY05=Vyx8Jb3=DWedQCPIkJcTy;`D3n5F zr>v~(Y^m@1{(67p&FgudbDwjraZZBTbXEY3%-3~4JCH>oa8Mcf1V>)_e_ z2{w5C72Yn{`G=N8p6DKxxf%fdH^Nfk7IKD33 z8DpBlgij=$%O{#i9G6CW&c0_5*+U;0toLZ7<*}7N=N=k)&h?ee&WizEe4b3}5QCiA zz^!7Q${+>H_;(A6GRVKg&}zpq8u>S2eq~_^jTk2enoSDRz*mVYP7&}Hm;Nb=&Oz4} z6y4`yiF%l=7ydl1y@tFem+na)4uUV?uX z`$WkEb?P>aer4d3ZsQ}S>E>xAFFXj$Bdxzl1lO3nPpIxV2 z+lqJ_(9T`t18%vR((rL23Ul9==8ANVrjd7_)3$E52Hv5(VQ>$gOCt~7i}v7$Mo-N~ zOGT%Vr*U$P$97`g@KC61_?2wJ`@MJF4fJbu=QXz9JrBM`OPT-k7Wn7Siirq$z@Ou| zC8h%BzQc~#f2VCJ#AaRiyN{+665wIc7`%c?l3pd17l}~G5{E>EtOzP$(OjZ_$QJta z4;cY1c>NLMEBxjNjVv>0HBIWJLcewW=5p-CExR7DdiDQ|JTy&Co(yhat;=FRFVBYaoL}SFL&~9Z4g<1GdvMJF>{8 zs$JUAT@>=HD*eJPGddBb!V-||zP z6{sKY{?=)6fS$VV-=t(W`mmW2Tj^z}SJ}Esi#BJGM?xYYsp7y@0=ss%qkj*mh|c}v zPA4Calm}`>G06LE)^o8T)c^O){52@0le!i66YP&OF_-X})QcG=xpq6;G4KwPXo{}9 zyvH5imyFufy^jgM#mz)@XC_fuAu>C^jz%_UNG@)V!`wbmr-;{rIfSXw^4#?n@?K8d zO78niLWwoqF|vY5#A`fQ1?-t*AKT5+&UN^DB+=&EF+3mh=AHe}cW3;odp-6H{fe1Q zmJ#p)-Qc)S4$jB}IZA=y8R!$5Wi@Z1uXthT^;-db)tQ(ryV`amUl^y}UfBdcti^ax z*ahGoH)nq>*_e)>a~3&|yy9;oza#~?gqz!pU>fj#d!_#0SM-qQvIV{h0M9FHnLRj{ z3S2$u{k0P;>11wkiKz>8Nz<>q4e4dz!8;w#-_V54J&i7?>jyk?%ar?3;6L}=T7s=w z{^#`q&U|piUS{pZ8vhdXC1XWAt?-2;ZJ|i;_~Dho9A?3sd1ld2Vf=jxnLS@5G6DTV zwN#0gOjCq z#kx<-X!ypCj7}APNz5e7N6**4JplaO{NDN60PLN3lUeJEx{Y0#g}X}-{^X^lE-S3F zNlgEI*{a%X;-A%)XpK3-8E>1f6?0)O>fVHg0L*oyCjK~Z4m!mE56*%0_o?Kx$L+>d zHORkby%!H64qy8GNWBUi!Sh1+IeyILxnvmfmU%CmaEd1{zs|%Qf1#hoFKe?%i>u<- zM$|{jZ-w(}F()f>XKPw%B=EqsE8EV0ppwgLp5>R8(Fk*J;WBSFofNnUd^r%pAT3X{ zXAhx1yPp~A{qm2$&!_d_`Sy( z)Og8|M&7jS7%>{66Z1t4u|~wl>iXm%(;-~%D-m|z45I%|j(c&En7 zL36~HOA6U|=5I@v7%8G*aDr`&PFYjSy;AuL<;VdDi8VX5jngnBK>pqTd?RTPxHG-H>t7 zEe8|Si*<%wr=)?K{~f)$dD0j8XTO$!5fAVS$&`x`g_!r?Z@h3M9yloX{l1Fg3}WvP z<{NbrcyB~{(vo1jKUqR{6nuk2qKv$T9rTiw`Y#pJfm`@I6_?P1e#SgvY4}<6mm{m$ zM4qA!Y~E@nz>a?2>`LXC4X7hb3|i`Ap!-hHT0M;XIXQN&yYS}!I;G7UZofgkD{Ax8 zMtzaBsl%ej4E>ypKWi@ZcVR5QuX1-#FfVq*NcJxFM!XzYbK)oZ^k9E8{fpV;=Mh>1 zA3K$>Kh10uHO6zfZm;&DS~f|$IYiNf|4TK9%lP(V`0+%-4bC)Wk^Rw^=ts}OfAakk zuS{V!ksDI1tS-wYp+V2BVxQr@XW4a!q5oI9tNA-@27a-<3#-R5Unj?**Yy+5h0rsq zK2g9MdMUPk7p_4EVkNaf4m_E+tjCEvPSh(nfH*sBp zxGkNCSJV|tVP6g>&-26xKL(jR7;>*QhE4__zPY(XpGt0(r#)`Qe3R{uBlAC8#`Uqc zJIs#$ouTX>ARa>_Iv%VV$DJ5NPR7x>b{4-kc-8Yu4ET#K{@kzv{lXjX4g0i>sYH0{ z?5Q%~k@NREo#l=&2v2h4F1>A08qp2%-sgZuvuGe~=U z(G&l827CrX=CI6?oZ_L4&4{l6d;M424VdI^<(vIRUzy~awBFU4GvE;v0z8Z9RPxtZ zAbR~}_>Mjss$bX%9bB=5Sd0<)z@Q6>S5eP7)&@R(ZVx=e>Lib}Df)X~1HIM230q<& z&(#C3Q2gFq@)3GHrL|Wcw%x{@6~8m_%Olb-7jZPfANVJiQ2K$=JHXZSgojemk9F3$ zO(+9jU-?+Q|Nl9U>#7uTJvXC&?cF~-EXRUc(n zI;9AGZ?kEe>>=P|X$>uEvgn7GX()+!AWmmp8<+KA&YJKZnXX&FRlX<(8H{4D`$Wu| zfcgw_QY7bg({a4Nu7Ym-Ba3uY6tX#ix2htdCWpa?yYG9gF$8_SjDptDtGIsS!=K;Y z0bijv$STQApflz$`sxRsHql#d;zJzf=bL7}-M~j7{(LSn3EklHb?x|fn8W9JJ*Y6G zH=6{r_^6IzKKRy6Qz~_cBMlUBPk^IW`|j2&O9iecedCt}`YV}Qp~9udkQWq-+&gw> zlQO0E`?E3s%3plIW1l`g{}$W9hw+(2PQ5S9Wf}7G8s}gCe~ykjdl<>`z~lGT>#rNm zBwt>YehkNTs_QRn@5J@&wC_Fl4Z0CyU!NHbHt@>jXZkaBaedZ5Ytq;T-;RzOCz~Vk z^5eX%FCyR@P`YvUr6KS=^>ZH6=x>)a$8p5i(8%#FWxGik8mZjh=jbOwC-a>?Ps1>8 z;nbriNhZ4)#F8nu3M+i}3Tu?Zr%V&`&hRX&y$sQdie2=Yl*Y z!R}eJ2Xisyd}@}(p^q1)r2Kfa4Ci*S53dJst0bQFHZ|y%ONI8w1Y%#F+byv?jxaij z2@z;m9)Y~4&3%aSg@JhurFB2gF-gyIv)6OxO!9o*`l`}uCfRe6Ge;Sw z=7$#F>~N<*|8Z)COAzu^;-t}uPT=Di&N|E#6 zIkR*;kcsOsa{BX@E5Mt!nvACacee8Wq{~tRze(B-$(7E~p=@ZQegNJ`zoA(=;$EkiXsLmGoIMeN{WF7MEj-PAF%z?-1@KsiRkA%)atxQ=!0MCKk z{*QSsm`6IqzUPc0{QouyQE_Jd_V@vR|4hr=1v0WSOfFIWK1h^hiz|R*xE1Xu&B<`uQ?HgY}x1M^6-T@x>vTo0> zTHxm7lUc|bUR-C62+co18HCAta(~Mr{KGNFGA=N{&ncRi{y)!Hc>TV}>+RSxIMddZ z#6l(V(nDTn-EdAn)R&q4jrk!P`X9Pr&WL`yU)*o zb3}e*C)Iu<_PTA~_3swywM|9_H4dmdGb*31lg8eSAW|>n4?U#p`|u4tz}?nuUg^#n zi}}f}2LtuxaBkfRxq1V*mCDxz^9Co(?@6MU*JB>Zl23moAAldNv*9+`(?liF0fXT` zy=f%-hFaAu_L>S-KHE4cMZu?^ptyQFC4^ zgZmHgA9s%SYGL>zybl{q0w-*mkC*b9$6kbe-BnvY(aD)B)q~D_H1a@TP;ADWMuJ4> z))6{1A~?7Buc?AYZseZf*s~e^b4OR^OHBqT`Ye**{ft38(|e@;ApZ@A&bYS&=d2JZ zZqvjoCHQ=srUQe}`<5mx2Tt8wTi&nr3i!`(<8F1_AFs~0IXZH{(eDp!pPm7qb~@~I z6`l*RTSJjMZ{pv(?tLgvLR@t^-p_{qO}xc>_?aj6OLwH%@3m$S<;hJeqqbx~ukNsx z|5Q48IlOqL!VkO<%$klLPluS{vpfmMGoH zdYnPT?ri?S6#_g`G3aTc65?92Z;zuAelO|VUF8D3-`fp;ZoT@Sx3%cmj&tCBXw`v> z(D{#<|1ByiLjJSOc;5tlMW*qJNG|Ad85>IX8iJQ?4EkWQ?I_N9w;eqT|1i(+l(7OQ z_L|i1Q;iENLR~9&!`7#5wX~IP_s* ze>%xk_*mhJy#MOm_N(jMu$Pm~)^Qtj4Nv8MpWC#OLL7SMi^Lm{w^W@ZRpcpz*j^1d zCj(yiux8l*alxXJbt)Hqq)Ba!of+nUD1}ZeKb?xYvW6?UmmN5DRFP;(MLMyx@hKcN z!alcZ;rS`(KWd#u{ytB^T&uNj8NZ-+T*9)aCJTL=!;6HDM&Rq_eJ`tcr7{2N`kG%4 zp5goKm!^Iq&O+X8-X8&-@Qq;e^jXYN=r58UuQ``ZyzQZJnDg!{4^@R|k7C^6-tmYOlNKZ#j=r^rET6X~!X#_p9i{ruM*dYklOAR}`}* zWhODaliZiV$t3g*iMLb+7-X!C+dlmwgNS)V<()svB)+^a_)Y=Gm)EEWk^jjclJB06 z+r}gQ)~ZK;&}5RMN0~QQm(YmELiqb8#GBRdH_O9JD$#0uGRMe3{N0maeGHz~?eMJn zN#IKbd8b>}eg;3We}m}ltrT*rZ7ZXu0sLv`mwO(l8}tuRxU1J>lR+ze!z1OHgq2G= zwFd8RJM)@ECeleD)6m!HD1$s44ophF!XS;yX2Q!05C=I5|FXd!{P2j`Ckh<%eUv(H zs0WnLcUwg)E- z9YB57?~ykVwgK}7jUU9G!}(w5YS3cDgumq6r_hadz)2)(tv!V>A75f|wRRr*IF`GS zfh?G3mb1%llPBgaPVu}M$;TXI%R7R$=o@Fh+)LUej(nCb!|}g9(EpSLrLh40B6s1K zQ77tFaRH|B=0Uop!#MO`Ex4X=BpL_Tr&9v zZ8#6=EKf0aZo>SvZ8fq?=mBbPL@L(+7uw&s)+i5ow0kN==h!I>VfZ+ypfimQ8m z$qT%u`)K5Q;2_0)`G4xMZKs_&gRH@rpb&nqI2=O-L$GWiSsF;dC;$^`J;i(;k2 zPHDvOuPambB&rm!jw#*arPg%`mICpDgll7h%$6i5?ald#wt^IBmDJ<`z zZL6V^Im1qwSFXS8JMDwd19rKZ`KPil&E*(u7*aUxSlyml|6!M0+08Lv7 zK2i0ze?QNy#`8TgAG{fLW$dc`J6U(qNxR9l4|^kWkC;uC6g z)NMS$O<%Z*8RYX{-+fWQ|N77GOx@ehB&J^l9&x8KiOc3)2`rUNBDvAMyvZ_$L|Jm} zk3;_@x?9ra>M(`qn()3XfbJmb24|=UbPLw>qJmr|aIo&n6UWz4iAprvrKr19vc1OQ zkQ?ykso!E#e%=`YKp?2>iL&JAaj337AXq zR$V20Gjwu|k%q$Pn;ztCEu(E0l};oQxUIB9=p>Z# zbc>h(4ZbzX?&mU8QvQNLn}W`4U(?nSQk%_z3%kdNak(rfaF8a(T>0hi)mO{6A!gyYC7CLAC zMA`$qPi0D|DPa)t^j19Z9r*0n*;alF;Bo%&JJJ7Qj)2$J6n8=RIhLK(Ts(;Wl$Ynm z+&S=rp&up&;Vbf}d{!EVI(TlxcTP1+>!U`Bz^s(6ATvgYsZp)dP46?{4 zZ1VK@jdM--e0wulDvj1=lBdUI-wr16JZS4xzJ^YMVn-bt zfddMzG&(AcxplKmEbHBGqh4}}w|FrHe(&OD4&jqHZ`@BBjTr-n{xb0{%h%s z0FUeC?Vux-MeL6l_V6G1-v@J&Z$I)KON{dJYVgp$2MeUwaK3Vm=;z)C55h9B+pT^K zb6kZVrTbM-iJbh4wl#?i@_eUphN~ol#I8LS+HOrJjtb9=>dNTExl*Ac5WJbIkp6pZ z^lzJEHRjHaFv(hlU$eo-bBIzvQ?Uhq4!L(gO6aU5lWf0iHFEYZc(3v$RiE@}WSTy8 z;D7uz_Aje#Kk%Tac$=M{>~Y>|D|ecLhY7Iy%RAf&oOU^1SV$m7r0yi*YF&1sYPFOytps( zD*Bv~gvo{7$b-GY?S{jrfwMpPH@Ay{bLrsNwbV(}afA5*H=zshth$s_?1blk_t96w zc>evXBeqV1SI;kSS$(52jYP(uY}^uqd2`m|rH}BsWbcb5e1Yjib)P8jVc?v4XTl^d zR%R02O5^9ZG{K|wet5o*6Z1G?M0GX(qQ5aoC10On|E|9cw;bZ&Z;oY__YmgrXeW*8 z?M)}ltH(t*&`~dL8H)C{gx*$Y!sbyg`nzT2L5~oxduS&wnxS7v|C`h|k9xDxIk2%F zIFD{!M%a)g`nJ{2*KwQSbMu4-D;+rO@4G=KJ5O3Ld2iB-I{uYenpHNXqN;&H*hUPZXNJZuF}sn7Pvn~b~?_u z&NFizuUB4zPG$4tyN2iBE7yMQ>-55THzSlk{sx~nx6tY~@M+!JIrq?=ct3x~o^5i_ z)1sR8F{ZtyB$Svz*PEY=^jq|4 z>m4Vv%^Bow-sYFv*ckBXaEgBSrjw}_t>$%t46?~O^{FQCN}v3cawrlA2|0P=(aIe1 zgVF8hRZb_jIVW7V`cTR7(S_`ig)AcRXM6j6I{bFr>(Bi(1HQ}FIr0>9$vpRdQkjjtQTc3aCKR$}ig#^! zDEbev&a2De)0;JRH@SS4M%+|3M#Mb^pDi1la;1V!n(s$WH3Q#Kd-_A{yb$`lr7oH} z3JfBy$97yv8+yaATUtkOA9tP?6U zagP0#f1_Cq+-FwfP}1}u_Lr>Iw%P>ztoE{M&;a6W>4S#*UyQRznOIc5@OtPa_P8{- z-vQ2Nr8+(G5`BldMVT)8o8Ztb)=KCng8wYcxBSi|Hmtp`+v>B)U;e)Pt3Odm)V&n8 zeBj3NV;yerx!&DDae9e^{=*k3${iCpE~+fpg_!v%Ii! z7P)aGdHWfc4D$Yr-u^7;9548uXfQ|pNhTQ_67anieb)Q>HwgRJ><%Y?gYUF!ryL~! zejf33O#ut|uvS)R#O%HYK0ZWgE+Hk8*fm+4{)qUP&z2-jEEMv&oO_Qn9X<$3sm}uH zxQywwI<^W_QWd&z>Fo&c*m{N4*`MI^OcIp)dI9k_xbMfgU8wW6g|vUh-hjmQTbnEK zDmS*nyu&<`e5%{M`Yw12D}$i8A>c={Gn#bCsVp+DedbEpIOh2j-uBFC$s*JHLoO%- zr`fbsw5}3;o!P>p>ubEgBl0g=HX(mmQ#V?-8ewj7$fHhn{G8MA&|RK~F{h;X&DzT+ zvPnw<(VlvX`axoRy{iiJF2a|Nn}J6R+!%28WDkDsy5@sO=;17WhqD&kqLOLFt{0)e zC7jcW-aY@$AOXAOuY12?kVnRkHy@8gG06a*-JCeX3qE3~oxURr zx}W0y_MPS6R|N%r(Ca(VceZp_OQRmZx8TXtg6wE0^VC7Tf(h+4SKhHnoq&K zY?8Fr{&61qGP))Qm;6^MiI_K>$VQ$H)ruWjkj4DysCwhw)yPYs)9TB?2ZZOGp{OE{ z`d-&oklKbieS?*aGU~^>C66Y{pI{F5Y?Q{UMc{z~ej(z(Ava3O&YsY~o^7#7B?j=g zx$!4{-?)IQw@OdzUw~eF)^qsXg&LVpure*V&t2jCBn_s8h3LtPT2YjGR%ev{|3f=WZ7?L=dR!-t;4c1WEv#3kv9GnI3OaT{)($*HEg1=~dllIU7bND6( zPJd>m5iLc+#|pkgGiObyR2=+1#}mtAoZ&B^91Hto1wX44i~Cd>^wc9y8biQqIQ%BB zYNj^ok|jCC}gscU7>Mz7P%R%B6_0=@pbmk-^q{gFI;O4s(XZUXW(;= z7IZDfZS%pVVwfNKV8>z3F!;=*)33>}Vn4LqTcO(qS!BS=#!jIZbt13RO4nKV3#;Gg z$M68xKf1-a0$;PtUp#*SeB9rK-E8{MjdBJyNdLdz{;sr&;Ue_C!5;h?u?!04u^&A( zj5%8eSMf*uf(~zD?Y5tpeu&HIImUe{8sR$^prMO=aAVtxhWIijiDIdSRGUfk)1pU@ z@Z^w*iM%MIt2yKm#VzqlJDu!K>JPYSK_%_x)V&?jG-A;p;jUbSbNbzORbl8T6VFwP z-Kl|2CQxt9aw?ufp%3z_c4U)^_eZ;%XW%2C#WgBHA9Al`a>IKwCh7F6ym10`=@RF& z9?Uid<{hm1{N*m4@VS`A6@zDWq=}U5cEtP!nO!H9pTSQSDX1ozjX4xGN_hdlun*Ga zySE1Nq{f%*v%C19zgw>)H~N@L^#1-b{=uM=QO(=4%WzJ{v~P^!#Cat5QHsmJKa+^* zZSBxo2fh3Cj;#+3(#iGE+kKsi&~Zd->(wh`Zf16?_XgmF9jC&jR)gQB?^&I6Z#(8A zbJ=u_0&k={DoI&IL07tP+RF%a+MO$hs<~GoFRNLST#NUWb?#mrCGIy27yBNAE&d6(-;fNRJf;jUf@=W!KrVBZ^FP4td=hvoS zPhxUS)rRHJdtJ-j6O8)F{%FM3&}ZP$J{)x0j<{-g6+fOY4c(e%oMh1m@ctQ|h-gjl z@QuRBX~1_zT4kMv&jTk(lPa-WisygpNb@!H9S+*@RMvLXmuZndIdR_lV}s#K)K^BA zR8>_x>E!X|jqDES$GBH;XD$3=5<#gB6?XX?q85CrQrkF(TwdSipMt*anHH!a^DGRRGCOY7z!%o9HMhg)VD zjd*kJ+qL05gB&_n7kkqfyjelH>AOkjmKE&w*}yMw^|{m99s20M<{n0T2cC10X<{#| z1pQj*jj&%DG{SK(>PaT@-9Y%M?7hJC1eco+mtTg@?tOko$UI(83>JSuy|m(-L z)RQxhg886-6aA#n@clIv?f&ViDqO$xpl5Yr$Rn%n4wSjM!Z-8ki%Rqe=E}TDzbX3; zdc;_#5|icN%f1c2wgH~sk#@Q)eFx??UFRqgO+!C4lFa(|4}4E;mu8=B0pGdf$2$49 zStO=+J7*;7;nsSe%Twr=M>&taG?zsmknWaz0`aIvnHG^Ogzo)N>*N3D&OEe;u-T2i zGV1Z?K?1#brf`DwB6K0jyoOT$FmHujY}aK6)QRpK!duJ0t9P7Twd~AjL;e6JM=3?+$m!I!1 z-UD9GM(bV+uD8a+`<~}?uve#8A=cal`p+7UGc{@0gF0q?C;KAy3;ESa&fR~8dGZ|p zO!cq_j_07=Wh3~H3Yy|0k}wbMRkN7w0r0lviiyAQKF;3T)L&mxN!rqL9*)|`+n*(` z^k^V{SAUq7lEI$0p_g_cZP5Qu*T;V(nZ)8gi%uo#i%!Qa0_VXe>nY|*-2g8&o48Hl zT03y%60L_8sH2R(XxL|}(a4vfH&(x(2W{qa~_jLLtQ zIf^)n5xuqsb!Hmfb|Kmg`+oPm;$IIwKq+o#zECFmpqpEbNJTcuJ7zO4jX1JeZqW1r zd1Qe5La4$e_%ugEUp&VB=eVq>y8I+?&*i1NgH zEc`h)WlpmL->~*<T^&IvNfqX&Y|k}okxb~sy1 zA>!}b%__Bvz;Q+dT~g1zgwAbFo4RX`PAs}&Ot&@CFz4}a<_3NyDL|7o9u~NwvNiI?h*}5-{;@gbI=F;jOQz?KwN&inVxhQcxm=KS*&m&a&t$9=!{IFDa@nr zJq+h}%ZP+J{AyWCN_QH;uNU?@;z~v|;%v}}HRde*-}BMJHnrf7ZA0HJvjF~+YPxkf zcyEm(Iqd)MA+B2Qf$uXWy4mj=G0Pqb*+SSs++LrgI*;07NON1CpA zf8iKGoP_@73}Yqu zx$0K*c}KUSex)>DO(?>ArkzEF78aNzy7*h@5^&N|5qlo%SMc#Jg#3GX1?Sp>wQ);N zV;{ib;i?_LK{6jFgbAX~9sC!~=X(%1PO{iL&dtC*{*@~@r{cP=Ddk%Pe)(Q>=-~fx zv&yC6WB$C6 ze@p5cegcm->qu=(S9z0}OnwjB7CnDe9eY94Aj+1@W8%8UW zXvbAFJbTC_s|3oP{(x?q!oBO!6#Q)Qp%cajwm|nNKRrL$&Ls7^vag~Oa>#R;1cw_k zIfS)E_<)2|4$)pX!+iRHN!nM4UrI$>OYUD~eh_>_(eR55PyBoTVvonz8YWqP(UX2e zk4`)#9`(Lk2|hY3bSlz`K^g|Re-1onkZzu2GP(izIH~5hKH`lMz3w@q4ZaPz;#b+z zSwu9%^^P^_I>pNyeH@0tGjFW*GysoQaB!!kSOogbdT)sb;O#>9@~xE4g}-SV)hrnO zUxrW8Zg%jZ1O4n4cOFs5_Y^5F6X+ns)cYPz;rg3zvSt?J9B(-{bJhDJ@b@I~qfgBc zS1Z0vtcXP4=Q8fP<4zVi^tin^4gGlKvqe+q>`W5xasL$?@H(5G$T&iSpV=p0Z5MRV znax90&)_pi4yj7Zyo~3&#m-_~1$=x*bS|ik!q@C)zw`MQd~So_F3ktPFQl?|EiFhV zyRLjb7J$F&jqu9QFAt#ieC`yQ9*uKkP59Tq*$m=9v-j%8-_Par?%f;Y*ReYryVHSh zeLwr7W%neWWA|?o8$z(xNh?zOT4Or-;qGGMZVJEkmgfCROw@~~{HOB~7g68#f48yi6zfIcEvq`UKJLB>d|%63FCILE#K81MZ`AiKw;%0{;ly5x zwk2-oCU8D}sQ=);H-q?lv1aDI#r#(ZCZBQx`b5XmKaL&)UnshN&?yRajJes9*w?sD zi;9+ACa5b8ZR7Z6LL+;&a()#7US~Zt>|7s6BN-NQXWGI4n6vr>aL3Vz9;-`VTNUaw z*^aeYnN%{Y#v#!=0X?$U_pF1cV}JrS=b)BIp&!!X;2rrco9FJ5dHFmEO-IM zm5VDLGfC>_RjC|za>%YW*28z;uSp5GdMt&?Bp#jDDwad{|L5525^ZrN@orouWQqL7 zrF(Xn>n+6f>GmBqs8_Xf<|-PRa>(l}@LNA~hy!2QgDtNaa@nds3cB<(#>ILK>p+X%^jz-2{z>IcZ4FBpp=3-H%%J=J#k7Um5kC-xeGZ`(Wg zS)diKbL`_EUH}htS`mLJ1^KSOf1zmr`9xHd>-9bw`l}0DN3y|x+!YJGR0LiseSfR` z$NSKsEO#4M13$H@V&RJ=@L3Pbr~|u~0AFrza61UxaB({BZU^$3_8z^^6$`+TqWoyi zGnwR#QugU;@C-^{zV@~~f?xdX3g^lv$WLm=;~U{0%-mG)E7Aw^y&8FH#}eS5S2Yyk zgHE*RcKMon9_U}%7OX9{0cRKt7<&O-NmA6(lRFXb;^(JZ!h!Er`=3&HY7PHxw@^6$ zb?o^gTP~X~q?6!J@$?Ar5)KCfrENYzk1ABXY-k1aa2{-q$L688iLG|g!aNgRcK?na zzNmj=pC~>(f%7G=u&U=QbjlNhou|J6|FYFw*7pqerGI^+FFW?p{A&ue#Pc)i)F30V znoe5ZR&sjD$|M1z28O2GIZk8{jpE;1)bcgHfbM?r4xm7 zoDwSQsbuux>qD;AH1g?fmb5zb%z0KFfsLDKq;7KmHI02VQs9yOMD8e)?5H|V?B>7= zymAY2y@~u(nA9{&a>$Lh<3n~`&;cm6ZgH(VWdGh8Rs*&ivO%fs?ywBSkS!4~(_0+{t>|D=ub4MKD*)YwY#Z;9=uEP8K8QsC zubi#bT>Qurq+#uY&V9(QIw~@e_`QL=zApprp^v*VS@-n@bf_E6x2`*uMc6ZQ3RlKp zez3978aLEoL4&F9N4=;dH;Iyz3%o9a^5$8ZABA)(1sjXL#GEy*#Kg*{Y2<9^qP)OG z#A{z<$_Ww7`#CuvSo#EdmwT%P^r44Y<^Ao?W6Vj~yEs$C13hWJb70#QyKH& zZ(-xc`%BLpxJN9@xGZ?fEU!(0V@=s4bAH@24S3`>>iQZG=tOMk!9)-2x#2wPlq~U^ zM$8<_?#Xdrp3jzO8|f98r)8>TC=XqtGaq+~izMbTtGURuKBSRtYbM^5bU-I_#(rJh zFZiV5%=S>RPr!=5o?#6Am-NUl|L}L{JBxMZ_zCJYksU%w?%=yOPhPec&n0zRM?UxX z<&d7Vq!k-!OcH(SxFnAqlQdZ!WVI22?klk`^7|_$+5L0<%jDNN#IQJrjkYG2aF?zB zSRtEBHYF}mT<(%ftiOcPSGVMlLJPmp$r2{nOtMc|?PHSKkn3wQlAupEu3jeso!QN^ z)&<*H7-W#pHrqpQ)y!ctLv4X>Ml|K?>w~CUhc_q;Q5nSR<+UnS_yhy)*nAd79B&pj z>F4!l5Q{3aUuJmzGfwOK?YW7)DH7RY$EC5~MC3ta0{R!m>56Po3FzyX{d*p4Lf&ck z7p_x+xLG3D-RA>6PjIKsM%4dxIl_4f;JfcKujg0`;eD}K!?c)5N?x0J1foxRdF+1r zKspLCiJ~r1k{j1QY?0BVh|1xk%=a#?GCzbHZW#Ll@ z{Z{kOW2vod*z2Vdt$!{WbAuk5^KvXh9Jp~~1t|2C7T(M?z#|JPldg)Gf=A%c`t?x> z=lg!mSViO~tH)e79%f)4e1JiPC-kjm&$g?5ga2Sd;?bhGKiF$8{S(iP4EeP(3py~Z}+ zLEgV=MmAwSUVq@ZtEzhte@-)2it)H!twi8F@Mf;jy}wxwZ z7bWo8IQTW|&5K)4LHF4#Uv-A$hiGZw6K_P>bMRd9 zhs%V~Lg0@}v!H%Hh`QB8-jK4NPNK$jry`kj!aD23q@jLg;oj|k-5z;0iET#cHNNk^ z|G{=K_^F#dZU4r@AdA(fYi-eAT|cs?MZ!LpM5`2T?aa#|X0w_ZqsU{2#^O$^ffokHfB)T#+CByjqt(0aLHS|lZN@gqByn(mv z4<_2EXB^qqMVr6KB-_^Q3gh&F4&s7u3McqBhN^57W-pWD92X8L2?1BISi!b-7I~xX z;rpMc6aCGN0!n~0?_QyJ`54a8m~{88UvYoaPbat^c7wj|`;z31!s!2ARR6xR8TqvA z{)_eC350ad<==|I9QcZZm8vH)$<1ZIjcrnayG^iJ90FeIUN4;NhWMK2OXQqY#vHB_ z_Js-1FWVUJ-FI>q=9#WN^kFY_i7(sU`i`ORG0UeJZ0dwhC}f)D#vSCxg$0gI;16|f z8G~^>_&XIezKtCLpZO?;Yv~T)?j4oswwuxkP3z8nR`6h6k>iFZIyBe@JM&R z7qY&Z@aaeu2{p5#p8PnNtsR0ssL^+9BnxqPfUMHJ0{_so%>383H1asm_r)_h`al+4 zI-e)>6=J;dyujBle3I}~J_&u!J3A4r92z-d|A=AxflfZPC#G37KyMp$&EgUI&K)@$ z#Z)(8{$xql_p2Eh#A#>k_MKIz6RbXUZ?=Pv!MluWhavQ0o{C>5@cHF#y?yfqd9dst zt99{y=vW;j6AIuz*n8o2(*OJ2*u+XjxYgn7&^ZiRFOvju`83>`gZ_(!+%dX?IYW1j z4INpA{W%xq8get>KlfF=zG4A5k=Z-7ig@e|c9K;KKZJgt%e1)XN;bJ=ylP9$Cw%QA ze#uoB{-ICV>N~r!r(w4rhuDAzg|3B9i9}UC8f#Yu|^R;fVXOI|! zhwMJcAN2e8HY-5qa+8VV@wXYwX7j|<5N2J+BCE!{-9wl zjq4N3aMY`_r$0<=1U|cEPHP5n{=0ZOYG)|?Z5m-S@g_Osbf{EQe;;_c^@Y-^GQdHp z2TI@NF~}tz?PmF-405jQZlB#o?WPSN7A%w~<Wu5mH;#8s;bmZ+73KQCm+a@_?-nf&lh_%Gf)r4_N-ggV~hRg z91jkvyuhA|*vi%Ue9uV7HhHFBM46fPFCG z?bS@&qxp}s9!*4-2F0(ne1|5zpJE`7D1eulxA zqo0@(9%4u(lC)Ri&KGE8uf@46Tkue1?O?B>A)O4EIa(RQ51nyaL8H7J?=PDC{o5Ei zStawqap3q$#bx|~xXyj6B|m$0f&U0!6ROLGIZK?`F`cKuM^>}^tlEL!pF1ym^ELbp z$NJTbQRi+5S=_pSzON~1dv4Ykbj@mN^SeCod264su8aVVV%V}q2Ip*9aRrD?Lgctna;W?cD_Rxtz<6XJ#PYhBk z8Jzm2mO;M8t+tk40FM8#^N^K1gLGE4#6P70cUVi!hKil}ep@ZLx z9qw!T0Q|+OBwarUe0sHwOYR@wpG!2~T@I^+F51~z-~fDXv&XWY$629obEXx41)nf* zaU$qWIpR(C`+2|n4C4Q2Qh}-qAF4#uCe1PM=@oycc@clCLX+DJYZzqbdA1*do1yFH zYTS8xAN=M*J$(j-&~r$*aO!#jf3#DPd2t4FSmv3gWfIxs<(7BSqAI{a?oY1y+mcOI ztJaCTwZdQI)DYE+f3NM5ys;ejr9=Oo=$~HP2g%qzy-DE7gJ(>gXW;MnwRyo8{ARlU zwDZHWh}Rg0KU-E|-dy(xXDb1puxH>{VIb<$eu1SYq7iT8>fVjeKNQwvbiZkYt}LK6 zKAi>iQMN$(PUH=D5tkeM;EfacQpFEIkLVpatvYcsjR?f;(`J}puH?m2PTU^g=a`Q! z=YS6%*pifg6JG}@to^(EHsbAq{b#>$%oj7#<noAp;=b^G z7K0z4Hzr=8GK0*i{ZLPsr;yd^rdxS%om+1A>^+}NCA&-ITBWu{Ibs*(E#4n#>SR%jz-3RMv*kkDR@czuhx!GF-JoyECBrb4mpt} zQjOSa=jto99DJVm`uSsgO5hznHY~3g#N625D`r!C(C3<44ob5?PvfU^tg;UMr>Q8{ zE?wY4BEIV%K|f~Zms7X{{kHg$@}yMMk+Q3+r0J~Sr^|2OdWrj2CGyg`#SS_#!Nidq z@C4&^3(k%3!74xWG8SG5-LBVCd0l53*eHdW;Hg(H%E$Aw(8-EyzdI9Jh?`bT>+)srkNrIU{@e!4?O9UqxzG)KZ+z#% zl~qh~@veQW%OHa=?KcizsbG-PVu3@a#u%heOYqhU_&*u5)H4pV@QtRl>z}y7BcI11>QJ~3hvNUj<^_TyZd*~}#F?`D?12?8J9sd?2|0`YZsZQEfk23a4LE^{2XjLofKF;3K% z{l?T^2dAI|`+I028|Oq{)@^eg83tK-r7*MWHh!+BJxBZm^08XS>@FMl%`=l~<9L7@ zzMvN!@Bxpxz3aM6GxXqm?=$V74hJV@_2JMTxJ5D4QBPXa7=2rgBksK4 zO3CqIUe4`yj?Sx@gqBb$C5HMC-!~ieW%?tPbWuC zCgtd(-a8X=>%N$2I!R-ViyK@Do#3of3HLDcP&todrO?OCCr#ZdUjzKHn|=8K)LEQU zx@-&q=ojnX)V}))-rU5gVe%V%a~L1{0(fW#(Jr9i^9g+)kxddqT^qB}z6W!v&OMbC zoB4%)Ze>s0@hzz1rVqY;3mtOV1=`7>Y2?|88`s9tpu6^sF}x*@d5P<^Bz6J6?C6-D zZgHj%bv9iGDP1c0uHPbSvy6&8=!=PQUvQ2|JMlRJU!T6qsGMF;C;v=Xm9w$m)4y#% zGolwb_?_|(BRk-~skk*u1I{q}*`W6s<`qPGDx9H@AdjbPJ^Y>n`TGa;urhdv*BkAZ zWWB}SvSHsp+C$(gZO{Dsx)gZN(CLK;@Ehw>dP-IZWRv*=^;0U~*JTUx{vHlMf65}U zNEHSj=g}+r1p4@TKE4}QP+!=Xd1V&<{x+o?(eu${=>`*9~K&z;}rkiirioPj}+VHWu9+@`Cxd zn6Cvm<1S9CwY$K}RYsTuePI%{#REy@7jlSIW^C)so*WWiW%gM?FNYk|ldk>)yyWMD z=m`s)8*VEZwqB@b7d8|fz6`u%!@~J}nuvc<*4xhl@cm=9ipG8kh{K%I&b!?i#P4P) z?L-ruq)d2FI!`i4@nb#vrJV4qi?*`vi-zC*yGgdMcsBXKR$M%DI-7J~^5^QChtF_e z@dJ+-c#$XfLVKV`aj<`;H41%ZbG+QZNh+08=4O^XMSsk$Y~L;iy|4098`W{tjUg#% zlzQk}J(u&BOakW@78hlh)n}2^Fm0U}@L6@k3fCK;Q)k?K_q$dP@n`l++Z*?BH|x}j zBkzzWin~_bh2M2e#|HW$^c7=H@@9j;(Ip&S@V@U&Cwn?ZpV$<_$Nf;kEAKaO3bSqO zaq1aF`M29%<$v(S9oM6evIB339=N|5_<`m{KJ_Fi%xQ7h_Ic$QhzO z+yy*(NPWn?pjph%dsW#Vj&tYn6<-%8=wQZJmh7F~0$$_V=8zB1F_&YVE6?Uz@DYe8 zS^kBd>o4zs$N_8kOgAVI4=LzZoL1cLL7kQt@^LCI0X{}a!`XozDsc~TS5bHiow32c z#W~>Uvzc4jln$YPaNH@L0w1RD+g{lJsO0%KYKSXzc$qn+c>=ODBIM1Ip0b5bX!|IB zJZ$Jc4&~kNLq8U+-?WK_xrH%dXCIctV}6<@$MC91>=SzsE;fSs%mVNJtRl^6#60ZR z!yuePcN+%RUC~9Jdh@l&3g=~kcF&N$8ihFaHm0z&L04l?UaA6)km+l$Mg8! z_jRsw&ULP6W%#Tz9}1jNEFzCeW_ujc;TH?PX>x=We~RY5Ys7Og{gOc}KneKfp#a0( zN#vGTKdh_ST}o8#DwNH^fB&p8UsT8Qc>PNJR0jI7mGI%wDd6PII)67$9-$E9(;oM@ zjf=_1Aro$q*iv$!yI!szd_$dk*^9l_$SH_eGdF(XQVbauUtm*;(a8a zqMp_K_>!FLNgJ4tTiXLhvPVOU+{K)@NPHUKmP(u}Ug0B^IPX0*R9|KA^K>#x`Z1Q2 zlFYGoWt~*iEo=VPMujr+*Co~1;}d+ICq^0s3MeG=Ye~($Jrpw2E;E|<8uyD0%^TzQ zsLQ1WTO`o$?T{AS=5-zCwPT35D4^br)ZKMHk8`v&Pl^V90S|`M^*_1_iHXVTfji#V zlef%Led;jga;?LvZvn^j_y2Cx{*9c!^}NRgFkjJis?C`KA9TiSqf$>Ca!{AZb}8n8B=+Ylx$f22j6DPX z0cWE*1~3m`U+?*;6MKI4M9}SQ$RXEc6%NsZzkeOEbV|7h{on1U^*X3a_dWR4`?B)L z^_Ti4na#^m?!oPOmug*{|@MB0ktgH@zuj85Q>C8*T{Iq>fY&zQr6J2fA9xo7pWi_o_wXi8^)wF93iB4Ut>K2>dw zE2DlF@^U2;E46W-ZLUm{h(dq1xXi@|2On+1_ zM)3XGhPvms*Lh(#=6VLKJS2JX?>(Na(Zs)NFk&#$q+do{`yNFNl*6YrAbZM- zp`6^D;w-&+6t5TlG5PriypP%MZ!&4&SN1&av>*85UFu85Gw82pCS?!m*CSV`sP0V% zLmAQh%SbB^oP5%B%&4~l_oAt|^Anu+?0){v<>%lfO&7M?I+v1K{^lFgDy3xO(<{Qp z;CZy?bhhNi!iQ;PS-Wi!^YW+jLn@dGiKQj8{S5jq9`h-meOHS}3|qgRCw%_mcVEzG zHG}_Oz4h@%IPx{>Hy;bP#q(p!xIXhn5utaHqT0`deD-cLI<@!U|1WIo%}p*K@>OQp z!|+4>v1?`D0AE#L-SQpUr+AJxT0OlG2>y;)BYCndpA1pIpkfIIpK@7_E6W==rpeu_ z2)++X?w8q@`jK1GbLP765O_!4djnax*H>QZfB%U5uSp{x?=&UwaXby51ErBWu9~9G z!~@?+cbv1yVbm=(T3Z(Q8w=*kBO07@Nh6!^vLk&yG57i0+6`PQP+n{5jhvAHdew5{ z3-AqpH)J}6`r2l7IpAP7>ZKZeq&eo=+H8xXmn*=hiyR8Q-hn>TvW~37yoaE6uCzM- zem>u1vm$t<(zy=t0pRP`=1-M=S3qZ5_UztO0zGX`X5bO>fSlVTokqUE*S36oNkK*@pbX+v+4srm#|5A#C{_rHg?Ti`b1rn$VFA2e) zyty zzr0y4{TY0*iQDGC$F8BjYyR>?TLOB47HipMv>?9=fB56j&rY~Jx2xgT+aUFC}$T?%zJ3-?0w9W;h0)zEk@vem>-0 zonjO{o`SpuNwrD|uN3rO&$8>MX3NbBEh`Z`K`oFcML@+a0Fj~5l zq?frwhJ(LY&pPrp1U?z%mesT{^iS(;w_h&HFC(!=+f>u(%E^d}d{G?EU5!8Anu1dq z2|vs#o#cdm%q;!N$u{Wnch=oI@(gv9(fE#!427`vJ!Cs8j`#UQUGF~f{B-wn-nlOb z9`?})-FAHn_MQGr_+m>TBO+cc`S35~?q6qDFJ4NT^DMWu;`KwEx{FMq`#dw3PvOgj zFE#tb?jq<-5*=;R@1TROd&qA8>LupTJ5+V!u0sd?Dzs?W^jCJtauU`o!l9s2UcN@1;D@cKzLQOBIo zpS4waj_8?#-%j`45q7YERL6{-{pkjM{j&P-8Yg_u&8aad8*n}uj2(iTp>vg*hW)pi zM=p0HH%V*$%gL+IRat^g(6r@v0QxR@)0=*Gz-OlI);^^Go?!lu{ro2AQkI) z`Y?EV@HJk)>x_k582n)8xOE*HfzLwy>SkTcFvor_XOIQ+RsAf=S_yOcBwOX_n%*_& znRAM%bC_=)VK32Shu^+DM1pZt6Xz{%U1<>XT{m(5Q9tDOdQ}u3)v`ypHQ57Ek1u@JQmL0hU#eQM;!~bWT+-r0dL`M(u{|F+{o(asJLJ*lv?xW_+2#<* z2YlNy(T8^AvF+wV{@IZ)h393j=8@^H#*I$KxJQ;|FY>_Oc~)bUe(XsB+3oUSve@Sz z?q$dthwtg<+26wUKL6%HuRHMLJTX77yr3TqzlGwp&ExN(1C-qyme&Oj`6qIo7x(-$ z<$>Hk+!nIs;f-w6AMeJi#>qS3GyYkzrT~3fBW7dRP!IaJfbxZr8^D9{$w3@@aIOc> ztE-IwcN!Nl?tNWK5`@P-*$CsDj;XijLRV3d7i}*2Tta4h?Jp^QEhT<3Q~HJ5z+bc{ zp5oP`5XO%y;(5IxA61uJTR=V;_80A%FC_mR z-Skxrbxd9Lgyt)G@R;rarMEs65vdt>#;J%RA`tg=GUO=oZMUr6^Y$(w^lV8l>E9tw zn#b&@xhv*hSzf-*pGDr|eSsqO{lJe*qF)B0k)OczGkp{Et7rZ+>Mp=ZNw>KCY;MEP za<*BQofglrj`vic75M7IyE=k@=8~$^Md9UKJU0=aw&%Y@&ThPNYiLj&p{JpSDEn)Ca>PkP@vqKNa~=qWXM0=h^>`w^;u_wWUuyLrb{8vGsIvenEZ>@7Yc zx8o*orDsZAr;8|jXlGeEZy_%g=vO_`72so&64f&D2Epxj^jU`|g&uzZ?B7&wy+q_>yPm zlo%^$@qJPcm?I70ldLc(_5&V0VRDtmOc(yR`SPfccIX=NZ<~Iy;(iK$TWoL#K9$Go zT==P=+YKpZ30lI>_e$5TI|Tc@J+nDq{6$|L+To**zN7JWhhIMMorC)(w-(hh(mv_* z)fW6}%e!*Z0QgJR`dZm;q0VfmV2KlJ zJ6UCfJ6^EWGog$GYJ7TP3Lf$J9}8Jmd*}d-AL$!nERFsbd*wopZr3BfjFL@gu6AO z@@0kOlT=d3_Gj=HJU@Av3wV?5$mf>51U@8MnnOkm$a8RyJ{b-F&BZ&C0#4w=S8deS zOydhkfzUnLI~kbgw^!!64j+kew~ktW3VcPL4OtvA1w>k2;lRdiz-K~VT)J5Eh`$jZ z)ia#8HiaCm8~^lJ-T)yb{G5uJ<8yxSPlZTGv-lO}615J#2Q>7^2H?^Pm;|E{X4y9aQyuMKGndzq-1?1q%+#h$O^2xc!Z#Qa`V-7m!;?4Ov=)M%L z$(LJ@>){=7Te>C$ezPMrQbbiX!LW!E7B1`p$#{ao$G`=94=IB%H?aXG$@B zMgerm`5PRv#*M|~z~KpVWhdkd2T#_~T*O>+^N%ma$U8Xy+9|~=qnN}W;4!uBXLb0(x7CMJDveF#&~{PvIjdjqt4EkBw`0kS@cf-%jn$-6ZeO~*cGe>QGkw^MCOYiCebj9;uEBs2}TbH#r z6ghxB8c`#Qhrx5&Cg^TF;)DL&SB`OV5B9Ppj;(VCZ_nz)UA9vid;`tdyL8|echEjn zNCCf}^=YUm=oN68&|5*-o5(>G3cp`{q!@EQMa3oDCD`-1ey`Re`1noZzl5Uy%1~)Nk&rKxWRR7bL2REz0$8)m#$uCoX;H{ORRBz~K0iIIS^q8lhGa8NB_#8O#7ki!n z9eC|%QU7TX5`D!NKn zT+tskxG^5{w}oHuMppcg2IewZ2Dfp6PsJsuy^Q);d~@MLCSI>(%Hv*uFP^I(JZcfB zcN@0|P&wdpqSkmTza4(&H_}J?$FAfN>*bdGZamLMYRrxn$AC8_D{8_M^T3EsrJ7jZ@JI}ExH~vqD$65Gw9d;B zCb`7)JzpGkCG?FUVsZ8~^b$Hp$v~4l^3MA8;Bnx>sZgQ4b*#u$x9aU(If^{Yplh}v z`0w5OD?>6>@`y8o>$kxvw*OQa-G9=S8EPnz2? zKlnK`WttwoqWxuGY3@SzRWy^YFaU4TfpDit@C%pzrrzKI->9Hh|E**c`F%F0>3EpI zKXQDa+J!o`k8TtH>No6zI?brF3H3{#>VS#DSKu^d$Fl+8M-JC9QEvfH*ZZ#Xp0G2{ zX?H27MIYuAqVLp@5 z_s^d4z`0M~IP>})`cP^6SC3RN$W!6G8N_KgJYLasvr zQy8Z_&XEy&dW;)<;z5f8UE|<2{v+W!_~xCso;vX?A%{Am$5MR_b(zWjdJ*(2_v(St zoxr0RLp#2zFypzWnfrV80CaA~zMI#q!FRIg-0jK1e$~Y=S9$P(KVPPDNsi(B?Pj_U z>gJJ&ZrTe9ui#^8<}piyk52tuT*xmW)I(XvYpa(^2+QCl`){a|TYn}ki8mmZy!enG zJ?gH@yR~60)crjX#ih}@&?A5FYrWf#Jr6P;8s{({L1BqzuL?!Jyxt!p>Mg+8BWJG1 zw;;DOtEq&B{JXctklZGZOFw1N?POy#e~xFZ*0>{RXcs_V#GaN@b=u84fV-yF(f z6Ug@)4_V!m1m3o~r~2>)@Ldc{QF&>2e)+uqzJ%{`*U*5D1ay;nhKDy_;~svIYShxl z4IhcI!#7o3=ta+_PCrj8C0io)aHU&N2-kU?m7m}z2fuNsHQvP>jzg3tEKVfj$B2&= z<~=2*`gYwHDknXqOL4;Y%1QD10-Y-G`LuMc6oC!E15NkMc)<@ehU%XbZiSEPR**d3 zFrM$Nsci8((I(<}$TP`Kz`}Z#Fq(#oZRoOT_ zD}|(4z3Ta|w1~Vpx%+g0N(o^u(D35;hTOS0UGrDKWegvmJ3bbGo<8cjVDSk)%%_}F zYc`mFAKZ14ssTCgJc`aC*2oJH-W{I-9I|Bmu<*7%@+QCK95QhzB_E&u-dPDgy4B-u zqG~F9R&$rEgu!QP*=*l`AGsKEAMYznAiw&IeEd3n3*;YY{usP0Sx9#G`9?2=6_O3t z|9VEtK(}^2pMH20zd!v@!Q0F5+nreZFa@4?n~{rM&LZX(2%iDfGtrI@7JopSHEfO_!h?Uj^F)OQ2U zMQPx`@V*UR9E$LjHOTu+{OgyL!YN6o7yp`3VBD~b^@8`{{$`&;Wv)h)23TlZhi>5{FxJ$&Z^MU)o3O{ z48Vi7%ed=;FHy{PuCu+4`GbVra_*;ap62yq4nenzQvRg&7JQ%4*VhpX$8fLN-_=Nf ze|pZPDZlzI`~jWcC7ffyXP$GpFH3>nl5^gR7Ch)AM{*kDN#HuOOY^agzo34@~=yyFV)k=9$2d(V)R&&8$`a^AC0eV5rp=8d3vw5VX z_SmnBnA_N|S+Q1q3VmGK#{;fL;IU^zDeDb^k2vX7wW^_;XNDIEp}yPs#EVV=_cU^k z#TGaJ^M$O~{(gZz%spX`fG>sU4zjP-!+#&R_&RlP2ly5jf%_?s%7}9AaEZ;qa&q~v zKw%2zZI1RP-VbvwC#;9I@q0t37CT-4?nhK9@lNrKsnZ7jtJwMH402c_4hUTt3xogp z$WQwMIqa39*Z1JoqmYORRjc(|u=i&Fi`ya*sB5z!Ev={r;##Agwz1&d8OIpTy(}ig zZ)2 z-o$zq5WnAfMwYVBN57qlKT-!=6sRelrH(xgjaj^9`RG%Ag~%p>_cq{uc`O}sVn?Rc zBc$;As@coRLKT2q1F^m5u6O2;HxHG*3c|1Fy)QfZb^Sk{e?($A5_xyQbTNa)z)dnt z@16tS8SdEBJ}O#-c^OWv6zIVgix=HTWWc|K&bWzyf9cFFd-7%%_T9<$oo=avZlM@O z|3DVL*a^);QQuLoXmTd);B&DwwaChgqzqKv4cuXO)t z#o?UEZhCAQ6^Qf6s-3)NxQIMpu3A*2DScufjsI zyITP{dLUi061df5Ge^^B_$j&g%zVr-CqO^3GOjI#zEVi2p`r|ZYJ$P|VPBjVNvd)0 z-N@nH`ny=|4{&#z@n&Xu^wCsd-rK=rJd!c^uulRyA@40(p8Lp8smRXQYlghO(i~GM z2lyp3TG^{;aLzicH)^2nUb%5cib)MVEoNT54(OW1;NeoaD*Dp8Q@aMyzh*9XJN&wk zPyCx)ef71$vpP7qHvYtZxEL-04i5N9)|Kb$V$R=RfZE|CaQebG9jlkX@AK6+&oVf0ycDR+^-Ze7svKo9+-pNp0e9hr0dk|&{)#a$Vmh5rhBw&sjvFh~90t@hfStG zMg*nWCJ%;#|BSI-^v9oT=7UQ04%jo0zajMu{8gzJr>bS(8~$*QlzmB}kQcQVtuH_~ z%QI#)IfH(3E%j1~F!;j!_dDNOv%&xTH+Xw3>YZ^;?m><>rDW@y&Hi^qC}eQ(n$nJ3 z3Td4z_Ev-*nzws;bQrqVC~0q%r~*!_xAKjl!Tp-zG&zOm-JEypY8mcB6DNs>Pj-VZ zbCUnhx)(XOc7uF=s0$6MQdg4TFXH*{zutrEiim#kGshhK*`HzVV>phv zWdn^~`UuRkMQN$ru|l3j(fp1nyq-krTIMe=)S*(vle8nq+Y9IsedmXt&(4ziIS2MV z1?1<`^y9gIW}-ceI%n6Ra8wC@U!pge+JJnuw4Jm+-CB`HU#uBk?+c%-*;|8D^ns?b zk2O}4ii!C`B~Rh@62d8x+T%;$^ELJG)rKF!v6=UDGdukE^_>%~;@G>SmYmm9fE?aQOJ{&;qhK zOv~WpJnpsF>#GN^VxNtsc+yt*Wlj&?JY1=OJ*->WDB;G)(TsfY%MA0eS`K>Bf68zncy*EAYU7 z?&MIu{{i+-Pha_boTZRd>^aCR77jnqDY@ige9hgaH_^|HbLCO_%Nq5Ns_D!~LJe}Q zn_jQC!MT3A@u1oIp|c(ew0FJOY2^Thw@w&L8uR zEEeZD;VW{sDBv~3{ax++0Yl&wGDQa+AErpM3>yBSm`3J#Ya)+uUf>(6gvZdr1^m1Rh z<96%%OGsVEhBpaJnAf>i!?^-IrG9v~Ks)pm3gyyzYA@{D=~uBGJyMFiuW~9A4e)#7 zwrBbx%4M~7`{%!i~G8i{=m;D1#>J3y8fqF3yJA|DTZpAV$w;s zadIbor{AT`x2Po|2Z7D-_9r}_`!8J+x4Vef_fB#uq(<(frs}u5Twn)5hS1rTLA;AHyHbG<7ZhpH7|o*~kmeN&e|%Mo&rn9M3jpx(eewywM+R+YY{^n~_Vn zAfLE>9escAH+aaFcgMK+;4k@oO!x-o$C!fB4sT(^zf%$0cORd3g8)aAU@P(nvR9gx zP+!yDS-!Kw^CoB1a#LkJ@^UJR@>yizk4x&x{RTdVZO>|2t#%=aYu&h~z`2m<%~Ctk z?ZjT6r~EtVDB$;Xz0Rh>Z|oNoW%A$FT$0cxT73+B*5@{#5>*%EvrS#vZxn)h`%tIr z-V5*_eY->3YM=`y8&(r*=+%Y)v8;l(rFpl%=?e6av>#HxRlTs!^^eLSb_V!JJnFY{ zBcEk5`SrB~^u@g7O^p-I`^4;0P73@xJB6;@m@q|tw54?I3wGdC(~oA$GvJ5y-A$zI zQ2&@Fiy56!e;;$+WyAm1@bo0zLQ)RN=oJ2a8h`(yn)z2Bbd)UNIfk$3D>PHDE_~gC z&*RvEu641{C8=g}r-pFOhZ2$tfa67%Mopt)ao<^}JXr89CavM|Gb;fl#AGmhzZT{V z{(Q`Fpie~JoTttm*2kC!AG>P3Z9V$BRHy3XCgf?UK2!3Bo@bj|Sz!S_M8|TQoWfQL z`E#}Rb``##f5B#E+ynD@vb{<&nAbaeXMal>?zw%FvUh#}_wMDU*3mXDAT}ASdQ@)c zfA$N{$>)_2hpdYYF*wh5*}UJv}Hg{FIh4!VQ? z5KA4U$NTTP5ZlhHioAi`)V6x~3k`h>-!|c%y?6hWR|)V>^j)(b(Wqlxe&r`o9^~0r+XfyvkuuU64ZrS~k!2rr)Zn=z z9#JJZ#K`$)rs8}2z8Lmd-!U4EJ5; zVcAshwmvp9dp-ltt==uu4FsS2I3pPJ5;CGy@-vreEHB1NVl7$=uA3-DWV$PA>E(G{05EMzHsU%|ox#7I|HNwy<~L9=XGEp||Ze@{Cna4Kw5U670M% zz`P8d#nkGOE%-+w`AxZFp#Vc?%NtAR3&}-qO6&G>s0VRbW9o9?`OT~2XP~D|<~Y<= z8NnBQNK4wj6TIg<=j;dIx2!hJZlxobr%%o@H^(`izjbuF_izCjHVUSdfga!4@iF-& z_{%Dq&*{eCLG-Pkhp65vAYXaC8fb-~4|g;R67-U|?V}1&@D1kD?;p`igHB~c7ic$G zOg`!M@mm0QY3u)X{0(2mXUWAMVHw5bXs~YP!@eT2ukLU6%>(dtv;W-O0=yGqZMnMw z^{@Z*+~!I<3UQ=opB%tELErCnT{4=`zyCyh=)rSh@XoL}4nC0!3k*#w%$P5Z>|#F+ z-|q4Y=Uq$n|Muwa=IQ*0AL?^hdf8Cl4He(9E&aV&vWUydkCa^a z;(M|?ouXeO=Q}ksh3NtKL!p*cLu<_CYBc&}^Z;*5CzvJ7qrdyvmwM3w{$f6%MB_A^ zlaRgI%D`DdLN2chSJ25^ zZ7=xyQExxlmwxKU92%iSwJ?w1ei+g(lg_|i5{g%%g(dicLSf5zoRj77w`fZE7I^$X1vxC%CjCjz_uGI+{Tp{RaXJgRa?c;| z72n3^ck~KdLlJz#bFFVVz(-_e2Wg}rhoq*RyC8Qj=GEAiUo5=Ae&tFPg>d*<^pXuj z2hcw%y{mQ2evi3Nl_72yoIB&;n?LTgqpzY?%9C1GS8vq~92!W+?{`boq3bwr@6>iwXiVpjx!u>! zm_eUA-QxZ8i#qtBFLk6GbG`=doB8J^aewtXh9?6j9F^wE561ktZQqGNZ}@=HYUgDn z266wS?npj|{(gVc`OmuHT#ReT@w~oN=gAy^RxoUf>g(r1zaxZos~s`kya9*-*$?ryqH9 z&^5hoCh5j?Vg9W6#}QWWCC0+9ggTF6{@|`x=*}hZH^1n)4?#!fsoapJ2VF+`O`ylE zcAWn+`3fo~rKAy_fTH>m;wgJ4z)Z4)ROLTfZ3N$Xd~*twmNF|wodTsREk^-kMfNxgn_!_*NIaYzkbtYQ!K79B8un!eEaA^qrk!JZT2d1^qnSLfX(L zKCVsuiF&c8zl>ha5cgTkjdPkE@V&h}cKOd<>@k|XT^51QjhW77>t5WO!}OoC{?!lq z$8t;q@R#^spV_&D=ke{c!^#%@;OTQ?HbmdaCqGzhPqiL}Ph^(LEP)w3rI9|L81A1c zSIg+_&>5|BY`@D&!^iua$Yp}LBtkx>!p*+WNlc?TCN^vFj~hh*L`6%eIhHeSmm`j&b%;raO_Nb_s|Q5x_(DIFF!Q=pT_Z~86~2z_tv zR8RC6=CD^Dp49w>c}6LQ7)=?}v1e<1M$N$U-(Dm*)uUc>y!^SP0P{oI-!@TVprcj% zjq>X#AhRmMiFK&|!*?HPeO|?VIsU_n)(QEuQS(Pb^K%Ka{hz?AcF-S0r$2@BK_9i$ z@CZVG$WvJRy4fY4u=zjE6&yx>1Z(AtD!!gkQ+2kl!v6Bb4Na@)cZjf_Y$o{kgc)zU zE3@Fosz(y^#(*cIq=SCrzBKv4In983c3tXPbqxG)6kjF1OW^Iq6GUP)>%m|7K0a!S zJpS;v6JI18v8NatAMW48dAOE$gXeDviQDI<$_4-Ad0mkW6Yy~nkMBX}CQHec9~w5n zm`AuUQ}{>*d&R~3dotD6Q^?cIR{8MAe{(grv^$|w^t)w#Jlui#!aK>TJ>kVfYVd-o z>Pz6P*kbqR`1x4PiuXCr6%&p_HY!alz_06@u784mW<>V^^=*w(N z34H(fwi&!aywQz;y?Fk@?@lza<9S@^>s8P61b%&f^!$Mz#pKA*!sEL5T2;aF-AOmj&Aj*=2qELNc3*H+dq$&5X%k0HX|po zzo2ysT^i467sX!2K$GpS9^m&LDJ>$q9e$g4>@~?a|6%^0b#?{j zlSi8}=~`bQXL@{}y}Usl@hK2u`j>m#P~UFD{T}xa)k4eqW;|zs(YrHo&g2-@NvTqx z1IP(Bv~5CearRox#YOl}%KDj?xQa-jh?V)>!44ixbvy~oqK=_ z{##^NWk%jK36b0(fIWTzJ$3@9lL1v!(aN|7BSrqyZ~P4Ys@J+>)em`tU4Lh1fg4%G z1{Vr6fm66-^5S1Yf4kMy>Wg|8wZ^ylOCIls;n1J?0QgR?N99ERhu@pvhf!|eg&M&Q^{)&8n>bD?>n1O7m`ap9e5@8FW+KvhiFO+bpOLn`;XsW5bJyCVJ zQc~*Qef;aHF!1lZtwgQSDdb5$9^@axIZNw&^h&(|d|AxX_qjBy70M(oT7@Sg&ucZY~4oSI&t5|L+p(3 zGe7Yblx8X?MuCrmilCQ|)Qc;I_F=E{R^>o3+>3(BOqZwPfkSk}1JhUWenS-m>d%yt z)3ad`MttDmG6YRN0RMccQc!$c4*Y%m37udIe8tq>vS$2wha~-_J+}hLy^d;hMLZcO4nEzkwrW@Icx#WU3k@@(X)YI>y)5W=U8cRrXMINXg zU(Au`;7uqVFCBk?&*}VFqXt~dC7XC{0yI$lG!Ml&ig<7AABA(ucTmA92m9+b zSm@bfufyur&$=Na=*u0d)W1E&^L-%dFR{X2*-M&6&6b!y-_xz{#sHil+kB>d1-_EK zlAErYBe!4bK8wUE?i<%;u1$C!$Jy>O7@(f)pL*sVO-n zlI1QW8RDb2g#RMnJxX5a8T4wG{$L0FPsnfY57XTfhW_dVO}iKBSQ~w^dN%lE|MLew zYD2&CRn1?{2QLvC+&Ea834T>JR*}&Q{>RFwMN#-dE`BqzYFv-LV0nPsV-LSzT4!0GyhzR4QTx9f<$L`+dWhFQr5!mWE(%qTjWDGx#>WEjv z{H>K?lmR~9GSSr7N9cFW^^$0AU&TH0Ty~Qo&iRS0Hgn-pc>i(QeKX)g#od##4tIj* zJiizu-TzWOEVEapXH19o&kEPaLf{N&{d};w>&Q+wi9~4qfrl~ z^;lA9E%5J3p53Q>vWUn;Jg{9vJ|~Z$eym}0DJgs3(EmUdIM~qq!R^<;3Aew_p2Yn! z75TO`*$zBZ@_Y74e6HtqIKGqE55D&;wb8?I;8nuE{LBLPrdp^^Ec_4Rs~g+E4q)ClLq?dlFW_(4H4kzv;7etr z(d5T@l`E_??E}7kZPue0%U%<+*Iz@1a6DfYmva(oja)5o#Tu1{o|QUqM>{op$nE#{0Wj(Gk? zo!X>6p)Y?Kc^+AY8F%`SXZt=r^iLQ1GxsfqZ*<{vYzgan(S&=(DDdyV5c=vz1Kcj-2Xsx2=w@x_k@~h=uw&-(GzTEIf{hhlIFg_%Re8TdM5095o#~RB1NCB71 z@%ubu0pD8QRh9fj8_zW@YyIzR;QYPb?bMjlX-(LbsG|>Et~A&=%o^wMq6b$K`bU38 zj?lt!^lN^_PiDU5lHNPJpHn2!$F+~u21Fr0zjyq}$e%k%d>n3aro#to!t6E2+WXT;Y{lA6SI>d}lW`_*{;^ zAFnl&rVz2U6?M&r&?QQ$T^exDov0ZW_k}OG1jvQk8a zD5Ut^@9X;f@%{JLb#>9{IOlbqujhR~#{GCQF;QXTW@BSp%f`me$;OV~`QTsn|MNY^ z|Go!&ob!L*|M$E#|L1!l_El_r_*gUk75zVti~a9=9(-Kel#>U3D$Htaj%f^<_$HsPLfsO6FI6Iqz z4m+FaadtNSi|lOSM@EkSsiuNzAiI-?0u65NJeParISZZ&Zdaa~EQeJR=A}c-`=D1p zZgY&mf^6X@Rq~2OASU|q`exxGD78HN_H-Kyx;j?5TM}7t?(N0QC{Y%KnTD42OS51> zfbGVkCKkwx%jJwL6@j6-cS>DG5m;Vw=~<~|LGaN(7158Fu#&eu^T!z`B)06cu|CBB zze|o)AV!C(j6Xf*^Gvvxb4t$Ny$l-S4H%p|>A)o{X7y$>8CrC>B6~t8z)uo=?0J9! z0f7q#r-mrd>-bhb`6mg6B~n~OlSz`cgWCIAsQ~tOM&DU7T?c%P~fos*z0g( z3h0&=rJAZTfKoXo&*Q-WHoCJDS(*w8!MqL*suXCQU1#E4MS?E&_*9il5*+UDyPW)v z1bV;EuP?bzf|-j~>rKuPq4MLIz5|XIfIh(lJ>r zC6ESJ4xNg7aEA`pgZ5Tt#WUecOL3UX(D zi1ruJp}A?H-r^k%wt6MaY#1iPu5sZuZ$A=DrxDM(0vS@chzal(*X>TpvoZn+O68w4 zFa0IKX}fTCK@T#R1SoXn;yy_DH#f)qhzdF_4b+Mt8uSKTSKPya_xFgnjm2d;@V7gB zI-N>`(m=(t#7YVThq8C-j*(%y-Ns>+4;eJlD*jF;5y0h5{Yjo?BCw6VRC@M-3|}*5 zG?O<`Kw^ttix=*z;kCT4i=s%7eRI8eqg0G_ zvC6)`j*kl4mrL`bD21TK9i+$MPza4}QCD*xP(c2&2hZJWxDGMlKBbK`$l_hy$&2d| z>74QWE0YYm`u8}jSY*iZ{OB5~MS@S8ddX$jirtC!z)_ts>Chvr-*Hnn$dT!I1fY;j)lAJC| zf~`gB|IVl4>kYQ97W+zqh>J5Nh4ENNu9eGt-zgA3eUCRt1?%7nV<@SC3?;34NA~2C z!BSo{^>+aYTD5(Io<-wVaGy8LV)|7&7PuHNKidSG8oh&LWJhImvzU8 z&_I>E2iPzAw#~DoKaxT3nvGqV9~lJp_wg}oNZ|aa;uABF1g~`Mf+S<9a9878B>7bd zgxLNL&d)D_6I~YkQd=2NZFicu3HQ68S!vD|BGy;NQw4tl6NF~YoCr!`0gr!mWk25E z%WJ|p&FI*-ea*^^OR4a+OQhsCe$FepmC{Lg{R?7Z^Iml%a1DxIiO40xqLqkYXdxNi z-BME=-huV2)R)!gONV-4AyNC)47hA~Pwh`A9j;uSGOGDbgS-T-ii;j}sHt_nbH$hj z@t=Lx*F=%Qp~h+`u%867Pse8c%dk)0?eW@jmJCnyoa}dfC&O5%fFiuZ{n7pR?k)!^ z%&xJ2u(py0)&~y!HnO0A?H( z3Ecui9Yu3Yuqb=E_w+|5yrA`cl|$SS=#f0n4=mswY|Gxig9T|tY)L9jO!z(85RpY= zLQ1FB^CA5I6T>39MNupeG~Di5jCi)bVvS9_SrHIi{4RLs7Qu9^s9zdK5j@i>b>>@P z!BN$x#Q_;C82CD`a%A`Uv84N+vmR=?;AhmSDf{&Pl9+W`hNoZlRExq}Mc7dK_- z*X2U;ZCmoAGbG6Q&fL;zNr&<8*WQJ>(ja7mZ+vqO18Rk>%l-0b5W)H8nU6izmoT9ly`dz?py5- zz1ys@jz3x~ZNq(fxl8rmxpfqnT#k^gIE8i1xj!pNngLxcw=Sz}DT1Suml_@Ciy+Rl z?*&^r4Xpko+I#a8q1Wt1{}me|#Ft%#>w=KE%{NzisPu%GiL8U9#W>K{=?Jh@}7q~uEmE%lwMEX2oiQpBmitt2S! zmbsa7o&ux~i&bCQD4=kZeb$r=1-k|;t|89J2Ksa`)XA{7<=E>TBr^Cs z65AK{hXe(}iQ&g?6QOl;mWnis2>HCz{M%DWu=8q>+e56w;dSTY!yhvs;{BJ6?=Lez zzT5qeR09)kzg)igrLPDi*If*V7r=T-to{3QGZO~Q_~Il@SnzJk?dLXHMPN0;btKED z2OqCEHitEf zR=EDt*Xhn=I^?WvHR#pDp)KV-2PQcgZ=!gTC;g+kncV=CSpT{#RGFOFSgQPS^XQ2+iE7T`)aY5 zsxX14kLrRZQA)aoC=DnORufiDImE1u(tC886?vmYZ>3dby*C%N^4<&)VI^+ zrJW2=@C_3B*UbQWsc!#@3=^7Tu1U`(GQn>mvnXvN3nF(l-Q2^6^-@%w+j^A+`I~pR z>Az_p=mvA$kCUQf7_!~mH8%=PI314d^Ki0nzGLu<)}e`+~Y@bh_naYT;>aq_)c z&VzI~%^P>)iZ~PYwHg$MvoV2scX~_5Ee7;O-!djm(_weZCLZaHbkL)i->{aWfuUoL zsrwWas7<;%ZnjY2OTdJ|59Bce&B+yEA88;XdAq#63He{Q!o>AZGI*FhcrRW<25z_5 z@mI+2lJ!CM(?c?B=oaGK6ik9`BInEPlqtYAE&6EWMG>TP4)69&W`JPIsrMHgX&~=B zslCyR1noDvO|!ORpL{K8FHui~>m%2tm4}Gn-hEnF+<*jzseE=1Zjj*j>43_YYbjtC zKM~`Nb=GCM`yby^GN|5NNSE5rfOo1R>SvI@HTpgeWb?s#{JQqW9psf=Twni+AwNzO zSiGs(NruK*-fxaI6p(vUur72E>x=ImYv%_FOa~<05|pGuC6}kn)(JAeTzhf@9|bN8 zIT7<$$Uu|et!O~pDxgG;{uRZaFKk$!d6NP()8g%KFOZ=^NcRt?F%kH+r-@Cn_&L}_ z+{Tbc(RO>^_uNJX>#loUn#iNHrk;Mc)u2F4qWQ5Mb5!76Un{riDFfIOVlSRLP>T1L zzB?nn1TvjHG@BWyE3Vt_O}NAayGOarU3GNO$WA6XJ)uLR^7>=i6?Ax^=v#8Kln%+E z_usX}&|uq8`z>n?DhS^-Q49S?f%+}FWR-RrNLou7%ATNuf&Qu|kJymMu8QSeLY*LE z^}cjyjs|R9Y^Kfx8t89!>T#gZU_s?T))w4Pr`dMzYY}I_jrJ>Q-IwUVvdxSU;G)CW zvL0Xg4>~yAxilk^&VbkXgtzHinP3|^cQ!(V2@tEGOO#_m^|EMY?Oz6HY5j4(agYHs z;B|Yco(hs$UJ8%O$Pn^3t2iI~xM0Y~O+J%kQ0m-v@>eed2E;x%{wrg^IdQ#u>Lmsg zYdpL)b(H~!qo?X>ZZbe1!`^iiUsoeh6;E^#b2_8PLl-^r_(R>Oqp zv#Z#jE;FI!=LY|@LoBE^n(eA{WC5-4+k-`{L+3_Qu_xP$AWtsZZz+!jzV=};@ADWS zKK3nZhMxg1wGz{!rs&WzsXN7kJhDsqMo;cJ#H%<L)0~gRvj{E!*$+qCdV9gg#bl=%~v83LM(Rz7xK!| zW8nvudWawxl~X184fTkHhpEaK;>teRy(|BSAot?>ha^uTlmuO=vN=Wqaf;R>2XPWe zZ2y?ruR{V`w)!i^2T2f4G+pejAOZi=mewc>5)91d+=FToC>D=>R*E4*xAW-iHzoy& zZ*Su%o1%cL;HrIG$g@Ly`(lNLk!Qcx?3!`FI{R#rHW60$M*?@Ah$!fo;Oih)zV@kD&~iS&+eh z;CUYx@&Qk&W&8VxgA(TEt%bQ1Xq59`J%#n~`Z2c2VV@psY3rKjWkSL2 zC1G}NI#?AP+W~M@b2A>{zqx-) z+^)G#0}b&=nUn{p=PheZX%xMTcsg!%id(I=Ce1 zL*~}xjgBEs(bvXy9H#@gbDm6Zz`p)H?BK`&8tl8`;h*n>*LCi8X7>UEWE|RS zx8Gwzes<%9k#gLJJp~$TL>N#%r5-2AO9#Jd_|s-ihpcP4ywkU6Ae*JjwI2JBpWgY( zc`M{eb|Oi;5sy!$p9|l9m{Zgw8|0IlCmbqeu`*C!!*%L^(<3}ug8 z8>GUyQ>*egZqUK-gp|oAe=1Z>Y!{C^jyMJSrvH$)H6Ha@Sw^3TQdCzu`vrAum!75s z)+^VMe)bQ@&!-q8tD~y1u&xK0=avQVIzqOY-b9@j z(xkfXKcB$arQz)34P@|j5+IFXa$4FM)brg7LMwmiaO2fAvM26Cxu~VxcE=fz z^2zW>9ZYX|k`JSF_^K~>=8FmghN^xF?>xu^;lGUyC;FM-dhM{z!(|qb91|Y2*cU+} z$t7+!9r15v4WYlD2?4$5y{(ZC58o~sg>_80@^s&v3VzO>xrK~wWhNLU2)j9A-5cMe zJiM|8*ZE}m)%Q6xNZIH8yKRsLk>6@MD?_kPagc`hU7*3PHs#R!GRU88)E}6{kf24q z{rnXb5(owxGse!7U|BM5{yO?c&u>M3DRC#mQ^H`uKdh_t@bm}6Rk)w2G1IHah%<}d zO)U25@&C1UbY`KC)0yUH z&p@B#eh#f$qJjb^R3>D7)hTdp+up_+#35Tx$*SU1GRWVR{-`=afzjA-m85-C7&+d< zeH8W27?p8koIwHG?3Sz?To>1q)vc0B?5bMM9?XJ0sK~oez#( z!u3j_cgnIJk$|zNH5xrYf-F9>gQMM8_Y2&$gcvHwYhJQ1(53*#-pA)f8&MzWHb3RB zV}ZtsT&2{#B6vIz?D6~@6ShD02(~Aq9#7`eX;h;Df&18s?hNYBdi5O-88oPR9%y4; zMgv#9?-HM|euP)Y39a{Hz{oLcZbRfTYzvdM?57#9EajFaF42WGa;+5FRfQ547s{!cCWo{amkV0SC?R?ad;aw)QF=Mp7zB7Q6=M(&n zVgUbDjvI|`h%d*E+;NYm!=T5WOMIO)=oAqcq+%aE{DvxdJctY#IU^cR(65pA`Ij)4 zjy%BM^eY?k_Qehl6$19d=}-k#RqUrhnq#x91{T=-D_(K5WtWGeXYUa~j9rQC3!e6WA&e6dxc%xn7T{<{~Y!K{2 z+Pr%w?<;z~gN+RFLoe*y-jjh+%%k2(rht`IQne!P zztSwbH(}WS3W7czHLWIt!n%CdfBeYn2YWhfDacR^!z>aX1=H!*rC zpeWSGQ*o3EY;U#^ikB(yZsYvbM}V*U=lUEI@znF7`L_|o*Vf;cd3NuofJx0<+g-$; z{X;~h0$;>$=bK8DS9D1FkR97xg1n21Zc>i=%1^0-8O?z_JL@;czms?!TgrL-kgov1M%>eltfQJzAjnhCtr+`-_1Puu7k_E+^OpUA4@S5S4#&fLwvxff&u7;+tTS;& z{WoXSk581dx6de0Vc+97{;^&Z7`l9bu`o}AJJ;$S`#nLQ$=p&#WfA$rhp2TT$d97b zEsu;~zvhvTez^2s-!NF%*M1J?Etc!!@8EpKuavj-3ihx2YVGey>I|?Ej{DHtgLQLv zmgCYYoMVjcZPekxet+qpVrmWgo}mQAaMaVXhKyg)H4NBW@hF3I19{uF*b9Tah=;jf zN9PbPqM}7NQ>B?OF5yny^o0q$*5ds1Ppp z@yrE&3Ot+GZIz%&L0{|3Yz_Kj+#m9C<^s_7)G4pG#C~pZ=%sl&-p~AOhq=xq76{zW zst~}rOIENK>o4}PqIHI1Pb=vl@nc|N9e%#}KQ3Q#&$Hlt$mpd+SYL189)%r;xB(~;%DGY{zy;zoDVw?$vS+-8`gn*=8N6Ki$GUXuZTitMz^ZSk94B3iNy|TlcvR@oD7; zVK4TD$m$^d54BWSo;MP=LS5qjYjx6cFdYO;gEF1aCmZ6r>$H$agRgaK4P!shz)r6A zgD}py+7S6!DcjSEw^Lk4xG4w4igxc5PoK5K5_f=0H;yhA)i&CZ=72^L* z$WwMQ{z_!Z)uwySfO{!oBk$^2Qcfb~b9 zv_|xzo=c(M`LhexvDGSXXCC6a^@s~#KMEiJwD0CM^vw@S337eGbvRXcD%1sin0vha z#myvG-7P%&G!5satHSH<-loCW`MF~;i45@Mk<8M<{h{+~GV&_o-m8(}Ki0^Lsdjl` zd}PGEM?!qp(TB-A{XOI?_6elM$0d+2hS%TfdGCaMJl%M^J@TpPLv8NUNyzKgcUl^1 z;=T(B?-uf7z;6Lw!~L7FUiYdOT*vpVd_NMByW1Ki~m7L%SbQJztLz;G z2H|S_=`0HLb?ax$WuQ*p8Rg}ygFg1tW2y^HGbpPi`J6ikx@_ZC6>zZSDb^ofIB?WlG)WP;p@wR&rfu&;=(xp@948CG_P>e&>N zASv(s(dk!2xO|%6yZ$Qyl*f_|?3pD1Eoqi;HJS+AiUvF8im{$%Pa1TiA7~{SDgO?A zH7!ofG9JV=tt-3lY|eKI)K9yC^bt$R~qyw^=>I zpMU7#dI0-5m)tt*R6W#jk89bl;=UBLt1jFefP7Vo%rlR=Ok&XYM#kW*uuV?LH;qpWp>k94eRtswccbK8LUdw+*x*rOBVdiw-A&R5-z97R1r|9*d39sP*M z{w`~N4&Yq&`=y2u1_@pYtQw4YhI(p$NBsM56!1@ZyK8kd`Y4mCIjx9?4#MLkUi3|Z zB(L_?L{Xrv)?CHgo(AByCizb)^1Hb87cDuJq3<9oqPw4*V$lsHa#|mX%(%?qu#@T+vLBXPS zhW{7?{CfmChv`gku@vMu)xvxh~R}7x3);`EcFM`T4-(SJFF4xxu zzLLW}y;8Jnk?$RI%_DBC|drwU0>v9Ub4*hH8(};d^(ND$&0_p{Ap$)kgDIn&* zZham4gyPoR9Y#-SuzDfi@}w>u`g%6Ao(^FBmdEApe1Lvphsc4$It)1JKC1w+IQJBG z|G{wq>+k6IZ{kS|SowOiBVdIFZNUO>j#Ft+;PkO9WIghW(Ycz2d?L`AjWfM9vA#4k z{iKzMkm12aic>^>x7tv&rjrPX!Wx_Zb`oIlX01M3~tlen!$9_ap5- z$4&Gb`8$5)%g17UdM~A3=p%x7Lp-|(&bN$LPCM^DKmx6PhQtOs`V*Z}lEv3h4;3f` za%Ui}{pw6j(<4D*!J549Sl`ZnUL@!^5`kS`NnmM_2&W!iPa6AzUpwwuWg$;%sh~06 z%aftiXtf@d1NG(52=8j-`_}jPYW!EB4;SEG=6@f3v_q}-Z_$6sdcYTwfIgehu6_MG zJL%AHV9yp2Yt*k!3}PX_l_Bx)Pt zoPC(>O=b+v4USq5XgJ_L%1c>Vk9}6M)h9b8kpc!@=W-Masjw?AY^_o{`fOnxztho& zF9A-WbkuX>5r31S(Wkt4FL+Dn0tF~6(dPV5$g>k`*Cy;=}TzRfDKMVxH2gao)S2 zeBH*!o&{0DtADH<#JN;CS6t}DBKY=gMEq|I9k!F>N=#6{1zi@3yjaBq6YBGk^DHI| zMW0Le2xNls0qLOAd`#Hk5agSwi*w)KrRDr;boilae>`1?2G0~;JI!pTfv~gLnip6v z(BT-reIEsGM7Rd;&mzH5<@)jqt|YJyJNx~l3i6ui-(S^6DBz`KyhpG{1^0Q*&GgWXQl^C=xM!Oy=E;nlYQ4&`+8)f*0TXJ{k8oXV(i{fYa$ zha6skeWy?A--8#Zvs#somApn=l#E>?^#*lZVSCH+dI2(2X?|Vjb&8BRiVLi%F%2K%t)p}#{pn7_KVEu|5C62Z2JytmkwJ%fjyJ^FzB^ozpggnj7m2lDACjuXM9 z^^1Ef&c&>{wD^8SW8Z#g+{cY|IyB_ucf20`5E}QIVD!~9QYBf`P71VWTn*lX{zg5I zna~HEYdc(ZJhZBe3WB#*p9+&jezE@c)zT^|xVIQBmA0V|G+pp1;{z31$pIW4=*K#= z#yFM+Q{nJuF*b7keu&1L z@;=17;o1O}R}KZT#`hfXjwi!U%e?i^l+a(1uHLws4|T=%l#{P9hjw^c$2l2!@(gd; z)AVMnJAXw@KGZAOr*aCruF+we{Mx0|I~2J2^kG;N;{W|~D!>2BacPZMZ;GYS!Iacu zz4s5|t#O=HW(EW77Mi$!a9}PX@P@Y->Mbu}L4W=x+*g633drkj-TECh zOo8@}3)e@{zh4m+Q#^!ogj3gqgaQ#yE}yV+-1ilImx<5*Ty_-rY|nN5G5QL>>2le(0nxB+t(aUoJ$+)!uBQ8(z?U&Z;RXKzR9 zFA9`pZXEEbV}hDO?dR8drSMbM!ab6S`+)U#dEhGv3Y1IDg}YE6ZJual^~ChXEa@| z5aG4SG(G+)0XU*e|K>RmVMXSO%Y+T`gzVGlb3VxbS{goI_=Wz7jN7q9BKr2OQBg*i zmwUNm#~W+RJ=$O9+WtNdd7-=Vldb4`NW94GeIik z5gEds+Rb|6{aIaaSkmlGg%u;?ReV>e5Eow9{tfl+^7=EE-O;z_Ha5vWehYQ)jrq92 zeKfetZc_9z7yGGqQdi+U8u-e_sUPv8LCY4~av>!e2)0Mb@0`GSncU7p#aO=q9<2#_ zW>lc$=59=8W5Fx_G@YxX+ z5|jv?d>xK`BvpFk?b=H0+YxII$0P29$fkIW{X;*X)i%d#E9!H?)sv z>tvc|v5YzTQZ-rB6ZpD%mp+-^K7;v0cG*}5PZ}hA^Y+@a8*!~F;ih{P4F+lVe!5y= z{!(Qv$JHjBU!bMW`4fUp_(0{j&exlr1#Q;eqhmW7~k(d40HB^Q9 z22X4LmBIZ?*fz&F*+*eOBxkc}6#79zJMY?h#G}vg?Ms6;Hv<|Ywfr}hU`~dkfS$omxSchm7Y zwSH@*l;QlZ@1_g?B>EY-!?IatktbL4(6|%!VBhR)HhsAk=TME(Q5(Z@L z@03Z&>A<<&+_mT!d(0A9zMhGaPCwPsgqTL?~}ELx(@yC6F1x(9CWE*RL{khjy@LqjWGYA3NqwJ z-l0f|QJ~5?Mx8UCc$$KiM4j;*ZIHK7VGJh9>4+H3wMshlo(Bc6M`?3jw(F z-dfTf(U%)*a#tNBfpUS6(bjF~Hx7ILF3tR}zP6V9bw&TsrENG3{WE`^{>japm`@p& zep-)wT1&a>UC&+Q(RKyk^TAKQWb^SVvdy z?RtaxQ2$54tg@o4gBvW zHC9mP#^0JDTy#YLV}eif_XnKMT|MG=_zL=mYY+4W#$bJ2ctz{}hJJ|ms@4kZr?VlF zcQbh~XJuU;bbd z-+^<%g*--fIl+zr$tB-UB;xaj9<)xq zz&iD0chpfs{+v$_(Uwz2o?i7Lle2&d2361Fw3n#R_l7PO`+^4cF;+XKaSp+Mt>%Di z3g(xVuI~Mc{z7XcTdY4j@>T_=QOs3*y~)3)c1ti|xP?1T4|7kw28llu60k2!6}--V zPJ~~>#dXP;E7~Pv#=D|{`zGa;C*d>dzPL=i_YADB`){`~_uw2@=!Nf-K+Hu4NTu3+ zCW1p&Q}NOf5}3;M-&IH7AYoBbh_8|Wd3p_Fi;r`GA{vzDeue<_(ShBJYnbEbQQ!RO z2Ik)%tea)%W8NipgFh4JOnQDhyr{po$^;d~yl#?!~5= zvllV<_+r(RBL#I|(o+6%D*^Hgs98<2=zq^m<*;kgphj(^t7QuvB09ndJ5kqHx8=GD zmr&u)dRO}v11gm9c4@RApK93YNBE$O{^GGsaq_6c-aEexe-OujLSa5?2>NZWrgpuo zj>LT_8*($K1M!T@>A)x4e_yUk9lQS(@5lP(hUFcYg9&v@*1V1R=;nW`vi*>EFP>9& z+l6&>u=!%63HlyiPUj6^f3d7_@A{5kC7gq0Tmn%ad<(JY!9H-xHpfsF`|*>K7mv1t zk>SLEk+Lk}-k56qukso)Tt75!@D}^u@KvYZLGif$>5XT;Jwbh55ZQ9R9QjYA#GB9u zBuHKoR$-}OPSZ&zJqYWqkc+49-7DJ2ZXw@J;hvFDKm-N0(~OMpxFHEV@x>wtR`R|&WR6KF*=X%V}7HDG5qQP z6VABJTX_pHVP}x|*i;Y$T*PnrcCBXs<8O-Je{=B_|Cyn2tdoeP1>24Tm|K4lTR6js z^Afv+54w1LnrX48M2}z|WkY9XGUlx0_AHtmQpY+wni^I#Kn0)VO#TRCUwh8ldHer5b^o8KvP+Zr0kLqUWB(VD+sK@sh zedD5gt;_!CTkMtyFhM=$7t$1CcnbZmDN#sci=Y%I75@9M{jjs_AZ%-w` zjYF^hN!uXq@ErnuBPI=28KfcN}O^iy1ZbF9B4jylEi^fYl5)>(zYu{ECwFr6BmbtHxW zyNtv)7aJq*9Nb`JT#b20Yflqj2#dvQ)=N!`3`%YXvQj`)Bm^cPQb`%A22K!~#1ikBcAF7t~_eKw(i zV(PqucNFHWcW>D6s2BbA=Q7o2v7gV!_0J|OV{T;hqDIbUGJLtYbK$@u3549*7dAVS zq2Qt29ff8596Od73V2^LiViFM#(HU~$-8Phf&4(ukT*jJ@uk6E>S!bK3@464k3#&n zzmWn(fC{hKWb@t8ryh?{*lddPEZ&ozhjq3i9`~G8bWfzhs}Q#)Pjea+ei+JL=tEwg zEBWsN`YnT_9(wx_zx`qG?_EvwtsNdNmGluHYx|}L7SqUAr&5n+m}A}VJE0SP8h!j6 zO|>;iIA`j*qaLG%I8q@WQ1=i0ADQ+0J23aOJRCfwXvT!DAYs$v$Oj9f$XS_~gUT-K znv5S{fZ^TrgZox7q1OTg($M!vx_5Ro9eqm=8<8|G8Uw6_o;e;mfH|bxFwX_d+h{J5 z*YM(fi~J{B&p=&7^Vg1T(ntIpE4a`Sfcb>8n+#1gFqbp!Agd6EbDQ5O3m(WDAdQ|K zhjRhb-eXc6&ZvKFH*MU6x~;VVoki?hUC%Bnl%rpiV)O1r`x`pEW^WJlK>R!>^;YqArb`SoNNB?oXL<~_BB)V6>6fk9SB}e z1}>35YhIvV*4M2Pq3wiz)Y}Td(J*{pAq}4Oh-aDPcGhk~63{h{zaH(vdUGEC@o@w0 z1E%9*RtE`q`tm;6;C%30jI8*jdgN16YQ2xq_Zq978+M!-Cj-)>E8UL5EdM7&@8Ei&{{d?8{St4rJL^92elJm zg{w-!eUShK>bH5^O9`-bR`A!~|Ngx$eUEPn>d(=!?)>M7%NK{v_aX0UCGNk}G>1A= zsjEi8hYE!2b*B^$QQ^wpd#l}$KiZ!fsA`JCxzEKMm3Jm|P<>=F%e_Jcs|%~sx3^)R zJ`(wjLzDqwHr?+NPoR#t=zs1o&hc03w?AGUJ zPTa)vuQ?O@-Kr-kB4h&Q09<@DaDKrpUTl<+fuH|*N7xU%FK{hrZFLRiHdng#N_e1; zl%lpq={D|*e|zuo{loh^43pIcn5PPVk|38#11`l*Zj(mL!xIaSa>t@CtQkzGox^#I zEwB2UI^4H^lkGmaVNNbB#egl44r*zKhMuCYK_d$-hRdP;)-e-QMV-^~;9UGMZqy@e zp4&pE2>>yk3W~^M8q>N)U!a~F9Q^jKfFJdpg4=qDE$FxZEtz_|5$~gRyK`JD_M;Jn z5XW)MiBwpb`TU^+_3fPJ&XeF2v_6>*d)vOqnk_TE|$bDNgQmkjp4MEvWhVwNC} zebt@hD}(2`?9x}XZZG3J&6YGp!S~5*I&#|hEeU%2&)kl{&n2`poL{4j^|xrg?F^9u zHrE2DN70`w{Haj%HwgPWd$Y1UUgtD-=fPPuydF2%&Wr)vcY8F3XR)7GkGLHv{?Er) zu?Z&O=b9c+WUw%om=U0-F1v{co@M<`$^*z3r+!>jMZU?)S-ttaGYESwQND3=uEvGxdeI7f{YEf4f2zxC*20a@V@G- z-P?kBSj}5>x%B5W*bqFSZgHLlJRSiL>yeL?=GH~bV}ACfq@d474;EPDe!5VqjQnza zoIgAI;p2f@AFT1moJlUVH~BBlORwz^<9m*|s&cmsjwC!!`XQupxEkjjl^HfU1oS-u zGFm6j;kswKq^96{HwKP2)36SO%z^}VZpZ!@89lq5i8@&%M8|EN>`w_&Xkr!{ad-61&2DO*@hqmfr4xSd7CxG*=@(s#k zB2Vei*xKVZiFw7ie4`b4tV=5nQlb^|F~Pa7I(Pbska@E8+%E^zC$AiNX`Pt2NE5Sr(x}5dQTYZ@Y6$yzUW+ygiRoy3qer9`~N_!8*$_JadY_j|%LyN3@+yX^;^%t^3gj z>qa6xyasuFg8@^z5`B7Qj=e|XPhq|&mUN$txbd}*OIHE?0yp1H3^v@C=PdO0KOV+8 zNfRO21?S$4a7zA>DHD9|S6YXiAOYdi%Kie>Z>8l#>AQPT-`CM<&DP?)GhnmS$!YX? z-;Gpn*G3=OX_L}_eJVm}#AeKs1QEg7UT+bPstp}1U!%So-@tub9QXfA3eoCEEczV5 z_Oq9H(6`DC{k#*eXJJJ3oFndsu@0_Dr7ny2B5dq`GLSctXD{qTK55z& zyg@Gxb4n#%3exD8bL;QOUqJnF{X~pWFxK}8W>ilK)^l<#>Gotj`u1Hz0jCwPA0(O; zuSJ}#FR*!PVubs(q>WX11N|b~fPFX6XRTWI(Ds2c1@cx0Z@Y>7c6`vlDZS~xJpbWD z@tyej=e2*$VE+;F{B);E73biwr#C9%JiPR|8ZI zN1ot0QS;I4In-Md%keZ@^bHFyew!?5qCr`PWS)v1)>Avg%AgJa!PcR9++U_*ziKK) z>A)^f|9Oux`p^HqoABfMMuZu^jSfZsR&aQX+X(xO^zEo1^c9qszCFE&KI4K$JooH- zGV~|kTh)zytTeeTE$}1iO{J=)Y#t({M`Ya!dPo2^MY}6&a4vB;DM~KmGYP^}c)HlG z;W>h*U-G`^qu)_?=;Bi$%!fND4>QX6`H<;{IOSI?uVxQ`3{`a`{s z`Z51~p!Ti#>To((^i_Ia!#oD%4UOYo028d$Az2j9Z6xjYm<}>-ymT6mMle7)ut(Qk9sS_byDx5m1JDpo*U!24K* z;)>^+!qRU#V7=#y%x1-Eks#h7shmI}0f(CO^K`_;ss1SiY2-0lERGfe^4DFDwI-tN zvA#EKX8xMQ_ZfD|8|=pOBfd{gJx9DMaBw>zhDIaloU=`f$aL*D zMx6dTbWav@1m}+C_<#P5cw8HldjxrD{(fPWQUMA1{cmu@dY|u#mN%BAKw;$>(O)n$CFm$>$mB^xbJfEssaPf{(MC{;*EY}w|9m^HRjeG9@MX{L;m=%>i6;) zD!jbbPUpdSePp_Rr~V+W>}3>TcE$^WoxK>eKYNFKi6`GK#IU7LE!5qBNq`Xl(T zFKq2nT`Pe2R=J!yql5jSt#PoHiT&)GYKV#(>I3OOZ9gZRKhGzZp7})u+4p;Ix*<=T zOU&DK>KFscHW-zBS7QQ4XRhEg)MFgRmOEC^kE;?iQ=^Jw?q$j~{mKVCAGO;|*qfIH zE;YxTxPRcetCD$+UD-?s-bB^euZ6z{gMPvzY!egsem!P;FoC!=L%Tk5p8_I*F>mRc z@LU3WKux_D&e3z(?%pI|{)pBdw+{7Drh(UyYV;pVw+|@BMbTh)T{|h%kOsDOQ6`!j zaNjq(Zs}Zw^?&|zu@T~1!23fJvlWlGtk%x@Otp>9K-LSFZviw%G8 zg_4E#^;`;AkSu;BBaSN`sNn5H-N$XoY?eZt9lkmILI`>1V!+lD&N!!x>(?qNRK&Uo zasDHT^Yg*`{+6?-FNFr%pL^^^9l7@18k@aN$a769$1bXEMW5=8cFIR968zb*tH=uPe-BCG;GHwrzs2rr=%7w> z(&QZrBIEC$$j$pCmP~{MD&fKWSt96rhM85OpO(4&FP#hV_IID|4}BxdO}r@$U(&(4 zeI(<~ti_!Eje%vd?@WRXAR~Hwmhr3D~UNX?vTf~CM;NB9w}>OgkL=}g6V9CNAm+5 zF1-ht;L9)YdtoQyU*@FQ>MMvx)_PJh*?8WQXwWvZjs`}nuGzFUqfYV{@3?D${8Z~a zF?1Hs=PjH~O}m2gRR<3nPn?r096ix}9QPTUjD|rO)*(%@L$i!dg=Q~CgoYmaw`IFu z)o|c`_~z{RBZUe|M_#E#VO}6SZM5=}ES>{D{;Ve;1pBn`;!?zGJn!gRX_=4b91mwc zvkmLO^KHg&5~Z-On6zFh5J22&885S362|<_dsX?Xc)ixIcyxZFKH$E!>Esi{Z`*?& zIu+<|eGMf2AiTu6T$%};j@Q%6xl`pA>TgpW7Uc-~JFl+fRRnP3I!$;`)148|qW$Ui zi1%^Yg^Gce$d{9P4m9H&#b}tnWhDsxHVN;>{m2KEIH;WA^O(;V@Om$BfeZy(+JwaL z^TkygzBc-Sed>o^2WbKQ%AY)}MdT-AIX_(z(66Dr9RG9`*DWbHeYB~93f6VD_Z#XF zFNNN7*mt2nIkbcK3HlipMHOP39^w3S$WC+ezx5IId69)aA9qb>mi!pbyPC^CcOyR( z>JZO7W=@3rCmm{H1o8L%Y+3b~&lP`vg;J55Mk)FM`)so20sFU-(n?|g;!(5E-ug(a z7rPne3r_s{^UL05-2V+7KjJEfh%op_A)JW5kYQWx1}DVR%i^V9<%=*6wxPs26?voQ za;;jD1o}Ni2@@jd-xyjsIrF|Hg1yUHzV1dMNa(N?W@6u1uwC9DT8uc@9OzMmzN)dQ zMMmfc0#pm%FN*QT`Gsl2VifAxuE8&JSy*r9){e2?`pkgq=`)W6pWwVHomaUZasBH< zA_qwX*Kc}grNIf$72Wv@`!V-ywf>&Pq&xEE%6(}Ea2*D~LQHBKkeF`O=VxR|IIiqEt}-6a60VYwh-q*e@IJBtMeJ^NA$$ zoBi7`4|O5m?==tpUW_`!p#DfY^as>_Q^q{Ces_pw(0e>jwCkgH%nR((|F%S0+0ww^ zrwRN(9Q!Ig?XUsQll(u5t~(yfE)0hf$!eGt$}9<$m2p&7LnK?Ffn=4fvQqZ0kjQ@R zy(_CS8VHHV%m`&PtkidXfB7}Np68r%U+cb4?ai}CI^uH)M|*2e$QvM zeS_5ue9C>rRrPlWc+_?&u{P|FwmQbM;yS1+(=2x)Z-8&zPf^H(&g1@g7y2tGL``Jh zu2Wd|nLYt?@%r$~K5zRV1z&dEVsf2NP6m=UPnJ(r<39=y4+ zwiLWDQ%Z(+34Z)pdgiK<8{n&wcSD{8W@6rgE6p|3S2fya5xvGaWMj>f)o05%$BgKx z-p^-~*vmJ0jj*3Kxi3ouBe%LF?z?bE26?-K6I0ou&?B#RDEm0W&yCjQ%tdawa&AWC zB^5qjii^pkHxv@3$zbjV{G@s&Lze|SqvOTiM>__=yCfYvu8F`;38XeXS`XdySdZjZ z;L(FpDW??i{?)I992EmDJs|5_n_H1Vwsf=?o!gFFxh+q5b{>4sgPR)&J%#MqJM?~N z0({ZXqv$+%KZoOh(heomseSJi-$4g$u4(vUh8)#;TE-_^;oGb0Z$3c_{$)kOrnWYS zJY-axohDN%vD}o?^66O$8OUr3NZ$nCdnlLYhCk+uuv|+m4?=%{yJ&KF2j*V6UhJ*f zfqK{9e3lveQTV*ipB~`1f`T8k`nBi}82k6zHx;?|XSY3jAK|%O6sSMBnnun9yf|?W zIt|-hDL-N0(%6Z$FR{MJx9;D#jrV>gDLC|A{x1;aEobkN*&TR2`hg_&+y8o$;otQUdl=OtjF@^9sWG?*(Pa#GozEsBB zkuUK0_cj!{&Du0yDhZr31}zOYIj4Xt`F|PwHB2RnbMH^eqkgv*MQ2|Go(;%oH1M0m z{@8XTXDR^wm>sVSL(gTB2v_Bwzh2?*Wd-@HO4%GLyg$s9s>uYN%X}PTH?bM{ z#0wwa+&hhVHkzLV1ZK0zs=cCNhb45v1k+d@mK>54pq{wnJihKsj8I1IbDu2rk>51v z|NCTFt`8n`!;Fn$w1q-=dFt8(p`QyDGwJ8bqwc)zh^oNH$v)KueQDk6NI|P?GRxCDd43A-l`d_@w;+eqU5(qj)gSfi%GedVe$4CW zpSkVSfqX%(-m5r#H89f6bHX`c`h3f^HR&vpG#&K2CM0yPT2=UcH z62l9AVNp<_UX1gf=}O8z;L>t+t>Uhe$YVIlp0I|V5L7L9kWC#pbdN`p2B# zGWIq5TxE+N`n;}{UA8aFAQH)c4rk%{U+3u^q`Cv0>)z%Ibz#tBU0-r)Uk47oX3BEW z6F72@U~)nM>Y$LML-+<<@ z0C@4Xv<&l^PWV-#jm2}&$&?~vJ7vM={oA&R{@I4UXQS>hI^;*M9zP-Y!VY|S%=Er1 z>ek2CwWY6rCzC-2n$_{E@GTOCzpUZ>uvXqO`Q8Bd_NH1Q8}tY&LP;Hh&&9HS9Zwn$ zbfB9Ctens>#Upy3l|a9VWaw3GfPQ0HvBq+s8U5{6d|lKhP;WK$=Pqa=hy0HHg%Qrh zp(D~^ZrmBf+k^I|(?#&0FvgihQ}k2az1a8R6Zp_X&tkbY`aDVCfl&1E8`4ER6S)dM z=P!tf!@?&_b$r;x@h;S zf-r>|_?F#o-}%G03*20D;qm|Z+cAGX>VH{8=4jp(N5w3XFFMIPiv3xml~lhwE0b7l z-1)A^2=jyf)F^ND!}@JA8VSez1~=`!S~Ji)jpTQTIQ)hGph|{DZeN zc4Y#{mGMTK-+cwV_&laUk_x&`Owr@JbMP~K^==tREu;A&SM z^T%Iuh-}n58creTC6ki^GSEK?)Km_yAP-cSm1Z%213I4Na-9kCMd}@`nyLq~h!&mc z_qna_J|3CKqs1*7UKxPoSe5eer@0 z`rOsz{#(`WP`{$08!iiB{T+Y1O%!->s`>cV4X8t0GXukwr=c&MC``D3^CoF>h*=go zrup@+8Rn>WytHZ`M^G=XzMuT+3*E)_r|yM22h+*lis*<#&|8$I??|^`zyGbcRH+Od zw!l~JP!RkF!;8DdHm}Egr!&+1)n6&3HK+N^3&u?H;5p44mm6>syTiz>SEwsVm%^vO zk336K#^$`yucR+yvnd#JY{U<&{(uf08*g*^)E?-=UFR+_E}92>kMVREs=)2ATOfVyPQU zA@)kk14A1qB$$PT@(cY5-r+IY&ryfs%s7MWT9A+Hlr74;Ng=!5?%%W>dSLU3n66*4 zImm@PdLLj2U64mRRLBN(a@|PBDlPPqO{2EK@CV3S&Lz$%?323Ow_j1mIuaVHw7~Oc zsg&##m9WlMjk3bFz>iV~Xs$1}`SGnh+Y z;QQmv0CH5{b~3G4XF+GJV@wCXn#^&od9W9C<*9(&WqeYv2_GdTwWs!#K zGTD>hUCAd};(C!c$;xI>&uY#lO&LXTmxiHR=9kmlf(|?I@LiAu=H#47-*ZtBIxSn* z-mFNjY$8V~`>`JS&|HF%hzT$BtUuF2hNy4$cO;6+VliiczHnn4zOPr>KGvj-m@np9 zqT2#~#@GDVs&aQG=|9EHs`8scG!8P(*P7s*c*@K*=#D-hzqZ@Es?nEp(|5%Sb%pQG zZ*LCp3k{qsy7jJ>S)M~e0~`?`{6OilwkNA?!SJOcw_%*iH7ojz&UI-+$Hn*D?YEH*Z0M( zIH$g}=3d>CN%k(SJ$&#O{@!^P`XD;+uQO-8IH7OSb=DmE9drtvFZ5BU zljVI~lgY>xHujjBN5-M94jGjAVxO`7t-c=71ReOeqRFBIeDD{I1N=DOmAR=>m^m_u z)YID6Zp9RGXv}crl`#4xqYrc|AAzo|V<{&46?&z;SNC?DXHy$mH*)J?zfBj;Uy1!c z|23>&^8$Xz_idh=fFGn!E$*$ISGH&3PoVEL=_6!1F zSha0_+yVSOZ|2&Ex+|!dHh66TI@OLRogyU}q@MP0|HLK=QT^SM!>k5;Rn~FiR^Ugcq7{-eaGu9lel1SN;pp;3;<- zXO$z+52-?zm*4@McqAdWgbjZBCWQu44t@U{^*;ChOme~7oAxixtGdzpzH_Ir|9o$k zOVr@k&HDMvzz1}}jPDOY|9>(x%=YOW<{n%=&c@hj)` z8IZ$#A`t6+1#@($izVMAqi-jXoHesY{`tm~lr{SBVk=r@+~6+=ynT9c19%(NTaXE_q#a$H+dKE+LoX7dqu%t zl1kzPu>K~u@2Lnnfw^>40m*`IQpsQQxrp2*=nXa!9SmOBXNOL0ve|+EHLf*)a^EAK2o2VHUT z)?5u^I?>d6E#@|iKCUNaBDwyUmvG}yi2dIT@+`N@ZAb>XvVBIj9Sd*|$$zG%fIexA zOH&xZ`>hwZj7BagYutOJ7VBrhM6x?V1$paqE8z!12l;KFp= z0?vUa-|2KdzN8SnNB&*bJ1~#)PKShXJoM5)PV41X^gXrS7S-ZM4)M*yu6E455biL( z_aq7Ri&39ACjmh3dsvlYO7OMItafsY!5yyN=I zgucN=zmCLVa{^@hl zjo?}Le0txz!H1ievU&_0sQ=dE79;B6>GX#@N+Q`L-cg#i&jfwn26~F#otVEUWpFhB z^N*Ujm(EvrVXoibirVkkccG_*QyRpwh|T?1<2P?ZH@aO*6>tReY^#!Q9Hd6waXwkc!{Euh9c5;?u|9v*tQ}7G#_wLz2h1N7OVoNnQ3mjP3!=J*8_r}s^ay0Y? zbV!f$55Js5&Mq_hd+HH%S)p_LM|bsP;{DfLt^N+Z zm)%^-My(xqUUcMzabha*zakP9cNObd!~8KFbhdx7*{WsySt!N}OeM4TEr_X!={eMf< zciOrYpqCi<3G|kMA6+tza{HM|9K5bLJ*t3@I}!e)0QGL8wA!R?6?9VdTZt8W|L;pk z<_bIyA1$ukRP7DcJHx9#Rk;~t;P->HXVBdj;{108M`jW=!REAt6Id@%##;XB$WJ8G zQk~*N?&;}Vn^Pn7sN7pz8m8#qxG2~7Rs`Qifc4{SKITL&Hacwv&uZ$s6!!*tslz;j zmMZqUR~FN2*`M$g_x0C0g7>zD@zE7jAzu}dF&6t7JVpM)r%&A!(z*Fu+9l)xyw>8b z-GVMxPiLF1i}REBgrZ3h`1zApFB;OSvq?(w>aS62_!>9z3|ZIEA7dD0xamD|^mNge zgYe!z9zWo^3A*AUEu~FL4ZNlPdgOWPY$D(z8GHf0vPZ*>WYz=l7n(Q9oArV(tVCTq zfS=#&&ey7k_u)Gq@RD_RN1milhrFgie#@E9cpQG3>l^!weCY6QEO$aVEwV}Ag%La2 zS>%POPAcYfK{pjM59v=t9oajo-+*&`epz&{4fKl+JwX|J_-Ah6{bdY(=*JOCSfBC( z=f&R}m7~{kh`Z;9qt{WNHCz{jtGRLr_wAgue=FH!kn!f1FzgqhonEf|;A;=_yd{69 zVg9FFrb}c>HaSyr?VucT(RE*p|InZxXejv`ow*CnBdZCn(0e)LPTyv`Qq2G1&}Hk< zsKlI*``e837%=auU%5m9^S6yEBt|!_LXYHsr1^0-_}*UOkemPGyRIQu9pL#`*G;x| z&=I4wxi)BUp&w`e2?_6E?3?s%87uI!2!osU7Y8#)e7fV7^qHmGTf-+6k`luJ*1*kI2-+DrS~m4AKHD%ryQ%bSA(^H@*NCsWkZh}}V_m;Uw8VJ^#_T1SOE zjHldeaBV6Xb_w+N&cmOZ$_?9q*T|fG^3%8{9aBTEw^jq+YC3#BA?ozMkEmFB{V4cZ zj!*9|oExp9bsc>C=pTz~Bcsod!@Z}}oM8=p>%5+R$s~S`zKwd4GvK>=aVb@$@LxWy z#*gCvdtzx6%Y&RDbM0Z{bI=Vc>K|*op~icfX=IqVmPveTvz3*=1LzpO?~ymge!r7k z+ll&RC_nt*hdlOQe|Pg&=y|b5M~{|X#Gk*Q+5i0w=4u5W3T!`#{)nz{&h$SxKW^+b z5-Q3eE~2mcuXq8MUid(*_#E@)^|o5PfUd0;Ke?rF5;>6R7vX#9a?sDUH2BdU>t>{R zGz9ZUWLmQoT~I%G3qAJ4l-$L7VeH?9Z_d{Oa|qqO7>9v-xkUa^j2>ToE|I-#k!UQLPujQ0 zcHUM)&bl?MGgJ`$zOCb;ybkDxzun_dZ;tx2F5*)*e6#N#CXJ^H(WgQ4)X+XBolyU5 zzerJoZ?rMl<>PS*N#D`B-4=O+(t_kn5urkonQQB%UV=PflC6_I@M^Eu+zG(0$!wI*c{ChkVdx5e;PDIoja1btY-v$r9RWR zi0L={XYX~hvOK6?TzsLn(Cv9by%TNO(@0|fi&Is=nf_jaMOq4Jgx}k5Lnrbp54X|1 z-iw@$thaTrEpjpHnlBmhKcta&@=fOame4&*zLyWfr@YH4=*JIV(4FUw@+Raj9V`vF zZ$TgI@U={rD#d=9QPxc>OC`(}D#O}G;1dK~u{;HR!$pWCfJP>TRF`y2^CE9NJKVk1 zEGm_#-qpU|4t@1PgiMo&6LLA-TFULvQFmztI2p+y-+jXQ^;YP8v2>;f?iHe6;9U8m zQ9ksYCIn5dR6&p0{(^f}8vWRpFDUx~x9G}!aC>zVymv2a6GI^IKwN-ibuxUSma{cl z@NKEMg`FecLcbpTsQg4AlhB+xvq2Vm_VA~ZfsM#9&j#3i^R2{OqRc-1M(8;MJ84#i zz^5$Ub1P_pU!6DX>KTQOH}XJ#RT4P4jfh^k4SqU1$fL9G4g9@&hNsk6rxDd$ia)S# zy*o29EXPs5%T9?>S?7>}bT2hs`5e+c^DfR5xHaG({k7eg17{XsJIEjc{8viFdk}ut z{M+u`VaOMW_x+3g#R~m#7vo%XT^9MZU&3|#8gvq_%0JFI_;a8BOAV6QB&qbv&(bdR zEqnc;6duVY3nz8l;&$ecnESq7GUeH%Q8AKd@gwjii}$zQ+HCT6V&QZP>Q_MDhkvc$ zZ(j~Bk@u*NdW!lxY>Kjp<=zv)x8S@g}9+^AuF1ifN@lT3G41~EPrc$$AN`nkJmwllIr*Affade0Sjhf7sp zJ`3~VeQ&3o%_$`Ndf5^}qu|qfQR|jzBG;S5sU36)d0XR4vs(=)#6ROgBx?!g8C&uj zFX*8^tjprij3R~9-51i?w}5ln?x51wA6KOJcLpI{v^&!xM6=qmi<0@2y=O!eXyxSJ?R~1%MOwR4qh#du7m$=x{Fe* ze-^pU=RU7vfxp-{*ii9}BX=mCMtjyFjqJF4`B&H^a&5JI_XClOLB4dqsyOmr+PE+V z`*xSOh||^<=#q{!-j|U#ZW?N1Iv$2TDd!CT9{641mow)C2VURBWJ$#lKs2N^jcN zpF)1$U#K!bJ+7TPwCL7{`eaK*wbu`Q#7?2-Lcr^;>x!SE8AN~ggVOJHKaf*#HIe(F zjrXx}P?-;To#$7wSk=qnXVN$tPJRH6v(ic1O+kO!eCzV#lN54rRcK>OAB9vcEeqb# zhVJF6s3`+|F@Ubk`}JMqgmOCX#eB>%L)UC!t(@}Zgdtoe^nNG+vNqaKJE}-8p(PRC~;7`yU z*d5w6kgKwpd~@t%2YBrE?iSM)_>L8fWl4gm3@o+B1|%PPUr_pMDG7;$l(6K7#z$MUyQi)aWOf zd8_pbxwFci)}cJ`Lbb+r+tAW1a;}_#+|7eOb8gCo>sb~#Z1*E+UqL20v(33w2>R%w zhL^3OJiw==MY#*ei?mDb+kPK^UqVJmJskxwjHp7UEsC9g!~B~lfjGkK}fACJz*xpg)8?ltsZ ztJaqdKwpqip2$=NKeBMK?Q@*&B(3HMmMwM;od0U z(8~kYfqz4&uh8gY&cr<_`V$?%uagh;&DxN!+;KAWFzN)UUfuP7p3`dE6FN)e#tLQ@ zGzw53f4^co5{WvhA#{K*Fc7}L&KK?%-a}WRzslDG|KQ2*r5D53(3kKioV)J<=24aN zvWlV(YiU(9h@`{ElZ@t+#y(2=mOJG-m_p8k=H;d4;QL0Fr6{0ZLCVsqH1RyD@EtpBk6s5_o-(iDvXbStTCW}kBIfFF5P zDkb4-Y)heE=sf1MX6>XFJDo|q3(jupd7DWz-I^q&GcorkPNIKcP)Z?|85&!*Ru(*^rC+E)}KNYl=DHP@_Kpk9gGvZw+P0B68cAYxe&_->kei z+e`3yt*r%ni=mtPx7clYZh*drsHXj_Snpc0^K?g%tEihv+x6f8bhGcyel8Z^{|X&8 zpIkBT^2$J0_?0X&%dcJWhz0Wn%s04*bHle~nT@{yd?=P_IeNDdX8oRz4^>gr<6`d7$W{=1d>c2NJ*M*C-XHXG7gTV0p zO+J`EvykFuza8r|!q(bd1-Pkju&Dt2*PeOU)f~Ft(1WaIxm4&0oa@?O?1Y{g_-3O( zB?5+b^!6Z$IyKhY50nbmL<4<7}AIvc0!n8*|yccBPsJ0C)d2;8nJ~ zj(MlA53m{m*VlVcR!jKt^CayN`U||_&^|o&T>R8 zwo~mC1Mn#I1hWJ)a!Za+7{!r4=rJm8UBTz(u$q4wj{c92H{NkN;JM8Ae3#h_om0Hq zEYtBVa-F4H?Tn8@f2dIpW!sfbC{bS}&Y8l8Q++-tnwCLExczoy#iWxVp-1#@M$$;p zfU};L3HaWhdym(s(GT>DUL?&5Un|9@kK(?Xx*Ml$du>vQm{^$X)F$vAwI+KtdDJoP zd#TRY-@*!hJF2&(63Pzs6X(It#81wxG9FDOWT{egKk%RQtye9L+2|j50PXO#Ikk>_kMSr@C0JdA9_ z%~kNbWx2lN{KLrM$ZQKvM-Iha<~)ziL9E+XhUy%aI1hD>T2G9@ugMM)V8gGquCL7S z;hc6&Q)+mOJjkr)qem6cgVX&LE>aDkZ_;LXe>!w2Cf9e{IajgYT>O5tZUbG~L#1W?Byzg-yM{NkwqTx){1BJ*X7Klz_;re`;A20}uWM?; z`{gP4acOfF=6v7edr3Q0}${$^!^ ze!OpgEVAI6@P@jsAEd**Nb1T}GRP?`T`V&@_YFA!o{em|$Te6Eo9|=pgg^81Qu8Qu zy0({T4_&&zJCtrxOkNUmRH3Yr7qAlgq!D?45y| z2KIIEwGT1yk<|YRTRK5cNZP;A%QzM~!G>{StDn8|CfwvjXONg3751FshpF_@8^DXbio4{?= zlcm;A`SXa(_>&8o;Jx9D@ALlf;`7;V^xO}A(zdN5m!SyfdH7Ow4}3z7ZpP?~z@1g% zbLZIBFwf}TKl*aiOV%5Vf?iM4(TDo?lq8;CP?LjB5_JBE`K9SW^rf3JFqI@BKT&zG96G`yLU)!&4l|}u#w4}A;6nNC* zg9FD8L%%p9Rjdsi>4`C|noC$3u{ri^S2*-d&foF(!@#?mxwfqRYD^()Ydt-SsAm&; zQ~T4fzkiFdF8IKgknnh4Tz2~ZK8H#x6R3G|`BN&nLHq86x*l@joSW$Rp$8b~ zs)}zxziI{BI%;hFn6CTcuK8FCBm9=vP$Z`DI z?3^o#oZ78NMN+6k!rE7YqnI#HZk-S9eeB!s;a{1q^&(FhH0J4veX7;6Ld}VDxo{hw zp_T;t9V)aP|Ihshi(V5E6iOqCtkc88D(GiEW%^JSx&hT48}@SK>a{+fxD=_HK~$2x znmzxekz(1TG|5NE;iTsr9Nd*c1WFr~>h2|zcR$LcYS3T&RW7RH@0Vn9K$+^$qC_&$ z4e&2`pOs8p=4sx^m?Iyjbm_1yzTa*Ia`Bv63h|sDKW89``ytAWP3wX8W7z^7$4_9+ zDLakX$YJDUw`yknn+7iNxj8=@guKD)BlLa$uSdyh_&GZhN8&(R;)b-+;>d_}e2cIQnB_HjaU zM>TcfOa!IzDhSP8m8P(hpL>?jYtV*MPSSCrT2pXCJzYO%RHyOb5u2bA!S`K`>sej$X6_#{zqw*OM zK%SvKB<%WfFm#HFm35`a8B$%Ul3#(}uqm-#U-N$-e5Ndu2X$r1|G>ebbI?T#YJbQ+ zM1EtS;@O2b@J9BzV8wVmAGdC^SY6;;>#+V;J5tHf&ua`DkOLc5J9hUE>g4;_6IvX| zRmoX9|1#{rds)_A`3rqA;PlR+trx)4=*17$jwKWS_zL~I2`R*zXF?_=1o{1^-S+%= zFW&JIv0)<6QO!Jcmw|u3AGor_VgbB;Mq`UAaM{IUb7?h;$S;f?INAtbsgh18@iO$a zC5m)U;2q4Xs-eH;X@t1~rdwRLd`BNkwfkv*=*x3WW`*tO?{IzlTAR-ry7Pe9M@I?h zkYn0m!Brs`&9?Vy;U)nRuigP!B?)e<@&99?+&hZ+e&sm-|dxZ!3 z{;|D9=}E{FIF3}#K)0DUu&b&UgilSWP;R*m9Q3Pj+bHzmMOqg&i(urvBkWlM^>IEP zRlQpnj`#IUNFX8y>%f1rhy=c7PL=;kLjT{B%TGcH@MO|i)<;$FgW03v|9oUjg}&Cq z8LN;=*3~QR9X*~x+$D+OUD;$3vDII%@lY~p(unvr;+~9qS2S&ZilCpO((YD4DsURB zn1#JA_HB8>UoNK|-~-LO!xxMKo(8_S=&9 z1~I85=mk^kK60Y)r}uSgyl~GXLk;XZFQ13Ms4N`y1N^hn$W;C>@;Zs1*LQG&Pb7}2 zn5zJvM&v2Rm_wi5rF%7J1L~>NyHNYHw#eDjcPSl{gYG|X`F_71@MGqM9h<@SSb*F|@QlYQ3EQ9?u%hgNJ zGjD&$m*+)25(@M#-f%E)|7SQXAodbwlYg;L3hIA>{Igl)U@4RmB1H znRc}?+U!N2ik)HaYvci&{MHU;IUzqKz02d#Ob!vc#nk4Gz8Kn^YRdgvm>W;C?wK|6 zixZv4GWHt**Tvj7x$ptF@z?Fo)VnahK+N*23h)Sr+utG^tEbx!2+TfZjeCBk&YM{+|;A5$NL>+fI8p8T^LXYV6`G;L-pp0b%TC z3C3og1!>GR3VP$Uvm3nk*kl;@2I!)!qm@ne=u67va508IQ}#38z`hQ?hv#zm=Q8Av z$^unB#v_k^rEr%;0@l%`Eg$oj;1fRjb=f2We4jPOJGdP4dubMOxs-v^lrJ+0yg&{j z!gBBzGv=|-CH+0f4&T3@iF1?=K45s>o?+-hVZSf^?gg$SXfpF!xId)GJz#_0tB1(1+c!q-n&!>uKaR24J5HhFq35QA#0n+dhhy;qTWn zKiaAzjXwGzjc_`J1^UpCaV#FZ+1isH?ON>wZd+-8w@89#UF>l~C zn}smybESR2dUxO?k52`Qk?_AVc%Jf0!Jnbt^v5IZ4i7pbkFxUz|j$X4ac?iW|F!OrW+ODgR+Ncw?0IEFh6+3 z=Sx2FO=nyW{r6%}I1^qM<6F5gALR$Fqzo0KHS!ZBi z2j&>BkJIRZ&(|w=dQ}9!@2<=({AD+I!9$+@7qMAn=#rW6^c$R)zebu89s*wrh-`94 zUc}CNC|44ArP??lTpR1%E2W`egB|+Hhhw5_kejp{6}!fa988u{by*7V_|FkhY+Kfm-s2K!iIl+PRI9PI=v>x&<#t6r0jkAX*g zO70H2>XSw+tHw4sKzH#O)GaQTL@t_A<^Ek6xu>^Op{)Po2}#C+vOmZ}or&IlVFP%$ z$#mLcDCV#E-7R(bh#a84IL8gtIiCR$U0=-g$Z9lq`ah3bb$KPm-w`^zbNgtnGx(A$ zi{(T`CSf(u`~9Hxa{-bJHsvddEa{lx5U$8&BJ+1`9?-M#$k;-%qeB>EtqSp`T7`e~- z!UDjrHx5sX1*el&%=ON+H{oB790~60L>}NFLz$2cbl%rbeU1TVRtzRg9HfE{rB0O- znFW1m@#X0X@SRz4mb168e|ygwEFNk}Bfj7ITe}W`pL7_8OahMwEGnlf?FP;~a((&j zUYw_W)XtF)fLo&9_dhy`eoF3=j*-!1!t7`*lc|wHROcV;R0iK`YhBQfmqj1bzIMmM z%;3>EpQoIG`xT9N8|xU+SGY1o)me^uIQMwASTf59(rUM(>*x z^glVD75mHuz0CAYu;Jy zKI^#enYL!!OVqzqY#NLHp__c41U}&&zVF-nEF+MUw%`p6;miVmND2K1UEgr($uU+L z;Qm6>3^8*GaekYlzX?1*`0z!xm`LQ1qDI+TzG6P#GiS>yI>0NuUlw-#fZsdnx>ka7 z?!vzlZZybESn#i-DzrsCySV$+#_RAIrasgE0AGuVotRV{2S3}r-PXPkx?|$?2TJ>a z_kC3uj~&DN?0nF34S16!;@bn|{W#Bpx>yTf z`;2Djd*qAPq(>i%@!=k1t9{AsH!$y^*TeWO>ZQ5Mrgv}PCx#`x^IN?KJyreWNALJ_ zlAXu&A+HGd*zV^R&T{;mt(!wfz0fy*pO;d;2kY6~??H7s^jrP0{E1_z3*<)-0sfd& z&W{fHl}Qc@)r`tep^sEQ%iRw7Ca(=IvkRl3gB)?;*rEVFcsDcGRT6#HZ(Oqn&42^* z$e;CD&{cj0q{UrCj{n2)Dq-w5hPDk}NAvJG&oLz0zeL>;PD*k)4ZonQkMFw>{GKY7 zp<>_@iXzFA`;ETiK&ce&Zsga#N&Q^=KQ|lS|6pfJ2HBX~xc=T-yyyGYjXmJmJ+{pf z9{=Fud@vr+#INsB-5c7LKq1u1v%wRbnWX(v&0tbE1-b&OZdfYvFWOI?E?^x9e>Ly1 z*ogC6YReDndf+zxMP`9UoDVt`8 zZjV!lSoONlF7SZ&J}*Cw$fsbwYDMPsGvK3qhhFX@$Pb3hEeX6 z=kBJGYWgVhG!37FZ(Gkj@Qr!p1;b(J=`7tLk2n6$d!*=8glmw0H+Yq~KNEV%?;I|f z8uSUR9N0byeV^_%HN61zP2R816ZROvCs?z5a0B~8E9=P0^nKvZzrQw{;(4p@4&<%Q z#q)C3iT!2>oi#{Ox_T7%j=wi(j_w6c)|assID&reu?tsXfdeHJZ^oTX#=N6d@uS1o zmlk9BcAD@POt)+0Y(^iU+4GiU>vyQX@@F&sfG2wH9+#DYj<}bGd#k@2aDc=#e^WH- zg)cLEVKI2n`=5_S(lK|yv2y4!H|7}aU=S<2l17Xi=R6sXU|!SXeX+aB^9XPJ#&6oL zxL@4v$e(zMSm_zQQ=XJs|Pe-PR$_f;HvXY11WF(c$^ z9JZkMq!4JNPX523+SnGOdE#0@GEcNRh*QGYSLRpizs;b}gI#b}HvL)rKYN%a1drf6P3kKBc^LaD(&n58aFK8_ zO+$kR?)@yU{qTGv{K4;q+?&yF!cnY~E;bH5{LAv*i6@xj8ClRavkmwrb|$-c8TD4* zqreq*@Yfj{1mj)~oazU#wW8okif90u=p8eu1#euplixHTg^#8*QjK@!Z{6{ zrBF$EA@MwPP7l3I$wi!>p$C_2wV+3QYkg}?pkHc94ptn>BuqTN4jn>H+tZx?@(wBJ zB#QTanl2#!A@N8wyb$^P0Qs`xrr77@2yVl=naFjwBps3ifsUzt<$z|;}k z5A3+5<{%^bt;|$qbpH2?&Z^8>z~}aweGty}0(dHVT@c+Y&V#Y#nOa`d_Z@e)Iuzla z8F#K-EO+5AkLj!r`-;9|hW6vDftU{}^0QzE@Su@L)7?vWzJ-g5Z@!G8FaD=%^v($2 z_<(?{$TR4N;oh??9=tl~gi(8VD$cXIk!%jsAA@z?51*|^U%kw^XA*nR*ODgoGO+-D z=;>Mc3-F8g6ich5g%^^*(R_O<<$NL#&$=y13iIfyKX&nPS((aqgxVi zuc!6trakEY3NMS^;R%0$(%)7h;tT(Ne+@SSaADoOk*hkVP)`p2U7-Jpyv>i{ezCzc zlAv;>W~&+S_MZ&ii2Lx3 ztLnqt2lMF5+IE&Nk_q^WJ(Is+2cEB6lV6(-`eRK7r5LO6{==!w#CJn?b5d|R?2H_c zn%`oD2K4HkZ81vk!Ta{O?^nUOS5d9tODn zee9Zv629_!zM+M#MK={`?C~4(NLM4X|N5j7H36o%oYU}?gU)HPy-Owb&qQ_SOjB_W zkoB=i;Kw>P>xS*n4`xqh$MinHJ)K$S8oqpmKBgwBZT1Dvmt(?B>IL@80f$dpMR9&> zzFqi{hyI)^OFu2pKeM1d_Tw~gi_!%R?KbEnn(2kiT*&W7y897LOW?h|J01_Cj!4}5 zEuBh-^X1}!4|?KQ@3}K8-dAxhMv3vJK$kQ;xv_W}_3X)@oN^QRtc-qq7YsAvqgAXa zD+qs~=%SkkAMPO&2@mCkZ{y0BulDq6K2ba5FCVv@MfSG!kEf3zcbt1~&%#U!`MNo8 zeEBhc?hu1C4(P2nwEXr}B?D(HyWds-ABwE|vCa$MzkW8eN8kkJkBk^roJva}`&Qp< zpxs!2d{8ova5C!JZTXEs!|1E}Gr~`Y5aUbLa))UTweL>)o?#GL)6*=?z?IwZ}AA&klbtM2e;5Q!bhC&7CPe zT1a?)b8p(4l!tRl(%)JEzfbpy+aG$$RAQZ44{}$+9t(Cd-I!Z6xUG7F8T8O8IoOX_5c2N`PgS?aDSKB75#?u;MWVEnWEj` z2l}jr?)rpz2*VXT!e21oqmuTl+E3`-4@B+NvY~gCg=#M0+~wQ1OV1$;^L<}x&sV{} zikK`l8-jo5xOS$l>^bHiPqWCCpvSTL7C55t2zq^{|GK&Ln6GnQ+v({sQh^^=OLed=AIeB6Op2I=z8y~=1>%N@Vd+LUJpx*sx_GCu=ykT0SsFz9} zExDFaOQsUm zV_x=%QsmIG+g#R4sWORPaGUu#8qB}Z7`w!5mJi;-8F+ku0g0s1ksmymL%fSf{zyIa zJ!y}UdE{W4)i>@J{4*+HVVn!F1Sv}3iv9o`*@g@|FRnV$=}Mm)$hQU zwslZp@5v@SHuhW+ zl+6<(2YpiS(E97cC((Cx-8aEU3v);)2Vbt_ATR5;f!IwHkn3{7l@DkN$?Gnb2k~Bc z#K^_#k=R-mDQDCjHB`(ZyhC|X=H57G_O&MDJ0sWeW>UEZd~5Pz-DOi@^zV)>o2Vlv zD_6ZQ+68sD^0Bg7GwRVsc_Xt}e&Eg%ZbxN+J1e)xgfbN)$6_7%<)T|xcq=-IGwEP8{RGo9Z1&gYjDayfAs5}ku!W=&f0gSU%@w2J}cT2;JfhMYEONji{0|IV}c%8mpxs`irhl4z{BqM zJ*a=fd#k>%f=4Wm)CmsZedvDT91_QT>}mcRA8?*T%}_!nkWaempcZNo2Ha~Lpt&lK zoJP&}2G?5TsVdnM1hN0-X{6KYM^i{^0UzHa@cg9X=nJZtVltPplY4@?fD9^$`EN5$ zA@sMs#lJyEiV^p#WMjlR^EE0d#SnFl@6H*MBe-{Rx3^zIe=@1FT@n4Di8)r{659f= zr4YB5@o%Z2>#_#d%B^C(ST&uc2;saCXB5-2yPQde<}wN{ZNpsouf873$RX946`tH5 zj~wf^=Ce<5Z&Bg6a-vXp9vO~p{(3n!m*h*_Q{hE@qBQ$#co7W!^{cx`B=k+*7rT!X z0hiacJ=GR}jdeV{vy~Y+xh&>IX&vYqu}bg8g5eKy5tU1;&}Bv(kKW^LM($N6bgMY# zDkcRCZ?L|VO-?#3x}_oKN9is)aqu|qi&?wedqo`i-A9Lu4RFtM@2c|9Bg_$<-w|=1 zyA^$)RGkA-p84cXfttPkQUPH%x|26pUqD1^e>0yvQ%D*<)0^b(o;)A3UIOaK;wrXWxTg{dsfH6*ECq0_D8dTFE&@@l~5zc^NZHF z?IwjJ(a`D@7NLJqVL5ab=gTtv>RGc($b04es4Y&yK1!IV--oeccRWc)1rwSzscJu>)$!q&6W6jW`mC%+0hTZQhc>{ z5&DeXo=Zu!@FSvw_Ny8~=R4(*c5e)NoIzjqF!rIF+`~h)(3v@J99c{;!mon@U2BcO zXKqomeL9T##krn(APv7CmOy{S7j-TsJo(#4{J-1hwEXvA&cxzB*;g}|uS3CBQA5Dr-{s*^P>(hXEj$QKBH~)_)}=1MUwk*>H3VJX{omGV2^V~&irGeH;j3@^ zTm2P&f8|a}_6qiyBze5^!%Q;f1-}ww)WVz(rs|vZ1pe5Gd&_3P*O7%TE{f2d#m7n{ zLeg+944JHi*8`7aOW(Nx9N8Ym&}Vlno9xwmD)#s{@X-_I-oJcU_rAKcO?3H$-jVbC zne{m&kzV}bZS2qF?^#De-~*d55A0k=3mk0MeT)g~i-q-V&KWV}?o3?r#RoD8JBQrO zIjl$j7Dden;A8hm_R^se@T)unshhxeG7VhoH-83B{m`4>1)rIZ)ph4j&TR5M&BCxi zBOCW{EKF4lWRtpm;pP07(Z|(v^v#>nY{DFQL5>Z1sW~CH_^CPEyLA41@;7?m@KUbw z*TwlHj^0@~R6LJx8|i89@XICj^2*aACvr)SPN7#;A#(ZGo9x33(1#i9r4a<3qNhPP z{4jJv2MfbmPv~I7+mjAVOJOd;P``H57U(&r|NP7z0l%FLwvL0|(&J1`-Jl15{kVtt zF=gbqxW3-GvjfjJp(u-`0nfp!JZ+GXLPETS4u5P%{Y;-{N(N76qqVs13%$o7>K6;c z)hzN`SCQ!~Z5|oOj;HDL%psZ|WyhaE2O7}-Vnsp!cNLjlj9GxLBk4ui2t4T3q{_hp zo~G@XD3ONw+_KN(2Rd|-Z-^>c{bYu^^7X+Re(2QA_H;c%s5=4qY8@89#q9DOVHD)M z+#U6YIL}fSf>($ac%KqqyJ3d4tC8IMk2Jxu+guA5Yu}n7K%S&ot@Cb36fa zp-iKF(ve50xMgze&U4&9GT_!DC5X96=bKDv8Ne$RPm!0y@RLU@yPrTeQ{Td#XZHkp zoxlwJrbO`bm-Lx)fP!52e?m8Ti2wJ#SdynGyWuza?Y_&FQMBm+U;V?J&k>& z&36Ab_Kzj^wo?Cb@HVPy`G>#YHx}j=JH!7Pa#^d>k4Pa}Z$p?=UMGW>C~`fsMy_Dk zCRBeDbf%MP>=E$6+$O^#Hm<}+JqAsx> z4d+DODN=%UP`VWRB_ecq9Ddchg{cX@H|Qsq4hl-}N8h__m(nu)gdSaAX+KH$y_Fe> z`H#{6xg-3>HS|;Rh7KbH;e=SZ!b{Apqk6buUqddLqA>Umtzw?5*5&&f7tyyJ z-ALBv^2lEEeMLQ+z+>~LHopxjBxXmWQVbmOi1*gYGa|$IQ2!#<#!hjezSF&! zx|GF${>ob3Xm&Q-Kb|BmooEQYD)Up!MG1Md?vGV9H!ydnekQ`}ZVqW*m|qh*1Kng* z((ya=)$8ifTofkw^@k?nKXsw*Zryj#3x3Juw@rC;_Rw)AqW*EC{#ZFj@96~}3t-|J zHQt9l_v?-bSTPbr zZf%{4YrO|@H(H&g->p;OkGz*|N^6B)VdKhb;s<@;^v*5X|LYEK%1_>|!#ZZp-{R*3 z-<{RQ^8fkAlBsT<>d@~v>h{Jzp22!^np;{iT7jn$UuDV=VspdE;o?($nHAX%Z$1+ z(JI-3eN?qwt8fJQwitb`^Vg@42l(#3AOPR`{hmK3M5dF8!yhJ&#K*~`{kpzqR2$~o z9g91)M-Kb7=8)?8J1N9_L5jwl7kE;yhFj%tGWqKvp|KVDoH|d{W}zCKf9=Ah@u=(G zOzS%Xq08sjW+@y@&m^m^S7n0X>l-SLmw6n5k8HnMpoR^Ug_WwHre2`zRn6~FXimp2z3pR?9vdWA?!^qCgPCQB>m64FlB&1L>vz1*^ zC{*@-?U9+0tWreblbIw9Bn>6s=`TOY>mAR%_uO;Ny^m==Io9zsht@iuZ1(@%nhTtn zE_}1R=_uypsrR1$FE5`ocsE|4Lf))ZIlk8%`wSQ#Y`(nL20pGca(cp9h2)WgUFcQJ zd$`li{B@#G$V*n%W05pPL`UJ%>X8Q&62u~rSzkjTeJ0wnB$-0IfBOp;ds4`ZkIwqy z?Iol;<^ok&MG1K)beHY*!xF+Leo?cx?DbXDn5Ily0i^i-r>J@J zG=V+*|CM~DUPc|ObS&CMfgUe=`lg~I@TK!c#O z`K6EGdy3qB3gBn*sWP;^ivG=8kyFVC=OW~CN7nv(xR=XN&>_Sc{nv7B!lyX!8#0;d z$KY!;t7v9T=|lbqQs`H@3Y_IjlYQa^o~Qowk$iRFh3`vZTi*gV1!~i~;PH56box1& zfxp}5w-07u-lf-|;wttVyIu0zF>@DtYc8bO{JVddHNKVk!C%Znv~oCG_ka)AJyv*= z3Vh;>QHaIDzkT(tXsg>Snv4CEr59nr#;kQ; ze^ZEKullY)#Mu_vHrFjq6x{cE;PKNg>_v7RjSJlhU-&m^gBadYVr=q4#?Zf%l=KQ- z=^5h4)t5Ik4tS9&+@SH75$5Tyv0piZbJI6+>z>97^cge8Hl?UzvK~VM&JUo&h1y5I zgFjW#mS(`|HFR-{=OYE+vu*5GVr>h%2B!||O}$VUTsahmL6`q#f*GOerOL0>6d)hYe3c*Khtf%ko$Ni(6-8BN|a38p}NT0M0_Bnk?b9sCu zhx}#QvC&fme1EHP%2qn$_gHFw1tH+Z&1+T5rrBhI;Zna2bZDIi_V)y!?*-fH^#nne zr%t@e6!HvpxTDUn=s!HK)3VG7(A(C&FK`nC(#TMKXm_?i~9uheQ9fZY?_R%T$ z;^>q5)i@7GD9;AJ z!)o{a?BWQ8=?WkL=MIqPDZ-(A|>g$(3@HJ3xRV23P^SS=ZeWl6@ z-X$na$U+qJ{fud&4b9jK^!$B&8}OjF)@@oFb@;d#6GcKN@O_#GYt>`qas3-{k>FWw zXHKx_U4U=mVdrlHGx&`D_{Xf~LN}O`4YvVal*@Iz{kc7pDE(k!jMhUv6Pi$t4EFXBbF&a_(fG2&+3gv?3AVa-#e zz4b@xfw*YeSwz=I)JRzkwn+RbYf)J(-LTbco#0a{O_J^gP$uYPHA}G zih2e=Si`RvwiexL0iBO&qh0V;%+=Ab^IpyX-jS0zCpU??=Y@w258@GriB}SA@jXws z3WaYE<~+sj@IDPiA93MQQ7~|L_((XzJ>YQV3n~|;E&uUBM!kIp@cWx`*F=tjHyGFL zXMUecJl}n*Y12X9r^X?*4Rw-Fu%F>G=KGl2+1J^?Kff?#_jUFh>RnD~fT9xiUs>+5 z-7k-OT57Tcice$TjjzkGDd4TVpe`eZ1oSoE%X!~!z&@xLSsQ`t;Lk&To>zZTNZj}~ z>G85a57UX+ujI>=g4gCd(=xxq8hA=* z_uL8SybG7kTXwUgex+=8blZy~nwg4|_5Pev;nYebV+V<{sZ!CuXlb{>@^qvv8kNSDjS63yT3i#4{={Va< z%;UtWo!)^u9=>|H^xvGzqMpya6bZb4A2*d+UCJg3DzSMqh%=Fz)-8u2nYJXE^_4zaJ|{h_s)lrKjxCwoYdim(wO#AkBotSr*+HL#2C1@q9}tJeP^8L zRlyXT3%X&gH189rbKHaWx$1djlzPKNSpobK3%Ms>r9&svZ=w@Bf_RyJyiPj;``!-a zeLCEnOA>v5?t2lB-;=EQzS4@lSE4*kM$p;5JJw8!KnFOINqIBz1HQ&&BVN}I)C-*- z>US~kQm#UywDk$_ETJ*06e%EQH3Vb?;b%(R8Tdmly?|tC9yUymEg&?JS9mGlCFPXj z_Fq9icedZRX&m!!Tds<*WrH`}`&?EaNE!E6Ywv#bI}33exaRTwHs%NBk5~5XrI0W5 z;xVCb3W@anxP)8aBW;qc7%RdHiEk{|PbTbhO>`LC@ud>~e*c@z-sVEWcRs%Gn_&Tw zHfOrQ{{VXd+66XyV^4_Ntk`t}__#E`jOBj7oOgt39j)s-?87*@H-SDA{cgjZ$(v6w zXE46${7OCQ6Za>*74*9dB|Eb=0k4#XuM5lFg#PdBOKlff@Rx>$j!)4CvY(u3d;Bqv zc+Ar$G^0;5JD0Q50Jz`h?aRa|UGV(dFIIHkN4&8{3)^3ZPb90K@u?W%!}&km&A@^5 zZuEL0-!n+skW;X5Abhg!r5?69h_^c$f|2OY(zj6Vji1N8LA$QsYlJVWvDk(Apc3w_ ze|DGiFzVir(9Z3}m}_uTDCy4v&vB?Br;Qc-x6FSJ{!i<{61?s^}l-U%GRr{Y$A>T_u(jqsUw z6uh|r-ZAdX(=PPIyje@erDr=OgKPJFwY?F8^)7vuH3!|+3;w}r~+Yrto_Geh{O z4D_d%ysl38rfx=1p6}TQf3TZ{^1uDp!aeK#HN-35KX_EfseRqUtA@C^tW`-nKo-9T4}`OljDOfqOgZN?O}^d74|vZ*{=}KpadP^jzYL6 z_V@&aMILARiTRJ4vRTbs1*GN7`=ZP6r62xkw;Y1k>&Dt;P{|D6wz6B@Sz+iD*YlnK z`D*gqvwF7kf=|g2Pxkr(K1o1C;AlAZ$DUi?d9fRQNLlvVli9#S4kN$R@IHQh!5(Hm z3E#>M592>8(B-&3?z=39y2!=+)ffIQ`U{Uc_+RCaAE!-OdY)mwHxnPvCg@lZtPh;V zRp2K}N{f<&KECy#Ks!?$eBCeqZn|*}=RY%f@h|v+h=>y@%1aNm5zk%}aVv zXWI9eESR9r*t)!)Gbfvry>VN2LJGLDqgG*0EPRWm^G){9-*OKteEK&}`FFP!+aU0! z)KNqCB7NkK2m5C7enWTv`CQk9AGpwb@{c0wE#tZCB`bJebW1{a<-Ue5G3*edc{*NK zW&crU@Uk|VxqrUp!T&7dRY-++77bAhi9@~XiV&Y!g$}G#Dm=AQ3cT_t?Aui6!+Aal ziA~{k*4eDOj%45-t23TLXTX0Xhdv8jNh4jo(wx2*;nzMHVtf`j{ougNI%6v>DFE>o$nI*L)Q5o{^?hhJLe#DLik5R#)Y;ya>6d-CDS%1Nfn*%=Cd1iz7#y(;z&Os3ODhUJqC*`00M;0t`QFt;L{ zh56@~AI@K1AK&RXLw8!oMTBX< zm*1sU^5a0=dTCfpZvy|x0o@?S3v9R#^+`}0(?jg@r)NBW4)dTqj8}IhrBjHw_&KS+ z;5}|XsUQ5qMIoIz3>KZJ*;O4XYRv%?~%+nk9PcijAlU@ z_(C4mx!X;#nA`5(LuHKlG(j~pzFJq{Y45Ga`|&k7eB%pC@JwAZ8ztw!_Xo*&J-P

hKY2;ccfzSNQxj-gf#M%AZC&jzLcUbagd*OT0vvpP*f!i+5{2A9kJ`E~k z{H6LBzNA~@FQV3CFWO-6r<>^0CqI_$NdK8hjGp<}7vT50_?g<36EL4u?cQjB`HThS zIn4u&$je7c?vQ@e#lBw`Dxez~UN@xLREE9v(Sb%I3fZK&QT(zRzHg~$_K(d0@9>wm z#$zaxG;?LrJ;r?gYwMcs&kf)MX>8VWKSex=rAG0<#~AT^bx>qG?!}xvGVly_*vYvm zih};_3ERx@9QvpvyAD@V^fPy#q$hUN!r!v8j)^(~_;XXD^aAopzqhS{%5VNdgZ(w`W5Ad2oSR{L*Fcp+Ww^w*5IINU?cq z(xqJT=*Bg5UhoY&rVo5%69*2Vt@#vRl}#l1g-R|IV}4EUuZeLm=Ja~Cd|EJ%>&0-P zkr7{mq|K}Czh#g;V+GIOA+EP&UpMsFgLo?XqIn;_Wj@Xa2As~|iE`I`{e{r~>RsDP zYk)eIT-;Oe3H^2R-go|pH|BSn+m!MDn}0dpPwmG(t(PAyjIP6P$DvA>ioW9RQ0;*@ z6Zi;+Z<;Z{_vk2;VR>&K=CXFb*NX|q{j!?^FYJZyWkvhyXnj0%QT0oj-O$Zio@mf` zF6NWAp~=T3@IPvrD_*?_ec?+-rP6b|e8L{66hjYwU-7}LWxpHlrwU)-jAcSxZD|U! zH~n`X`Jwg3OW5aotor=gA>2Q`qpqJp4*b8vJyCYxy7CQA5=z5xZ(H@^p@6^wl2*6P zEeHGJ{un7Mu1dg<7Mh&4G+aO?91q0}K|c?X(^6tuUr6Lc&-u)qDJ1OH?c(bbpu1%i z%RI;aL|YC0F7KVdi4mbb#aG~?JegnaC|y9r_`(gv`has2-+Wp@{s{Qh;n~`aeaDLz zjxP>i?nm9-n&T$+vm5W;&;oxSbzUH6%q{Gdq#XFWAc;IWu+!D419JdwdCl~|EnWIW zg8tw~3Y4>|*N|`1&u`}GR0IE}7TT|N4|OW?k!c9>{D(Lgw@v0iC>!Q{^U9Rg+hI=Bg}yi> z4|Qsxg*F0lveqYgRzMMcjSI(nLw{rbM4smMPW+uNanC9B=csQTr8`u5QCH{b$8RFu z6e2Z6rVF9-$v*n=63^>yR%6!WDCWV8n2hiLK^!)*Rvy}$OsCNdw)WPFd-$Y$jRPdZXvn1I*=}uMJm#KhpI5mo`o4-8+R#?ii0kpF92hdk*}f zr*~C9&1%mgbyx2#D}|zN6=?@JgNJXf^qmjD^Bj_C`Ouk#{Sg)OZ=9>}|8U#i6#PFk z^1He@ke`&oQz;QK@Nu>}So#7VY@3m!*@C(*XRfHR`?!o%!cjFfiKYG zQ@fTW?m2QvxK9|cXVgB){R8|*hSF^B>`tK$OkAlFO_Gd`SOe?yN_wBmfdAdCH|T|2$pu?JCi zt1EXf_E_yX)G2V97rqhRR#^|k2j9l?Ip0rVKej~D7Yg! z?w=NYQ8n!G-Sf?CwFmy@r}fkQczl}}rR%0HxZg%pZ6(79JWSG)dUf=X)FW|`nX166 zRc@2w*b_9oMMO{s^AJ8S|NgGZ&nJ62zRBGf!M$isHYq`Guz!;0{L4nvyRkxEk1^5nn+`GLGgSHQ#N zF%2w919zQeT;*&*Ty#28`#It~@sIr4dK&ehIFxH754<6{bicOh6y{gl-_Ygyzz_fG z$>IX~k^KjcZYb5mxrx&|>mdccaP6J-JMeZgRmJT;tT8X}Yo*=-k4OJPs(J)*d})?i z`0r-mGS8uPOu&Kf6K20gS3n;s>6+*s15TJb=GYu?^zi5V8Q>$H zZ(ueacFiT}ezRwlFM}_7eo}P}yo;&c^0mGu==hTT;Vj4>Lm``jjLK0@?e8UAZ$li` zzV_a+noY*?A8<8*hX~X-^j;o*u0i3L-sb1<;Z*hRP)A+}xi_Rpr2`!B>4Kp=;(@jQ zc=(l{;PEGpQvF8-ere-oxx;JlU-OJu_Tc%8R^4FR4n3hpG_CJAbP*!tzDEgskWBkZ zC94JWgFk5^KFz@QJzuT9>B9GR_{d;2p6|}JLw)@BGD*k#15_b?h`Y_9QZ~DRGkkml z*gxU!UJG5c*2^a*g4L$aGU2cFYbn_RUzCx3b9*o1&qi(hf&%ykeU|!g9qj*cb!E-4 z0N=03@_1U{1@<%QM{Wx4FCYTXZb(+_D zr%%q{KHV0ll-+gUEsH5Vrx3T=${M3BYS>$+x^t`b8O--7%GeFUzZRF%9>)g%%1uU* z<{0P}e8<#=#!&ax9&s(DHsbe#6?fy$?HxgnTlUO$IK@dzqnB@CN+j{?}48hS254QX^KYGfAzdin$CY@Ka7n^i($P zsg~NiT#fTMFY|Q2E&2_e2Yc+oQ!vla(GaPSj{BP$Ctf}TFY(wmt9c6NJ-0YXDkC5F zY_nQ&JVc$#t1z}V11}l-eVDz67CbJMwA%yt%jyzbzt9o;L9c)u!X zl!B2L4{s4`;NF5cXTQ?p_5W~vhVeZr=#<`+zPM=coIm|z+sg5NjLTQt^oDQF#?D!c zeLeDoM1S>U0C2$gJ)~0* zbzsf=Zo?n=AD3CI!k}9Zo;5S%f-i*U+L+NI_EXthUEaX$h5cC*PCrJlM?-Tg(TJNH zzLC!!j{|>Tk6l3ISHbnDQ#*ezzV*w;{9TwLHE?La^zMVK;42i*QvYZN&STg`&6si) za{y}IbK-^21^&{=l>V2Gc?sthl@!#;|8}MPhp&CvEm7jZ*z4^c>2U%3Q9G|(a@del zOw6ALEhvnXkWF`I#y==x|AlAsjVR~^qGMxkwa&w*EXOM05JVvwKh*eVHT+2$j?f={zcTizci_gz^PrH-SnnUh4WVeSy2jH4fmfskbLne9}9Zy}ty?=S_AtC5P)C-oZ z-RrLc-Bg+_-To~iBi4P3gBV*rUz9#kf*uU zubJ%tFL&#-oyI!jEW)tmWy3x>)MM$UXM7*`4@zn@-Y}a(miJ8ycralenDOZfpDFlBos@Hm=!fn;Wmw9>c_$vc*QZk8=bYXy zBcK4k4O15XcbsSaF9oCY3#fZE%gkxO1%Exw!@2Q({3wraEk2kAU>R;>6p$hkE%W^~YzZV>H@M zpWqMS7^w~xzX9GcI8gPAQx18m6;JNqc&Hg=blFgM&MUNqQ%c-Y>!@hLSQ z_Bi;Ld(|f3UIjWAp4-*fdmofncl~)5(eUM5l?KjJHN8^t@BV4C9T{Dm-2eRe(YM9E zW|0Fm>X9zc#pUWv<&Aj}KdOV`fx^(`3eKPR2cH=DQ88mQ40^#Oi>&Q9p9Z&9hdU}z zXH{#Mc4mMtxLYJZH47a#Ysoj{HO`Ak;cDCZd}6fR6nh1F<>7v=p6%#QHu_qowx|JL zoniL$e2Y1xp*M@xz{NA#Y+s^N;j7{;qntoLd-6?g)+F-LcsNU={#(SKOjI79SRT3b zHsGP`8`J|z(iwwV=y5kJHm`1gUN?4v%^mSeXS-WGq6g2jG~Rv8CX1NZ9h(XEK)o^1 zQrid}r6=&K-?=RCKmi{(299Dc|L2PCfA_I9Ygctd<9(mp&N@;8-ZYPCU$PkT2S49a z7XE1P%5|wJTQL7&thjJZ5qgbT<=hvcLF_fEY2QBfNfbcJi!gC%v zERU7MdF0W3S!eqbr?L0X=bh2ZTR68z2YEzrp6Pl;u9g<>e8mF6vRpMtxS9BE%0ag{4}mc+ZZ0UgqlY5a+X0cJZjFGxA30!SER1 zF^4EhTM2N7_tqTsiI3pxTdZ6T(qM0`v)B5Uy4Z)n7RY)Z^>EPTSHgdY!&E=}b>q$G zqy8xRSphGr+_tHAMjts?%vGDD1HML_HnrFS_&%K_?l^eOx=_K7RLhvxyEI!BqXz$# z&i;G1BJsX3@h@6JCtz^;$-@?cJ~@8 zEou7~?B!Dm(!2uQLb-Zg-+deWT30PoSfL*d_TJh(iO0XI{NQmE^3@&wKfB}LuaFjd zxcn&tyk+C%jPYCWMMP)ak;Wcyow;bLY{cE+-8p-3 zonGa?dGS+>a`2VdE`_%~g07HuOY;a5RUsKZFHv3k6+RKIoT(F-E46tYSxdwyL@9{s zRPah6xwLSfrwjg%MGFWz~ z<^D$W4`!yvWxHyDi@ zjW9kpBk}Yn&u>F-qq#q6o&Z0j>}C-uf6SZBY-Rk3d`_hp>iHHpFxJU&^VlT%B_6lX z(>Ra(5)b!N0k5TohPB6wgI^pOct19QpC?+3x0nErWF=86`=Jl&4zE^vjeI?!;{G3ns)ZU10yA4^22%@1|+^m$Jz6vDF)Ecs%O(3mrnY@VF(BUDR&i`FxKizb%5E z(D*FE`g8ua%!VphDG=#U2n zDd(PnSLHhs$0>+79Fx6xbonv%YIWGlDWOj~6uI2xzp@Ys6%PjVjq5akKg}Lvq@_h^C;G|l3U;xpPgrQ|MV8Ty!1xeQ9ab1!^{mW zo;cq&OztnIP+#_|Tkk-N-lfSMnd@`S*GqwiRJPez9JEXCLtM zqzwxVJN&Y|ABH-`&cKHwW~lTQ{>QVG8Ag=?; zC+zy)Zo>V4xyKj&`;L3Wil1sn+=H)wxm?LKcK|C?wtG{TDt(%$uG}dUFf+ zkV(lnGq~LWKchBV_WKO{m$EEnn!u|Jw|tg{zS=%-Vjl@<$F+#`IK8f&->fv zlF^|*D$6b48GpOBYy@8N9{EX~v<^D<-6olUz3`W~KDP|R`SV;lV&V_oP4@X4U#btt zXYTdf63-EDT*>ZfX2|TX}KGYruKy zPF}eyj{dBge)$jhk>J=9FE2A7ZgeZMo+iNuGFAIrDFS^>#p!)Y55XJyGtutd0iJKF z%Fy2dbtYiOU@{YWz=8Ky$B$yH`w^2SE&TYVx%)!gfai94#(dWX9@@hfX|Cu1Ke5&+`ffq&=REq0 z_S6CFJMiVa>=TZAq`pdQdyhWv(&f~VnwRl1q);|P)L2LHKCA~Znw(XwfP59+yI`@4{K%Q#$G!aVdLOt%+jd9uu-&=lg zy81MppN^ct-zMk)x|Qx<(y;d~+H&~;>e=D1-TR856Ff*%9JsOv@2_Om$Dr%rbA^s^ zX(A6OxsDHuATQ)J3MKyO0N!}JX=oC>rI~cpSL6IlqCOlprrUyjN$)LQ8z3Hwr=A7r zJjCac*}Zwj5B*`ZhwU;eKG&(oALHGpAvLF1kr`^WoMEC|IkDa}Q z_!E0)ZefDQF{|Zb8il{ef+K|T?kM(=jccE!U4zc3V<)fDg89b&>BpZ7us`X;Z~HB( z;6LRX!**Z5-fxB7dUb~IA*Vg36@B z2!70(;`e&C1ottyt!tW(DkM`S`i%*XfHO-h8QgZGUo1_e{TKhKH`o+RfnU3tL*^{U zFlRf-wk>co_Naut@ij#MX14C7$|(l$vQG`_KQsZqpKHmp{x_N~;0>oFmKHz2=TSSYcQOS&3sH;E$x&JG!fBaGaSyO($7zT6p%>)8xK4=~fIb;rKIsYHK%7}&#lS`AY<_Q^FUq3sY>n6d@E`olVI!3l zE|^!(mA%C0hWc+STxdlBZk%%;{x>&k=q7w)wHWwU^FN?ey@e2#RlSP;(*XCtv z(EnzxRCHX!+>TAUfGp-rtvB+puKR^LHZgGBp&s|7{XHW73i!G7lHPpC58(f8UJLIJ zLf>|yQ{N39S*7;j`it;=s}Jmd@$cS7YT{$SO_s#fUihM}3Pp3Q z0$({ys?_3jn zD!Myi@~&pb9{>`e@@5 zUfln%?P5mM8TkJvr>;+<4?C$)lyFuHpYJZ}@pZtBW_u*6H-a}@kvXTiA3Pm3HO-lL z#B1qgy)k2V%q3P0I(@yEO(xFjB*j}}uT?B9%}(Gg)~y9bYEjU|e0|*w1F7-iJ5|)r%%As88WaxSbYjT?eXtYOJDF4)wJiIjb)R!&FZ7k z*MXS!O#W|wU^VK*BeE4qsRv-G%yX&sj(IVc;rc5^!&;h4?&ptx^0{h5b(AkN6 z#Q(e5zn2DiiTT@yf*~Qq*)-kPU3btIukvdm?TXMJZ!vFv$^+j{)o@rA{{BSvE$?G( zz>gd5xa{eI-gw9$hvPPQ+CNq@MTn2UZvI1F&`}2WWeGI^PdH8-Y?E-ny(bqdbA5hc zU#E`iK)3;T+t`K96y%-puxGwc_n^M*JakiFAM&Y&-?K6B%myblegvbhl*yA-%+tl^ zU{$+Rk9x@8)Az{11-yu(CD!NWkmLp3bG*nSo{yL>PmP1OeW*3{yB7WZv;!e&NMis40CXq{(~PlDI~zuBJ#F9_W9Lb zxi$X}cPgfRCCuPK*ev{BQVI!6kn*#M2Jn#l#~w=>6_Unde=F*^aUWvZD=~reLULpu z{bmjLm48wha2a%B-nzbY*JGfCT-_~b1(AP>s&9+2~UI5F@eq4UpMY;+dYWSean>c4%8XZmdgA^)Tun&*PyTk z``!(f#P43k=b!AiPu&H&K?2*-KR*ZqcT}?%c!e6Biob4ExOdt;wc-bGUEXiaa6z00 zag&@zdEhJ!mn$>B)qt$G~%&q%R0L>lFg{SqnL_Mrbr>A@uhDi8`y`rQwFF!NPi1{jVcR#%-)c?V zqXv#t4jwJf^Uo!*jfY>;gaN->)UeI~zx7@ie7&(5xO6C3c~k{{ooa?}`wKCL?ti<; z^bGpTK>NqfM35(T*d3|5jd_Y65tnZ=WRqsY7ZrNps82JDKT1PT$3A|mTLQ1y(Wg-5 zi9FZw{dCwH;D>h4fSQ6`&=qa8XY(;PaL8fXeKRNE5F3TQ`Vsi&(uAZN8sL*;yz1fj zG?xTDi>8{?25xt zer?M$Udp~K2*mygb1827Ch+Xin$#bNs~{O@Fi=gj@l~AQV82RgTz026r$WGSyy)-_|tvvV8huW z+!JOz&UqiWl(0U|MV%biRo@#A{xh-FO=}>sh;*E0HMLt;OsULUTzfgP5mRO!* z;_V`S(n|~bQ>KLkK4U&2^3B(JodE1hv@#=g>>;&RoG!BfSuKHwY$4|PqlkO}X1 zx9H#=N#whmTF3nVzCfNT^kTF8FPk(ZZmJY^%_h~l-#yZSdv7|3MLl?oez?HprTI(r zb@2|Kf|k&|xHt8u%YhfA*B$tb^B%*wQPv9lmeNkqd|)b~*!X)b3wb51>+{eed?p;Z zyOkgNW)hd@*MCSN?hXY_3tRv$_^A?+btVFP(Y#d>52OA)z<|u5_gO?ZEZ$oO@kRAW zq>Kvht7rONn(+siiyf(dW`{U@%X%??9C{;N7{lP)3Cw+$U%JbM_d7(Eot>sFhuoVF zdrrHYLq0tD&Gm2J?V}MzE6Q_x&z<-Ag9h%?D-~V8H5+~Ha@C#_;2R58D=q4AKC!aRVgZQV{cdT$ZK!-Ic6n_70UFn=bu~e z^%UaqQHk+^zCG|~)@Ih89mnsjNjPSKw@|hE6dG5QM{Y!Hv9LlM>t7VFlYlOL=kkUE zap(h!Lh6^j{>`!7+n#>^Glj%bJ=I2#le;F2z6bvlkz|g$16wgKSN2x?4bN`uv2EGL zAV`hve&tUr>)1^ixl-U_Mxx z=EZ^t>i*}|P2o6qHO_BVztll@68Xp!4_-;XqL0a?7d&R^Nn02AEz7PSQ9t|wdqO1A z?|pg%zVh|i_I>-&=bUv`{(>%QHLx+cf-@YXDJ*@@GI zp9&CXMzoiYG2s3x(amB9w`0!xn&_6jz)=QwY_%V3&mqsK%r>gv9M3+~^S-bf`uvK* zS}b&~Q&uMQW4oY#84b)_;zd1SBJ&ER$ivcGb6TpQgMGKRR7U^0AQUH%mW8~LG_KJ5 z26H>6b$fbbajx_3bG=7iFXpI8*|-Hfz?*eOgSn_{x1Gr%{6as~W@4MM$8dO`t+;#+ z?h~hKF+cbyk681v56FYBdANnUVt598Z^4O_kh8!M!|p{_q{07jwItI6-vzCo=3iaS zCQD+x>1W%3cVpD(#_{@XOFYU#m@)76`(PKp7jT`Dv4R@%!SP4tb!l~YKPzYs<)J@% zzpJNB47klPQmLlk63+iYtt}3T*pH#S{#8Bj!H{Ld@gjfRf5<4{!T_JC^1Ifi=g@CD z&v$P-3ty<|Rra@6rJ&E)2yAdlhMxDfXXSJd@?3_C`LSixxsBgsAFESml@ncIn^0(__(bW~;c`48K>*(h?)wew41rJWn=l>UY7dHF~yutn3t|w4CY#UmTCXoMcvy> zcRsxoJo|U676<48&9|wp?18^Sd+Xd#At-rak<~RISqC@)SYuGcTwRYVOxuNGf$e8v$@dM(;*gI|EZi?6K)-bB~Asu@= zL(31XM?O~0uT4CJK7dv3T9wN+oZ}md6Im76WP+hN;UskMlA}q&OwZtRW`5*94cxE1 zYWp8g8RB7UXSw8IoG%?-3t|s{bKKV9JMgDW95tID7tyzUU7{F)=kC4j@1Lm&9NOmP z;t8B3V|jw^96j>wIWLu;xFnRo5Xvb-KfJ{Us@~}M9@!N6y0Q$kH3HX*Q1lEsFV9rCHR1o zdi5?CQ*TDx-SAA@r3D|IK`yoH!y>|P^N@&j9fhzD>-$T?M^t*dDEb8S8N;+=hgaSK zUo}48SpmFNXZfLu4Lr@Gq+an2$PaTIt7e7pRZYG%TyaI*U7U9c9r^~IqODHI`T+8O zmu}W6MLbV!7pu0_EW%?bHf;DC^_>b4s%*5ZS=c;VUGA$>K^kS;I%_;dwu&4Jf>_G%_coF8*K)hC`bbzsgXbMCg? ze)wA$V;Uq7j|{S&!=~UnyMlh)JxlV*>kCr5Vy=S!SX(?!>t8_3Z7zKA!92jije8dM zxM$nGZ*ejJ^8`mfn2t@p#(r6?6xaRo*oW&LOr7UYMC|D8gJ3MB!$bH_$Shsc z183~%{MIez`#O(&RU+(`k@ylqw<)Vq$^rXO!X!Jk0~gs)u4j}ZFE4z4LrFj%Zv(p=b)j3gr9(%pWz~{l|(_q_Hit`a!SKP~le8+xSE1nJKS$!_i#0kEXV@&$o zJJ2_b1l@aj0{Cut$C923`o3&;t!v=LJFoxn9ESeD^2Fq*91Hl7(Yq0uIKS3kPRS2u zA`aKu`>Z2y|NOScskPuucoIs3g?{9c^0)CC8-SOqgXiV`qsxJx>AvVp> z=#!$RRSqO#K74&)Gb8f4m>1{9J>c(4be29R3BsT2ae2!H2gE^Arn*%I`T}O_PBH97 zd%qx^*#X{}NOEipkAlBv`Jv1^3B-5fD6Jb8UZ1I3+Qts>RAU`8Q|K%CmqOp#yTaFa z%2vG#xQuGQS@aX+om5vTlc;>?hxt`fe-C57X>7zuGxVp~l_QVcM!_qGNS%&?ejV9k zzEKZ8p|IN7g(yz!%Md6#ymS`(bl5m!41jmi?9Y9-8vyQkGa+IsT1Y00JjPT}pGx$p z{EyRscj4r$ZH1mw8s!yIln0%3O}Kr)+(+13nk6sqjHO?!nYm-$?i{MJ5XaxWUI59P7Cy0KMW% z)p{mMTM_xm{$GwE?g7~?Cm+b2g}gqfi&BC7cjYu)@$MobAwx&AN3M(vrl8^FC?ouu z`;un`%SeL$ruCaC#UwwJbj*DPkNWL6?kF!I4O2cm!@Ek!^WM=jNu|)?1?rt7lJm#{ z!}xq7@Pp>NqeVZB;bZVue93MFf6&F5#Z+P7RCyNhBsTQ1t1nGez$cj=H(RCNfcNp~ z$R)Ym;EA_B@v_5tun{;}`6?}&%nM)TC{u^-mUZa58+6{Ut8pU5=+~rQy-WwmmQS;_~`8g-Bh!b1Jd8h&*z=#Ta*uLdqq-?M&t>!aZ+QTn)k$+~0Vw@s0_F`1<>P z-XlXHJM~0PMu2b2t?;-d1ig0u$2}f*p2NRk(D&jgd~o!8tpc{y<35Fsq2r(78*;l> zNWYgAd~|M{3uObI2Sv|Um=XK2cp2Q6po?+*t!I-cC_w*evtFtn_kv2eJz=>KLQLzVyLo(4PgoqVJ*44&khN zWCNdxNSOv74f0azx$!q!QRiqgf7Mz&g}-?7k6od?*o$Sj@O>w6>9OD!A>Cz&M{~9h zV#o8z0Yi!15&QDV&TE@1Hn3nn1E0^m|E^(P+;q{&da-~Ukrv&%e1}4oRVrEP*op`h zhg!^M%su@0PtIYFDSSJ!UV~OCCFJr2%GH?9xc}t!ojZr5%SdnL%am%yGQy{{%f`kW zdo2yjt-NN72+tQWBLOW6xuDH2{^w>X*+Aw@I}Oh34ad|hVS_3_cv<~v&mH6PDyJy z@C9LZ5B{QFIN82aK1hRmnAx^=rOl)7p-Z3IMvHoyy}4}VIOh4Biy6N`@0u7s_VX8h zFFe9!T*|5(*D65@cwhg%^@Ffe?dVDJ$o!_MN*5_{rBI;>dLKFBklK^IJI9HLeuH zH|%J6d99fEn4Wptjs1xtms0gd$8oPjwBdp5^Aw`Dd)@83G{wZWmAz+cJn+a&zY>Q* zA;}YVd+r#3xsojYU_SVt1VV~Gb)mm0IXvO_>s2l(Q;(*ufv>moy|Sld9UN8!yTCj?^Pg$2IjfzQ-%8SzOwPYyqhV z+*7Un1LvFQl*G_p_(JytwQX|6{H+y#_L!c;_xGJ|<>O=Mv$7m+$xT9cescp?&|3Ix zl0NLEErZ|fbIYN1(ZCzi&iuF#OeNB{H(1Dg0&iUsV;x_Tk2$=Y8x^b(XZ^<=OHLLL zr@EA@ZS}x6`<%Dc%;b~SK`}1HThNVcjLCW>20T>4F5xQtc9Ij}ro!$;}n#eoV6U^^eqIc_uLl^0;>M z2$NW-Tb_!1z$Bigr+@T&Gl>gh`Mz^6=;XDG&eSzc?0e__!p@q9JqIPWsin6WBqXht ze&joY&^)`fo?>4Fv8*@Mak+UK-JAs@J+1N5k`fcZ1jy3aS3R>W;;`LK4&) zG$%`x8FM^)5tJGU%1pDx=R`LUs)Ap zJ>o`me#cTxW$=hXg(f4wJ!<7r-`+osIftj#=A=a;Pc0YgoLPbXB66O3QVH*?^x=x= zaqt>kr6V4|-HGfTcPj(bORGy3sWreG`X*2Hg9ovp@w8n`%EO#=#-Q;(_?8m$wl^Su z_AhHR7U#<&(QQ_je?EuLxVC(&9?m<1rpuN?`H1Tw^UbSlF#j?t@U816_%AE;1T&Dw z>0Q_Un4+#@76#pr52cW`*=8{pFlSW%M$2mt6)I_zJ|X$Q0(x}mGs6P6sl;Z`cFqxd zBM$Jcw#cuhlFZ(xZ-rCPH&4{aZZbq(YZ2b-(BTuwHY_b!ik?GIZ zBAMV^8SQsXa{6)@ZnV3fG;9*Dtcy8}ER>dAi zzqhV`gXl~2|1A^Jo#ybPJJ8oC1MikUd_F!i9(euEm`}DF!M}b9HE+ER9;?|XybE}< zU(DM-CWwdpbze&qu3-O~tq9knV)XM`x9?X0544f~a#l|txLJbbO&)pFb5_eQwOOHF zw7=l;y9ap2&-{-Yvu*$ zO0_3zVhq7o9&0(n3w)d9*kJP-)GycT=PJM8Ij>c4lP|`;pbN1ItINQrKEE4q(Dob! zesyPK@qi*S^P$@H@jJ|ein6Q?{6r;}sUJ^Rz<=zUJj&DY4)ZgpuYa5LWA1*Xuj?g6D!t*F;xI!~ynqRzPdSLDQD z=&gg4&pBQgC?Xl9r&W#%P)NjxKKI7$n725S+jskH5otY;_;Zgk?q9(fySZ&t=mI3T zyf6nurT;>O>_*I$>$s~R0zL39-BHCk?8_FYQko>-yZncRD|Kn`X-7W^%-ezE=A6h)xQc=ig`CqLbezlZrjUsH8$Y zvZb?#3Os7~p@Iqp`$s>YWLZillVc(0BSV?wnajp6TcVic#qxNA)8b4bZz!was=y>+ z&rLtd;2dGe(k1%07(`fy<+02r3RxNLJgzHD!~Ww9ZQt;@Z?%*K1^X~bK0y1#SSCr1 z{W&Mp#UQmtiKZsCbP~{6Rl3W8M)veseA(bjA)KLdXNLMQUwyGS^rtHHc7yYC*1)yy z9Y_=qehmF)^PZZH-_Wg;pJjXl&ak3HgwM7d^Tbz59CHFc*sal=$9V?NKO1YJCNJ_z zS!CT%5b8YcXS^BEI|z}U!I(hgv-nMZ>UO}*iwwiRIO2Ux&(>c^Y(vT=I`*D--VcK zA|GAQg18!Qw#C+iKo(zz2eFWG)#qEh29WxY*|G;79XU zVJEEl*l+iV>$(BzB8x90m%x)r^=Hz&Ws%R9O6Hyj1m9B@7u&oP{>_BFH91@qqUhC^ zG!0*8lGxP3Bg9{f<=KLpGq|qDn^%7B!Td%SzbKBUI1hMa84ufwh~xasiO0zMOD}na zZACt>wo>GOg?zpuRN3WmD$Wt^&)reTue(FXGuC@xpG$q{cCDq*+j|7wWUDJ6-_CNl z>;xXT@v%>cmv13?|5+&5IJ=PeTzk@R6}qbnNw#y^H}INuPqX9;`qC=#R%Zz+d}o4( z7G5A< zV(0yEDyR{7rN$&{680C=sqoG%s4|Jc)6)$Xely5Nw}oxmRj5l>WP6M%Gs(_(&GPy& zG!n+5I>doKMWFkAcm=*6pH;5~LSN(&iTSCn_w2wU-hAUyL!3!HRb2l<6Zl7Oc$fs#Rq_k z=-U)T$smu7Iv;22PePvCd8^Y5^Hm@ z9k~6X{W*4*ezf-h&j<(62(P}(C7TV>6QilwuVog&xIX$%obVqh8+du zxkhA~J$RDp*MsgC|KK?~kT2VH7rH+_iC1;#YgwG4ImU3ltI3^|+J}Cq{p59Fv57+B zI`h^tfIS6hAzL{SrdE7T1c#rT3j3@O16_2i+7Si^v++6u(zDpsQ%@7Hnc5&uyuBupGQ^ z&$#93Q}AES!1FusR3cfV7+wMYS@vxgKKRxY zGZY=)+G4)lQK!y{o4|wox7qIO03N?R`(mC2_!E_drk>Zp7dKyhl!ACWAE@#1v^VC5 zJnmE3G!8u?PqEfoJij%otz*YkfSWTm7kL36UYBT-He?T+V3fZmpdI})``g>5$j|Gx zDVL9+uc{q;sL0WP^GtGi_;fVRJ*PF-u1HZx!77h$y2q^VoshtF0 zpQWh3ZzB4$hf0PQum`JUJh(Oz^`n^2bp!v+OmaZkKl&!}->cG3l-Kxq?%$Uwqdo=^ z-I{gG^Z|pYolrYgqA=bnYVspgl<0gqSuvqHR#Jc z$8NtpAp<-kcDvCg;F?2k1on+Lpzl2}A*{O-`hmamq-QVmkmnWIvha6)b;Kn`+(Q06 z{dwx`9_&wg*f;WGA8<9ESD!lZGh=G%t6&Z0P0!!e;t|LD8uJ)Q|BsK~+Pm)bBJv(z zcWw>vFVPyY(J1(W3l7sp)T%LmDk^3ySt=>mQ!`U~RC6_Ob^QoYC*T#q99>=sbewOWbJ_n=5pQlGwOSLX#|?V^ zR-;Z@za=L)0r|4)<*@l{Jg2$RmoBNjK)jLhGn=H)_obWqRYH%?m7y#>@PR@i!~Zx; zLRYhATJY5`{M{#;4c-#){p%LlBYrAluK76wSBIhkaw=mxuZlP3l9a9b=#KiM-D#Go z$A!IZ4rPS_itxw$?s1e`z`3N?ESLzN=;#$mK?yvMwz66^$NCCMfah+bSEs;tZBerh zvne9pJX1L)9}CIh1$N_qh(GE3cZ?+Q@7b(F*j52o&5cdFvKsFnIfAox14@*ataaHe)a9%@^D_dJsnIf&||d|;C0X@9yGyMbFIe!uPijYh7AcOMr-{6+uu6SW(nkh=__ z4KnE0yj~V?q|X)-)AzF7(Ob~>y<5wznGXHP<9o7qp^KUD;biY-p%JE7bLpRRbi$q1 zbjdw}O3Gi3D_tw2k-c4`hAb;-q<2jC;iYcWhdN??Lh=kElJKiM(hB&?=-2O*w+xbS zhpX}LJc9@>q|F!|Vq#v3K-<1`O!C8{VU;cF&%_z7&$HJs7ir6~y(@p@V=l9eXb$=} zuCVh(DZon@{gmW(=%$m(-yHQt-S=eQ)|M>vbNq_)X&%74*v_o3IFXHW;r;JZ!)i=2 zo?olA7yU)Ti|vP%jsZW`xo1_1`sl(xrybcDcwfWY`)wSs*MUc6?*N|v&wprq8R&a| z7@hllb_)4vLw|K4bh4W1%fC77!d|6EmFY>Ns6(st>xIU_AIYql)7*#s)8Q9dKS3ioMz zhW~yU&ZXUFbvph^A#{XN z9QVuNzudNkV@ERTRPNNvSzB;DJr~t{k~pykDUy%w?@uSGoG;>*-$sA1tAa!u6p{WB z`FA-z(1+N>-3WMsJ*5XnFC{EsKcQOtm4MoOa=dkgTX-FG9zN50;*Wvn&#cWlR)+n< zH~H0{ti_xVUaJ`SV~Fe7KOfsipwriRyx$=de$l(}4_;tTRP^p)>46T!f6@kv*=gt@ ztt8pMGGQZZKZ=QUx!D%m**k8SyeP;)a z+&CL?J6RTZbV@ahbqpJM{^7^a%byFYvc=(lM$p8A|ge1!J6R_-2z?zj1pZrOYekky zGnEK@?~z!HqLSh6>eG31z*A|*iH9|XJnHHRuI(%$&WFWJZL^EWEtbg+bM$!wnN2Ux z@#4BoUS2){zGJuZp%Xz-*rR19=HS*!BW~Aro_Z_EAWjvWN<)zh60w-1@#Q??&?HxP zauj)3zPNWg_=aPz7WgA3>16M!cM?hOQD^u|Zr_MJcld&0QpFMQrH9+@456QBmH1lx zssVe`+C2|U;e1>tsv=Pt0(_f!rQ^^$Dw(&@`r23v+~&pnt21Ft!f)6yWY3Q|6fS!Q zIJEG5E*|@tmX}WsrnF42mPcMNKeGGJLFlKC>~jyLFH|pSa3$wB_1j-=w8R zX4*^mOgc23Zp!A9ntyNKj^9C^bZ=~{UJl>ZiGiMHKfx=i^DK!80KY7?m%ZpU{Bi@^ zRuCNykpMY3QQdJZ_0BM?b1Jv40lVW2Dm0VRsI5ARCA3 z6-25wV~^`ZYDO+A9xzS;(xpuzR<_&5}J9KOZ?`2tpMu%2-hu|yWk&-;ZVEI ze;NL2uHAy??_jQo+6KChGlg)ZHDBF2&LDBEzeb3f3GaQ~C)+?Fq?D#$T`LPuFBYx6J)Ue^d9JvBXt;`0;p87C*aV7P0$(d z(vt4c3SmIMD|x{3|GMmV%bzPZm}F%}$Md_D407-G&KVXB@MFo-$v<0xV`yitN^4+} z(T8o*GC53AdjDyTymT>HUi#Qjo41(UOdD8#3Al-l!~C=~&Y$b6jtNTuH=BCsIF>yG zoy&Sbaf&JS%*7pjnNUb2Pv3Q_X!TJ@nE1%LtmW{Qjtdj4{_E+63h#o@VPAk-jz5+OBsq& zh(>?nU`V0E;5C`9L zzoBoOZqYm5UVym_8#mrO3!Lfe-i6%L;Az*aUwR38HmL)q54un06URE2(`(?v>T!Ko zbn7bk*TnfxA!$j7H;w*fydpL?~T2zjEqt3?dYw^7euDc&;Z7yUIt^;d!CSO2c; zRtP=Hs}-4tUm|a${@!ebKGZhs!&BXmJksmF>dpq#g`8gpk59q3m?zfM`xT$dX6aNw zLr@V(=>Ha8vIBL;R}XU&UhGj3{HOaG{S}ugv*Zjn>gt(If{qH*7x#cMja!x5XIel8LX&+B48mSq1O? zj{Yo7%E6>)9nQ~tl(JvoVTIOy_0TDxl5>?Nu6F0)r`B%o2ksail znolx25>FYU4mWLe{(QFp`e769xG{U^sI>o;-$R~H&g8IectrvRWxGQmbFP8cp2A~e=X})f-g#$Hm+Ka{gL)&ZL6VE8JY`r zA4Z=VVe(1F3_Q+{^$y)ph^K%@4~O{libzxGXw0r`3Mt&*C3YQr4~yHI2a{F!o=Xc- zDn3$4#=_;kBJe`Hx|+miGNES)l@<+pr zeHQgfxyR%x772V$AIma)Ly^bo9Vj0^Kxew_LiREA&xv*nx7$mK$ibnsC$iP>*)|w# zk{QID>J0+-)VwJ~#%8z3o{Az;up)ix2KY-6h0AZwI$%%TO3NqPx1qi;Xa9B_{lS{> zZKbW7@$<_7!4uzr&xOqIC?7!_akzgA#q%L3HZFc306L@5%d6zK6_Mxr&fAw@9)|U^ zC;SfJS=NYXSeT!K-;~-jy!iw4^JB$1>zXisg(|5#*8yLO+Xp-LJn-m$!p+{G50$rn zx#|P(o833|r#mChy}M~f?z*5JPEU9sREYX4>|X8RagUmY}{Hu-Y~v4!xLLa!%Y4=(X-8F8qd$Gif}K zweddc&vP9Yl7Pp%WE?f+pGV(gxGG`?`pac|bvLV$BC`MfYH>r|DLyRFLs{<=TM*QBC)RheiJ8DN>!*xX%67CB^iK5Br6*&e^)P%!@PTW;gS*iU$R%j^@cDc}(s z>{f@}#+;#8*OBb?&>!2Yj3~0g|MtQo(F{Dn_P%Bx13};-)iUR{N;5Fej(Gn2MJEvf zrj!IpI@w+wRnq0oApI)0cm>&+#B8N%O^azUnVjg(jadnvPe4iWOgfG5#pUj7+6H`y z_ieni66P}(s!u=O3Z6A0)Yn-P{9^0ccIP9|#azjfxDH)PQluc<``1Q z!8MJ4)pnx3pWJav7PxB=>;5iFbLi!?Z}FUX4&CXj;(Y2o%+Ug^mx8}& zi=Rli5#}s#tXFNihdCf>&HFNdkLJ%EEEY{i+?AiO=|f(!r8(p}jKha3U9y_X3wmhR zZ)IV6|LX(Q+!{^Mzj#fE9Yg-)W<8k~3|?-lor!W8bgz1<$By=a57z0HJY&-geMhIj zrd`&UBPCYy$1c&;*hNf`pKXdlTl*B;5%G( zCw=hx_I%);Q0R<9gi4Zr;(C(w)L8s5hvf9$k*rPN{jVjk&;3Q6e9dEp!Z70f=ZRgL z1Db&cZRYlwMg9Fe{z}-pG5DWv?vazZgZ(o++|x_3r_j4;{2{{WX1v)ba+R7jTj%)F1jjd`sp#|o`CqTb!EwD9o;a1zn( zl~-2-=X(<9z8`sR^gWA>&*3gM}v@h#IqJrQL! zlFJ4C-S@7~weXe7Esl*oZ2_-n5W9A_ER8HX+7xmEc`qtpcs;KOlT0bU5lMf}AQOux zMzf-xFQ+z_sP@@jTua%c;pECqo+o4aOKmUGDGo3nC2i z#Q*5ImQHj}=dz~To z=%jFOuvxz|_K=@>|Ck^AMbN2GspUo#lHKXA@Bz9^ou?0Z8)u8iZ$(b2N$A=_JY`vU zfYU{EC+?dwL!anz-teUW^kM3M|6EPOo+HD`{qIg=?$egAy=Hjsf`n?_cbF8CsGo;p zGI7q{Rqj1Dj6NXfhgab*^p~#_l^kO~<9;>j(C>mD`hAo2oI1D=b?#QF?h zu_BV0>b$-ab*JCaJ!hAopGvx3>^ZAhKrV?)+f#uPkhQ^o{;tBj6%)QAz1f)m?aoc1 z8N(N*m$PSAEc&6}xtc41gL+nRlfo~#B)B}k(+WPmCK;W9F{4~E&HJKb!VU9wYgpf( zflkk0sWNNeKpycfc2rLv25z~{-_Z#5W!s&&gYyDZlFjX?w+eMdufFelbJSs9#>2|~ z_b&$gyOh8>gmXe+zru`oKKZsFo$!DspQv`$&RmYkBY$SyCVa%er=9i_Gr5yXG+*g) zm_oPKCn>bzjV|I%YvCmo{)voQu8Z$I;nO~_p!Ev;N^b19tJ);`(|}HsAINv{m-&6z zfD^U8-NjLZdbrE4=b{Gw{;?lmlGTfdM|Z%)Z%(ptGMr?;(8al0(YOF zlALo%;R-lM&&eHQwS%6wbxndpJkIx;O`o}#w)te)j)>*srO+?R6^_}W9^qT~O8>mK zkeIJ9^|Z(9_eWdRSAZWWzsIJu9eiZKYwTOYctybzH+^Gh9LIfnwXF0X1NpMcCMPrS9gQsB*}&R}zR`QO*rGii z-{(Zsf;09YU*GD>uGvH*DJ?34GU}*PMNBWq1VF#1rTY6x(f@kbzz4tZzI-2qX+3Wt z*_@E^_{JyfAIcB*ISu{pd(}rWc8Jf>e>)GTt|=m)%&SATLJ!EM)^7A_$;Ct2ejoo}5dKOnLl_vP1pIl6QanJ>O ztXL=bcLBf5%>3>5`2X$w>70OKJFST7rUF5T~j_Uf!mj&|{~lof!mv$=Kd9FZvF1V|u(doBx5n z)uAJ1{{{FJj$}D1fd8Yds`&dr5OqoN?XB%I&|z*Yy1Eg1-K;B(YjoIYB%Q6qfJ=x* zPS2Ko%sD|L;i1#_ydF@b)~07kM%5=0?3&-~sejp7nP9UPx5j&Ba*{ zA#Q@B63zjinTfu0b!j4S(;}s3AFB}8MCoP7L)1GVEa|c9i^%s)&;EVGIWYJqvG^9| zY_)||Jds5I!N4MzA$jOkzU^i^58X?d_>XfsG~g#9JV_T&rxC-5-m3RF=l044E!6=Y zqH)j2NVb^pcZ8>LuoRQVsb9*g;$A@yr6JOwe zMhVK-MrmaEtt*wmX>{^&_Or@G=(el})*Bg}rW1iop<`uT6w>p)-cPVI# zB2PEmb{g1$ekk~kmNoY9lpoJ~CE{90hIYTXdNUULe4=dj9k<5$QD%`6qs=7F6=hb^ zxW4d>n%Qlrr`qhz-_KO?mAP=?g)M>W?ySoNC$YZoF9FOpD_2r*t)Vd z7SESu`#$?s;GurnrdFa);fb9vtnS4A<|_sqp_>pdjJk}oz?J=$99_O#3J5rI!i=0;`I^!JcOc`rqo3_>G29#%~e0rf!SDZ7{84Tsv- zT)d&3M+E2xFX_PFkbnHJLQpj3%$V*EF?xeKIMc$|9=?b+Ilh1uVVHL=8*tj`KKKi^ z)p~;H%gqX;Hpq-X-^CyEz=aCm;iUZ1&N}RK&_75EKwQpqSSa)#K$dJT| z&A*_xs&yS13vH*8wmQ31HXbT@EsJQJ1dq&%#2XKrMw{qHoI%HvF zIKa1vTlCycDs?&5z^L=+Tu z4UshL`6zB$VuUyzIFcy$b{FtN;i?TY1vFwYtFJpz!yrM%mwRJw(nt;0J1lWFM1!aBTkc8M@}ut$X5cAb!dBwz()n2FYXzK7U?~L5!Yv+z(xZp48L9 z)($vgh`eTRa2k!=yVCMn!-hd@)*o-|1bz}y=~r^%33PGmGuigop?+Q&u~+e50r_`# zV+H$T;M&@{Ece^MgAd=g{0tw|>)mMv;L|z{;XKNiPA0T~d=piQo@!USRmMVn0k(rrj~r_jdwE z3O|7loagWt+%5_IS;%EN-xT5^;M~XLD$GB=Dn~try6U4_s zFl9M#{@~W8?sIG>HMl9z zmorzEiBXAjR)JoI5Q8Kwjko9@qLXhwOjaE_M{>&JgDHQ*TYpEuPoGhlW{3W9_iMkPF85;c@#o^DEsu*y+LF+xER#$Uv_-te zql`(u-d6i24&AbfgTzDy_&?cutQ&k}ib+h|8>RXtCP^_a7fe;e^>0!1amqp52~PU& zz;&KX-uY{;oIx}hcD*9t19)oLS8%uFQN5X47Afo`>vQ~D20$eNp%>(va;5E@jkAGJ@1>f?uP1^S&d>YaPoQ(w)Tj!EAquk z9b3eG=Ie{U zxE=yN!g_P5L@v&m^I8Kw`+d;2?)bEQGYjUhozZ;!3vpzmlacrq`9yo`-%`21;OPRR zd3WI7wGHHTyFzEp6?{ajH5Ii_$pS%l1{_3(G=)$;xp>QM+ovtPOhd3v9}gUkb)`y{i~r@*5Mc~X|` z8;3+Lsar9#S&|oiwt3@+$NALb^YLIZ*I+KK9Rn$*Q^D&%N#L# zeDMeBUh8aI?{v(0ej;;*MH+e7u-vlqBF@#|^_L2B^GR9kfQI%~+}|mNtmz>Nxi6eA zKTD$%IW}!eB0?wfEPf$b&=afJho3$NUEomo)iq-9EAbzAbZ9sY@vv3Hh3yrUr2Y)1 z8}ZOcw%NY8*eA%RxiV~Vz%#}aEgnS0QOVIqhQ~*qQ;E#+n8o*U-~$A@lO>_!*BO*L ze)Avd!S6XaIh$xCq5S*yehwPh$Eg|-xEynUn#TLLa?*+J!kojQpU_K7W)3)77L)Ag zu8}{&#iYPwxBu21Od=fST03J{Oj{&Ws_g_M8VuRD2)$;*D4jl*ds8O(lTm{jtPXhUa1o z;`;nzKwusnx>=z!9{-@Pse0t1E(U#U$&|Gr&cQD!Ny!TP3dq+!g;cB4=$nNDo&BLV z5^_0U?_3X_i1T`eSOogSmCXasfKwHEI)%)DU*WQd@}m6(K6SEfGiN36sfDXUAMktk zU)U)Gwt)9O7`!G_8+Z|Kd;G0-^moapug`m;4=M8Mk3s+F`TL0m3*y-8FOOy&@H!S3 z2gjeGILANz`fIx%bEwGWd)w79r=x1*W&}Itl3c&m?^O5yoIDM_%J;~7rrEUp_IO^I zlSk%lc4B)Z7tbs)|fylXsc=kQ$bOJ93*0J@X#mZO(dG53k}jfX}ZaKZ0t+`0_#C>Eis z-b4Q>+TKIH^Y}=y|KgnmE7Qwf$K9@S~ z4g6}xrC#db1}a%mJ8*bg0C=jW4t?1hz!Q3vv3)@wow2vq^F93biOubA&RohRmslR% zDuO?|=KMe9ROrK&v3b6Gf_nK(_~&^;UDUe=R@_~0jyRjr{!zIRI=iJW)5_<;6FSVk z>kZE*mai(Lx-t--+x*je#0(YsCQQwSqN6cKF-U$)NVz=QMfv142EOHKJ%F)qIC;5p?~WkC|c` z&A=B<2}lkAXAm~_HyuLW)1PH|5+}(ZUyf#Ym3SAE&IChN>xN?Tm%+vQGqMcnEQ`f*(*xm`>a(zeD7JSriXo2L#Q z7bzu~2G$cX-Nocr;K%Ov^~IP=PKo-S$Rw+dh7Fk_PSvy%N-wZ6$?6$12M^SvYswAY zZwDV>EiNNF?gIYMc#~!__|a3U5kY&wBc6>IoH&kr+Pzi6Bp*CsM95O_qD#oPMKq0b zA?Szw&v+Im<2h$hQd74_eaLJ2_7Unlt!u26vinfy&Fy09=%CJW(p$Y2efsl#%>Dkr zk;kY{5_Q#}+xY!H*XU&-VLpm``4f3SHRRaM3m?I!_r04t6_8ABO}c~z@JwmLlJoGz z$|tG~*%`yP9&)LR3VyyjM$f$lyj}3r{D)NVY0|-eLiZh`5Wcd%O?@NqYv`Z2VDgzt zesrWZmYUE=+sy+jYqOxgYzir6_dwnhDq>csW8RcQ^PL6s)7Gz6-<;TrxjVZB_ZUF$ z=0rad?x2Nvp7-sut45&D)cK{OW6-yBnTPM!0Oa3C^X@ai8)WWn@dG}2!G)dGbSZoo zf8%Vw0bg1ONU*I3ulDu6_tVjF;NFH_v|fE0xqQpC#w3nT&i1|g&4s$_Use5|w_0=( z8=20gf1OG){q4)^ptpKm37O}oCTBUo!wb?aU0@H&t0>7teA+;BvvltFCqIU32Wq)O zG0D2uq<;Pq6aIB8FSAYt;VP_2xEaSFKVKHjjcr3e=jq;XR)9fXHFx=vb~>@S8s``d zJ|XkPc;$OP)S2o^8bgB&vV|?M&yUU|?7P36zk8;bT;V*n+qaoQCZc06?#8*jcADqM zxk2a;ihc=c?k^<#2_1*@t^&uK%k=j8g+5)mEIcFuxPs!^2lo&+o{8Ih1T}$=NU*xP zDWM*1*T~XWLHsPM%&6qVef8{$-JuS?^l^Tw+W$J(b@8X?e}Ny5PEiQ*1|Gddqd`jy zK9Ws>{KC)&X}{{x-Glm#^U3pvSPVlvP4Y9?^)X-SY0ntj1L!_5k|em&AL_Z4s0s{k4EXjV)=MiMVosCL#X}oDCBgT8=*pJ) zl0ve{>h=!H*ucP!7W1rLGCdXFbc0S?jmw4TwlHQ%?j&5n85pJ>l5;owk40AIc zabON-;*#3&CiwmWYO~qjdLe$o2Q<~Ea*3k-FWNvDc#UW4PD|nZ3CdWMV2H$&1;8{NJH7ePhTkw=$ndHhgT0M&CMT@l;rM0z9>Xj`g;Cs8jsQr@UympDr&< z&!UdMcCq`HJ#>-hvLA}fp#D!UpVHoU1^cLm1kSz=`(IxfqyptqN# ztK0z!={%nJNdh>HXHVOLd?S21Em3iI577zpLtf-G@Qkr|!$JYX+b{mFpMv4DDR_`@ z{^2Loi~q`&M4;X(yZk5aswtf?*eyOie}VZG+dO%!xo{G5m?r2P0OO5aZS`_g2MXvhMNfU2S5;#KYf>>kmKtqpxqi?sj32 z-tj?A{#8sOkh8nq8u4*U*#6;4cj#Am!yY?+0FQQ<+?9nd?zDX3zo*E5)dHTc>w%xl zmz`N}hB~%1oG#*&2w!)QeSD-S`bMjwi_Q}GTsiWpcGKt|6Lwuz`wrc6*EQWK;HS^L z(nrk#801Ilsm+U@8N_NXp}ZabRBxrHA~f(%BAjc!C4d)PA~KcC20i_mo>H5fr@+0& zCb9|Y@{9+oa*Gl2W?hyErDytt&7 zp2($6>_HJ(_`08o`#N;W}cz?k?g(K4Gft zIrbIk%l6JukmsD9U)lnGAeggtrC>Gibg?%=^5Em>i5}m70pGu*rXPXPl!U<-`Qs4$ zK`S2TeRMmEdUOrn)O9ED9y(Y26Ih@(4EtkhDhJ=qJGE7Nmt#)Id*d}DYjE!TzBu^} z{ZF2S!(EjV`DE1CxjfJY{ZnpJ_uVx39~4)$cT*7mPDL%m72zW%^SRynNFiCm_Mk$!^Zz}X-$s1k=Uu<{P`feC zFHcdkY_Z{dvdue`+6um$izu&Ncvw(#ativ&AJQ&~BRh(T z+_>XTi)`etzCH$*YYB-Bxw`QUbSbR|xr3BDXhcHG$Dj&+yX8}R=2yW#+_r1vmS!>y z{{PP!UcA6HkBC(%Uk9$4xvxpwzL;F?G)lGiViK9P9$H>w@a3hgcdaRiGtfB3ny4yl?ihyG$n0p6t6%)=-I|^Os zqx!zb=(_|I6uM7CS0mU{=`7fTzUI-i(&%mq8Lz#5O1%|zo6n6toig+}eFl*Q>~zAi zdelqK1pMfYrKjqsH0+tM7HM|D@1@_)T>`yQK&0xkzu;fH3LdM*1OL6e|C!u9#5cLL zal`*}D@2wwt$YF;lc701=Uxx}_No$5k<>iWc6_X3q#XM_R6FTP#(Cso^)ZvsD8!X@ z=$WlG==WsfuT!kipGx#lME)Y~Za%X(1)P@qP)6$<@>|o%D^^L+l`Tp^=%it4 z+F84RLH^c>Cf&+n5dYWKE*$X1?arsP_1|X@-OWWckt*<+@8;>`0sbCy-7!VIx|p!l zS46M1C??;l?hp7oBc7_huNa?WkPRDu4jD{?=Vm^%5XxYZ20tF2)?Oy@SITr7YAz;k z=!`IXQcP+doIa!?!z4>54a3qeGRXHCj+FO%;E!{O{dyHT>m$bfdAoWUgze3iVI4UJ z=~CUP&I7){^Wdo~hhpf&T$)wv74mA+t#zZF%bDQC^NVYc=abVJ7ekR}zPo>W$Ki&# zNIxD-q=CPztEn&SoP}>OdTL!YbRcajw;JSbD^5>3H-CayFu{-=IV;xJHBNt>d)D@aL>(! z*q7P!eeGrRiL|Z8v5CM_%GP(r6hcoL8?})K@h!DVm_@c7bBWq`OPx^{o^KHkoPnOi zm-fY_-7A-zH=1@d_lLfOax;YD`@c_i|K0&x)P+8Z(q2)h!@?ice8_>GSwi%^11I{x zAFI<+o$r%$i=~79zzGE!EuA)^e%j{9l@{I#Ki`I@y@t?pl=ZzYy^OiLN1CNBoqdki zgzVj18PH>Dj;k~PH=NdG%S^|7zw_4mr&u56ksXqwekVE6C)xV>>qGawV@rllFP_)l zOV(cX<*2h*qt(QKN2rS4?)(=(B?kp8x*hMFa)sg$ERp^AS zxb}n>9sd0*rpEe4G!l^T`;KuW&SL>?yAo-fL#&1}UnPMP@obQLjCtt(!C~8+)UhY4 zB&ReBxM=e4G5hy}=&%_)_W{+-FetuYGGDS^K|VTD9}dDd1(1TQZdxmVDDyn1fx0QHxQUd7Y)#ZbG zlvY3|>D0e9jtYKyEZ#F}36peOkW2~?V-i*F(?^_p804wJ7WEJKIc7+I(_$ z@j(ST{kN;1)S<3*`@6ILb22`U0LR!zYs_|oB86mnY~#+;!kiCZ zQPwxFz{k1k+rCVMuHX^ZQC~LTmrgB%-1vJ={envv$fLyn&kmsu+<$V!q+SMlpM@KK zvIB3IpWMCu1Nsft>CFuVc%BV^UjOz5^A_Yf1G8=u=%DnI{d)H!4rqer{#lsM5aR9J ziaw=b2d&~;A$$Zsyi14SFT0|+&HKnCeBn7k%@VrEhw4s#LL-=~>NJ`z2wh{1rKoc4 zn|$J&eZ5NX5&F)@Rjps&VIRf%Y?qf0;BP6bm*27-b@o>0!Dqlx-dRsI)YxFY{KmMt z>CezXdbMP$Lr+pJ`0UpjE6kO8C#99J4d>ST^9t*rC!85xptjw?Ts>hL>n`ZamzK>O z?sy1X*YfO*jllhU1hsfY*V2j9+niy=K^kGbX>*<(I6=bRyCWO|bmDe-NPdPJzD%pj zrh6_^Ne!6^%eRL+g==eEbns7x(Bo2YuO@wXH$?Wov6>v?S7nzyk?OPTc3Yfw;PE>K=lpURq&+Eau|*wv{Pj#Nt3Pz&qITn< z$t%o9GN?0BMO_#l7UY(g2_MW+!L&&51!B6+&6c~0$sX6XfdA+Ce9b>Wm5yVQL;7LM zmF29+bT<J3h`Lkk!phZ&dqwk?`*QD zWWy;RiI>$>vQ6DjQ2G{hYSl;fv#~(8dQB~?QXg^Kd@=JW@XdUFYIPy%M9##Lxnf)B zkG5Uds;`DVV%^Adh27}u_KbG?Kkxm((;-ix^VswL?XaN-aBkDSQ%(Dwfb*SR9?32a z|JI`;r}*&Sow>P6qU+#46I|$;cmY34ZVHRqH0DcQUA>1Jb&-t=4>JVwz5I-KzIUGi zFJPv-m2n0>xYCkYKIEldDX-hZ=;LDS+j@W4K+l}K#@J;ZJVQGfEat?Xm0WS{=Um`x zEA7_#@j?%=hJV9X#7*Aq-mDdV!aJ}>T9}g+dD!R zuo&RHA_{rI_0H@KB^t^7G2CbY{QQq=pjPoXmGD*OoS8m{IYzBpA4$STb6>Qx0Q z5&W&0`U3u@B{yH*G{;=5gxvkKv3oSK%cY~w4*H;Xs+g1pzJS!vy|P$~{673e@+0Ew z7q6as|54ze8Z*OJo?;Gff}~(DbZpe?cl?5&zocoW8;GLs+}O0w`6=rB*&Am!DJoHj z=gytlHl{Za z>megVMybrK$cVB@Det%UFP~@NIOliY*L8i@wUN;%8aWE}1vb}#Gv107NKDs--oBc( zg--~)YC*@XIP{ahkF~u|6M;VY_WsR>lkjusoqD%HpJH5Mu>O@2jYMlFP;4=OS<-(< z9DR%DewtOW^G_a`)nKt*A*e^~iM&#;kQ2w`^kHoch2**3-B))6xF4&?96jcsQH!}y zwJOx7HG}_!v;g0$iPrlmUMIP|s55=SQ zFVe_(hPY7odgS40TkFaN(+G=4tjJ~PWcW^f&&(+St|OVx6PbxQE}+Fr@88^M_8(8B zMjol3e0bBy82ZxpS~2Xy@Y~!U;refTF7Xn2awx0@dtx=NkNMy^Xw$F#>3WbtMBn9v zX*ohiuP^NHHiWvSqF`@qQ8gBDrZfN*ZXbIoQ0nZEjCnZr&#viSg z0`A?hsbxVQez@t+kAj9}(GS``%nuVrPXGH&_RY-bBa1IK$-Trqe@#Sti7%ZvdD6K= zK?l;lwo^uaAY6q(SwUD2c?!WNw$i=A1w~~L}$7m>KouD<>iuri&W%a+CLN71btOqT}4zu3-op7U&Y3e*XeT5GHwVs zXmEoGQ*<--9~ASND`KzD7XA6-g(s0qPt&=yb}Mo_DdJ6n(Bbt4)bpR(kWFkef4cQN z$Rde!K5?&5ho>J+l~%JOmo)i5)~VKPvU7Q7vdk5<)3g41|ptp*#@4ghil+lbSjNRdHVJSu0=nUmr^BV zK_eFzdM3Z&{vSU3x+sQ&N`7ek7ck+KM-=O;C*x2Lc}@x#{-HtF^<`oCoD6V_2&H;f z%ul%^FG^H4=9AKmHy4ik(}=BwVa2x;;4FPnjoJ5UWU(bC;~e@uk<^kMJvb-4{9zUz z_$u|BTF-{BPb3OMzM?Oj*n5lpI(P&@{==6NR%*|w*3W|FMGBJ1T&qaS)Jf2T|e zdgK!q#}+fte=Sm0jYH>L&m6{8{Tlj}!UMc2?#TJsT-3ix0)7aq_0@%_YyO6<>;>S} z3U62Nr9B4@a`wfoWay$cMRs`dDPu1~`JKLV!1ZZwzIeO@Zg8I`Xsa4Oa!|G&*e8BG z13tnS!36ly%+lBc{8*6tA#y5!+yVc=`+F-B&et~Eq@j^B!2Rq$i@ak+4(Bcnz7*hm zOJ);F3BdnlkALIq^MxKpM&)2~IbNsZjLdF)f6<7YNa6(a+PpExZ_4Hnp12S49N>rd zho=i#Voo!QnR{VHmrHJDWO6$@A&)d__i&#;9^u=@>b}bw=gu+gXN*K1u{+40GN*}o z#(A)|AM?%oGe^$`b!8Lv?_mm!8^Mb#`Mn9w1OK1Bd!}pzc;pGmijob;6})?&i5dBz zbzvD*s?pd(dz^YH0CoLtIdf_nawBeN^i_E52d-lqdg=)J;Uw-z6?S^;^Rmgjt%N+~ zpwl5Dso=#A6&FcFqo0>m+WWKu{yw9yvP$0GP1{76`J!Rg;QB$}@D>PPf< zOZkKDM|ARuoZ81!rOnTXwX4snVv;o~?)2E)GrR5&T}W1wqjPjV z32aH&et0*H7^O{AYq-#eP$u`QvoSbt30qCPF(2ta=5g!(4ZI>WoBcBM`SuUWhkQTe zk;4@iL%ss9=0|E3&XMs`Cex+%EiBZk0nN(JfonxZ`z5C!3BL z@>5Bl&M)s8Mk*0!|FQm|0_xw@U*?XRpa$@*?G^H`Axjo7samX1KI&UoCtt_f+G8 zviITl7fJHP0%x!{lkRSSUrxEUEx)=0UyjdgnMT7BN*@tbI zTZMe;=hou>ckx`s7W|ko#C|mTyDRAzP}df&Y(H#)bE?KWc1%aY)Pxs_ppCC`Wz_^e18N7w`G2Wd}^?#KS4ldHGR zeUwCV&9p5AIOdZ0Wf39({)5@ZqaS|w_CqQj)(z=I!dcZN zHZFr)v;DEE7rcYNoDffwFZ{KuapPV&7}D~m z6m!sALCV-q%xmxLK9x1B0B?V1t!E28q?WVPiR(}D34K|WQwBHqvrqd+BJh0yWLM)! z@Lt>G9EML1KzDZkNvFdeDp~WiD(1x!`U7jxFc0X_&PCZyG?wHM-k;Ud`8coTYByU$ zWAjOon`-_y_z+4)Zr@JLK)-7J>W9dee8Pc6+Fx7qN$egUp$`!>5?g9;X*VnMVB)_d ze8RvBBpXMDXW%}J7yQk93;7Lhrk`$!P{?1~$yZ@0N&x0|&6PaCWfihb}DQsFDhNK*zp%n&@;;Nr|ew?;Y?<9FE83 z7F>~U5%;?1E_6hfQncw6fv@Kqn7vZ~zOXoB;L3j({?5DUalPOrruOeD@5Om(BST}) zHozxoG44FI75cxTBFb;@%rm0#iInIHsG+VNs29r(hMcMH}DZNNV_3ONKx z4Hf+x@pY~r%SAf3d?}bgh>ZorbJEHg4L-!)r9K~c0 zUf|H}#Q|M)_+X81WwL^Av|h=dU4Ty7Y$#VuW*g2Y8)wA=_PI#QKDpc)0l(FphGDfR z_!{Yos?<8@>$KGG^x*s-k{?);`4PGu1#II8md~^>h?+;#aBHGVr=r_a}ZBMq;kXHn<*KfqpwGda7U?`8&Ud|MDD1 z9*`DCYiBC*BMNq!O0ngWN+te?>1UXmg4Bd(&(TO=IZbT02F~@LtUtfEBERy!`O8QC z&~@H0$eypo+^d$_NAI0S67R*Eh@(GuRC)L)1#_SKRLPCSZTX~*^wrk&ARjtaH2eX6 z58W23fskfCS^JYug)J?g7|%02w!5284!@YrmMf)^W32nKk09SNNp5FAs%jo77WCU= z$p`I+6PcG|vXK)?OYz0 z=!$l$iOl1C9p1D<)DQFe-^p;+KnnaVH~N#@Fi#~o{^0HWhr^5Bv4{m8V*g#QClxtf z)_HF?i|}O;ZQlpdqpZ+7D*S!FDg0nCq85B}5HiTzjfcG2c{@%+inW@_(*zw=(E(q%{Z)-IXmCJc69t`0o4 zXCW9lX{y?_N+o!1$%O+m-SDGV7h7b)zbjD4U-wTpIYu|3a~<>A>UUzZksC z3;|AX^cgcd@>{OD=>4&~0RG6tB&8L&*1~*4>SO2>;@;G79J9iH^_NwwO6UVuJ^1?G zh8}pyhChtVLRrW`vTsP9L+*&i%6bbM@J2V=Y}skVfWNtYt@o;sBIqf$iT-?tx{dtB9Bm=L?M#B0j~x zT@(GdQeMZ8S@7qEtBbBD--oZLKh3uP0M5hfgTo@$*dyq&Kg=l{=ZyR5=ooOJo7P9F zPgSFTe!7Nb75r7@X&UR-SOMqBR(N+1-*4SyU*)8ZeJ-;ef)6oI^W^8aN1$JrKdr!D zIgWFBma~ToIF+PvjL)G5$YrR1!Mm>)K1BEyiyMg10A!8jA>7&De@!xcc_kD zgpcgCd<&~Ro@e$?bhGv76E!STbi*;f{jnLZ{1kw`?)9SXtsokqXpAq*;vC7=%vsdq z>#W13ax2VlmvcuJy9DzI_i+31Y2+&mvQq{8|KYpTi%)JrS9$lMN+dtJpcAz#hk_zoSpVQ-vwMVZD49JbHM*S%bg0 z=j4Z8Jp}%^+(gwmg}zr$ZZ7NSw>%=by0>ds1iFLvUsKA)s82>Ii`Rx}q#&rDB8D7j z-a|g&i|`p;RkVnHnNA_E*B!BYbdXBEZ1qfgi~QIW?%*7Y0`U3Hw=Fy)^T^h~b;nQn z=Ms~?-wWxOOXUq+u*n|Gz#gBhDjCc|mmd55EB55ISnlS!i(G!Dcbyw=<&yEj%QD-6liv&5o>zmssgogx zx8H`ZG1BF!=>_=g-j51y;e?N|+T}oGW*>Zv>PxzM&~esz%bi~M1k0Vd-z_{qfYyE;N|-7)5TNR2xie)gBVzv7T*+V?wT5znjOS$o4a5zLny zB}>cDX>wj#6Iym2c#w4C&?In&KMfqS%$mr90YDW%H;1$14s;J7mceYtd(yyv&*nef@(4K?d8{YScOeH~LQmOX7xD|QDp{9-?{H0t zZ?**Pn%C`g@}n&H_7_^Z??jMq8+*js7P_yEtLWU5n$wBx)xcdVR>&t4-jG4Pfqf9V zW?xL;yK(65H1k5AUfFVJ-984qK3>jO4I81~St!cM$9dxN?(8Cx=yPtV=>$OM6gSV2iDJVwnfXM+ z_H(jv_%o7fz0kV|-ulk-`3Qds=A!eV0yl3`Nyo-(;^SrTk8+j%aR)9K(3{=KhdIXf z@J7~i=wpqq4(TbNeok~rar+||MJHWzzsCgp2E98&xcz|JgiVf1 z%xn$evz2+m!G}DSbwxA=JNR{zKgP%~pUfk26TVydl&NH?ayPy6#T;V1`(kY;^c;&* zMeb$B&=^exxM3_H#!yTVpmUr7`w$_oH95`_9yb-zTr^nYRi32cv24 zky7vmwgWdlg(e_Z_k7nHC*Uqp!Vjc6p`RdEa-MY{=X$l*XC1N;&zp*omMHx2Mpb_! zy^FASVy~-Jh7rEL!J>2Ut?BbYZtmN#Ut*PDl@RW+pD(W7W^w|*z|7aAVt_vI230Z7 zi$dtcWn2?v(LXf&S+s#3;$_eI=%6y3Kf8!9`C9z^v&O=#e~=5Znn!fIDfH9dbItrE zkbiU{dVRKa7P;XYdbSI^_(c_mf__`tK4_`rJ?d4Tw`=&(4Dh!+k!HrwYk4{y;le*> zGM=AssZS@@OP|$KH^7%lSGF+bl0o`fz8Oe{WTFpy(7niroGK~q;Pn$Yw`T-5$ijyt zwZ)RB>Mn8t*64YR!uP1tkh@uW74j{7J|6V-KpxUt{h(R&lRSG0Q!ha`Y99WJ@n0VL zgBHeCJect#SUNKCU0q>(RhJT5s%O_$l z#q>*kY2@)43;p*~;E9d+<)fwZ3A4w6Rb|ja78>lT{mS!m?PadO9G5wmXnqvuaHmd+?;Qs8vui>V2EjMq zW&cs=R$`AUzAyfI z%k^RO`^WP54NB^Ot8VY?xr_O%gG*`WmSF4&zx!2%{VnvgS_iiLhE82_GEk=qeCO8% zm(vC(kmvG9>gGPwy$;@Xw)S=K?RpXuol~gCXR>B4&Vtv}Q}`NG&RzO&t2|i?z{L7Vq`b2}i#f6!li=ODev;65aEwH;Zhm7wTf=#QA&iNZKB_)+n3m zoqc}L$$KvC6aWsN`C`Jsfr>ff>z3~}LEuq6)Rq66MjuLDQ<(wYz*Y31F%5c)-t+mY z^#A-IoYptCyns)m@`zni1@@*e>}t;Ngl>p)I&m%lId)oH1HwwVM0x1Yq!oA!9;3w# z8LueB$e}i;hzqZu&(JIi??-+4o>U{;bB9KM-wb3$zM!-Gs&|XIB%|l2Naq;xYs#ltM@6`FJiebHiAL|;@6f?fp0W-TZ>CCBOhyr0w2dbc<*J`PUWy1Qf!`) zaIqHmdZA^rH=Z-)*E<}TkfS2^G%Cj$bB$-z8!ZN2_z>S~zUqWd!)|BD6D>X5I~vx1 za~H9%Dz-#?Irg9aQT0>VnH;kB*43?+^T3hLB%i!KkxsV8>mBdLUV)-@y;K`H;1sJ0 zcOMKzF6G7jy7&8$@BGboTRilgMV~|#f9b;?w52|5z$1fnWicFxvxCk$yrsmR3Hr?( zE%EP|&)5aM{4RtbmqO*G>{IY>95y3yTu$iA+0`F-gD-sJn|4JB^I%o^tF}z|rZTFo z|F}GhdZy9je+_>AldLw33D+^_mUGRR4*=(42;Mk+1vpYmy+;-1j)4bQeRB#tL9QQz zdJJ&PBLhNN_#8TKKl46y8$Q38iv|CDbFop2e*H#Na`R*O``1TsF8cj;&h14GLRo1; z-!ycSdmbNOrviTKmfIaFcrx#MpKir&&L`=s8_V9_0&aM;Lb(M#(7H?gA8PUc?~Xg- z3TGVvFmmS-7DJ29rXOBoLlaCSj1#W*!Jy9ANY*Xfu2d|;K=V&Y& zJ8)%f!5JgvTry)3>9X`4d}Xo=Tdpeb;+Uf%<_5^6;n=ey5})URyFA?WlQ_qw5_89p zFYPiIs%MLSSon&^Nuq-}Jvdjg*FKkQt>D;FzYD(Xlq>@#__Q|E#^+=+f@gE_(c6sq zD0A~U_BLtgv$9W&aSQ>!-!Iwt9(cY^^sm+b_H-Q+xd0vc*HcStrEm{gUQ##vig{+4tzNYgxfWqb4_L1N@6qj=r=c!U zkEmW*NyGjqf2+6argDgHTkwg$(%A23UMMPf68(IT@kdYgT=H4v_Q^123Xxbmbh}-rb2w*hDNjwsP!D%KsdpT3!1vqOv~L=vkg>RRbHfbC zIdl80JX4E4dN}RV2}SIyy?NREkqvz7Uq9-z!LL3VTot2KoI{+>%17P7^JdW5DECSO z^&o#&lzAESkwTYFX|1J_+ETf8MhEn#Cc~5C$p46-vzFEbF7#xBu}1`czTEM?O_W6B zk-q8T(Z2;gLgIxyPY87Wdm6>AGo_QuOh=epZUHA;;G-&Wpr5Vzbo2!DaAvUrvi`5L zNOjTUoPYb1*@U*;4g&93#p_q=k9tS$s6JJ`hJ0#Io^1Ql4AOQYcJ4gxSFOA_rW>re ziHyLzEr*riuG}O@}e> zGKe$o(9{Iq^ycL0N3O`z+@-(~yFQmRif=x5NS#V9r>^?HZ>Q&n*#56=&}rLjT{8w8 zaV+%2``xzSv3Ap+ghPQmi{?qw0*-k&d+zz}=g2WnTFy1XdHi0$p63j|xWA4xodWn2 z-TE^BR^WoJirem0uL7R`wy~Yo2wtV)j);&G^qN{po$sQ6%ij*Wz`cOJG2DH1_7dj9 zj?K5Y{$f95K$(s_{(rjfH6EMdXk_QRvGfS=h9?*9Y@Mm5kRMI89%mvjueeKXTHcAh zM47r?*H^O06YI$q^H0c2)Q@{mUyeMx1WPyi$2bQH@7Om+VIJ3)F|xddJaq%@5jx-? zu2VgN^2nEYXlHk2JLZUr2htV?qQ0$M$alnZ&nEmLKnS=D&FJR#F(w+>)}ic@XhS7? z4}V@(c!eCTHmah_ZRm@>*M6n%#NLP_%lE3iQNMCm-xg1XfA&#F>X&BdtjoV$ILw6n zsO_^?U!xw;zB%lOL;w3@pT~GL?rSrSZ#u<=S%fdK?LLbUbfnCC_T+vAo;fRXTq6fO zyNB_8ZSEZjnyIz8ZbCNZkG`9E`^W94`zm2FnUSqYTIq3JE7$faM9DWdn28nX$B~66$ z|6^i@pLW@DB5Mr1+-}8A**zJ=WVdOXI_m9x#<{m5H5o*5q54xF4LLUz!;w3_fQML7 zex$6ENlv@0if4xId$L|dp9^(0_U)n9{=j!HRy74}QjZ8)_VbI+x?9T9EQ==;n|sp;{nW8_?$!CEy6%jNSpkhKINYywK;6>c|7&?c26`{m6>&x$@XN6Z ztN!8~DL7e+7IQ*J6%kx`4tkmWew2)z1fO^DP$^die9~uYX|}tt-^jWmqE(GT8mXtQ zAMeGyS(l`!`45+z^vrwglSkHHn10y^UB}3peKnjOIpn2ph?u?&`0A;!sR7(OS!C01 z?UNZ~OQY4m>Uj7zHqv?QQ%1fcyNLX32=+sEtN5mTb(kaGsxJ{>78HE$H*}+?a&NG|1zL5Jb*cB8{7KT zwv5nYn%^BX2kykiyJ5Nb4S1|F{Vu5{ysk2P$9eD`Bezv_cWJ{XcF%9+Vgl~_OP|MM z(vT};`{4Q7W#nkj*GHs5XKR+3U9}c{lHIY>%Tt?>V?Dvq{2~*0e*U}C@f^&lUEQUT z;Hd{LFo>Dp?~5&ri^BniGR{Vacz1n@`(|2H>%o@J7-bZTwS zBj72I>2_BE2Yr8jZ?~Tx@;LjG*X+T4)E*JrZ;E@wb~s0{pB?qfTv1?V5Pbg`ze{4! zm!8Sk+}(;kvm$APq2U{JH<5eIMgE|k8ZJ7>7~?*YF&HAk$Zz*s)Du05e6gIB1R9?I zLqVH7Wbk}MoR{=+m_=@Qex+Ff`rE7h{V_kGuNt)$R`oB>BFV#pm3RDsS1R?@F|M^UfPFG9tK?fQ$68Dq?eCV0FGrmjbv&hEiEHNqQYT~YM+Fp-*6qZ%D7j%}9 zD_zv2lc9$59)0;;mO6a!;Y0R)rszM*=7N{bq5mzpz-9&ic#^A$Ym6i6UswO$ni%BQ zHf#I}fzQtM*wayZS>URdEuO9iza$)Gb|?<_o>xJx^=j~tas_?r`8Wrx z?>SBPDe_76eG=@@cbxeh${ufteTlk-6!mxtsSKgt{G9>0CY1(NTGy$_A>g;Wf;mgf zLFK6vc+CR3X7LR34n`vH z-7de4XAHh&*9o;3z@vj5&E=Q}@%dGZ72m|ZNsHs3P5#TxBQ2kvTi(kDf79)KPzgE{ zmci>U=P>`p*S)ag7S1KP8AskOdSw&stBfpEY%f)XS@Ze^F|5Pc! ztrmVT)J@=d?O+|Q&`k7vwCa>3gd}*KzaphW8x6 z$r26!TCW!be*R7|=nwp!E>T8DSMd4GUy9jMk8`~7sNT*;+_^+{w&p~-HugVfep02! z{a^7rHH60`llXDpRG!(91AdpQ?ehx8TtjQW)%_T}fSl^Lpbfw`x47HCn1w%;d+cg)J9H<8f|nlL#r&#k%w8FT zxlmzO$pBw6UOL5KRzqmh6&Q-GP!Mx4P5iWzdc~#`h=dL$6A9AZiH=>Vq zKKRzx*8~4OUV+BB2e{>@18zs)<6}57C|-5*-~POxiuMk`S;q(e?5|5FSv|DyANU-* zDjtf8VNQ`t_*^S2iSs43;{@+I^wH0*pI-u>IchBu5{5psrPgjP?-BUYnf_y3mhkDO z83u+X;ocKpuQY}Cac|}>0oN?#_36>`4@IGW>rv@2u*fBqhA)zp_ai^nDgMScCg5Qg zUgMNtzU63q*~*(sPINs8(HzYs{LOC<{#^QpBk5mBh3?~!+}lT-Yzp?_)f-euy zdM$xDtj^iQ!xHmX@0S`cN9c)##?{jv^iqjHlrQym5Af+HeChkqf3=rqu-Mcg-(t}B zmCQ#fVV`x-7%&3gAlemsEgZR8>&q7Y%cl^(!VRY@pqr8vKXWfb2l>m7DjdoF1M?!%>(%QsJCVP3y?xq8zE%xyo^ z870tX+#V8Htp?oB(@fDQP7`yAg+tebJM@?C(Qov8kwd4g?0*1#$-aWh{oUK(<5BAz z{T6|JAdQ_PjPR9puWd^1YlDu@zA)hue2NnjJ`VM)@B_QYk)v)@;>NQo@5mwGw!F_b z)1#j?k=UXjj(+EHpu7HFdhACl=Nhs3kx3q|);w#f1O8EX%25Njp~TMN)aR%JwKbZr zyVnC>`l4MWgSl0ZVIA|TFPO{xqe>qSXOmO(48h@rsAB<9ZY!v-Kd)T%jYVJj*6Gv; zBli+0Zqx%O+VmhdEFbrHribi- zKfr^#+ut)l?=EoGSeB9tyg>QMMyJ!j!D}zSZNXd_z2Pt|ss(*J1KrlHV&v~~dNa_+ zAlK@eMVUqz@-Qe%GxsI2r`U;8Hp>Gz;A{Z@Cyk7xoH!H1_bv)USardN?+}0CS?&2;JUmqPV|v?+v8x z#vTbzdFC?UkIvGgQS{%zN}kqiTYf|IFUm2-{JK|BGdo4GPe$-Ytwwilvd3kMGAralfntH{bKa zytjVOW&Z6NIb`KPO8ye=6Y2HGhQ@)zzHBL)8`j0&qrUpX57c=-(T8CUn2(iyKVh9~ z#JpFf*etgLIvIT?-g(r64%;OcN)r0yNxFC|PBKR8dd&)%rvjrX* z{70hCB@n(R7L~?~m$_tbQgcE^8}9FYmzVsa@b4A+_HUoZJa^gJ^eylR>*Enlr!3JA z9NEwFw;4E?-(_&}8ALFZkl2i%qIct7% zubb`I4`}sg%pd+)^$$LMyaVtxxdlIrLH!b%7w+166*;AO-t0NM&}Z`9>~#e1!0@zU zWEOovUG3PhiVt``ekt+>`1X z+JN61A9wi}?+M)R{n_^dH1P8V&j|T1pud;0Y`+fuluLQ5dg*uUp%Vy}FP*@C5s}vk zbKfxc1-`RWHh`~pcX36i0CaNW;z#7IpqpDwekl%7NJCA!cz*dmJm%HKORK@Zugu8D zW4_~MUkS+qzNWV+sJASaO78YfNr<(epA8*e@QKIss7j}^<2`U!MLSb7Bd6Gsl2^DPX}UzTgVGJ)>IzWJd?-T+?zf42;658?fPn0t`^KKxg!ntWg2 zemuM*J{GVF-Qyqw7B3qtTa?WHHmZBM)ka;Z~m_ z=%F44N3P)fO{aa)yM=uuqZ({B|9siIQd>gQ#PD~2-+#E)49|URfzJutyJmm#SD!Y< zUV(>|*{p29A%*t;J*y7A!%C8cEqJfkkwFKe?Z}5oe_z%661Z`H$7w43(1)!hMTc*o zKM>p&@D{w;HTzVTQ0Q3dZJG*3b>S16d8NM@{dRJTPAkI$>?5JN9(dD9AtJNQ5)&No z%f{1hlzxqVGwG<3qX78KduvYL{skOpAb8WfT`nnGHhlJQp%*Kf$*U`Q_sd^kYR^xEpg(2aEDj75i~N?Bx=kq?F+~T}*D?*oFC4 zo_+fUiySiFTzsS%^)M+qv?qHV_UIZ6|6*K&Jk&?Kz6e+0{axVJx52$~^CX-N9LO^X zzM*>%_3%pW<-M!Hd-AY9)^GfP^LFlKPTofFZjMfcVxHLhOwru?@;!8*ltdy9oOJ2L zwRLyEr?foU(yc87UE`j2zb^vUNXqSW{+y4`srO3$i#ynhBct@2tt6A&roZ-+XBxc0 zy#8gSLEzTy`xYd=WRZxbcTZzKVn49ZZqX3TIj3t{b{`OeA7X4*cQww_fMTui_D<+H z_8a7F_W!phVPYNaFnCBK9?gGy`nVU@d)lKO2Ocm_JNpxT_>Z*|u0NRngEnQR0rzGX zuv?P2M(*?*^Ct1>nyAt~^nX4f-#PW6yRa1ZkJ7|FRyW7nv`8VIpPKf{HGto_!QfoD7x&No z;HJ+w7gcw76eN?N1Bsu>HinOW`rbuxANU0Xk^*L9p@VvQ)GmCpKl%=rnhy);+Xj@B z4`#Vw&gO4Z^@3hsjpa{`2hQDeQ`CVj8T@?0$|{I+FGe?$G~)o>auLhLfShMUN`W&s zRsen0udjC+B;jMrd1e`mzx!o&xqf#g_E^<L*J3$Z3nSa$%4?V~IUA)IJ z1@B{#Cu4IgKJTB#^~}Ndkk7N~DAVy7=<@w9k01OG{O?f3o6utLuy_7@)CW95Ey+y& z2l|tj3Vja}fuHjn9-NZ+i`VV?7aby5O7~fEsmWyF9SXcag=HF53k~V_$yEsb@#NoM+-tKsw5{i4%RjKB0AkOa<%~VMz;0M7E<7TOwkwa+k zmSr9MN)J5cTUkpoh;FpeK!*(GUGpb8ok8d?OM+UxfUCUYS?XVbo+gjyq44HPlWI{zfIfRVtTsO`7CegMaI1Jz1ND{-MrWrc0MDi^%^t|4ZT+^t8kE zTjGIhU8$jGeqf0l+M)O>AAob;A3DH$dMJy0C-S;Nj_8X|w5@b}2XE+?_0EVLx}a>@ z<#)cw6&6xZ-x3G^%9m%3ubOb5DL#|?3O?D^bs|rv68ekdrpKy{DDcC&hp*M6k_%JP z$G%H~Z|GrDU+)I}ud7a3jvwZe6p;_s*}x%kpPY$6AA5MWl$RA3g?Mf2=AdlG^LWN^ z_&)GDZ+H1=Mfe&k|Mum`fge|0J!(jfLLVdIw%=(6epsJNMfx~*BZ}jJcmLvfG-^z$ z=7ujnu)SHpI**)}?mr`<0-xPm16NsP=vw&GKA)O{p4Fk6Eq4Vz#l4%G&*O72coBJF zE9RbW`kt4VqJj5YS$R#%V@}?-@E~6WI7)Gg3{jCy9rlJouz z?wgu1x1>-p^izU!uj=J64_|)Eyju&t@IN%Ap98ssqB5k`O@kjZ_Cik~!TwpcXSYoi GY2<(FEY*hq literal 0 HcmV?d00001 diff --git a/tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.00c+0.50/zncc_dicho_nappe_bco/gri_zncc_dicho_nappe_bco_col_disp.tif b/tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.00c+0.50/zncc_dicho_nappe_bco/gri_zncc_dicho_nappe_bco_col_disp.tif new file mode 100644 index 0000000000000000000000000000000000000000..4ad30a4289c6d79805babebd9fae8483b69a680f GIT binary patch literal 48588 zcmeI3J&q(r5QS@YmIVn5B)~y{%^|>E8y9YX5C>SP<^Wi@U~m9VfH3+<*!<`BCSGoI zZO>FU0}|3aR-w#_jLd4@_oBLcX7~B?kC!)=WqEU1uCAA>G5c!7RhvJl`9~vvU32Q5 zwfS3DPnXw6?uQZYwEVj@e|zNL8*^&D9r1pv`K;#GBhP=oeDLzm*VjLf%#R-~%lDrw z%Qs&v%ZnGw^5u8S^7&8H9@a!OhzH_S|9*76xfp{PuhzH_< zcpx5#2jYQvARdSZ;(>S|9*76xfp{PuhzH_S|9*76xfp{Pu zhzH_VJF?!(7@vqQ{zbckbZ|CIxxXs;=8^P${T6?a>`1Ix6 z>x{F8vpLJTU&s8nir>fBgSyAa;nM$SbF-%A;r!6t3>Y0^K+V6&4QAnXo^Q>kxS5f9 ziM8UUJdBE+xY0)&Zd_BVdd{SVsD4wPUUQF`71y3$>b=KUk5%pBTyU{^ow`WBToUo@iNmT61aJ@_zQI zx6r-#X`lNIw#-``v4aUU?C<^N=OZINpzc1OW$jj<#s^K0v_?mC9xRlHNnLAXFKc|B zWN%|O_fSuavu>zi4mbB!AGse9Hv1ZEdQG~bZQ}_8aextPTvyEvx#G4wxn)OAHGLfQ zswGEnaXyTEpL!iSH{AX+Zsu!lx*ps*yU7VwaISTK-kHo;gKI_lZ9R`$d41}Jj_w2I z)i>f$*VIz8$IW}iWt>C(E8P0MI5+*aufc|ycoY+~mfnn|xz^F%HOw!4PV%1S_cAl9 z*P(O6?P6}?VGO+t;9cj%Lyg zz0t1n3-i)my4SU8Ja62#?{D7AIpMbM^ElVD=vn$tjp0;z)~4R0pQzzlwO->nNuKoz zY8*$k?Ct%=y_UhFoA{GP|rG?Uc24DT#pCnpJ4NVI~IVP$PBZ;l^ILnVs^i`CKz5*T1(lcDxq7p2He$ zI~r`c%^oRk=5@pbK12V>>e-lcO}|yRo;uf3qx^U-n$gi{-yFhi@4dphxi6;1C%B1; zwIAa@=2m^>d(V-cCBki218df~X};k$dj(#wBj^vVd4FSUy{0@lIP_ZP?X#-y&&YX- z!@B#rA3NKw*OA7hBRMnBGY%GL&*-%Wa$BnZ#0+-fwy#0+`CZ(^2v&YyD{km4hV63+ zJx86{s)jo5<9+@-+4|1xR2Oc$+@up8CrVfNInSKDINZU_&q?uW+_Z)!)T^&4k%AA8`w@7;Pm>9<{m<~B8@x7;7qE8Bk4^;i=RdT8f4sk%LG z?YlwuRpzJraF3gr>6v%Ob8?THeZa_huk;)5eQ>P^tJAEyF6O45aDSn%bu6vnrtmej z=uN)=e6rr(#0N&y6P(8$=J`F&?sKp+Iyp!C(st^KzLl5G=zjq>_^Q6012^uY^TO@H z+~6~LHNDYzhV!r^&$XG5+w_~ciJg71<;Lepf2ORtyh7b!P3&nb>d@%?A^4ferKOH?585q^>vI zs9W#_K|j@b`5v%7{CQ#yrTJal#A?)_{axJH>wstHMlX49|9!XetkH9DWjw5jJq@Y{ zrlzGg*Hg=?F^9Qk7W5l>kGIKR`fc5R-gLc6>(1p!Pjs((M*0S=^=xF^?AKa-H=DJb(LYbJ zuR`_A(@(n^NGr6o=A$2Od_6SWuFq@q^>?!IzNS3A|cWa)FzDIjbvd^LQaNA`T zU$4<9&$f6V9*76xfp{PuhzH_S|9*76xfp{PuhzH_S|9*76xfp{PuhzH_S|9*76xfp{PuhzH_< Ncpx5#2mW6k_!|+ip9%l~ literal 0 HcmV?d00001 diff --git a/tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.00c+0.50/zncc_dicho_nappe_bco/gri_zncc_dicho_nappe_bco_row_disp.tif b/tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.00c+0.50/zncc_dicho_nappe_bco/gri_zncc_dicho_nappe_bco_row_disp.tif new file mode 100644 index 0000000000000000000000000000000000000000..3855e559dea1861f46b2b9c82f243e608682142f GIT binary patch literal 48588 zcmeI4L5>_n5Jh7=2qUpFl3|0uYpyUBd#}BSvFeR6i^AEAQWyT63SL z`o+y>_S}1adAv;huS@-v_rLL4GrxO$n`YjY`quke|9$uH*DtsKdgt%&&Hnt+?6>!3 zA3m7<^oQBIe>A)PN}vG@zyJ)u01UtY48Q;kzyJ)u01UtY48Q;kzyJ)u01UtY48Q;k zzyJ)u01UtY48Q;kzyJ)u01UtY48Q;kzyJ)u01UtY48Q;kzyJ)u01UtY48Q;kzyJ(f zBLjBuKXl#-{b6*iyG|T8cYMUp(EXxTZmetcVefZdT)R5XbPbIg`W{<%{;ANa>-+A* zr|uQA58d<1_xFB>Yn%_Q7uRbmR_WOYdu{g0LwOWBKQnucKJ5L@=df>Fx#rf0rFf~l z6>(NGQTOuR?{JOtJ?)MTRvJrl#acyv&g#8SyTuqu@O`X1Af6^vq#?t;oGxuhpKeb8OAld&hJ5HuTMkC*ACpb@$5ICEY`H zMC)9ht@q>HRlfK3vg$go(mnnDrE7(Bw2A1>$@9Dpexdsf7QVUu10T;M43E@|dLnmy zYn;{WC`NzJ?2k3f8m~q3$gx*nTf?to&vDS1?tap0m6f8cX++_A#runRW1? ziCKKx>6;RYsP;2@rp~-;T;tml`4*mClI4?D!>{P!+k|fi*RT_d z_jA;9+N*oRYk5|mQ!g!iyUaKF(TmVL??-PcCx0HzmpyzN`?k7A5liKl`gJd^wHKkD z>d19Ju3IyC?^N^Om509znd^ONEX6CGk2-MQ{&yZkMc&~+t@cWLL(S}0T_S*7=Qs7fB_hQ0T_S* z7=Qs7fB_hQ0T_S*7=Qs7fB_hQ0T_S*7=Qs7fB_hQ0T_S*7=Qs7fB_hQ0T_S*7=Qs7 cfB_hQ0T_S*7=Qs7fB_hQ0T_URPltj30lM}K7XSbN literal 0 HcmV?d00001 diff --git a/tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.00c+0.50/zncc_dicho_nappe_sinc/gri_zncc_dicho_nappe_sinc_col_disp.tif b/tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.00c+0.50/zncc_dicho_nappe_sinc/gri_zncc_dicho_nappe_sinc_col_disp.tif new file mode 100644 index 0000000000000000000000000000000000000000..48b951e9c0e2c13864ff7adf7ddfbeaca72649fc GIT binary patch literal 48588 zcmeI4O>PrG5JuZ^1W2qv0yYR(bBM6cnl0P_Ar63KAAl8GSa1MNfLQoQ9Du+6D)kNJ z@n9k|L6&%+R(Ds|OrYMY8HY%mpFeIlT5C63TP)k6uU_`CDC?74KkD&iu9bJKtZyw& z+w~s%(8rw;znkmZJ$|pRmGicb`z7aTu9rQoUtb>l`u%G8xko-eZ0-G7Yj2*n_WE^e zFW$BG?2~dgD+V>d0UW>q9KZn_zyTb<0UW>q9KZn_zyTb<0UW>q9KZn_zyTb<0UW>q z9KZn_zyTb<0UW>q9KZn_zyTb<0UW>q9KZn_zyTb<0UW>q9KZn_zyTb<0UW>q9KZn_ zzyTb<0UW>q95^lq+LQhte5J~K1*Bi!bxfoiF`W?xNlQ%vWx46D?6H5)a%~Aug zih34C5z})nWAXe`o;Vb4Ywf3ob9GkxO>wx*QUh}{tIA<3CWe>f7QB0I8%i&C9dyr99^<4!3zYZAQFR>wHeC=5?t4-fJDKCi-nFC+|1J%IC?ZuQUGo z><_C+)>&L!Yt6wZV_NIn++wd-4qvC7xHjil7jAqmSslh`%5BwnqTkG_GBLN{@f&U} z?>AgmxY2J{&n?*0zUk|OxbgFV`FgDO-JX7P&zRvs+~~J|%57lfp6k!jh~?*!SdZRs z!}B(CBZq&VJQ{AzEXT9olb-we@bdu0G-|K2KD-{PZ5iqjkF9vGx#HuW<2W~F^YW~G z-fxGq+2?g~s*Jq$b1(KIZi=l(*D61*8FSM+&ST%7g|kaD-l_crk6=`|`I?>Cygc`N z`QJ<88L2pIW~qT|FE$$9Yj!N+gF4f z%vz|C2);&d>&ImW^}gPay}Ej7_ss0R*=}z;&)&OsDZf?o7vA63Tyu9){$O|8?t1T= z>rv`IuK7dnKk-~MpIuMW%c1qpkD2p6R6T;#(iz^!sd0 zdDn~l=)~#gns3!F-NV*jeCy-e$8JV zyL2hGGVe+1PtEhT)=Vo~>ET-+-^z9H{hmF8KS`QAA2(`k7T@~#rh6mBUCFt5Kcwd+ zm%))=h-H3d7T@~#rq!PHqdaVW3|?=P?qxfRZ=HP0cc!tZ-MMOckrh3~R+?*j_}0%i z{Z5mnr0BKLd}g!6K{JnU{d{Y8JJ;HK9PM9c*eD+>_f7AlgKvF&8{LoTjPxv|8ReFG z@$6hIcGY+Eo`i3Gc95>ZG9A2Jk?v5IW};S}rGBoJ<6EB{#68#?<;9kB@S!}b+J$d@ zcF_7Y`ffw*vr@O7$&Y-ZRvcW4N%+>sx6yaHro8J#E-x+}d8DJbGK+8j*0(h;)mwOY zp)RxGUz)?WKE7@BVV;v0`N)$v;g4$NLygh*h;My%pnGvn;Z=Sfy_=%mDJOZRckr## z4z$Z8^FL{q>oyG3iu_6P$o00S@p126ysFaQHE00S@p126ysFaQHE00S@p126ysFaQHE z00S@p126ysFaQHE00S@p126ysFaQHE00S@p126ysFaQHE00S@p126ysFaQHE00S@p R126ysFaQHE00X@k_zmkZP`dyC literal 0 HcmV?d00001 diff --git a/tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.00c+0.50/zncc_dicho_nappe_surech_bco/gri_zncc_dicho_nappe_surech_bco_col_disp.tif b/tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.00c+0.50/zncc_dicho_nappe_surech_bco/gri_zncc_dicho_nappe_surech_bco_col_disp.tif new file mode 100644 index 0000000000000000000000000000000000000000..ed3c813785578d9685bceec006478770df1eafac GIT binary patch literal 48588 zcmeI4F^&{55Jf!<0wf}kfCK?Chk$rvQn&#^9AKs00}zoyzyUY`BH&2e0Q^T?qQ+~t zyJwNA4G&auxm;em|9?G1F%5Uz-@;v6IxeW=+rR(sn>@Dnv^s8q;gRmp({pCs zzi&NXd@sKJh4*yEm#V(5zw5=C-jP_}!d;!VJ)g?;wZ4`6kLFv@Vx&9Z+x5PWM|q8J z|Fv)BXQt-fQ|828mrnCb?aBJ?XjB8ZO!VMS0n2AM?Kf+XxeJ@+Lm)$Q++PfSFWp8 zjZyWBy7#2xoW5GCXbc)NQ-83! zEB8~|bvhrJ_Q#w0!_@vH)pMWAbUrnGUT^B_)SizY&;I;;Sbt9~U(Q6XUWt5qD{^rm z^6s<9o3FX=%|}jRfCD&y12}*KIDi8lg7`h6M$H;sFauQIW9 zy}xS-w|==TFh7R9r>8j#xn*NI&NscbeQN8@7(K=880PvHw;W%MvDWpvmX+=AjByOH z=xGiEqp29ft?4_dr5C@r*<4UonWNUVv}|kZ_IFG?+j312#v0gYEG;9gJ2BTs7fWZ1 z2(fOt#(|qXSO?=a!%LeZ#Jc4g;nwHhWe>)UeX{9iQ@D|D z`mWlgY`OPG7;84)>}N@5k1OKjj1eK$E!POQTeeS*^UcW@H|Lz^Te=uwtfG8#q3quw zLabY^v51?KEBjOHbFXU2p?0iUZW)H|l`X(HW7N(&djElqGMX!$xbJ&AI)~cz!>!Lf zdX`&GAkDpfld0hOTHm7gAJ{0PrBdUc`!qhHbEsYaPTY23=CH1vcl7>nyJhdUsr^#( zOz-J+NlCsP=Kna##+J&*VW8c%O6QsA`(Ew(tM*CD(BZJftl*+{-qHJSantyEd>S*$ zzcxCD+VxLz%Yn4)^7TJHYUdrj{}vz1YO1d6$hZH#KU8rWvs8{HrNcUU{;+=Dl{kO{ zIDi8*0#S*wZ5}z3Nuyl5=zWpz z_w@I*G-TdQ@4D`;I|B?bzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< J3^1@v1E0YDSn~h? literal 0 HcmV?d00001 diff --git a/tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.00c+0.50/zncc_dicho_nappe_surech_sinc/gri_zncc_dicho_nappe_surech_sinc_row_disp.tif b/tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.00c+0.50/zncc_dicho_nappe_surech_sinc/gri_zncc_dicho_nappe_surech_sinc_row_disp.tif new file mode 100644 index 0000000000000000000000000000000000000000..5d7558fb3dbbc0321ae3fe8a1a642b71cd68f3d9 GIT binary patch literal 48588 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 literal 0 HcmV?d00001 diff --git a/tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.00c-0.25/zncc_dicho_nappe_surech_bco/gri_zncc_dicho_nappe_surech_bco_col_disp.tif b/tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.00c-0.25/zncc_dicho_nappe_surech_bco/gri_zncc_dicho_nappe_surech_bco_col_disp.tif new file mode 100644 index 0000000000000000000000000000000000000000..c16dd99003805505fdb93144d6b59e05594aa7fd GIT binary patch literal 48588 zcmeI!L8{a+7zgl-BPzI3P&cBkJ%szWcB?lK@c<75b?M5jE!dJWaP!O1D$m?bB}Ry`GL;(Z6=+Kbh+LLqCtZQS|TZuBV$* z?dx>hE9&*p>GCqA zSD#aQ@jZ|I_10ky7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=I41)iex_6(@26Tm>iWOV zWBii#-Qn5w*mIh*HTKHMRxQRaX?@?uI60O>>sqU} zB(E4Fx6|d;%H~)tGFj5fO>V7ye=D_P>uBkB? zC)c%4=G^OyTIX_;+o(O~9G}y(KgPXzU0H8q*3nW!G50;K+^#mWoNZ5Daj)FYKewD^ z>-R|1{4N=jajco1wp?#=89VA%rExEy0uS^$#`^L`FV9# z<+yKJ*<(fLyx8ByZ-i~EeUX$Cpa*OX;v}IOhUvBHlEwY)*EymUD*1k`@ z?>p-I7I{Tm=Q4NR`yN}ne?)HeGv+dCUEkWg_r7mE=OfNrxy;pi-(zd{kI1Qh##~0N z>sy=m-uJENyyraUk?(KiGFR(;kFDL`lT&@K+{XOI-Pr06aZj{AgII&Bw&MpHCI4l-!)sf0YV(05*J{_78V?!C!j1i5=UT0WRj`n z{JcrR%*bD=QEk_DJnwyPT6K}j%U9_lrSu@B#WF3L*2m^r^xAh;?U&8?a@B6<-Rrd< zF7BrL&Df9TdfXd-vT8qS#-BFrcFx!4de)oscGX@sQ_QAt)^*@UZcHH-b2`I+PuJ`6JI*O)Q#flm zif0^^x08Hs)EP5W-df(|t>Vu+D;LEXN7b8pQ*UQ1uxxAfHjR3_$?`I=JB7ck=X8dF zVcsm0x0BRQ)XXLU16yt0x@+JT?Xu{(YoC8asQ)ePa#s4DZ{E(?@~S-#(fi*L#>0n8 z`Rc~uRgZQ{L}y*3IdUt=iFZ*FL`x!q`xrr@VjQZnftjdjAK8b^EkD zPdjRA`zD@~@>Yj|T{Upf&j!|4zIW7H?ep{ah5Pb0%HP7_Jmm}gew%OJ`neoff3-jN zqW9kq`Jnc|Jmv2dJ$LQ%^Z14P-E%U$@b-e*^ANrN+tC})Q*ZP9{Wc)gr6o~swa+ib zaE!6q^ANrNF>+LT&*-_$ujBth@+{8`Fu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#z(8l< EFU}5_qW}N^ literal 0 HcmV?d00001 diff --git a/tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.00c-0.25/zncc_dicho_nappe_surech_sinc/gri_zncc_dicho_nappe_surech_sinc_col_disp.tif b/tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.00c-0.25/zncc_dicho_nappe_surech_sinc/gri_zncc_dicho_nappe_surech_sinc_col_disp.tif new file mode 100644 index 0000000000000000000000000000000000000000..fb4bdbb32b4cb23ffa05921e3ba006bdc376527c GIT binary patch literal 48588 zcmeI!F-ikL6b9fIBPv)asEw$#hpx;0Z*;BY6a8AP<+YOHw3c z4PU}AFE2x~JO4K!qtSWnM8s~yU>Ji^-Ig(E)Ekrftn`PIx~|)5)O&-?*e<=dG7cL3 z!%4kg`bVX%Yo5zEZmhYS)Wg!RkDrsj=iTtLbly)RUN0h^t|P|dh?|#)tB<<&``)kz z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFtGjx9={@T zJe0bQ`a0`bGb5`pl9{#5vofpi%WXA#(3V&Bw0~eQ=K!DW}UsRd0qFV@AoCQ|M@#v&rxQVXUci&f0lCV ze@1=(&31hZF~9%=3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000RuH Gzky#tBl@%e literal 0 HcmV?d00001 diff --git a/tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.00c-0.25/zncc_dicho_nappe_surech_sinc/gri_zncc_dicho_nappe_surech_sinc_row_disp.tif b/tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.00c-0.25/zncc_dicho_nappe_surech_sinc/gri_zncc_dicho_nappe_surech_sinc_row_disp.tif new file mode 100644 index 0000000000000000000000000000000000000000..8c91a095378e6b668e53b632b66e645cbae2d20e GIT binary patch literal 48588 zcmeI)F-ikL6b9h8uBc!YL2X1+dx-R@ZS@8s9w6WatZZZ90X%_N0z})7!_o?2^&D^FM^8WsYzkPnOjXBTR)4u$y@8jYx+KUled~Y zwtg0QlegB5*YthzCT}%)be8|=(cH|90R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ V0R|XgfB^;=V1NMz7+|1I1HYBXyJ7$U literal 0 HcmV?d00001 diff --git a/tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.25c+0.25/left.tif b/tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.25c+0.25/left.tif new file mode 100644 index 0000000000000000000000000000000000000000..f502d545f707fba82eb014d5632d8d48b9006a2d GIT binary patch literal 97050 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 literal 0 HcmV?d00001 diff --git a/tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.25c+0.25/right.tif b/tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.25c+0.25/right.tif new file mode 100644 index 0000000000000000000000000000000000000000..07adbd819f92f8e08a6e0af867a026bcdfd0d15b GIT binary patch literal 97050 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 AF8}}l literal 0 HcmV?d00001 diff --git a/tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.25c+0.25/zncc_dicho_nappe_bco/gri_zncc_dicho_nappe_bco_col_disp.tif b/tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.25c+0.25/zncc_dicho_nappe_bco/gri_zncc_dicho_nappe_bco_col_disp.tif new file mode 100644 index 0000000000000000000000000000000000000000..e59c23379f3e26df644a1478d6933096bb7f4ffd GIT binary patch literal 48588 zcmeI3L8@F;5QgvbiH0bmK@*V>gNR6wEWvrkPU8+FWB~y;;K->CT!1SO2QJAacs}S4 ze-8KB_xfHS(0{_A>QvP|d0pRMr@J5I*|R6hon=|xTb8Tqi^L;tz&T&Cg>!jGFIG{`H9S=kG`V{(X7<=ZO6N`Lg`_ z?Xvvz{j$7zwJbmUvMkU4p!TmHyV`?lpc<$Ks)1^t8mI=Ufoh-{s0ONmYM>gZ2C9K- zpc<$Ks)1^t8mI=Ufoh-{s0ONmYM>gZ2C9K-pc<$Ks)1^t8mI=Ufoh-{s0ONmYM>gZ z2C9K-pc<$Ks)1^t8mI=Ufoh-{s0J=k1D}rnh0c0-viP5kb^o--C&vEclTANk#Mjon zc=r9_e=wHz!;_CCes`=(dlarZJ~FE1?f1uuNL!SE92=jdyu$H^y|WjtBvYvr?L%kB2HnB4T?<&q=0 z?7zNNX7ipnvt<0-y!D>k$5>YK!RkA2?5UFtRt_-9J@I+TjW~BBYwMmYx8vMklgx7F zw&qQ4$#nMRW-a`TQLB&b``bQl^v$`tDYtnh<(FKDt#LD6Zm)+MJ-5eLm|$I**Z(hW zu+DtB?c?T*c|T(HokR9(vqVfba9gWMw$%CzzI(Z`FSldd9*v&C2`js_YfNNdPV4Mx z;ejtFtcz!o8=qH>ewVq#din;REpBpLV?s<8aIr?a#!Y_7jn9|t;n#WFr(1e_j+;!W zb}c^_hDe{J6A zH_yVsIn&C|ocv&g&)VYF@7?>@eKC6YhrOzIpn2Y`6(~>QFX4Uvw4KeDiRTD7w zSv5e6nY+Z#8Ao5UT)rOtf)|#UK6`WY9uD%6i7|Pbr=GLelk<73EQxzh6Jr*SzJ^Pz zzbQ9a$VP_5S#rZ>t@-3etlakL_6RqbU}d1a2{-1<`75`Zaf7FKr1#|i<;F~H-IJWz zdvYJEd_SO{&Ky0&x6j7qmb0bLoNV!=#2?@9Wci+XyEl|fp3&&GPb_2!*T_I!sctMfgu zm-ZD#`u2S0X5Z7|=Yj!?XFb#N@;PE~v%cKUGeg((F#EaYCpX#9=j^|6V{-7kwANsW zCpSK$bl%SQAp4znUiOk2_W3@fueIJfzo68?=<>p&X_YM z3-TFbPfkYoJnQqG=kw-e&U2l&ecbG;_M7PQli{=MJAKaH%gLBFxy)zGXOU0N%xUk* z^F5H4e4dWJ>0{yO9xm4FC(Fzk=UJC|tc=O!%$D1EX6QP5iJzS8H`ZQjk8+#;otc~L z%I)^JB`f>A#f|vZJ(=u0$9XHaeY|`R$zI~G&6_o{Vz2Lg=-!<1oLT)mk63c%Gm1Z3 z?RGEhp>~U#^I@HwgZ2C9K-pc<$Ks)1^t8mI=Ufoh-{s0ONm zYM>gZ2C9K-pc<$Ks)1^t8mI=Ufoh-{s0ONmYM>gZ2C9K-pc<$Ks)1^t8mI=Ufoh-{ Us0ONmYM>gZ2C9K-;7!-SKPDJDkN^Mx literal 0 HcmV?d00001 diff --git a/tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.25c+0.25/zncc_dicho_nappe_bco/gri_zncc_dicho_nappe_bco_row_disp.tif b/tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.25c+0.25/zncc_dicho_nappe_bco/gri_zncc_dicho_nappe_bco_row_disp.tif new file mode 100644 index 0000000000000000000000000000000000000000..5e0b06bebb9c53a351ba925cec0b54532c630a58 GIT binary patch literal 48588 zcmeI3Pl^;x5XEzBQNfjhe~@7uL_`J=5fNAJUAxsAh`4jQ5MG>i+P>i<5GxlybS0gH1W8-rKqk%s;pFk86Ch^_6$Q z{3{3N%f%Y|Qr9($U*GyyYy3v_mGiN#L(6%&^*1%HKR=It|Mzb5y+*#?F6Hy{Qa-#c z<@B_aH=jy*^-Z}y-e;u;VIT~IfiMsT!ax`Z17RQxgn=*+2EsrX2m@gt41|F&5C+0P z7zhJlAPj_oFc1d9Ko|%EVIT~IfiMsT!ax`Z17RQxgn=*+2EsrX2m@gt41|F&5C+0P z7zhJlAPj_o85y`+{}sB{y{)}dtrl_l$J=#O?cs`btLA8VF0nSQ9K~+hno)<*J@<4% zw>6r%9=m+krI)Ak#7FlqW4`80>;Bd_pQ)ZtK652)+C22a&Zxuap3%kc zi^ODgkL>lH9y2Fc#hEQ~Jl4x2A3M5-8S|x=^zrALYq;;(=Gw?#nk&y^-aO|1j5>_& z8I8Cva*Sp6eD0V(S!v)FpE$W_)y6%aoY6hZn2$cadDA&`YwwxpvDTuA>*g`}%-oDR zjPBWWLpx%vZqm-rwdeg@n~UxqmrtDgvFzv`X3VE|^qga?_p>)!K0i87zWa*#wbaJ8 z=V#PmbkFqpth%`#u9f?(F6}kkFLR$yIU&r$OSh0Oe`KrTu zT74Gvsq0pCA8wcY8Ruto&kt&!wCLMO^|gp|EUW+5dR7F^|eO# zFk?Qwr;i+C>E#-$Yp5eDjhIpSeh$C)IWy`ox@YvDfBr7f`aG+atnyV4OHFCS=k%=d zRa4JH`J;Q7G2eT;roZazu7z&Ok+1r@>M9Qoc#oM;htWOLGqmt`LHWG8b3l=MX){qAN3|xN9O`^?L99e3o)_ozI)_ zA-}h{2A$A_V?M*<^3e?jq+fJf$1OdVRWEzGv@!aOMoZCPTTM;*(-*FYru6pC$TBjuf+g%!x+iJ!8B3Am5BTG$Yj_0NS{o?mEMVG&^Bf9zQaUIXf z=+@V$$F6z@`}DDA_vJ80=pw5*>wRBSoIL7^8|kOd?)^Oz`?D|VmCqXNW0?Uz=6QtW zoa(sd(!`ga<1=+Fb@Xl`KN_V6VIT~IfiMsT!ax`Z17RQxgn=*+2EsrX2m@gt41|F& z5C+0P7zhJlAPj_oFc1d9Ko|%EVIT~IfiMsT!ax`Z17RQxgn=*+2EsrX2m@gt41|F& X5C+0P7zhJlAPj_oFc1d*CkB22q9bNL literal 0 HcmV?d00001 diff --git a/tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.25c+0.25/zncc_dicho_nappe_sinc/gri_zncc_dicho_nappe_sinc_col_disp.tif b/tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.25c+0.25/zncc_dicho_nappe_sinc/gri_zncc_dicho_nappe_sinc_col_disp.tif new file mode 100644 index 0000000000000000000000000000000000000000..d4f728f92880be68d7e3b0b62fdfe1d33ad001a0 GIT binary patch literal 48588 zcmeI4L9Pr@6ozkWL1ILLiC}CI=5LCK$Ri>m1|k;l5*siwWnckTAO@CX3F?dbPbv1Z?eQeWAe zZx@H&mm#i|{`IlGI`nT0HG4h|akK1sFxK0l&!3;S{``Hn{XTTQ-fr#lz1BWFZSCx= zwKtzyJN?GqAMXukpaVLf13I7sI-mnOpaVLf13I7sI-mnOpaVLf13I7sI-mnOpaVLf z13I7sI-mnOpaVLf13I7sI-mnOpaVLf13I7sI-mnOpaVLf13I7sI-mnOpaVLf13I7s zI-mnOpaVLf13K`3IdD4sk2%wLGV~sgkvcj3!~_=FqT^R|w|T5sic-1)BMvG0Dq zhg5cd`(Bc>mCv>0^f`l`x8u7oWp*rXyl?vX){ken!7Gt7M6Pwt6nUwi&%B&Fa)NvI zeIIb&?peVKb~RTfwVvaZ^{j=P-%EDS{ZKC}ukZ^Ca;?K=E~hug4Tj-(=YGJWUXX9jQzFY4Fhe3@|#_P{K?T$9t|e(JEN zuAJ%1t(ZFL4WlU77n?Cs(#|>&Gka zS9R8vTjsutQ}%>Qeb#g>*ZH~T!&owFBA;_}=WTk1xDHS54U@ldV_jZ-W)NP?l-QSB zWfYEi7CEf5mTS57;a2BQotfthG4Is7GHdl&buV?U<<^H=<&rbOjQPE}{@YdU)qeJo z>$7S#!iFUwe7h zF7|Tk$1S}0PC~$BF2ZQK7LH5Y!k8?#J~ODZ4!=6*T8CRW)$8=wpL^=M?~{Fa>AiE* z0Ugi*9nb+C&;cFL0Ugi*9nb+C&;cFL0Ugi*9nb+C&;cFL0Ugi*9nb+C&;cFL0Ugi* z9nb+C&;cFL0Ugi*9nb+C&;cFL0Ugi*9nb+C&;cFL0Ugi*9nb+C&;cFL0UgkR-VXc% DFFOa! literal 0 HcmV?d00001 diff --git a/tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.25c+0.25/zncc_dicho_nappe_sinc/gri_zncc_dicho_nappe_sinc_row_disp.tif b/tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.25c+0.25/zncc_dicho_nappe_sinc/gri_zncc_dicho_nappe_sinc_row_disp.tif new file mode 100644 index 0000000000000000000000000000000000000000..eef1c83d7110abd26859d83a86b163eb5aa5964e GIT binary patch literal 48588 zcmeI4F^W_{5QckPQNc(-O+<}7g!#s%Dk35x%d&_VEqDPVQw=^yX+U}_Bx_8>gF8oW2|DeZ@7QfbA3IE3K za=Y4NU;DTf@!N}kv&Zjrzt()}<8G{Zy!b~wUO&I?{rNpR`q3lb?zi^kQEMNcwswBr z+R5kEo_w#hKR-CEfegri49I{C$bbyUfDFih49I{C$bbyUfDFih49I{C$bbyUfDFih z49I{C$bbyUfDFih49I{C$bbyUfDFih49I{C$bbyUfDFih49I{C$bbyUfDFih49I{C z$bbyUfDFih49LL$#lWlnA9G$Wqx_f4c+u^8JYQnidR{(*^~`e}&(wd8{-qV#?W5b4 z7HEP^-PXRk{X5-KOM3Alo7$s4vC3snb(^Cb=VDpA_@%bKTd7x|gD<&W~!ZH{i)SEI9SD?ZYN z_*PEE)NM`;vRA12J~s2x&%0yo!!!0&xB0qJ<1LFG`F-F`*M)ic3}R_(&zh^-oEqf! z;%B|C`;N>@zs|y%kM>cwIl7(o8oyme`J+*5a&67uZH)I3%Qg7wHb=KS%gX0GTc4Hr zj2zCzv?qNJ=C!VT)|XYcIWnaZ|u&GtX@XPYL+P|ws z*1G(vEjH`D<>$KfK0G5%zIy$gUeu3%Tifa@V)R(XM*ZeFIY$@t8Cm*){-7@|vYCg^ zXC?Ep#Mp22K8zoxH+9WENk276zt*h3n~h?*pZXl8&!}FUg=IMp(`^>bcBeGb!SR4@9V?7F9N&Ub-~WiEd88-7~y zNAJV@&ClN#k-#923b zAI1;UlX{j#oAilcb3K}1>)x1mN8;qv9_llv2Gn%RqE*^lhc4KWZuOizb(^D`b+nE$ zAOkWW12P~3G9UvoAOkWW12P~3G9UvoAOkWW12P~3G9UvoAOkWW12P~3G9UvoAOkWW z12P~3G9UvoAOkWW12P~3G9UvoAOkWW12P~3G9UvoAOkWW12P~3G9UvoAOkWmi-F(a C(;Tz_ literal 0 HcmV?d00001 diff --git a/tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.25c+0.25/zncc_dicho_nappe_surech_bco/gri_zncc_dicho_nappe_surech_bco_col_disp.tif b/tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.25c+0.25/zncc_dicho_nappe_surech_bco/gri_zncc_dicho_nappe_surech_bco_col_disp.tif new file mode 100644 index 0000000000000000000000000000000000000000..7b7c6fd7ceedeb079ceea552a6abe371a74c11eb GIT binary patch literal 48588 zcmeI4F|Hg%5Qh8l5LhAt$v8on*oUwtb?g*wU|BwZB}Rsjh!g@JfD>2_=13gD^Dq6c zYiqiDcg$MwAs;g^S&;S4R?8?D=^5jvuS4#P+l$+afvsTa7xC!-Vwf~Z-?e$t#yvM z(bLQl0^j!el)28Ddp&ow_x>pRS!d5K_;$6=B59iS?e)|@7dlI!IcL?1C4}zVN!+2& zmdyTtv6h~5)m62l)$`uD>}Q=lza-zhKKO@kyY8Yj&3O(U=Dl-kKkMxI1>bggGrGsp zH0#^ymFlB%tTpSkYQ&;M;pnYlRt==f)N$WZFy{G*+<2v?-KO^5+Ht(Y;=<7OW zYun43^`2^nda9KjdF}oo}}tn>GN%>?@i~Zb?eS(Kl zC-bA9k-e>_9p6qg4c^!zXU)YrJ~wrI(~S1wEbqw=drwOH6CIPT_9kaN6MONDsrr+% zX54d)Zy(1u>6^n|J9~esv&xqSzTw*^!N7Va{GRiD$=Um@tXcQ-b5p%<>bs6v{bTUm zWBc7>pvk;`t|_LPz3yerwW2k@th0)^=U(oA5_e?a!`^>?)Uj3TKD7G1-tqo~I~IGY zr+Cj?U-93xSA)AaFa4#ZbJjSo?N@xJ_v{ora-FlzIRw7#dQV!np7!2%j&t@f_B^LN zCEsFCds-g@-*)+C&7F@r22JCh>T}^Urr_JCci6+XtNCWXoTcwM&*E&$H=WV!pmRRoyinxu@M*f0Qo5be-hSFE)vFSFp}tn@C#An%Yt7vV^_{)z z>1OGDDRD3K@7MZn=|3p7W5FBziD>!hCl-tfB_hQ0T_S*7=Qs7fB_hQ0T_S*7=Qs7fB_hQ0T_S*7=Qs7fB_hQ z0T_S*7=Qs7fB_hQ0T_S*7=Qs7fB_hQ0T_S*7=Qs7fB_hQ0T_S*7=Qs7fB_hQ0T{SK z4CJ>5X;UJ-JISu&T0PBOB&Kp+v8kbF#hTw)F!nnete<^Sc34+s%{kondMRtx`%~~r z{TTQ*?wfszd8+9z7QX#H z->j)}Ubri9Zm!n(rDx#V#eMUgQ??Jgbobm`j_3W{Gk5O_eU`fnj7d*v-D>IeoDXaJ zevZD5V(#2!(Bdln8+uyCdtjY=bKZ0Aox``W_upD}dVciuw>L}K=i0n<#(Qi3z093( zkem0UbhPf)bWQe|xxDKc_%U`bbLV@GwO`U&GjZQ%=5n0v)%bRC-=u5nOYZm^^`G<0 z{W#mJ@$G!RMW2?m_FgYf&Cl$bQLi^E@7zDG`8iDWfAx3!MhXQmatdDgz2K8O1@bl;?#_3mZwE632R_f#u#4X@{V zao;ufZS1~9ZFALqQ?kNq<*8Z6J=L3;Nbk=+%X9IJYJ3~>&F{e^?V9l3n%tiCdJ50n zdN;fWqcd*Er-vOTUr+F?bojCvs3U* zJ+0fG`dfi-L%zlPvZZCwcb8w@@10d|!nYwm)_$M=8@|nXdZy2P8}b+5#y-cby$^qS zE{E@L?K{tFWz8*xW_*8Cd#(4R`@MWR%Y7TVZ#ih(>S|5bW}nx*>j~e6{8)QW*ZQWp zrI1%`*gIwKxu^A+KKE_R-}-rP3OQ=q>TCUD_Pn0qT3PEDvFBR(IPh)Qw^Qw`Va?H- zyl~&*oSxy8y~w4nnA>w7KgK@STGw8-rpjqY z#97z5dgiRYYiIZH?eh9&uaxbVvI5`!op16(As<|CLhWA6Q{Bh6%jaA4Zm!0+G2g7C zvg=&$z*KTCQtdl?CWmvbH>IcOtz#eG#(YCB^nw8xfB_hQ0T_S*7=Qs7fB_hQ0T_S* z7=Qs7fB_hQ0T_S*7=Qs7fB_hQ0T_S*7=Qs7fB_hQ0T_S*7=Qs7fB_hQ0T_S*7=Qs7 bfB_hQ0T_S*7=Qs7fB_hQ0T_UR|Biv5?iG|P literal 0 HcmV?d00001 diff --git a/tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.25c+0.25/zncc_dicho_nappe_surech_sinc/gri_zncc_dicho_nappe_surech_sinc_col_disp.tif b/tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.25c+0.25/zncc_dicho_nappe_surech_sinc/gri_zncc_dicho_nappe_surech_sinc_col_disp.tif new file mode 100644 index 0000000000000000000000000000000000000000..02476216f5d1a57e5c71863311a331e7c14f0289 GIT binary patch literal 48588 zcmeI)F-pWh6adg4BPv)asEw$#hp^w;R&OBU0T#sG%2o>x;0a`lJ<=Xw|3JW$3n?-V zFX6-IGl7};@3&bjZsRB-jw8B0y3C$4x>3G2i3U|N&0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(uax zrDx?^eVgYF^lhGdpXy!T^lhpk-|ue7yzPEhHM!C^eXGf1>w7V8=B;((HJ#7AnYWre zw!RnhX5LyiUeo!^n|Z6rqrLo3kNT!>3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< W3^2d|0}L?000Rs#zyJev8rTBy?Rs$l literal 0 HcmV?d00001 diff --git a/tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.25c+0.25/zncc_dicho_nappe_surech_sinc/gri_zncc_dicho_nappe_surech_sinc_row_disp.tif b/tests/performance_tests/refinement/dichotomy/data_medicis/T19KER/r+0.25c+0.25/zncc_dicho_nappe_surech_sinc/gri_zncc_dicho_nappe_surech_sinc_row_disp.tif new file mode 100644 index 0000000000000000000000000000000000000000..42d53abe71695a6a4af085a152b7fa3afb517c77 GIT binary patch literal 48588 zcmeI)J4ysW6a~=Nwy0pFpeCZmF2a0bQ{91x3m6cMjZ8Ig0j@v{T#`$$8XD}#H&zJ^ zavTbZ`cQE1876bFIE}4{*pBG>=*sN6jBYYt8|Nowy&vbpxsAzur(2KBvi4HO-ei4$ zobQ(PgEAk^JeF}dIdeYF`?5a#eI9*(Zu;R_pFy}U+#6ex8|1hlI^#??|xnHSufeX-0O00 z%`NLC+i!i}{kq<>Ub20;*X7=tTh>dq-}=7$^Ykuvxii230}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# gzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFz_1#Ul7)MfdBvi literal 0 HcmV?d00001 diff --git a/tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.00c+0.25/left.tif b/tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.00c+0.25/left.tif new file mode 100644 index 0000000000000000000000000000000000000000..a187e73a8fdfacb8a1c7f279bad18c01d987d00a GIT binary patch literal 97050 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 UK|Z~fp)Hsx2!Tk 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 CLQW9? literal 0 HcmV?d00001 diff --git a/tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.00c+0.25/zncc_dicho_nappe_bco/gri_zncc_dicho_nappe_bco_row_disp.tif b/tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.00c+0.25/zncc_dicho_nappe_bco/gri_zncc_dicho_nappe_bco_row_disp.tif new file mode 100644 index 0000000000000000000000000000000000000000..00615e5aa1fa1a753fb70f4ac68b1defe3c52e3b GIT binary patch literal 48588 zcmeI4L5>_n5Jh7c1eRDC3D_X$wXa|c_10^)AoT$d;sBPY1F*2z;)M^u34lc%i6any zR58S)vnn&YTb4)l+WLyf$fz1s{Fgn`BY9rFd}dF~>@%~QTf6b>XV*>2KU(sG*Ke0x zeV?TK>CMOXsn_1RzDV^im;7_Df91J)es_JHdcI%sTd(W&?>GPd`{ni@ul)I~*_-do ze*4kv)hn}~{xJLDFZIs9B4z*sFaQHE00S@p126ysFaQHE00S@p126ysFaQHE00S@p z126ysFaQHE00S@p126ysFaQHE00S@p126ysFaQHE00S@p126ysFaQHE00S@p126ys zFaQI4WWb*Le>z{$rW2o@eE~oadfB`Y`&;`da}HUKI~(-mTT-r@2>` zX!IHO*l!h|%G#PowfcO4Z@TtQ{LP8>-`$8=HDW$L`8}=7kABup15$sfJ)WP@XFmAc zN?D~AJ;%zNqjvJW$@Mx(>#W$zwK5-lhCTKle6B4Wy{D$rQdbO3o`*L*G5RCwnmzh3 z`pgHPQz`RWsN6gH-j+_jKdnf6ThevfAAN>B_8)ytJ<>dTGn=Iq6B z!<*i@%d@wOO8+UPUvvfn?q)jmIu*5Wg>xhDsgVoU0)X_r2X{;r|%c{}{*iQ!Yti;)_> zwST4_Jy%=(;cfVLZp62?Z<_U%7upLydZN7QJzGcbtqI@SzGctMJqqP|Pd+dHmcEti z!-lWnA-=VJ3!mXmck-_#d0Xqjx3+KD18aDadviYfbs_m6KQ0lzwS6<4kC3PL zufILp(Bym4J3aR|=t!P>Peu6F>052YHBYu`agT}*HE&d#lJXkgI(>^-$L!CI%YCvR z=j8a-_DypY>(`R*Hz#Smrrh@+AN^h34*NAzyP|Zz@Id)F;=Fy>=WWeXeCzXVZGNg- zIy1^+onx*~-ZNLEdav+p%r{$nS&N#x_9B*js!Q`3ifiw#-{JSGQC4GK=Cf`odKJ~1 z*OAX>c=paU_}2U#ZOq#`eCz4a{pN~P-_nC?@U6=?yOL+RkG#nqXg#XY_l!OEYo>NZ zwLHpSYwc_A(TCAzUYlK>??|ruN%In8JrYNsVUPVWPrK5Y)BR?AYkq&alr?;F&K~2> zK^MHAh393A^Hz)M&2_CyJ<2)0Z|^H}E9W?}o(o@MJ#>%vJp;bp<9yG-H++Ku7=Qs7 zfB_hQ0T_S*7=Qs7fB_hQ0T_S*7=Qs7fB_hQ0T_S*7=Qs7fB_hQ0T_S*7=Qs7fB_hQ n0T_S*7=Qs7fB_hQ0T_S*7=Qs7fB_hQ0T_S*7=VEfgn|D6(~mZw literal 0 HcmV?d00001 diff --git a/tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.00c+0.25/zncc_dicho_nappe_sinc/gri_zncc_dicho_nappe_sinc_col_disp.tif b/tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.00c+0.25/zncc_dicho_nappe_sinc/gri_zncc_dicho_nappe_sinc_col_disp.tif new file mode 100644 index 0000000000000000000000000000000000000000..389479ded1c2efb48d2dd12159ef7710dc5d1098 GIT binary patch literal 48588 zcmeI4PmWAc6o+pqL1ILLiC}CIA|j$iOibB+M%`=#rPliRN} z^=?-r^>ydwocp(4o$tG^jT{}_Z&zAtS6f@H+iJ?*PHk243!D7jG``;CS$C=A*H#zX z_wGTIYlG8GuMn7ke%YO|2%H?mk zgrdTzW2*;8Zo(YNkn+)Yix z04Av~IkC_SZg)GbXn&HGmszs5{JkylNi3q=Q!7~ zoRfayF3;$m({)QNE4OW|7(a_!IA*QfPS<**f1|mD7k3eMa7-Ne?1y~TXm0f#D!23V zbQ`z&?(Fl*rvLj^=j673ZsAGmxz%?e+_Dx8E!x^LrFS=C%_=W`F|xMhqs$1p51pGd2$=H@b=HqyC6J}Wiu?;Fe#cjX4h ze*YoYdgOQC2e+`JjeK^`^8KX)I-mnOpaVLf13I7sI-mnOpaVLf13I7sI-mnOpaVLf z13I7sI-mnOpaVLf13I7sI-mnOpaVLf13I7sI-mnOpaVLf13I7sI-mnOpaVLf13I7s XI-mnOpaVLf13I7sI-mnOu-t)P!$QLY literal 0 HcmV?d00001 diff --git a/tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.00c+0.25/zncc_dicho_nappe_sinc/gri_zncc_dicho_nappe_sinc_row_disp.tif b/tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.00c+0.25/zncc_dicho_nappe_sinc/gri_zncc_dicho_nappe_sinc_row_disp.tif new file mode 100644 index 0000000000000000000000000000000000000000..65f1b40a44db2e9bdcbb7e52618de45dc82515f3 GIT binary patch literal 48588 zcmeI4L5dVX5JjVHQNfjhx)JTQR~V7n&f2X)A3($d3|I$nA#Qcy0X%`as3Um<<4Z=H z6rELB5F;+$44?cNnLUg6FRGYX%;n`XyJKc|&31d+xqIu{RsKft2e0po*S%Ynzqh+- zx4rh&^`NRhEdIXNAGz0^Pp-$+otMS$y{@lcPyT+t+yC^+x2I-bUYLD&ZFY5K_U5zM ztM9ryy+`x_24DaNU;qYS00v+H24DaNU;qYS00v+H24DaNU;qYS00v+H24DaNU;qYS z00v+H24DaNU;qYS00v+H24DaNU;qYS00v+H24DaNU;qYS00v+H24DaNU;qYS00v+H z24DaNVBr5^;PBk+oCdEi>FDR9>*I=arxy9=3-D7?Rs(>N{;IFnv{id(<-gq*EzZ6^uWBAwGO`T)lg+6-y?F% z$*rf?tvg50YOJLFn#e6DxADSzUu2b!+R{4tee{MKNuTq)w04VmOPRN|e$R8!K6G%uRm@w?yp7eYgpai+)5tBd z)T&ynb5CwLxtX4I3sQzHO;zUIp6BF0c}}+S&^$>)k>;vL%v;jDdHc_PEzF>mvvFY- zbrzY2|Fbf0*E(;Sr8Q~3hK*w066fuQzrz+Z`B`Xw&-`qQ$SpUw?%vlA)eGNj6uBkl zHqWBow|vPTXM|&yrhCZms^F%OmdAXOm|q)wLy0ZaKNpNBRf@FaQHE00S@p126ysFaQHE00S@p z126ysFaQHE00S@p126ysFaQHE00S@p126ysFaQHE00S@p126ysFaQHE00S@p126ys iFaQHE00S@p126ysFaQHE00S@p126ysFaQHt4EzQ}sM;U^ literal 0 HcmV?d00001 diff --git a/tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.00c+0.25/zncc_dicho_nappe_surech_bco/gri_zncc_dicho_nappe_surech_bco_col_disp.tif b/tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.00c+0.25/zncc_dicho_nappe_surech_bco/gri_zncc_dicho_nappe_surech_bco_col_disp.tif new file mode 100644 index 0000000000000000000000000000000000000000..444e643bd2e673ffbef04494f48d0635095b4fc0 GIT binary patch literal 48588 zcmeI)F-inM6olcoj;LUypeCZm9>RQMQ@w$R2M`Q2G&0q|19$>4@JJrP9@xgl;K3%3 zD)^OQdZ%aUqTZM4a(Ny*5wRPwm}1dZx9wUC>y6d=tUaGr>-oK{VZFE5jP3U9yx z^TXA8zdb){>-n9Rb{!AzT&~trdp`gCoc#UXO<(QF$7#gdMa1)U#QlB5&1=Nf=lt&X z0~Z}&00S7n00uCC0SsUO0~o*n1~7mD3}65Q7{CAqFn|FJU;qOczyJm?fB_6(00S7n z00uCC0SsUO0~o*n1~7mD3}65Q7{CAqFn|FJU;qOczyJoE3_P{}AfRwLb*7NDa%PXs zNWc2I{j)+BP8oWC>)hwA`}^a%KO66TF8}ZSo&J5N&J?ot{>FRO@whjCr+@C>@1NJb zD|F$Mq4zt^pg*g;J9VazwQ@GuSqfb^Wyrd$+;i$oA#3Gqva=MraLSN%S-I!bnL^ge z*<@!abm5dC>#}mssWXMFm9xptQs}}dL)K;Go>ONESu1Cgou$x)Q--X|$~~vf6tY&% zCOb=^3#SZOmz8@?ohf9koK1F?LKjXMvMww4oH|p;S~;8SEQKzdGGtv=?m2a)khO9) z*;xu*IAzGXtlV?zOd)IKY_hWyx^T*nby>OR)R{uo%GqRRDRkkKA?vbozotd+CL z&Qj>YDMQv}<(^Y#3Rx>>lbxl|g;R#C%gQ~c&J?m%&L%rcp$n%BS(lZ2PMs-at(;AE zmO>X~;BSsGfB_6(00S7n00uCC0SsUO0~o*n1~7mD3}65Q7{CAqFn|FJU;qOczyJm? yfB_6(00S7n00uCC0SsUO0~o*n1~7mD3}65Q7{CAqFn|FJU;qOczyJnx4g3OSHjxgNPKnmvfL}B+%ILdE~}b-sMpHnx2F6>t*@ut`tG>=!RmIo zTWjCz^~lv9Px-@Ie^PVn`BJZ^uIJ5^uWQ}bpJ)I6d|dykl^@Sb`S!Y$&+kgPzAokc z*HYg8wBFyJxX=IwU;qYS00v+H24DaNU;qYS00v+H24DaNU;qYS00v+H24DaNU;qYS z00v+H24DaNU;qYS00v+H24DaNU;qYS00v+H24DaNU;qYS00v+H24DaNU;qYS00uHK zP+rw93dw*105Ho2OVb+bL@?e3!-FMR8 zhj0Jov%^b%mi!n7++P@h;Y>3)>CThl8}A$6LpNk#^OBwTj&xtp6Q7moGb+NYyZ?`w z2|dl*TDxz}vvXbT*@1loEi%op)7Wd>%dKWhal708^fle#p>$TY)2 z-%Q`02fezy==IAhMfJLvNwWyE?)l<9@wxY-SCFeNBv@MWz|LzIjdcjr1vH2^1sGRnnjp( z=$qaL^UGEnRr7xKYW`fg^))Mk7MW()^R3bI=&ihIl|PQ4MWz|> zE$8pni~44tl?zuU)+5Y%v~P1>9Qk`qwnoq*(+qpQE%8NS_hReY-1DYqWYR3ctXBF|vs*K17Gc(teUm@(OHuVXf7L(5 z2wG&CVb(Y4-;1hw53Huk*Jtufnnjp(r?IqFl+L!drFt86wrOhmR9g@uXpw1#t{**} zy??!P)x58&Er^*ki!dv`@o%CC95MqO!T=1w01UtY48Q;kzyJ)u01UtY48Q;kzyJ)u z01UtY48Q;kzyJ)u01UtY48Q;kzyJ)u01UtY48Q;kzyJ)u01UtY48Q;kzyJ)u01UtY W48Q;kzyJ)u01UtY48Xt~1AhT|U(J^Q literal 0 HcmV?d00001 diff --git a/tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.00c+0.25/zncc_dicho_nappe_surech_sinc/gri_zncc_dicho_nappe_surech_sinc_col_disp.tif b/tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.00c+0.25/zncc_dicho_nappe_surech_sinc/gri_zncc_dicho_nappe_surech_sinc_col_disp.tif new file mode 100644 index 0000000000000000000000000000000000000000..279e00efd190360e9c46df41390dc6b2deb8fc64 GIT binary patch literal 48588 zcmeI)F-ikb5C-6h5f!Wy)JD|WL)fRb)fvzlip!D_3Q@IYCGv{4DF7x{Hb@cOlGyW)(x8sPHvxvvbh}+wUtLKP|_j>m8&SeJ- zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#@c#|mm;cPz zzaF|-t$Ecm*=MaYMwYXKerEmGZAN*ooykpZ3=B7r&(N&eK3jRFo!Ry9T`zK1nZ>l4 z`P7>C+ga@w`B}Wz@O@?;vufs)_w#jDyB@ylMeZu|m{l{MdO!QNF7mT@ui*w}<(2a` zqkdn{*!6ODkoo+k*8K9k+*UKU{xjBpEjPI_Fx)_X-_5K2XDnaWzp?A(>|kDAc`tLC zR^_((xwScFFE_a{Fx)^sH`D60@5TPiu7~g1uI!2d1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= eV1NMz7+`<_1{h#~0R|XgfB^;=V1R+YYTz46d3ntM literal 0 HcmV?d00001 diff --git a/tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.00c+0.25/zncc_dicho_nappe_surech_sinc/gri_zncc_dicho_nappe_surech_sinc_row_disp.tif b/tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.00c+0.25/zncc_dicho_nappe_surech_sinc/gri_zncc_dicho_nappe_surech_sinc_row_disp.tif new file mode 100644 index 0000000000000000000000000000000000000000..ef60641d3ab7daf7e1ffa40b1ecf6cb4b2cb5c05 GIT binary patch literal 48588 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�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

Z$l7eTwTInWuhJ+5AU zi@NE^RJAuF;=5vVQ0F!)z8qi) zUm|z>FWYwfTb{O5(S{w@DWM<9i~eYhkPlmZk^g1GKhXFAKToMXcx&_ke|Nm^cO3AH z-Pcb7Z}o7#Wu&rbgK8e(VD>}(%#m#3A-4l(^(qOzlJ$Mhfuk>$#GJpAfcc&af1SO- z4=b)WT@b1YT1|QDc3iaSNJCg9n!# zreT+*fxqnM;KB<|)Zc5ZhqRT^S5m!jLjrhuwabm{g;h#MDXpy!Gb*eLVtajL^Q73zTT~P#Il8~rc zi37f+QLFO8d-|YaW?bb9{p(O}(~?mkK}Sb;@9021Tw{EDY<#z zz1cmw%bkyP?j}sp^9OGh5RgkS1OIGp(=bj#T(M!HFBXf0-ZjYOR=gGb_^7D`WAJoiscgkPx1d@H{z>KU86TJ>}=hxRw~ z)255yA^HI|!&Kn62kZKOBaax_`UZ|WB2M>SaZrUHkNNxUN~1xXdweBEP_YyH;&JT} z3E*q`h%7T%@H6@9b1`K2Sj8u=`#tT!{TFW!BmaS)BR|)<3ivhA)?R1T4Ej@5)+V-J zz+H1`_YVS}D%*{BnHJ#pXT7dTg~69`IiX~j1Mk&gv;Gi#z)CVzn+l+hXh>yFREa{T zkey=V*pKU5O+O}wJU4p&^rQE?bBG)3CerM4;FEJreg)XS9Svc7Ot2pVpMKF+_<+1J z+idk5c}mtjDxVvC>B;HFH#-NAHx52X3&#D|4`kmeas{4ar{WMTNBv>cV>;s`{G8R} zGe=tSUIRp9+QEM|&ioa5DFlDSn#gH7LHH*4ZdLzK!5o)LjuByh@XY`Am{q#LH~OCb zg7jz1Z7qwV{5$W6`K$g)?@jnY9tKGWd?dk&j`YfO|Xn{$y$u5OaIl zJH??Rk0hOxXKqDb%lL6U=X>CF2B-3##Agz&E@J^N+cSu|SFQ$5=dy@GA}h^RKZ9sy zT{?C}0^gUMh&Rv9A}%CmNog;`hr%;nvC9DZ9mUaV8Gql5)hd=kg?YznJ9{_f;QigG zk5a*0s0;oXow2})G_eD^%xTEy%V+%U^nst0WP@~Da8A*J*vg{<_#&4ES#K_&Zsa5D zpW}@C|IPBqV-M!F&54M_f)|G;NxBmkFn3C^o}Cf#Hcgdi{6vkqr2XqNdx8!d3 zA~-MWTb_S7>g{i%0>&Hhc{{uxgdGJhQm*N(*;v3_xipR(;clF_t!`toNP&(}zeQyY z{X{aHjP@BPfgf&dJUoo|V%e**-ttesp;h5-hCj;g68D_vE!0^acUf!`#Q7=aExl(^ zN4iXxQg{b?TK3DgHGNq3;xR|8n2;|LrsgMx;nT1Twr6Fm!#VRIXLg2+;`vK|61e;u zK0CJ-I%mu=zffCNqkjSOpRVlcia|Uycv^d1s~K^!eu5^q9{9m9c9q#D6To3%&uw7LG`Q4h+!EJVygP#W*$Nz7E#U zWobz&N!0U=N=B1VM^X~{c4;1c9Ny{srWH4VuWiZ~XhYu2?o*f#_JZI0i_cgC_}Hdz zvnOKN!H>E<9J;LV|Ib`y1#V*A+Bx%~;D=Z@Rh}wuz<0!JqMvf$Jxq=_)qerM3T)oL zTbqoy(L7l7;~8A(zz16nd91u{gx)fEIjRmi`VRiDw8!6|PI1GRJ64HAC_6Z^ z^SsU?_#aT)regh;Pp9i89)}O#MKeAC@y_VjG3OfOC6!qNM~*kp5A%1OdD@0LU7}ua z?U^h>++;3(4+n_=L6Ltf3qLbMQb|Aj4S@`fS8~{(XOZR-E+Bq<&DP637!6)klXd>& zG<-aM{CDgw0=L?X@3%yLVX^wT^IjWx%VNrzh`V^c=RF3}yuer3a?{jRp!4V6G+~KI zC%ma1UZcL9hQ4|E01Zk8p;*p!)r_1$gv&)gW@twYUw~J{RQKx*Yubb&9G1)M*IZF`uH|y5f zKj4=*Q}4F^HLM3BdA=9oRn`o6eP?2WmOJ?6bbu@^;vV(=7#U|V@PMsaJa4N} zk7HCeeFa|BH<+8G2;aIPYe!29e4)*1mKq(G;qTCY^z$xw>YaBHoq`;XUJrIW;ZP-Ma3mBlSw;Ier2!wHsk%d<&mTg${3*D15TU zWlNDO6e77`aP%bdO0j3h8)Ni;>N0HalYNQ#ty*Otd~jZon<~S>gP4~gucqu@fO)~+ z&UG66!d!gqkJesfwk%@jwU{rA=~;x>nci~q4e&4%#YcCLpUaIut!twm;H{{j0&kd5*EyonbXEj^uQq;PY4jv;J)73q^ES}A{uXRVHByLX z#-h$K@b1!zoU-A3=upEfaYvD-c8)clFo3R;9gy*r#~1NylVr-=ZPX)nvFVYpkKK<+ zdLBi57iSikKX(QB{fI$mx;=%6Sq1ZL;NSNP9%sPQWJJzU zWm&Fur#Xaz| z$(?ZRMDQS#Qi|5uYo5X+MxgJoefewh3|VboB4nPaX#h`T$`?1M$%;4K0=oLoyWCjW`7uTXzVtZje zF`BWl@<15ptCzm&`>2b#6Ykv(g3w2uUVl>lcYlH6#~*CPy67xdy?$O3cq&TSWB4}K z@0$>f=E^LB5E6BG13ca_a*Y2Y<~fc$`xEsO>ppPv^3Oxaf6>y@7muLs((so$RG=@D z2;-TZDKST04>5aMAq{^aM~iMK@QYpCtOk1{beV&CCwRwE=Xq_qT?F_~{XwJfb>!_A zk-AlUf#AJ2o42ZJV&C&kgs6u>&v|2YGU8D#k>T2In*y9stR1y@vm3q(EieDoMa*S) zcpl9Row&G6*sp6da9hrkm$DS#Mp^2*^$h4TA4>nGf=>nviU|e)KQmkJU)K`^ulRM` zM;7}h&NGzpBY1MfZ+#y68O-T;FWr+-n?t;hT-C7$A3uFTi&R*Qy1f-&+5`A-_yeVC z(u#pcn{+woI*}j!ts^c3VIKS4`xmzQq0cRf#&F^|o?qp5XVbrAqAoSwuNZo^fc|j> z9?YLq&@ytVI|ZMK3G1BaJc;N#DtmF6Hj7Yrlvd#MDT`>fU;Fe?5`7%MYs;Fj-;@-? zQ<@BccWXU#rlP@5o{K5(0B@X5S+G2gbGmGd>Wb!=3W%>+&-}!|Pt8g=s@-+7hy)5> zqsUx3(Ra@OkMMFDVRt56S%;K{a|O0}pShV%eBQJF*Nwu*gk7#@y^VG%LHE+bxC7^B zcxM*&MB?`fYa2TrFFz)jT|YQeYSW1))i-|FbY>Dt+M@@DFXH-bH}78sU+rw~VB{^r zJaRpGdA=eN@s#*|Z0}RdJzUz)E3Sb0r(xP97t}=qH+3I7Av0Fh)IY1Y`go=E#^}K z``}j)cXAmr&?_L`c$4iDJaC?mKl!Z*bG%{1NiiqIX+S*DItf zmne~m4blF9WyG;;pQ0#f#>VWu7PIj)ARKL$?DVbIH5evW7J~vm0$ybj<-_Ii@10OD zlOic@n@S~)cX2%eBWln^G|!D^Ds{0{Teg{@gXkO!O5EtWdl>n;&U&IX zz&(rTSEv=0-;+TECCj{hW=HaR(pE!S~u5bD{>hHI51J&fAr`VR% zXB%gL&u9#a-F*ptg0A&$w^J@rIs7fm6#gioL~90%FX+RGloApJKHTvuQsjPY9$_uq zcgkrS&H-sRViH9DTL}sh={95T~xQFkZyxJ{`0y3jKj~^L_Wei5#rwC$!_vx8R%PwOO=M!~C=r znveCE)5L7Fv@7u&>N%f#t!`#wy}Z?P90VU?-6o-0nVnBeKW5e3#860lZ035Vz)(a` z_p{6@yeuGscD*Sad0j}{kccV@J*9;g8hR!L-eb_{irj2AWE;R_7;!x(<}5%$0GlY&^bLc*0%FZsqZ z=tUhfaat{?n=CVkt0Lad-0_(xhyJSm-+}Yn!SkYJPkncSPFLsNcuWlOK3DkFp%nPZ zm@@}%Ct1Odonmy)AA0efGjtsh&_Vjdc)2W@P`^oHo2dYPl2PrPvHS@Ctp1wd2I{~& z6;GT=g065xQdiQq0zOz(TH+aWLzVNaT80O~lMVIAiLc2-g8@~!S`+eW>b1!n=qJvM zv(om6bCRXyevc6!EqC&&T!fxQVLcIk0CmRl&bbnc8R!uAu7#^0KNQ+9C>`b`2cY7wjuiN0{DHu<@8*wKpgB%w^N6n879=S zJ4pk2K+&NxPxwYtnfi;%YB4Y3miC1k=$~2h+5Cz>f<&Z!|1PEpzm-tG#fNv8uUCBR z0AJJ?@{|H+V$Rb{V(sQDqu96T<2m=SDjIX7CI!v@W<&oCk7V&ZiF#M#AH9n9I^dd* zrKGW~@Y8on1E-N>*7>B4uXJ zmK`aw`bM(%-dkl=LW2-mRtaTq6~EK(ulJL9-}iZ*`@XJo&ULQq)@vO637xgUYxSN6 z>OIHx{FTAug}$F+E4iORaxMOho`G&@6)7Vp(uMw(iKZtxsE6(Iv##pu1&({cv-RR} z%&GjEJhm0OR?A98pK}i4D9h91!>F?jHPLl+s=^Qa^)#0eo}by-M+sxLS>#@-MCajd z-1k4pMjE?OUk&+uZwqt{6d^}sb&x;8%lzlSW3+dczIPV`{=4QJ$x4Isw!Z6as1d-N zv5*LvYW)0g6r+IP9^^muXPfCSLDwj09qnUBU$KJ&w2KV%Ay;kO3%%u)^x9rQ)HTB& zeZB5!iuvV->XsKDK%b+$P98=KK$Ha`(jr$@Wh_T` zpLHGyQo41c+%=yhCCjl1{VX6YE#J?)+zx#@eod7M&uOgK?S};7yzu*;piW%pAn%d! za7UaQ+?LBraTqxEhP|>#?mvD;?YS;iK(hR4o0qN^p#E<(TUS;{EF-xuyh9v3sj2d- zybL;gwI6>`I`aBKDE6IVugpPJ2GrBoOA;fY z!zY$acX_&i|L-o5`{!?|xW)LLb`#EtWV!kxnFpUE$85L<>+hVD?#GLNQ^^>Yh?{^~ z3Ve)?GL&JdW`2nMS+|rYd>w z!#~G(PrL_u^VdhsrL}a~WTnVuXumo3^FyX9cUggNS{bI?p`VQb1-eUN*6tbM68M$!Wb>*~pHw?k8S4POpiRK~kh}zV z#l;b^L(t^T zN1VLDGwK;Ef9F8=y`y7i!-4%PtNne-2D-+pXqpS6;qW(BQaUQmf~P!p^D`|#{7|pa zQq{tIjDWEj3+O(E#^jgF9@HPjUvXM~h2LOIOgdl`=k3*3aBfk=>tukC8T4q+_fB-X zk;ldOyG1VmC(p2yG&@6g^NsdaPsaOlI9<;B6%HK8*CH+rT$#0+wrI1IOTI>Bajm2O zVKG0dm=(H6ghBGk8R+2~4n?~^h=g7#7hT>CoxXCpI{c?S{%*^;z95PMatKKv5pP zP}fUluTDbO(mQlQQV7qfXz?*?RUT=}6}%DEo=+mJq#m>4?|A->-t-4v_F_xpr>{bs z4^Frxl7V%+`^x8Yed#3oveg^KbKv>P-fgO@@Y65Hx)-2salh}d-u3|0eLj6H+5ZQ) zvSn&}HvDix`~i6^C(sv_Y8YCelTO~HR0-enL_O*JK*xa^=!(+4uWxH*5S63b`cL#g zr#P0DJb4}Z#iQ(TiR-ARn+&T=`{2Aksmqm@cBc}xgpc^;330Rc%C22|U*mku?zV+}_#Ahq zW$M*X=y?LeYRyN1*WEWoNy(w_k8&p!59%^8e}v+!i%`$*>ka&*j{2o$jl($Z-)=tF zw@zX3^HdHo3}yjGXhc7_2EW(f+qB*;cg%U;>&ssP-eIJ(^y1%qvuyshyer@l9|IQh zwU1%HId4$d1K(8p+?&t!O{nMoR->UuJ<7#OV&xL@sF|A9u9K6fmn(Z8SB0)TuoA#~ zDIVwliS$z(GRuMQ%HimD2Yi1InfDBzz;h17ys7ws{kb=;Y8LNT&oT4rc_O|)>vmQL zoVUSKF6Sh_Cy$VfEsvOSpTe%zb)CTXuX(=wQFsh~&&K9eHmu9y1l<{N_=f8mYW9S5 zqmErkCeyi~LpCs%DgS`Z^m6#_58#3dKfn8x3Gl6iYbc*i&LF*in}aR@2Q8b2yB@Ka-*hyewDBGN!)=g9 ztQ!;c=t>KSU*%%vv-N!FmSYpC)%m14o+mv7^Nf98DyiQ?ynZyd9wNd7U8k-5Gz-Zg zOVXS>Eug<-xjp&Ta~sbgu+k+A`uD5zXUE5Yw_~3FGPsWU*&8OTT~5P4)AW8jW4#Bi zPpc;}y&QQ?OSh`wH2OFV?wv1XNg;-H%Y(0g*X~klvIiebCu3_LzV86et9pJ=JPJJI zQI_=I73d^lk9SpOLAP-THLqVQM;(p#zNE!A)IFItXVyd`e|Rx;TW!VMB*RBWGtdir zK16xlih}NCy^p4Ee-7%m4jq4-)5&7cDOb+vG;*<@Z-aO6YW=@+LZXi(92UNTyv{Q)n8kuP*)eLA)e7Ic z=}n);hj`z>8zXL$@R@$t7m>$-Jaf`5{$(`$`HwUy#86kBWw(kH(m|YMeHHf(dY|Lv zYFWM=sB3+TEsaGTneCCnlWmw6#AqB@HxIpQLFCPsqwwb(5w{gNf_2AMBN3pB{2&^n zFd~TSy+3a5z#D{^xoV3 zegu8Q>u0rCsqlF`&%>%WpuRM?Jwa0r^ZWK@`O#uM$()`&DHH_VJiU(l8@^}8`MWu? znb7NMqf_11;0uTdzv>B|_2qu01Svtkwd3>S-thMFAHhA`h&i?u@_4As1Nc4`_UcU%|tGLkWJa#*A>a!}#2yGs5yFp3s}S96TzZ z<4|e(iCO%GU;T14GY@?xDeLE~S8>Jua^E$ppP4~M>3O$&1TJ42xn=$5BY4U-9!6d8 z;U}Dfw~l23ck9nhW#>ajyfEj|pPfTeZEWxBLf_j{9jdGi|E-`^^R}7)Fh6|t5c%AT zxr+{BW;dZjMh7%!Ka|J5nlmg&2|*m?a#3cwiGEpmNtfS0fa}LU^sEfy{kZShd01h8 zEoeRYhB@U`TvH(|lX=ABLZh)V=5_l@IJ;=dpswY@7qMk64RZ_8N9C19rl@1LkA=sR z#c9S7sr)3eRI}|wcuxuu8<^X2zc!6*FrZSJn}u&PplNjHpKLN*Q$}|Y_fPL?_pPxF zI49$>q3o`5;FHxu+_|d2H`=rAE6^oXZp~T?ptTKaWdZ{(kl1w5%TST#C56)M*X?S%3xc8it$*#-qG1nnoO4Ml{Jnn1X4l;oA z#3&z(&lF&;LC+7y0Eb-CpLex*!mNnM{>P(oTDpih9*f-5HV+-?oRq=+ z2R`rqU2ldyqaMQ*AGa6v%~B9TDV0c1Ijoxwxftuexv2jKS!#O%$K4ZRcPj>e zOcnk-G>vu3Z!ToB`8{+kuEvUBYv}p)$HW$p2bT;kOb0{H8)2#3$cB7x5FOijD-FDS z$=a!=EM<0sT%tYTz*|+M4z>yK1wYMJlVlJ3)1FbXu&F=c#`3C$GyP20mJg?#Zse*P{ z;rVblx<#$|>{>cnbl@3LX`94M;XmlvQz?8F`Ot>9ewG3GYijKNXPybv ziEYGhHRClbkatm~13vhwkT~N4e6P@vv)kd{(bioz9_YosJ;6$OQ5}3>g2mhXD)3TK zvwFLA3fYq=Vi|BFg)jt;-k1B6Mw+|aJ>ucRjVVxjH^Q4rMAPoXT4}-;80Rf`rvrV3 z+%D0a8*onH>3oHz55QA&^l>zf+2nw#6z}_D%njLd%*C}DI{n}k@(}Sg=6p4s_!-0r zWv|XfJg<{FD;p^rF{h{R2RA+H6b_{)RrG~XcYns;$`3rL9dF&?M+yH$?zx9kKQl>G z!UTgLbkI|;*1B#&*YPPb`u-8?ROrgR38VfD@^!M${_iUOj@!|kh(Y)3x-UEoyzA`O zNEL@Xa?P$f+^7P4WWCR@9e8)9DaU9d;($fbzMC}u@Hae(s|;K&CJn;kma{sQ^Z;}mE3J2($g5kThCE7F;Y$;hn^1rcu3##uBN#sCEHjtl zEvScPb$H*2;0K;ItgXG&3SEev<7c@U{5kJD1jXQMad$|+_9Yj2<9d>gCncT-)6?@? z&tYyu(b*EZ1k|Hxaw4C=Z=hY4pkR;ZMWt$a@H%`;S#C?8ih%cIonHzmZo__|pOu!C zL|-op*X+M~jm-GBgSMm4#TJG>o&Z1V4W=s^wS%AP(?aCTS>Tq#4Yys!p<6{50!ep1m17e3XnblJnHB^+6vxzwAqGj4A)x} zy#Bl2ANU>-#e$G-AV%=6$1ym;&kc-`jrX2*fU`+vWpc|wKjon6ZLi2Okv!2PH1GR}c8 zm(M8yFZ2-$YkgyabKnksE>V<%-V<3p@X!vtOZ#Bt+;;dnSlhq8^+VlokIzz851s>) ze7Ef&&M~c0y3>X_p7OUdB@T{h1bbT^6ZlunoFe0Gf1$n{F8+HVJiNzf*`A_jvTC5wYCZ{dHdHL@o27*~16v#E3#Yx8XU~&55@H(b+hk=}OiQ zKN`f@!SuDOSYJF3Za6kXV_!J`DM_|TC&^-uJ_X5P-*tZOd5pR{lVL=QEb2;0dOW%R z&e;p!FZ`?o`DoqymXhY{GIB@$)&u_8N-{q`q1dsxlz0l?Jk5gdPnjrVCzFo8hd8f1 zBN05uU!r^EBrvyS^-+E(cuesomA#Fn@YS>HzYyOC9~kZ3$3}se_svofmT(Q{#_YQ@ zZAFEBm|Mx7A=r%b9JZR}7dGP@`RPyll3u`fb;gILNCNX^84{A8BadaUzN0UKKjTpH zkFO>@S>)-sOqy8<;tSu_c)mI86L+^qO$6s`Qyma&s7KvXSNP`;^puzuQTlz&8RW=a zjsBn4u%F*0>P^8PaMzRJEHiX^=@T4+cag_`i!G#d14rKZu27VLy0mEMG^P4M@W$6i z#(zCU-+q>gLJ0g#f-afzyx^B&yUKJeG|+E<(5jmb@t8fr*Kl_U&e0Bdd;1YRbX+?( zm;M>HQ_ zD;sUfCIQ*klWoBxjdUBq-MTok%&><#)te&7y?v`pS1;IW@K z6*pjC?*33Xc@R3qL?xp^UL*9*Gf#7OhCs(GP&*kqgY!qzwa&EbW6tVv>0|Ym^2v=} zW0p!A%(J^naXO! zn>Fp;n?|x^e`#WHyD9Zmb%s+dedPotO?YlZbDu|ZmG81=fi zPaSmkQ%TX+nQ+?SxUQt)&+UxSXyw6^b!WG;Bq zo<9j1%td5Xc%h4Oy^y3fvsR|V2RdFo5%!%QyxghjXf^bJ(eAmOPo)sA9p4*qJch1T zM4u9(jq8j(#}NA!=a83InK~kG^A=7ng#p*$7zV1ABGiYI>aLWfW3Gd}M)d*c2G?SD zURHmCK7{SvhU>^{RwV(Hn$R)Cv^>SlgRwtEl~TvT;NLDDl8;Ei`Z#p5`*tkmHO%X{ zN2R0Qb@AYd64U`4!q@6`k`FMq`SRlbqq-x2^H-p05i4aS)FT*kCXWIdA{o=>n^ zfZvNdbe*<34E~Fv9g8W@6J0MFF?R>$lA1U6RNcT+RZPmJ(k_TQ)lmyNN1%Vc+Us_e z3-y46&|05ez_SvY&l)Hru5ae{lXSp&4_$5MPo=RxKF!&?0~dx(nEGB4fFFt3pr>RR zeS7K+>^nDNUc9^K>!wKPF2x$5mcZ*eyX}T&V=)h>J$dyDc+|DyRE@ePu@Anp243TY zK0F;N$RwCU()nAzu$G~oy%5DUW{-ZGuA@hE(Dx%|5@#=pc;xw7WdHP8ueaja&#L4UT)i$>xp1(Jx`O6AkuNI+m>MwK> z>)72?Z=ste^p>2Rv;dFc^JI(0{+%>7ADNFtAJOj4cq8yHQK}ljCl8>HeJ>oDMZ9XL zxqPD(@o)9N^mPGS@ZAhvyRJ&~o1dWhd14>-Yi~rrmhH%s%d;uX@Zr4cO;A>ao@?sc zk)(^f_&AIs$t4}SBF);`KJ;IC+b$i^LmiIiqG(*VGU~n!SuSH|(n#eMj#GKi9SsjD zd({JfCI+k5g!`ltVeWOqgtA2PRgXbR$~u8u`N^|>#4m+RvJV+)o&I)pUF#>PtJk;=&(-r(3(REqGu~=4{EW)ckbfpqg!x4}HUD zc74&nE|dHXe=X_@eNE`6wEuVb7POyOyLy9ncl?=ETtU3+NgLd(4xYRFMu6y64(NyO zb=L^^)uAx!<_|sSr`j7bO!*4^r`AesQzwzX+dCREu%0wW$l!7kc-Ed%YvzYAcPMPi zHoqS0bx&~mdFXPcFHAM^u>LZCi$9}49Ix8LF2zUtug_?s(7>%MGSKhJW(?n6)@gA^ zyRFbY?OI+O{eU^Kg(0)-&%v9Iby~zf0lv%oyrZBN`Cm}4X`wBL*l}%$cBX(I#gOjX zS!V3dUoX2u_<-jgYNy}l0-uR{`|y(+>VFigGk1}vE1h}c2Vda(Xz}mt+X|m{!usY3 zM$~aV6Mj5H{#G4h^)>;HY_1S9`FR0$A_Jm>~d zMH>opi7nNq-Hk%f3A}RjBj8)BW4R?7`XYzCIT5#q-5BwY=e|$_bg5mZ-$wu11O4rC zD%(%!jSi*McRxTEH_ND;-30zJ@Vaq`2YF_4RM^(Y1m90%{}l(swR6owbP9j5KE`z( z&v9Zt#@9G%kuKmn_x(}PJn$!J@BQR$1$}Wx36<%7oTtflFL~z>d`wLn&oaRG5`Mpc zKPV13S2tL{7kcQluajvsQwkaA>M$@rmqr{E?aH%`!tV>c*N!8JXzjkp-^QIl-bv?1 ze^g9Hya-EH{hLPEUv%0mUCkg#H;i7#-3G4Jmsn_qeieMsx`&fMPx05$wuaw9-{@Dq z6#iW$8+N1=K9%I6{5?PLeX1gbFHwLORtwyVa(IC2_D;$%UPHfTd$IhDdFYmxV#?Uo z5hupX%zkVH{x%%Bc{&Nc%6VCBk4f;`<rY80eZOv3O>iHX11^!a>0k_r4R74{Fx43Skt`Gul)aK%Ht%aXU!P0ULdg7hm z%o)YmSdS4ul6Gyv=MEdc)q_6uZitR)7yJwkgRU>{B2NnXunT-fzPjcTx4Zs0_CZ;J z2NQ6VRg3Bniz4E~aH2%KD)6+4IlFc%^pM2gx6Epw<9k|dkixzZ>Ns*s_9^Pxfox%q z!DDqQt`D?n0Y7(+mxa8;`}VUuZ~X;5$M%)WZtxDdyhBVOC!u#n*lNFS#Ce@BtEM*r zA1&9Kv2_4XTDKk5bVYt)GJVDHN(c4dwS#ob&|Tjv&c9HHFFAHDL+*Ph`cs8lyc6*A zs^D5mQ^c(XX1(OJ&8Wi<-j6l_ziMe}+&W!?bBEwWTLrIll5ncx0&ics6Iyf}eQbRO z!+$DnV=mAW1$l4u!z3-AzM==5&rx$I_Y&gVs)=F82M*k?nZq1{i{QBmVIH>Nc|~rD z@8$APFI^pGLF*C`;xIgZ0lKu)9l5=6b?CEdn3%mXmPLF#lzB4P&^I_5eK#0-hbr%d zm*r{jp&9N_r+JNY1o?-9N1VV1=XWr>SmAn=iZ4y#{$eoyWHsWGqlt(+$1K*pbhx)e z**|^ut4t*DkIr!YZJ*){qRm01GkwtiDC*$mfO<9WmeSpxC(?+ImD8d3qNtBuQsFkn zJf|hS^Sl1Quie+GTOG85ezNNekL5yv$G9rp%bd|~sbg?&oGFdyBraS`*G?vEQO9ph zVxJ~h8^%9khrhYm)t(J{?}q0J+k}8aUj`4_?UYMKJlV6_$B;s%-zKUXha{2x0y<(R zoZurq%^h$34gHz2Jn|v$QP1xG&z=hLQZ&;y#3><@BxS`0$YC8%>xraqjM(+delK`(k{M2UnCDK(bym4ND%q&aGwhQoS zdw+5ALJab6fWp&{!29dX3WXHTSWow4dBw2a!*euD4^4tsJ}?~lDVssgzbi00ID)x# z(R{~?z;8y{fk@;rB#pL~bbK{=By`>REAyZr#$; zv_T&JlJhqn9D}Y;{o?Oivo7#t?(feB{?)1c-w*9l&nG*5wT<`XW1R|UH2dnM5#<9i zbH||*$kcNcgr6xH>>D@RE{A+zf=?ievMa!gw z`ie~Q^y)C9H}Hpp;?0-|Gw6Er>?ibpWs~!@bh7_&=UwBy`vXJq{&GL}(jq^tUV9WK zyAS@avcElrRG7OVw8ppNFnH!EdisCoVYkt5n(Mj^zHaxR`zUlk=GBl1gHhzYm{yNt zh?nuYPh`85Ft2@oud3p8te;YwA3}!cKfJiBX)o|>B9Hce^S(GQLOlB!*$Q54Z|r3c zJjDAZyZjn-61hKy40Z6k8wGN^Re?`YdSyCQYGIwGsPGW@Zgs59{!Qo7@A%S?R*yl|m&n8^CUfgO0pF-CwFFNpg%@p0gXK>#f z9cEcxgKx;tJUqx2hW_g_e9CIfs0RzbQ*?35CP|l84fDl-+wcA7aMM16r233WY(pMa zIrCq)DJ}Biw+}ZrqA!4hinh>tKlXFq+~t4ueJeaOX@`s2|qxFdyQyfMVHl1ts)icS)CG{9C4aldYsVp7-Mx z7dz~?=<-(0aC!XvlHR+vKAg{BuTwzA}Z zoXsNX5@MGwM4%SDQ0}?s5s*PPge!njF-@nFa%lUHgxOimG41k zF*p8UkCw_C^fQheo|5rQBZI!-nNrYGr{W)fIKr1j&K3-vG6+X~S#+>^!vXNb?2O)? z9q_?>yrsYS1LvV$8m&8mI#TqO$cB+(T+i-$x!xJ{owpY9TCBp~Gkh;04!WlLd@``(3F4Y!u7;_Qy;nt{$L#SUlq+T-sg?r<^zaBdr~L5T5`~5 zH+kmq64r6m+uMoX@VShRPrsNzXR*p{**XARowB=j6CLnXa1iZ{0bAf7D()_yZ-`UU zSxqjekHjibubKEGuf2bj*QTFNP7i92_1*;D>OZS+-7Jla6-gc~WJo2n0(x1SgpY^p#;d zeEq6nliFh775r2H%2)zDfH*7rx9;2)?^ce9;`>Gv(z)t7^@-e&0ur4hGH|@OT0Q@YzqW<0iyzM@_mRkyR z%4GYF(pQ<}yOfLDAfBrR1Gj9VPqGb1AN58`hwA(2#}e+;b$*6E zu!7%wrHK3EHzLNk;CIRjd#S2)B#*3L)BE;i8+4Mt@itbXIplC<;NK7J@L_FcX#2hq zdH!^o$+|K8;kWPpYBoeZxnO#t0XR>Kp>I8*5$hsIa#9`p#OVC6yh}6mLJ>W$yTX~o zwy@>Y2k7R#ym~)BB46a3?0j3RjC@eoy1V=X>fS}67G25lcPQxF{6l+=FiG7~&>i0webdo@|P6kH!5=tHlQfk5PNyo3m0sJ;v z9l-SFF??}X6}Z{P@tj)LmL$NJihAB=X(0boKPm2M1OFMxwJqP>h(0VWt^@4AFIo(( zj0xbY4IvKC+s>jtSk7BP1$jezp@fA#54zhETgHFqgK_MVVCJfUjze2HC%YGYE>nY| zfpK|6Ywo$o7VHN#w=WKT=)0P-XUz#^f={DZb2PXLaZ&f}_HkC==kRl<93JG6Ge@0* z1$MztV?U#Rb`ZGL(f+SV1I}|R+0tp0PSl${T$q7D&fWTM(Rc#Bil-CX{`ttLYh9J+TCo3g|7xlI zAap?E!m-L_J179Sb z=`AQ_hA#PG@PH_;_pal9$%9zWrZ1lFr-qNSqgy@p3HpOXCsyM)zG(WMgnzS?eAL2Q=f4#S_6L>GHQjreNY2|_c-M{1Sw`hi6hnjBR zE$mOlAL4>6;^@EUSKMm(68>G&w-YbS;aip&lhHyxV{9K~Q2hp<*6rBTeR2kjOvJc|8$#ZLNd zI{ch@%T|*E;Csh5ZuD2lC92^q5w|Gt`JbgeKWN2#h`hPXH*(I(zjm7mZZl)N)QW*%0(|aTcFc0q^WL;ZNg* z4%{MnbW8~OlUL|DlRVC~2|0bF(h2?3U+Y%yQG?I1-&SPweFz<|VPY*4xNeHp#K0pJ z_%r31rOhv#bMRk zOVEe>{?=}P3!Y$-SJ`s_eDJVMLMS!rVU0i9W{ZHU)IGOF&1R4l*O4DPzo(O!E9X9a z!8$(K!kOVNn@PmCHXn*bJxYhiSyE^t<^V1=4XA?G`l@+^!oW*fo@m)WT5$?|jSqtI3FD#yLGj>CR((y*sVMqFrP78^nReM8R3xb#Kn zy}mo!3*cMZQ9aZ2G#>rW+AO|jGqA2~dp+Jk&(0Wr(WI1t`TnyN&A+Qq=cikWZ z{jug-`sZ-Y#9OM2+~_p2hbeL@8F{H@De5{8^d_IF>^*8t=#${HyRwe_@|xE%wBkDW zt%~mWpWV5Jd!o3-EdX2ckE z+}5-kKY`CaR{S;pH?MfKhGy#|`hGdCoaHJW!Z{-LZC~7$pa-b^RpI=X2aM0l$N(4g zQuJBBL_M#Oo6BJKHGIx9M(x8ZsONNXU+5dmBaJn@6wwKolP>k!&|V+B{OAdJd#tl< zV^3?`CE!=Acl@dk9g_0r`A1XGyWF3Z@zim`cO%~@6?h!FrOOnRdo=16Gq%mV&^ZTA z(t5~4FZtT#ov3sui+mdO6vt|KVVf3&DOizIye!e5?@d7)m8)9vY~gF6{% z%vAzc)jHfNKpdh?DzlO0$srbJJ)MJXk&pJCwPZm4W7;o6@AwCJKF!Vi3F1e%Sh@ly z^s0`qX%1)bQqy&-+;oL3qOiw@NDiVOn(t2cUmw(8s&n^m=*}j`xHxv0e?dKY!Mk}g zcwJ;h z`T^6k-6FvnSU0PJHi4Ufk3P;6azQ7)9R0UW^f`FO8Menwo;bhvSI^F5f8hGfA&hrD%!~dMtliHC=8sxG??7pTF?X4{XCzf!Ive?n%TBwVawCNrizne;uDe0cq zV*L)pNbY=UjJ)M4QL#S-`uzba^?LSHqJNMnW^7+7cp0?dt9wJD1~0k@8|> z$T#R9iyvEyQc$l{_1k(z8-1%KEOhy_z|Eg&->kxaSbtNyI_emF&mU%M`V+8kAL&)) z(V@O#YjNJd061XpqY#e6$z>0+-4 z#PvHe*UM?C!O!FPC7(i%m}Z{&wVaRsNqs71`BT7O^G7|zbC4H4cwc7F*`_RWZ0O^gOVzN(%dtB?6!@~>PDZiUX*n|{I|2kX*HeeXBi ze~x(}%UPl@9Y=7Z(C$+Br%^2|RW0?^~C0O_B zO@8}~;LqBk_=%<*^@GMcI-B02{t(5w?*#OY;vt`h_Ttbf1R4*Q<2u^Y8^2x7L0qQb zU)sPUXpxt-?=7XB!ug2MY2w^OGIxIEv2ytR0Wh8FzOL%ro$tpVm~y&OEX zNC})SJbiu>;=|uItfq8FgH`h$n71_h@J-RZEb`$~`GHCJ zf#i05c_|CLE%)fh=OEx|;kz4;Y{tIa{rYpt&OGGXgtSNLsB`o_melP-ezeN1n(WcU zKAzxacpv~=_3qGF{XLi~|22@wS{(h&G=uNzj-sAhcU#5}^AMa~RD{$2MZYjLx6(TL zte7aMF6jwFf9UVDEyBDxa)p2KHgKL&nvv=`=o?DvN3PYn!RM2CE?$5ZJ`n@;TOQC4 z_dNUDf3-NBoULsU=u*odHUn2HQvKjpW-gH}1s<<=7=G!%pHB8=+p}-`fxPz8OZ9YU z3Q?;%dam$7GUko=SNYE;l3iXD3AAE~Bx`w_;=Qfuq|&EduqPirG3|-l!z2as%Cysk zPo)tL9WzUFyhbyBud!xJM&E;<5zW^mqGY6@KuHIG_}$cmzA*TRA2801pUZ?l-h#&j z`MUm-zC{jj4(GHpm+PBUlCsMAj_PqT>A3!ZmjOPO4;qo&1bkN8#z|442L9>FbEjQU zZ#82zqB_VAyvWA1G{%}k3RY+~TxUbx-k+q#gM6m*x{bz9={<`U?8)!UA7t6?3k*;c$lJ^d9gnatG}uJhW)H>$vNQ+T{NRA zxXukclSa-=Gy!^*ecM&r7Wh=@=7md;*9B|t4&*{#A80wt|MWHbKv+%Rl!JfuEcEz( zl!gw@m5?FZ4?Ur_JYwoi9#M;p&M4lUM>xfFg|2~j85n=vx$!i7VVu-gpQDbH_??G| zKMZ<$?X8L}(8ZlO=+kWQ_gl304JvTqeZJ6CanZovaNs|Y|DbyX8Hr!f#C|ln)AyHg zC+1KK8Rt*qeXgr%iH;Y7udfs|tnlMGU%zFu1ND}yeSG8{4bI=}c^XhIno0aC?P%2A zpwDFQ*E5FC&<{g8awf?KmDtRcl7my z5a&hW-t5W6+yVZkx=t3%%gN(38yANjHyp(55QMtc{M=6+)pW9UPZ97@%!~>WFB2eBU_4Hcb+Z-&#gH7X$N%gWyywD>x#f52S>84n*y-)M&13U1dQSAUHU3To>-0X-WRw=~yVp^|dhPV@Sut)7pdpj>m`4iMy+djP(H9oCdE3J?m{Z>(ZL+Hxbz*UkgefiT*Hb4_ z`QD)K=G*hf7e%p8Qaj^6Z2>>ZV{@~vM}M=}qw3fu_%V;4<+3Wpy!e9*v40PM7ly8y z?m^x>C+VKV77YAfFuu(II?TX^_blI)fOm~9Ox%Y4>s&riZSWm)X1G+IZAKh7wBDY) z<#Q(d?NTQl8IV6&`t!GMgs$_YyD$71`q^|Z2eX0aJ4SR)NrqtV(?REePq?31hGWvV zPe6~+-8?RE4E{3nW0mo!Zx_#&o{@Y3-6cCT$rbU=bR}tLBk+?YGwV@$clZm%YO3#| zA8oq6dGxMaE}7>2@i79p-XZPppYJ^2V=-c)yB?!n%2pf7Ukbl$hfTD_FFcR7AVw4h{)l6Z7nJ(O^T3<+KUv;J{`km4f0#u+jj(y0q_c)Dmmt>iL;4o- z*oXDyhvm}^pKwKf1JHPC6Q&}Bd;w_CJ`R8FXPb#_@uAi z?Xd4kA?rS8f8RKqLY6!YdphKxAD=A9l0FVTWEirK#=lSL8_J?EtFsWZGIt1Rb^pdU8`#b8Fl4iE{#ptIBG5Fky zek;G&E~5p+XAA0tB5m-M2bI;bOx{>m%)cM_As>CMaCf&9`Ik=u-mD`ZNz~lrR{0A) z!+Gw5@hdz(pOlXWe<45RpI@++gg)Yto*2I)hwPL0qTrUt{#!n-+zUR}r#O1m=PKf! zaB&yk4&?8XLGK1}{Y3&-pWZ_}ERawX*bhCL7|b{fYvK7$^B+H{3SH>$#`;rEz|UQ0 z6^7A&_Q*cTYAe=%%okbzfc>ZoE^b@@guI$LaK8KQj~r5x&_ZeP9Qq(tpcLcQToUx9 zm$Gjiaiv;7L!}3Gx)G5)V_*0V9`b{Vw6N z(A!Y>xxZC#Nesfj@xyhADI}9@we^rFL;w7))wlPl1fT<(A01?eZYTS0VO``C^sjqK zp1*;=eGV&)lr7@As;}<;*LN~~yzpTr@F>xz?4|%u^Llmk`8|Bjmh{3tdDOY@Sov>j z&`l@fX6csqGf~&sMkS`a75SpiT|EVPZ~HlwV}8&)0pDj2Dwe zPGf&rU!Hjc-NJEjPn_fw>bM!-PTu52{-t01e7g|+C#EEf?;iRIZJCW3KLI}$ha^9z zOeI?U{p$N&Fz-X>?nR5(RC2PGcDEYl2g~?wlbULV&uF*cg>3ND7KVT?$-uFmKVy=N z+|r1}``y`@z9~2-@Q-}IU@FOCjid~bOC?DccI8)~uKjL*#-hY-^uLvgwPYPmC$Z5L z*B%0|W-aaW+cKX)R(s;!2>L)D3f`0Tb?oK=p_=PAH`p-n(+_o79E;Rik zdV>w~C9WB}3i?dJzpo^2<(vr}av*~9@qNVaPaj)+!H1^zoj4K*+}Y3^Z&CIDyn}Mv zRc~|X)$`*Q1vUY1PAwd6NyPUSFe@v7uErVYOOYLqI;iQdZ41#kNq^b04o@72u6Q<)c6C&Z}`Ule8T(KIgCXW4Prg9c_~d2HDGa~Ml|Qu{+R!~u zHS?yQ%O|I~FG%r89+^8WLgRG~ev%;P(9LDYOK@OFZo}M) z?o@h~s5G*CvUbE9JlZEPNB2k$?jt3K?^-qLm9}47x+LIBZqs&rH4WX~(#|>JI_6r; zpZT%Uh`QqOnx*j-@Ux?KO<#Xw&giF^yM8xQNDN!JzVQAuGHUF|$_3ut%XGbb{}9&S zhkmv6U*Id(v_>^Fp-<|+`<|xk0)Y@=j+m&Ex^(r>9Djm5w8Ei-&C0YkZKjYR_~DhPvlXHx_zJO$CHWaHfHPUDB#N; z$%fxvI4>sf6QhJ9=I`m2ubtTi{_sBHo}&l)2D(j^wvK{NpBx^&xdn9*BiSu_ct0%* ziX~md0a=+=88P7Ch}Uejfg`De(Jqxw*CdU!CubSfVg9O;!4)eXrZ`d{vRGV&IKR*% zk}`z#TrK|bzxEmUFk+v3UWTvE%G5Z+75suRmHl~#B<5MXZ)e?-1wUHG@ofHX@S_rz zf^+bZ?%_J6eE$S=yMo6j`+>9Wx~#lo6$H-~w_}rn&Z$LjZW-kY95;S(`vp_@WPSN!`{iy#wDpxs^=)+~;i>dQY?jqnNDOn0$=dr(xPnU_i@nQXa{4VN>I*{+TlLzl^22NUjwpkAN zw?xWtxjGuSR4QrE9(sn^qx`gn*TCBs3NM%IL0{PxY}QkO&)a0*akvmV3gsBpe&`5d zO=@{w9N;-(2isl2TSSI>_{)vZ2Qt_8;8_Fm-mS-`ao9&Pmsb+h;PVO&W*^@ofI9D0 zcil;T%vnCxb5aDjUF_!GwbR__C(zHbGuH)Pe&x;4fVn;;85tCbD*1#r;BkrtRUTm| zcHCz%0zXNsy3*<|Tu<$rIw3LOkgD;_*bVTL&}$1^55)bDXi)90_}5pcT4E*xT}EHc zLJK^J(cpl&;AzBn#udL`1vr0)%HRITY1F-fD_)kO?&CTChF=b^S>u##=3kJP_`0GZ zoe~L8qW_U4?^HrmTb{VU=cl?pB)RY<6?0O`1|Gdn!aNSXKTU5ipDj+rqrnCH;F;OE z0`#pYDek=;wgK)zuVmbzN-9P3nm)%n?6I?_*?~M|VSIj!2fBNZjM5(H=T+=Oahlb@w~gN`<_q96`+mBW zu?#-rR_=>?gP>Qc@4Zf2kW2*McUW=gCJ~aKdn?5mb%ID6o)iC%qn0IsM$nP&L~Rzv z{S4nt!!!f^*{UaL>Ew+}@=;X6XZyeWIn)(l$b)m`q-yWP!T7YN-w#z4O7jyU}CBMNG*$S+ytN0%zl&yleIe6a@3 zd8oP?HmnFfkeS%`LT4It1={Z)Ud)FM(@JBIE(M%Im2deTb)%w%aT-SOir($7{PLmu zQ5PInQKf=Tne{Zs9RGgk@9{c@8ozHgZTbp4hDWk%u|5X@O@sJEhvTGV`t^0 z_HL|mUOVUd`}qBVl$!TVs1wp%JaKs**TGX*a+biaJnbLgMJbmWoV^ z4>S5BKX=?ZF^&1`Uxw^TMKO2($+`JpR?M+9<@SxLgnnQUwl-r8yu9JOk}mq*+e_1n z_a8%@L2cdUGVTj!_x`Wj`{1K~dm#0$KXi>}o79AEr;=X#uw{1m$(8gwj4JFfFQ<5= zcg-x7m{!Emxc-PE#T%9%9S(>mzQ053<7nbZ{g7~rKrQC1(YolSvf%Hi-xSe*#T>&f z9{OX6N#tFLU)s$li8wzkjV~xDiBMlM>eE(9CRO_%__kwyj+}~GaU>t+ON(jhmxm>h zYW1Hs!>RCdG*h~Z8DbvQmIHjTyOT+hWCGo-oza$*n_|yd%r&|%EYePi`oT8! z%QP17HEumyZ;AcsVCJ-?3pg%Py8N^s)~jHb>-tVQ;K-ohpgX8nPUU>rZ1W21!qTz% z4|v(0ZEZBlH1K_078n{2g3kEV@=`qF$fe4ar(V-@FcR8F>DtR@n^8(hbHy z^EglB_a$l3XXq!klO6mJ0=~3A{VlnOKHOV(Hb;abKKafYen37BUx}H&n*_aE{5Mn9 zOW;_R?FQQk^oAgwI4NBB6P2u<_4n{`>E6(Py&3hHt*&7Yfddwmcmf*<=Fe^2t?QVa zN0Rvz3(vzZp^)|MqfG(klDqk))MLNjO0v`1c|Dh8r?N`3oI<^D=R_t0`en1M{;QFH z3Lnh7DKk2)3^HP9G<6p~?(@?(cJ|)OCAs;bGwxUNNz&VnfELuRBYayf1?+(CJa%ls z;}Gl6up*;RuvSz8qP+7x`R`LBWEI{G5!4L^CnN1uEu>qJ9o3ZaS;Dz8eb-_ay8xXxcFF_uIsW`7UmvnLaJyRj^3e6J7N=94mb;iGynY}aCr z^S>y=87x`TNxAW(x3cW6~5zyn#U6W_c9e`Y%+HU|CA zp_n&K13di4C$49SbI|Kl8`Bm|!9R>vU+zL(fTz=x?+fZNcMdXEmuX?HGJTp#Tanhx*Y2V zrwH(^+UJ`+{BRD5U*bDA3iRcUzP}au2z4U2eX&8nyY@OxV+Ww$)oHR$%R&Flm$JQL za|!-9eoMb;^y@Yp{Ee9kh!aLq`-piS313zhKl29jwjS^uqU%H-iDaVT;2OU7u5n!z z_>f)PN3);P4MK zuls>lpTnVd9Ilt4M!k%tNV0A2HgM_FjgLB^R~Vf&n_{9#B6ZdWukvCZe*ZJhjGu)m z#L3C~&@1~S((7tJWn!K}+$Y)u!)wyX<^Y?KYQzcc%ReW^&?lxE%gSWwmO_eht}yV8 zrr?~Ya7o!08RW-nUUtcP{J#1|hmSblGt;6p^jBjl>G^iN_@_wjOIAMW&S`gq;*|KsSoM9MquO(jH%R7A-r ztL(~1gb0P-`TqX$d8K#o+~?kV&bjACbh)SDyjHvRRkWoLl{bg75?PYSbJn*}?!CYz zmzuAs1nyp<|3>m}R2s3P&Yk;oJe@od-YNTGJ9HL4`3vPeX(aes?IA7X&tFp_MNQB@ z(2ex00t9ehy4VXOOaW)fC{z9ae%Bu(2@V%f-#luQ+U$$D^}tTyuYvG4ko>!AJ|6Yz z#-n+4xZhoFe3$J;UHQJ#JM~r-?&p@P+A0yyV{U8PbI=o?XNAGVe16PNiDrbjA@54= z&Sy)!20pe!_VLPR=_IShU}DWm=Z(cPW426V&nkusC!kZIi+Q zOit)}-bkpQcnDs&(Q_~R>NN7CZ;iZ$4&uhP%vB2a`TEZnCHT-+m<>z?)Rn-;^Rw;J zkCQ3ne%Zex)%MUU_ZOEgv4&r~1M|}~c-*!^10FxbdBxSq!%x;?t&8SuR#rT1Ytx2>%lI!9W8%MZ)1GvC1=6><+g2c=QT%LDe! zNxoFFR3d)D`Z1MUl)A6zc8^KKwBK6$9Ho)FflgCT%IIXy)2d3F!6e)>z0MkP45I&- z)zv;V3H`(J6N@>}Zy1DCv=<`}Y3RzIY6h-Qer`vy3-Y(P?cKNx@X$TdjEYPKv8v&h z&1WPLc{P(PUp&5lTwwk`ecCnishS2+YMtj zuI!}|hI>%exn|%qOSYR>o`mm@8GRtdJcEQuwy7`#Gl_%1{-q5m*cZ8kSM?7oe!o}i zuN&H@ki+wfw*+i}-+Y)<+l~IM;&aip!D1%)bE8V_iURP`_3wCm{$U^5)2ah&&~NSE zEO1*H_23xGD)XR0_`T=rty+cql-Ymh?0>lZMW@80x1%uUc+}tx7tU+sxxk6$N%Sk* zYTgElz(2TE__`GGSj)A)EPp+Kr(ZW&=5ZDNK}ON-{m@%rQ0Cqz-207l0VS>Hfm;Xs zNLN8#;5O`$vxR?9>tI0E9>k4cb2YD$S_U!Z__Mt35%iZk!+urohc2+Ay!$d8drKo# z)&~6pFHve$st(;%jpEA<+tDAL=~@|41RQ~;I&&Ydn>+hLq&Z7@=-8tt5oK>b`*OhbY!8d(8kZ5rq^@Ezy z6LHk7GbdeKUcQ4r?5U$Qylud#9fkVupnq<4^w!nwC0O($-AJB{bzzxw&$t{hT1ut{nY>WT)Vm}5)0Q%QEd&`wub=x_C{ zL>8=Z5Auw>GROSLhi(2epI<3NR^3ue0{Xnu$q7}lMakq>l7jG2^bcp^uYK*AK%QWe zn(TiD{b0m~!aKl6x3k`vEw@Z3@%kT52Sz3nInjpmqmAHqTb++?^hO^>pSN}sp^*wp zQP$7!&-Svfb$ENPR`XAyS|S9pC=L}^4+ zFH%GvdoxMqto*K;B>cSG&DX&1{Iv9LcKR}j>A!!a-SE5rWhoWNdq0J6u}ANE7LWW^ z>1ej$Bb{i8mDa6kq!B^+0=LaMOu~5byLl%slgK^XsrzpOjYL`W^6!>qkaIm33n{$l zyS6&USuRT_b~>%ve=nzy{YLLQG|Ygsmth*xk5a3BKS;N_^Xn{>Q()lgs2lyi^D6=eH?kkowJ?o6p<^ zkH8aQzC{JRWY!Yy3E%_8dBL|8!8!S{aeSxA9Slh zPpIx47!5v2DM4rZ`u}*LHB7fxd%?f0l)cmloyM7;k8(cae#Ip}}Q$umI)^KA1WuMp{59Pek{XrpO1I$?YrBo7gLNG636_s?mG0kGM zsboBPC~mtum4r@LkI}DFNux*Tk985KC-+GRevG4%oip1ghHX?5@vp?G9rd}jMfZk7 z&|jFDd06`WOD4gWOAJdF>125J&{8AdmNl4I-Tw}FVsYrdwT)Dwet336Tnm-l*7W92 zzegq9nLerGwp7A3xoTiEnMzuoT>QY{M<)nyBAKuT?LJI_esQ0|`DXpSOyV?B zzUdk2U7Pn3`42J}Bxo>?Y3!Fov`1CPs>_kr`-9Xbhycmmu)auXSxq!uB|_SHdQdI1N`Fmw--TR0x|kB-ah^}`>q`B-nC^$y@$Fe*_Y(UvCh0kDXMo4$fA9#~gMMy( z+|0y(@#ZUW!7vE8`I7WHBh*g<4(u1A)Pch#-4EF)jQN<4ecEQIUo#q1evN@QYBzon zJ*)%VgF%ul>_TE7805`zGv#fxj;lVRh( zz6beNizUQP2d^73GhQU_06mC_q3e(v>O@J7-KvPQ?Yvi~VsS3zSLbYhfUoJH7A2E7 zuPB^P^qTux$w(l6@ZALw2*?V9;`s|8o@+l5FzKklKz9vQ* zxovApSu>PIB)V5ke7c)LI4dP0xPb#|zS-}icMWxKdb-C)Gdyy`=l zK_>Yf+X%h&*ib`v68LND=F>|oRe;mJ*5YZC08g7Tr(y~{@^-J~?`rk1@4z#za@{Yy z&rPB2&!sVM!#-Xgtc19~f9rQV>dDr0XXFs{%Z?HzJivXqbydu~KBSTxKb}&#bby!2 zKb60VbL2sCF60YRiBs?j)zI4%A~$#BgvK=rxiYbJ8SesxkPa{LtqxSu`-X4cz!Pzz zYUg`Fl}e7g=$(4HNFkfI_A1?2OC_53d=~V1%%W|PuQi;OUz_t)`DtU3)WUPNB zmGDL!&0e8~e(yo-zTeU*ME@**Z?8o%k=hx`{fx>aJwF7^AADyJ8|M$7gJ=xWuKzOJ z343!z=Eeo+m}9dEx0>p?4E@Vy^T1zwlS$NS%FQdU(RaQK8R+_+NJ3U+XkS{+B<$l( z6GvhgWNG(VM%q*C1K`?vBL|>tGvP|iS#~m-TVf1NVk!szUgt)#UGcj$Vi|LF-yqQ*oFRT zUGx%{Smej1#2cS6m-5EyGxwY#&dvOMW4H_S*skT5B7skM_PAA-qHZ0Hlv&XR{eozn zzUzPem!N+9#V5eIG_zLi+7bl3jXYN?i%Tax6|(HKBhXn^<{kBWhd7#0OVV5h9f(z` zvlDo%)|;kBqcafSN7Wq4(9ic?su#AT0KfVfEXL=L=S_Xtz~cs;iQvMo{ayGu9{D#p zCeW!jDXi}Ut|`De%75%6_^c&A=K5B9h!10_T%+e?U`TOlSn!tAVOY>`mA+8etRcwi0?3&i0B6*Rhw6X4>6~y1AfZT8@wHKmGr&ExBia zhxnffsy>bS`E`UY=S(UITmNWB_nUOm@6;w~hI>ci%YN^#+oA7m9VwGR-RMY9%{+;G z85!FZx>%b|1|k)mw4w9&oys3>MIXz!6tVF18u+C9eRV}L@Q=APny~2(lXz5}KM-b0 zAw7;#YeFUxiGwf2Ja#UT9O@2f*SU+h`>D6btDJ)U2&TPG$RErTJ{RszQOKR<+GP^a z6e9079PNQTM?bXtwi)F4Y7dk~imC0%t=R8l3xHMn3#B{OxtF?Hav zML4&psRx4JJ-~Tgtrz!6um6Q7hrvHboQ`w1qGB)5N0x_s81OY_OYj~^CNDO!$0sL% zKX)GJxx@tTwMskd{bRbsCrUm z0X%-a9iA3mk!wYTV zfh(EFmmD0$ehlu=xWbDcF^}r@Y3r~Lot(JyI2<$ld|13vfe{w z=_#`$64Al13CA4MbG|^%kH*k5m&EwV8bH6&B*aWS2mgdGH|_c^VXiRXS@}1_)r5`M zv~yGjaSQy=ey|L@`V%hu2J~^)+=KTXcmEZDapw&8>Ze4%&TxN+3LER$?$+J4f{9DATr zIs$H$0r#8_R<8emeL_A%j{U%OUO1m#!>$D%qv5RKd+xw<%6h^^p^vWpn(#pVA@bls zrQaVPBOhJ2EI-(Sx<5qYSI9ZUS$+5$o z>6AtkZ`Q8#0{+L+O!=vbb2I+<`I3!>bl|5dCH*W^VyB>VprARCjB5&6SjZ%jCXIN7 zA-y;f?e%25=;JhVYqv7SO$b)NJ76{nKQOIzumwo=IzMXkw_NID6YG<+3+J}|3A z;X&Fv22uUXc>E3cWM2EL-G4KwBWi1sboOs^V)FiP6I&oglUZ8kCciTg$B z!`s{}LF6yNpZ3%e28p4VyvlRJJoeRB>fr-4z&`9^PsEWIh4#Gm20vI_@#eMT(qs}| zJhe~dJCpdVzDc)&pH|F6XX#}rsl*^Jb+a1oas43L_0?I}Gt{2Zd1VgytZwg_bC%%w z6_?pA52cWii`O>!p$_Ji7vDtRNr!*IK=o5Y1{r$B(5o_GlD;h-nn_o1FNDfJu3ec- z)^(qCXGVbEXML!@P7-^ot~tFmL>$k4ZeLrJ3;mi?NGF#a`nX}Q+qvM8m+P~Sye~nV z1hiaTi~IJviT8G8PSlsft>?D_#}Zkx%taUY)xznGaRmCH%A_o@i<>dO`O9x#IO2@- z>^ILs-{DLPaZ!SvL10hEW*^|1jP?tJ1#x0kwl99#2KlJp;QSQwjl@NdpUa@1i8i{i znVXVMf~Q8_Z`lLfyJpiG(c}!m6=iTe$qTqECnY5XINaFg)RUUPB?L2bv}!!zr>f{( zd88b^MciMcC*9J?vGWFRqrq3TJrvWA&O_Wr8Z2Fhc=sUd1-nw9!<-At+&P{~PHud- zJntv^j}?*w9;Z<^FUo9Y#KRwzW3=TR_?)FVzYn5;j!RKI!5fda5U& zgZw_eX4f+n-O?=()TBcF}2`j=-uNF<^5u}O~t5{cZ#fns-qs& z$~U|eTumX~Jvt^||4_*I4LVy-E9%x@m00?33aPLkC@lFxAwt$aUr2w%^EgIvbrw?y z%q*f#Anxr4Vi1tQ~hYf=`$&e^_b{{}C0Dg-u78q;#kC+r*#n7n%I`+|UPn zgj%h)Kpb$ykbdicX~bc2>(jJ=6cSaa=OXKa`tYmn6;_=4^e^LYmDe#z?0B^lbr!e| z<)H7G1>j3lu4@>}lS!XNe%Tix>?xFH;Y-ax{oHbJigh`Ku%sT1zm=YdIh=tbpVeuk zzt~Yjf=MUK%^2?+x6z4x-V)ggZ^YdasVj9G88~NJ!S8VY2)F!^%PL`#j*44G^=p7T zW=pNpfc|n;*)MbBKGcEg-(QtU0*AYJ=+L)WoUc3H=I7Cm<+)@Df4G8p5n0+PjC$tI z{?O~exEHuZkIH@C1e|Th>AmTZz~5R{u#U(BFCTY*stUaPVr}G%q#bl2W2=Q?K4Kqd zTiReV`YD>k#eLmL=|oT5R(|O|;8@S5%gO}d3r1BJz6pGUS@G8S?j_(5zZUe~yP}T0 zq~5a#JfXWxQ7QW&@OlZ$N5^qbM3jy=tM=k`Ux$|bX~tug_21TF4$?q0eQr@FolLuH zc4jg$|Ml%>UwtU@iR8Pok8e`QpEZ1@&RpoHLwD}}M}T+V6}#q-JTGx)ZzT(!FCwCY zE>H)(O>BdZ7WxuK=S8y;^rx8z=%=$wq5G8EvE2)K_Kkqd@kci?&q~{$eDZn@vBT!- zPXo{?a%|?71rD=h8QX>J<-n)Q?;IpQQiut++_O<#;0g8XH}%WXNWl(Ok1HKiLO+xws~g~%#vTNumWynny6 zp#XgzJ+`gU2k~pXNUN=gr4Y}_xf=`U`*^3Q78=ctrqlI%$4aJmMbeGlttha|-%Jg|&IN5T`85O2M*bbodpw4G<~eol@MF}GJk>+S4`qOx=D$xCC}fZt zM#Y6)@k|mTVZh{QgD*j=_#h2>$pT@sVW(N}7}n;}3s$HjMy8JZL){^GPT5Qye@9cd zB_$uwx5(e=@>sV!iL~vVe!UpOBxj`Fr*o$ zTLSs`O%?25WTrONGuJN&kkhNlvQfETh_AN!V*LKtb+;$^NSllm8| zzCF+(DldQP`QN-6x78mUD|{XW73Mr}5SLpurEJju*7&|ptwsNsB=xsT1blSu=|i{5 z)*#-$UY>~qKk;Ey_wa9j@OA}RYwsbyE~ImEcz#{*_&HE&r->PsFC|T@D38UK}!Ys(es??nX#Qz5@*19V+#G3 zw)GBfStI=aOg<|coF4@Vi_PB18x8lX4&0Zck}J|zS7qX@7z18>eeol*)l;}~&OK+CQp&*<~noq3~zV_|rx-aI5Jjf<= zG{FY(xL!qZ9pcjCrjwn}Lkf8zpQ@0LvN*g2%Jg5O@e{kl95b8AE2MVA(;=%0B{)Qf{Z70tCfm8uN9<5NA~hC|>Vwr##U@rg-3le6-xYI*~LaHdmAe zPzlS9(f(;i8tL`$a}C4atwF=&fcz0UVZ2@w`%sDwf2r%$tD$GBo=TWCsA7=DiNJCr z_!LPMDI9MBf7`1zlA^gJgYY-4l9cdDCu==2-A-#Djzpyd)}De-<)FKJAoM|UULpP} zm^%@f-zVh-pQ>jaJIrH~zz1wHNco+WNfc>%Cn{y&+udCubP3Pn|0wy2jUxK`6TK42 z;6>uDHC{P52tTiNW98csS8|snH!P`6C4KLU5B;=AAqF4sG&iXM4{5xp9*p{J+hFtT z+(H^zsUUx^Ukr6_Rk}u$7<{GI^zzS|r4uLF;PpC*z$+_nN3@P1-paZ(iB34(wSey^^niy?9OsoaxWJ;P0|#*H`+lWRe+Tp;?D}ft$K+dJ}NQQ}taR z&vrqt*4EZ^1bOy_^r384)Q@NHNyoOVP9u*-o@>lMKp(Z+^2-I_KHcX$?zw7?; zT@ya{<;-`%%NwBQj#3%D2;7+GNzKmJ{OBLnInZ5~;pgt^JR1RDuPt0y!2g{_CK*98 z{m^Ty{ddjWsuuS>wK8_B0)5QWmwY~`%jDlYNk50asmUVHui75_WP5jaj7%Uu(dt;- zc&J3U=sQi|5dPk2o3`zT9=5{#@yGz;;_iz|mh)c|$(5V;FRo{$zz2`TR%j)K+QBM*r}+HoWJPlP78hyMlb*{(g~CxE-pf8=_z?d7>)%>4tDrl+yx`#-%|!oqY|GBf z6zpxRxnze9q;RsnaI7Uk(=t^a2;r?L4Z*ay5~7$+c`Q%R+sBckxmE0r38-_SGIn z{W0{ia-l&;9(aaP2KBk^AlI^$~LuD%E0P(qYNu@vA4H_BXNTGb(B7 z8O~|am z`c6u0#>1cxd9Nb8W+nQuq}HQZ<{rqKOy`8cZ0HS}j+rgqP9=B4W`buufoDkPWOzfb zx6|8;eU~?UB}PT$p3yOPxa*yGI`|3y+;3@7p3t4x))tNYgdb|(G9`Z0t*&VaG^qvn zbk(!{8h?SlGBC!wnFo47%aXvF>*-{?a)a$xr8FYax~#@hJ((O`*Se8a2)L|VlIgH| z5_t3k|0|uqnRL$z3?W|q&lSwXgO5J1%zWakok67EtfRDzVooB$$nXdHJPoZat^C62 z+HuBs~u{m@6=iGFOks7fJ=j$i(T-^6*jwOQ^u^!pZq=ApTz zH1e5mYx8bC8fjo{oE1ks^l<28svejmEw1#41#4Cg`AjTuogS`5s+wM8FaW{dNmaBg|_ZK#$b)xk*kH<)1|E5I<1y!0+)sBaOWRh#FLC3Eb`jt(&EwSz+)tqcJn!Q=?*!d) zL|5g9LFms~)Y4C(F7451cxdz^l`zJt9j1We*6eyRRX3bMxOYTE&~U%ZzUg3dH-(<4 zC$(w6DRds`#W%j7?kLt3l(pi9hGmM8_@HzBvoMWZIG~lU`S-;xhQ{W(M z;C)aAyn&c|{cRiImIk-OU2yIlR{zZR1;6S$WPW2T0J^UYgHmx}Nkl01GT#?II&s;j zT3>krxZ>Y+qw`wHB=X%yj_o&638kRJPs=SAe1H4m?513@^V{*Gqi?|LWxwUhX@!5q z{y@+Fd^8<0t#>T%gTAfbLZTSDmb`QPbNQ${?g&Y>z67q$bDh_rf<`BmS-da85kJuy zb!NM9o>*q}%qI!@!>(DW7tlL$`%SM|k32T^+c81-6Y93CUfxUHG*Yf~KcOQJx{|Hu zG#eX{pGH0eh8q$_+r0{EE=&|}F(mPknG{>LZmRhUJ*88^1=-0X>b`{8fe zHS}+J)yxftMkr+PdHlmJ7ABETc-(5fIthF!Tj*)%?RgXq-W=bGIccHf0u^x@3CVEQ zm4Ae~%(hJUg6xxTX_?a&s5dc1s0(mK2MSN#rGQu-BgReB$AkvQ#{(slb&LDJ z#T`Blot84ip5TpP)R)=dIe0lW73_f1{P{K=?t=R9`CLmG;xgDpyNwCG=b3#EOdBjQ z_hY(k>8(SEH|@-Se?O#=9~$ev+oAsCI?>CgheR~-xEgl@#la7C|65~-ONTJJrRL{ue5AGPE28Cq2<^RGs{itx|*@kKfs<-X-F3k0^KIKq# z)WrUiz0}0#h`)^YvNgY!Bkw-iu>ZnY^oMJw2fPrEP5UP%9e@*6Xx5wXs^a(b;rXEF zci_$at-aQ}vWX*y%(`oc_Z6DK9LKpZ5BPP+E$$xXMAw?{+SP=4H9?koPRz{?EKx0q z-kwcjgoWI5A3*0VVhU$SUsQZ|YOp;T;TRYWXY@EW^O+_oe??Ig0A=U4MfEP^c5~{C3oYsiAFD!$u z|BQ~h5%p9G>FSKl(s}?LN~#@gQj1DtTy9f#egeOctupTn9HilMqSc9f)P;l0PM!}G z62&Qt))V=J=b75W!|=6Il%08qIyL0@1Kp*opkFC3WGLbusDDcF-t`fASF)e)j472w zZ&^Cx1|FQwMz7&U9X-n$ANL(Nz8U50dp_X%XI5&P{<8&-5_ZFK#T53RhABG>7pIar zNyCT{_!1PUOlSH7$M4N;w0^jrN*uX{6+hx0X{-(2co@8dX>N7k(tR|Nr?cFJ|L}i( z=Iq9Oi-{z*Lj3DpD+-BLTIm-jiLc_j4y*Si60=<;Zu-bmu?KjzW_E$!JYbQv4v!UP zl`in9CF1v;TlOdhc<{5%SJnfGir;#~4%ZIAc~eYwV?DA9ZHCmZ$4_5ttLK;*k0x#Mg1 z>8$)_=w>STYv^V!9h@~?n~+8(Lau2q%3;pWxH9zw_^X>$ z56(#L20!hzZY2}3GBH;# ztr!MfId92#S_kUbU(v6`^r27G@cnwh33^YK!`{Xw;2oW=R``THf?n)?&JQEpFZyTp zwbuDT_rddQ;68BD_M$bevA*Ed{7)&nox*(5!5qE|;n;gAo!W2@eLOL;*9kd`{JSpp zVF2cywViU}BEW;3+3>~HIU4hUA0=}PoX`)itnUp1UYdETNFWvbM)#cKMAOFo|Q^!2D|DpN*+AT$Vei%g$-p5^OHUPdQc2k#myG!D$>b?_m{}8W?E)$vn;dW!Z^aLG zQ5&e_s9(l9q6AznhQnj+Ebz`#?N*N}QNL!ECVxerCuA}|ZI0&`HRU*yg}Cf7{(03A z@t&mVAlwfeGUiThx;gO74;$l!Jy55b(0kOx&O=|4=e~!v1^M}j&|YiAb?g%!KL-Zh zpQF5j>o*z+YBudL$Vw*n^(EMa_);<)74HH zyvc#WFY6Fbr{29BHnT=Qt2(0TNu`oC!4mU>6?omu4AB`u@Qf=h4%#AKu3c?ly^MIP ze|g7QP5^k*o^+AdFB8eONeS*$sYD{eEns&b{{dl}HVQ7|!eiGc$sF)5Vw?w3ra}@) zPl(<})w_vAxM1}6X$$BLDtmk#rjY-(_>egGA@oX@2W5A{$8Y<<>!wxE=khr>Uk$^Y zhf1f;9kw)Lj)eq|a*?0MLI+2Yj~qfBnZn%I3q4`TE4l=}peujfIB*|&UHR(4GvFEc zt%fwVBcG4`+t*#PD}~6(Es8rq$0jcjQ?VCu#acAKG58DkX#s^3j}3uWj<`Q^GsS%W zG4={4@NcYVi?}bNew6EcGa3XvV~p*eOFQxNNuN0i+#BH!@4UEP8#u|Hh9w8TL8s_9 zqwG1N4*eLv=;x(oxDWUXj&S1r%sy`}{`d{NcB6gEK{?d_SMSIb=wtr3Q%dua3;fze zBjlM5z!UQ{)V$Jh&zude68~?0RaU?90UjHUEs@zOn@hG!T2+ceH=>^txa|{sL6;gg zJ}i3&UR>I@$pW9BIkoKGC*UJ@UiXmy{G<(zR#_<=gziK}XO|6l4COu^u1*SYqr6&U z5ew{tI8`3LH)QZg+qpbb!bH#ox7| zla9~9F`UpVJT*-jV-T^(~7={F0*jj{<+Wcx2y+?Mm=L z(W-O!EC`=4>4~?MufVUJdm(g_lSa(zo0`u^qi=nA%l9YvvkBFypXONI82tRb^+)uF z!n9b;)nAcEOC~D5LN~xVYDW+B$9>~G%`S)f?`!i=ZUEwFqVoN+sG>x&I-&U*xa`9y=7KW&8qo z;D)1j8+5>fvsK;UOhjE38MboOa_D#CG?x0J9_^Ep8FN7&*iOmXY4aOD_s-RMuPUCG zZDD9N>bniw6KW?k;s3N_U)8>8OO6ra*_-F)c79T+T-#Mzq%Z0wnq`#fx2Jp^f zH~Q?`(@4EOC2lG7Ei?C*y-@;B*PCG4lgr2^J(-c>B7>NpaW~YT1b>+DOyv1q=!px= zzGqY6?=Y|_`^_Rx7D@E*3bDGJN+Rke|EZo&B~CGGf=`O1k&pCC8i(*crM8QjuX+jp z(Yg5xwa_&UOSoR%IEj5NIrkq`M}r5EPL;Abg8PTU*HVo6z0q4Cw^pDZw#_nL-2W1~ z{jFV-+_T_cimg~`*iuRS{(|a@4e+sHO+WfY7JrZ1TlZRZAn&i;rZ~(GUlrZGT|)dh zL@eRk{&i!(hc5aj`3@t_9~K?26vI5dg|%%AcpcNO2b%lf(>Hh~D>(0A680{cWPZCx zC(1XU@M=^gk@cG?oxdq5z-cUA9P|V4D}1XV{zVeGcgiIQYt z7cvunJhec+V!i)T&}b0&`Cv555yaK_J^j45z!Md`Y6Y06BYmVVF=D|J&=2$Fez=AD z@&4KZ%WmMAn&+2Y!S|EKW{;da3!Z&jjJ$&maGj@eTjVAaiDSXFW&iNii|48OYw*nS z-wv0y4g(*Iaq*!Vg9r5F8?P0klY0kF#BLc&Cga{2H@TK26P0%beyynIwH%4!wT;-* zDjNQ@b{=yJ)4ZxP3aEFd&PlIEAJ)IUBzxveA_+9+x6R;2-&Q{-*ZUdwz|}F{8Q`|U zGd6G8z9kZm=j!t1)I^dTFndAd7vg3A+ACEr5{Zs~;z_}lL~^<8bgE1%bUaOzu50)_ zAv(tuRbw=_d>}AfEU3CTV z<2)buwI6dfQQvc3Uz*Jz_2*gp%r+qoO$0)Gmt($oHE-YUgYdU{VadZ3xpfP;&o?CwHpI2y zW$|4Rm?tWo(DiQc3J}dh6gcelLdMhm9q`D^y3bS0JvrPuSefw*{Zq z;_$%|e147aHI?FU%tbJS{r0x_m3*bxp{HD{!u;=50^17aE9_R~r zCp;Gx(#eX+&C>kE*(B`CJXg?4?4xPW{49+*CjC-ptrcSVWM<29@e2<#iQN->ou?k~ zHM%-u{{0s46+Nj!n-K7x-PW!A_W!6aFsH1uDJcg!hnLlYWj*51 zvxfNV@UlU7$S3x=9Xeu(y9p>ueT2C1c`U^cUx4h>^HSmH; z=i>u0KkivFRMvtxOUN`k;D|moVYkUgAI#H4vfdSBU@lc^-<8iM6PSCI@yn5u#~e`I z3N_DN$dl7cxoXcR60*d}UGxOv=FyvXDo+x@E8GdmFakdFdtgK+6g&kNwo!oR4B_#e z^Dd(i-r-QSIZis+6&bx*61I1NkRap+ol3(Y|I2K0AW*L`^^P#D$4y zp|z;@^oK1%Y&daVChp%#w}pOq)#AQ~z!CHxj;>q@{9v{xM{aFD`mbfx4mrK3^KySK z*FfFbV5<;%L=iX|J=7}|I^06mf_29A=_E%lLy%zyzG`q?Pb@q9+wz-N41t#`V4pIN zKpgVC-6k4e0-uMRuP=@t$KU-!1BY>4IvEb!X5NBx;?%=Y?X%+zpV z-yC>G%S)7Q)@0J&#Nt+d40!$dA=~I=#IIL!z5?ofm5SI(b|c_E;xX#Jg3wnBr6uoK z1^=K^nYR1yp-*e`{TFD0y)w10hdoNr4_a1D=A6L3oF5h|3?%XTC$||iV7}=Ghnx4g zW$C1pJM@N96ZU<)jeOwr7V{CC)-1Ei#r#`9;O2JlD!~Ivf6icTtx~S{RS|HYE60Ri z{+>x83$OgXvwucC{g1OO5Apf@_lTB|Gv;-tUzmBJp1pidCc3f?`F==taqnOrnH;Y? z^NK5nkmCk{&D~jq;X7FH&l^5Y;+A*QQo!e{hLk@6{=_(3@onHR=F`_b`QfRD`PziO z6&uh8Z0jn&9dnmStVHsE+n-A&l4hP2)970V!~|db#oS#>?}^&bkC+#GqcinL1wL<` zLAPUavx#;CU#SNAY{rI;!^5VCM^)o0Zs;otLOZ|4A3-13bwTAV@QyopXdBF2Wow*^6G+Ez`l!xz6%vkh@PZ))4^)0SnbVvRgjmju7L%o@0 z=6p+*Lb%@#Dm3D;$hiCWfBSKc&xyW{5uuPR(p~|PD-g#v(scvpfy=D9uJ2t*BT0ki zx7G!KS9lWWq#6euif+tY!DR;7RggTm2lcPl$(Otcm^J7d(W((q2P5=)%0r!)oi`(^UOf zHZlwPvDi4io#5fcCN~x8Uj=S?er!P*cxv>N>DB@GR^G1=)aV_APjj}ATtgn_7F2R? z$+yD4<Xaj!po{&YEB_nu-9i^C7ZLDF#C z2=Xp{yCkOr{@pla+{y~|SLG>DQGVdcGt-`n7fO?e3in3IKO;=SSlU(7fw{2RGP!te z)Wv#dJf^~z!=KQ@$JR{+IOU!LBRAGyo^0jpn~`|lK+McA?0xOR)50&koFoFB{5oS401~Ke^oz zc&fg0_g0=8_`JqPC3V0<>dzQOPa~eW2cEqOdJP|p=jLg8`22@Yt%|;c`Gu$Z->s=G z#OHj#+Si7^WBO0`{0wpEj(Qf0yaSWdGh0!g$8(M@blam&dUSBYlf42&IYFO0-+a+;t$*Ue= z0iUcb+xqPmbV|`41=fNE=mS}==~%==hZd=4e?uEOf4>8M{F0cLdwst37kK;zzHo(a zNp$!_U9RN$@8A0wFWWGupv~XeD)|y|qn@7S{}6ghPA{Ki^jT(G+&}$8p6g#bEt!bN zV(uL)j87uY2Ff;=|8a3_t7m+{#9PQri1%KevsC+5{AyN%t96UjL>NxAh5^mCzh;-!PY z9bHoXMspy)-nh^*a*j^Abw60rPcg|kqb!+CwwQa^w$+xJ!ypB#`_z}94{od+66f#3 z{6t4N8PK5<2j$Z5so>WOp49){o|26H302gum|MyZyPe6p6!GUOsQ)D}oxJS%>%yH2 z-+(42*S6)DALELfmq4HYzL^C3!JD#d z%zvEuq|uIg>~p4PvKM?=rW?-MK;JKsy++ds{MYlO{oDVWf0VG?k)jig`eG+bjthJ+ zG#E<8HD}PTUf8R7{#G{mGnMPoR+>fDSWdI?Y{xvoOn2UGY1B`z?p*&8oJOh}Y;W!U zh5o0M?-<8!e2)CPyHj;Bcd~8mclt)?&5o;mt9=K58;$U%@qVeKMRINK7HRO50xZ^5 zS$O}kqbE0w!Y7}q@$`%_^c7>)@h^Q-h=yclMSK?g*KUSMs{MyYN&TB%CIH;EsWjj+ z?kA^Lrwt5Jz^f>?ziV2ZLs<3|eep*98QC1sYv>0by#R9s!`e(@P@u^{phL@7ky$#g z2fqNp8#?>+(nyrdU!jz%ndIJQs7ObFUme`iU~7^}+PB@W5){L|q0lF~1^y1sQZyE= z9Lz<$dJ@d-noI zfp_TQuwm%JZ$FH{6cXl3tE@APL`g{`ZF6b@2rJhFE%*9y+{@N$hQ^w|_22zU1}U8UdbXDDA3u*PL8`3jJGTU(?@) ziY&5Z+&+IH0lxBY55{$Ii6Bqs>|22NevJSI>Ur$;d6HkCeiG-HeDC@u@twj9rTp#3e4ECV&HjRA+kHr zM;e$9$lpbub#H7neJ%*EbHI|h7Jc9!aakK%Wm{;`82rR{((#%V4>(2w% zBzFy2U#Ddfe(l3Ko|psTXd3M=D@C6Ery}=vKm7KGR$sF5M_p&?r)iOa_*QPZm&Jm8 z1O6rt9uMO8u;;?!bW19^&vV1v9_PINmgJ+z*U00Ug%+vsP3r2KDRjII9nMUihU+2d zZ8FYX%9n=E!);*)hI}4bq0VOSb05AX<(Yw+$afXjJYwYY;VXIj_UBCS+{J%*_qKmW zz4=*1X5-fsqLVCc+GI{6VxiagkL%M(NWaba+r9XFhFKduv%yDHXdUfp$DHeaQ7bd# zJ%QiXU)A-YPJj8je!3cYP&K7J_!{!rmY~Wrb{T|C)9uqSCHOW*E&AJfLfK1e}B|ocPLdV4=xK-M#7C0)$@al?S_}xup*2kKo z{wQ2APTdJyA-C)Fs@>?z3Y#W>$GP+j{KB?VhIo45 zdv*8ijW1@r*|C?vugh{|d%>r#Ajw+t<`v8fnC~z*15f|!I-kW(;5!SegYP-|12=Kh(iUZb ze}%g2lDkIG#q@p%{f7Co@jJuiE#L)Id85Dl03XE7nc$xbKUTp4HRld<;N^un2UX!S zB1T)D{RqB!DjT(KhyYLL3Ug7ey#$}fsUxG|&}kU%sxoV=Kz(I@;bisd3{skURr)E; zv%Zyl+apihgQ>pco8VhS7u3cQI$p;qyl7EA)vzNqeGzcWa-0x^ola z-mAqpb`SRKIXrgfk3oO6GIZ&SO87{y*qK-qQ_{$9si%|d@DE$#edoyjS?pUh4>NxX zU#f4}ZpT>{Qc2Xd^hJwB_yH1QPG>gY6!DF|8-5{f{{A}4KaxRS=19$bzW`k5^1G9h zct0MKYsWi)|0Qhjx^=E4jZB})e5bAe9n#ne*$VIw6)@U!C_ z<(Svc)l~FxO(79mT(8HCz)wS~Mset321!ePYMbYfL4qXw);v9qx_k@g;+!S+avSU@ zZ(or^f(_R7D#m4#lFILEimlN{eORi+T_jhD*27n*!tg}Bf3I0bjPo(i4@^iu=lf_dqsE3x`q)xd&?_*~$ zbSw;WjG<>_JI$bHD{$7li@3KsoYuLUC5bSU9hV98gRj_eW}#vomH5aMA4Lcnw|_0}eY%bLvw zrKH0qDMWHPbLl?l7*sdNs{R#8CJYw6iQCY1#ppG+#+oFNGa>6X1*9{{knN7=AK~*Q zBEhoqULt(c8#nAeex6C%$Ha{eLtnJ>hs}5|`UzE8_P0sflE|8x;_9uaPt(pR&#gb1 zNEWX?n+vu8zHiDMldgriKc8v5zVY%hUtnNJ)&{vz_JMc>W$;OQ$O4sP6x=V`jbNgv1DLk4wuaBw~5YMbMmV^N=~ zEOWRcdjfTX=APZb>ew@&y*BeN<{6^d!UYU`;Nz%Wb(lL2{#{+S{kQIdpVR2jz|~mP zd*dItvXY=L+BM@TNKikGhI77*f__na(WjFKdFf`i4L|Nx5^CZXj=Aa=stecak$32U z9e)o1Zy{>h=y>Z+>gILF1?B2jmFT+njjxr%vKokMr^)?%(EXy$<|p2zQ+ zN2Cbm2iVoj`gd?)&in1)cF9`oY1ucHn&A$AI%$DZn-NEUUT-vrf{ug6rMxmhCY7AJ z(pT2@3ViTwAIDhKX{W!_Cp~pC$%_4ppIj=SFA0s@c0>vF<8tqK9uLe-{}hsAmV&?g z!s)zI5j>n?_>MaCKh_2*Z)ni9Tps6pv>Sb?%Dt_d6p(N4b@6XM47@yOWPB>}41DB$ z!cITFkwF-i*LFrC&s2_^P==ucE#GQ#q7{C5w|zD$3Oq+X?zJ{NgZ{Gdq&R;v`r;Rd z^9--?Ws&NmgAtV1h^LP>%v|Vp3{M$Ts#?=X!|bZOk`mx9+cfOt_CQa@Pmw#~i+YyL zwml#I_YJ>4D~2M!KL1;%<@+a#8k4ZX@{h^0DRTkDx9d_lQqHJ(=)O za_5oyG*Z$1NM=a__(0Z~ovDI{D*RF7V<_5@Anod>qDuJT39#((mKY^I5lV(!Gv3 z;1l;JE5ATb(pC3i47e~y@90{oIN+-T7ajVwfoG|NG^b>z5y$s!U;SU=9&UCu9cTeQ z{n7qOZCDb?e)H#AxHa}|d~me31U`RAe^2myD~+%m+d`9h4}Q$`!clkd*dZpxb$6lX zcFIydAB}i)*nEstaW8Ni0}YmpG%6Xe5nd6>WRe-yT9zno_zfMj+&qK$t+*@FH8w*d zUQ@f$s=(h>I=LfkzahW^It(rSjZ#g} z@0PvIJdC($NM=3O0$rrA+SBh#!3W4HAAg*jiutuu*_Gc%aSku{WGTJ@PjGldJWvw# z9dGf85K-ug?ygCxN8R6U)t5y9E>Ux^IO_fv;OdWdhHTjezkv8HQ(i34SxU{-@l$~> zME|d%>yD?okHVCh64{cKqG6Vd#Mh=$Mj3^yGAfZ>udIYplthSouWRqDs6;6dkt8Y+ z6(y^(65gl3e7wD`pL@UOd(L^D=R7Ah;0G(--%T2GO^6FO6PG!09q4+stt*c5KxdYn z{8@P)&PUNsZgk!4ifp=py0(673t#9;_@!65ov}iH#dZ5f zRd@*avJ~Yt*VVvJ4a@&03H-mxfBMIwK|WzLiR`}5fxb~GS1I^8@P*AMgq49uPPR+l z7y^Eod^4DHj1J!g{vFp=1mqL~8SK2~2 z>p|q}^{k_-Hb7_htMOC?;;p21gQ&+H;E$I%>^-z-#2~cfz1|t*@m~FXmJ67#a?#7$ z!-l@k&SUC_3>Cf_JG?eIrDI=^?T-L8Dp_k+Olg+Iy)V1w(E6|NFQ}|#qQlQF{;!2t z6m#So@ALdeMksG&zpS=)fG&$!@BcWEopE=8@B(8ob(Fl41d1I@#bm+fm6flXvN4D3IPf2T6#8J*k*80J z`SJNXcW?7pK_M=+RRZnMnYbU+vf~@T{zcMwOdR!Ry#29uOZb7AR{hpf(E(4lo~c?G za}}Yl^qCHg-XSYa86|y&zGk3p{g8}3=IhS=k-5DA`|Z}%2S_ns{{F7{6Te90;}4ex zR$rhJ@&A6+GiXwY?go>9oWTqdcrw#nXbpu3l{!eSr$HxOTj=(#5IE{xm!;RZ&y&I~ zELXqDCYKMFFqmF}4rF0{?A=ZHyEXTVJ2oS(7}CGg3Sqwv7unh9iF&igP`*AI{Ya(l z?3oSN|8OkA-~bi*XZaR$)kEkYgI-B(YyhtiP1hZY#N5qYG5!Gf>4;OyU-utCf2UBtx5qDZ=)e2$v*bNvz1QU5{*P|)&S30i5WZ)z25~&l@Oy-22EM>YWRJuu@ZyP! z`-^+>i1Zn*{4aQ3!{?RspEtpO4_^IsvlG6Osx9S;$=G-N<;g%D_H~&K{9O678NRt< zO*72k6DRvQq6`G_yj}10$gX_i{p~EfGx*L@hkIv!0#9<-Gjr}4>e7_A5A}22zV>~~kW^{9`87}jc}La(Evb-`pTghm`T z@>F%cgsF~9LXZC zOpn{LkgrTHo)n@^P{{SpU<(>>xc1Fma)znclgPAkw-odRd9uIVzkLLsawp61`1>q! zJ$s;M1AZUdsJ_l!VdRq+4-;S7AwC*}H2>+$15XdH_R~Q;#~8kLgpMY@EqCM+<^*zh zneGXs!Ozv``^hAn|K*Jzw*+9`v&`6CWVHeMub9N-8=vSzrMKtY;&=2NK01FT>oFH$ zn6gV7_3rRj8|uNkcz*T4*=Ed92%arke4>DTHP?T1#^CkCf3Vy2Uq^iQ@1p4~WRM_w zqiy&A=6mA{Pp9G@KDU#pR6!SW`y-!LJ$jCOXr1_9*&^^RMYikr55wPVdSWRQbKuYE zhP1V8s2ifWQ?;m1A%YO@-V=n5@ahZezpm-nPe)PX%fOBEP;vE)lans+gV_BgtfA<8B5Tq|>apDC0Zo1U7?X+@;vdyiTEqmZA-0}3{W#CtVzH3B$(T{OSzq|i&9pcxO zmmYBndn)|?jHo>;ByRH&De7bJ0p@d~{9QJo}a;DP-bNmg&zfJZQ^ zGP4WilKLyc>r7_xb(7-Fpj!AxY-x-Ak_ViEadly?cp>>|LGqZA3W&IK>1EAL1w>Pz zC#Uj!0a4(#@YX&KeacV6sy~(mM0uB4_+n5lG2!>~92CkY^+9%>#`VCVW~MhZsUc6U zkbb+;q=39*-S*Xt5&D$}VXlXyfzL_{59)iskMM`w73*5yjQRDdw@|lTsvEr7`2qEA zdCUiw2;iiaU0eJ1!nf$>k%>Dkz++`!=w~Az-&HqrVHn3e*c-#dweHYIpDDHQzYE>S zcLRT3>;5tXa{9izs9?)GMJ+?@2pqNr#_fV7T?Z9`K0u-1lTG_M_h# z9$eWvh2LAh?VH&+_ROdSw*i`b_` zx*sdUKAte+={AO*7VN2A(}79yaQG5* z39H&ONIm1LtA)^$-qu~5ZbCnN+dR?!+rKy%P`gxyzAVWhSc@YVdPI@gn%pY*;>~mZ zG3JGzRkm=K5$YVXle{slz|Ze_AKh=0417fUq-hrPe)qm?c9&5z1KbXD-=C@cNqG``cn$JUriA2o~;?G%gEzb5{-N%v6t>oQNwK|%%g@`huZ*e zidna;V_Xd%c$2xObHG=uI(D!cKv&i=C&d^6K48o9=|%s8s1uT_1JiJy9I%R5V*uS- z`wH*nW8kv`jOX66$3WlXm{G=$eB@qqoP0z)ioZL$_9`3pmYv`e2?M|Sb;^!;cou%+ zrKda#PGOFKTdKSl_uspOabD{ge6Hs$J4!aA{!lnIdor!4s_*8V}p6;aG$Nv_8WhO`kN(-@el`mDlX1s6nMk$|7OedPvo6Y^)%&EIN!;? zn+mt~f(IyRRi^;&yca$iww41v#Y&+9W600V=LLURc2J4KoQas`Q|zm<(2G8XxO}y5 zt@Zi*EJ8^<+{V=kUvc{7PtVo@XY^W-$wfTGjB0w_hVNt`!)4pe4&W<;pSd;s^IHvp zf&Fgy0H3{c=wCl5oGePLfp3_ln>^1!|L4V}Qe-ocNviB-jn^5aUOo0{`BYXYAkN#nw|(o*#eLDposxM6@x*tD`{`l)9SIJ9 zeNoqn-;^E`8p^vT3-Tvd$d|#2ZoJ;r5z%;2_&Cg6mp$Z&^I~;` z@B>$qs2lvgrwcwL8#gp>Mg1?4tT*EgJ>bhPfx^*w*hj**tDXV*FD$UfV;K0n&#r0y zX5<;qt!je1e?Xt1Ki{|teU;n6tLfR(sFVGoy3Hqmqizt`mLOk96pRiA-Vz3m`6()0 zvmbrwkPgS8c<>Q=B1dKdu%E$MLx!G>bI3JyM=%Gtk9fhV%ZKyG4r^VmnLF^2Hlm2! ze293CRQ>$G0`+ke)7_wU=-()B$4~g7E^zk}JZTOb=I~!Or2*W_4ejQ6sEe#+&WNz# zd2W9?a^LSLeAygt-+cKQIENwsM9w1c-Ll4%*SK%Ayd8t4f#c1U-(E{gfq$S0Pw9m> zsPlRwd+=`&&ByO{2Q=UZ8)ww8!w7qmejbdFZbCiPxpOow68c`->sLHd zabBKL6FkI_?_xZ(W$F058`k?~h2Zncpf6bCIlnFX$cby9zBJvZS;a~xmtDRePyvqf zyx5N8I`+0v3poBhcE}_)2MTrCeGorU5ob-{w>+}0a^;y`_$ViO*wet*#cYFzE%L=c z5!WK?SLmL0=P*4CqL85Qil^tssAO5-ejXFz?b|ma?gTyPI`Ya)KG?!va?m(5891M$ z+=D-V9%qo6Mtxy_@XBS|A3NX2^W;{pd8}oGIRDBNrWZ#iW$VJ?yV`+IE+4zdZ;g8S zmld=Ss1vjFt)C0f$hAi4Ool+I7XKLCi5ZjOrM7WBxY1S4`xR9Pqnk9uK37S!7S?uz=$_+^6e`tj8$GABWqF zJ1_?jS|_}h_5^%OQ`BIiV-7j7Ns(g)x(JQ~XG#A>;E(Q-0^gzc8&8a9Y=B=a7wGVr zU^;oTEj#HW{68*KD!a#R$s-n1+ZJ8~=aa^>=4nqb&!xp=%axOwOXO^~Jr2crWaqKE zR;->)SSb4bifgeyH(RrT?-RZ+Y<4uf4xjt@ZjM)S(8C<#TQ%o~IgI$El;fXJU-+NA zHibIlEB$uFtRX&MkC*dez_}=L56xFR%p!HSeIB1d-yTojw5*FdHDl}V*Q=xQNUP}3 z=261}@^$uOi!F39X6Jlu?j!GvjC6@lqppt8-#A^0bH|gnswi@%P!oz(rnJ%>H1<+@Nl=IXGk|4=!*Qrj#&v4(H$xQf+r>o6;9-@#EhRCOfY$&AcEmlTsp^*CN zho!GjKPzb7Tl2S*N<{OW`mX7MC;#@YP>Ke>%QME|cV%c~#hmu=6V!SA+7B*sCD2Kh zb;=iY=wSuV>23M6AAH8a#|tNBGDthKz@h!|*w5<2-~A>%lYHc8)cOtl)YbijF&B8j zm&s|xO&m0m&g<514*#J`8vciFZilXLFi_&^cj#%oOj{XIFUVa?ykmj>ut_GI5+sd! z-ZN|+*F*-fFK%9UKN|CBXP1uj0!LNRwQM>U2A}VSx1U$l0v~&)VpfFncH82&^h^NG zYvZ>5OpYAV^l_)rt||CR2b}ai3cTgxEuA};!*j4lNN#@z?l(RKEBaC*ov{C)*!I2w z-Y;R#BUG0|Hva8fn(e?I_&7I{#+P}-;Cq;I)L!5UPuHYu1@0f*@W{XVHuh(zMtL_R zWs~qNJwl_vGc*}4pB@jSlkS{`rpLg=-#xUQXh$4szOj1w7`%E%+G+bx#8dJ$*X1=i z+3@M%{O?dP>Z>~jDs#w-I?lW+evKhtvT5k;76VVc>64F+OaW0$y7eT5E1&#ae}l3U zcxFviOx76k;YT$WrGEHvIc?c9`3Cw6RqG+oe}44tUVk~F(GQlE>GO;lL1#HG6%*i< zOJ*kR3}tD#MDLlE!xLZBrw$rs19+W>;T_l7;|s{do>lQ5+u^Is>5!6vc+mIRW7M{V zPO9X+dt={XZ%TE>Od{?Vg=D^p+cn_9WDUmGY(;*hn>^E4MBMLHp~SsLpTMtripGNa zZOPk!2YWauk3QB-;$C&@U{SIPMICP>FWbHq`M)ejGTS(dyc%|GyMBg7f+x+`yW7#9 z(K0)fej_iwxYgJgoB7XAOftF){nIsd!=k&uSp?fY=8Muu_S>;H`lj&jcTQ#t7{Q*2 z9Ad!?PN^WaN>E2k-7<4zK?7rs~o!6r%EcG}N$^LOQ*aUst2w8##G5WVj!Eo(`w;gNjV@ zr2g!=if`xxeO>vi#c9Nz^=xd{b}IILT^n20hF<*LrMwT|u}xpk`iY>wa}_oZF@?U- zH1BZ6*Gus2|HigP_aWjvhTX31I+a|0VV-pv{2jxFS4B5)|I|-+mLz{czczk*KI&Zt zIheBIUc+h{c{n8WmsW!RPdi)68Gg-^RoIScR!0%wN5)_121-uFI(W)hI?_-(n}HaR|nS=xx%8ovDK6SV4zdEZ~M&M({Z}?EUu*n<&POn(S%Xv&ImlWE% zJ#s@`6#X5lCDb$rNBgamY6{8uhznG6SM0aHDDtpX0{y7bR=>O(c-~h6*KW2IkQIhU z7d$s1?k-H_w;-=Mx_|#Ein#6Xu1REvUMu9>$q-VCy%AzmrLE{^zAfGLGME5QeD?1v zu`QTynBkZpsPDb_g~#kiao@!bt1_(y@A1{>P$xg|w|m-&ECblHq%stG061URda>){ zy1{07*8gP)+~j=Js(n(ZD=TWlq`^06a+xIGhTciuf3wUX+}CfJ<}#n%ppglk1pcm` zOz;}ZK4n?xW5zOn^3P_FuO=LpM%$nliIS7ig&*T&^NRrg0xB8Mo6i+?#P8j_-*g#y zZX~Uhe>My_iT7X zJ2Iql1z-;3Rgl1~{Vl*z1-Ll-fG2rf{1vbv5C4AWz?dKOC$3pasw<-@7AP@NB z&fTclZ#+mLZYMtHTGXNMh!NXS2LD&BGW%cU;drj3udN*6*wbUI`VIPL2&9J1HSg;0G7` zBGvMs+coETXZsF)%*gn=MWGzRqO(@{!mWJhNmhm)`Y)f%o(&1FI|*Fdc=w8B>s(_0 zG&VhU2>^euVc^kSjgU`U-jX?Y*}qKx^kn%IFaTk|=82smi-Gx1ve1BhSC zbLG2G_lJzEyKv?a=3l?5_xV~OZ^|B(aR(0c)$P?))kNs6d^9}dQ1{-TtywNyrjZu4 z;Ld-0*hi9&RcwQP$|kGn?&kH_cjYl>H)B*lOevncg44j|3w%Xvkyjmf;?>rgq8|RM zV#A2I$*5ZO*blrpCF**4%}zX*^8>B=7ua`jt~cnn0{jfmE;VM1VDHJ(_MP_Vj|{C` z*p5LblQA7=JA-*z=@8>%*P%Bmqqckq?N!NK-+U zatb*Z-7&r46nuhh1p1i{LI3pod&I?9DjAC!PIR)sJ^T8~js$-iF=X6+>RBL@ zVP6K$=dahW7d}R&4|f%fqu-l<#d0=v1AOoYcWr;6mq{ECB&l-)H_w=566@nf-Y~1z zXz|27AICYWA&NN!4%>i49@IG>-ObF#JKV>YBjBMcX7wsr##QIb9oV-iLu3NdqB-_xmtv0x(ReGK+q*=)Ua8+9nD8rtPu zi##90HTwhjNW5H4QqvdYRrmThDhri-tuBZUV}M@9Z=InBZ zAI6P2ChwD&>wIJU=6nz4Eh$^Md%zd04P;@n+5ukkQg>V1D!k8QCR|RI`2T`Dg;kaj zk7{KZvITVVs@fwn6gYz_$=Rs?IESc3DTTM;o)v#zap5THvO2AB`-K0nUpsovoDFfq zI{1EP8h(FrkhZNO@{W;EiN{T_Vj}|IhusQ*lk5Bll=Hy;&qEejVt>Fhu$-{!LS1vh zc>5<4;Q}K0AZ^OQ9(o3AmZ^Xs@JihOg{Rm9Z=;<`9ASX&%kf)#+)OUn#j9{!4>+ZS z?qr@T_}52CiBh_a*<{m^E$r7*!Jkb{tdoF_srgN2Po`5gDG7+ND+lkX6#ur`T{W8= zkUhHH2=kPaN-0ID@pzv1lwnUj@bup`-}*S?@7>!k#N?er-q-JSP``+IwGYBl-Ow|y zE9aNn`XGlqGdpb6{2aW1fHH4WA9V9wN_z{yAJ2E}wDD+!FRZ1o^by1(F`KDw_>8?* zTVqwVe4yVFkdWMMo=MCN#$v4ZU>@W9x&FaE;1XLzBkO=W7*{9}&XwRPpBOwg8baOT zP}r)5b5MLO=fK`)ndHx=y{ao7qyD#j`B!2YedUx}L|!!Z`5m|{vYj7!Ffii4)BVVQ zeVlHU9l#%Swz?jEl}SzxB(ExefqmF67DtV<5GN7-J_XJc;$D7Z^u$%nLD<#YoMNF6 z;icLIA=GO@t|CTRpOA+%ejluYuaDl@AG^#~V{Ybw#Cjdybdu|5e~vGZLLxJoMdaGh zhmr^f$+})VN`dxm*MHP7ekvCf#FfV(_eA`s&<4kg- zSpBMoDD=%*+Rw+Bfye&3qIeg)LrMD4sX^3fO?^@33()D-JAGh!qz%4h)SGYNC-!nE z`IRc-9#5D5=_;}fxWFKnvLE&fDe`k|^W1{@R#UB2*HOnVJ(-_+lLOq6skQth74fru z@p>@sCH|3^*8zIKwOabiB{;C}*OXF}0KU4r;!=Y<;;mBo)xpeA}osDIwZzY%-;)b7}t3$^Buuy;#~|9qLZ9Fkfx!TV__n`M#&U4AYD zojo2t7wub9J{3L1UNGjiqj{+Jbl=nui6Y-;9*`}ON8fX=qHx#B&ES3Px4e6Q9=zth z>fGoMDiIpf*}H8Rb4=l$^8e1c_@lL?KpMeOxCaY2;VE`+13Y;FROB zY+KORg_!?*EQ$QyE+5FH-A^a1adk}16dE~ETEUQny=U!=x$#?SDMZAI#pl%0Kb^&4 zEircVN$IPax=}ZBPj8xtkj7l#4ZC1j_;m@)HlEA@kMFeKWVN;r>NsK)eiQjT{3pvq z&1?80OU<8uagstBTps)6a%0X^V}?I83HRBO*sX3h_*gG_l)MH%Cw*L!$)gbdD<3-3 zHP)ei+u3Cx0Q|x3*RL-j`k4E=Twl2;gZZc(^}_DQ;UA*)d-^cy{&COw(pK<{9SjSH zB+k*u^ct~mVbH~%b5OWugg%X7QCZ$eAAR)a2n`3*EOI*a+(msC)F<9Y3q_z~jq;zm z6rhkx{7cMRX5)a*nHu!HK9fttV<}D+4agVG94_}z=XKWov>I#8BYB&nU%jXX|21tM zbqjdM?IcHC=JnWTKmX#%pG3?NJZGNwn1fFF?yTZ(=%eO#tY^By1bp0fhc<^abiRf; z)8C?zcPKsfC%totWm%kn=qt>-XGkgkn_o6P87?CPeSK~yN3Yp!)GZU4Q?a;jWh6bt zQ{cxDM@w1jhxl*5bDy~#KQFz0K~M!aTHwhi&36`{!xY})e+>9G<%Q=>g+TD=(&J6b znCE0w)iKPEhR$%^!jOGjHaVu+_nH;wyhG^A&uZkWG9~3MRt3z>yczMF9zp#cGx921 z6FBzYRtaA0|C^ijInE0Ha9E^XIk6o4{rcr(xd*6^no?Urz!$A8)vVcI1V6}UHBYXo zpkEo|ONriw`MwxUmxRI~YKs^|pCxh5@be>=OhTP=-MCc>zI9y%!P63m zx3Am1S8-CwSqCo8C+K&q#cdc9Ea2M`s$66W998gr#dFsl3K2_X zR5iroyjundozi?^i@DR%yer&3>oSN#A9vFm<#h6m+1PJL2Kxu^aWsG5O(PALbCRFi z&`B5V($nibn6KM+Q8F0%!+WhKuExHgAiwr6?6gPyD$=nyu8um};|(((aGcxL?=!Et zfG=`;WWG6(MpWKiab%M~{k=}l;jtfdnX!ZHDxA1y8-gvJfCDV2nhAe$K))S-u@$?z!9H4*hAy#L43Nd5PF{g94cz~{VeLSXGP9ATfmPhM0@{C`-XE|RK80MJg@ti zjDBr>@Ye}V3rA3=HRuQnUxQzA=;_lp{=xm7l;8+~Pz>Kk?7CFWD+`Xj=q6N8?u;{xvH{>!=G9^y;2@IAF7 z2Ju=^>D(`l`K;fEGrIA5Y;GLCkDI`kNw{0i4zDLa)zzDDA9drB51%a`cq=oZD{Xjw zr&X&4g80E7wU}N^2OlorbJ*&sUnU7HP74kDj5);{g=uPP&}U{IKlV zCn42NfscUeeLJvn$~co)$=CJEsjA>^H|zN*Dvh|>$j`31@7`*^JA(Wnn6 zlPKY-2&%$%4>+SDq2|9m3T(0RkbrY}G-g48U9rx(6l!KlWABC{j z71pyT03) zd;Nv0z(pRiq?kd+#NepDM1KgJ!ZBH`h86kJUhjS&{{2R@QrgM8`0p_?gAN;jlZKTa zPwYdT&66cWMc!A)5W6#S6LXm7-R>-|&md(t-3udJuqSb0JN~6y@HP{jM6+GgH zwla;;Z1QAv5|ir7fAe{!eDRjqBtTlV_8RJUnc*zuJ*Mzoy-szW4#oL;l3`>m23`BT zc^)Cu9m90X{LDAtSC+4Gx?X|rHeZeHO}t(XGJwmM4XkrxGv9?`1M7ax0f z>v|>nnRAC_FCtHH9icyrcLz`BaNsx9Dw{A&T~o^e@5GiEml5|1eH+i;-@~{U*jP1u zm5Vb;G5>$*vC}l-E;qPd6nM?wB`fj7-SCV06S}inIgjkxHkK2ti2VgyV~%X_2S1+T z+L2Ta{qWc-1Eyp6`{L==H?t6bCO?kH8RQbW&egwea9_amzxc1vUfnIjiN*!h<`1Wic z^Xlf5>DeJ_IF-OnY>`6Vvfc-yOHH$h=GsvTs zy!mnk3Q3Q$+}gu{K7_Z_dF^&O8E$av+Is=@_RB{pvUb2fTX-HnrRER=H$e^?XBw$h z6cpQZ5qV7Q)GhDFbh0b=c}zA3bQ2%?^$NdZ{=P+LMmvf^?tR;?7Z3^@U}ZvUhdl7^ zzqKbvfva~E|9Af`_8+xa1kg_;Vb4;utXmc4j7!#cQiUXee?(PU%mGI`vof|K7rMdH z!H?cKE>x1n_=TmjD4ob|`+h|l^=14gFBk566hblfZHoV#30&mxbvpXQw}-}!&(VRm zH>CJ~!kn1km$6hg#Ienz1;Hc0>+YRfU8@H^i#w`V#X=i%3+H|dK0&_Le#@({vOJTh zxN=VZ)8Tvmp|bZKM;?7>4 zQ+>n0XAU0ZFJ}hsBX;_F@LhYvz06`jl#+>H8hpeu^y9nMw9uuxTHHrf2Z zy`m@_JY;juov{VeYFaqp<7W#Fr=yl=TDaAlLam)v7*r;*3FJCo{w3l;k$AB}p1I=I_> zwweVvfJjeuXCvmZ2bwjXq~M(Cc(NNIpXpjH@f151kowLS;wwLJ#)t3s1^>N4`mWHs|- zm;~lrbRP&^299z&njW~>7;^zDQW(38sbsIwnNTg%>Fkg5pV07}s!{noE5$HhQLRy8 z5S0s`d0Af${?7gMX~AK{k4^k?-EHW;DAMG?*-E_Mj$cwVf#a>)_}`8QKlICD&UfbZ z@tj77IhKHfFglry?!!GN{%G;uY2YW^LmM@`SK{8h-4VsNK=3nzKc^Ubv2rA!|z^?$9DNx1`!jHk=4nf zlWJ9)O)8GyyT1BlD*}(9d|?X=!JdNoUjc?W%!toWDZ5>lQCD_HxR*x2&x$9(T*V7{ zgVy+_`Y-BIq5tkCqwdP^=P}3!UN5t`#E3B;z7#5gypq4+Ya>3@u*{6QcKy0wIrPO2 z?qbDXbD$5AzQFtV3V50aFL*4&dIJ1#X3Jn26+f5Y z&u4NigNWYIr>u_6AZEN@c<=qIEABPkehK`hMMs5~5p~?BsLMB=a6p$c>M1Ct41BvJ za-tf%V(=j+_GHxIFBJ=t*W(;K&s;jTh8gG1M$G;R_22XE<{bWlJ&Qj@9&#bhS#7#| z4RxUxOS+w*eJ7JVzChuip}zL$?!L@c0Dr)-YK!I|)I&BOVm{-(mI-!lk@%2BV&YGF z-wj4QE$_ArD1txD?@l@T1au)TmOoYR!w;>bSw3V4`*F=q1nkFie0v=wa2`4W3L`aT z_v&2oPD|oY^=iaZ*|Lp*BzzU^xGz8K1RnWge$kT&ddfC&&M8CuyZ_hOinx4|t$elY zo-X!%&&q3e0LSLy>C&n^vN;I>!_^RbtHrtc!0LsuQBvb>_yJMC`I7avnq^4 ze^bedkB{U#(f58Dx$hVxi+=k_*L>w|;91WZd9mx2l*sVL4}*uU&8gWT>Hr*1FJFin z3qHdkbMm-T7W^AxUmOR|?Y+g-@^UtK{mXk2M3LV|G-EZp(MKj)o0o{5!1t#{bfT1? zQyuZ{>s^5F!b6tV1iCn#OLiPR2e2P<{gn-3t(c!%yZGll=HrCw+6{SnFgH<}x#?B` zg)r3n=UAhDkXCvU%od40Ao=SGo*Vf3Abz+&EsJQqwx5=RuB`jQk(cwb;72=uMm^I4 zKD~Bv`Dhh%gq^1{cD=`WlQd92fH{%k>ZS8DLmB7?MO8|rGsve66Rv~4*i*xHQN(Wm z^Nyd-Meex?pN^sZ-Occ2bQ0jXQE>x%vW16ER{3Kt|AUu(M)~D`cT?5{b?qi?d_ynut^?3NSaVt0+_eGU$ve5-F$MeUL@KYHL4Ri!FcYKm z5&N@8+W)Gi(a6^|ubH;M*IzNc{^C&qoVWhR+tMDuCqgaHybbe|{nxBLe1&Ob@~SM4 zaVY!|Zpp^^3PNXQyRk}dCzTin^DTT52i_$y!}Izx?(Oi1<3Dg8MoAU9trfvN@I*ds zC+>myekbl3U-)E?uVTpe#^)(nvbnt!K5bgR_7$H-pL)Y|g=!3Ns>=DLSzXfGD z^Waah6rmV_d)xh$;DHp&Owyz<`Q{N`-}<5wO9=YDZmW+msmu61je)EE(O;1Gi6(vu z_CA>0)RTb!y-e%G*{i6lO?OG>?f_qU`}}9k&vLkDACE@8Kz&oQoKRl}oUCE){^AzQ zm8msX)xYq~v8i;j*V{-Z3DPz<|M^bcJ1ffjb~1}NTMr!FvmN}gWRz#g zg)FjT`nG@*`X+|hCZ(g=dF0h8_s+520^;Rr%Xk|)Kgr_6izy@MpYMF$*vOtm#CKGF za=^J}^`$pQ;pZlwoNm5kPA9jdHMyjqW7AIMK4Fgg$GTR=OkgAO>*)afQ1 z1RnWvw)W6w^pEencs2N-LlM&Tm`8l}SPz+7He!E~c0N}K@Fl0dRl6_Y`T7S=7%S1C zk7;;L?U_KmDYv~h2)fPW?;Yd;a2U4dJo3p~(SH>sYwTKyy|nw}PhGFXd9*)$>MSej zsKo@@6m)R6q?*52;#^8MyeFHBpzl$h-S8ZH%1p=OHU#a(o)DVe+V|4<-k+;p(mkDA zoc_M#NQXag0rx>M)Op_itOI4O8RVk6INwEo`0A*P9t)4aJY>e{OV4W33D%ie(G)lr6HcdKGYnM9ui4*hBBl{r%jsS~^iG8{T;c`$iQ8#rD=<@6MT3aW?)o z>Cgdk*3veh9y?q%5Q?}8y54;z@)3BnXla8S%%dkUpJiFXeLt%hr>OBVi+D^j?u}my zosG$+2Mv*Qq7@`=Qv#kWudPx04)8-W+c0_kR^S%$n;hIip+7dNJ)UU*UNA@L^GFo* zS$mHSG1TLIuiTT;wE#W8_Y>uPRD3T|S#aYgdl6U+K2rNTw_PeKS1Xx ze>X!1Jcgo~VjTl?sa{+KM&%UL6|ygPSpnw?FU?;_MIXtvL4U>Wuh7{XshkT!9dp)6 KaeMJ68u=e|Cdm%~ literal 0 HcmV?d00001 diff --git a/tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.00c+0.50/zncc_dicho_nappe_bco/gri_zncc_dicho_nappe_bco_col_disp.tif b/tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.00c+0.50/zncc_dicho_nappe_bco/gri_zncc_dicho_nappe_bco_col_disp.tif new file mode 100644 index 0000000000000000000000000000000000000000..7830fb98a67aea594c06de45e33869379384c82e GIT binary patch literal 48588 zcmeI3J8mUa6h*Hw0wf}kfCK?CgP`M%Nnr*EF@To32hb5I1Pp)?AOeO&#Q#^zs%3VU z%C534A)&jwb#+diI`!LYpL);1d;Ivr@!A;U^)W6k$HkI;zO0MLUt04ImipzI)Avf` zZ(O`QUR`S6EbFbPzrE&fF7R_wWBNF27$Y-@ZS_*B_1X z{L?X>JQ?G&ug3V~J9>Y3+EoqefqI}Gs0ZqSdY~St2kL=(pdP3P>VbNo9;gTEfqI}G zs0ZqSdY~St2kL=(pdP3P>VbNo9;gTEfqI}Gs0ZqSdY~St2kL=(pdP3P>VbNo9;gTE zfqI}Gs0ZqSdY~St2kL=(pdOge1J5oVEk8PcG@dPMEIH9d{c8Qa{8D|***E@Lwpp38 z{rkH9SR#uW@z03%5ZTW@R^}6OxbyG+;kIyrhwF+5OyI>rQ*-KSP0gH`OyosPjzqS9 zTVt~FJoJ>?u?BEMzm?ky%&5EexTWssEf3?CrOepRN>;L^r`(P;xGOjKsqr2+nb5Q4 zMoo6)dctUbxt-$%i|u=oTIy-Oey}Yk!`ToPO5K zJkCBltl)IpyrHEU!xIM9)S9?uL``1CJ#Kj}`p(|_%zb9lBbb* zBhMM*8gibQ$Ju93Zq6JLKF*k$%1_PF`^mfV~T zqB>iXTh5q0M3@=L_vX!W(Kj=Xv(LW$KFPN4NoLNuGbh3co!zJA&W!u_>hhx}kN5o4 z&))mYeRts|E4ifZ)T|rb?>-~!$aAjc#x-W3DFdSni7t5=?Uk1i zZX6>wuVeq&d!M;aM#(MTljw`yYD(O4vB$bG>(pFZZuH5Hd}bbJpB-*+x`|uzN^Qyg zTfrVQcV(|Nqg>M;oXhz;d+#&%sU4ch&YC>X*_^2E*5KhR$%cKo-@3i*^Exs!&dlTN zv!`~z zUhYd~w{hdxa=ZU$Ioc)@Ia-5}-`nNoHa*l_vXi;da~VC4^OdYQX689M`|LRrGLv_5zUV0vxv8y; z>;|(xW^6Ol-02Y>ME0DCO1CM%#E<)SQ%1h$%N?29%}Z%$mOh+ z+c7hIt&XWB?Bsyveh*Q9B8y|Kc|5h8wd^6!<-EbF+|KdxU4)J@LT@y5=G0tH$trV? zm)(||bmg=aca&yro@{>=-JeGPeh8g}al9$^tx73TA-=Ajf z1#YsC75basgWJ{hg4^|VXL!#&^ch#(2F#KhjM(R_7^y$xdx@-xUfXN2P5#hln&5a? zsUP{R^M=-ExXIY)Oy;)dl9jRC>e~tCuJ5Mf?*i4R8r1{!Ks`_o)C2WEJx~wS1NA^X zP!H4t^*}vP57YzoKs`_o)C2WEJx~wS1NA^XP!H4t^*}vP57YzoKs`_o)C2WEJx~wS l1NA^XP!H4t^*}vP57YzoKs`_o)C2WEJx~wS1OF=z`~yDqRP_J= literal 0 HcmV?d00001 diff --git a/tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.00c+0.50/zncc_dicho_nappe_bco/gri_zncc_dicho_nappe_bco_row_disp.tif b/tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.00c+0.50/zncc_dicho_nappe_bco/gri_zncc_dicho_nappe_bco_row_disp.tif new file mode 100644 index 0000000000000000000000000000000000000000..60b7af085024d4267cb90b3be010f98eca2799a7 GIT binary patch literal 48588 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 P00v+H24DaNsu=hKuAGF? literal 0 HcmV?d00001 diff --git a/tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.00c+0.50/zncc_dicho_nappe_surech_bco/gri_zncc_dicho_nappe_surech_bco_col_disp.tif b/tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.00c+0.50/zncc_dicho_nappe_surech_bco/gri_zncc_dicho_nappe_surech_bco_col_disp.tif new file mode 100644 index 0000000000000000000000000000000000000000..b8195e85b3f279cea3ec5ddbe9dd95e032f2b81f GIT binary patch literal 48588 zcmeI4L249H5I}2eQNdLL(T!-%1zcsT3lHE4B#Ru$8zle36e)_D zX&R>eRqzs;U%$G#fAQ)u$s%OCy^uE|@>XOs$)-hL+qE(Ai(P!)^3yKvb+1f(vUw@5 zTkdze&P@K@Er&*$jmYh-$d{iY zpa1sShwof4zyTb<0UW>q9KZn_zyTb<0UW>q9KZn_zyTb<0UW>q9KZn_zyTb<0UW>q z9KZn_zyTb<0UW>q9KZn_zyTb<0UW>q9KZn_zyTb<0UW>q9KZn_zyTb<0UW@AN)E_X z`-cJl@p^3ku^>9H60;1wMhw@;^?BLLpOJw@r5-%LQTs~FGW0rXPX62sEGqTj`OWS9 zXPy6fW$zz~{W+DGW$4xO)4gS`xxU)G#&h?z&aU>E9%o=tsRz%`?mK6@@3Che)#x*} z*2h|-Yb9nGdR1=G8qLJ=@6Y%edw(vrXJ%kgsRzr>$I4yvy7#Nz@2kIeXs`8st;8%t zua>!wJM$=~v*`EcYP2?5?YlFusMLdHckDQtmFE0em6&Dd)$=>%US|}o{+tXfD)r#` z9djSeOLP95O3X6!>iNy>_i>M&)7ohD^%+=H>cR6{WAEn{ol%KdhF&9vhjKatt?7G> z_pSPju2EeE7L|I47>>wQVwR!T5i^R;%)p{j4-vzj)6X>jIcW15?|X;lZJmFg)>LAa zp;zS=tr6oW7d^W)mw`p49+vW5tG*Jm485*3ho$e$z@kzQOZl!6VZ@B0Gb=I6&}+nSL@omhdf@MmaR3K!00(dY z2XFufZ~zBz00(dY2XFufZ~zBz00(dY2XFufZ~zBz00(dY2XFufZ~zBz00(dY2XFuf rZ~zBz00(dY2XFufZ~zBz00(dY2XFufZ~zBz00(dY2XFuf@;dMYsR9rV literal 0 HcmV?d00001 diff --git a/tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.00c+0.50/zncc_dicho_nappe_surech_bco/gri_zncc_dicho_nappe_surech_bco_row_disp.tif b/tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.00c+0.50/zncc_dicho_nappe_surech_bco/gri_zncc_dicho_nappe_surech_bco_row_disp.tif new file mode 100644 index 0000000000000000000000000000000000000000..c9aa11002f30b78a6e2098168d250aa69e5d589d GIT binary patch literal 48588 zcmeI4L2eW=5Jf!r!)R-yufQ%tNoEZ}OydpXArRs9fpazFfJl`B3LUi%2~z^361sA7#|syikpz{5cXM zY38BVQDLOy*jUYMeQppemUbN!fGH~8p5 zi%30;p2(ZEanQeco;=t2WqqDU(#%7zO`WCh+*tZB=bf@1-xhP*%{TMP#vIS;+WeXa zh9mVbTj#lctf|Ad#oTuFZOMHr{l&Mx=bL$Eqx8e(HumLicEw;r^J)WaX~ZJ*cXo$~UrSVz*#L$9Nj(r|68y*PAE>7mu-;X#W?J#_PJ z(0|o=__mnawK`AUyS_E~SAEZv-xpPz_ad?Gq1TDd(o*+Fde>{^J4Fv#MCt+GV&3)9 zH@i27?$n{Z4tFjR>mGWY_}22LmG9u09pOQXNImTMcE|&KbHx_E#k}h~zS*79y;9U2 ztk=qSijh8}JoLKbTPF|J9OFTYNIl@&KkzxZ=Av|ZClc!(dhI0p$;WumB2o`03*PB~ zNSb-*wUg{8ALBs_dWiYA9^dc{24DaNU;qYS00v+H24DaNU;qYS00v+H24DaNU;qYS z00v+H24DaNU;qYS00v+H24DaNU;qYS00v+H24DaNU;qYS00v+H24DaNU;qYS00v+H Q24DaNU;qYS;QwIY7bEM|o z-1pXAm-*ve{i@BsX?5Ro)7smz=fkevw)y_^`{d8>=k2dH^W$B_x3h?^A0w`>BR<_m zT>k8P@4jg6fB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0S5km199HIh_SW%_6?2M>UeHF_w}BU!`#7KF4Np3PQMjWwTs1qr0sc)LL$b$zzmNU8`9=rmknH*US1bS=GOh)p}XgyUq;q|HC@Ydeqmm z)azxKnf&eNS?GVlP_ky@_+ literal 0 HcmV?d00001 diff --git a/tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.00c+0.50/zncc_dicho_nappe_surech_sinc/gri_zncc_dicho_nappe_surech_sinc_row_disp.tif b/tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.00c+0.50/zncc_dicho_nappe_surech_sinc/gri_zncc_dicho_nappe_surech_sinc_row_disp.tif new file mode 100644 index 0000000000000000000000000000000000000000..b70daafbdc084b1bd46e8a4d3b79532ac777d209 GIT binary patch literal 48588 zcmeI)K`sPA6b9foMvz#MU?W(&g2aB-w%kC(0VFP9Wy`_=oIorb$q`i1O@}dE(v?i` z^`v-RQ{B^f|5wSZW-{52m55l47>#3;s zYQ|CXS=_7Kz?Yoze#%F?uinnS{j1mIy{_4-_k7x%ru}bo?55YOtNASMRc>HvZf#C& zhV6Mbx2D$X@?O{M)q8GJGAWs=`7G{LZlENaS!?vVyw^2*^}63?1=I6h&1Z41asxfF z^uDdv<-M-iEBkFeeIJ@(?}qAGF!b|X|2y5tO>PV@zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| c0}L?000Rs#zyJdbFu(u<3^2d|1OLmw3lU}7e*gdg literal 0 HcmV?d00001 diff --git a/tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.00c-0.25/left.tif b/tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.00c-0.25/left.tif new file mode 100644 index 0000000000000000000000000000000000000000..61a55c65dba676aecc9a08edb8992863210d5f12 GIT binary patch literal 97050 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 literal 0 HcmV?d00001 diff --git a/tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.00c-0.25/zncc_dicho_nappe_surech_bco/gri_zncc_dicho_nappe_surech_bco_row_disp.tif b/tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.00c-0.25/zncc_dicho_nappe_surech_bco/gri_zncc_dicho_nappe_surech_bco_row_disp.tif new file mode 100644 index 0000000000000000000000000000000000000000..13b00e309095b029551b34e8d70cd0f111208456 GIT binary patch literal 48588 zcmeI4O^(w*5JoEm0TL^afDHoH9D@C<*}@GF;s7IY0ak2>1qa{+z=9)j1iBKJDR=x6 zw4*COw3 zMBaSY++QEr(EtWu00v+H24DaNU;qYS00v+H24DaNU;qYS00v+H24DaNU;qYS00v+H z24DaNU;qYS00v+H24DaNU;qYS00v+H24DaNU;qYS00v+H24DaNU;qYS00v+H1|l&a zKhhTlRIo?VtcG4|@JxHCL5oN|;9E>)@D1O#Fc9e(RYR{^w7z6*4O&F%;gZ^KIaegj zYUp)~))%YgyUSMpJ$*6lw|oY~w^+UAj$v9~bVAvvbGJbNp?C*BYKZk$M=2 zch1DTwOpHz`7^a48nlSiL(%)2YHj|_`LlG) z`4>sE8hRc0W;%LLY|TbHmd}?w%8y%pH`bs7=y(R_kVc^PZU0wwBN5{K{*r){U*| zUwYlMzByg{aLR)*-}<8EptS#1>t=m3k8D)=E%u|vWBamQeMYPLmtJ?Tw<_qhx4Dhp zCtb76ulssix4eb1wEtG?daqR1T=#r#Ir*69`MKtvv9+py>2>#BskUD4vDk9Pe3;4~ z%NSy0|;twWvhh;@B|{_kvxJE$go35$b#%{ z&`%lW2(mE{OIdAGJ_3NMSquK9G^^rPn#}O}Q5s#M{j&k+~z^}AnpmOEg8 z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`>bzi;6FGooA% z>A76>S^3D=o45Jza+&Uia?APk?aTbG{?^RU zP;TaJc2{F^Q|8u{QCF{=y)peS|LMEPZJhHoWUw!{JZE_?XRNG;KHvFbT=eCZvyt0k z?)|r(DudD`uh1yZsW-< zXOj1Jc6C3W$!)y3<(#^9xveHQ_wL>qV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= WV1NMz7+`<_1{h#~0R|XYrhy;nQu+@7 literal 0 HcmV?d00001 diff --git a/tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.00c-0.25/zncc_dicho_nappe_surech_sinc/gri_zncc_dicho_nappe_surech_sinc_row_disp.tif b/tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.00c-0.25/zncc_dicho_nappe_surech_sinc/gri_zncc_dicho_nappe_surech_sinc_row_disp.tif new file mode 100644 index 0000000000000000000000000000000000000000..b90f9fd049147aed604b71b2cfc4045e02e418dc GIT binary patch literal 48588 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

5OWcF%lZMO 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

F8819jJATBO<@#Pj~SgfZY~(W=hi^WESfKM#JA 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

S1)G~eyoaLzmBkyhKu_gHIVyGE_ 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 L48Xwuj)8vwfbDfT literal 0 HcmV?d00001 diff --git a/tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.25c+0.25/zncc_dicho_nappe_surech_sinc/gri_zncc_dicho_nappe_surech_sinc_col_disp.tif b/tests/performance_tests/refinement/dichotomy/data_medicis/T50JML/r+0.25c+0.25/zncc_dicho_nappe_surech_sinc/gri_zncc_dicho_nappe_surech_sinc_col_disp.tif new file mode 100644 index 0000000000000000000000000000000000000000..9cf123db8c9027feef807dfc079f9b83cda4622c GIT binary patch literal 48588 zcmeI)F=`e;6bJCPuBc#TKy5^=bBOe*)5aT!cz}S~r?S<;19$>S;gNC#XJCg6%YGj- zFdqx@OIY^p%S$%A|8G*}^71^MMa1)nX^tsXpVBo|^`oVJpZfDs=eZ|U{bG6?PgCz# zx?WcOS4(}C`ma-+XTGQFO*M11)N|_RkNdX|pP%Qu)cO4`;^#%g?T3h)n~0A;BCh}B z*}q?0cEA7w3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJgP zzk#pmKQpecZ>g8Bb${!bk$sHRS(LoWz5d#vT5kL2R|Ar+)OG6T*T>P<`=)+NotNW?r?ZH~WyE|QarGE+@tUuFzcs7@ z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<4E%os_vxP* z??wzp${3MbnROrQeav3VpB+2D&#$(Ia$9ZPN_&%=+)5jq(){+@-`sD0Ps(jd&#BV) z+U~b}?2n&3LrZ`Esm|Z#)@IZ{Z~H^Xsjge;`|j_tW#>bg<$me!Kh^n{<<#%V?f3cY zXEby^l-*Rlm%i_zoVxv?%seN{?ZY;ooIzW6kKbh`w{p3a-tXp@Jp&9dzyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# nzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2gJv Date: Thu, 8 Aug 2024 18:05:27 +0200 Subject: [PATCH 071/121] test: add performance test for pandora2d dichotomy method --- tests/conftest.py | 18 + tests/functional_tests/conftest.py | 19 - .../dichotomy/test_dichotomy_performance.py | 390 ++++++++++++++++++ 3 files changed, 408 insertions(+), 19 deletions(-) create mode 100644 tests/performance_tests/refinement/dichotomy/test_dichotomy_performance.py diff --git a/tests/conftest.py b/tests/conftest.py index afeca86..11e08e4 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -25,12 +25,15 @@ import pathlib import re +import json import numpy as np import pytest import rasterio from pandora.common import write_data_array import xarray as xr +import pandora2d + def pytest_collection_modifyitems(config, items): """ @@ -219,3 +222,18 @@ def random_seed(): @pytest.fixture() def random_generator(random_seed): return np.random.default_rng(random_seed) + + +@pytest.fixture() +def run_pipeline(tmp_path): + """Fixture that returns a function to run a pipeline and which returns the output directory path.""" + + def run(configuration, output_dir="output"): + config_path = tmp_path / "config.json" + with config_path.open("w", encoding="utf-8") as file_: + json.dump(configuration, file_, indent=2) + + pandora2d.main(str(config_path), str(tmp_path / output_dir), verbose=False) + return tmp_path + + return run diff --git a/tests/functional_tests/conftest.py b/tests/functional_tests/conftest.py index c964077..fb9dbc0 100644 --- a/tests/functional_tests/conftest.py +++ b/tests/functional_tests/conftest.py @@ -18,27 +18,8 @@ # """Module with global test fixtures.""" -import json - import pytest -import pandora2d - - -@pytest.fixture() -def run_pipeline(tmp_path): - """Fixture that returns a function to run a pipeline and which returns the output directory path.""" - - def run(configuration, output_dir="output"): - config_path = tmp_path / "config.json" - with config_path.open("w", encoding="utf-8") as file_: - json.dump(configuration, file_, indent=2) - - pandora2d.main(str(config_path), str(tmp_path / output_dir), verbose=False) - return tmp_path - - return run - @pytest.fixture() def correct_pipeline_without_refinement(): diff --git a/tests/performance_tests/refinement/dichotomy/test_dichotomy_performance.py b/tests/performance_tests/refinement/dichotomy/test_dichotomy_performance.py new file mode 100644 index 0000000..24e0884 --- /dev/null +++ b/tests/performance_tests/refinement/dichotomy/test_dichotomy_performance.py @@ -0,0 +1,390 @@ +# Copyright (c) 2024 Centre National d'Etudes Spatiales (CNES). +# +# This file is part of PANDORA2D +# +# https://github.com/CNES/Pandora2D +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +""" +Test the refinement.dichotomy pipeline. +""" + +from typing import Tuple +from pathlib import Path + +import pytest + +import numpy as np +import rasterio + +from numpy.typing import NDArray + + +class TestComparisonMedicis: + """ + Tests that the pandora2d disparity maps after using the dichotomy + are similar to those obtained with Medicis. + """ + + def remove_edges( + self, medicis_map: NDArray[np.floating], pandora2d_map: NDArray[np.floating] + ) -> Tuple[NDArray[np.floating], NDArray[np.floating]]: + """ + Get reduced disparity maps after removing medicis edges full of nans (greater than pandora2d edges) + on both pandora2d and medicis disparity maps. + """ + + # Gets coordinates for which medicis col_map is different from nan + # i.e. points that are not within the edges + non_nan_row_indexes, non_nan_col_indexes = np.where(~np.isnan(medicis_map)) + + # Remove medicis edges + medicis_map = medicis_map[ + non_nan_row_indexes[0] : non_nan_row_indexes[-1] + 1, non_nan_col_indexes[0] : non_nan_col_indexes[-1] + 1 + ] + + # Remove pandora2d edges to get the same points as the ones in medicis disparity maps + pandora2d_map = pandora2d_map[ + non_nan_row_indexes[0] : non_nan_row_indexes[-1] + 1, non_nan_col_indexes[0] : non_nan_col_indexes[-1] + 1 + ] + + return medicis_map, pandora2d_map + + @pytest.fixture() + def data_path(self): + """ + Return path to get left and right images and medicis data + """ + return Path("tests/performance_tests/refinement/dichotomy/data_medicis/") + + @pytest.fixture() + def shift_path(self, data_path, img_path): + """ + Return path to get left and right images and medicis data + """ + return data_path / img_path + + @pytest.fixture() + def medicis_maps_path(self, shift_path, medicis_method_path): + """ + Return path to get medicis data + """ + return shift_path / medicis_method_path + + @pytest.fixture() + def cfg_dichotomy(self, shift_path, subpix, filter_method): + """ + Make user configuration for dichotomy loop + """ + + return { + "input": { + "left": {"nodata": -9999, "img": str(shift_path / "left.tif")}, + "right": {"nodata": -9999, "img": str(shift_path / "right.tif")}, + "col_disparity": {"init": 0, "range": 3}, + "row_disparity": {"init": 0, "range": 3}, + }, + "pipeline": { + "matching_cost": { + "matching_cost_method": "zncc", + "window_size": 65, + "step": [1, 1], + "subpix": subpix, + "spline_order": 3, + }, # we use spline_order=3 to get better results when subpix is different from 1 + "disparity": {"disparity_method": "wta", "invalid_disparity": np.nan}, + "refinement": {"refinement_method": "dichotomy", "iterations": 9, "filter": {"method": filter_method}}, + }, + } + + @pytest.mark.parametrize( + [ + "img_path", + "subpix", + "filter_method", + "medicis_method_path", + "row_shift", + "col_shift", + "row_map_threshold", + "col_map_threshold", + ], + [ + pytest.param( + "T19KER/r+0.00c+0.50/", + 1, + "bicubic", + "zncc_dicho_nappe_bco/gri_zncc_dicho_nappe_bco_", + 0.0, + 0.5, + 0.00001, + 0.0, + id="T19KER (Calama, Chile) shifted of 0.5 in columns with bicubic, 9 iter and subpix=1", + ), + pytest.param( + "T50JML/r+0.00c+0.50/", + 1, + "bicubic", + "zncc_dicho_nappe_bco/gri_zncc_dicho_nappe_bco_", + 0.0, + 0.5, + 0.0, + 0.0, + id="T50JML (Perth, Australia) shifted of 0.5 in columns with bicubic, 9 iter and subpix=1", + ), + pytest.param( + "T19KER/r+0.00c+0.25/", + 1, + "bicubic", + "zncc_dicho_nappe_bco/gri_zncc_dicho_nappe_bco_", + 0.0, + 0.25, + 0.00001, + 0.0, + id="T19KER (Calama, Chile) shifted of 0.25 in columns with bicubic, 9 iter and subpix=1", + ), + pytest.param( + "T50JML/r+0.00c+0.25/", + 1, + "bicubic", + "zncc_dicho_nappe_bco/gri_zncc_dicho_nappe_bco_", + 0.0, + 0.25, + 0.0, + 0.0, + id="T50JML (Perth, Australia) shifted of 0.25 in columns with bicubic, 9 iter and subpix=1", + ), + pytest.param( + "T19KER/r+0.00c-0.25/", + 4, + "bicubic", + "zncc_dicho_nappe_surech_bco/gri_zncc_dicho_nappe_surech_bco_", + 0.0, + -0.25, + 0.002, + 0.0, + id="T19KER (Calama, Chile) shifted of -0.25 in columns with bicubic, 9 iter and subpix=4", + ), + pytest.param( + "T50JML/r+0.00c-0.25/", + 4, + "bicubic", + "zncc_dicho_nappe_surech_bco/gri_zncc_dicho_nappe_surech_bco_", + 0.0, + -0.25, + 0.004, + 0.003, + id="T50JML (Perth, Australia) shifted of -0.25 in columns with bicubic, 9 iter and subpix=4", + ), + pytest.param( + "T19KER/r+0.00c+0.50/", + 4, + "bicubic", + "zncc_dicho_nappe_surech_bco/gri_zncc_dicho_nappe_surech_bco_", + 0.0, + 0.5, + 0.004, + 0.003, + id="T19KER (Calama, Chile) shifted of 0.5 in columns with bicubic, 9 iter and subpix=4", + ), + pytest.param( + "T50JML/r+0.00c+0.50/", + 4, + "bicubic", + "zncc_dicho_nappe_surech_bco/gri_zncc_dicho_nappe_surech_bco_", + 0.0, + 0.5, + 0.004, + 0.002, + id="T50JML (Perth, Australia) shifted of 0.5 in columns with bicubic, 9 iter and subpix=4", + ), + pytest.param( + "T19KER/r+0.25c+0.25/", + 4, + "bicubic", + "zncc_dicho_nappe_surech_bco/gri_zncc_dicho_nappe_surech_bco_", + 0.25, + 0.25, + 0.0, + 0.0, + id="T19KER (Calama, Chile) shifted of 0.25 in col and in rows with bicubic, 9 iter and subpix=4", + ), + pytest.param( + "T50JML/r+0.25c+0.25/", + 4, + "bicubic", + "zncc_dicho_nappe_surech_bco/gri_zncc_dicho_nappe_surech_bco_", + 0.25, + 0.25, + 0.005, + 0.005, + id="T50JML (Perth, Australia) shifted of 0.25 in col and in rows with bicubic, 9 iter and subpix=4", + ), + pytest.param( + "T19KER/r+0.00c+0.50/", + 1, + "sinc", + "zncc_dicho_nappe_sinc/gri_zncc_dicho_nappe_sinc_", + 0.0, + 0.5, + 0.0001, + 0.0001, + id="T19KER (Calama, Chile) shifted of 0.5 in columns with sinc, 9 iter and subpix=1", + ), + pytest.param( + "T50JML/r+0.00c+0.50/", + 1, + "sinc", + "zncc_dicho_nappe_sinc/gri_zncc_dicho_nappe_sinc_", + 0.0, + 0.5, + 0.0, + 0.0, + id="T50JML (Perth, Australia) shifted of 0.5 in columns with sinc, 9 iter and subpix=1", + ), + pytest.param( + "T19KER/r+0.00c+0.25/", + 1, + "sinc", + "zncc_dicho_nappe_sinc/gri_zncc_dicho_nappe_sinc_", + 0.0, + 0.25, + 0.0, + 0.0, + id="T19KER (Calama, Chile) shifted of 0.25 in columns with sinc, 9 iter and subpix=1", + ), + pytest.param( + "T50JML/r+0.00c+0.25/", + 1, + "sinc", + "zncc_dicho_nappe_sinc/gri_zncc_dicho_nappe_sinc_", + 0.0, + 0.25, + 0.00001, + 0.00001, + id="T50JML (Perth, Australia) shifted of 0.25 in columns with sinc, 9 iter and subpix=1", + ), + pytest.param( + "T19KER/r+0.00c-0.25/", + 4, + "sinc", + "zncc_dicho_nappe_surech_sinc/gri_zncc_dicho_nappe_surech_sinc_", + 0.0, + -0.25, + 0.003, + 0.01, + id="T19KER (Calama, Chile) shifted of -0.25 in columns with sinc, 9 iter and subpix=4", + ), + pytest.param( + "T50JML/r+0.00c-0.25/", + 4, + "sinc", + "zncc_dicho_nappe_surech_sinc/gri_zncc_dicho_nappe_surech_sinc_", + 0.0, + -0.25, + 0.004, + 0.005, + id="T50JML (Perth, Australia) shifted of -0.25 in columns with sinc, 9 iter and subpix=4", + ), + pytest.param( + "T19KER/r+0.00c+0.50/", + 4, + "sinc", + "zncc_dicho_nappe_surech_sinc/gri_zncc_dicho_nappe_surech_sinc_", + 0.0, + 0.5, + 0.003, + 0.004, + id="T19KER (Calama, Chile) shifted of 0.5 in columns with sinc, 9 iter and subpix=4", + ), + pytest.param( + "T50JML/r+0.00c+0.50/", + 4, + "sinc", + "zncc_dicho_nappe_surech_sinc/gri_zncc_dicho_nappe_surech_sinc_", + 0.0, + 0.5, + 0.003, + 0.003, + id="T50JML (Perth, Australia) shifted of 0.5 in columns with sinc, 9 iter and subpix=4", + ), + pytest.param( + "T19KER/r+0.25c+0.25/", + 4, + "sinc", + "zncc_dicho_nappe_surech_sinc/gri_zncc_dicho_nappe_surech_sinc_", + 0.25, + 0.25, + 0.01, + 0.007, + id="T19KER (Calama, Chile) shifted of 0.25 in col and in rows with sinc, 9 iter and subpix=4", + ), + pytest.param( + "T50JML/r+0.25c+0.25/", + 4, + "sinc", + "zncc_dicho_nappe_surech_sinc/gri_zncc_dicho_nappe_surech_sinc_", + 0.25, + 0.25, + 0.004, + 0.005, + id="T50JML (Perth, Australia) shifted of 0.25 in col and in rows with sinc, 9 iter and subpix=4", + ), + ], + ) + def test_pandora2d_medicis_dichotomy( + self, run_pipeline, cfg_dichotomy, medicis_maps_path, row_shift, col_shift, row_map_threshold, col_map_threshold + ): + """ + Test that pandora2d mean errors are smaller + than those of medicis plus a threshold given as a parameter. + + Difference between medicis and pandora2d disparity maps may be linked to the difference + in the interpolation method used between the two tools when the subpix is greater than 1. + As pandora2d use the scipy zoom method (spline interpolation), + medicis use the same interpolation method as the one used for the dichotomy loop (bicubic or sinc). + + When the threshold is 0, pandora2d is at least as effective as medicis. + When the threshold is > 0, the mean error of medicis + is better than the one of pandora2d by about the value of the threshold. + """ + + # Run pandora2D pipeline + run_dir = run_pipeline(cfg_dichotomy) + + # Get pandora2d disparity maps + with rasterio.open(run_dir / "output" / "row_disparity.tif") as src: + row_map_pandora2d = src.read(1) + with rasterio.open(run_dir / "output" / "columns_disparity.tif") as src: + col_map_pandora2d = src.read(1) + + # Get medicis disparity maps + with rasterio.open(str(medicis_maps_path) + "row_disp.tif") as src: + row_map_medicis = src.read(1) + with rasterio.open(str(medicis_maps_path) + "col_disp.tif") as src: + col_map_medicis = src.read(1) + + # Remove medicis edges on both pandora2d and medicis disparity maps + # in order to compare the same sample of points. + row_map_medicis, row_map_pandora2d = self.remove_edges(row_map_medicis, row_map_pandora2d) + col_map_medicis, col_map_pandora2d = self.remove_edges(col_map_medicis, col_map_pandora2d) + + # Compute mean error between column disparities and real column shift + mean_error_pandora2d_col = np.nanmean(abs(col_map_pandora2d - col_shift)) + mean_error_medicis_col = np.nanmean(abs(col_map_medicis - col_shift)) + + # Compute mean error between row disparities and real row shift + mean_error_pandora2d_row = np.nanmean(abs(row_map_pandora2d - row_shift)) + mean_error_medicis_row = np.nanmean(abs(row_map_medicis - row_shift)) + + assert mean_error_pandora2d_col <= mean_error_medicis_col + col_map_threshold + assert mean_error_pandora2d_row <= mean_error_medicis_row + row_map_threshold From aa90b88860c574873c1b48b41d69fa1c7cfee39e Mon Sep 17 00:00:00 2001 From: duzelis Date: Fri, 23 Aug 2024 11:03:40 +0200 Subject: [PATCH 072/121] fix: update cost_surface precision in dichotomy loop --- pandora2d/refinement/dichotomy.py | 30 +++-- .../test_refinement/test_dichotomy.py | 117 +++++++++++++++++- 2 files changed, 137 insertions(+), 10 deletions(-) diff --git a/pandora2d/refinement/dichotomy.py b/pandora2d/refinement/dichotomy.py index 5d47b50..5132584 100644 --- a/pandora2d/refinement/dichotomy.py +++ b/pandora2d/refinement/dichotomy.py @@ -232,7 +232,7 @@ def refinement_method( # pylint: disable=too-many-locals # Syntax disp_row_init[...] is for assign value back to row_map with np.nditer (pos_disp_row_init, pos_disp_col_init), disp_row_init[...], disp_col_init[...], cost_value[...] = ( search_new_best_point( - cost_surface.data, + cost_surface, precision, (disp_row_init, disp_col_init), # type: ignore # Reason: is 0 dim array (pos_disp_row_init, pos_disp_col_init), @@ -269,6 +269,7 @@ def __init__(self, cost_volumes: xr.Dataset): :type disparity_margins: Margins """ self.cost_volumes = cost_volumes + self.cost_volumes["cost_volumes"].attrs.update({"subpixel": cost_volumes.attrs["subpixel"]}) def __getitem__(self, item): """Get cost surface of coordinates item where item is (row, col).""" @@ -295,7 +296,7 @@ def all_same(sequence): def search_new_best_point( - cost_surface: np.ndarray, + cost_surface: xr.DataArray, precision: float, initial_disparity: Union[Tuple[np.floating, np.floating], Tuple[int, int]], initial_position: Union[Tuple[np.floating, np.floating], Tuple[int, int]], @@ -307,8 +308,8 @@ def search_new_best_point( Find best position and cost after interpolation of cost surface for given precision. :param cost_surface: Disparities in rows and cols of a point - :type cost_surface: np.ndarray - :param precision: subpixellic precision to use + :type cost_surface: xr.Dataarray with subpix attribute + :param precision: subpixellic disparity precision to use :type precision: float :param initial_disparity: initial disparities (disp_row, disp_col) :type initial_disparity: Union[Tuple[np.floating, np.floating], Tuple[int, int]] @@ -336,17 +337,32 @@ def search_new_best_point( disp_row_shifts = np.array([-1, -1, -1, 0, 0, 0, 1, 1, 1], dtype=np.float32) * precision disp_col_shifts = np.array([-1, 0, 1, -1, 0, 1, -1, 0, 1], dtype=np.float32) * precision + # Whatever the cost_surface.attrs["subpixel"] value, the first precision in the cost surface is always 0.5 + # Then we multiply by cost_surface.attrs["subpixel"] to get right new_cols and new_rows + + # When there is no subpixel (it equals to 1), precision shift and index shift match: + # the precision shift between two points is 1. So shifting from 0.5 precision corresponds to shift index of 0.5. + # But when there is a subpixel, they do not match anymore: + # in this case, the precision shift between two points is 1/subpix. + # So to get the index corresponding to a given precision shift, we need to multiply this value by subpix. + # For example when subix equals 2, the precision shift between two points is 0.5 while the index shift is still 1. + # So in this case, shifting from 0.5 precision corresponds to shift index of 1 + # (`index_shift = 1 = 0.5 * 2 = precision_shift * subpix`) + # In the same way, shifting from 0.25 precision corresponds to shift index of 0.5 + # (`index_shift = 0.5 = 0.25 * 2 = precision_shift * subpix`) + # disp_row are along columns in cost_surface, then new_cols are computed from initial_pos_disp_row - new_cols = disp_row_shifts + initial_pos_disp_row + new_cols = disp_row_shifts * cost_surface.attrs["subpixel"] + initial_pos_disp_row + # disp_col are along rows in cost_surface, then new_rows are computed from initial_pos_disp_col - new_rows = disp_col_shifts + initial_pos_disp_col + new_rows = disp_col_shifts * cost_surface.attrs["subpixel"] + initial_pos_disp_col # New subpixel disparity values new_rows_disp = disp_row_shifts + initial_disp_row new_cols_disp = disp_col_shifts + initial_disp_col # Interpolate points at positions (new_rows[i], new_cols[i]) - candidates = filter_dicho.interpolate(cost_surface, (new_cols, new_rows)) + candidates = filter_dicho.interpolate(cost_surface.data, (new_cols, new_rows)) # In case a NaN is present in the kernel, candidates will be all-NaNs. Let’s restore initial_position value so # that best candidate search will be able to find it. diff --git a/tests/unit_tests/test_refinement/test_dichotomy.py b/tests/unit_tests/test_refinement/test_dichotomy.py index 86db96f..9c9c65f 100644 --- a/tests/unit_tests/test_refinement/test_dichotomy.py +++ b/tests/unit_tests/test_refinement/test_dichotomy.py @@ -758,8 +758,29 @@ def test_iteration(self, cost_volumes, disp_map): ) +@pytest.fixture() +def make_cost_surface(cost_surface_data, subpix): + """ + Creates a cost surface data array according to given data and subpix + """ + + cost_surface = xr.DataArray(cost_surface_data) + + cost_surface.attrs["subpixel"] = subpix + + return cost_surface + + @pytest.mark.parametrize( - ["cost_surface", "precision", "initial_disparity", "initial_position", "initial_value", "expected"], + [ + "cost_surface_data", + "subpix", + "precision", + "initial_disparity", + "initial_position", + "initial_value", + "expected", + ], [ pytest.param( np.array( @@ -771,6 +792,7 @@ def test_iteration(self, cost_volumes, disp_map): [0, 0, 0, 0, 0], ] ), + 1, 0.5, (2, 2), (2, 2), @@ -789,6 +811,7 @@ def test_iteration(self, cost_volumes, disp_map): [0, 0, 0, 0, 0], ] ), + 1, 0.5, (2, 2), (2, 2), @@ -806,6 +829,7 @@ def test_iteration(self, cost_volumes, disp_map): [0, 0, 0, 0, 0], ] ), + 1, 0.25, (1.5, 2.5), (1.5, 2.5), @@ -823,6 +847,7 @@ def test_iteration(self, cost_volumes, disp_map): [0, 0, 0, 0, 0], ] ), + 1, 0.5, (2, 2), (2, 2), @@ -840,6 +865,7 @@ def test_iteration(self, cost_volumes, disp_map): [0, 0, 0, 0, 0], ] ), + 1, 0.5, (2, 2), (2, 2), @@ -857,6 +883,7 @@ def test_iteration(self, cost_volumes, disp_map): [0, 0, 0, 0, 0], ] ), + 1, 0.5, (2, 2), (2, 2), @@ -864,9 +891,93 @@ def test_iteration(self, cost_volumes, disp_map): (refinement.dichotomy.Point(2.5, 2.5), np.float32(2.5), np.float32(2.5), np.float32(6.64453125)), id="NaN outside of kernel has no effect", ), + pytest.param( + np.array( + [ + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 0], + [0, 0, 1, 0, 0], + [0, 20, 0, 0, 0], + [0, 0, 0, 0, 0], + ] + ), + 2, + 0.25, + (2, 2), + (2, 2), + 1.0, + (refinement.dichotomy.Point(1.5, 2.5), np.float32(1.75), np.float32(2.25), np.float32(6.64453125)), + id="Bottom left is best and subpix=2", + ), + pytest.param( + np.array( + [ + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 0], + [0, 0, 1, 0, 0], + [0, 0, 0, 20, 0], + [0, 0, 0, 0, 0], + ] + ), + 2, + 0.125, + (2, 2), + (2, 2), + 1.0, + ( + refinement.dichotomy.Point(2.25, 2.25), + np.float32(2.125), + np.float32(2.125), + np.float32(1.77862548828125), + ), + id="Bottom right is best and subpix=2", + ), + pytest.param( + np.array( + [ + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 0], + [0, 0, 1, 0, 0], + [0, 20, 0, 0, 0], + [0, 0, 0, 0, 0], + ] + ), + 4, + 0.125, + (2, 2), + (2, 2), + 1.0, + (refinement.dichotomy.Point(1.5, 2.5), np.float32(1.875), np.float32(2.125), np.float32(6.64453125)), + id="Bottom left is best and subpix=4", + ), + pytest.param( + np.array( + [ + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 0], + [0, 0, 1, 0, 0], + [0, 0, 0, 20, 0], + [0, 0, 0, 0, 0], + ] + ), + 4, + 0.0625, + (2, 2), + (2, 2), + 1.0, + ( + refinement.dichotomy.Point(2.25, 2.25), + np.float32(2.0625), + np.float32(2.0625), + np.float32(1.77862548828125), + ), + id="Bottom right is best and subpix=4", + ), ], ) -def test_search_new_best_point(cost_surface, precision, initial_disparity, initial_position, initial_value, expected): +def test_search_new_best_point( + make_cost_surface, precision, initial_disparity, initial_position, initial_value, expected +): """Test we get new coordinates as expected.""" filter_dicho = Bicubic({"method": "bicubic"}) @@ -874,7 +985,7 @@ def test_search_new_best_point(cost_surface, precision, initial_disparity, initi cost_selection_method = np.nanargmax result = refinement.dichotomy.search_new_best_point( - cost_surface, + make_cost_surface, precision, initial_disparity, initial_position, From 1f7ce20ac085614ad8cfcbfbeb936778c1668bbf Mon Sep 17 00:00:00 2001 From: duzelis Date: Fri, 23 Aug 2024 16:49:41 +0200 Subject: [PATCH 073/121] feat: add spline_order parameter in matching_cost --- pandora2d/img_tools.py | 18 +++++++++++++----- pandora2d/matching_cost/matching_cost.py | 13 ++++++++++++- 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/pandora2d/img_tools.py b/pandora2d/img_tools.py index 908385a..0d3d7df 100644 --- a/pandora2d/img_tools.py +++ b/pandora2d/img_tools.py @@ -336,7 +336,7 @@ def remove_roi_margins(dataset: xr.Dataset, cfg: Dict): def row_zoom_img( - img: np.ndarray, ny: int, subpix: int, coords: Coordinates, ind: int, no_data: Union[int, str] + img: np.ndarray, ny: int, subpix: int, coords: Coordinates, ind: int, no_data: Union[int, str], order: int = 1 ) -> xr.Dataset: """ Return a list that contains the shifted right images in row @@ -355,13 +355,15 @@ def row_zoom_img( :type ind: int :param no_data: no_data value in img :type no_data: Union[int, str] + :param order: The order of the spline interpolation, default is 1. The order has to be in the range 0-5. + :type order: int, optional :return: an array that contains the shifted right images in row :rtype: array of xarray.Dataset """ shift = 1 / subpix # For each index, shift the right image for subpixel precision 1/subpix*index - data = zoom(img, ((ny * subpix - (subpix - 1)) / float(ny), 1), order=1)[ind::subpix, :] + data = zoom(img, ((ny * subpix - (subpix - 1)) / float(ny), 1), order=order)[ind::subpix, :] # Add a row full of no data at the end of data have the same shape as img # It enables to use Pandora's compute_cost_volume() methods, @@ -379,7 +381,7 @@ def row_zoom_img( def col_zoom_img( - img: np.ndarray, nx: int, subpix: int, coords: Coordinates, ind: int, no_data: Union[int, str] + img: np.ndarray, nx: int, subpix: int, coords: Coordinates, ind: int, no_data: Union[int, str], order: int = 1 ) -> xr.Dataset: """ Return a list that contains the shifted right images in col @@ -398,13 +400,15 @@ def col_zoom_img( :type ind: int :param no_data: no_data value in img :type no_data: Union[int, str] + :param order: The order of the spline interpolation, default is 1. The order has to be in the range 0-5. + :type order: int, optional :return: an array that contains the shifted right images in col :rtype: array of xarray.Dataset """ shift = 1 / subpix # For each index, shift the right image for subpixel precision 1/subpix*index - data = zoom(img, (1, (nx * subpix - (subpix - 1)) / float(nx)), order=1)[:, ind::subpix] + data = zoom(img, (1, (nx * subpix - (subpix - 1)) / float(nx)), order=order)[:, ind::subpix] # Add a col full of no data at the end of data to have the same shape as img # It enables to use Pandora's compute_cost_volume() methods, @@ -420,7 +424,7 @@ def col_zoom_img( ) -def shift_subpix_img(img_right: xr.Dataset, subpix: int, row: bool = True) -> List[xr.Dataset]: +def shift_subpix_img(img_right: xr.Dataset, subpix: int, row: bool = True, order: int = 1) -> List[xr.Dataset]: """ Return an array that contains the shifted right images @@ -430,6 +434,8 @@ def shift_subpix_img(img_right: xr.Dataset, subpix: int, row: bool = True) -> Li :type subpix: int :param column: column to shift (otherwise row) :type column: bool + :param order: The order of the spline interpolation, default is 1. The order has to be in the range 0-5. + :type order: int, optional :return: an array that contains the shifted right images :rtype: array of xarray.Dataset """ @@ -446,6 +452,7 @@ def shift_subpix_img(img_right: xr.Dataset, subpix: int, row: bool = True) -> Li img_right.coords, ind, img_right.attrs["no_data_img"], + order, ).assign_attrs(img_right.attrs) ) else: @@ -457,6 +464,7 @@ def shift_subpix_img(img_right: xr.Dataset, subpix: int, row: bool = True) -> Li img_right.coords, ind, img_right.attrs["no_data_img"], + order, ).assign_attrs(img_right.attrs) ) diff --git a/pandora2d/matching_cost/matching_cost.py b/pandora2d/matching_cost/matching_cost.py index 7e55e32..744507f 100644 --- a/pandora2d/matching_cost/matching_cost.py +++ b/pandora2d/matching_cost/matching_cost.py @@ -80,6 +80,7 @@ def cfg(self) -> Dict[str, Union[str, int, List[int]]]: "step": self._step, "window_size": self._window_size, "subpix": self._subpix, + "spline_order": self._spline_order, } @property @@ -112,6 +113,16 @@ def _subpix(self) -> int: """ return self.pandora_matching_cost_._subpix # pylint: disable=W0212 protected-access + @property + def _spline_order(self) -> int: + """ + Get spline_order, parameter specific to pandora + + :return: spline_order: spline_order used + :rtype: spline_order: int + """ + return self.pandora_matching_cost_._spline_order # pylint: disable=W0212 protected-access + @property def margins(self) -> Margins: """ @@ -326,7 +337,7 @@ def compute_cost_volumes( row_index = None # Contains the shifted right images (with subpixel) - imgs_right_shift_subpixel = img_tools.shift_subpix_img(img_right, self._subpix) + imgs_right_shift_subpixel = img_tools.shift_subpix_img(img_right, self._subpix, order=self._spline_order) for idx, disp_row in enumerate(disps_row): i_right = int((disp_row % 1) * self._subpix) From 89ff71abbf3da4acd3eabd079c96719f74fddd58 Mon Sep 17 00:00:00 2001 From: duzelis Date: Fri, 23 Aug 2024 16:51:19 +0200 Subject: [PATCH 074/121] docs: add spline_order parameter in matching cost configuration --- docs/source/userguide/step_by_step/matching_cost.rst | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/source/userguide/step_by_step/matching_cost.rst b/docs/source/userguide/step_by_step/matching_cost.rst index 1e0c49c..0a27803 100644 --- a/docs/source/userguide/step_by_step/matching_cost.rst +++ b/docs/source/userguide/step_by_step/matching_cost.rst @@ -62,6 +62,12 @@ Configuration and parameters - 1 - [1,2,4] - No + * - spline_order + - Spline order used for interpolation when subpix > 1 + - int + - 1 + - > 0 and < 6 + - No .. note:: From 9c7f8fe0032fb48916cc8e212b3fc4232070588e Mon Sep 17 00:00:00 2001 From: Philippe Mallet-Ladeira Date: Mon, 19 Aug 2024 15:40:39 +0200 Subject: [PATCH 075/121] feat(optical flows): invalid disparities outside of interval Make use of disparity grids and take step into account to read disparities from the grids corresponding to the refined ones. Refs: #158 --- pandora2d/refinement/optical_flow.py | 24 ++- .../test_refinement/test_optical_flow.py | 166 ++++++++++++++++++ 2 files changed, 185 insertions(+), 5 deletions(-) diff --git a/pandora2d/refinement/optical_flow.py b/pandora2d/refinement/optical_flow.py index 8e04f80..5ffcced 100644 --- a/pandora2d/refinement/optical_flow.py +++ b/pandora2d/refinement/optical_flow.py @@ -21,11 +21,13 @@ """ This module contains functions associated to the optical flow method used in the refinement step. """ + from typing import Dict, Tuple, List import numpy as np import xarray as xr from json_checker import And +from numpy.typing import NDArray from scipy.ndimage import map_coordinates from pandora.margins import Margins @@ -271,7 +273,6 @@ def optical_flow( final_dec_col = np.zeros(left_img.shape[2]) for idx in list_idx_to_compute: - left_matching_cost = left_img[:, :, idx] right_matching_cost = right_img[:, :, idx] @@ -411,9 +412,22 @@ def refinement_method( constant_values=self._invalid_disp, ) - delta_col[delta_col <= img_left.attrs["col_disparity_source"][0]] = self._invalid_disp - delta_col[delta_col >= img_left.attrs["col_disparity_source"][1]] = self._invalid_disp - delta_row[delta_row <= img_left.attrs["row_disparity_source"][0]] = self._invalid_disp - delta_row[delta_row >= img_left.attrs["row_disparity_source"][1]] = self._invalid_disp + self._invalid_out_of_grid_disparities(cost_volumes.attrs["step"], delta_col, img_left["col_disparity"]) + self._invalid_out_of_grid_disparities(cost_volumes.attrs["step"], delta_row, img_left["row_disparity"]) return delta_col, delta_row, disp_map["correlation_score"].data + + def _invalid_out_of_grid_disparities(self, step: List, delta: NDArray[np.floating], disparity: xr.DataArray): + """ + Replace delta values by invalid_disp value when it is outside the corresponding disparity range defined by + the disparity grid. + + :param step: [row_step, col_step] + :type step: list + :param delta: refined disparity map + :type delta: np.NDArray + :param disparity: pixelic disparity grids with min and max `band_disp` coordinates. + :type disparity: xr.DataArray + """ + delta[delta <= disparity.sel(band_disp="min").data[:: step[0], :: step[1]]] = self._invalid_disp + delta[delta >= disparity.sel(band_disp="max").data[:: step[0], :: step[1]]] = self._invalid_disp diff --git a/tests/unit_tests/test_refinement/test_optical_flow.py b/tests/unit_tests/test_refinement/test_optical_flow.py index 940f9b5..52de9f1 100644 --- a/tests/unit_tests/test_refinement/test_optical_flow.py +++ b/tests/unit_tests/test_refinement/test_optical_flow.py @@ -21,6 +21,8 @@ Test refinement step """ +from typing import Dict + # pylint: disable=redefined-outer-name, protected-access, unused-argument # mypy: disable-error-code=attr-defined @@ -584,3 +586,167 @@ def test_window_size_refinement_method(make_left_right_images, row, col, step_ro assert np.array_equal(row, delta_row.shape[1]) assert np.array_equal(col, delta_col.shape[0]) assert np.array_equal(col, delta_col.shape[1]) + + +class TestDisparityGrids: + """Test influence of disparity grids.""" + + @pytest.fixture() + def nb_rows(self) -> int: + return 10 + + @pytest.fixture() + def nb_cols(self) -> int: + return 8 + + @pytest.fixture() + def image( + self, + random_generator: np.random.Generator, + nb_rows: int, + nb_cols: int, + min_row: bool, + max_row: bool, + min_col: bool, + max_col: bool, + ) -> xr.Dataset: + """ + Create random image dataset with disparity grids with a range of 3 or 7. + + :param random_generator: + :type random_generator: np.random.Generator + :param nb_rows: number of rows in the image + :type nb_rows: int + :param nb_cols: number of cols in the image + :type nb_cols: int + :param min_row: if True, row min disparities will be a mix of 1 and 3 else will be all 1. + :type min_row: bool + :param max_row: if True, row max disparities will be a mix of 6 and 8 else will be all 6. + :type max_row: bool + :param min_col: if True, col min disparities will be a mix of 1 and 3 else will be all 1. + :type min_col: bool + :param max_col: if True, col max disparities will be a mix of 6 and 8 else will be all 6. + :type max_col: bool + :return: image dataset + :rtype: xr.Dataset + """ + shape = (nb_rows, nb_cols) + data = random_generator.integers(0, 255, shape, endpoint=True) + + # disparity range must be odd and greater or equal to 5 + fixed_min = np.ones(shape) + random_min = random_generator.choice([1, 3], shape) + fixed_max = np.full(shape, 6) # with min either 1 or 3 we get range 3 or 7 + random_max = random_min + 5 + + row_min_disparity = random_min if min_row else fixed_min + col_min_disparity = random_min if min_col else fixed_min + row_max_disparity = random_max if max_row else fixed_max + col_max_disparity = random_max if max_col else fixed_max + + return xr.Dataset( + { + "im": (["row", "col"], data), + "row_disparity": (["band_disp", "row", "col"], np.array([row_min_disparity, row_max_disparity])), + "col_disparity": (["band_disp", "row", "col"], np.array([col_min_disparity, col_max_disparity])), + }, + coords={"row": np.arange(nb_rows), "col": np.arange(nb_cols), "band_disp": ["min", "max"]}, + attrs={ + "no_data_img": -9999, + "valid_pixels": 0, + "no_data_mask": 1, + "crs": None, + "col_disparity_source": "grid_col", + "row_disparity_source": "grid_row", + }, + ) + + @pytest.fixture() + def cfg(self) -> Dict: + return { + "pipeline": { + "matching_cost": { + "matching_cost_method": "ssd", + "window_size": 3, + "step": [1, 1], + "subpix": 1, + } + } + } + + @pytest.fixture() + def invalid_value(self) -> int: + return -99 + + @pytest.fixture() + def disparities(self, image: xr.Dataset, cfg: Dict, invalid_value) -> Dict: + """Execute refinement method and return disparities.""" + matching_cost_ = matching_cost.MatchingCost(cfg["pipeline"]["matching_cost"]) + + matching_cost_.allocate_cost_volume_pandora( + img_left=image, + img_right=image, + cfg=cfg, + ) + + cost_volumes = matching_cost_.compute_cost_volumes( + img_left=image, + img_right=image, + ) + + disparity_matcher = disparity.Disparity({"disparity_method": "wta", "invalid_disparity": invalid_value}) + + disp_map_col, disp_map_row, correlation_score = disparity_matcher.compute_disp_maps(cost_volumes) + + data_variables = { + "row_map": (("row", "col"), disp_map_row), + "col_map": (("row", "col"), disp_map_col), + "correlation_score": (("row", "col"), correlation_score), + } + + coords = {"row": image.coords["row"], "col": image.coords["col"]} + + dataset = xr.Dataset(data_variables, coords) + + dataset_disp_map = common.dataset_disp_maps( + dataset.row_map, + dataset.col_map, + dataset.coords, + dataset.correlation_score, + attributes={"invalid_disp": invalid_value}, + ) + + test = refinement.AbstractRefinement( + {"refinement_method": "optical_flow"}, + cfg["pipeline"]["matching_cost"]["step"], + cfg["pipeline"]["matching_cost"]["window_size"], + ) # type: ignore[abstract] + disparity_col, disparity_row, _ = test.refinement_method(cost_volumes, dataset_disp_map, image, image) + return {"row_disparity": disparity_row, "col_disparity": disparity_col} + + @pytest.mark.parametrize("min_row", (True, False)) + @pytest.mark.parametrize("max_row", (True, False)) + @pytest.mark.parametrize("min_col", (True, False)) + @pytest.mark.parametrize("max_col", (True, False)) + def test_variable_grid(self, image, disparities, invalid_value): + """Test resulting disparities are in range defined by grids.""" + # We want to exclude invalid_values from the comparaison + valid_row_mask = disparities["row_disparity"] != invalid_value + valid_col_mask = disparities["col_disparity"] != invalid_value + + assert np.all( + disparities["row_disparity"][valid_row_mask] + >= image["row_disparity"].sel({"band_disp": "min"}).data[valid_row_mask] + ) + assert np.all( + disparities["col_disparity"][valid_col_mask] + >= image["col_disparity"].sel({"band_disp": "min"}).data[valid_col_mask] + ) + assert np.all( + disparities["row_disparity"][valid_row_mask] + <= image["row_disparity"].sel({"band_disp": "max"}).data[valid_row_mask] + ) + assert np.all( + disparities["col_disparity"][valid_col_mask] + <= image["col_disparity"].sel({"band_disp": "max"}).data[valid_col_mask] + ) From 65a5f4c5b4d2df7ea1fca98fef7b3b70084365ed Mon Sep 17 00:00:00 2001 From: Philippe Mallet-Ladeira Date: Thu, 29 Aug 2024 11:48:45 +0200 Subject: [PATCH 076/121] fix(common): correct georeferencement of pixels when step is applied When a step is applied only the first one was correctly geo-referenced leading to a bad superposition of disparity maps with original image. The solution is to set the pixel's sizes to the step value. Refs: #164 --- pandora2d/common.py | 35 ++++++++- .../target_grid/roi/test_georeferencement.py | 74 ++++++++++++++++--- 2 files changed, 98 insertions(+), 11 deletions(-) diff --git a/pandora2d/common.py b/pandora2d/common.py index 06fd552..b6c8d10 100644 --- a/pandora2d/common.py +++ b/pandora2d/common.py @@ -34,7 +34,7 @@ from xarray import Coordinate as Coordinates import os -from typing import Dict, Union +from typing import Dict, Union, Tuple import xarray as xr import numpy as np from numpy.typing import NDArray @@ -67,6 +67,9 @@ def save_dataset(dataset: xr.Dataset, cfg: Dict, output: str) -> None: dataset = remove_roi_margins(dataset, cfg) # Translate georeferencement origin to ROI origin: dataset.attrs["transform"] *= Affine.translation(cfg["ROI"]["col"]["first"], cfg["ROI"]["row"]["first"]) + + row_step, col_step = get_step(cfg) + set_pixel_size(dataset, row_step, col_step) # create output dir mkdir_p(output) @@ -95,6 +98,36 @@ def save_dataset(dataset: xr.Dataset, cfg: Dict, output: str) -> None: ) +def get_step(cfg: Dict) -> Tuple[int, int]: + """ + Get step from matching cost or retun default value. + :param cfg: configuration + :type cfg: Dict + :return: row_step, col_step + :rtype: Tuple[int, int] + """ + try: + return cfg["pipeline"]["matching_cost"]["step"] + except KeyError: + return 1, 1 + + +def set_pixel_size(dataset: xr.Dataset, row_step: int = 1, col_step: int = 1) -> None: + """ + Set the pixel size according to the step used in calculating the matching cost. + + This ensures that all pixels are well geo-referenced in case a step is applied. + + :param dataset: Data to save + :type dataset: xr.Dataset + :param row_step: step used in row + :type row_step: int + :param col_step: step used in column + :type col_step: int + """ + dataset.attrs["transform"] *= Affine.scale(col_step, row_step) + + def dataset_disp_maps( delta_row: np.ndarray, delta_col: np.ndarray, diff --git a/tests/functional_tests/target_grid/roi/test_georeferencement.py b/tests/functional_tests/target_grid/roi/test_georeferencement.py index 48efc92..0f97bd1 100644 --- a/tests/functional_tests/target_grid/roi/test_georeferencement.py +++ b/tests/functional_tests/target_grid/roi/test_georeferencement.py @@ -88,9 +88,10 @@ def right_path(tmp_path, right_data, crs, transform): return path -def test_roi_georeferencement(run_pipeline, left_path, right_path, crs, transform, correct_pipeline_without_refinement): - """Test that new georeferencement origin correspond to upper left corner of the ROI.""" - configuration = { +@pytest.fixture() +def configuration(left_path, right_path, correct_pipeline_without_refinement, step, roi): + correct_pipeline_without_refinement["pipeline"]["matching_cost"]["step"] = step + return { "input": { "left": { "img": str(left_path), @@ -101,17 +102,70 @@ def test_roi_georeferencement(run_pipeline, left_path, right_path, crs, transfor "col_disparity": {"init": 1, "range": 2}, "row_disparity": {"init": 1, "range": 2}, }, - "ROI": { - "col": {"first": 3, "last": 7}, - "row": {"first": 5, "last": 8}, - }, + **roi, **correct_pipeline_without_refinement, } + +@pytest.mark.parametrize( + [ + "roi", + "step", + "bottom_right_corner_indexes", # Use transform convention: (col, row) + ], + [ + pytest.param( + {"ROI": {"col": {"first": 3, "last": 7}, "row": {"first": 5, "last": 8}}}, [1, 1], (7, 8), id="No step" + ), # Disp map corner match ROI corner + pytest.param( + {"ROI": {"col": {"first": 3, "last": 7}, "row": {"first": 5, "last": 8}}}, + [2, 3], + (6, 7), + id="Step < ROI size", + ), # Disp map corner is inside ROI + pytest.param( + {"ROI": {"col": {"first": 3, "last": 7}, "row": {"first": 5, "last": 8}}}, + [4, 5], + (3, 5), + id="Step == ROI size", + ), # Only one pixel at ROI origin + pytest.param( + {"ROI": {"col": {"first": 3, "last": 7}, "row": {"first": 5, "last": 8}}}, + [5, 6], + (3, 5), + id="Step > ROI size", + ), # Only one pixel at ROI origin + pytest.param( + {"ROI": {"col": {"first": 3, "last": 3}, "row": {"first": 5, "last": 5}}}, + [1, 1], + (3, 5), + id="1px ROI - No step", + ), + pytest.param( + {"ROI": {"col": {"first": 3, "last": 3}, "row": {"first": 5, "last": 5}}}, + [5, 6], + (3, 5), + id="1px ROI - Step", + ), + ], +) +@pytest.mark.parametrize("output_file", ["columns_disparity.tif", "row_disparity.tif", "correlation_score.tif"]) +def test_roi_georeferencement( + run_pipeline, + configuration, + crs, + transform, + bottom_right_corner_indexes, + output_file, +): + """Test that top left and bottom right corners are well georeferenced.""" run_dir = run_pipeline(configuration) - columns_disparity = rasterio.open(run_dir / "output" / "columns_disparity.tif") + output = rasterio.open(run_dir / "output" / output_file) + bottom_right_disparity_indexes = output.width - 1, output.height - 1 - assert columns_disparity.crs == crs + assert output.crs == crs # assert that new georeferencement origin correspond to upper left corner of the ROI: - assert columns_disparity.transform * (0, 0) == transform * (3, 5) + upper_left_corner_indexes = (configuration["ROI"]["col"]["first"], configuration["ROI"]["row"]["first"]) + assert output.transform * (0, 0) == transform * upper_left_corner_indexes + assert output.transform * bottom_right_disparity_indexes == transform * bottom_right_corner_indexes From 04f825855ab430d8429b67511cd14321fd398d25 Mon Sep 17 00:00:00 2001 From: Philippe Mallet-Ladeira Date: Fri, 30 Aug 2024 16:10:40 +0200 Subject: [PATCH 077/121] fix(common): save not georeferenced output In case images are not georeferenced there is no transformation thus we can not change the ROI origin nor set pixel size in case of use of step in calculating matching cost. At first I would simply add an identity transformation ideally in `create_dataset_from_inputs` from Pandora but it seems that it was done in previous versions of Pandora and caused troubles with QGIS (see 3d/PandoraBox/pandora#211). I also found a [bug report to QGIS](https://github.com/qgis/QGIS/issues/45324) but it is closed for inactivity. Refs: #164, 3d/PandoraBox/pandora#211 --- pandora2d/common.py | 23 ++++++++++++++++++----- tests/functional_tests/test_pipelines.py | 19 +++++++++++++++++-- 2 files changed, 35 insertions(+), 7 deletions(-) diff --git a/pandora2d/common.py b/pandora2d/common.py index b6c8d10..7faa6eb 100644 --- a/pandora2d/common.py +++ b/pandora2d/common.py @@ -65,11 +65,8 @@ def save_dataset(dataset: xr.Dataset, cfg: Dict, output: str) -> None: # remove ROI margins to save only user ROI in tif files if "ROI" in cfg: dataset = remove_roi_margins(dataset, cfg) - # Translate georeferencement origin to ROI origin: - dataset.attrs["transform"] *= Affine.translation(cfg["ROI"]["col"]["first"], cfg["ROI"]["row"]["first"]) - - row_step, col_step = get_step(cfg) - set_pixel_size(dataset, row_step, col_step) + if dataset.attrs["transform"] is not None: + adjust_georeferencement(dataset, cfg) # create output dir mkdir_p(output) @@ -98,6 +95,22 @@ def save_dataset(dataset: xr.Dataset, cfg: Dict, output: str) -> None: ) +def adjust_georeferencement(dataset: xr.Dataset, cfg: Dict) -> None: + """ + Change origin in case a ROI is present and set pixel size to the matching cost step. + + :param dataset: dataset to configure. + :type dataset: xr.Dataset + :param cfg: configuration + :type cfg: Dict + """ + if "ROI" in cfg: + # Translate georeferencement origin to ROI origin: + dataset.attrs["transform"] *= Affine.translation(cfg["ROI"]["col"]["first"], cfg["ROI"]["row"]["first"]) + row_step, col_step = get_step(cfg) + set_pixel_size(dataset, row_step, col_step) + + def get_step(cfg: Dict) -> Tuple[int, int]: """ Get step from matching cost or retun default value. diff --git a/tests/functional_tests/test_pipelines.py b/tests/functional_tests/test_pipelines.py index 9ae8cde..2ff98b8 100644 --- a/tests/functional_tests/test_pipelines.py +++ b/tests/functional_tests/test_pipelines.py @@ -98,7 +98,22 @@ def test_no_common_key(self): assert result == {} -def test_monoband_with_nodata_not_nan(run_pipeline, correct_input_cfg, correct_pipeline_without_refinement): +@pytest.mark.parametrize( + "roi", + [ + pytest.param({}, id="No ROI"), + pytest.param( + { + "ROI": { + "col": {"first": 3, "last": 7}, + "row": {"first": 5, "last": 8}, + } + }, + id="With ROI", + ), + ], +) +def test_monoband_with_nodata_not_nan(run_pipeline, correct_input_cfg, correct_pipeline_without_refinement, roi): """ Description : Test a configuration with monoband images. Data : @@ -106,7 +121,7 @@ def test_monoband_with_nodata_not_nan(run_pipeline, correct_input_cfg, correct_p - Right image : cones/monoband/right.png Requirement : EX_CONF_00, EX_CONF_06 """ - configuration = {**correct_input_cfg, **correct_pipeline_without_refinement} + configuration = {**correct_input_cfg, **correct_pipeline_without_refinement, **roi} configuration["input"]["left"]["nodata"] = -9999 run_dir = run_pipeline(configuration) From 3f233b7d171e83b7c749db99a87836b57efaa436 Mon Sep 17 00:00:00 2001 From: Philippe Mallet-Ladeira Date: Tue, 3 Sep 2024 15:32:59 +0200 Subject: [PATCH 078/121] tests(functional): refact move georeferencement --- .../target_grid/{roi => }/test_georeferencement.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename tests/functional_tests/target_grid/{roi => }/test_georeferencement.py (100%) diff --git a/tests/functional_tests/target_grid/roi/test_georeferencement.py b/tests/functional_tests/target_grid/test_georeferencement.py similarity index 100% rename from tests/functional_tests/target_grid/roi/test_georeferencement.py rename to tests/functional_tests/target_grid/test_georeferencement.py From 455e1fb95e0d00491cea3fe4375d5ac1fa807780 Mon Sep 17 00:00:00 2001 From: Philippe Mallet-Ladeira Date: Tue, 3 Sep 2024 16:44:13 +0200 Subject: [PATCH 079/121] tests(georeferencement): add tests without ROI Refs: #164 --- .../target_grid/test_georeferencement.py | 63 +++++++++++++++---- 1 file changed, 52 insertions(+), 11 deletions(-) diff --git a/tests/functional_tests/target_grid/test_georeferencement.py b/tests/functional_tests/target_grid/test_georeferencement.py index 0f97bd1..7da94aa 100644 --- a/tests/functional_tests/target_grid/test_georeferencement.py +++ b/tests/functional_tests/target_grid/test_georeferencement.py @@ -89,7 +89,7 @@ def right_path(tmp_path, right_data, crs, transform): @pytest.fixture() -def configuration(left_path, right_path, correct_pipeline_without_refinement, step, roi): +def configuration(left_path, right_path, correct_pipeline_without_refinement, step): correct_pipeline_without_refinement["pipeline"]["matching_cost"]["step"] = step return { "input": { @@ -102,11 +102,49 @@ def configuration(left_path, right_path, correct_pipeline_without_refinement, st "col_disparity": {"init": 1, "range": 2}, "row_disparity": {"init": 1, "range": 2}, }, - **roi, **correct_pipeline_without_refinement, } +@pytest.mark.parametrize( + [ + "step", + "bottom_right_corner_indexes", # Use transform convention: (col, row) + ], + [ + pytest.param([1, 1], (9, 9), id="No step"), # Disp map corner match ROI corner + pytest.param([2, 3], (9, 8), id="Step < image"), # Disp map corner match ROI corner + pytest.param([11, 11], (0, 0), id="Step > image"), # Disp map corner match ROI corner + ], +) +@pytest.mark.parametrize("output_file", ["columns_disparity.tif", "row_disparity.tif", "correlation_score.tif"]) +def test_georeferencement( + run_pipeline, + configuration, + crs, + transform, + bottom_right_corner_indexes, + output_file, +): + """Test that top left and bottom right corners are well georeferenced.""" + run_dir = run_pipeline(configuration) + + output = rasterio.open(run_dir / "output" / output_file) + bottom_right_disparity_indexes = output.width - 1, output.height - 1 + + assert output.crs == crs + # assert that new georeferencement origin correspond to upper left corner of the ROI: + upper_left_corner_indexes = (0, 0) + assert output.transform * (0, 0) == transform * upper_left_corner_indexes + assert output.transform * bottom_right_disparity_indexes == transform * bottom_right_corner_indexes + + +@pytest.fixture() +def configuration_with_roi(configuration, roi): + configuration["ROI"] = roi + return configuration + + @pytest.mark.parametrize( [ "roi", @@ -115,34 +153,34 @@ def configuration(left_path, right_path, correct_pipeline_without_refinement, st ], [ pytest.param( - {"ROI": {"col": {"first": 3, "last": 7}, "row": {"first": 5, "last": 8}}}, [1, 1], (7, 8), id="No step" + {"col": {"first": 3, "last": 7}, "row": {"first": 5, "last": 8}}, [1, 1], (7, 8), id="No step" ), # Disp map corner match ROI corner pytest.param( - {"ROI": {"col": {"first": 3, "last": 7}, "row": {"first": 5, "last": 8}}}, + {"col": {"first": 3, "last": 7}, "row": {"first": 5, "last": 8}}, [2, 3], (6, 7), id="Step < ROI size", ), # Disp map corner is inside ROI pytest.param( - {"ROI": {"col": {"first": 3, "last": 7}, "row": {"first": 5, "last": 8}}}, + {"col": {"first": 3, "last": 7}, "row": {"first": 5, "last": 8}}, [4, 5], (3, 5), id="Step == ROI size", ), # Only one pixel at ROI origin pytest.param( - {"ROI": {"col": {"first": 3, "last": 7}, "row": {"first": 5, "last": 8}}}, + {"col": {"first": 3, "last": 7}, "row": {"first": 5, "last": 8}}, [5, 6], (3, 5), id="Step > ROI size", ), # Only one pixel at ROI origin pytest.param( - {"ROI": {"col": {"first": 3, "last": 3}, "row": {"first": 5, "last": 5}}}, + {"col": {"first": 3, "last": 3}, "row": {"first": 5, "last": 5}}, [1, 1], (3, 5), id="1px ROI - No step", ), pytest.param( - {"ROI": {"col": {"first": 3, "last": 3}, "row": {"first": 5, "last": 5}}}, + {"col": {"first": 3, "last": 3}, "row": {"first": 5, "last": 5}}, [5, 6], (3, 5), id="1px ROI - Step", @@ -152,20 +190,23 @@ def configuration(left_path, right_path, correct_pipeline_without_refinement, st @pytest.mark.parametrize("output_file", ["columns_disparity.tif", "row_disparity.tif", "correlation_score.tif"]) def test_roi_georeferencement( run_pipeline, - configuration, + configuration_with_roi, crs, transform, bottom_right_corner_indexes, output_file, ): """Test that top left and bottom right corners are well georeferenced.""" - run_dir = run_pipeline(configuration) + run_dir = run_pipeline(configuration_with_roi) output = rasterio.open(run_dir / "output" / output_file) bottom_right_disparity_indexes = output.width - 1, output.height - 1 assert output.crs == crs # assert that new georeferencement origin correspond to upper left corner of the ROI: - upper_left_corner_indexes = (configuration["ROI"]["col"]["first"], configuration["ROI"]["row"]["first"]) + upper_left_corner_indexes = ( + configuration_with_roi["ROI"]["col"]["first"], + configuration_with_roi["ROI"]["row"]["first"], + ) assert output.transform * (0, 0) == transform * upper_left_corner_indexes assert output.transform * bottom_right_disparity_indexes == transform * bottom_right_corner_indexes From 696fb1640f91070e5b8e7ead46cfd1d85f36b574 Mon Sep 17 00:00:00 2001 From: Philippe Mallet-Ladeira Date: Thu, 22 Aug 2024 10:26:04 +0200 Subject: [PATCH 080/121] tests: move run_pipeline fixture to main conftest --- tests/conftest.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/tests/conftest.py b/tests/conftest.py index 11e08e4..d42e273 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -20,8 +20,9 @@ Module with global test fixtures. """ -# pylint: disable=redefined-outer-name +import json +# pylint: disable=redefined-outer-name import pathlib import re @@ -29,8 +30,10 @@ import numpy as np import pytest import rasterio -from pandora.common import write_data_array import xarray as xr +from pandora.common import write_data_array + +import pandora2d import pandora2d From 50e639cf082fe2835b059a37995cad951d86cb60 Mon Sep 17 00:00:00 2001 From: Philippe Mallet-Ladeira Date: Thu, 22 Aug 2024 10:28:45 +0200 Subject: [PATCH 081/121] tests: rename tests/resource_tests/test_example.py --- tests/resource_tests/{test_example.py => test_pandora2d.py} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename tests/resource_tests/{test_example.py => test_pandora2d.py} (100%) diff --git a/tests/resource_tests/test_example.py b/tests/resource_tests/test_pandora2d.py similarity index 100% rename from tests/resource_tests/test_example.py rename to tests/resource_tests/test_pandora2d.py From 18929257702f06e9c2f8d3781e4007b7a868b93b Mon Sep 17 00:00:00 2001 From: Philippe Mallet-Ladeira Date: Thu, 22 Aug 2024 12:09:29 +0200 Subject: [PATCH 082/121] test(resource): add estimation test --- tests/resource_tests/test_pandora2d.py | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/tests/resource_tests/test_pandora2d.py b/tests/resource_tests/test_pandora2d.py index dc48e4d..4b8ad04 100644 --- a/tests/resource_tests/test_pandora2d.py +++ b/tests/resource_tests/test_pandora2d.py @@ -1,5 +1,3 @@ -#!/usr/bin/env python -# # Copyright (c) 2024 Centre National d'Etudes Spatiales (CNES). # # This file is part of PANDORA2D @@ -20,21 +18,21 @@ # """ -Test example for resources +Test used resources during execution of a configuration. """ import pytest -import pandora2d - -@pytest.mark.monitor_test -class TestConeImage: - """Test pandora with cone image.""" +# Mark all test of the module with monitor_test +pytestmark = pytest.mark.monitor_test - # pylint:disable=too-few-public-methods - def test_pandora(self, classic_config, output_result_path): - """ - Test run pandora with cone images - """ - pandora2d.main(classic_config, output_result_path, True) +def test_estimation(run_pipeline, correct_input_cfg): + """Test a configuration with only an estimation in the pipeline.""" + configuration = { + **correct_input_cfg, + "pipeline": { + "estimation": {"estimation_method": "phase_cross_correlation"}, + }, + } + run_pipeline(configuration) From 68aa3b9e7f5c7b1c87f9710e67ac4611de77cb74 Mon Sep 17 00:00:00 2001 From: Philippe Mallet-Ladeira Date: Thu, 22 Aug 2024 15:17:57 +0200 Subject: [PATCH 083/121] tests(resources): display more information about failing test --- tests/resource_tests/conftest.py | 9 +++++---- tests/resource_tests/test_metrics.py | 6 +++--- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/tests/resource_tests/conftest.py b/tests/resource_tests/conftest.py index 6beb29e..cf09592 100644 --- a/tests/resource_tests/conftest.py +++ b/tests/resource_tests/conftest.py @@ -37,9 +37,10 @@ class Metrics: def __init__(self, items: List) -> None: self.test_name = items[0] - self.total_time = items[1] - self.cpu_usage = items[2] - self.mem_usage = items[3] + self.test_variant = items[1] + self.total_time = items[2] + self.cpu_usage = items[3] + self.mem_usage = items[4] def pytest_addoption(parser): @@ -58,7 +59,7 @@ def output_result_path(): @pytest.fixture(name="sqlite_select_query") def sqlite_select_query_fixture(): - return """SELECT ITEM, TOTAL_TIME, CPU_USAGE, MEM_USAGE FROM TEST_METRICS""" + return """SELECT ITEM, ITEM_VARIANT, TOTAL_TIME, CPU_USAGE, MEM_USAGE FROM TEST_METRICS""" @pytest.fixture() diff --git a/tests/resource_tests/test_metrics.py b/tests/resource_tests/test_metrics.py index 6008a28..0d17716 100644 --- a/tests/resource_tests/test_metrics.py +++ b/tests/resource_tests/test_metrics.py @@ -40,7 +40,7 @@ def test_total_time(self, read_sqlite_table): for metric in read_sqlite_table: assert ( metric.total_time < metric._TOTAL_TIME_MAX - ), f"Test {metric.test_name} does not respect max time : {metric._TOTAL_TIME_MAX} (seconds)" + ), f"Test {metric.test_variant} does not respect max time : {metric._TOTAL_TIME_MAX} (seconds)" def test_cpu_usage(self, read_sqlite_table): """ @@ -49,7 +49,7 @@ def test_cpu_usage(self, read_sqlite_table): for metric in read_sqlite_table: assert ( metric.cpu_usage < metric._CPU_USAGE_MAX - ), f"Test {metric.test_name} does not cpu usage max : {metric._CPU_USAGE_MAX} (%)" + ), f"Test {metric.test_variant} does not cpu usage max : {metric._CPU_USAGE_MAX} (%)" def test_mem_usage(self, read_sqlite_table): """ @@ -58,4 +58,4 @@ def test_mem_usage(self, read_sqlite_table): for metric in read_sqlite_table: assert ( metric.mem_usage < metric._MEM_USAGE_MAX - ), f"Test {metric.test_name} does not respect memory usage max : {metric._MEM_USAGE_MAX} (megabyte)" + ), f"Test {metric.test_variant} does not respect memory usage max : {metric._MEM_USAGE_MAX} (megabyte)" From e2f5af5ca725625ce31aa7f130a7d70e4a1de0cd Mon Sep 17 00:00:00 2001 From: Philippe Mallet-Ladeira Date: Thu, 22 Aug 2024 17:22:00 +0200 Subject: [PATCH 084/121] tests(resources): add some matching_cost tests --- tests/resource_tests/test_pandora2d.py | 30 ++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/tests/resource_tests/test_pandora2d.py b/tests/resource_tests/test_pandora2d.py index 4b8ad04..ab81830 100644 --- a/tests/resource_tests/test_pandora2d.py +++ b/tests/resource_tests/test_pandora2d.py @@ -23,6 +23,7 @@ import pytest + # Mark all test of the module with monitor_test pytestmark = pytest.mark.monitor_test @@ -36,3 +37,32 @@ def test_estimation(run_pipeline, correct_input_cfg): }, } run_pipeline(configuration) + + +@pytest.mark.parametrize("subpix", [1, 2, 4]) +@pytest.mark.parametrize("matching_cost_method", ["zncc", "sad", "ssd"]) +def test_matching_cost_with_disparity(run_pipeline, correct_input_cfg, matching_cost_method, subpix): + """Test pipeline with a matching_cost and a disparity steps.""" + configuration = { + **correct_input_cfg, + "pipeline": { + "matching_cost": {"matching_cost_method": matching_cost_method, "subpix": subpix}, + "disparity": {"disparity_method": "wta", "invalid_disparity": -99}, + }, + } + run_pipeline(configuration) + + +@pytest.mark.parametrize("subpix", [1, 2, 4]) +@pytest.mark.parametrize("matching_cost_method", ["zncc", "sad", "ssd"]) +def test_matching_cost_with_estimation_and_disparity(run_pipeline, correct_input_cfg, matching_cost_method, subpix): + """Test pipeline with an estimation, a matching_cost and a disparity steps.""" + configuration = { + **correct_input_cfg, + "pipeline": { + "estimation": {"estimation_method": "phase_cross_correlation"}, + "matching_cost": {"matching_cost_method": matching_cost_method, "subpix": subpix}, + "disparity": {"disparity_method": "wta", "invalid_disparity": -99}, + }, + } + run_pipeline(configuration) From 195589d9e75da0649309c8e7a6f6b9fb230282fb Mon Sep 17 00:00:00 2001 From: Philippe Mallet-Ladeira Date: Thu, 22 Aug 2024 18:11:51 +0200 Subject: [PATCH 085/121] test(resource): add tests with refinement --- tests/resource_tests/test_pandora2d.py | 107 +++++++++++++++++++++++++ 1 file changed, 107 insertions(+) diff --git a/tests/resource_tests/test_pandora2d.py b/tests/resource_tests/test_pandora2d.py index ab81830..e3869eb 100644 --- a/tests/resource_tests/test_pandora2d.py +++ b/tests/resource_tests/test_pandora2d.py @@ -66,3 +66,110 @@ def test_matching_cost_with_estimation_and_disparity(run_pipeline, correct_input }, } run_pipeline(configuration) + + +@pytest.mark.parametrize("subpix", [1, 2, 4]) +@pytest.mark.parametrize("matching_cost_method", ["zncc", "sad", "ssd"]) +class TestRefinement: + """Test pipelines which include a refinement step.""" + + @pytest.fixture() + def interpolation_pipeline(self, matching_cost_method, subpix): + """Pipeline for an interpolation refinement.""" + return { + "matching_cost": {"matching_cost_method": matching_cost_method, "subpix": subpix}, + "disparity": {"disparity_method": "wta", "invalid_disparity": -99}, + "refinement": {"refinement_method": "interpolation"}, + } + + @pytest.fixture() + def dichotomy_pipeline(self, matching_cost_method, subpix, iterations, filter_method): + """Pipeline for a dichotomy refinement.""" + return { + "matching_cost": {"matching_cost_method": matching_cost_method, "subpix": subpix}, + "disparity": {"disparity_method": "wta", "invalid_disparity": -99}, + "refinement": { + "refinement_method": "dichotomy", + "iterations": iterations, + "filter": {"method": filter_method}, + }, + } + + @pytest.fixture() + def optical_flow_pipeline(self, matching_cost_method, subpix, iterations): + """Pipeline for an optical flow refinement.""" + return { + "matching_cost": {"matching_cost_method": matching_cost_method, "subpix": subpix}, + "disparity": {"disparity_method": "wta", "invalid_disparity": -99}, + "refinement": { + "refinement_method": "optical_flow", + "iterations": iterations, + }, + } + + def test_interpolation(self, run_pipeline, correct_input_cfg, interpolation_pipeline): + """Test interpolation.""" + configuration = { + **correct_input_cfg, + "pipeline": {**interpolation_pipeline}, + } + run_pipeline(configuration) + + def test_interpolation_with_estimation(self, run_pipeline, correct_input_cfg, interpolation_pipeline): + """Test interpolation with estimation.""" + configuration = { + **correct_input_cfg, + "pipeline": { + "estimation": {"estimation_method": "phase_cross_correlation"}, + **interpolation_pipeline, + }, + } + run_pipeline(configuration) + + @pytest.mark.parametrize("iterations", [1, 4, 9]) + @pytest.mark.parametrize("filter_method", ["sinc", "bicubic"]) + def test_dichotomy(self, run_pipeline, correct_input_cfg, dichotomy_pipeline): + """Test dichotomy.""" + configuration = { + **correct_input_cfg, + "pipeline": { + **dichotomy_pipeline, + }, + } + run_pipeline(configuration) + + @pytest.mark.parametrize("iterations", [1, 4, 9]) + @pytest.mark.parametrize("filter_method", ["sinc", "bicubic"]) + def test_dichotomy_with_estimation(self, run_pipeline, correct_input_cfg, dichotomy_pipeline): + """Test dichotomy with estimation.""" + configuration = { + **correct_input_cfg, + "pipeline": { + "estimation": {"estimation_method": "phase_cross_correlation"}, + **dichotomy_pipeline, + }, + } + run_pipeline(configuration) + + @pytest.mark.parametrize("iterations", [1, 4, 9]) + def test_optical_flows(self, run_pipeline, correct_input_cfg, optical_flow_pipeline): + """Test optical flows.""" + configuration = { + **correct_input_cfg, + "pipeline": { + **optical_flow_pipeline, + }, + } + run_pipeline(configuration) + + @pytest.mark.parametrize("iterations", [1, 4, 9]) + def test_optical_flows_with_estimation(self, run_pipeline, correct_input_cfg, optical_flow_pipeline): + """Test optical flows with estimation.""" + configuration = { + **correct_input_cfg, + "pipeline": { + "estimation": {"estimation_method": "phase_cross_correlation"}, + **optical_flow_pipeline, + }, + } + run_pipeline(configuration) From b18a8ead526cc88a93b33c5def374c8515dcf729 Mon Sep 17 00:00:00 2001 From: Philippe Mallet-Ladeira Date: Thu, 22 Aug 2024 18:16:21 +0200 Subject: [PATCH 086/121] test(resources): do not stop on first test failure Before, we had a for loop with an assertion in its body. So, when an assertion failed, the loop stopped and tests where not all checked. With this commit, we build the list of tests upon database content instead of looping over it. --- tests/resource_tests/conftest.py | 51 +---------------- tests/resource_tests/test_metrics.py | 84 ++++++++++++++++++++++------ 2 files changed, 67 insertions(+), 68 deletions(-) diff --git a/tests/resource_tests/conftest.py b/tests/resource_tests/conftest.py index cf09592..786b302 100644 --- a/tests/resource_tests/conftest.py +++ b/tests/resource_tests/conftest.py @@ -19,63 +19,14 @@ """ Module with global test fixtures. """ -from typing import List -import sqlite3 -import pytest - - -class Metrics: - """ - Metrics Class - """ - - # pylint:disable=too-few-public-methods - _TOTAL_TIME_MAX = 120 # second - _CPU_USAGE_MAX = 50 # percent - _MEM_USAGE_MAX = 1024 # megabyte - - def __init__(self, items: List) -> None: - self.test_name = items[0] - self.test_variant = items[1] - self.total_time = items[2] - self.cpu_usage = items[3] - self.mem_usage = items[4] +import pytest def pytest_addoption(parser): parser.addoption("--database", action="store", default=".pymon", required=False) -@pytest.fixture(name="database_path") -def database_path_fixture(request): - return request.config.getoption("--database") - - @pytest.fixture def output_result_path(): return "./tests/resource_tests/result" - - -@pytest.fixture(name="sqlite_select_query") -def sqlite_select_query_fixture(): - return """SELECT ITEM, ITEM_VARIANT, TOTAL_TIME, CPU_USAGE, MEM_USAGE FROM TEST_METRICS""" - - -@pytest.fixture() -def read_sqlite_table(database_path, sqlite_select_query): - """ - Read sqlite table from pytest-monitoring - """ - data = [] - try: - sqlite_connection = sqlite3.connect(database_path) - cursor = sqlite_connection.cursor() - - cursor.execute(sqlite_select_query) - records = cursor.fetchall() - data = [Metrics(record) for record in records] - sqlite_connection.close() - except sqlite3.Error as error: - print("Failed to read data from sqlite table", error) - return data diff --git a/tests/resource_tests/test_metrics.py b/tests/resource_tests/test_metrics.py index 0d17716..b8feddc 100644 --- a/tests/resource_tests/test_metrics.py +++ b/tests/resource_tests/test_metrics.py @@ -1,6 +1,3 @@ -# pylint: disable=protected-access -#!/usr/bin/env python -# # Copyright (c) 2024 Centre National d'Etudes Spatiales (CNES). # # This file is part of PANDORA2D @@ -23,9 +20,63 @@ """ This module is used to check the resources used for the tests in this directory. """ + +# pylint: disable=protected-access + +import sqlite3 +from typing import List + import pytest +class Metrics: + """ + Metrics Class + """ + + # pylint:disable=too-few-public-methods + + _TOTAL_TIME_MAX = 120 # second + _CPU_USAGE_MAX = 50 # percent + _MEM_USAGE_MAX = 1024 # megabyte + + def __init__(self, items: List) -> None: + self.test_name = items[0] + self.test_variant = items[1] + self.total_time = items[2] + self.cpu_usage = items[3] + self.mem_usage = items[4] + + +def read_sqlite_table(database_path, sqlite_select_query): + """ + Read sqlite table from pytest-monitoring + """ + data = [] + try: + sqlite_connection = sqlite3.connect(database_path) + cursor = sqlite_connection.cursor() + + cursor.execute(sqlite_select_query) + records = cursor.fetchall() + data = [Metrics(record) for record in records] + sqlite_connection.close() + except sqlite3.Error as error: + print("Failed to read data from sqlite table", error) + return data + + +# Define the pytest_generate_tests hook to generate test cases +def pytest_generate_tests(metafunc): + """Generate list of tests from pytest-monitoring database.""" + query = "SELECT ITEM, ITEM_VARIANT, TOTAL_TIME, CPU_USAGE, MEM_USAGE FROM TEST_METRICS" + marks = [mark.name for mark in metafunc.cls.pytestmark] + if "metrics" in marks: + metrics = read_sqlite_table(metafunc.config.option.database, query) + # Generate test cases based on the metrics list + metafunc.parametrize("metric", metrics, ids=lambda x: x.test_variant) + + @pytest.mark.metrics @pytest.mark.monitor_skip_test class TestResource: @@ -33,29 +84,26 @@ class TestResource: Test all tests are ok for CPU/MEM and time rule """ - def test_total_time(self, read_sqlite_table): + def test_total_time(self, metric): """ Verify the time metrics for the test """ - for metric in read_sqlite_table: - assert ( - metric.total_time < metric._TOTAL_TIME_MAX - ), f"Test {metric.test_variant} does not respect max time : {metric._TOTAL_TIME_MAX} (seconds)" + assert ( + metric.total_time < metric._TOTAL_TIME_MAX + ), f"Test {metric.test_variant} does not respect max time : {metric._TOTAL_TIME_MAX} (seconds)" - def test_cpu_usage(self, read_sqlite_table): + def test_cpu_usage(self, metric): """ Verify the cpu metrics for the test """ - for metric in read_sqlite_table: - assert ( - metric.cpu_usage < metric._CPU_USAGE_MAX - ), f"Test {metric.test_variant} does not cpu usage max : {metric._CPU_USAGE_MAX} (%)" + assert ( + metric.cpu_usage < metric._CPU_USAGE_MAX + ), f"Test {metric.test_variant} does not cpu usage max : {metric._CPU_USAGE_MAX} (%)" - def test_mem_usage(self, read_sqlite_table): + def test_mem_usage(self, metric): """ Verify the memory metrics for the test """ - for metric in read_sqlite_table: - assert ( - metric.mem_usage < metric._MEM_USAGE_MAX - ), f"Test {metric.test_variant} does not respect memory usage max : {metric._MEM_USAGE_MAX} (megabyte)" + assert ( + metric.mem_usage < metric._MEM_USAGE_MAX + ), f"Test {metric.test_variant} does not respect memory usage max : {metric._MEM_USAGE_MAX} (megabyte)" From c0edf2d468891f8d48b53e15859e342f0792f763 Mon Sep 17 00:00:00 2001 From: Philippe Mallet-Ladeira Date: Fri, 23 Aug 2024 11:15:36 +0200 Subject: [PATCH 087/121] tests(resources): do not fail on empty pymon database --- tests/resource_tests/test_metrics.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/resource_tests/test_metrics.py b/tests/resource_tests/test_metrics.py index b8feddc..37450d1 100644 --- a/tests/resource_tests/test_metrics.py +++ b/tests/resource_tests/test_metrics.py @@ -73,8 +73,9 @@ def pytest_generate_tests(metafunc): marks = [mark.name for mark in metafunc.cls.pytestmark] if "metrics" in marks: metrics = read_sqlite_table(metafunc.config.option.database, query) - # Generate test cases based on the metrics list - metafunc.parametrize("metric", metrics, ids=lambda x: x.test_variant) + if metrics: + # Generate test cases based on the metrics list + metafunc.parametrize("metric", metrics, ids=lambda x: x.test_variant) @pytest.mark.metrics From 2701c7171afa04ddde71d1fd05d62f9a6b644d95 Mon Sep 17 00:00:00 2001 From: Philippe Mallet-Ladeira Date: Fri, 23 Aug 2024 11:17:56 +0200 Subject: [PATCH 088/121] tests(resources): factorize test parameters --- tests/resource_tests/test_pandora2d.py | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/tests/resource_tests/test_pandora2d.py b/tests/resource_tests/test_pandora2d.py index e3869eb..204da2f 100644 --- a/tests/resource_tests/test_pandora2d.py +++ b/tests/resource_tests/test_pandora2d.py @@ -27,6 +27,10 @@ # Mark all test of the module with monitor_test pytestmark = pytest.mark.monitor_test +subpix_list = [1, 2, 4] +matching_cost_methods = ["zncc", "sad", "ssd"] +iteration_list = [1, 4, 9] + def test_estimation(run_pipeline, correct_input_cfg): """Test a configuration with only an estimation in the pipeline.""" @@ -39,8 +43,8 @@ def test_estimation(run_pipeline, correct_input_cfg): run_pipeline(configuration) -@pytest.mark.parametrize("subpix", [1, 2, 4]) -@pytest.mark.parametrize("matching_cost_method", ["zncc", "sad", "ssd"]) +@pytest.mark.parametrize("subpix", subpix_list) +@pytest.mark.parametrize("matching_cost_method", matching_cost_methods) def test_matching_cost_with_disparity(run_pipeline, correct_input_cfg, matching_cost_method, subpix): """Test pipeline with a matching_cost and a disparity steps.""" configuration = { @@ -53,8 +57,8 @@ def test_matching_cost_with_disparity(run_pipeline, correct_input_cfg, matching_ run_pipeline(configuration) -@pytest.mark.parametrize("subpix", [1, 2, 4]) -@pytest.mark.parametrize("matching_cost_method", ["zncc", "sad", "ssd"]) +@pytest.mark.parametrize("subpix", subpix_list) +@pytest.mark.parametrize("matching_cost_method", matching_cost_methods) def test_matching_cost_with_estimation_and_disparity(run_pipeline, correct_input_cfg, matching_cost_method, subpix): """Test pipeline with an estimation, a matching_cost and a disparity steps.""" configuration = { @@ -68,8 +72,8 @@ def test_matching_cost_with_estimation_and_disparity(run_pipeline, correct_input run_pipeline(configuration) -@pytest.mark.parametrize("subpix", [1, 2, 4]) -@pytest.mark.parametrize("matching_cost_method", ["zncc", "sad", "ssd"]) +@pytest.mark.parametrize("subpix", subpix_list) +@pytest.mark.parametrize("matching_cost_method", matching_cost_methods) class TestRefinement: """Test pipelines which include a refinement step.""" @@ -126,7 +130,7 @@ def test_interpolation_with_estimation(self, run_pipeline, correct_input_cfg, in } run_pipeline(configuration) - @pytest.mark.parametrize("iterations", [1, 4, 9]) + @pytest.mark.parametrize("iterations", iteration_list) @pytest.mark.parametrize("filter_method", ["sinc", "bicubic"]) def test_dichotomy(self, run_pipeline, correct_input_cfg, dichotomy_pipeline): """Test dichotomy.""" @@ -138,7 +142,7 @@ def test_dichotomy(self, run_pipeline, correct_input_cfg, dichotomy_pipeline): } run_pipeline(configuration) - @pytest.mark.parametrize("iterations", [1, 4, 9]) + @pytest.mark.parametrize("iterations", iteration_list) @pytest.mark.parametrize("filter_method", ["sinc", "bicubic"]) def test_dichotomy_with_estimation(self, run_pipeline, correct_input_cfg, dichotomy_pipeline): """Test dichotomy with estimation.""" @@ -151,7 +155,7 @@ def test_dichotomy_with_estimation(self, run_pipeline, correct_input_cfg, dichot } run_pipeline(configuration) - @pytest.mark.parametrize("iterations", [1, 4, 9]) + @pytest.mark.parametrize("iterations", iteration_list) def test_optical_flows(self, run_pipeline, correct_input_cfg, optical_flow_pipeline): """Test optical flows.""" configuration = { @@ -162,7 +166,7 @@ def test_optical_flows(self, run_pipeline, correct_input_cfg, optical_flow_pipel } run_pipeline(configuration) - @pytest.mark.parametrize("iterations", [1, 4, 9]) + @pytest.mark.parametrize("iterations", iteration_list) def test_optical_flows_with_estimation(self, run_pipeline, correct_input_cfg, optical_flow_pipeline): """Test optical flows with estimation.""" configuration = { From 6ac7f8842df96108a26744bd25edce4489ee9fb4 Mon Sep 17 00:00:00 2001 From: Philippe Mallet-Ladeira Date: Mon, 26 Aug 2024 16:26:21 +0200 Subject: [PATCH 089/121] tests(resources): reduce image size not to exeed CI timeout --- tests/resource_tests/test_pandora2d.py | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/tests/resource_tests/test_pandora2d.py b/tests/resource_tests/test_pandora2d.py index 204da2f..5837b6b 100644 --- a/tests/resource_tests/test_pandora2d.py +++ b/tests/resource_tests/test_pandora2d.py @@ -21,8 +21,11 @@ Test used resources during execution of a configuration. """ -import pytest +# pylint: disable=redefined-outer-name +import numpy as np +import pytest +from PIL import Image # Mark all test of the module with monitor_test pytestmark = pytest.mark.monitor_test @@ -32,6 +35,27 @@ iteration_list = [1, 4, 9] +def reduce_image(input_path, output_path): + data = np.asarray(Image.open(input_path)) + half_row, half_col = data.shape[0] // 2, data.shape[1] // 2 + image = Image.fromarray(data[half_row - 25 : half_row + 25, half_col - 25 : half_col + 25]) + image.save(output_path, "png") + + +@pytest.fixture() +def left_img_path(tmp_path, left_img_path): + path = tmp_path / "left.png" + reduce_image(left_img_path, path) + return str(path) + + +@pytest.fixture() +def right_img_path(tmp_path, right_img_path): + path = tmp_path / "right.png" + reduce_image(right_img_path, path) + return str(path) + + def test_estimation(run_pipeline, correct_input_cfg): """Test a configuration with only an estimation in the pipeline.""" configuration = { From aabbf289fb836d74f09c63c965bcc8591774c41f Mon Sep 17 00:00:00 2001 From: duzelis Date: Wed, 28 Aug 2024 17:50:51 +0200 Subject: [PATCH 090/121] feat: add check_disparity method to accept disparity grids as input --- pandora2d/check_configuration.py | 99 ++++++++++++++++++++++++++++++-- 1 file changed, 93 insertions(+), 6 deletions(-) diff --git a/pandora2d/check_configuration.py b/pandora2d/check_configuration.py index 72d2e99..26843b5 100644 --- a/pandora2d/check_configuration.py +++ b/pandora2d/check_configuration.py @@ -30,8 +30,9 @@ import numpy as np import xarray as xr from json_checker import And, Checker, Or +from rasterio.io import DatasetReader -from pandora.img_tools import get_metadata +from pandora.img_tools import get_metadata, rasterio_open from pandora.check_configuration import ( check_dataset, check_images, @@ -102,13 +103,99 @@ def check_input_section(user_cfg: Dict[str, dict], estimation_config: dict = Non if estimation_config is None: left_image_metadata = get_metadata(cfg["input"]["left"]["img"]) - check_disparity_ranges_are_inside_image( - left_image_metadata, cfg["input"]["row_disparity"], cfg["input"]["col_disparity"] - ) + check_disparity(left_image_metadata, cfg["input"]) return cfg +def check_disparity(image_metadata: xr.Dataset, input_cfg: Dict) -> None: + """ + All checks on disparity + + :param image_metadata: only metadata on the left image + :type image_metadata: xr.Dataset + :param input_cfg: input configuration + :type input_cfg: Dict + + """ + + # Check that disparities are dictionaries or grids + if not (isinstance(input_cfg["row_disparity"], dict) and isinstance(input_cfg["col_disparity"], dict)): + raise AttributeError("The disparities in rows and columns must be given as 2 dictionaries.") + + if isinstance(input_cfg["row_disparity"]["init"], str) and isinstance(input_cfg["col_disparity"]["init"], str): + + # Read disparity grids + disparity_row_reader = rasterio_open(input_cfg["row_disparity"]["init"]) + disparity_col_reader = rasterio_open(input_cfg["col_disparity"]["init"]) + + # Check disparity grids size and number of bands + check_disparity_grids(image_metadata, disparity_row_reader) + check_disparity_grids(image_metadata, disparity_col_reader) + + # Get correct disparity dictionaries from init disparity grids to give as input of + # the check_disparity_ranges_are_inside_image method + row_disp_dict = get_dictionary_from_init_grid(disparity_row_reader, input_cfg["row_disparity"]["range"]) + col_disp_dict = get_dictionary_from_init_grid(disparity_col_reader, input_cfg["col_disparity"]["range"]) + + elif isinstance(input_cfg["row_disparity"]["init"], int) and isinstance(input_cfg["col_disparity"]["init"], int): + row_disp_dict = input_cfg["row_disparity"] + col_disp_dict = input_cfg["col_disparity"] + + else: + raise ValueError("Initial columns and row disparity values must be two strings or two integers") + + # Check that disparity ranges are not totally out of the image + check_disparity_ranges_are_inside_image(image_metadata, row_disp_dict, col_disp_dict) + + +def check_disparity_grids(image_metadata: xr.Dataset, disparity_reader: DatasetReader) -> None: + """ + Check that disparity grids contains two bands and are + the same size as the input image + + :param image_metadata: + :type image_metadata: xr.Dataset + :param disparity_reader: disparity grids + :type disparity_reader: rasterio.io.DatasetReader + """ + + # Check that disparity grids are 1-channel grids + if disparity_reader.count != 1: + raise AttributeError("Initial disparity grid must be a 1-channel grid") + + # Check that disparity grids are the same size as the input image + if (disparity_reader.height, disparity_reader.width) != ( + image_metadata.sizes["row"], + image_metadata.sizes["col"], + ): + raise AttributeError("Initial disparity grids and image must have the same size") + + +def get_dictionary_from_init_grid(disparity_reader: DatasetReader, disp_range: int) -> Dict: + """ + Get correct dictionaries to give as input of check_disparity_ranges_are_inside_image method + from initial disparity grids. + + :param disparity_reader: initial disparity grid + :type disparity_reader: rasterio.io.DatasetReader + :param disp_range: range of exploration + :type disp_range: int + :return: a disparity dictionary to give to check_disparity_ranges_are_inside_image() method + :rtype: Dict + """ + + init_disp_grid = disparity_reader.read(1) + + # Get dictionary with integer init value corresponding to the maximum absolute value of init_disp_grid + disp_dict = { + "init": np.max(np.abs(init_disp_grid)), + "range": disp_range, + } + + return disp_dict + + def check_disparity_ranges_are_inside_image( image_metadata: xr.Dataset, row_disparity: Dict, col_disparity: Dict ) -> None: @@ -283,8 +370,8 @@ def get_roi_config(user_cfg: Dict[str, dict]) -> Dict[str, dict]: "nodata": Or(int, lambda input: np.isnan(input), lambda input: np.isinf(input)), "mask": And(Or(str, lambda input: input is None), rasterio_can_open), }, - "col_disparity": {"init": int, "range": And(int, lambda x: x >= 0)}, - "row_disparity": {"init": int, "range": And(int, lambda x: x >= 0)}, + "col_disparity": {"init": Or(int, rasterio_can_open), "range": And(int, lambda x: x >= 0)}, + "row_disparity": {"init": Or(int, rasterio_can_open), "range": And(int, lambda x: x >= 0)}, } default_short_configuration_input = { From 98a28cf3c8047827f792f677913ae9a028f08fb3 Mon Sep 17 00:00:00 2001 From: duzelis Date: Fri, 30 Aug 2024 17:12:36 +0200 Subject: [PATCH 091/121] test: add new fixtures for disparity grids in conftest files --- tests/conftest.py | 98 ++++++++++++++++++++++++++++++++++-- tests/unit_tests/conftest.py | 76 +++++++++++++++++++++++++--- 2 files changed, 164 insertions(+), 10 deletions(-) diff --git a/tests/conftest.py b/tests/conftest.py index d42e273..6e50edc 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -20,8 +20,6 @@ Module with global test fixtures. """ -import json - # pylint: disable=redefined-outer-name import pathlib import re @@ -35,8 +33,6 @@ import pandora2d -import pandora2d - def pytest_collection_modifyitems(config, items): """ @@ -240,3 +236,97 @@ def run(configuration, output_dir="output"): return tmp_path return run + + +@pytest.fixture() +def constant_initial_disparity(): + """ + Create a correct disparity dictionary + with constant initial disparity + """ + return {"init": 1, "range": 3} + + +@pytest.fixture() +def second_constant_initial_disparity(): + """ + Create a correct disparity dictionary + with constant initial disparity + """ + return {"init": 0, "range": 2} + + +@pytest.fixture() +def make_input_cfg(left_img_path, right_img_path, request): + """Get input configuration with given disparities""" + + input_cfg = { + "left": { + "img": left_img_path, + "nodata": -9999, + }, + "right": {"img": right_img_path, "nodata": -9999}, + "col_disparity": request.getfixturevalue(request.param["col_disparity"]), + "row_disparity": request.getfixturevalue(request.param["row_disparity"]), + } + + return input_cfg + + +@pytest.fixture +def left_img_shape(left_img_path): + """ + Get shape of left image stored in left_img_path fixture + """ + + with rasterio.open(left_img_path) as src: + width = src.width + height = src.height + + return (height, width) + + +@pytest.fixture +def create_disparity_grid_fixture(tmp_path): + """ + Creates initial disparity grid and save it in tmp. + """ + + def create_disparity_grid(data, disp_range, suffix_path, band=False, disp_type=rasterio.dtypes.int64): + + if not band: + disparity_grid = xr.DataArray(data, dims=["row", "col"]) + else: + disparity_grid = xr.DataArray(data, dims=["row", "col", "band"]) + + path = tmp_path / suffix_path + + write_data_array(data_array=disparity_grid, filename=str(path), dtype=disp_type) + + return {"init": str(path), "range": disp_range} + + return create_disparity_grid + + +@pytest.fixture +def correct_grid(left_img_shape, create_disparity_grid_fixture): + """Create a correct initial disparity grid and save it in tmp""" + + height, width = left_img_shape + + # Array of size (height, width) with alternating rows of 2, 0 and 3 + init_band = np.tile([[2], [0], [3]], (height // 3 + 1, width))[:height, :] + + return create_disparity_grid_fixture(init_band, 5, "disparity.tif") + + +@pytest.fixture +def second_correct_grid(left_img_shape, create_disparity_grid_fixture): + """Create a correct initial disparity grid and save it in tmp""" + + height, width = left_img_shape + + # Array of size (height, width) with alternating columns of 5, -21 and -1 + init_band = np.tile([[5, -21, -1]], (height, width // 3 + 1))[:, :width] + + return create_disparity_grid_fixture(init_band, 5, "second_disparity.tif") diff --git a/tests/unit_tests/conftest.py b/tests/unit_tests/conftest.py index 6cbde52..18f39d8 100644 --- a/tests/unit_tests/conftest.py +++ b/tests/unit_tests/conftest.py @@ -27,7 +27,7 @@ from skimage.io import imsave from pandora2d import Pandora2DMachine -from pandora2d.img_tools import add_left_disparity_grid +from pandora2d.img_tools import add_disparity_grid @pytest.fixture() @@ -182,9 +182,7 @@ def left_stereo_object(): "transform": Affine(1.0, 0.0, 0.0, 0.0, 1.0, 0.0), } - return left.pipe( - add_left_disparity_grid, {"col_disparity": {"init": 1, "range": 1}, "row_disparity": {"init": -1, "range": 1}} - ) + return left.pipe(add_disparity_grid, {"init": 1, "range": 1}, {"init": -1, "range": 1}) @pytest.fixture() @@ -256,8 +254,74 @@ def stereo_object_with_args(): return ( left_arg.pipe( - add_left_disparity_grid, - {"col_disparity": {"init": 1, "range": 1}, "row_disparity": {"init": -1, "range": 1}}, + add_disparity_grid, + {"init": 1, "range": 1}, + {"init": -1, "range": 1}, ), right_arg, ) + + +@pytest.fixture +def incorrect_disp_dict(): + """Create an incorrect disparity dictionary""" + return {"init": -460, "range": 3} + + +@pytest.fixture +def out_of_image_grid(left_img_shape, create_disparity_grid_fixture): + """ + Create an initial disparity grid with a point that has its disparity interval outside the image + and save it in tmp + """ + + height, width = left_img_shape + + init_band = np.random.randint(-3, 4, size=(height, width)) + init_band[0, 0] = -455 + + return create_disparity_grid_fixture(init_band, 2, "out_of_image_disparity.tif") + + +@pytest.fixture +def negative_exploration_grid(left_img_shape, create_disparity_grid_fixture): + """ + Create an initial disparity grid with a point that has a negative exploration value + and save it in tmp + """ + + height, width = left_img_shape + + init_band = np.random.randint(-3, 4, size=(height, width)) + + return create_disparity_grid_fixture(init_band, -2, "negative_exploration_disparity.tif") + + +@pytest.fixture +def two_bands_grid(left_img_shape, create_disparity_grid_fixture): + """ + Create an initial disparity grid with two bands and save it in tmp + """ + + height, width = left_img_shape + + first_band = np.random.randint(-3, 4, size=(height, width)) + second_band = np.random.randint(0, 6, size=(height, width)) + + data = np.stack([first_band, second_band], axis=-1) + + return create_disparity_grid_fixture(data, 2, "two_bands_disparity.tif", True) + + +@pytest.fixture +def wrong_size_grid(left_img_shape, create_disparity_grid_fixture): + """ + Create an initial disparity grid of wrong size + and save it in tmp + """ + + height, width = left_img_shape + + init_band = np.random.randint(-3, 4, size=(height - 2, width + 4)) + + return create_disparity_grid_fixture(init_band, 3, "wrong_size_disparity.tif") From 721ac83fe0baf513110e4d5ff0aa2f17d98493dd Mon Sep 17 00:00:00 2001 From: duzelis Date: Wed, 28 Aug 2024 17:51:21 +0200 Subject: [PATCH 092/121] test: add tests for check_disparity method --- tests/unit_tests/test_check_configuration.py | 89 +++++++++++++++++++- 1 file changed, 88 insertions(+), 1 deletion(-) diff --git a/tests/unit_tests/test_check_configuration.py b/tests/unit_tests/test_check_configuration.py index e2c5b6f..f634977 100644 --- a/tests/unit_tests/test_check_configuration.py +++ b/tests/unit_tests/test_check_configuration.py @@ -33,7 +33,7 @@ from json_checker import DictCheckerError, MissKeyCheckerError from skimage.io import imsave - +from pandora.img_tools import get_metadata from pandora2d.img_tools import create_datasets_from_inputs, add_disparity_grid from pandora2d import check_configuration @@ -582,6 +582,93 @@ def test_disparity_partially_out(self, pandora2d_machine, configuration): check_configuration.check_conf(configuration, pandora2d_machine) +class TestCheckDisparity: + """ + Test check_disparity method + """ + + @pytest.mark.parametrize( + ["make_input_cfg"], + [ + pytest.param( + {"row_disparity": "correct_grid", "col_disparity": "second_correct_grid"}, + id="Correct disparity with variable initial value", + ), + pytest.param( + {"row_disparity": "constant_initial_disparity", "col_disparity": "second_constant_initial_disparity"}, + id="Correct disparity with constant initial value", + ), + ], + indirect=["make_input_cfg"], + ) + def test_passes_check_disparity(self, left_img_path, make_input_cfg): + """ + Test check_disparity method with correct input disparities + """ + + image_metadata = get_metadata(left_img_path) + + check_configuration.check_disparity(image_metadata, make_input_cfg) + + @pytest.mark.parametrize( + ["make_input_cfg", "error_type", "error_message"], + [ + pytest.param( + {"row_disparity": "correct_grid", "col_disparity": "left_img_shape"}, + AttributeError, + "The disparities in rows and columns must be given as 2 dictionaries", + id="Col disparity is not a dictionary", + ), + pytest.param( + {"row_disparity": "left_img_shape", "col_disparity": "correct_grid"}, + AttributeError, + "The disparities in rows and columns must be given as 2 dictionaries", + id="Row disparity is not a dictionary", + ), + pytest.param( + {"row_disparity": "constant_initial_disparity", "col_disparity": "correct_grid"}, + ValueError, + "Initial columns and row disparity values must be two strings or two integers", + id="Initial value is different for columns and rows disparity", + ), + pytest.param( + {"row_disparity": "out_of_image_grid", "col_disparity": "second_correct_grid"}, + ValueError, + "Row disparity range out of image", + id="Row disparity grid out of image for one point", + ), + pytest.param( + {"row_disparity": "constant_initial_disparity", "col_disparity": "incorrect_disp_dict"}, + ValueError, + "Column disparity range out of image", + id="Column disparity dict out of image for one point", + ), + pytest.param( + {"row_disparity": "two_bands_grid", "col_disparity": "correct_grid"}, + AttributeError, + "Initial disparity grid must be a 1-channel grid", + id="Row disparity grid has two band", + ), + pytest.param( + {"row_disparity": "correct_grid", "col_disparity": "wrong_size_grid"}, + AttributeError, + "Initial disparity grids and image must have the same size", + id="Column disparity grid size is different from image size", + ), + ], + indirect=["make_input_cfg"], + ) + def test_fails_check_disparity(self, left_img_path, make_input_cfg, error_type, error_message): + """ + Test check_disparity method with incorrect input disparities + """ + + image_metadata = get_metadata(left_img_path) + + with pytest.raises(error_type, match=error_message): + check_configuration.check_disparity(image_metadata, make_input_cfg) + + @pytest.mark.parametrize( "extra_section_name", [ From 29405b1de5bf580c1ececb3063018c655025840c Mon Sep 17 00:00:00 2001 From: duzelis Date: Thu, 29 Aug 2024 17:26:33 +0200 Subject: [PATCH 093/121] feat: update img_tools method with input disparity grids --- pandora2d/img_tools.py | 167 +++++++++++++++++++++++++++-------------- 1 file changed, 110 insertions(+), 57 deletions(-) diff --git a/pandora2d/img_tools.py b/pandora2d/img_tools.py index 0d3d7df..eb48c78 100644 --- a/pandora2d/img_tools.py +++ b/pandora2d/img_tools.py @@ -34,9 +34,10 @@ from xarray import Coordinate as Coordinates import copy -from typing import List, Dict, Union, NamedTuple, Any - +from typing import List, Dict, Union, NamedTuple, Any, Tuple from math import floor +from numpy.typing import NDArray + import xarray as xr import numpy as np from scipy.ndimage import shift, zoom @@ -85,10 +86,10 @@ def create_datasets_from_inputs(input_config: Dict, roi: Dict = None, estimation return Datasets( pandora_img_tools.create_dataset_from_inputs(input_config["left"], roi).pipe( - add_left_disparity_grid, input_config + add_disparity_grid, input_config["col_disparity"], input_config["row_disparity"] ), pandora_img_tools.create_dataset_from_inputs(input_config["right"], roi).pipe( - add_right_disparity_grid, input_config + add_disparity_grid, input_config["col_disparity"], input_config["row_disparity"], True ), ) @@ -125,82 +126,120 @@ def check_disparity_presence(input_config): def check_disparity_types(disparity: Any) -> None: """ - Check that disparity is a Sequence of length 2. + Check that disparity a dictionary with keys "init" and range" + where "init" is either: + + - a integer + - a path to a grid with integer values + :param disparity: disparity to check :type disparity: Any :raises SystemExit: if it does not meet requirements """ - if disparity is None or not isinstance(disparity, Dict) or ("init" and "range") not in disparity: - raise ValueError("Disparity should be a dictionnary with keys : init and range", disparity) - if not isinstance(disparity["init"], int): - raise ValueError("Disparity init should be an integer") + + # Check disparity type + if disparity is None or not isinstance(disparity, Dict): + raise ValueError("Disparity should be a dictionary") + + # Check that dictionary keys are correct + if not set(disparity.keys()) == {"init", "range"}: + raise ValueError("Disparity dictionary should contains keys : init and range", disparity) + # Check that init is an integer or a path to a grid + if not isinstance(disparity["init"], (int, str)): + raise ValueError("Disparity init should be an integer or a path to a grid") + + # Check that range value is a postive integer if disparity["range"] < 0 or not isinstance(disparity["range"], int): raise ValueError("Disparity range should be an integer greater or equal to 0") -def add_left_disparity_grid(dataset: xr.Dataset, configuration: Dict) -> xr.Dataset: +def add_disparity_grid(dataset: xr.Dataset, col_disparity: Dict, row_disparity: Dict, right=False): """ - Add left disparity to dataset. + Add disparity to dataset - :param dataset: dataset to add disparity grid to + :param dataset: xarray dataset :type dataset: xr.Dataset - :param configuration: configuration with information about disparity - :type configuration: Dict + :param col_disparity: Disparity interval for columns + :type col_disparity: Dict + :param row_disparity: Disparity interval for rows + :type row_disparity: Dict + :param right: indicates whether the disparity grid is added to the right dataset + :type right: bool + :return: dataset : updated dataset :rtype: xr.Dataset """ - col_disparity = configuration["col_disparity"] - row_disparity = configuration["row_disparity"] - return add_disparity_grid(dataset, col_disparity, row_disparity) + # Creates min and max disparity grids + col_disp_min_max, col_disp_interval = get_min_max_disp_from_dicts(dataset, col_disparity, right) + row_disp_min_max, row_disp_interval = get_min_max_disp_from_dicts(dataset, row_disparity, right) + + # Add disparity grids to dataset + for key, disparity_data, source in zip( + ["col_disparity", "row_disparity"], [col_disp_min_max, row_disp_min_max], [col_disp_interval, row_disp_interval] + ): + dataset[key] = xr.DataArray( + disparity_data, + dims=["band_disp", "row", "col"], + coords={"band_disp": ["min", "max"]}, + ) + + dataset.attrs[f"{key}_source"] = source + return dataset -def add_right_disparity_grid(dataset: xr.Dataset, configuration: Dict) -> xr.Dataset: +def get_min_max_disp_from_dicts(dataset: xr.Dataset, disparity: Dict, right: bool = False) -> Tuple[NDArray, List]: """ - Add right disparity to dataset. + Transforms input disparity dicts with constant init into min/max disparity grids - :param dataset: dataset to add disparity grid to + :param dataset: xarray dataset :type dataset: xr.Dataset - :param configuration: configuration with information about disparity - :type configuration: Dict - :return: dataset : updated dataset - :rtype: xr.Dataset + :param disparity: input disparity + :type disparity: Dict + :param right: indicates whether the disparity grid is added to the right dataset + :type right: bool + :return: 3D numpy array containing min/max disparity grids and list with disparity source + :rtype: Tuple[NDArray, List] """ - col_disparity = configuration["col_disparity"].copy() - row_disparity = configuration["row_disparity"].copy() - col_disparity["init"] = -col_disparity["init"] - row_disparity["init"] = -row_disparity["init"] + # Creates min and max disparity grids if initial disparity is constant (int) + if isinstance(disparity["init"], int): - return add_disparity_grid(dataset, col_disparity, row_disparity) + shape = (dataset.sizes["row"], dataset.sizes["col"]) + disp_interval = [ + disparity["init"] * pow(-1, right) - disparity["range"], + disparity["init"] * pow(-1, right) + disparity["range"], + ] -def add_disparity_grid(dataset: xr.Dataset, col_disparity: Dict, row_disparity: Dict) -> xr.Dataset: - """ - Add disparity to dataset + disp_min_max = np.array([np.full(shape, disparity) for disparity in disp_interval]) - :param dataset: xarray dataset - :type dataset: xr.Dataset - :param col_disparity: Disparity interval for columns - :type col_disparity: Dict - :param row_disparity: Disparity interval for rows - :type row_disparity: Dict + # Creates min and max disparity grids if initial disparities are variable (grid) + elif isinstance(disparity["init"], str): - :return: dataset : updated dataset - :rtype: xr.Dataset - """ - col_disp_min_max = [col_disparity["init"] - col_disparity["range"], col_disparity["init"] + col_disparity["range"]] - row_disp_min_max = [row_disparity["init"] - row_disparity["range"], row_disparity["init"] + row_disparity["range"]] - shape = (dataset.sizes["row"], dataset.sizes["col"]) - for key, disparity_interval in zip(["col_disparity", "row_disparity"], [col_disp_min_max, row_disp_min_max]): - dataset[key] = xr.DataArray( - np.array([np.full(shape, disparity) for disparity in disparity_interval]), - dims=["band_disp", "row", "col"], - coords={"band_disp": ["min", "max"]}, + # Get dataset coordinates to select correct zone of disparity grids if we are using a ROI + rows = dataset.row.data + cols = dataset.col.data + + # Get disparity data + disp_data = pandora_img_tools.rasterio_open(disparity["init"]).read()[ + :, rows[0] : rows[-1] + 1, cols[0] : cols[-1] + 1 + ] + + # Use disparity data to creates min/max grids + disp_min_max = np.squeeze( + np.array( + [ + disp_data * pow(-1, right) - disparity["range"], + disp_data * pow(-1, right) + disparity["range"], + ] + ) ) - dataset.attrs[f"{key}_source"] = disparity_interval - return dataset + + disp_interval = [np.min(disp_min_max[0, ::]), np.max(disp_min_max[1, ::])] + + return disp_min_max, disp_interval def shift_disp_row_img(img_right: xr.Dataset, dec_row: int) -> xr.Dataset: @@ -262,12 +301,26 @@ def get_roi_processing(roi: dict, col_disparity: Dict, row_disparity: Dict) -> d """ new_roi = copy.deepcopy(roi) - new_roi["margins"] = ( - max(abs(col_disparity["init"] - col_disparity["range"]), roi["margins"][0]), - max(abs(row_disparity["init"] - row_disparity["range"]), roi["margins"][1]), - max(abs(col_disparity["init"] + col_disparity["range"]), roi["margins"][2]), - max(abs(row_disparity["init"] + row_disparity["range"]), roi["margins"][3]), - ) + if isinstance(col_disparity["init"], str) and isinstance(row_disparity["init"], str): + + # Read disparity grids + disparity_row_init = pandora_img_tools.rasterio_open(row_disparity["init"]).read() + disparity_col_init = pandora_img_tools.rasterio_open(col_disparity["init"]).read() + + new_roi["margins"] = ( + int(max(abs(np.min(disparity_col_init - col_disparity["range"])), roi["margins"][0])), + int(max(abs(np.min(disparity_row_init - row_disparity["range"])), roi["margins"][1])), + int(max(abs(np.max(disparity_col_init + col_disparity["range"])), roi["margins"][2])), + int(max(abs(np.max(disparity_row_init + row_disparity["range"])), roi["margins"][3])), + ) + + else: + new_roi["margins"] = ( + max(abs(col_disparity["init"] - col_disparity["range"]), roi["margins"][0]), + max(abs(row_disparity["init"] - row_disparity["range"]), roi["margins"][1]), + max(abs(col_disparity["init"] + col_disparity["range"]), roi["margins"][2]), + max(abs(row_disparity["init"] + row_disparity["range"]), roi["margins"][3]), + ) # Update user ROI with new margins. roi["margins"] = new_roi["margins"] From 7ebb3639d944cb8dd910b93bc7225c84b9afd77f Mon Sep 17 00:00:00 2001 From: duzelis Date: Fri, 30 Aug 2024 17:16:11 +0200 Subject: [PATCH 094/121] test: add new tests for create_datasets_from_inputs when input disparities are grids --- .../test_create_datasets_from_input.py | 458 +++++++++++++++--- 1 file changed, 397 insertions(+), 61 deletions(-) diff --git a/tests/unit_tests/test_img_tools/test_create_datasets_from_input.py b/tests/unit_tests/test_img_tools/test_create_datasets_from_input.py index d0eb4cc..6e758ed 100644 --- a/tests/unit_tests/test_img_tools/test_create_datasets_from_input.py +++ b/tests/unit_tests/test_img_tools/test_create_datasets_from_input.py @@ -33,51 +33,58 @@ from pandora2d import img_tools -def _make_input_section(left_img_path, right_img_path): - """This is not a fixture because we want to use it with different scopes.""" - return { - "left": { - "img": left_img_path, - "nodata": -9999, - }, - "right": { - "img": right_img_path, - "nodata": -9999, - }, - "col_disparity": {"init": 0, "range": 2}, - "row_disparity": {"init": 1, "range": 3}, - } - - -@pytest.fixture() -def input_section(left_img_path, right_img_path): - return _make_input_section(left_img_path, right_img_path) - - class TestReturnedValue: """Test expected properties of returned value of create_datasets_from_inputs.""" @pytest.fixture() - def result(self, left_img_path, right_img_path): - return img_tools.create_datasets_from_inputs(_make_input_section(left_img_path, right_img_path)) + def result(self, make_input_cfg): + return img_tools.create_datasets_from_inputs(make_input_cfg) - def test_use_function_from_pandora(self, mocker, input_section): + @pytest.mark.parametrize( + ["make_input_cfg"], + [ + pytest.param( + {"row_disparity": "correct_grid", "col_disparity": "correct_grid"}, + id="Correct disparity grids", + ), + pytest.param( + {"row_disparity": "constant_initial_disparity", "col_disparity": "second_constant_initial_disparity"}, + id="Correct disparity dictionaries", + ), + ], + indirect=["make_input_cfg"], + ) + def test_use_function_from_pandora(self, mocker, make_input_cfg): """Test we use `create_dataset_from_inputs` from pandora. We assume this function is well tested in Pandora and that we just need to test that we use it. """ pandora_function = mocker.patch.object(img_tools.pandora_img_tools, "create_dataset_from_inputs") - img_tools.create_datasets_from_inputs(input_section) + img_tools.create_datasets_from_inputs(make_input_cfg) pandora_function.assert_has_calls( [ - mocker.call(input_section["left"], None), - mocker.call(input_section["right"], None), + mocker.call(make_input_cfg["left"], None), + mocker.call(make_input_cfg["right"], None), ], any_order=True, ) + @pytest.mark.parametrize( + ["make_input_cfg"], + [ + pytest.param( + {"row_disparity": "correct_grid", "col_disparity": "correct_grid"}, + id="Correct disparity grids", + ), + pytest.param( + {"row_disparity": "constant_initial_disparity", "col_disparity": "second_constant_initial_disparity"}, + id="Correct disparity dictionaries", + ), + ], + indirect=["make_input_cfg"], + ) def test_returns_left_and_right_datasets(self, result, left_img_path, right_img_path): """Test left and right datasets are returned as namedtuple.""" assert len(result) == 2 @@ -91,33 +98,318 @@ def test_returns_left_and_right_datasets(self, result, left_img_path, right_img_ pandora.img_tools.rasterio_open(right_img_path).read(1, out_dtype=np.float32), ) + @pytest.mark.parametrize( + ["make_input_cfg"], + [ + pytest.param( + {"row_disparity": "correct_grid", "col_disparity": "correct_grid"}, + id="Correct disparity grids", + ), + pytest.param( + {"row_disparity": "constant_initial_disparity", "col_disparity": "second_constant_initial_disparity"}, + id="Correct disparity dictionaries", + ), + ], + indirect=["make_input_cfg"], + ) def test_disp_band_coordinates(self, result): """Test disp_band coordinates is present.""" np.testing.assert_equal(result.left.coords["band_disp"].data, ["min", "max"]) - def test_disparity_source(self, result): + @pytest.mark.parametrize( + [ + "make_input_cfg", + "left_col_disparity_source", + "left_row_disparity_source", + "right_col_disparity_source", + "right_row_disparity_source", + ], + [ + pytest.param( + {"row_disparity": "correct_grid", "col_disparity": "second_correct_grid"}, + [-26, 10], + [-5, 8], + [-10, 26], + [-8, 5], + id="Correct disparity grids", + ), + pytest.param( + {"row_disparity": "constant_initial_disparity", "col_disparity": "second_constant_initial_disparity"}, + [-2, 2], + [-2, 4], + [-2, 2], + [-4, 2], + id="Correct disparity dictionaries", + ), + ], + indirect=["make_input_cfg"], + ) + def test_disparity_source( + self, + result, + left_col_disparity_source, + left_row_disparity_source, + right_col_disparity_source, + right_row_disparity_source, + ): """Test.""" - assert result.left.attrs["col_disparity_source"] == [-2, 2] - assert result.left.attrs["row_disparity_source"] == [-2, 4] - assert result.right.attrs["col_disparity_source"] == [-2, 2] - assert result.right.attrs["row_disparity_source"] == [-4, 2] + assert result.left.attrs["col_disparity_source"] == left_col_disparity_source + assert result.left.attrs["row_disparity_source"] == left_row_disparity_source + assert result.right.attrs["col_disparity_source"] == right_col_disparity_source + assert result.right.attrs["row_disparity_source"] == right_row_disparity_source - def test_resulting_disparity_grids(self, result): + @pytest.mark.parametrize( + [ + "make_input_cfg", + "expected_left_col_disparity", + "expected_left_row_disparity", + "expected_right_col_disparity", + "expected_right_row_disparity", + ], + [ + pytest.param( + {"row_disparity": "correct_grid", "col_disparity": "second_correct_grid"}, + # Array of size 2x375x450 with alternating cols of 0, -26 and -6 + # for array[0,::] and alternating cols of 10, -16 and 4 for array[1,::] + np.array( + [ + np.tile([[0, -26, -6]], (375, 450 // 3 + 1))[:, :450], + np.tile([[10, -16, 4]], (375, 450 // 3 + 1))[:, :450], + ] + ), + # Array of size 2x375x450 with alternating rows of -3, -5 and -2 + # for array[0,::] and alternating rows of 7, 5 and 8 for array[1,::] + np.array( + [ + np.tile([[-3], [-5], [-2]], (375 // 3 + 1, 450))[:375, :], + np.tile([[7], [5], [8]], (375 // 3 + 1, 450))[:375, :], + ] + ), + # Array of size 2x375x450 with alternating cols of -10, 16 and -4 + # for array[0,::] and alternating cols of 0, 26 and 6 for array[1,::] + np.array( + [ + np.tile([[-10, 16, -4]], (375, 450 // 3 + 1))[:, :450], + np.tile([[0, 26, 6]], (375, 450 // 3 + 1))[:, :450], + ] + ), + # Array of size 2x375x450 with alternating rows of -7, -5 and -8 + # for array[0,::] and alternating rows of 3, 5 and 2 for array[1,::] + np.array( + [ + np.tile([[-7], [-5], [-8]], (375 // 3 + 1, 450))[:375, :], + np.tile([[3], [5], [2]], (375 // 3 + 1, 450))[:375, :], + ] + ), + id="Correct disparity grids", + ), + pytest.param( + {"row_disparity": "constant_initial_disparity", "col_disparity": "second_constant_initial_disparity"}, + np.array([np.full((375, 450), -2), np.full((375, 450), 2)]), + np.array([np.full((375, 450), -2), np.full((375, 450), 4)]), + np.array([np.full((375, 450), -2), np.full((375, 450), 2)]), + np.array([np.full((375, 450), -4), np.full((375, 450), 2)]), + id="Correct disparity dictionaries", + ), + ], + indirect=["make_input_cfg"], + ) + def test_resulting_disparity_grids( + self, + result, + expected_left_col_disparity, + expected_left_row_disparity, + expected_right_col_disparity, + expected_right_row_disparity, + ): """ - Test the method create_dataset_from_inputs with the disparity + Test the method create_dataset_from_inputs with dictionary and grid disparity """ - expected_left_col_disparity = np.array([np.full((375, 450), -2), np.full((375, 450), 2)]) - expected_left_row_disparity = np.array([np.full((375, 450), -2), np.full((375, 450), 4)]) - expected_right_col_disparity = np.array([np.full((375, 450), -2), np.full((375, 450), 2)]) - expected_right_row_disparity = np.array([np.full((375, 450), -4), np.full((375, 450), 2)]) np.testing.assert_array_equal(result.left["col_disparity"], expected_left_col_disparity) np.testing.assert_array_equal(result.left["row_disparity"], expected_left_row_disparity) np.testing.assert_array_equal(result.right["col_disparity"], expected_right_col_disparity) np.testing.assert_array_equal(result.right["row_disparity"], expected_right_row_disparity) + @pytest.mark.parametrize( + [ + "make_input_cfg", + "expected_left_col_disparity", + "expected_left_row_disparity", + "expected_right_col_disparity", + "expected_right_row_disparity", + "roi", + ], + [ + pytest.param( + {"row_disparity": "correct_grid", "col_disparity": "second_correct_grid"}, + # Array of size 2x96x97 with alternating cols of 0, -26 and -6 + # for array[0,::] and alternating cols of 10, -16 and 4 for array[1,::] + np.array( + [ + np.tile([[0, -26, -6]], (375, 450 // 3 + 1))[7:103, 8:105], + np.tile([[10, -16, 4]], (375, 450 // 3 + 1))[7:103, 8:105], + ] + ), + # Array of size 2x96x97 with alternating rows of -3, -5 and -2 + # for array[0,::] and alternating rows of 7, 5 and 8 for array[1,::] + np.array( + [ + np.tile([[-3], [-5], [-2]], (375 // 3 + 1, 450))[7:103, 8:105], + np.tile([[7], [5], [8]], (375 // 3 + 1, 450))[7:103, 8:105], + ] + ), + # Array of size 2x96x97 with alternating cols of -10, 16 and -4 + # for array[0,::] and alternating cols of 0, 26 and 6 for array[1,::] + np.array( + [ + np.tile([[-10, 16, -4]], (375, 450 // 3 + 1))[7:103, 8:105], + np.tile([[0, 26, 6]], (375, 450 // 3 + 1))[7:103, 8:105], + ] + ), + # Array of size 2x96x97 with alternating rows of -7, -5 and -8 + # for array[0,::] and alternating rows of 3, 5 and 2 for array[1,::] + np.array( + [ + np.tile([[-7], [-5], [-8]], (375 // 3 + 1, 450))[7:103, 8:105], + np.tile([[3], [5], [2]], (375 // 3 + 1, 450))[7:103, 8:105], + ] + ), + # ROI + {"col": {"first": 10, "last": 100}, "row": {"first": 10, "last": 100}, "margins": (2, 3, 4, 2)}, + id="Disparity grids with centered ROI", + ), + pytest.param( + {"row_disparity": "constant_initial_disparity", "col_disparity": "second_constant_initial_disparity"}, + np.array([np.full((96, 97), -2), np.full((96, 97), 2)]), + np.array([np.full((96, 97), -2), np.full((96, 97), 4)]), + np.array([np.full((96, 97), -2), np.full((96, 97), 2)]), + np.array([np.full((96, 97), -4), np.full((96, 97), 2)]), + {"col": {"first": 10, "last": 100}, "row": {"first": 10, "last": 100}, "margins": (2, 3, 4, 2)}, + id="Disparity dictionaries with centered ROI", + ), + pytest.param( + {"row_disparity": "correct_grid", "col_disparity": "second_correct_grid"}, + # Array of size 2x96x102 with alternating cols of 0, -26 and -6 + # for array[0,::] and alternating cols of 10, -16 and 4 for array[1,::] + np.array( + [ + np.tile([[0, -26, -6]], (375, 450 // 3 + 1))[7:103, 348:450], + np.tile([[10, -16, 4]], (375, 450 // 3 + 1))[7:103, 348:450], + ] + ), + # Array of size 2x96x102 with alternating rows of -3, -5 and -2 + # for array[0,::] and alternating rows of 7, 5 and 8 for array[1,::] + np.array( + [ + np.tile([[-3], [-5], [-2]], (375 // 3 + 1, 450))[7:103, 348:450], + np.tile([[7], [5], [8]], (375 // 3 + 1, 450))[7:103, 348:450], + ] + ), + # Array of size 2x96x102 with alternating cols of -10, 16 and -4 + # for array[0,::] and alternating cols of 0, 26 and 6 for array[1,::] + np.array( + [ + np.tile([[-10, 16, -4]], (375, 450 // 3 + 1))[7:103, 348:450], + np.tile([[0, 26, 6]], (375, 450 // 3 + 1))[7:103, 348:450], + ] + ), + # Array of size 2x96x102 with alternating rows of -7, -5 and -8 + # for array[0,::] and alternating rows of 3, 5 and 2 for array[1,::] + np.array( + [ + np.tile([[-7], [-5], [-8]], (375 // 3 + 1, 450))[7:103, 348:450], + np.tile([[3], [5], [2]], (375 // 3 + 1, 450))[7:103, 348:450], + ] + ), + # ROI + {"col": {"first": 350, "last": 460}, "row": {"first": 10, "last": 100}, "margins": (2, 3, 4, 2)}, + id="Disparity grids with right overlapping ROI", + ), + pytest.param( + {"row_disparity": "constant_initial_disparity", "col_disparity": "second_constant_initial_disparity"}, + np.array([np.full((96, 102), -2), np.full((96, 102), 2)]), + np.array([np.full((96, 102), -2), np.full((96, 102), 4)]), + np.array([np.full((96, 102), -2), np.full((96, 102), 2)]), + np.array([np.full((96, 102), -4), np.full((96, 102), 2)]), + {"col": {"first": 350, "last": 460}, "row": {"first": 10, "last": 100}, "margins": (2, 3, 4, 2)}, + id="Disparity dictionaries with right overlapping ROI", + ), + pytest.param( + {"row_disparity": "correct_grid", "col_disparity": "second_correct_grid"}, + # Array of size 2x103x97 with alternating cols of 0, -26 and -6 + # for array[0,::] and alternating cols of 10, -16 and 4 for array[1,::] + np.array( + [ + np.tile([[0, -26, -6]], (375, 450 // 3 + 1))[0:103, 8:105], + np.tile([[10, -16, 4]], (375, 450 // 3 + 1))[0:103, 8:105], + ] + ), + # Array of size 2x103x97 with alternating rows of -3, -5 and -2 + # for array[0,::] and alternating rows of 7, 5 and 8 for array[1,::] + np.array( + [ + np.tile([[-3], [-5], [-2]], (375 // 3 + 1, 450))[0:103, 8:105], + np.tile([[7], [5], [8]], (375 // 3 + 1, 450))[0:103, 8:105], + ] + ), + # Array of size 2x103x97 with alternating cols of -10, 16 and -4 + # for array[0,::] and alternating cols of 0, 26 and 6 for array[1,::] + np.array( + [ + np.tile([[-10, 16, -4]], (375, 450 // 3 + 1))[0:103, 8:105], + np.tile([[0, 26, 6]], (375, 450 // 3 + 1))[0:103, 8:105], + ] + ), + # Array of size 2x103x97 with alternating rows of -7, -5 and -8 + # for array[0,::] and alternating rows of 3, 5 and 2 for array[1,::] + np.array( + [ + np.tile([[-7], [-5], [-8]], (375 // 3 + 1, 450))[0:103, 8:105], + np.tile([[3], [5], [2]], (375 // 3 + 1, 450))[0:103, 8:105], + ] + ), + # ROI + {"col": {"first": 10, "last": 100}, "row": {"first": 0, "last": 100}, "margins": (2, 3, 4, 2)}, + id="Disparity grids with top overlapping ROI", + ), + pytest.param( + {"row_disparity": "constant_initial_disparity", "col_disparity": "second_constant_initial_disparity"}, + np.array([np.full((103, 97), -2), np.full((103, 97), 2)]), + np.array([np.full((103, 97), -2), np.full((103, 97), 4)]), + np.array([np.full((103, 97), -2), np.full((103, 97), 2)]), + np.array([np.full((103, 97), -4), np.full((103, 97), 2)]), + {"col": {"first": 10, "last": 100}, "row": {"first": 0, "last": 100}, "margins": (2, 3, 4, 2)}, + id="Disparity dictionaries with top overlapping ROI", + ), + ], + indirect=["make_input_cfg"], + ) + def test_resulting_disparity_grids_with_roi( + self, + make_input_cfg, + expected_left_col_disparity, + expected_left_row_disparity, + expected_right_col_disparity, + expected_right_row_disparity, + roi, + ): + """ + Test the method create_dataset_from_inputs with dictionary and grid disparity with ROI + + """ + + make_input_cfg["ROI"] = roi + + datasets = img_tools.create_datasets_from_inputs(make_input_cfg, roi=roi) + + np.testing.assert_array_equal(datasets.left["col_disparity"], expected_left_col_disparity) + np.testing.assert_array_equal(datasets.left["row_disparity"], expected_left_row_disparity) + np.testing.assert_array_equal(datasets.right["col_disparity"], expected_right_col_disparity) + np.testing.assert_array_equal(datasets.right["row_disparity"], expected_right_row_disparity) + class TestDisparityChecking: """Test checks done on disparities.""" @@ -132,7 +424,7 @@ class TestDisparityChecking: ), ], ) - def test_fails_when_disparity_is_missing(self, input_section, missing, message): + def test_fails_when_disparity_is_missing(self, correct_input_cfg, missing, message): """ Description : Test when disparity is not provided. Data : @@ -141,30 +433,47 @@ def test_fails_when_disparity_is_missing(self, input_section, missing, message): Requirement : EX_CONF_08 """ for key in missing: - del input_section[key] + del correct_input_cfg["input"][key] with pytest.raises(KeyError) as exc_info: - img_tools.create_datasets_from_inputs(input_section) + img_tools.create_datasets_from_inputs(correct_input_cfg["input"]) assert exc_info.value.args[0] == message - @pytest.mark.parametrize("disparity", [None, 1, 3.14, "grid_path", [-2, 2]]) + @pytest.mark.parametrize("disparity", [None, 1, 3.14, [-2, 2]]) + @pytest.mark.parametrize("disparity_key", ["col_disparity", "row_disparity"]) + def test_fails_when_disparities_have_wrong_type(self, correct_input_cfg, disparity_key, disparity): + """ + Description : Test if disparities are not dictionaries or grid in the input section + Data : + - Left image : cones/monoband/left.png + - Right image : cones/monoband/right.png + Requirement : EX_CONF_08 + """ + correct_input_cfg["input"][disparity_key] = disparity + + with pytest.raises(ValueError) as exc_info: + img_tools.create_datasets_from_inputs(correct_input_cfg["input"]) + assert exc_info.value.args[0] == "Disparity should be a dictionary" + + @pytest.mark.parametrize("disparity", [{"wrong_init": 2, "range": 2}]) @pytest.mark.parametrize("disparity_key", ["col_disparity", "row_disparity"]) - def test_fails_when_disparities_are_not_dictionaries(self, input_section, disparity_key, disparity): + def test_fails_when_dict_has_wrong_keys(self, correct_input_cfg, disparity_key, disparity): """ - Description : Test if disparities are dictionaries in the input section + Description : Test dict with wrong keys Data : - Left image : cones/monoband/left.png - Right image : cones/monoband/right.png Requirement : EX_CONF_08 """ - input_section[disparity_key] = disparity + correct_input_cfg["input"][disparity_key] = disparity with pytest.raises(ValueError) as exc_info: - img_tools.create_datasets_from_inputs(input_section) - assert exc_info.value.args[0] == "Disparity should be a dictionnary with keys : init and range" + img_tools.create_datasets_from_inputs(correct_input_cfg["input"]) + + assert exc_info.value.args[0] == "Disparity dictionary should contains keys : init and range" @pytest.mark.parametrize("disparity", [{"init": 2.0, "range": 2}]) @pytest.mark.parametrize("disparity_key", ["col_disparity", "row_disparity"]) - def test_fails_when_init_is_a_float(self, input_section, disparity_key, disparity): + def test_fails_when_init_is_a_float(self, correct_input_cfg, disparity_key, disparity): """ Description : Test if init is a float Data : @@ -172,16 +481,16 @@ def test_fails_when_init_is_a_float(self, input_section, disparity_key, disparit - Right image : cones/monoband/right.png Requirement : EX_CONF_08 """ - input_section[disparity_key] = disparity + correct_input_cfg["input"][disparity_key] = disparity with pytest.raises(ValueError) as exc_info: - img_tools.create_datasets_from_inputs(input_section) + img_tools.create_datasets_from_inputs(correct_input_cfg["input"]) - assert exc_info.value.args[0] == "Disparity init should be an integer" + assert exc_info.value.args[0] == "Disparity init should be an integer or a path to a grid" @pytest.mark.parametrize("disparity", [{"init": 2, "range": -2}]) @pytest.mark.parametrize("disparity_key", ["col_disparity", "row_disparity"]) - def test_fails_when_range_is_lt_0(self, input_section, disparity_key, disparity): + def test_fails_when_range_is_lt_0(self, correct_input_cfg, disparity_key, disparity): """ Description : Test if range is lower than 0 Data : @@ -189,16 +498,16 @@ def test_fails_when_range_is_lt_0(self, input_section, disparity_key, disparity) - Right image : cones/monoband/right.png Requirement : EX_CONF_08 """ - input_section[disparity_key] = disparity + correct_input_cfg["input"][disparity_key] = disparity with pytest.raises(ValueError) as exc_info: - img_tools.create_datasets_from_inputs(input_section) + img_tools.create_datasets_from_inputs(correct_input_cfg["input"]) assert exc_info.value.args[0] == "Disparity range should be an integer greater or equal to 0" @pytest.mark.parametrize("disparity", [None, np.nan, np.inf, float("nan"), float("inf")]) @pytest.mark.parametrize("disparity_key", ["col_disparity", "row_disparity"]) - def test_fails_with_bad_disparity_values(self, input_section, disparity_key, disparity): + def test_fails_with_bad_disparity_values(self, correct_input_cfg, disparity_key, disparity): """ Description : Test if the disparity is a dictionary Data : @@ -206,23 +515,50 @@ def test_fails_with_bad_disparity_values(self, input_section, disparity_key, dis - Right image : cones/monoband/right.png Requirement : EX_CONF_08 """ - input_section[disparity_key] = disparity + correct_input_cfg["input"][disparity_key] = disparity with pytest.raises(ValueError) as exc_info: - img_tools.create_datasets_from_inputs(input_section) - assert exc_info.value.args[0] == "Disparity should be a dictionnary with keys : init and range" + img_tools.create_datasets_from_inputs(correct_input_cfg["input"]) + assert exc_info.value.args[0] == "Disparity should be a dictionary" + + @pytest.mark.parametrize( + ["make_input_cfg"], + [ + pytest.param( + {"row_disparity": "negative_exploration_grid", "col_disparity": "correct_grid"}, + id="Negative exploration grid for row disparity", + ), + pytest.param( + {"row_disparity": "correct_grid", "col_disparity": "negative_exploration_grid"}, + id="Negative exploration grid for col disparity", + ), + ], + indirect=["make_input_cfg"], + ) + def test_fails_when_range_band_is_lt_0(self, make_input_cfg): + """ + Description : Test if range band contains values lower than 0 + Data : + - Left image : cones/monoband/left.png + - Right image : cones/monoband/right.png + """ + + with pytest.raises(ValueError) as exc_info: + img_tools.create_datasets_from_inputs(make_input_cfg) + + assert exc_info.value.args[0] == "Disparity range should be an integer greater or equal to 0" - def test_create_dataset_from_inputs_with_estimation_step(self, input_section): + def test_create_dataset_from_inputs_with_estimation_step(self, correct_input_cfg): """ test dataset_from_inputs with an estimation step and no disparity range """ - configuration_with_estimation = {"input": input_section} + configuration_with_estimation = correct_input_cfg del configuration_with_estimation["input"]["row_disparity"] del configuration_with_estimation["input"]["col_disparity"] configuration_with_estimation["pipeline"] = {"estimation": {"estimation_method": "phase_cross_correlation"}} result = img_tools.create_datasets_from_inputs( - input_section, estimation_cfg=configuration_with_estimation["pipeline"].get("estimation") + correct_input_cfg["input"], estimation_cfg=configuration_with_estimation["pipeline"].get("estimation") ) assert result.left.attrs["col_disparity_source"] == [-9999, -9999] From 7e896cdc2da5ad06f67363eafd15d5fdaf4257d6 Mon Sep 17 00:00:00 2001 From: duzelis Date: Mon, 2 Sep 2024 17:40:54 +0200 Subject: [PATCH 095/121] test: add new test with disparity grids for get_roi_processing method --- .../test_img_tools/test_get_roi_processing.py | 65 +++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/tests/unit_tests/test_img_tools/test_get_roi_processing.py b/tests/unit_tests/test_img_tools/test_get_roi_processing.py index 4dc0bd1..c3e2d95 100644 --- a/tests/unit_tests/test_img_tools/test_get_roi_processing.py +++ b/tests/unit_tests/test_img_tools/test_get_roi_processing.py @@ -25,6 +25,7 @@ # pylint: disable=redefined-outer-name import pytest +import numpy as np from pandora2d import img_tools @@ -78,3 +79,67 @@ def test_roi_with_negative_and_positive_disparities(default_roi, col_disparity, assert test_roi_column["margins"] == expected assert test_roi_column == default_roi + + +@pytest.fixture +def positive_grid(left_img_shape, create_disparity_grid_fixture): + """Create a positive disparity grid and save it in tmp""" + + height, width = left_img_shape + + # Array of size (height, width) with alternating rows of 6 and 8 + init_band = np.tile([[6], [8]], (height // 2 + 1, width))[:height, :] + + return create_disparity_grid_fixture(init_band, 2, "postive_disparity.tif") + + +@pytest.fixture +def negative_grid(left_img_shape, create_disparity_grid_fixture): + """Create a negative disparity grid and save it in tmp""" + + height, width = left_img_shape + + # Array of size (height, width) with alternating rows of -5 and -7 + init_band = np.tile([[-5], [-7]], (height // 2 + 1, width))[:height, :] + + return create_disparity_grid_fixture(init_band, 2, "negative_disparity.tif") + + +@pytest.fixture +def lower_than_margins_grid(left_img_shape, create_disparity_grid_fixture): + """ + Create a disparity grid with disparity lower than default_roi margins + and save it in tmp + """ + + height, width = left_img_shape + + init_band = np.full((height, width), 0) + + return create_disparity_grid_fixture(init_band, 1, "lower_than_margins_disparity.tif") + + +@pytest.mark.parametrize( + ["col_disparity", "row_disparity", "expected"], + [ + pytest.param("second_correct_grid", "correct_grid", (26, 5, 10, 8), id="Negative and positive disparities"), + pytest.param("negative_grid", "positive_grid", (9, 4, 3, 10), id="Negative disparities for columns"), + pytest.param("positive_grid", "negative_grid", (4, 9, 10, 3), id="Negative disparities for rows"), + pytest.param( + "lower_than_margins_grid", + "lower_than_margins_grid", + (2, 2, 2, 2), + id="Margins greater than disparities", + ), + ], +) +def test_roi_with_negative_and_positive_disparities_grids(default_roi, col_disparity, row_disparity, expected, request): + """ + Test the get_roi_processing method with grid disparities + """ + test_roi_column = img_tools.get_roi_processing( + default_roi, request.getfixturevalue(col_disparity), request.getfixturevalue(row_disparity) + ) + + assert test_roi_column["margins"] == expected + assert test_roi_column == default_roi From 64d1039231e7cbcb2a40c18cc58f74b0b18a556b Mon Sep 17 00:00:00 2001 From: duzelis Date: Mon, 2 Sep 2024 17:41:27 +0200 Subject: [PATCH 096/121] test: add functional test to test pandora2d pipeline with disparity grids --- tests/functional_tests/conftest.py | 11 ++++ tests/functional_tests/test_pipelines.py | 68 ++++++++++++++++++++++++ 2 files changed, 79 insertions(+) diff --git a/tests/functional_tests/conftest.py b/tests/functional_tests/conftest.py index fb9dbc0..3ec0992 100644 --- a/tests/functional_tests/conftest.py +++ b/tests/functional_tests/conftest.py @@ -40,3 +40,14 @@ def correct_pipeline_with_optical_flow(): "refinement": {"refinement_method": "optical_flow"}, } } + + +@pytest.fixture() +def correct_pipeline_with_dichotomy(): + return { + "pipeline": { + "matching_cost": {"matching_cost_method": "zncc", "window_size": 5}, + "disparity": {"disparity_method": "wta", "invalid_disparity": -99}, + "refinement": {"refinement_method": "dichotomy", "iterations": 2, "filter": {"method": "bicubic"}}, + } + } diff --git a/tests/functional_tests/test_pipelines.py b/tests/functional_tests/test_pipelines.py index 2ff98b8..b8bf988 100644 --- a/tests/functional_tests/test_pipelines.py +++ b/tests/functional_tests/test_pipelines.py @@ -28,6 +28,9 @@ import pytest +import numpy as np +import rasterio + def remove_extra_keys(extended: dict, reference: dict): """ @@ -233,3 +236,68 @@ def test_configuration_with_mask(run_pipeline, input_cfg, correct_pipeline_witho report = json.load(report_file) assert report["statistics"]["disparity"].keys() == {"row", "col"} + + +@pytest.mark.parametrize( + ["make_input_cfg", "pipeline"], + [ + pytest.param( + {"row_disparity": "correct_grid", "col_disparity": "second_correct_grid"}, + "correct_pipeline_without_refinement", + id="Pipeline with disparity grids", + ), + pytest.param( + {"row_disparity": "correct_grid", "col_disparity": "second_correct_grid"}, + "correct_pipeline_with_dichotomy", + id="Pipeline with disparity grids and dichotomy", + ), + ], + indirect=["make_input_cfg"], +) +def test_disparity_grids(run_pipeline, make_input_cfg, pipeline, request): + """ + Description: Test pipeline with disparity grids + """ + + configuration = { + "input": make_input_cfg, + "ROI": {"col": {"first": 210, "last": 240}, "row": {"first": 210, "last": 240}}, + **request.getfixturevalue(pipeline), + } + configuration["pipeline"]["disparity"]["invalid_disparity"] = np.nan + + run_dir = run_pipeline(configuration) + + with rasterio.open(run_dir / "output" / "row_disparity.tif") as src: + row_map = src.read(1) + with rasterio.open(run_dir / "output" / "columns_disparity.tif") as src: + col_map = src.read(1) + + non_nan_row_map = ~np.isnan(row_map) + non_nan_col_map = ~np.isnan(col_map) + + # Minimal and maximal disparities corresponding to correct_grid_path fixture + min_max_disp_row = np.array( + [ + np.tile([[-3], [-5], [-2]], (375 // 3 + 1, 450))[210:241, 210:241], + np.tile([[7], [5], [8]], (375 // 3 + 1, 450))[210:241, 210:241], + ] + ) + + # Minimal and maximal disparities corresponding to second_correct_grid_path fixture + min_max_disp_col = np.array( + [ + np.tile([[0, -26, -6]], (375, 450 // 3 + 1))[210:241, 210:241], + np.tile([[10, -16, 4]], (375, 450 // 3 + 1))[210:241, 210:241], + ] + ) + + # Checks that the resulting disparities are well within the ranges created from the input disparity grids + assert np.all( + (row_map[non_nan_row_map] >= min_max_disp_row[0, ::][non_nan_row_map]) + & (row_map[non_nan_row_map] <= min_max_disp_row[1, ::][non_nan_row_map]) + ) + assert np.all( + (col_map[non_nan_col_map] >= min_max_disp_col[0, ::][non_nan_col_map]) + & (col_map[non_nan_col_map] <= min_max_disp_col[1, ::][non_nan_col_map]) + ) From c251ceb3744e1642cb580ca085b58a0989518ec4 Mon Sep 17 00:00:00 2001 From: duzelis Date: Fri, 6 Sep 2024 10:08:49 +0200 Subject: [PATCH 097/121] test: use add_disparity_grid method in tests --- tests/unit_tests/test_disparity.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/tests/unit_tests/test_disparity.py b/tests/unit_tests/test_disparity.py index 6f6afd2..33b9b10 100644 --- a/tests/unit_tests/test_disparity.py +++ b/tests/unit_tests/test_disparity.py @@ -34,7 +34,7 @@ from pandora.margins import Margins from pandora2d import matching_cost, disparity -from pandora2d.img_tools import add_left_disparity_grid +from pandora2d.img_tools import add_disparity_grid class TestCheckConf: @@ -207,17 +207,23 @@ def disparity_matcher(): @pytest.fixture() def img_left(default_attributs, data_left, disparity_cfg): + """ + Creates left image fixture + """ left = xr.Dataset( {"im": (["row", "col"], data_left)}, coords={"row": np.arange(data_left.shape[0]), "col": np.arange(data_left.shape[1])}, ) left.attrs = default_attributs - left.pipe(add_left_disparity_grid, disparity_cfg) + left.pipe(add_disparity_grid, disparity_cfg["col_disparity"], disparity_cfg["row_disparity"]) return left @pytest.fixture() def img_right(default_attributs, data_right): + """ + Creates right image fixture + """ right = xr.Dataset( {"im": (["row", "col"], data_right)}, coords={"row": np.arange(data_right.shape[0]), "col": np.arange(data_right.shape[1])}, From c696c0a9ab8688b3aba0ee37e782bb852f614696 Mon Sep 17 00:00:00 2001 From: duzelis Date: Fri, 6 Sep 2024 10:11:14 +0200 Subject: [PATCH 098/121] fix: call set_out_of_row_disparity_range_to_other_value and set_out_of_col_disparity_range_to_other_value with correct grids --- pandora2d/matching_cost/matching_cost.py | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/pandora2d/matching_cost/matching_cost.py b/pandora2d/matching_cost/matching_cost.py index 744507f..6476bb2 100644 --- a/pandora2d/matching_cost/matching_cost.py +++ b/pandora2d/matching_cost/matching_cost.py @@ -38,7 +38,10 @@ from pandora2d import img_tools import pandora2d.schema as cst_schema -from pandora2d.common import set_out_of_row_disparity_range_to_other_value +from pandora2d.common import ( + set_out_of_row_disparity_range_to_other_value, + set_out_of_col_disparity_range_to_other_value, +) class MatchingCost: @@ -403,6 +406,20 @@ def compute_cost_volumes( # Delete ROI_margins attributes which we used to calculate the row coordinates in the cost_volumes del cost_volumes.attrs["ROI_margins_for_cv"] - set_out_of_row_disparity_range_to_other_value(cost_volumes, grid_min_row, grid_max_row, np.nan, "cost_volumes") + + set_out_of_row_disparity_range_to_other_value( + cost_volumes, + img_left["row_disparity"].sel(band_disp="min").data, + img_left["row_disparity"].sel(band_disp="max").data, + np.nan, + "cost_volumes", + ) + set_out_of_col_disparity_range_to_other_value( + cost_volumes, + img_left["col_disparity"].sel(band_disp="min").data, + img_left["col_disparity"].sel(band_disp="max").data, + np.nan, + "cost_volumes", + ) return cost_volumes From 4dcc49d32baed7a8d9f31bf861d0d1f93e07e57d Mon Sep 17 00:00:00 2001 From: duzelis Date: Fri, 6 Sep 2024 16:09:22 +0200 Subject: [PATCH 099/121] fix: modify set_out_of_disparity_range_to_other_value methods to avoid putting the entire disp margin of the cv at nan --- pandora2d/common.py | 56 ++++++++++++++----- tests/unit_tests/test_common.py | 2 + .../test_refinement/test_optical_flow.py | 4 +- 3 files changed, 46 insertions(+), 16 deletions(-) diff --git a/pandora2d/common.py b/pandora2d/common.py index 7faa6eb..3183896 100644 --- a/pandora2d/common.py +++ b/pandora2d/common.py @@ -222,14 +222,28 @@ def set_out_of_row_disparity_range_to_other_value( # WARNING: if one day we switch disp_row with disp_col index should be -2 ndisp_row = data[data_var_name].shape[-1] - for disp_row in range(ndisp_row): - masking = np.nonzero( - np.logical_or( - data.coords["disp_row"].data[disp_row] < min_disp_grid, - data.coords["disp_row"].data[disp_row] > max_disp_grid, + # We want to put special value on points that are not in the global disparity range (row_disparity_source) + if data_var_name == "cost_volumes": + for disp_row in range(ndisp_row): + masking = np.nonzero( + np.logical_or( + (data.coords["disp_row"].data[disp_row] < min_disp_grid) + & (data.coords["disp_row"].data[disp_row] >= data.attrs["row_disparity_source"][0]), + (data.coords["disp_row"].data[disp_row] > max_disp_grid) + & (data.coords["disp_row"].data[disp_row] <= data.attrs["row_disparity_source"][1]), + ) ) - ) - data[data_var_name].data[masking[0], masking[1], :, disp_row] = value + data[data_var_name].data[masking[0], masking[1], :, disp_row] = value + + else: + for disp_row in range(ndisp_row): + masking = np.nonzero( + np.logical_or( + data.coords["disp_row"].data[disp_row] < min_disp_grid, + data.coords["disp_row"].data[disp_row] > max_disp_grid, + ) + ) + data[data_var_name].data[masking[0], masking[1], :, disp_row] = value def set_out_of_col_disparity_range_to_other_value( @@ -259,11 +273,25 @@ def set_out_of_col_disparity_range_to_other_value( # WARNING: if one day we switch disp_row with disp_col index should be -1 ndisp_col = data[data_var_name].shape[-2] - for disp_col in range(ndisp_col): - masking = np.nonzero( - np.logical_or( - data.coords["disp_col"].data[disp_col] < min_disp_grid, - data.coords["disp_col"].data[disp_col] > max_disp_grid, + # We want to put special value on points that are not in the global disparity range (col_disparity_source) + if data_var_name == "cost_volumes": + for disp_col in range(ndisp_col): + masking = np.nonzero( + np.logical_or( + (data.coords["disp_col"].data[disp_col] < min_disp_grid) + & (data.coords["disp_col"].data[disp_col] >= data.attrs["col_disparity_source"][0]), + (data.coords["disp_col"].data[disp_col] > max_disp_grid) + & (data.coords["disp_col"].data[disp_col] <= data.attrs["col_disparity_source"][1]), + ) + ) + data[data_var_name].data[masking[0], masking[1], disp_col, :] = value + + else: + for disp_col in range(ndisp_col): + masking = np.nonzero( + np.logical_or( + data.coords["disp_col"].data[disp_col] < min_disp_grid, + data.coords["disp_col"].data[disp_col] > max_disp_grid, + ) ) - ) - data[data_var_name].data[masking[0], masking[1], disp_col, :] = value + data[data_var_name].data[masking[0], masking[1], disp_col, :] = value diff --git a/tests/unit_tests/test_common.py b/tests/unit_tests/test_common.py index d9849f9..4b2ced8 100644 --- a/tests/unit_tests/test_common.py +++ b/tests/unit_tests/test_common.py @@ -406,6 +406,8 @@ def dataset(self, range_row, range_col, disp_range_col, disp_range_row, data_var "disp_row": disp_range_row, }, ) + + xarray.attrs = {"col_disparity_source": [2, 8], "row_disparity_source": [-5, 0]} min_disp_grid = np.full((xarray.sizes["row"], xarray.sizes["col"]), xarray.coords[disp_coords].data[0]) max_disp_grid = np.full((xarray.sizes["row"], xarray.sizes["col"]), xarray.coords[disp_coords].data[-1]) return xarray, min_disp_grid, max_disp_grid diff --git a/tests/unit_tests/test_refinement/test_optical_flow.py b/tests/unit_tests/test_refinement/test_optical_flow.py index 52de9f1..3d4a70a 100644 --- a/tests/unit_tests/test_refinement/test_optical_flow.py +++ b/tests/unit_tests/test_refinement/test_optical_flow.py @@ -656,8 +656,8 @@ def image( "valid_pixels": 0, "no_data_mask": 1, "crs": None, - "col_disparity_source": "grid_col", - "row_disparity_source": "grid_row", + "col_disparity_source": [np.min(col_min_disparity), np.max(col_max_disparity)], + "row_disparity_source": [np.min(row_min_disparity), np.max(col_max_disparity)], }, ) From 7505b943ae246ab22fb57d5ff9069e5f5dd88afd Mon Sep 17 00:00:00 2001 From: duzelis Date: Fri, 6 Sep 2024 16:09:56 +0200 Subject: [PATCH 100/121] docs: update doc with variable initial disparity grid --- .../exploring_the_field/initial_disparity.rst | 7 ++++ docs/source/userguide/input.rst | 41 +++++++++++++++++-- 2 files changed, 45 insertions(+), 3 deletions(-) diff --git a/docs/source/exploring_the_field/initial_disparity.rst b/docs/source/exploring_the_field/initial_disparity.rst index cbac738..6e0d59e 100644 --- a/docs/source/exploring_the_field/initial_disparity.rst +++ b/docs/source/exploring_the_field/initial_disparity.rst @@ -22,6 +22,13 @@ In the configuration file, the user is required to enter disparity range for row } } +.. note:: + The "init" key can be either: + - an integer if the initial disparity is common to every point in the image. + - a path to a disparity grid if each point has its own initial disparity value. + + (see :ref:`inputs`) + The min and max disparity would then be equal to (example for columns): .. code:: python diff --git a/docs/source/userguide/input.rst b/docs/source/userguide/input.rst index 57f993b..a47f578 100644 --- a/docs/source/userguide/input.rst +++ b/docs/source/userguide/input.rst @@ -82,8 +82,8 @@ Image (left and right) and disparity (col_disparity and row_disparity) propertie - Default value - Required * - *init* - - Initial point - - int + - Initial point or path to initial grid + - int or str - - Yes * - *range* @@ -92,6 +92,12 @@ Image (left and right) and disparity (col_disparity and row_disparity) propertie - - Yes +.. note:: + The initial disparity can be either: + - constant for each point in the image, in which case *init* dictionary key is an integer + - variable, in which case *init* is a string which returns the path to a grid containing + an integer initial value for each point in the image. + .. warning:: With sad/ssd matching_cost_method in the pipeline (see :ref:`Sequencing`) , `nodata` only accepts `int` type. @@ -101,7 +107,10 @@ Image (left and right) and disparity (col_disparity and row_disparity) propertie - Value not equal to 0 for invalid pixel -**Example** +Examples +******** + +**Input with constant initial disparity** .. code:: json :name: Input example @@ -128,3 +137,29 @@ Image (left and right) and disparity (col_disparity and row_disparity) propertie } } +**Input with variable initial disparity** + +.. code:: json + :name: Input example with disparity grid + + { + "input": + { + "left": { + "img": "./data/left.tif", + "nodata": -9999, + "mask": "./data/mask_left.tif" + }, + "right": { + "img": "/data/right.tif", + "nodata": -9999 + }, + "col_disparity": {"init": "./data/col_disparity_grid.tif", "range": 3}, + "row_disparity": {"init": "./data/row_disparity_grid.tif", "range": 3} + } + , + "pipeline" : + { + // pipeline content + } + } From b1c23cae7d5297e5072c39a289b816e153606f42 Mon Sep 17 00:00:00 2001 From: duzelis Date: Fri, 6 Sep 2024 16:10:40 +0200 Subject: [PATCH 101/121] feat: add init disparity grids to data_samples --- data_samples/images/maricopa.zip | Bin 2296413 -> 2302146 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/data_samples/images/maricopa.zip b/data_samples/images/maricopa.zip index ffabbbf69c48539d23b6f763b9e6f6aa8ac63569..1611d3bb7cf206016d90f0d5fbf02692fd5b54dc 100644 GIT binary patch delta 6030 zcmeI0e^8V69mfMAKV&7Xy0IxFSnODDj?A+?z$83tw;pzE7jCu9yoqUNC&$(rB4{G{ z@m;0hT56(gIohj`KdkGnoZzNiK@uPJ#OFLtGISJALc)@g2Sdr1}?jIz>YNvk>0E4+2Xwj&w5bnD+7 zyWanJmLmmQQs!S@Yp8EXsBcKDZ&+5}kW}BW{F8>{)C0Hv9&9?0j7UMGBGM2m5b22T zARach_E3Iwv7%Y#E0$`p|KLIMx@Ll(g}rv?ktpGg2n41yp%ntqLJq;8fvOGOq=e-3rA?$PJWd+A zNhX&Jv~`Gp6|?X$3mXV{ykjCTD#EEipZ8B>5R-!u|C89iv^uK(gHsN-yRcm*)aS{0 z#FZg3a;b}*u(DbYza=!<=$xVR^?629;qJ2<#dc=6iygJv#WdH#O!ffRWRp!otOFLyaHpl zsGVmFK?`%DnuT2gm_68G6}E=Yo1Ly}w7v}&(FGO;k`ZGy8?fTFtjc#JL|pmE!_pC1u1TG!3Gbc*; zx~Vq|;ER4E0N!+?c4{piocSHZwBsszSWOsgj|Hh$WIx;U>f!^ILgWq_U`bjTy8>YG zyEwKu(gsT~#&@c~gYmz=3HV_A@06X3|L?*4zrPF6|Ks{UA>ovjrldB|+b$)76?1lT z&O_gw5#1wK#$!Z3!^X&i<%HJ)m3VjhWAE)7>sdDdoSDs?@4orwi{~yLPu^I%^7S(p zfBty(jf|f2Yf}F>^273){+_D3cgh?&XMVIrSXA^$V+OW)uRF()<0c1>9?n1B+nDzg z1Mv>jVh}RHVSeF`4zvFhv58P1H=3!`H&QpTK6!qzPZOL9I?3_AYvj?aWMp92wQ0aW*LgL zBr>EePFJH+KaLeaya<9K2#?Z4yS_wFo-NT$xI2U40RN5rzX%F8J2}ceBhOn4?48*Pv$pV+9ay#pB4aykSl7E(lAW|#k7t2Ii+%z-dts8>C zRY%Z<6vAAw8)L6!8Y<*=Kn}M-Gd=|za-ILsL41nhV$9@;0^t0Q6b~P_YXk2a)l3T) z(~<$%2w~$=ICt{c#BZ(|w9~B|zgwK}#en+ht7mH^9Q9maU8T&N_h<85;PB}V+p2Rr z<^o%8NMYKG^MUmfZFJJf`M}$LFrZGnJ|B5DG*@gi@cM@fs}oBGERjwu86b|Y-(s~V zmQE}gfClVNGrMR0rxh2?z!8*-A&Vb)`=wpZeI=- zO(&KNNV^}a&R1!G@^1lF(fGSqpJaseq=RMX}RLtA}>VGd1syXe5uiM-doq{*EXi*#&zmDtEP#T{q-8(UiR@--z+;m YBVSg!JULq9<>;PC;BfxI%SB)R1r94Zwg3PC delta 285 zcmYk&yAAQ4W*gV5v8LS z9gF*)>*nakz=Sv?APE+vAPpQckcAxNp#U}%p#){9Kox3GhXyo3fCDbHu1CLp)|?tP q`-KnhLU#Y-haFco!lEMwpPcW_!jZ%8=H$u>XM~XwC8U>-_{0<58euR1 From 7ea1686ebec160b5d7f57d0a472ff6f1fa542112 Mon Sep 17 00:00:00 2001 From: duzelis Date: Fri, 6 Sep 2024 16:11:03 +0200 Subject: [PATCH 102/121] feat: add a new input json file with variable disparity grids --- .../a_variable_disparity_pipeline.json | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 data_samples/json_conf_files/a_variable_disparity_pipeline.json diff --git a/data_samples/json_conf_files/a_variable_disparity_pipeline.json b/data_samples/json_conf_files/a_variable_disparity_pipeline.json new file mode 100644 index 0000000..0d828ab --- /dev/null +++ b/data_samples/json_conf_files/a_variable_disparity_pipeline.json @@ -0,0 +1,30 @@ +{ + "input": { + "left": { + "img": "./maricopa/left.tif", + "nodata": -9999 + }, + "right": { + "img": "./maricopa/right.tif", + "nodata": -9999 + }, + "col_disparity": {"init": "./maricopa/init_col_disparity_grid.tif", "range": 5}, + "row_disparity": {"init": "./maricopa/init_row_disparity_grid.tif", "range": 5} + }, + "pipeline": { + "matching_cost": { + "matching_cost_method": "zncc", + "window_size": 5 + }, + "disparity": { + "disparity_method": "wta", + "invalid_disparity": "NaN" + }, + "refinement": { + "refinement_method": "dichotomy", + "iterations": 2, + "filter": {"method": "bicubic"} + } + } + } + \ No newline at end of file From bb0e26aebb5ebd10670effe1f9d27dd5bf79bcd7 Mon Sep 17 00:00:00 2001 From: Philippe Mallet-Ladeira Date: Mon, 2 Sep 2024 13:19:31 +0200 Subject: [PATCH 103/121] doc: add Criteria description --- pandora2d/constants.py | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/pandora2d/constants.py b/pandora2d/constants.py index 5bac957..ce8d4f6 100644 --- a/pandora2d/constants.py +++ b/pandora2d/constants.py @@ -30,20 +30,22 @@ class Criteria(Flag): VALID = 0 - # The pixel is invalid : border of left image according to window size PANDORA2D_MSK_PIXEL_LEFT_BORDER = auto() - # The pixel is invalid : nodata in left mask + """The pixel is invalid : border of left image according to window size.""" PANDORA2D_MSK_PIXEL_LEFT_NODATA = auto() - # The pixel is invalid : nodata in right mask + """The pixel is invalid : nodata in left mask.""" PANDORA2D_MSK_PIXEL_RIGHT_NODATA = auto() - # The pixel is invalid : disparity is out the right image + """The pixel is invalid : nodata in right mask.""" PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE = auto() - # The pixel is invalid : invalidated by validity mask of left image + """The pixel is invalid : disparity is out the right image.""" PANDORA2D_MSK_PIXEL_INVALIDITY_MASK_LEFT = auto() - # The pixel is invalid : invalidated by validity mask of right image + """The pixel is invalid : invalidated by validity mask of left image.""" PANDORA2D_MSK_PIXEL_INVALIDITY_MASK_RIGHT = auto() - # The pixel is invalid : The correlation peak is at the edge of disparity range. - # The calculations stopped at the pixellic stage. + """The pixel is invalid : invalidated by validity mask of right image.""" PANDORA2D_MSK_PIXEL_PEAK_ON_EDGE = auto() - # The disparity is not processed because not included in the disparity range of the current point + """ + The pixel is invalid : The correlation peak is at the edge of disparity range. + The calculations stopped at the pixellic stage. + """ PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED = auto() + """The disparity is not processed because not included in the disparity range of the current point.""" From f4d5102bff7f4bb7eff0e4226675a7e5c88bef21 Mon Sep 17 00:00:00 2001 From: Philippe Mallet-Ladeira Date: Wed, 4 Sep 2024 14:34:58 +0200 Subject: [PATCH 104/121] feat(mask): change signatures not to use cv only offset is needed to do mask operations, not the whole cost_volumes. This change makes mask operations independent of any cost_volumes api changes. --- pandora2d/criteria.py | 14 +++---- tests/unit_tests/test_criteria.py | 65 +++++++++++++++++-------------- 2 files changed, 42 insertions(+), 37 deletions(-) diff --git a/pandora2d/criteria.py b/pandora2d/criteria.py index fb464d1..2effa03 100644 --- a/pandora2d/criteria.py +++ b/pandora2d/criteria.py @@ -89,20 +89,19 @@ def set_unprocessed_disp( ) -def mask_border(cost_volumes: xr.Dataset, criteria_dataset: xr.Dataset): +def mask_border(offset: int, criteria_dataset: xr.Dataset) -> None: """ This method raises PANDORA2D_MSK_PIXEL_LEFT_BORDER criteria on the edges of the criteria_dataset for each of the disparities. PANDORA2D_MSK_PIXEL_LEFT_BORDER criteria is non-cumulative, so this method will be called last. - :param cost_volumes: 4D xarray.Dataset - :type cost_volumes: 4D xarray.Dataset + :param offset: offset + :type offset: int :param criteria_dataset: 4D xarray.Dataset with all criteria :type criteria_dataset: 4D xarray.Dataset """ - offset = cost_volumes.offset_row_col if offset > 0: # Raise criteria 0 on border of criteria_disp_col according to offset value @@ -112,17 +111,16 @@ def mask_border(cost_volumes: xr.Dataset, criteria_dataset: xr.Dataset): criteria_dataset.criteria.data[:, -offset:, :, :] = Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER -def mask_disparity_outside_right_image(cost_volumes: xr.Dataset, criteria_dataset: xr.Dataset): +def mask_disparity_outside_right_image(offset: int, criteria_dataset: xr.Dataset) -> None: """ This method raises PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE criteria for points with disparity dimension outside the right image - :param cost_volumes: 4D xarray.Dataset - :type cost_volumes: 4D xarray.Dataset + :param offset: offset + :type offset: int :param criteria_dataset: 4D xarray.Dataset with all criteria :type criteria_dataset: 4D xarray.Dataset """ - offset = cost_volumes.offset_row_col col_coords = criteria_dataset.col.values row_coords = criteria_dataset.row.values diff --git a/tests/unit_tests/test_criteria.py b/tests/unit_tests/test_criteria.py index d2cb10b..95ee03c 100644 --- a/tests/unit_tests/test_criteria.py +++ b/tests/unit_tests/test_criteria.py @@ -17,7 +17,7 @@ # limitations under the License. # """ -Test criteria dataset method +Test criteria dataset method """ # pylint: disable=redefined-outer-name @@ -87,8 +87,19 @@ def cost_volumes(matching_cost_cfg, img_left): @pytest.fixture() -def criteria_dataset(cost_volumes): - return criteria.allocate_criteria_dataset(cost_volumes, Criteria.VALID, None) +def criteria_dataset(): + shape = (10, 13, 9, 5) + return xr.Dataset( + { + "criteria": (["row", "col", "disp_col", "disp_row"], np.full(shape, Criteria.VALID)), + }, + coords={ + "row": np.arange(shape[0]), + "col": np.arange(shape[1]), + "disp_col": np.arange(-5, 4), + "disp_row": np.arange(-1, 4), + }, + ) class TestAllocateCriteriaDataset: @@ -195,24 +206,23 @@ def test_variable_row_disparity( class TestMaskBorder: """Test mask_border method.""" - def test_null_offset(self, cost_volumes, criteria_dataset): - """Window_size == 1 -> offset = 0, no raise PANDORA2D_MSK_PIXEL_LEFT_BORDER criteria""" + def test_null_offset(self, criteria_dataset): + """offset = 0, no raise PANDORA2D_MSK_PIXEL_LEFT_BORDER criteria""" make_criteria_copy = criteria_dataset.copy(deep=True) - criteria.mask_border(cost_volumes, criteria_dataset) + criteria.mask_border(0, criteria_dataset) # Check criteria_dataset has not changed xr.testing.assert_equal(criteria_dataset, make_criteria_copy) # Check the PANDORA2D_MSK_PIXEL_LEFT_BORDER criteria does not raise assert np.all(criteria_dataset.criteria.data[:, :, :, :] != Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER) - @pytest.mark.parametrize("window_size", [3, 5, 7]) - def test_variable_offset(self, cost_volumes, criteria_dataset): + @pytest.mark.parametrize("offset", [1, 2, 3]) + def test_variable_offset(self, criteria_dataset, offset): """ - Window_size == X -> offset = int((window_size - 1) / 2) With mask_border, the PANDORA2D_MSK_PIXEL_LEFT_BORDER criteria is raised on the border. Example : - window_size = 3 -> offset = 1 + offset = 1 For this image : 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 @@ -235,9 +245,8 @@ def test_variable_offset(self, cost_volumes, criteria_dataset): 1 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 """ - criteria.mask_border(cost_volumes, criteria_dataset) + criteria.mask_border(offset, criteria_dataset) - offset = cost_volumes.offset_row_col assert np.all(criteria_dataset.criteria.data[:offset, :, :, :] == Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER) assert np.all(criteria_dataset.criteria.data[-offset:, :, :, :] == Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER) assert np.all(criteria_dataset.criteria.data[:, :offset, :, :] == Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER) @@ -247,10 +256,6 @@ def test_variable_offset(self, cost_volumes, criteria_dataset): class TestMaskDisparityOutsideRightImage: """Test mask_disparity_outside_right_image method.""" - @pytest.fixture() - def offset(self, cost_volumes): - return cost_volumes.offset_row_col - @pytest.fixture() def ground_truth_null_disparity(self, offset, img_size): """Make ground_truth of criteria dataset for null disparity""" @@ -263,7 +268,7 @@ def ground_truth_null_disparity(self, offset, img_size): return data @pytest.fixture() - def ground_truth_first_disparity(self, cost_volumes, offset, img_size): + def ground_truth_first_disparity(self, offset, img_size): """ Make ground_truth of criteria dataset for first disparity (disp_col=-5 and disp_row=-1) @@ -297,34 +302,36 @@ def ground_truth_first_disparity(self, cost_volumes, offset, img_size): """ data = np.full(img_size, Criteria.VALID) # Update row - delta_row_start = offset + abs(cost_volumes.disp_row.values[0]) - delta_row_end = offset + cost_volumes.disp_row.values[0] + first_row_disparity = -1 + delta_row_start = offset + abs(first_row_disparity) + delta_row_end = offset + first_row_disparity data[:delta_row_start, :] = Criteria.PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE if delta_row_end > 0: data[-delta_row_end:, :] = Criteria.PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE # Udpate col - delta_col_start = offset + abs(cost_volumes.disp_col.values[0]) - delta_col_end = offset + cost_volumes.disp_col.values[0] + first_col_disparity = -5 + delta_col_start = offset + abs(first_col_disparity) + delta_col_end = offset + first_col_disparity data[:, :delta_col_start] = Criteria.PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE if delta_col_end > 0: data[:, -delta_col_end:] = Criteria.PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE return data @pytest.mark.parametrize( - "window_size", + "offset", [ - pytest.param(1, id="offset nul"), - pytest.param(3, id="offset == 1"), - pytest.param(5, id="offset == 2"), - pytest.param(7, id="offset == 3"), - pytest.param(99, id="offset > dimension"), + pytest.param(0), + pytest.param(1), + pytest.param(2), + pytest.param(3), + pytest.param(49, id="offset > dimension"), ], ) - def test_nominal(self, cost_volumes, criteria_dataset, ground_truth_null_disparity, ground_truth_first_disparity): + def test_nominal(self, offset, criteria_dataset, ground_truth_null_disparity, ground_truth_first_disparity): """ Test mask_disparity_outside_right_image """ - criteria.mask_disparity_outside_right_image(cost_volumes, criteria_dataset) + criteria.mask_disparity_outside_right_image(offset, criteria_dataset) np.testing.assert_array_equal(criteria_dataset.criteria.values[:, :, 5, 1], ground_truth_null_disparity) np.testing.assert_array_equal(criteria_dataset.criteria.values[:, :, 0, 0], ground_truth_first_disparity) From 5c3bbdea40744adb9aa742d96fe26242e153a1ea Mon Sep 17 00:00:00 2001 From: Philippe Mallet-Ladeira Date: Wed, 4 Sep 2024 18:42:52 +0200 Subject: [PATCH 105/121] feat(criteria): change criteria from Dataset to DataArray --- pandora2d/common.py | 53 +++-- pandora2d/criteria.py | 73 ++++--- pandora2d/matching_cost/matching_cost.py | 6 +- tests/unit_tests/test_common.py | 183 +++++++++--------- tests/unit_tests/test_criteria.py | 103 +++++----- .../test_matching_cost_compute.py | 2 +- 6 files changed, 202 insertions(+), 218 deletions(-) diff --git a/pandora2d/common.py b/pandora2d/common.py index 3183896..fd2a7d1 100644 --- a/pandora2d/common.py +++ b/pandora2d/common.py @@ -196,44 +196,41 @@ def dataset_disp_maps( def set_out_of_row_disparity_range_to_other_value( - data: xr.Dataset, + data: xr.DataArray, min_disp_grid: NDArray[np.floating], max_disp_grid: NDArray[np.floating], value: Union[int, float, Criteria], - data_var_name: str, -): +) -> None: """ - Put special value in data (cost_volumes or criteria_dataset) where the disparity is out of the range defined - by disparity grids. + Put special value in data where the disparity is out of the range defined by disparity grids. The operation is done inplace. - :param data: cost_volumes or criteria_dataset to modify. - :type data: xr.Dataset 4D + :param data: cost_volumes or criteria_dataarray to modify. + :type data: xr.DataArray 4D :param min_disp_grid: grid of min disparity. :type min_disp_grid: NDArray[np.floating] :param max_disp_grid: grid of max disparity. :type max_disp_grid: NDArray[np.floating] :param value: value to set on data. :type value: Union[int, float, Criteria] - :param data_var_name: name of xarray.DataArray to set new value. - :type data_var_name: str """ # WARNING: if one day we switch disp_row with disp_col index should be -2 - ndisp_row = data[data_var_name].shape[-1] + ndisp_row = data.shape[-1] # We want to put special value on points that are not in the global disparity range (row_disparity_source) - if data_var_name == "cost_volumes": + row_disparity_source = data.attrs.get("row_disparity_source") + if row_disparity_source: # Case we are working with cost volume for disp_row in range(ndisp_row): masking = np.nonzero( np.logical_or( (data.coords["disp_row"].data[disp_row] < min_disp_grid) - & (data.coords["disp_row"].data[disp_row] >= data.attrs["row_disparity_source"][0]), + & (data.coords["disp_row"].data[disp_row] >= row_disparity_source[0]), (data.coords["disp_row"].data[disp_row] > max_disp_grid) - & (data.coords["disp_row"].data[disp_row] <= data.attrs["row_disparity_source"][1]), + & (data.coords["disp_row"].data[disp_row] <= row_disparity_source[1]), ) ) - data[data_var_name].data[masking[0], masking[1], :, disp_row] = value + data.data[masking[0], masking[1], :, disp_row] = value else: for disp_row in range(ndisp_row): @@ -243,48 +240,46 @@ def set_out_of_row_disparity_range_to_other_value( data.coords["disp_row"].data[disp_row] > max_disp_grid, ) ) - data[data_var_name].data[masking[0], masking[1], :, disp_row] = value + data.data[masking[0], masking[1], :, disp_row] = value def set_out_of_col_disparity_range_to_other_value( - data: xr.Dataset, + data: xr.DataArray, min_disp_grid: NDArray[np.floating], max_disp_grid: NDArray[np.floating], value: Union[int, float, Criteria], - data_var_name: str, -): +) -> None: """ - Put special value in data (cost_volumes or criteria_dataset) where the disparity is out of the range defined + Put special value in data (cost_volumes or criteria_dataarray) where the disparity is out of the range defined by disparity grids. The operation is done inplace. - :param data: cost_volumes or criteria_dataset to modify. - :type data: xr.Dataset 4D + :param data: cost_volumes or criteria_dataarray to modify. + :type data: xr.DataArray 4D :param min_disp_grid: grid of min disparity. :type min_disp_grid: NDArray[np.floating] :param max_disp_grid: grid of max disparity. :type max_disp_grid: NDArray[np.floating] :param value: value to set on data. :type value: Union[int, float, Criteria] - :param data_var_name: name of xarray.DataArray to set new value. - :type data_var_name: str """ # WARNING: if one day we switch disp_row with disp_col index should be -1 - ndisp_col = data[data_var_name].shape[-2] + ndisp_col = data.shape[-2] # We want to put special value on points that are not in the global disparity range (col_disparity_source) - if data_var_name == "cost_volumes": + col_disparity_source = data.attrs.get("col_disparity_source") + if col_disparity_source: # Case we are working with cost volume for disp_col in range(ndisp_col): masking = np.nonzero( np.logical_or( (data.coords["disp_col"].data[disp_col] < min_disp_grid) - & (data.coords["disp_col"].data[disp_col] >= data.attrs["col_disparity_source"][0]), + & (data.coords["disp_col"].data[disp_col] >= col_disparity_source[0]), (data.coords["disp_col"].data[disp_col] > max_disp_grid) - & (data.coords["disp_col"].data[disp_col] <= data.attrs["col_disparity_source"][1]), + & (data.coords["disp_col"].data[disp_col] <= col_disparity_source[1]), ) ) - data[data_var_name].data[masking[0], masking[1], disp_col, :] = value + data.data[masking[0], masking[1], disp_col, :] = value else: for disp_col in range(ndisp_col): @@ -294,4 +289,4 @@ def set_out_of_col_disparity_range_to_other_value( data.coords["disp_col"].data[disp_col] > max_disp_grid, ) ) - data[data_var_name].data[masking[0], masking[1], disp_col, :] = value + data.data[masking[0], masking[1], disp_col, :] = value diff --git a/pandora2d/criteria.py b/pandora2d/criteria.py index 2effa03..d1df2d4 100644 --- a/pandora2d/criteria.py +++ b/pandora2d/criteria.py @@ -17,7 +17,7 @@ # limitations under the License. # """ -This module contains functions associated to the validity mask and criteria dataset created in the cost volume step. +This module contains functions associated to the validity mask and criteria dataarray created in the cost volume step. """ from typing import Union @@ -33,32 +33,31 @@ ) -def allocate_criteria_dataset( +def allocate_criteria_dataarray( cv: xr.Dataset, value: Union[int, float, Criteria] = Criteria.VALID, data_type: Union[np.dtype, None] = None -) -> xr.Dataset: +) -> xr.DataArray: """ - This method creates the criteria_dataset with the same dimensions as cost_volumes (cv). + This method creates the criteria_dataarray with the same dimensions as cost_volumes (cv). Initially, all points are considered valid and have the value XX. :param cv: cost_volumes :type cv: 4D xarray.Dataset :param value: value representing the valid criteria, by default Criteria.VALID = 0 :type value: Union[int, float, Criteria] - :param data_type: the desired data-type for the criteria_dataset. + :param data_type: the desired data-type for the criteria_dataarray. :type data_type: Union[np.dtype, None], by default None - :return: criteria_dataset: 4D Dataset containing the criteria - :rtype: criteria_dataset: xr.Dataset + :return: criteria_dataarray: 4D DataArray containing the criteria + :rtype: criteria_dataarray: xr.DataArray """ - return xr.Dataset( - { - "criteria": (["row", "col", "disp_col", "disp_row"], np.full(cv.cost_volumes.shape, value, data_type)), - }, + return xr.DataArray( + np.full(cv.cost_volumes.shape, value, data_type), coords={"row": cv.row.data, "col": cv.col.data, "disp_col": cv.disp_col.data, "disp_row": cv.disp_row.data}, + dims=["row", "col", "disp_col", "disp_row"], ) def set_unprocessed_disp( - criteria_dataset: xr.Dataset, + criteria_dataarray: xr.DataArray, min_grid_col: NDArray[np.floating], max_grid_col: NDArray[np.floating], min_grid_row: NDArray[np.floating], @@ -68,8 +67,8 @@ def set_unprocessed_disp( This method sets PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED to points for disparities that will not be processed, based on the disparity grids provided. - :param criteria_dataset: 4D Dataset containing the criteria - :type criteria_dataset: xr.Dataset 4D + :param criteria_dataarray: 4D DataArray containing the criteria + :type criteria_dataarray: xr.DataArray 4D :param min_grid_col: grid of min disparity col :type min_grid_col: NDArray[np.floating] :param max_grid_col: grid of max disparity col @@ -81,61 +80,61 @@ def set_unprocessed_disp( """ # Check col disparity set_out_of_col_disparity_range_to_other_value( - criteria_dataset, min_grid_col, max_grid_col, Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED, "criteria" + criteria_dataarray, min_grid_col, max_grid_col, Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED ) # Check row disparity set_out_of_row_disparity_range_to_other_value( - criteria_dataset, min_grid_row, max_grid_row, Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED, "criteria" + criteria_dataarray, min_grid_row, max_grid_row, Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED ) -def mask_border(offset: int, criteria_dataset: xr.Dataset) -> None: +def mask_border(offset: int, criteria_dataarray: xr.DataArray) -> None: """ - This method raises PANDORA2D_MSK_PIXEL_LEFT_BORDER criteria on the edges of the criteria_dataset + This method raises PANDORA2D_MSK_PIXEL_LEFT_BORDER criteria on the edges of the criteria_dataarray for each of the disparities. PANDORA2D_MSK_PIXEL_LEFT_BORDER criteria is non-cumulative, so this method will be called last. :param offset: offset :type offset: int - :param criteria_dataset: 4D xarray.Dataset with all criteria - :type criteria_dataset: 4D xarray.Dataset + :param criteria_dataarray: 4D xarray.DataArray with all criteria + :type criteria_dataarray: 4D xarray.DataArray """ if offset > 0: # Raise criteria 0 on border of criteria_disp_col according to offset value - criteria_dataset.criteria.data[:offset, :, :, :] = Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER - criteria_dataset.criteria.data[-offset:, :, :, :] = Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER - criteria_dataset.criteria.data[:, :offset, :, :] = Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER - criteria_dataset.criteria.data[:, -offset:, :, :] = Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER + criteria_dataarray.data[:offset, :, :, :] = Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER + criteria_dataarray.data[-offset:, :, :, :] = Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER + criteria_dataarray.data[:, :offset, :, :] = Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER + criteria_dataarray.data[:, -offset:, :, :] = Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER -def mask_disparity_outside_right_image(offset: int, criteria_dataset: xr.Dataset) -> None: +def mask_disparity_outside_right_image(offset: int, criteria_dataarray: xr.DataArray) -> None: """ This method raises PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE criteria for points with disparity dimension outside the right image :param offset: offset :type offset: int - :param criteria_dataset: 4D xarray.Dataset with all criteria - :type criteria_dataset: 4D xarray.Dataset + :param criteria_dataarray: 4D xarray.DataArray with all criteria + :type criteria_dataarray: 4D xarray.DataArray """ - col_coords = criteria_dataset.col.values - row_coords = criteria_dataset.row.values + col_coords = criteria_dataarray.col.values + row_coords = criteria_dataarray.row.values # Condition where the window is outside the image condition = ( - (criteria_dataset.row + criteria_dataset.disp_row < row_coords[0] + offset) - | (criteria_dataset.row + criteria_dataset.disp_row > row_coords[-1] - offset) - | (criteria_dataset.col + criteria_dataset.disp_col < col_coords[0] + offset) - | (criteria_dataset.col + criteria_dataset.disp_col > col_coords[-1] - offset) + (criteria_dataarray.row + criteria_dataarray.disp_row < row_coords[0] + offset) + | (criteria_dataarray.row + criteria_dataarray.disp_row > row_coords[-1] - offset) + | (criteria_dataarray.col + criteria_dataarray.disp_col < col_coords[0] + offset) + | (criteria_dataarray.col + criteria_dataarray.disp_col > col_coords[-1] - offset) ) - # Swapaxes to have same shape as cost_volumes and criteria_dataset + # Swapaxes to have same shape as cost_volumes and criteria_dataarray condition_swap = condition.data.swapaxes(1, 3).swapaxes(1, 2) - # Update criteria dataset - criteria_dataset.criteria.data[condition_swap] = ( - criteria_dataset.criteria.data[condition_swap] | Criteria.PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE + # Update criteria dataarray + criteria_dataarray.data[condition_swap] = ( + criteria_dataarray.data[condition_swap] | Criteria.PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE ) diff --git a/pandora2d/matching_cost/matching_cost.py b/pandora2d/matching_cost/matching_cost.py index 6476bb2..7f579aa 100644 --- a/pandora2d/matching_cost/matching_cost.py +++ b/pandora2d/matching_cost/matching_cost.py @@ -408,18 +408,16 @@ def compute_cost_volumes( del cost_volumes.attrs["ROI_margins_for_cv"] set_out_of_row_disparity_range_to_other_value( - cost_volumes, + cost_volumes["cost_volumes"], img_left["row_disparity"].sel(band_disp="min").data, img_left["row_disparity"].sel(band_disp="max").data, np.nan, - "cost_volumes", ) set_out_of_col_disparity_range_to_other_value( - cost_volumes, + cost_volumes["cost_volumes"], img_left["col_disparity"].sel(band_disp="min").data, img_left["col_disparity"].sel(band_disp="max").data, np.nan, - "cost_volumes", ) return cost_volumes diff --git a/tests/unit_tests/test_common.py b/tests/unit_tests/test_common.py index 4b2ced8..9acab5d 100644 --- a/tests/unit_tests/test_common.py +++ b/tests/unit_tests/test_common.py @@ -366,10 +366,6 @@ class TestSetOutOfDisparity: def disp_coords(self): return "disp_row" - @pytest.fixture() - def data_var_name(self): - return "cost_volumes" - @pytest.fixture() def init_value(self): return 0.0 @@ -391,20 +387,17 @@ def disp_range_row(self): return np.arange(-5, -5 + 6) @pytest.fixture() - def dataset(self, range_row, range_col, disp_range_col, disp_range_row, data_var_name, init_value, disp_coords): + def dataset(self, range_row, range_col, disp_range_col, disp_range_row, init_value, disp_coords): """make a xarray dataset and disparity grids""" - if data_var_name == "criteria": - init_value = Criteria.VALID - xarray = xr.Dataset( - { - data_var_name: (["row", "col", "disp_col", "disp_row"], np.full((5, 4, 7, 6), init_value)), - }, + xarray = xr.DataArray( + np.full((5, 4, 7, 6), init_value), coords={ "row": range_row, "col": range_col, "disp_col": disp_range_col, "disp_row": disp_range_row, }, + dims=["row", "col", "disp_col", "disp_row"], ) xarray.attrs = {"col_disparity_source": [2, 8], "row_disparity_source": [-5, 0]} @@ -413,163 +406,163 @@ def dataset(self, range_row, range_col, disp_range_col, disp_range_row, data_var return xarray, min_disp_grid, max_disp_grid @pytest.mark.parametrize( - ["data_var_name", "value"], + ["init_value", "value"], [ - ["cost_volumes", np.nan], - ["cost_volumes", 1], - ["cost_volumes", -1], - ["cost_volumes", np.inf], - ["criteria", Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED], + [0.0, np.nan], + [0.0, 1], + [0.0, -1], + [0.0, np.inf], + [Criteria.VALID, Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED], ], ) - def test_homogeneous_row_grids(self, dataset, value, data_var_name): + def test_homogeneous_row_grids(self, dataset, value): """With grids set to extreme disparities, cost_volumes should be left untouched.""" # As set_out_of_row_disparity_range_to_other_value modify cost_volumes in place we do a copy to be able # to make the comparison later. array, min_disp_grid, max_disp_grid = dataset make_array_copy = array.copy(deep=True) - common.set_out_of_row_disparity_range_to_other_value(array, min_disp_grid, max_disp_grid, value, data_var_name) + common.set_out_of_row_disparity_range_to_other_value(array, min_disp_grid, max_disp_grid, value) xr.testing.assert_equal(array, make_array_copy) @pytest.mark.parametrize( - ["data_var_name", "value"], + ["init_value", "value"], [ - ["cost_volumes", np.nan], - ["cost_volumes", 10], - ["cost_volumes", -10], - ["cost_volumes", np.inf], - ["criteria", Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED], + [0.0, np.nan], + [0.0, 10], + [0.0, -10], + [0.0, np.inf], + [Criteria.VALID, Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED], ], ) @pytest.mark.parametrize("disp_coords", ["disp_col"]) - def test_homogeneous_col_grids(self, dataset, value, data_var_name): + def test_homogeneous_col_grids(self, dataset, value): """With grids set to extreme disparities, cost_volumes should be left untouched.""" # As set_out_of_col_disparity_range_to_other_value modify cost_volumes in place we do a copy to be able # to make the comparison later. array, min_disp_grid, max_disp_grid = dataset make_array_copy = array.copy(deep=True) - common.set_out_of_col_disparity_range_to_other_value(array, min_disp_grid, max_disp_grid, value, data_var_name) + common.set_out_of_col_disparity_range_to_other_value(array, min_disp_grid, max_disp_grid, value) xr.testing.assert_equal(array, make_array_copy) @pytest.mark.parametrize( - ["data_var_name", "value", "init_value"], + ["init_value", "value"], [ - ["cost_volumes", 0.0, 0.0], - ["cost_volumes", -1, 0.0], - ["cost_volumes", np.inf, 0.0], - ["cost_volumes", -np.inf, 0.0], - ["criteria", Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED, Criteria.VALID], + [0.0, 0.0], + [0.0, -1], + [0.0, np.inf], + [0.0, -np.inf], + [Criteria.VALID, Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED], ], ) - def test_variable_min_row(self, dataset, value, data_var_name, disp_coords, init_value): + def test_variable_min_row(self, dataset, value, disp_coords, init_value): """Check special value below min disparities.""" array, min_disp_grid, max_disp_grid = dataset min_disp_index = 1 min_disp_grid[::2] = array.coords[disp_coords].data[min_disp_index] - common.set_out_of_row_disparity_range_to_other_value(array, min_disp_grid, max_disp_grid, value, data_var_name) + common.set_out_of_row_disparity_range_to_other_value(array, min_disp_grid, max_disp_grid, value) - expected_value = array[data_var_name].data[::2, ..., :min_disp_index] - expected_zeros_on_odd_lines = array[data_var_name].data[1::2, ...] - expected_zeros_on_even_lines = array[data_var_name].data[::2, ..., min_disp_index:] + expected_value = array.data[::2, ..., :min_disp_index] + expected_zeros_on_odd_lines = array.data[1::2, ...] + expected_zeros_on_even_lines = array.data[::2, ..., min_disp_index:] assert np.all(expected_value == value) assert np.all(expected_zeros_on_odd_lines == init_value) assert np.all(expected_zeros_on_even_lines == init_value) @pytest.mark.parametrize( - ["data_var_name", "value", "init_value"], + ["init_value", "value"], [ - ["cost_volumes", 0.0, 0.0], - ["cost_volumes", -1, 0.0], - ["cost_volumes", np.inf, 0.0], - ["cost_volumes", -np.inf, 0.0], - ["criteria", Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED, Criteria.VALID], + [0.0, 0.0], + [0.0, -1], + [0.0, np.inf], + [0.0, -np.inf], + [Criteria.VALID, Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED], ], ) @pytest.mark.parametrize("disp_coords", ["disp_col"]) - def test_variable_min_col(self, dataset, value, data_var_name, disp_coords, init_value): + def test_variable_min_col(self, dataset, value, disp_coords, init_value): """Check special value below min disparities.""" array, min_disp_grid, max_disp_grid = dataset min_disp_index = 1 min_disp_grid[:, ::2] = array.coords[disp_coords].data[min_disp_index] - common.set_out_of_col_disparity_range_to_other_value(array, min_disp_grid, max_disp_grid, value, data_var_name) + common.set_out_of_col_disparity_range_to_other_value(array, min_disp_grid, max_disp_grid, value) - expected_value = array[data_var_name].data[:, ::2, :min_disp_index, ...] - expected_zeros_on_odd_columns = array[data_var_name].data[:, 1::2, ...] - expected_zeros_on_even_columns = array[data_var_name].data[:, ::2, min_disp_index:, ...] + expected_value = array.data[:, ::2, :min_disp_index, ...] + expected_zeros_on_odd_columns = array.data[:, 1::2, ...] + expected_zeros_on_even_columns = array.data[:, ::2, min_disp_index:, ...] assert np.all(expected_value == value) assert np.all(expected_zeros_on_odd_columns == init_value) assert np.all(expected_zeros_on_even_columns == init_value) @pytest.mark.parametrize( - ["data_var_name", "value", "init_value"], + ["init_value", "value"], [ - ["cost_volumes", 0.0, 0.0], - ["cost_volumes", -1, 0.0], - ["cost_volumes", np.inf, 0.0], - ["cost_volumes", -np.inf, 0.0], - ["criteria", Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED, Criteria.VALID], + [0.0, 0.0], + [0.0, -1], + [0.0, np.inf], + [0.0, -np.inf], + [Criteria.VALID, Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED], ], ) - def test_variable_max_row(self, dataset, value, data_var_name, disp_coords, init_value): + def test_variable_max_row(self, dataset, value, disp_coords, init_value): """Check special value above max disparities.""" array, min_disp_grid, max_disp_grid = dataset max_disp_index = 1 max_disp_grid[::2] = array.coords[disp_coords].data[max_disp_index] - common.set_out_of_row_disparity_range_to_other_value(array, min_disp_grid, max_disp_grid, value, data_var_name) + common.set_out_of_row_disparity_range_to_other_value(array, min_disp_grid, max_disp_grid, value) - expected_value = array[data_var_name].data[::2, ..., (max_disp_index + 1) :] - expected_zeros_on_odd_lines = array[data_var_name].data[1::2, ...] - expected_zeros_on_even_lines = array[data_var_name].data[::2, ..., : (max_disp_index + 1)] + expected_value = array.data[::2, ..., (max_disp_index + 1) :] + expected_zeros_on_odd_lines = array.data[1::2, ...] + expected_zeros_on_even_lines = array.data[::2, ..., : (max_disp_index + 1)] assert np.all(expected_value == value) assert np.all(expected_zeros_on_odd_lines == init_value) assert np.all(expected_zeros_on_even_lines == init_value) @pytest.mark.parametrize( - ["data_var_name", "value", "init_value"], + ["init_value", "value"], [ - ["cost_volumes", 0.0, 0.0], - ["cost_volumes", -1, 0.0], - ["cost_volumes", np.inf, 0.0], - ["cost_volumes", -np.inf, 0.0], - ["criteria", Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED, Criteria.VALID], + [0.0, 0.0], + [0.0, -1], + [0.0, np.inf], + [0.0, -np.inf], + [Criteria.VALID, Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED], ], ) @pytest.mark.parametrize("disp_coords", ["disp_col"]) - def test_variable_max_col(self, dataset, value, data_var_name, disp_coords, init_value): + def test_variable_max_col(self, dataset, value, disp_coords, init_value): """Check special value above max disparities.""" array, min_disp_grid, max_disp_grid = dataset max_disp_index = 1 max_disp_grid[:, ::2] = array.coords[disp_coords].data[max_disp_index] - common.set_out_of_col_disparity_range_to_other_value(array, min_disp_grid, max_disp_grid, value, data_var_name) + common.set_out_of_col_disparity_range_to_other_value(array, min_disp_grid, max_disp_grid, value) - expected_value = array[data_var_name].data[:, ::2, (max_disp_index + 1) :, ...] - expected_zeros_on_odd_columns = array[data_var_name].data[:, 1::2, ...] - expected_zeros_on_even_columns = array[data_var_name].data[:, ::2, : (max_disp_index + 1), ...] + expected_value = array.data[:, ::2, (max_disp_index + 1) :, ...] + expected_zeros_on_odd_columns = array.data[:, 1::2, ...] + expected_zeros_on_even_columns = array.data[:, ::2, : (max_disp_index + 1), ...] assert np.all(expected_value == value) assert np.all(expected_zeros_on_odd_columns == init_value) assert np.all(expected_zeros_on_even_columns == init_value) @pytest.mark.parametrize( - ["data_var_name", "value", "init_value"], + ["init_value", "value"], [ - ["cost_volumes", 0.0, 0.0], - ["cost_volumes", -1, 0.0], - ["cost_volumes", np.inf, 0.0], - ["cost_volumes", -np.inf, 0.0], - ["criteria", Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED, Criteria.VALID], + [0.0, 0.0], + [0.0, -1], + [0.0, np.inf], + [0.0, -np.inf], + [Criteria.VALID, Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED], ], ) - def test_variable_min_and_max_row(self, dataset, value, data_var_name, disp_coords, init_value): + def test_variable_min_and_max_row(self, dataset, value, disp_coords, init_value): """Check special value below min and above max disparities.""" array, min_disp_grid, max_disp_grid = dataset min_disp_index = 1 @@ -577,12 +570,12 @@ def test_variable_min_and_max_row(self, dataset, value, data_var_name, disp_coor max_disp_index = 2 max_disp_grid[::2] = array.coords[disp_coords].data[max_disp_index] - common.set_out_of_row_disparity_range_to_other_value(array, min_disp_grid, max_disp_grid, value, data_var_name) + common.set_out_of_row_disparity_range_to_other_value(array, min_disp_grid, max_disp_grid, value) - expected_below_min = array[data_var_name].data[::2, ..., :min_disp_index] - expected_above_max = array[data_var_name].data[::2, ..., (max_disp_index + 1) :] - expected_zeros_on_odd_lines = array[data_var_name].data[1::2, ...] - expected_zeros_on_even_lines = array[data_var_name].data[::2, ..., min_disp_index : (max_disp_index + 1)] + expected_below_min = array.data[::2, ..., :min_disp_index] + expected_above_max = array.data[::2, ..., (max_disp_index + 1) :] + expected_zeros_on_odd_lines = array.data[1::2, ...] + expected_zeros_on_even_lines = array.data[::2, ..., min_disp_index : (max_disp_index + 1)] assert np.all(expected_below_min == value) assert np.all(expected_above_max == value) @@ -590,17 +583,17 @@ def test_variable_min_and_max_row(self, dataset, value, data_var_name, disp_coor assert np.all(expected_zeros_on_even_lines == init_value) @pytest.mark.parametrize( - ["data_var_name", "value", "init_value"], + ["init_value", "value"], [ - ["cost_volumes", 0.0, 0.0], - ["cost_volumes", -1, 0.0], - ["cost_volumes", np.inf, 0.0], - ["cost_volumes", -np.inf, 0.0], - ["criteria", Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED, Criteria.VALID], + [0.0, 0.0], + [0.0, -1], + [0.0, np.inf], + [0.0, -np.inf], + [Criteria.VALID, Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED], ], ) @pytest.mark.parametrize("disp_coords", ["disp_col"]) - def test_variable_min_and_max_col(self, dataset, value, data_var_name, disp_coords, init_value): + def test_variable_min_and_max_col(self, dataset, value, disp_coords, init_value): """Check special value below min and above max disparities.""" array, min_disp_grid, max_disp_grid = dataset min_disp_index = 1 @@ -608,12 +601,12 @@ def test_variable_min_and_max_col(self, dataset, value, data_var_name, disp_coor max_disp_index = 2 max_disp_grid[:, ::2] = array.coords[disp_coords].data[max_disp_index] - common.set_out_of_col_disparity_range_to_other_value(array, min_disp_grid, max_disp_grid, value, data_var_name) + common.set_out_of_col_disparity_range_to_other_value(array, min_disp_grid, max_disp_grid, value) - expected_below_min = array[data_var_name].data[:, ::2, :min_disp_index, ...] - expected_above_max = array[data_var_name].data[:, ::2, (max_disp_index + 1) :, ...] - expected_zeros_on_odd_columns = array[data_var_name].data[:, 1::2, ...] - expected_zeros_on_even_columns = array[data_var_name].data[:, ::2, min_disp_index : (max_disp_index + 1), ...] + expected_below_min = array.data[:, ::2, :min_disp_index, ...] + expected_above_max = array.data[:, ::2, (max_disp_index + 1) :, ...] + expected_zeros_on_odd_columns = array.data[:, 1::2, ...] + expected_zeros_on_even_columns = array.data[:, ::2, min_disp_index : (max_disp_index + 1), ...] assert np.all(expected_below_min == value) assert np.all(expected_above_max == value) diff --git a/tests/unit_tests/test_criteria.py b/tests/unit_tests/test_criteria.py index 95ee03c..fe2f9ee 100644 --- a/tests/unit_tests/test_criteria.py +++ b/tests/unit_tests/test_criteria.py @@ -17,7 +17,7 @@ # limitations under the License. # """ -Test criteria dataset method +Test methods from criteria.py file """ # pylint: disable=redefined-outer-name @@ -87,18 +87,17 @@ def cost_volumes(matching_cost_cfg, img_left): @pytest.fixture() -def criteria_dataset(): +def criteria_dataarray(): shape = (10, 13, 9, 5) - return xr.Dataset( - { - "criteria": (["row", "col", "disp_col", "disp_row"], np.full(shape, Criteria.VALID)), - }, + return xr.DataArray( + np.full(shape, Criteria.VALID), coords={ "row": np.arange(shape[0]), "col": np.arange(shape[1]), "disp_col": np.arange(-5, 4), "disp_row": np.arange(-1, 4), }, + dims=["row", "col", "disp_col", "disp_row"], ) @@ -116,24 +115,24 @@ class TestAllocateCriteriaDataset: ], ) def test_nominal_case(self, cost_volumes, value, data_type): - """Test allocate a criteria dataset with correct cost_volumes, value and data_type.""" - criteria_dataset = criteria.allocate_criteria_dataset(cost_volumes, value, data_type) + """Test allocate a criteria dataarray with correct cost_volumes, value and data_type.""" + criteria_dataarray = criteria.allocate_criteria_dataarray(cost_volumes, value, data_type) - assert criteria_dataset.criteria.shape == cost_volumes.cost_volumes.shape + assert criteria_dataarray.shape == cost_volumes.cost_volumes.shape @pytest.mark.parametrize("value", [0, Criteria.VALID]) @pytest.mark.parametrize("subpix", [1, 2, 4]) def test_with_subpix(self, cost_volumes, value, subpix, img_size, disparity_cfg): - """Test allocate a criteria dataset with correct cost_volumes, value and data_type.""" - criteria_dataset = criteria.allocate_criteria_dataset(cost_volumes, value, None) + """Test allocate a criteria dataarray with correct cost_volumes, value and data_type.""" + criteria_dataarray = criteria.allocate_criteria_dataarray(cost_volumes, value, None) row, col = img_size row_disparity, col_disparity = disparity_cfg nb_col_disp = 2 * col_disparity["range"] * subpix + 1 nb_row_disp = 2 * row_disparity["range"] * subpix + 1 - assert criteria_dataset.criteria.shape == cost_volumes.cost_volumes.shape - assert criteria_dataset.criteria.shape == (row, col, nb_col_disp, nb_row_disp) + assert criteria_dataarray.shape == cost_volumes.cost_volumes.shape + assert criteria_dataarray.shape == (row, col, nb_col_disp, nb_row_disp) class TestSetUnprocessedDisparity: @@ -155,69 +154,69 @@ def grid_min_row(self, img_left): def grid_max_row(self, img_left): return img_left["row_disparity"].sel(band_disp="max") - def test_homogeneous_grids(self, criteria_dataset, grid_min_col, grid_max_col, grid_min_row, grid_max_row): + def test_homogeneous_grids(self, criteria_dataarray, grid_min_col, grid_max_col, grid_min_row, grid_max_row): """With uniform grids""" - make_criteria_copy = criteria_dataset.copy(deep=True) - criteria.set_unprocessed_disp(criteria_dataset, grid_min_col, grid_max_col, grid_min_row, grid_max_row) + make_criteria_copy = criteria_dataarray.copy(deep=True) + criteria.set_unprocessed_disp(criteria_dataarray, grid_min_col, grid_max_col, grid_min_row, grid_max_row) - xr.testing.assert_equal(criteria_dataset, make_criteria_copy) + xr.testing.assert_equal(criteria_dataarray, make_criteria_copy) def test_variable_col_disparity( - self, criteria_dataset, grid_min_col, grid_max_col, grid_min_row, grid_max_row, img_size + self, criteria_dataarray, grid_min_col, grid_max_col, grid_min_row, grid_max_row, img_size ): """With variable column disparity grids""" _, col = img_size nb_col_set = int(col / 2) - grid_min_col[:, :nb_col_set] = criteria_dataset.coords["disp_col"].data[1] - grid_max_col[:, nb_col_set:] = criteria_dataset.coords["disp_col"].data[-2] + grid_min_col[:, :nb_col_set] = criteria_dataarray.coords["disp_col"].data[1] + grid_max_col[:, nb_col_set:] = criteria_dataarray.coords["disp_col"].data[-2] - criteria.set_unprocessed_disp(criteria_dataset, grid_min_col, grid_max_col, grid_min_row, grid_max_row) + criteria.set_unprocessed_disp(criteria_dataarray, grid_min_col, grid_max_col, grid_min_row, grid_max_row) assert np.all( - criteria_dataset.criteria.data[:, :nb_col_set, 0, :] == Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED + criteria_dataarray.data[:, :nb_col_set, 0, :] == Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED ) - assert np.all(criteria_dataset.criteria.data[:, nb_col_set:, 0, :] == Criteria.VALID) + assert np.all(criteria_dataarray.data[:, nb_col_set:, 0, :] == Criteria.VALID) assert np.all( - criteria_dataset.criteria.data[:, nb_col_set:, -1, :] == Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED + criteria_dataarray.data[:, nb_col_set:, -1, :] == Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED ) - assert np.all(criteria_dataset.criteria.data[:, :nb_col_set, -1, :] == Criteria.VALID) + assert np.all(criteria_dataarray.data[:, :nb_col_set, -1, :] == Criteria.VALID) def test_variable_row_disparity( - self, criteria_dataset, grid_min_col, grid_max_col, grid_min_row, grid_max_row, img_size + self, criteria_dataarray, grid_min_col, grid_max_col, grid_min_row, grid_max_row, img_size ): """With variable row disparity grids""" row, _ = img_size nb_row_set = int(row / 2) - grid_min_row[:nb_row_set, :] = criteria_dataset.coords["disp_row"].data[1] - grid_max_row[nb_row_set:, :] = criteria_dataset.coords["disp_row"].data[-2] + grid_min_row[:nb_row_set, :] = criteria_dataarray.coords["disp_row"].data[1] + grid_max_row[nb_row_set:, :] = criteria_dataarray.coords["disp_row"].data[-2] - criteria.set_unprocessed_disp(criteria_dataset, grid_min_col, grid_max_col, grid_min_row, grid_max_row) + criteria.set_unprocessed_disp(criteria_dataarray, grid_min_col, grid_max_col, grid_min_row, grid_max_row) assert np.all( - criteria_dataset.criteria.data[:nb_row_set, :, :, 0] == Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED + criteria_dataarray.data[:nb_row_set, :, :, 0] == Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED ) - assert np.all(criteria_dataset.criteria.data[nb_row_set:, :, :, 0] == Criteria.VALID) + assert np.all(criteria_dataarray.data[nb_row_set:, :, :, 0] == Criteria.VALID) assert np.all( - criteria_dataset.criteria.data[nb_row_set:, :, :, -1] == Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED + criteria_dataarray.data[nb_row_set:, :, :, -1] == Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED ) - assert np.all(criteria_dataset.criteria.data[:nb_row_set, :, :, -1] == Criteria.VALID) + assert np.all(criteria_dataarray.data[:nb_row_set, :, :, -1] == Criteria.VALID) class TestMaskBorder: """Test mask_border method.""" - def test_null_offset(self, criteria_dataset): + def test_null_offset(self, criteria_dataarray): """offset = 0, no raise PANDORA2D_MSK_PIXEL_LEFT_BORDER criteria""" - make_criteria_copy = criteria_dataset.copy(deep=True) - criteria.mask_border(0, criteria_dataset) + make_criteria_copy = criteria_dataarray.copy(deep=True) + criteria.mask_border(0, criteria_dataarray) - # Check criteria_dataset has not changed - xr.testing.assert_equal(criteria_dataset, make_criteria_copy) + # Check criteria_dataarray has not changed + xr.testing.assert_equal(criteria_dataarray, make_criteria_copy) # Check the PANDORA2D_MSK_PIXEL_LEFT_BORDER criteria does not raise - assert np.all(criteria_dataset.criteria.data[:, :, :, :] != Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER) + assert np.all(criteria_dataarray.data[:, :, :, :] != Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER) @pytest.mark.parametrize("offset", [1, 2, 3]) - def test_variable_offset(self, criteria_dataset, offset): + def test_variable_offset(self, criteria_dataarray, offset): """ With mask_border, the PANDORA2D_MSK_PIXEL_LEFT_BORDER criteria is raised on the border. @@ -231,7 +230,7 @@ def test_variable_offset(self, criteria_dataset, offset): 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 - and a criteria_dataset : 0 0 0 0 0 0 0 0 + and a criteria_dataarray : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 @@ -245,12 +244,12 @@ def test_variable_offset(self, criteria_dataset, offset): 1 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 """ - criteria.mask_border(offset, criteria_dataset) + criteria.mask_border(offset, criteria_dataarray) - assert np.all(criteria_dataset.criteria.data[:offset, :, :, :] == Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER) - assert np.all(criteria_dataset.criteria.data[-offset:, :, :, :] == Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER) - assert np.all(criteria_dataset.criteria.data[:, :offset, :, :] == Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER) - assert np.all(criteria_dataset.criteria.data[:, -offset:, :, :] == Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER) + assert np.all(criteria_dataarray.data[:offset, :, :, :] == Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER) + assert np.all(criteria_dataarray.data[-offset:, :, :, :] == Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER) + assert np.all(criteria_dataarray.data[:, :offset, :, :] == Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER) + assert np.all(criteria_dataarray.data[:, -offset:, :, :] == Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER) class TestMaskDisparityOutsideRightImage: @@ -258,7 +257,7 @@ class TestMaskDisparityOutsideRightImage: @pytest.fixture() def ground_truth_null_disparity(self, offset, img_size): - """Make ground_truth of criteria dataset for null disparity""" + """Make ground_truth of criteria dataarray for null disparity""" data = np.full(img_size, Criteria.VALID) if offset > 0: data[:offset, :] = Criteria.PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE @@ -270,7 +269,7 @@ def ground_truth_null_disparity(self, offset, img_size): @pytest.fixture() def ground_truth_first_disparity(self, offset, img_size): """ - Make ground_truth of criteria dataset for first disparity (disp_col=-5 and disp_row=-1) + Make ground_truth of criteria dataarray for first disparity (disp_col=-5 and disp_row=-1) Example for window_size = 3 -> offset = 1, disp_col=-5 & disp_row=-1 & img_size = (10, 13) data = ([ @@ -327,11 +326,11 @@ def ground_truth_first_disparity(self, offset, img_size): pytest.param(49, id="offset > dimension"), ], ) - def test_nominal(self, offset, criteria_dataset, ground_truth_null_disparity, ground_truth_first_disparity): + def test_nominal(self, offset, criteria_dataarray, ground_truth_null_disparity, ground_truth_first_disparity): """ Test mask_disparity_outside_right_image """ - criteria.mask_disparity_outside_right_image(offset, criteria_dataset) + criteria.mask_disparity_outside_right_image(offset, criteria_dataarray) - np.testing.assert_array_equal(criteria_dataset.criteria.values[:, :, 5, 1], ground_truth_null_disparity) - np.testing.assert_array_equal(criteria_dataset.criteria.values[:, :, 0, 0], ground_truth_first_disparity) + np.testing.assert_array_equal(criteria_dataarray.values[:, :, 5, 1], ground_truth_null_disparity) + np.testing.assert_array_equal(criteria_dataarray.values[:, :, 0, 0], ground_truth_first_disparity) diff --git a/tests/unit_tests/test_matching_cost/test_matching_cost_compute.py b/tests/unit_tests/test_matching_cost/test_matching_cost_compute.py index ad9dfcd..f099877 100644 --- a/tests/unit_tests/test_matching_cost/test_matching_cost_compute.py +++ b/tests/unit_tests/test_matching_cost/test_matching_cost_compute.py @@ -713,7 +713,7 @@ def mock_set_out_of_disparity_range_to_nan(self, mock_type, mocker: MockerFixtur if mock_type == "not used": return mocker.patch( "pandora2d.matching_cost.matching_cost.set_out_of_row_disparity_range_to_other_value", - side_effect=lambda x, y, z, k, p: x, + side_effect=lambda x, y, z, k: x, ) if mock_type != "used": raise ValueError(f"Expected mock_type to be 'used' or 'not used', got {mock_type}.") From 838c448dafa0c13e0757a42d6d6d841125ed587a Mon Sep 17 00:00:00 2001 From: Philippe Mallet-Ladeira Date: Fri, 6 Sep 2024 14:14:01 +0200 Subject: [PATCH 106/121] feat(criteria): add mask_left_no_data --- pandora2d/criteria.py | 18 +++++++- tests/unit_tests/test_criteria.py | 71 +++++++++++++++++++++++++++++-- 2 files changed, 85 insertions(+), 4 deletions(-) diff --git a/pandora2d/criteria.py b/pandora2d/criteria.py index d1df2d4..4649863 100644 --- a/pandora2d/criteria.py +++ b/pandora2d/criteria.py @@ -25,7 +25,7 @@ import numpy as np from numpy.typing import NDArray - +from pandora.criteria import binary_dilation_msk from pandora2d.constants import Criteria from pandora2d.common import ( set_out_of_col_disparity_range_to_other_value, @@ -138,3 +138,19 @@ def mask_disparity_outside_right_image(offset: int, criteria_dataarray: xr.DataA criteria_dataarray.data[condition_swap] = ( criteria_dataarray.data[condition_swap] | Criteria.PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE ) + + +def mask_left_no_data(left_image: xr.Dataset, window_size: int, criteria_dataaray: xr.DataArray) -> None: + """ + Set Criteria.PANDORA2D_MSK_PIXEL_LEFT_NODATA on pixels where a no_data is present in the window around its + position in the mask. + + :param left_image: left image with `msk` data var. + :type left_image: xr.Dataset + :param window_size: window size + :type window_size: int + :param criteria_dataaray: criteria dataarray to update + :type criteria_dataaray: xr.DataArray + """ + dilated_mask = binary_dilation_msk(left_image, window_size) + criteria_dataaray.data[dilated_mask, ...] |= Criteria.PANDORA2D_MSK_PIXEL_LEFT_NODATA diff --git a/tests/unit_tests/test_criteria.py b/tests/unit_tests/test_criteria.py index fe2f9ee..04e40c1 100644 --- a/tests/unit_tests/test_criteria.py +++ b/tests/unit_tests/test_criteria.py @@ -50,7 +50,10 @@ def img_left(img_size, disparity_cfg): data = np.random.uniform(0, row * col, (row, col)) return xr.Dataset( - {"im": (["row", "col"], data)}, + { + "im": (["row", "col"], data), + "msk": (["row", "col"], np.zeros_like(data)), + }, coords={"row": np.arange(data.shape[0]), "col": np.arange(data.shape[1])}, attrs={ "no_data_img": -9999, @@ -87,8 +90,8 @@ def cost_volumes(matching_cost_cfg, img_left): @pytest.fixture() -def criteria_dataarray(): - shape = (10, 13, 9, 5) +def criteria_dataarray(img_size): + shape = (*img_size, 9, 5) return xr.DataArray( np.full(shape, Criteria.VALID), coords={ @@ -334,3 +337,65 @@ def test_nominal(self, offset, criteria_dataarray, ground_truth_null_disparity, np.testing.assert_array_equal(criteria_dataarray.values[:, :, 5, 1], ground_truth_null_disparity) np.testing.assert_array_equal(criteria_dataarray.values[:, :, 0, 0], ground_truth_first_disparity) + + +@pytest.mark.parametrize("img_size", [(5, 6)]) +class TestMaskLeftNoData: + """Test mask_left_no_data function.""" + + @pytest.mark.parametrize( + ["no_data_position", "window_size", "row_slice", "col_slice"], + [ + pytest.param((2, 2), 1, 2, 2), + pytest.param((2, 2), 3, np.s_[1:4], np.s_[1:4]), + pytest.param((0, 2), 1, 0, 2), + pytest.param((0, 2), 3, np.s_[:2], np.s_[1:4]), + pytest.param((4, 5), 3, np.s_[-2:], np.s_[-2:]), + ], + ) + def test_add_criteria_to_all_valid( + self, img_size, img_left, criteria_dataarray, no_data_position, window_size, row_slice, col_slice + ): + """Test add to a previously VALID criteria.""" + no_data_row_position, no_data_col_position = no_data_position + + img_left["msk"][no_data_row_position, no_data_col_position] = img_left.attrs["no_data_mask"] + + expected_criteria_data = np.full((*img_size, 9, 5), Criteria.VALID) + expected_criteria_data[row_slice, col_slice, ...] = Criteria.PANDORA2D_MSK_PIXEL_LEFT_NODATA + + criteria.mask_left_no_data(img_left, window_size, criteria_dataarray) + + np.testing.assert_array_equal(criteria_dataarray.values, expected_criteria_data) + + @pytest.mark.parametrize( + ["no_data_position", "window_size", "row_slice", "col_slice"], + [ + pytest.param((2, 2), 1, 2, 2), + pytest.param((2, 2), 3, np.s_[1:4], np.s_[1:4]), + pytest.param((0, 2), 1, 0, 2), + pytest.param((0, 2), 3, np.s_[:2], np.s_[1:4]), + pytest.param((4, 5), 3, np.s_[-2:], np.s_[-2:]), + ], + ) + def test_add_to_existing( + self, img_size, img_left, criteria_dataarray, no_data_position, window_size, row_slice, col_slice + ): + """Test we do not override existing criteria but combine it.""" + no_data_row_position, no_data_col_position = no_data_position + + img_left["msk"][no_data_row_position, no_data_col_position] = img_left.attrs["no_data_mask"] + + criteria_dataarray.data[no_data_row_position, no_data_col_position, ...] = ( + Criteria.PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE + ) + + expected_criteria_data = np.full((*img_size, 9, 5), Criteria.VALID) + expected_criteria_data[row_slice, col_slice, ...] = Criteria.PANDORA2D_MSK_PIXEL_LEFT_NODATA + expected_criteria_data[no_data_row_position, no_data_col_position, ...] = ( + Criteria.PANDORA2D_MSK_PIXEL_LEFT_NODATA | Criteria.PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE + ) + + criteria.mask_left_no_data(img_left, window_size, criteria_dataarray) + + np.testing.assert_array_equal(criteria_dataarray.values, expected_criteria_data) From 5f2f1ec3078ee17e258ea583c1e5a58e83ae0c66 Mon Sep 17 00:00:00 2001 From: Philippe Mallet-Ladeira Date: Tue, 10 Sep 2024 13:56:15 +0200 Subject: [PATCH 107/121] tests(mask): rename img_left fixture to image We do this rename because will use this fixture as an right image in some tests. --- tests/unit_tests/test_criteria.py | 38 +++++++++++++++---------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/tests/unit_tests/test_criteria.py b/tests/unit_tests/test_criteria.py index 04e40c1..f81a89a 100644 --- a/tests/unit_tests/test_criteria.py +++ b/tests/unit_tests/test_criteria.py @@ -43,8 +43,8 @@ def disparity_cfg(): @pytest.fixture() -def img_left(img_size, disparity_cfg): - """Make left image""" +def image(img_size, disparity_cfg): + """Make image""" row, col = img_size row_disparity, col_disparity = disparity_cfg data = np.random.uniform(0, row * col, (row, col)) @@ -81,12 +81,12 @@ def matching_cost_cfg(window_size, subpix): @pytest.fixture() -def cost_volumes(matching_cost_cfg, img_left): +def cost_volumes(matching_cost_cfg, image): """Compute a cost_volumes""" matching_cost_ = matching_cost.MatchingCost(matching_cost_cfg) - matching_cost_.allocate_cost_volume_pandora(img_left=img_left, img_right=img_left, cfg=matching_cost_cfg) - return matching_cost_.compute_cost_volumes(img_left=img_left, img_right=img_left) + matching_cost_.allocate_cost_volume_pandora(img_left=image, img_right=image, cfg=matching_cost_cfg) + return matching_cost_.compute_cost_volumes(img_left=image, img_right=image) @pytest.fixture() @@ -142,20 +142,20 @@ class TestSetUnprocessedDisparity: """Test create a criteria xarray.Dataset.""" @pytest.fixture() - def grid_min_col(self, img_left): - return img_left["col_disparity"].sel(band_disp="min") + def grid_min_col(self, image): + return image["col_disparity"].sel(band_disp="min") @pytest.fixture() - def grid_max_col(self, img_left): - return img_left["col_disparity"].sel(band_disp="max") + def grid_max_col(self, image): + return image["col_disparity"].sel(band_disp="max") @pytest.fixture() - def grid_min_row(self, img_left): - return img_left["row_disparity"].sel(band_disp="min") + def grid_min_row(self, image): + return image["row_disparity"].sel(band_disp="min") @pytest.fixture() - def grid_max_row(self, img_left): - return img_left["row_disparity"].sel(band_disp="max") + def grid_max_row(self, image): + return image["row_disparity"].sel(band_disp="max") def test_homogeneous_grids(self, criteria_dataarray, grid_min_col, grid_max_col, grid_min_row, grid_max_row): """With uniform grids""" @@ -354,17 +354,17 @@ class TestMaskLeftNoData: ], ) def test_add_criteria_to_all_valid( - self, img_size, img_left, criteria_dataarray, no_data_position, window_size, row_slice, col_slice + self, img_size, image, criteria_dataarray, no_data_position, window_size, row_slice, col_slice ): """Test add to a previously VALID criteria.""" no_data_row_position, no_data_col_position = no_data_position - img_left["msk"][no_data_row_position, no_data_col_position] = img_left.attrs["no_data_mask"] + image["msk"][no_data_row_position, no_data_col_position] = image.attrs["no_data_mask"] expected_criteria_data = np.full((*img_size, 9, 5), Criteria.VALID) expected_criteria_data[row_slice, col_slice, ...] = Criteria.PANDORA2D_MSK_PIXEL_LEFT_NODATA - criteria.mask_left_no_data(img_left, window_size, criteria_dataarray) + criteria.mask_left_no_data(image, window_size, criteria_dataarray) np.testing.assert_array_equal(criteria_dataarray.values, expected_criteria_data) @@ -379,12 +379,12 @@ def test_add_criteria_to_all_valid( ], ) def test_add_to_existing( - self, img_size, img_left, criteria_dataarray, no_data_position, window_size, row_slice, col_slice + self, img_size, image, criteria_dataarray, no_data_position, window_size, row_slice, col_slice ): """Test we do not override existing criteria but combine it.""" no_data_row_position, no_data_col_position = no_data_position - img_left["msk"][no_data_row_position, no_data_col_position] = img_left.attrs["no_data_mask"] + image["msk"][no_data_row_position, no_data_col_position] = image.attrs["no_data_mask"] criteria_dataarray.data[no_data_row_position, no_data_col_position, ...] = ( Criteria.PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE @@ -396,6 +396,6 @@ def test_add_to_existing( Criteria.PANDORA2D_MSK_PIXEL_LEFT_NODATA | Criteria.PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE ) - criteria.mask_left_no_data(img_left, window_size, criteria_dataarray) + criteria.mask_left_no_data(image, window_size, criteria_dataarray) np.testing.assert_array_equal(criteria_dataarray.values, expected_criteria_data) From 43a0e1053833df66e01fe29b5ef104222bf8b457 Mon Sep 17 00:00:00 2001 From: Philippe Mallet-Ladeira Date: Mon, 9 Sep 2024 15:31:43 +0200 Subject: [PATCH 108/121] feat(masks): add mask_right_no_data Refs: #160 --- pandora2d/criteria.py | 36 +++- tests/unit_tests/test_criteria.py | 315 +++++++++++++++++++++++++++++- 2 files changed, 348 insertions(+), 3 deletions(-) diff --git a/pandora2d/criteria.py b/pandora2d/criteria.py index 4649863..f452a2c 100644 --- a/pandora2d/criteria.py +++ b/pandora2d/criteria.py @@ -19,7 +19,7 @@ """ This module contains functions associated to the validity mask and criteria dataarray created in the cost volume step. """ - +import itertools from typing import Union import xarray as xr import numpy as np @@ -154,3 +154,37 @@ def mask_left_no_data(left_image: xr.Dataset, window_size: int, criteria_dataara """ dilated_mask = binary_dilation_msk(left_image, window_size) criteria_dataaray.data[dilated_mask, ...] |= Criteria.PANDORA2D_MSK_PIXEL_LEFT_NODATA + + +def mask_right_no_data(img_right: xr.Dataset, window_size: int, criteria_dataarray: xr.DataArray) -> None: + """ + Set Criteria.PANDORA2D_MSK_PIXEL_RIGHT_NODATA on pixels where a no_data is present in the window around its + position in the mask shift by its disparity. + + :param img_right: right image with `msk` data var. + :type img_right: xr.Dataset + :param window_size: window size + :type window_size: int + :param criteria_dataarray: + :type criteria_dataarray: + """ + right_criteria_mask = np.full_like(img_right["msk"], Criteria.VALID, dtype=Criteria) + right_binary_mask = binary_dilation_msk(img_right, window_size) + right_criteria_mask[right_binary_mask] |= Criteria.PANDORA2D_MSK_PIXEL_RIGHT_NODATA + for row_disp, col_disp in itertools.product( + criteria_dataarray.coords["disp_row"], criteria_dataarray.coords["disp_col"] + ): + row_disp, col_disp = row_disp.data, col_disp.data + # We arrange tests to avoid the slice [:0], which doesn’t work, while [0:] is fine. + msk_row_slice = np.s_[:row_disp] if row_disp < 0 else np.s_[row_disp:] + msk_col_slice = np.s_[:col_disp] if col_disp < 0 else np.s_[col_disp:] + criteria_row_slice = np.s_[-row_disp:] if row_disp <= 0 else np.s_[:-row_disp] + criteria_col_slice = np.s_[-col_disp:] if col_disp <= 0 else np.s_[:-col_disp] + criteria_dataarray.loc[ + { + "row": criteria_dataarray.coords["row"][criteria_row_slice], + "col": criteria_dataarray.coords["col"][criteria_col_slice], + "disp_col": col_disp, + "disp_row": row_disp, + } + ] |= right_criteria_mask[msk_row_slice, msk_col_slice] diff --git a/tests/unit_tests/test_criteria.py b/tests/unit_tests/test_criteria.py index f81a89a..158fbf2 100644 --- a/tests/unit_tests/test_criteria.py +++ b/tests/unit_tests/test_criteria.py @@ -43,7 +43,12 @@ def disparity_cfg(): @pytest.fixture() -def image(img_size, disparity_cfg): +def no_data_mask(): + return 1 + + +@pytest.fixture() +def image(img_size, disparity_cfg, no_data_mask): """Make image""" row, col = img_size row_disparity, col_disparity = disparity_cfg @@ -58,13 +63,18 @@ def image(img_size, disparity_cfg): attrs={ "no_data_img": -9999, "valid_pixels": 0, - "no_data_mask": 1, + "no_data_mask": no_data_mask, "crs": None, "invalid_disparity": np.nan, }, ).pipe(add_disparity_grid, col_disparity, row_disparity) +@pytest.fixture() +def mask_image(image, msk): + image["msk"].data = msk + + @pytest.fixture() def window_size(): return 1 @@ -399,3 +409,304 @@ def test_add_to_existing( criteria.mask_left_no_data(image, window_size, criteria_dataarray) np.testing.assert_array_equal(criteria_dataarray.values, expected_criteria_data) + + +@pytest.mark.parametrize("img_size", [(4, 5)]) +class TestMaskRightNoData: + """Test mask_right_no_data function.""" + + @pytest.mark.usefixtures("mask_image") + @pytest.mark.parametrize( + ["no_data_mask", "msk", "disp_row", "disp_col", "expected_criteria"], + [ + # pylint: disable=line-too-long + pytest.param( + 1, + np.array( + [ + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 1], + ] + ), + -1, + -1, + np.array( + # fmt: off + [ + [Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID], + [Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID], + [Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID], + [Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID], + ] + # fmt: on + ), + id="Disp -1 -1 - Pos (3,4)", + ), + pytest.param( + 1, + np.array( + [ + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 1], + ] + ), + -1, + 1, + np.array( + # fmt: off + [ + [Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID], + [Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID], + [Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID], + [Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID], + ] + # fmt: on + ), + id="Disp -1 1 - Pos (3,4)", + ), + pytest.param( + 1, + np.array( + [ + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 1], + ] + ), + 1, + 1, + np.array( + # fmt: off + [ + [Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID], + [Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID], + [Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.PANDORA2D_MSK_PIXEL_RIGHT_NODATA, Criteria.VALID], + [Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID], + ] + # fmt: on + ), + id="Disp 1 1 - Pos (3,4)", + ), + pytest.param( + 1, + np.array( + [ + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 1], + ] + ), + 2, + 1, + np.array( + # fmt: off + [ + [Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID], + [Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.PANDORA2D_MSK_PIXEL_RIGHT_NODATA, Criteria.VALID], + [Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID], + [Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID], + ] + # fmt: on + ), + id="Disp 2 1 - Pos (3,4)", + ), + pytest.param( + 2, + np.array( + [ + [0, 0, 0, 0, 0], + [1, 0, 0, 0, 0], + [0, 1, 0, 0, 0], + [0, 0, 0, 0, 2], + ] + ), + 2, + 1, + np.array( + # fmt: off + [ + [Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID], + [Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.PANDORA2D_MSK_PIXEL_RIGHT_NODATA, Criteria.VALID], + [Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID], + [Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID], + ] + # fmt: on + ), + id="Disp 2 1 - other no_data_mask", + ), + ], + # pylint: enable=line-too-long + ) + def test_window_size_1(self, image, criteria_dataarray, disp_row, disp_col, expected_criteria): + """Test some disparity couples with a window size of 1.""" + + criteria.mask_right_no_data(image, 1, criteria_dataarray) + + np.testing.assert_array_equal( + criteria_dataarray.sel(disp_row=disp_row, disp_col=disp_col), + expected_criteria, + ) + + @pytest.mark.usefixtures("mask_image") + @pytest.mark.parametrize( + ["no_data_mask", "msk", "disp_row", "disp_col", "expected_criteria"], + # pylint: disable=line-too-long + [ + pytest.param( + 1, + np.array( + [ + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 0], + [0, 0, 0, 1, 0], + [0, 0, 0, 0, 0], + ] + ), + -1, + -1, + np.array( + [ + # fmt: off + [Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID], + [Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID], + [Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.PANDORA2D_MSK_PIXEL_RIGHT_NODATA, Criteria.PANDORA2D_MSK_PIXEL_RIGHT_NODATA], + [Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.PANDORA2D_MSK_PIXEL_RIGHT_NODATA, Criteria.PANDORA2D_MSK_PIXEL_RIGHT_NODATA], + # fmt: on + ] + ), + id="Disp -1 -1 - Pos (2,3)", + ), + pytest.param( + 1, + np.array( + [ + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 0], + [0, 0, 0, 1, 0], + [0, 0, 0, 0, 0], + ] + ), + -1, + 1, + np.array( + [ + # fmt: off + [Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID], + [Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID], + [Criteria.VALID, Criteria.PANDORA2D_MSK_PIXEL_RIGHT_NODATA, Criteria.PANDORA2D_MSK_PIXEL_RIGHT_NODATA, Criteria.PANDORA2D_MSK_PIXEL_RIGHT_NODATA, Criteria.VALID], + [Criteria.VALID, Criteria.PANDORA2D_MSK_PIXEL_RIGHT_NODATA, Criteria.PANDORA2D_MSK_PIXEL_RIGHT_NODATA, Criteria.PANDORA2D_MSK_PIXEL_RIGHT_NODATA, Criteria.VALID], + # fmt: on + ] + ), + id="Disp -1 1 - Pos (2,3)", + ), + pytest.param( + 1, + np.array( + [ + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 0], + [0, 0, 0, 1, 0], + [0, 0, 0, 0, 0], + ] + ), + 1, + 1, + np.array( + [ + # fmt: off + [Criteria.VALID, Criteria.PANDORA2D_MSK_PIXEL_RIGHT_NODATA, Criteria.PANDORA2D_MSK_PIXEL_RIGHT_NODATA, Criteria.PANDORA2D_MSK_PIXEL_RIGHT_NODATA, Criteria.VALID], + [Criteria.VALID, Criteria.PANDORA2D_MSK_PIXEL_RIGHT_NODATA, Criteria.PANDORA2D_MSK_PIXEL_RIGHT_NODATA, Criteria.PANDORA2D_MSK_PIXEL_RIGHT_NODATA, Criteria.VALID], + [Criteria.VALID, Criteria.PANDORA2D_MSK_PIXEL_RIGHT_NODATA, Criteria.PANDORA2D_MSK_PIXEL_RIGHT_NODATA, Criteria.PANDORA2D_MSK_PIXEL_RIGHT_NODATA, Criteria.VALID], + [Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID], + # fmt: on + ] + ), + id="Disp 1 1 - Pos (2,3)", + ), + pytest.param( + 3, + np.array( + [ + [0, 0, 0, 0, 0], + [0, 0, 1, 2, 0], + [0, 0, 1, 3, 0], + [0, 0, 4, 0, 0], + ] + ), + 1, + 1, + np.array( + [ + # fmt: off + [Criteria.VALID, Criteria.PANDORA2D_MSK_PIXEL_RIGHT_NODATA, Criteria.PANDORA2D_MSK_PIXEL_RIGHT_NODATA, Criteria.PANDORA2D_MSK_PIXEL_RIGHT_NODATA, Criteria.VALID], + [Criteria.VALID, Criteria.PANDORA2D_MSK_PIXEL_RIGHT_NODATA, Criteria.PANDORA2D_MSK_PIXEL_RIGHT_NODATA, Criteria.PANDORA2D_MSK_PIXEL_RIGHT_NODATA, Criteria.VALID], + [Criteria.VALID, Criteria.PANDORA2D_MSK_PIXEL_RIGHT_NODATA, Criteria.PANDORA2D_MSK_PIXEL_RIGHT_NODATA, Criteria.PANDORA2D_MSK_PIXEL_RIGHT_NODATA, Criteria.VALID], + [Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID], + # fmt: on + ] + ), + id="Disp 1 1 - Pos (2,3) - other no_data_mask", + ), + pytest.param( + 1, + np.array( + [ + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 0], + [0, 0, 0, 1, 0], + [0, 0, 0, 0, 0], + ] + ), + 2, + 1, + np.array( + [ + # fmt: off + [Criteria.VALID, Criteria.PANDORA2D_MSK_PIXEL_RIGHT_NODATA, Criteria.PANDORA2D_MSK_PIXEL_RIGHT_NODATA, Criteria.PANDORA2D_MSK_PIXEL_RIGHT_NODATA, Criteria.VALID], + [Criteria.VALID, Criteria.PANDORA2D_MSK_PIXEL_RIGHT_NODATA, Criteria.PANDORA2D_MSK_PIXEL_RIGHT_NODATA, Criteria.PANDORA2D_MSK_PIXEL_RIGHT_NODATA, Criteria.VALID], + [Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID], + [Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID], + # fmt: on + ] + ), + id="Disp 2 1 - Pos (2,3)", + ), + ], + # pylint: enable=line-too-long + ) + def test_window_size_3(self, image, criteria_dataarray, disp_row, disp_col, expected_criteria): + """Test some disparity couples with a window size of 3.""" + + criteria.mask_right_no_data(image, 3, criteria_dataarray) + + np.testing.assert_array_equal( + criteria_dataarray.sel(disp_row=disp_row, disp_col=disp_col), + expected_criteria, + ) + + def test_combination(self, image, criteria_dataarray): + """Test that we combine with existing criteria and do not override them.""" + image["msk"].data = np.array( + [ + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 1], + ] + ) + + criteria_dataarray.data[2, 3, ...] = Criteria.PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE + + criteria.mask_right_no_data(image, 1, criteria_dataarray) + + assert ( + criteria_dataarray.sel(row=2, col=3, disp_row=1, disp_col=1).data + == Criteria.PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE | Criteria.PANDORA2D_MSK_PIXEL_RIGHT_NODATA + ) From 84215f25aa69921c411c6c619c72c9d755bcd726 Mon Sep 17 00:00:00 2001 From: Philippe Mallet-Ladeira Date: Tue, 17 Sep 2024 11:27:51 +0200 Subject: [PATCH 109/121] fix: state_machine margins not reset between tests Due to the fact that margins where a class attribute, between two run of tests involving changes in margins those ones where mixed and tests may fail. This commit moves margins for class attribute to instance attribute. Due to this change a test in `tests/functional_tests/refinement/dichotomy/test_dichotomy_pipeline.py` failed because a double instantiation of the state machine where made thus doing a reinitialization of margins that where not done before. --- pandora2d/state_machine.py | 3 +-- .../refinement/dichotomy/test_dichotomy_pipeline.py | 2 -- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/pandora2d/state_machine.py b/pandora2d/state_machine.py index 60ebe67..0cb9f54 100644 --- a/pandora2d/state_machine.py +++ b/pandora2d/state_machine.py @@ -94,8 +94,6 @@ class Pandora2DMachine(Machine): # pylint:disable=too-many-instance-attributes {"trigger": "refinement", "source": "disp_maps", "dest": "disp_maps", "before": "refinement_check_conf"}, ] - margins = GlobalMargins() - def __init__( self, ) -> None: @@ -117,6 +115,7 @@ def __init__( # For communication between matching_cost and refinement steps self.step: list = None self.window_size: int = None + self.margins = GlobalMargins() # Define available states states_ = ["begin", "assumption", "cost_volumes", "disp_maps"] diff --git a/tests/functional_tests/refinement/dichotomy/test_dichotomy_pipeline.py b/tests/functional_tests/refinement/dichotomy/test_dichotomy_pipeline.py index e4ddea4..004952b 100644 --- a/tests/functional_tests/refinement/dichotomy/test_dichotomy_pipeline.py +++ b/tests/functional_tests/refinement/dichotomy/test_dichotomy_pipeline.py @@ -137,8 +137,6 @@ def test_extrema_disparities_not_processed(make_cfg_for_dichotomy): image_datasets = create_datasets_from_inputs(input_config=cfg["input"], roi=roi) - pandora2d_machine = Pandora2DMachine() - # Prepare Pandora2D machine pandora2d_machine.run_prepare(image_datasets.left, image_datasets.right, cfg) # Run matching cost step From 883a58469192cb0e9c4e0d5c325bacbb329f5b9c Mon Sep 17 00:00:00 2001 From: Philippe Mallet-Ladeira Date: Tue, 17 Sep 2024 11:46:33 +0200 Subject: [PATCH 110/121] fix(common): set_out_of_row_disparity_range_to_other_value The condition where never fulfilled because `row_disparity_source` and `col_disparity_source` where not part of attributes as there are not transmitted from `cost_volumes` to `cost_volumes["cost_volumes"]`. Instead we directly pass the global disparity range. This make the call to this method more generic. --- pandora2d/common.py | 22 +++++++++++-------- pandora2d/matching_cost/matching_cost.py | 2 ++ .../test_matching_cost_compute.py | 2 +- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/pandora2d/common.py b/pandora2d/common.py index fd2a7d1..aa0f6bc 100644 --- a/pandora2d/common.py +++ b/pandora2d/common.py @@ -34,7 +34,7 @@ from xarray import Coordinate as Coordinates import os -from typing import Dict, Union, Tuple +from typing import Dict, Union, Tuple, List import xarray as xr import numpy as np from numpy.typing import NDArray @@ -200,6 +200,7 @@ def set_out_of_row_disparity_range_to_other_value( min_disp_grid: NDArray[np.floating], max_disp_grid: NDArray[np.floating], value: Union[int, float, Criteria], + global_disparity_range: Union[None, List[int]] = None, ) -> None: """ Put special value in data where the disparity is out of the range defined by disparity grids. @@ -214,20 +215,21 @@ def set_out_of_row_disparity_range_to_other_value( :type max_disp_grid: NDArray[np.floating] :param value: value to set on data. :type value: Union[int, float, Criteria] + :param global_disparity_range: + :type global_disparity_range: """ # WARNING: if one day we switch disp_row with disp_col index should be -2 ndisp_row = data.shape[-1] # We want to put special value on points that are not in the global disparity range (row_disparity_source) - row_disparity_source = data.attrs.get("row_disparity_source") - if row_disparity_source: # Case we are working with cost volume + if global_disparity_range is not None: # Case we are working with cost volume for disp_row in range(ndisp_row): masking = np.nonzero( np.logical_or( (data.coords["disp_row"].data[disp_row] < min_disp_grid) - & (data.coords["disp_row"].data[disp_row] >= row_disparity_source[0]), + & (data.coords["disp_row"].data[disp_row] >= global_disparity_range[0]), (data.coords["disp_row"].data[disp_row] > max_disp_grid) - & (data.coords["disp_row"].data[disp_row] <= row_disparity_source[1]), + & (data.coords["disp_row"].data[disp_row] <= global_disparity_range[1]), ) ) data.data[masking[0], masking[1], :, disp_row] = value @@ -248,6 +250,7 @@ def set_out_of_col_disparity_range_to_other_value( min_disp_grid: NDArray[np.floating], max_disp_grid: NDArray[np.floating], value: Union[int, float, Criteria], + global_disparity_range: Union[None, List[int]] = None, ) -> None: """ Put special value in data (cost_volumes or criteria_dataarray) where the disparity is out of the range defined @@ -263,20 +266,21 @@ def set_out_of_col_disparity_range_to_other_value( :type max_disp_grid: NDArray[np.floating] :param value: value to set on data. :type value: Union[int, float, Criteria] + :param global_disparity_range: + :type global_disparity_range: """ # WARNING: if one day we switch disp_row with disp_col index should be -1 ndisp_col = data.shape[-2] # We want to put special value on points that are not in the global disparity range (col_disparity_source) - col_disparity_source = data.attrs.get("col_disparity_source") - if col_disparity_source: # Case we are working with cost volume + if global_disparity_range: # Case we are working with cost volume for disp_col in range(ndisp_col): masking = np.nonzero( np.logical_or( (data.coords["disp_col"].data[disp_col] < min_disp_grid) - & (data.coords["disp_col"].data[disp_col] >= col_disparity_source[0]), + & (data.coords["disp_col"].data[disp_col] >= global_disparity_range[0]), (data.coords["disp_col"].data[disp_col] > max_disp_grid) - & (data.coords["disp_col"].data[disp_col] <= col_disparity_source[1]), + & (data.coords["disp_col"].data[disp_col] <= global_disparity_range[1]), ) ) data.data[masking[0], masking[1], disp_col, :] = value diff --git a/pandora2d/matching_cost/matching_cost.py b/pandora2d/matching_cost/matching_cost.py index 7f579aa..aea8a96 100644 --- a/pandora2d/matching_cost/matching_cost.py +++ b/pandora2d/matching_cost/matching_cost.py @@ -412,12 +412,14 @@ def compute_cost_volumes( img_left["row_disparity"].sel(band_disp="min").data, img_left["row_disparity"].sel(band_disp="max").data, np.nan, + cost_volumes.attrs["row_disparity_source"], ) set_out_of_col_disparity_range_to_other_value( cost_volumes["cost_volumes"], img_left["col_disparity"].sel(band_disp="min").data, img_left["col_disparity"].sel(band_disp="max").data, np.nan, + cost_volumes.attrs["col_disparity_source"], ) return cost_volumes diff --git a/tests/unit_tests/test_matching_cost/test_matching_cost_compute.py b/tests/unit_tests/test_matching_cost/test_matching_cost_compute.py index f099877..ddaac2b 100644 --- a/tests/unit_tests/test_matching_cost/test_matching_cost_compute.py +++ b/tests/unit_tests/test_matching_cost/test_matching_cost_compute.py @@ -713,7 +713,7 @@ def mock_set_out_of_disparity_range_to_nan(self, mock_type, mocker: MockerFixtur if mock_type == "not used": return mocker.patch( "pandora2d.matching_cost.matching_cost.set_out_of_row_disparity_range_to_other_value", - side_effect=lambda x, y, z, k: x, + side_effect=lambda x, y, z, k, l: x, ) if mock_type != "used": raise ValueError(f"Expected mock_type to be 'used' or 'not used', got {mock_type}.") From a8f0506c4bf804d2f5af9efc0076779f3f051212 Mon Sep 17 00:00:00 2001 From: Philippe Mallet-Ladeira Date: Tue, 17 Sep 2024 14:28:03 +0200 Subject: [PATCH 111/121] refact(common): clean for loop and condition --- pandora2d/common.py | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/pandora2d/common.py b/pandora2d/common.py index aa0f6bc..9bb2b1a 100644 --- a/pandora2d/common.py +++ b/pandora2d/common.py @@ -222,8 +222,8 @@ def set_out_of_row_disparity_range_to_other_value( ndisp_row = data.shape[-1] # We want to put special value on points that are not in the global disparity range (row_disparity_source) - if global_disparity_range is not None: # Case we are working with cost volume - for disp_row in range(ndisp_row): + for disp_row in range(ndisp_row): + if global_disparity_range is not None: # Case we are working with cost volume masking = np.nonzero( np.logical_or( (data.coords["disp_row"].data[disp_row] < min_disp_grid) @@ -232,17 +232,14 @@ def set_out_of_row_disparity_range_to_other_value( & (data.coords["disp_row"].data[disp_row] <= global_disparity_range[1]), ) ) - data.data[masking[0], masking[1], :, disp_row] = value - - else: - for disp_row in range(ndisp_row): + else: masking = np.nonzero( np.logical_or( data.coords["disp_row"].data[disp_row] < min_disp_grid, data.coords["disp_row"].data[disp_row] > max_disp_grid, ) ) - data.data[masking[0], masking[1], :, disp_row] = value + data.data[masking[0], masking[1], :, disp_row] = value def set_out_of_col_disparity_range_to_other_value( @@ -273,8 +270,8 @@ def set_out_of_col_disparity_range_to_other_value( ndisp_col = data.shape[-2] # We want to put special value on points that are not in the global disparity range (col_disparity_source) - if global_disparity_range: # Case we are working with cost volume - for disp_col in range(ndisp_col): + for disp_col in range(ndisp_col): + if global_disparity_range is not None: # Case we are working with cost volume masking = np.nonzero( np.logical_or( (data.coords["disp_col"].data[disp_col] < min_disp_grid) @@ -283,14 +280,11 @@ def set_out_of_col_disparity_range_to_other_value( & (data.coords["disp_col"].data[disp_col] <= global_disparity_range[1]), ) ) - data.data[masking[0], masking[1], disp_col, :] = value - - else: - for disp_col in range(ndisp_col): + else: masking = np.nonzero( np.logical_or( data.coords["disp_col"].data[disp_col] < min_disp_grid, data.coords["disp_col"].data[disp_col] > max_disp_grid, ) ) - data.data[masking[0], masking[1], disp_col, :] = value + data.data[masking[0], masking[1], disp_col, :] = value From edd5cb529b0d54a3065475d23de50856833f784f Mon Sep 17 00:00:00 2001 From: duzelis Date: Tue, 10 Sep 2024 09:18:35 +0200 Subject: [PATCH 112/121] feat: add mask_left_invalid and mask_right_invalid methods --- pandora2d/criteria.py | 68 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/pandora2d/criteria.py b/pandora2d/criteria.py index f452a2c..ee92be9 100644 --- a/pandora2d/criteria.py +++ b/pandora2d/criteria.py @@ -171,6 +171,73 @@ def mask_right_no_data(img_right: xr.Dataset, window_size: int, criteria_dataarr right_criteria_mask = np.full_like(img_right["msk"], Criteria.VALID, dtype=Criteria) right_binary_mask = binary_dilation_msk(img_right, window_size) right_criteria_mask[right_binary_mask] |= Criteria.PANDORA2D_MSK_PIXEL_RIGHT_NODATA + + apply_right_criteria_mask(criteria_dataarray, right_criteria_mask) + + +def mask_left_invalid(left_image: xr.Dataset, criteria_dataarray: xr.DataArray) -> None: + """ + This method raises PANDORA2D_MSK_PIXEL_INVALIDITY_MASK_LEFT criteria for points having + an invalid point in the left image mask. + A point is considered invalid if its value in the msk of the left image + is different from the values of the valid_pixels and no_data_mask attributes. + + :param left_image: left image with `msk` data var. + :type left_image: xr.Dataset + :param criteria_dataaray: criteria dataarray to update + :type criteria_dataaray: xr.DataArray + """ + invalid_left_mask = get_invalid_mask(left_image) + + criteria_dataarray.data[invalid_left_mask, ...] |= Criteria.PANDORA2D_MSK_PIXEL_INVALIDITY_MASK_LEFT + + +def mask_right_invalid(right_image: xr.Dataset, criteria_dataarray: xr.DataArray) -> None: + """ + This method raises PANDORA2D_MSK_PIXEL_INVALIDITY_MASK_RIGHT criteria for points having + an invalid point in the right image mask shift by its disparity. + A point is considered invalid if when we shift it by its disparity, the obtained value + is different from the values of the valid_pixels and no_data_mask attributes. + + :param right_image: right image with `msk` data var. + :type right_image: xr.Dataset + :param criteria_dataaray: criteria dataarray to update + :type criteria_dataaray: xr.DataArray + """ + right_criteria_mask = np.full_like(right_image["msk"], Criteria.VALID, dtype=Criteria) + + invalid_right_mask = get_invalid_mask(right_image) + + right_criteria_mask[invalid_right_mask] |= Criteria.PANDORA2D_MSK_PIXEL_INVALIDITY_MASK_RIGHT + + apply_right_criteria_mask(criteria_dataarray, right_criteria_mask) + + +def get_invalid_mask(image: xr.Dataset) -> NDArray: + """ + Get mask for points of the image that are neither valid + or no data. + + :param image: image with `msk` data var. + :type image: xr.Dataset + :return: invalid_mask: mask containing invalid points + :rtype: invalid_mask: NDArray + """ + + invalid_mask = (image.msk.data != image.attrs["no_data_mask"]) & (image.msk.data != image.attrs["valid_pixels"]) + return invalid_mask + + +def apply_right_criteria_mask(criteria_dataarray: xr.DataArray, right_criteria_mask: NDArray): + """ + This method apply right_criteria_mask array on criteria_dataarray according + to row and column disparities. + + :param criteria_dataaray: criteria dataarray to update + :type criteria_dataaray: xr.DataArray + :param right_criteria_mask: mask to apply to criteria dataarray + :type right_criteria_mask: np.NDArray + """ for row_disp, col_disp in itertools.product( criteria_dataarray.coords["disp_row"], criteria_dataarray.coords["disp_col"] ): @@ -178,6 +245,7 @@ def mask_right_no_data(img_right: xr.Dataset, window_size: int, criteria_dataarr # We arrange tests to avoid the slice [:0], which doesn’t work, while [0:] is fine. msk_row_slice = np.s_[:row_disp] if row_disp < 0 else np.s_[row_disp:] msk_col_slice = np.s_[:col_disp] if col_disp < 0 else np.s_[col_disp:] + criteria_row_slice = np.s_[-row_disp:] if row_disp <= 0 else np.s_[:-row_disp] criteria_col_slice = np.s_[-col_disp:] if col_disp <= 0 else np.s_[:-col_disp] criteria_dataarray.loc[ From 6a381edb9d64e54e37e574e98ebc1a057d927ef3 Mon Sep 17 00:00:00 2001 From: duzelis Date: Tue, 10 Sep 2024 09:19:44 +0200 Subject: [PATCH 113/121] test: add tests for mask_left_invalid and mask_left_right methods --- tests/unit_tests/test_criteria.py | 297 +++++++++++++++++++++++++++++- 1 file changed, 294 insertions(+), 3 deletions(-) diff --git a/tests/unit_tests/test_criteria.py b/tests/unit_tests/test_criteria.py index 158fbf2..4ce192c 100644 --- a/tests/unit_tests/test_criteria.py +++ b/tests/unit_tests/test_criteria.py @@ -19,7 +19,7 @@ """ Test methods from criteria.py file """ - +# pylint: disable=too-many-lines # pylint: disable=redefined-outer-name import pytest import numpy as np @@ -48,7 +48,12 @@ def no_data_mask(): @pytest.fixture() -def image(img_size, disparity_cfg, no_data_mask): +def valid_pixels(): + return 0 + + +@pytest.fixture() +def image(img_size, disparity_cfg, valid_pixels, no_data_mask): """Make image""" row, col = img_size row_disparity, col_disparity = disparity_cfg @@ -62,7 +67,7 @@ def image(img_size, disparity_cfg, no_data_mask): coords={"row": np.arange(data.shape[0]), "col": np.arange(data.shape[1])}, attrs={ "no_data_img": -9999, - "valid_pixels": 0, + "valid_pixels": valid_pixels, "no_data_mask": no_data_mask, "crs": None, "invalid_disparity": np.nan, @@ -710,3 +715,289 @@ def test_combination(self, image, criteria_dataarray): criteria_dataarray.sel(row=2, col=3, disp_row=1, disp_col=1).data == Criteria.PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE | Criteria.PANDORA2D_MSK_PIXEL_RIGHT_NODATA ) + + +class TestMaskLeftInvalid: + """Test mask_left_invalid function.""" + + @pytest.mark.parametrize( + ["invalid_position"], + [ + pytest.param((2, 2)), + pytest.param((0, 0)), + pytest.param((0, 2)), + pytest.param((9, 12)), + pytest.param((4, 5)), + ], + ) + def test_mask_left_invalid(self, img_size, image, criteria_dataarray, invalid_position): + """ + Test that mask_invalid_left method raises criteria PANDORA2D_MSK_PIXEL_INVALIDITY_MASK_LEFT + for points whose value is neither valid_pixels or no_data_mask. + """ + invalid_row_position, invalid_col_position = invalid_position + + # We put 2 in img_left msk because it is different from valid_pixels=0 and no_data_mask=1 + image["msk"][invalid_row_position, invalid_col_position] = 2 + + expected_criteria_data = np.full((*img_size, 9, 5), Criteria.VALID) + expected_criteria_data[invalid_row_position, invalid_col_position, ...] = ( + Criteria.PANDORA2D_MSK_PIXEL_INVALIDITY_MASK_LEFT + ) + + criteria.mask_left_invalid(image, criteria_dataarray) + + np.testing.assert_array_equal(criteria_dataarray.values, expected_criteria_data) + + @pytest.mark.parametrize( + ["invalid_position"], + [ + pytest.param((2, 2)), + pytest.param((0, 0)), + pytest.param((0, 2)), + pytest.param((9, 12)), + pytest.param((4, 5)), + ], + ) + def test_add_to_existing(self, img_size, image, criteria_dataarray, invalid_position): + """Test we do not override existing criteria but combine it.""" + invalid_row_position, invalid_col_position = invalid_position + + # We put 2 in img_left msk because it is different from valid_pixels=0 and no_data_mask=1 + image["msk"][invalid_row_position, invalid_col_position] = 2 + + criteria_dataarray.data[invalid_row_position, invalid_col_position, ...] = ( + Criteria.PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE + ) + + expected_criteria_data = np.full((*img_size, 9, 5), Criteria.VALID) + expected_criteria_data[invalid_row_position, invalid_col_position, ...] = ( + Criteria.PANDORA2D_MSK_PIXEL_INVALIDITY_MASK_LEFT | Criteria.PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE + ) + + criteria.mask_left_invalid(image, criteria_dataarray) + + np.testing.assert_array_equal(criteria_dataarray.values, expected_criteria_data) + + +@pytest.mark.parametrize("img_size", [(4, 5)]) +class TestMaskRightInvalid: + """Test mask_right_invalid function.""" + + @pytest.mark.usefixtures("mask_image") + @pytest.mark.parametrize( + ["valid_pixels", "no_data_mask", "msk", "expected_criteria", "disp_col", "disp_row"], + [ + # pylint: disable=line-too-long + pytest.param( + 0, + 1, + np.array( # msk + [ + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 0], + [0, 0, 0, 2, 0], + [0, 0, 0, 0, 0], + ] + ), + np.array( + [ + # fmt: off + [Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID], + [Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID], + [Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID], + [Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.PANDORA2D_MSK_PIXEL_INVALIDITY_MASK_RIGHT], + # fmt: on + ] + ), + -1, # disp_col + -1, # disp_row + id="Invalid point at center of right mask with disp_row=-1 and disp_col=-1", + ), + pytest.param( + 0, + 1, + np.array( # msk + [ + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 0], + [0, 0, 0, 2, 0], + [0, 0, 0, 0, 0], + ] + ), + np.array( + [ + # fmt: off + [Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID], + [Criteria.VALID, Criteria.PANDORA2D_MSK_PIXEL_INVALIDITY_MASK_RIGHT, Criteria.VALID, Criteria.VALID, Criteria.VALID], + [Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID], + [Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID], + # fmt: on + ] + ), + 2, # disp_col + 1, # disp_row + id="Invalid point at center of right mask with disp_row=2 and disp_col=1", + ), + pytest.param( + 0, + 1, + np.array( # msk + [ + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 2], + ] + ), + np.array( + [ + # fmt: off + [Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID], + [Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID], + [Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID], + [Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID], + # fmt: on + ] + ), + -1, # disp_col + -1, # disp_row + id="Invalid point at right bottom corner of right mask with disp_row=-1 and disp_col=-1", + ), + pytest.param( + 0, + 1, + np.array( # msk + [ + [0, 0, 0, 0, 0], + [0, 3, 0, 0, 0], + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 0], + ] + ), + np.array( + [ + # fmt: off + [Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID], + [Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID], + [Criteria.VALID, Criteria.VALID, Criteria.PANDORA2D_MSK_PIXEL_INVALIDITY_MASK_RIGHT, Criteria.VALID, Criteria.VALID], + [Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID], + # fmt: on + ] + ), + -1, # disp_col + -1, # disp_row + id="Invalid point at center of right mask with disp_row=-1 and disp_col=-1", + ), + pytest.param( + 0, + 1, + np.array( # msk + [ + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 0], + [0, 0, 4, 0, 0], + [0, 0, 0, 0, 0], + ] + ), + np.array( + [ + # fmt: off + [Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID], + [Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID], + [Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID], + [Criteria.VALID, Criteria.VALID, Criteria.PANDORA2D_MSK_PIXEL_INVALIDITY_MASK_RIGHT, Criteria.VALID, Criteria.VALID], + # fmt: on + ] + ), + 0, # disp_col + -1, # disp_row + id="Invalid point at center of right mask with disp_row=-1 and disp_col=0", + ), + pytest.param( + 3, + 4, + np.array( # msk + [ + [3, 3, 3, 3, 3], + [3, 3, 0, 3, 4], + [3, 3, 4, 3, 3], + [3, 4, 3, 3, 3], + ] + ), + np.array( + [ + # fmt: off + [Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID], + [Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID], + [Criteria.VALID, Criteria.VALID, Criteria.PANDORA2D_MSK_PIXEL_INVALIDITY_MASK_RIGHT, Criteria.VALID, Criteria.VALID], + [Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID], + # fmt: on + ] + ), + 0, # disp_col + -1, # disp_row + id="Invalid point at center of right mask with no_data_mask=4, valid_pixels=3, disp_row=-1 and disp_col=0", + ), + # pylint: enable=line-too-long + ], + ) + def test_mask_invalid_right(self, image, criteria_dataarray, expected_criteria, disp_col, disp_row): + """ + Test that mask_invalid_right method raises criteria PANDORA2D_MSK_PIXEL_INVALIDITY_MASK_RIGHT + for points whose value is neither valid_pixels or no_data_mask when we shift it by its disparity. + """ + + criteria.mask_right_invalid(image, criteria_dataarray) + + np.testing.assert_array_equal( + criteria_dataarray.sel(disp_row=disp_row, disp_col=disp_col), + expected_criteria, + ) + + @pytest.mark.usefixtures("mask_image") + @pytest.mark.parametrize( + ["msk", "disp_col", "disp_row"], + [ + pytest.param( + np.array( # msk + [ + [0, 0, 0, 0, 0], + [0, 3, 0, 0, 0], + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 0], + ] + ), + -2, # disp_col + -1, # disp_row + id="Invalid point at center of right mask with disp_row=-1 and disp_col=-2", + ), + pytest.param( + np.array( # msk + [ + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 2], + ] + ), + 1, # disp_col + 1, # disp_row + id="Invalid point at right bottom corner of right mask with disp_row=1 and disp_col=1", + ), + ], + ) + def test_combination(self, image, criteria_dataarray, disp_col, disp_row): + """ + Test that we combine Criteria.PANDORA2D_MSK_PIXEL_INVALIDITY_MASK_RIGHT + with existing criteria and do not override them. + """ + + criteria_dataarray.data[2, 3, ...] = Criteria.PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE + + criteria.mask_right_invalid(image, criteria_dataarray) + + assert ( + criteria_dataarray.sel(row=2, col=3, disp_row=disp_row, disp_col=disp_col).data + == Criteria.PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE | Criteria.PANDORA2D_MSK_PIXEL_INVALIDITY_MASK_RIGHT + ) From 999a7f6367b9ac5f638645a4bbc9d1c8066c26e7 Mon Sep 17 00:00:00 2001 From: duzelis Date: Tue, 10 Sep 2024 17:49:46 +0200 Subject: [PATCH 114/121] feat: add get_criteria_dataarray method --- pandora2d/criteria.py | 50 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/pandora2d/criteria.py b/pandora2d/criteria.py index ee92be9..3eae676 100644 --- a/pandora2d/criteria.py +++ b/pandora2d/criteria.py @@ -56,6 +56,56 @@ def allocate_criteria_dataarray( ) +def get_criteria_dataarray(left_image: xr.Dataset, right_image: xr.Dataset, cv: xr.Dataset) -> xr.DataArray: + """ + This method fill the criteria dataarray with the different criteria obtained thanks to + the methods implemented in this file + """ + + # Allocate criteria dataarray + criteria_dataarray = allocate_criteria_dataarray(cv) + + if "msk" in left_image.data_vars: + + # Raise criteria PANDORA2D_MSK_PIXEL_LEFT_NODATA + # for points having no data in left mask, for each disparity + mask_left_no_data(left_image, cv.attrs["window_size"], criteria_dataarray) + # Raise criteria PANDORA2D_MSK_PIXEL_INVALIDITY_MASK_LEFT + # for points having invalid in left mask, for each disparity + mask_left_invalid(left_image, criteria_dataarray) + + if "msk" in right_image.data_vars: + + # Raise criteria PANDORA2D_MSK_PIXEL_RIGHT_NODATA + # for points having no data in right mask according to disparity value + mask_right_no_data(right_image, cv.attrs["window_size"], criteria_dataarray) + # Raise criteria PANDORA2D_MSK_PIXEL_INVALIDITY_MASK_RIGHT + # for points having invalid in right mask according to disparity value + mask_right_invalid(right_image, criteria_dataarray) + + # Raise criteria PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE + # for points for which window is outside right image according to disparity value + mask_disparity_outside_right_image(cv.attrs["offset_row_col"], criteria_dataarray) + + # Raise criteria PANDORA2D_MSK_PIXEL_LEFT_BORDER + # on the border according to offset value, for each disparity + mask_border(cv.attrs["offset_row_col"], criteria_dataarray) + + # Get columns disparity grid + d_min_col_grid = left_image["col_disparity"].sel(band_disp="min").data.copy() + d_max_col_grid = left_image["col_disparity"].sel(band_disp="max").data.copy() + + # Get rows disparity grid + d_min_row_grid = left_image["row_disparity"].sel(band_disp="min").data.copy() + d_max_row_grid = left_image["row_disparity"].sel(band_disp="max").data.copy() + + # Put PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED + # on points for which corresponding disparity is not processed + set_unprocessed_disp(criteria_dataarray, d_min_col_grid, d_max_col_grid, d_min_row_grid, d_max_row_grid) + + return criteria_dataarray + + def set_unprocessed_disp( criteria_dataarray: xr.DataArray, min_grid_col: NDArray[np.floating], From afe09f034c469c93132f3c4760cb434fb6b70cbf Mon Sep 17 00:00:00 2001 From: duzelis Date: Tue, 10 Sep 2024 17:50:44 +0200 Subject: [PATCH 115/121] test: add tests for get_criteria_dataarray method --- tests/unit_tests/test_criteria.py | 336 ++++++++++++++++++++++++++++++ 1 file changed, 336 insertions(+) diff --git a/tests/unit_tests/test_criteria.py b/tests/unit_tests/test_criteria.py index 4ce192c..1892154 100644 --- a/tests/unit_tests/test_criteria.py +++ b/tests/unit_tests/test_criteria.py @@ -21,6 +21,7 @@ """ # pylint: disable=too-many-lines # pylint: disable=redefined-outer-name +import copy import pytest import numpy as np import xarray as xr @@ -1001,3 +1002,338 @@ def test_combination(self, image, criteria_dataarray, disp_col, disp_row): criteria_dataarray.sel(row=2, col=3, disp_row=disp_row, disp_col=disp_col).data == Criteria.PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE | Criteria.PANDORA2D_MSK_PIXEL_INVALIDITY_MASK_RIGHT ) + + +@pytest.mark.parametrize("img_size", [(4, 5)]) +class TestGetCriteriaDataarray: + """Test get_criteria_dataarray function.""" + + @pytest.fixture() + def image_variable_disp(self, image, img_size): + """Make image with variable disparity grids""" + + # Make so when we change image_variable_disp mask it + # does not change image mask + img = copy.copy(image) + row, col = img_size + + nb_col_set = int(col / 2) + nb_row_set = int(row / 2) + + # Get variable col disparities + + # Minimal col disparity grid is equal to: + # [[-3, -3, -5, -5, -5] + # [-3, -3, -5, -5, -5] + # [-3, -3, -5, -5, -5] + # [-3, -3, -5, -5, -5]] + img["col_disparity"].sel(band_disp="min")[:, :nb_col_set] = -3 + + # Maximal col disparity grid is equal to: + # [[ 3, 3, 1, 1, 1] + # [ 3, 3, 1, 1, 1] + # [ 3, 3, 1, 1, 1] + # [ 3, 3, 1, 1, 1]] + img["col_disparity"].sel(band_disp="max")[:, nb_col_set:] = 1 + + # Get variable row disparities + + # Minimal row disparity grid is equal to: + # [[ 0, 0, 0, 0, 0] + # [ 0, 0, 0, 0, 0] + # [-1, -1, -1, -1, -1] + # [-1, -1, -1, -1, -1]] + img["row_disparity"].sel(band_disp="min")[:nb_row_set, :] = 0 + + # Maximal row disparity grid is equal to: + # [[ 3, 3, 3, 3, 3] + # [ 3, 3, 3, 3, 3] + # [ 2, 2, 2, 2, 2] + # [ 2, 2, 2, 2, 2]] + + img["row_disparity"].sel(band_disp="max")[nb_row_set:, :] = 2 + + return img + + @pytest.mark.usefixtures("mask_image") + @pytest.mark.parametrize( + ["left_msk", "msk", "disp_col", "disp_row", "window_size", "expected_criteria"], + [ + # pylint: disable=line-too-long + pytest.param( + np.array( # left msk + [ + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 0], + ] + ), + np.array( # right msk + [ + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 0], + ] + ), + 0, # disp_col + 0, # disp_row + 1, # window_size + np.array( + [ + # fmt: off + [Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID], + [Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID], + [Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID], + [Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID], + # fmt: on + ] + ), + id="Everything is valid", + ), + pytest.param( + np.array( # left msk + [ + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 0], + ] + ), + np.array( # right msk + [ + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 0], + ] + ), + 2, # disp_col + -1, # disp_row + 1, # window_size + np.array( + [ + # fmt: off + [Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED, Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED, Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED, Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED, Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED], + [Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED, Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED, Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED, Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED, Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED], + [Criteria.VALID , Criteria.VALID , Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED, Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED, Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED], + [Criteria.VALID , Criteria.VALID , Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED, Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED, Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED], + # fmt: on + ] + ), + id="Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED overcome other criteria", + ), + pytest.param( + np.array( # left msk + [ + [0, 0, 0, 0, 0], + [0, 1, 0, 0, 0], + [0, 0, 0, 2, 0], + [0, 0, 0, 0, 0], + ] + ), + np.array( # right msk + [ + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 0], + [0, 2, 0, 1, 0], + [0, 0, 0, 0, 0], + ] + ), + -1, # disp_col + 1, # disp_row + 1, # window_size + np.array( + [ + # fmt: off + [Criteria.PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE , Criteria.VALID, Criteria.VALID, Criteria.VALID, Criteria.VALID], + [Criteria.PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE , Criteria.PANDORA2D_MSK_PIXEL_LEFT_NODATA, Criteria.PANDORA2D_MSK_PIXEL_INVALIDITY_MASK_RIGHT, Criteria.VALID, Criteria.PANDORA2D_MSK_PIXEL_RIGHT_NODATA], + [Criteria.PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE , Criteria.VALID, Criteria.VALID, Criteria.PANDORA2D_MSK_PIXEL_INVALIDITY_MASK_LEFT, Criteria.VALID], + [Criteria.PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE , Criteria.PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE , Criteria.PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE , Criteria.PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE , Criteria.PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE ], + # fmt: on + ] + ), + id="Mix of criteria with window_size=1", + ), + pytest.param( + np.array( # left msk + [ + [0, 0, 0, 0, 0], + [0, 1, 0, 0, 0], + [0, 0, 0, 2, 0], + [0, 0, 0, 0, 0], + ] + ), + np.array( # right msk + [ + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 0], + [0, 3, 0, 1, 0], + [0, 0, 0, 0, 0], + ] + ), + -1, # disp_col + 1, # disp_row + 3, # window_size + np.array( + [ + # fmt: off + [Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER , Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER, Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER, Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER, Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER], + [Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER , Criteria.PANDORA2D_MSK_PIXEL_LEFT_NODATA | Criteria.PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE, Criteria.PANDORA2D_MSK_PIXEL_LEFT_NODATA | Criteria.PANDORA2D_MSK_PIXEL_INVALIDITY_MASK_RIGHT, Criteria.PANDORA2D_MSK_PIXEL_RIGHT_NODATA, Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER], + [Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER , Criteria.PANDORA2D_MSK_PIXEL_LEFT_NODATA | Criteria.PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE, Criteria.PANDORA2D_MSK_PIXEL_LEFT_NODATA | Criteria.PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE, Criteria.PANDORA2D_MSK_PIXEL_RIGHT_NODATA | Criteria.PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE | Criteria.PANDORA2D_MSK_PIXEL_INVALIDITY_MASK_LEFT, Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER], + [Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER , Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER, Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER , Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER , Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER], + # fmt: on + ] + ), + id="Mix of criteria with window_size=3", + ), + pytest.param( + np.array( # left msk + [ + [0, 0, 0, 0, 0], + [0, 0, 1, 0, 0], + [0, 0, 2, 0, 0], + [0, 0, 0, 0, 0], + ] + ), + np.array( # right msk + [ + [0, 0, 0, 0, 0], + [0, 0, 1, 0, 0], + [0, 0, 2, 0, 0], + [0, 0, 0, 0, 0], + ] + ), + 0, # disp_col + 1, # disp_row + 1, # window_size + np.array( + [ + # fmt: off + [Criteria.VALID, Criteria.VALID, Criteria.PANDORA2D_MSK_PIXEL_RIGHT_NODATA, Criteria.VALID, Criteria.VALID], + [Criteria.VALID, Criteria.VALID, Criteria.PANDORA2D_MSK_PIXEL_LEFT_NODATA | Criteria.PANDORA2D_MSK_PIXEL_INVALIDITY_MASK_RIGHT, Criteria.VALID, Criteria.VALID], + [Criteria.VALID, Criteria.VALID, Criteria.PANDORA2D_MSK_PIXEL_INVALIDITY_MASK_LEFT, Criteria.VALID, Criteria.VALID], + [Criteria.PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE, Criteria.PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE, Criteria.PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE, Criteria.PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE, Criteria.PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE], + # fmt: on + ] + ), + id="Centered invalid and no data in msk with window_size=1", + ), + pytest.param( + np.array( # left msk + [ + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 0], + ] + ), + np.array( # right msk + [ + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 1], + [0, 0, 0, 0, 0], + ] + ), + 1, # disp_col + 1, # disp_row + 3, # window_size + np.array( + [ + # fmt: off + [Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER, Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER, Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER, Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER, Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER], + [Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER, Criteria.VALID, Criteria.PANDORA2D_MSK_PIXEL_RIGHT_NODATA, Criteria.PANDORA2D_MSK_PIXEL_RIGHT_NODATA | Criteria.PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE, Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER], + [Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER, Criteria.PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE, Criteria.PANDORA2D_MSK_PIXEL_RIGHT_NODATA | Criteria.PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE, Criteria.PANDORA2D_MSK_PIXEL_RIGHT_NODATA | Criteria.PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE, Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER], + [Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER, Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER, Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER, Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER, Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER], + # fmt: on + ] + ), + id="Right no data on the border and window_size=3", + ), + pytest.param( + np.array( # left msk + [ + [0, 0, 0, 0, 0], + [0, 1, 0, 0, 0], + [0, 0, 0, 2, 0], + [0, 0, 0, 0, 0], + ] + ), + np.array( # right msk + [ + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 0], + [0, 2, 0, 1, 0], + [0, 0, 0, 0, 0], + ] + ), + -1, # disp_col + 1, # disp_row + 5, # window_size + np.array( + [ + # fmt: off + [Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER, Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER, Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER, Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER, Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER], + [Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER, Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER, Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER, Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER, Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER], + [Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER, Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER, Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER, Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER, Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER], + [Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER, Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER, Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER, Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER, Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER], + # fmt: on + ] + ), + id="Window_size=5, only Criteria.PANDORA2D_MSK_PIXEL_LEFT_BORDER is raised", + ), + pytest.param( + np.array( # left msk + [ + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 0], + ] + ), + np.array( # right msk + [ + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 0], + [0, 0, 0, 0, 0], + ] + ), + -5, # disp_col + 0, # disp_row + 1, # window_size + np.array( + [ + # fmt: off + [Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED, Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED, Criteria.PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE, Criteria.PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE, Criteria.PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE], + [Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED, Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED, Criteria.PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE, Criteria.PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE, Criteria.PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE], + [Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED, Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED, Criteria.PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE, Criteria.PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE, Criteria.PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE], + [Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED, Criteria.PANDORA2D_MSK_PIXEL_DISPARITY_UNPROCESSED, Criteria.PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE, Criteria.PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE, Criteria.PANDORA2D_MSK_PIXEL_RIGHT_DISPARITY_OUTSIDE], + # fmt: on + ] + ), + id="Column disparity out of the image or unprocessed for all points", + ), + # pylint: enable=line-too-long + ], + ) + def test_get_criteria_dataarray( + self, image_variable_disp, image, left_msk, cost_volumes, disp_col, disp_row, expected_criteria + ): + """ + Test get_criteria_dataarray method with + different disparities, window sizes and masks + """ + + image_variable_disp["msk"].data = left_msk + + criteria_dataarray = criteria.get_criteria_dataarray( + left_image=image_variable_disp, right_image=image, cv=cost_volumes + ) + + np.testing.assert_array_equal( + criteria_dataarray.sel(disp_row=disp_row, disp_col=disp_col), + expected_criteria, + ) From 5bdc9d9483c337fc128020e4a30661d769a3254f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alice=20de=20Bardonn=C3=A8che-Richard?= Date: Fri, 6 Sep 2024 16:32:34 +0200 Subject: [PATCH 116/121] feat: profiling method expert mode --- pandora2d/__init__.py | 9 + pandora2d/check_configuration.py | 39 +++- pandora2d/profiling.py | 386 +++++++++++++++++++++++++++++++ pandora2d/state_machine.py | 10 +- setup.cfg | 4 + 5 files changed, 441 insertions(+), 7 deletions(-) create mode 100644 pandora2d/profiling.py diff --git a/pandora2d/__init__.py b/pandora2d/__init__.py index 4ee2b2a..b6bfa86 100644 --- a/pandora2d/__init__.py +++ b/pandora2d/__init__.py @@ -36,6 +36,8 @@ from pandora2d.state_machine import Pandora2DMachine from pandora2d import reporting from pandora2d.reporting import NumpyPrimitiveEncoder +from pandora2d.profiling import generate_summary +from pandora2d import profiling def run( @@ -81,6 +83,8 @@ def main(cfg_path: str, path_output: str, verbose: bool) -> None: :param cfg_path: path to the json configuration file :type cfg_path: string + :param path_output: output directory + :type path_output: str :param verbose: verbose mode :type verbose: bool :return: None @@ -95,6 +99,7 @@ def main(cfg_path: str, path_output: str, verbose: bool) -> None: pandora2d_machine = Pandora2DMachine() cfg = check_conf(user_cfg, pandora2d_machine) + profiling.expert_mode_config.enable = "expert_mode" in cfg setup_logging(verbose) @@ -129,3 +134,7 @@ def main(cfg_path: str, path_output: str, verbose: bool) -> None: completed_cfg["margins"] = pandora2d_machine.margins.to_dict() # save config save_config(path_output, completed_cfg) + + # Profiling results + if "expert_mode" in completed_cfg: + generate_summary(path_output, completed_cfg["expert_mode"]["profiling"]) diff --git a/pandora2d/check_configuration.py b/pandora2d/check_configuration.py index 26843b5..97b343a 100644 --- a/pandora2d/check_configuration.py +++ b/pandora2d/check_configuration.py @@ -26,10 +26,9 @@ from __future__ import annotations from typing import Dict - import numpy as np import xarray as xr -from json_checker import And, Checker, Or +from json_checker import And, Checker, Or, MissKeyCheckerError from rasterio.io import DatasetReader from pandora.img_tools import get_metadata, rasterio_open @@ -280,14 +279,38 @@ def check_pipeline_section(user_cfg: Dict[str, dict], pandora2d_machine: Pandora return pipeline_cfg +def check_expert_mode_section(user_cfg: Dict[str, dict]) -> Dict[str, dict]: + """ + Complete and check if the dictionary is correct + + :param user_cfg: user configuration + :type user_cfg: dict + :return: cfg: global configuration + :rtype: cfg: dict + """ + + if "profiling" not in user_cfg: + raise MissKeyCheckerError("Please be sure to set the profiling dictionary") + + # check profiling schema + profiling_mode_cfg = user_cfg["profiling"] + checker = Checker(expert_mode_profiling) + checker.validate(profiling_mode_cfg) + + profiling_mode_cfg = {"expert_mode": user_cfg} + + return profiling_mode_cfg + + def check_conf(user_cfg: Dict, pandora2d_machine: Pandora2DMachine) -> dict: """ Complete and check if the dictionary is correct :param user_cfg: user configuration :type user_cfg: dict - :param pandora2d_machine: instance of PandoraMachine - :type pandora2d_machine: PandoraMachine + :param pandora2d_machine: instance of Pandora2DMachine + :type pandora2d_machine: Pandora2DMachine + :return: cfg: global configuration :rtype: cfg: dict """ @@ -306,7 +329,11 @@ def check_conf(user_cfg: Dict, pandora2d_machine: Pandora2DMachine) -> dict: if "matching_cost" in cfg_pipeline["pipeline"]: check_right_nodata_condition(cfg_input, cfg_pipeline) - cfg = concat_conf([cfg_input, cfg_roi, cfg_pipeline]) + cfg_expert_mode = user_cfg.get("expert_mode", {}) + if cfg_expert_mode != {}: + cfg_expert_mode = check_expert_mode_section(cfg_expert_mode) + + cfg = concat_conf([cfg_input, cfg_roi, cfg_pipeline, cfg_expert_mode]) return cfg @@ -395,3 +422,5 @@ def get_roi_config(user_cfg: Dict[str, dict]) -> Dict[str, dict]: "row": {"first": And(int, lambda x: x >= 0), "last": And(int, lambda x: x >= 0)}, "col": {"first": And(int, lambda x: x >= 0), "last": And(int, lambda x: x >= 0)}, } + +expert_mode_profiling = {"folder_name": str} diff --git a/pandora2d/profiling.py b/pandora2d/profiling.py new file mode 100644 index 0000000..669d2aa --- /dev/null +++ b/pandora2d/profiling.py @@ -0,0 +1,386 @@ +# Copyright (c) 2024 Centre National d'Etudes Spatiales (CNES). +# +# This file is part of PANDORA2D +# +# https://github.com/CNES/Pandora2D +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +""" +Contains functions for profiling pandora2d +""" +import datetime +import logging +import os +import shutil +import time +from dataclasses import dataclass +from functools import wraps +from multiprocessing import Pipe +from pathlib import Path +from threading import Thread +import csv +import matplotlib.pyplot as plt +import pandas as pd +import psutil +from matplotlib.backends.backend_pdf import PdfPages +from matplotlib.figure import Figure + +THREAD_TIMEOUT = 2 + + +@dataclass +class EpertModeConfig: + """ + Expert mode config class + """ + + enable: bool = False + + +class Data: + """ + Data class + """ + + def __init__(self): + self._data = [] + self.timestamp = datetime.datetime.now().strftime("%Y-%m-%d %Hh%Mm%Ss") + + def append(self, line): + self._data.append(line) + + def reset(self): + self._data.clear() + + @property + def timestamp(self): + return self._timestamp + + @timestamp.setter + def timestamp(self, value): + self._timestamp = value + + +expert_mode_config = EpertModeConfig() +data = Data() + + +def get_current_memory(): + """ + Get current memory of process + + :return: memory + :rtype: float + + """ + + # Use psutil to capture python process memory as well + process = psutil.Process() + process_memory = process.memory_info().rss + + # Convert nbytes size for logger (in MiB) + process_memory = float(process_memory) / 1000000 + + return process_memory + + +class MemProf(Thread): + """ + MemProf + + Profiling thread with time and memory performances in seconds and MiB + """ + + def __init__(self, pid, pipe, interval=0.1): + """ + Init function of Pandora2dMemProf + """ + super().__init__() + self.pipe = pipe + self.interval = interval + self.cpu_interval = 0.1 + self.process = psutil.Process(pid) + + def run(self): + """ + Run + """ + + try: + max_mem = 0 + max_cpu = 0 + + # tell parent profiling is ready + self.pipe.send(0) + stop = False + while not stop: + # Get memory + current_mem = self.process.memory_info().rss + max_mem = max(max_mem, current_mem) + + # Get cpu max + current_cpu = self.process.cpu_percent(interval=self.cpu_interval) + max_cpu = max(max_cpu, int(current_cpu)) + + stop = self.pipe.poll(self.interval) + + # Convert nbytes size for logger + self.pipe.send(float(max_mem) / 1000000) + self.pipe.send(max_cpu) + + except BrokenPipeError: + logging.debug("broken pipe error in log wrapper ") + + +def mem_time_profile(name=None, interval=0.1): + """ + Pandora2d profiling decorator + + :param: func: function to monitor + + """ + + def decorator_generator(func): + """ + Inner function + """ + + @wraps(func) + def wrapper_profile(*args, **kwargs): + """ + Profiling wrapper + + Generate profiling logs of function, run + + :return: func(*args, **kwargs) + + """ + if not expert_mode_config.enable: + return func(*args, **kwargs) + + # Launch memory profiling thread + child_pipe, parent_pipe = Pipe() + thread_monitoring = MemProf(os.getpid(), child_pipe, interval=interval) + thread_monitoring.start() + if parent_pipe.poll(THREAD_TIMEOUT): + parent_pipe.recv() + + start_time = time.perf_counter() + start_cpu_time = time.process_time() + + memory_start = get_current_memory() + + result = func(*args, **kwargs) + + total_time = time.perf_counter() - start_time + total_cpu_time = time.process_time() - start_cpu_time + + # end memprofiling monitoring + parent_pipe.send(0) + max_memory, max_cpu = None, None + if parent_pipe.poll(THREAD_TIMEOUT): + max_memory = parent_pipe.recv() + max_cpu = parent_pipe.recv() + + memory_end = get_current_memory() + + func_name = func.__name__.capitalize() if name is None else name + + # Prepare data to write to the CSV + performance_data = [func_name, total_time, total_cpu_time, max_memory, memory_start, memory_end, max_cpu] + + # Check if the file already exists + file_exists = os.path.exists(f"{data.timestamp}_profiling.csv") + + # Write to CSV using the csv module + with open(f"{data.timestamp}_profiling.csv", mode="a", newline="", encoding="utf-8") as file: + writer = csv.writer(file) + + # Write header only if the file does not exist + if not file_exists: + writer.writerow( + [ + "Function_name", + "Time (s)", + "CPU Time (s)", + "Max_Memory (MiB)", + "Start_Ram (MiB)", + "End_Ram (MiB)", + "Max_CPU", + ] + ) + + # Write the performance data + writer.writerow(performance_data) + + return result + + return wrapper_profile + + return decorator_generator + + +def generate_figure( + fig_type: str, + dataframe, + values=None, + title: str = "", + xlabel: str = "", + ylabel: str = "", +) -> Figure: + """ + Generic function to generate different types of plots. + + :param fig_type: Type of figure ('pie', 'box', 'barh') + :type fig_type: str + :param dataframe: DataFrame containing the data + :type dataframe: pd.DataFrame + :param values: Values for bar chart + + :param title: Title of the chart + :type title: str + :param xlabel: Label for x-axis + :type xlabel: str + :param ylabel: Label for y-axis + :type ylabel: str + :return: Performance graph + :rtype: plt.Figure + """ + fig = plt.figure(figsize=(12, 12)) + plt.tight_layout() + + if fig_type == "box": + dataframe.T.boxplot(vert=False, showfliers=False) + plt.xlabel(xlabel) + plt.ylabel(ylabel) + + # Get median and quartiles + stats = dataframe.T.describe() + for idx, col in enumerate(dataframe.T.columns): + q1 = stats[col]["25%"] + median = stats[col]["50%"] + q3 = stats[col]["75%"] + plt.text(median, idx + 1, f"Med: {median:.2f}", va="center", ha="center", color="black", fontsize=8) + plt.text(q1, idx + 1, f"Q1: {q1:.2f}", va="center", ha="center", color="blue", fontsize=8) + plt.text(q3, idx + 1, f"Q3: {q3:.2f}", va="center", ha="center", color="blue", fontsize=8) + + elif fig_type == "barh": + hbar = plt.barh(values, dataframe, alpha=0.6) + small_hbar = [f"{d:.2f}" if d <= (max(dataframe) / 2) else "" for d in dataframe] + large_hbar = [f"{d:.2f}" if d > (max(dataframe) / 2) else "" for d in dataframe] + plt.bar_label(hbar, small_hbar, padding=5, fmt="%.2f", color="black") + plt.bar_label(hbar, large_hbar, padding=-35, fmt="%.2f", color="black") + + plt.title(title) + return fig + + +def generate_summary(path_output: str, expert_mode_cfg: dict): + """ + Generate graphs referencing memory management and time for each step. + + :param path_output: output directory + :type path_output: str + :param expert_mode_cfg: Dictionary containing expert_mode parameters + :type expert_mode_cfg: dict + """ + + # Copy memory_profiling results in the correct folder + folder_name = Path(path_output) / expert_mode_cfg.get("folder_name") + Path.mkdir(folder_name, exist_ok=True) + + csv_data_path = f"{folder_name}/{data.timestamp}_profiling.csv" + + shutil.copy(f"{data.timestamp}_profiling.csv", csv_data_path) + os.remove(f"{data.timestamp}_profiling.csv") + + # Transform csv to a panda.DataFrame + resumed_performance_df = pd.read_csv(csv_data_path) + grouped = resumed_performance_df.groupby("Function_name") + + metrics_list = ["mean", "sum"] + + dict_perf = { + "Time": {"df": grouped["Time (s)"].agg(metrics_list), "unit": "seconds"}, # type: ignore + "Process time": {"df": grouped["CPU Time (s)"].agg(metrics_list), "unit": "seconds"}, # type: ignore + "Maximum_memory": {"df": grouped["Max_Memory (MiB)"].agg(metrics_list), "unit": "MiB"}, # type: ignore + "Start_RAM": {"df": grouped["Start_Ram (MiB)"].agg(metrics_list), "unit": "MiB"}, # type: ignore + "End_RAM": {"df": grouped["End_Ram (MiB)"].agg(metrics_list), "unit": "MiB"}, # type: ignore + "MAX_CPU": {"df": grouped["Max_CPU"].agg(metrics_list), "unit": "unit"}, # type: ignore + } + + # Time graphics + histo_mean_time = generate_figure( + "barh", + dict_perf["Time"]["df"]["mean"], # type: ignore + values=dict_perf["Time"]["df"].index, # type: ignore + title="Mean time", + ylabel="Function name", + ) + histo_total_time = generate_figure( + "barh", + dict_perf["Time"]["df"]["sum"], # type: ignore + values=dict_perf["Time"]["df"].index, # type: ignore + title="Total time", + ylabel="Function name", + ) + histo_mean_cpu_time = generate_figure( + "barh", + dict_perf["Process time"]["df"]["mean"], # type: ignore + values=dict_perf["Process time"]["df"].index, # type: ignore + title="Mean CPU time", + ylabel="Function name", + ) + histo_total_cpu_time = generate_figure( + "barh", + dict_perf["Process time"]["df"]["sum"], # type: ignore + values=dict_perf["Process time"]["df"].index, # type: ignore + title="Total CPU time", + ylabel="Function name", + ) + + # Memory graphics + max_cpu = generate_figure( + "box", + dict_perf["MAX_CPU"]["df"], + title="Max CPU", + xlabel=str(dict_perf["Maximum_memory"]["unit"]), + ylabel="Function name", + ) + + max_mem = generate_figure( + "box", + dict_perf["Maximum_memory"]["df"], + title="Maximum memory per task", + xlabel=str(dict_perf["Maximum_memory"]["unit"]), + ylabel="Function name", + ) + + # Calls graphics + occurrences = grouped["Function_name"].value_counts().reset_index() + occ = generate_figure( + "barh", + occurrences["count"], + values=occurrences["Function_name"], + title="Number of calls", + ylabel="Function name", + ) + + # Save all figures in PDF file + figures = [histo_mean_time, histo_total_time, histo_mean_cpu_time, histo_total_cpu_time, max_cpu, max_mem, occ] + pdf_filename = f"{folder_name}/{data.timestamp}_graph_perf.pdf" + with PdfPages(pdf_filename) as pdf: + for fig in figures: + pdf.savefig(fig) diff --git a/pandora2d/state_machine.py b/pandora2d/state_machine.py index 0cb9f54..c706bfa 100644 --- a/pandora2d/state_machine.py +++ b/pandora2d/state_machine.py @@ -44,9 +44,11 @@ from transitions import Machine from transitions import MachineError - from pandora.margins import GlobalMargins -from pandora2d import common, disparity, estimation, matching_cost, refinement, img_tools + + +from pandora2d import common, disparity, estimation, img_tools, matching_cost, refinement +from pandora2d.profiling import mem_time_profile class MarginsProperties(TypedDict): @@ -309,6 +311,7 @@ def matching_cost_prepare(self, cfg: Dict[str, dict], input_step: str) -> None: self.left_img, self.right_img, cfg, self.margins.get("refinement") ) + @mem_time_profile(name="Estimation step") def estimation_run(self, cfg: Dict[str, dict], input_step: str) -> None: """ Shift's estimation step @@ -331,6 +334,7 @@ def estimation_run(self, cfg: Dict[str, dict], input_step: str) -> None: cfg, col_disparity, row_disparity, shifts, extra_dict ) + @mem_time_profile(name="Matching cost step") def matching_cost_run(self, _, __) -> None: """ Matching cost computation @@ -346,6 +350,7 @@ def matching_cost_run(self, _, __) -> None: self.margins.get("refinement"), ) + @mem_time_profile(name="Disparity step") def disp_maps_run(self, cfg: Dict[str, dict], input_step: str) -> None: """ Disparity computation and validity mask @@ -373,6 +378,7 @@ def disp_maps_run(self, cfg: Dict[str, dict], input_step: str) -> None: }, ) + @mem_time_profile(name="Refinement step") def refinement_run(self, cfg: Dict[str, dict], input_step: str) -> None: """ Subpixel disparity refinement diff --git a/setup.cfg b/setup.cfg index ab363d5..384d6de 100644 --- a/setup.cfg +++ b/setup.cfg @@ -67,6 +67,8 @@ install_requires = typing_extensions scikit-image scipy<1.14 + pandas + psutil package_dir = . = pandora2d @@ -86,6 +88,8 @@ dev = pylint>=2.8.2 # General linter with more rules setuptools_scm # version from git tag mypy # static type checker + pandas-stubs + types-psutil docs = sphinx From 2e9807248d1fa04403839feb2cfea51203cf7528 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alice=20de=20Bardonn=C3=A8che-Richard?= Date: Mon, 9 Sep 2024 15:41:38 +0200 Subject: [PATCH 117/121] test: check profiling outputs and config --- tests/conftest.py | 6 +++ tests/functional_tests/test_pipelines.py | 44 ++++++++++++++++++++ tests/unit_tests/test_check_configuration.py | 36 ++++++++++++++++ 3 files changed, 86 insertions(+) diff --git a/tests/conftest.py b/tests/conftest.py index 6e50edc..e11ad83 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -330,3 +330,9 @@ def second_correct_grid(left_img_shape, create_disparity_grid_fixture): init_band = np.tile([[5, -21, -1]], (height, width // 3 + 1))[:, :width] return create_disparity_grid_fixture(init_band, 5, "second_disparity.tif") + + +@pytest.fixture() +def reset_profiling(): + pandora2d.profiling.data.reset() + pandora2d.profiling.expert_mode_config.enable = False diff --git a/tests/functional_tests/test_pipelines.py b/tests/functional_tests/test_pipelines.py index b8bf988..8f14b27 100644 --- a/tests/functional_tests/test_pipelines.py +++ b/tests/functional_tests/test_pipelines.py @@ -19,10 +19,13 @@ """ Run pandora2d configurations from end to end. """ +import glob # pylint: disable=redefined-outer-name import json +import os +import re from copy import deepcopy from typing import Dict @@ -301,3 +304,44 @@ def test_disparity_grids(run_pipeline, make_input_cfg, pipeline, request): (col_map[non_nan_col_map] >= min_max_disp_col[0, ::][non_nan_col_map]) & (col_map[non_nan_col_map] <= min_max_disp_col[1, ::][non_nan_col_map]) ) + + +@pytest.mark.usefixtures("reset_profiling") +@pytest.mark.parametrize( + ["ground_truth", "configuration_expert", "file_exists"], + [ + pytest.param( + [".csv", ".pdf"], + {"expert_mode": {"profiling": {"folder_name": "expert_mode"}}}, + True, + id="Expert mode", + ), + pytest.param([], {}, False, id="No expert mode"), + ], +) +def test_expert_mode( + ground_truth, + configuration_expert, + run_pipeline, + file_exists, + correct_input_cfg, + correct_pipeline_without_refinement, +): + """ + Description : Test default expert mode outputs + Data : + - Left image : cones/monoband/left.png + - Right image : cones/monoband/right.png + """ + + configuration = {**correct_input_cfg, **correct_pipeline_without_refinement, **configuration_expert} + + run_dir = run_pipeline(configuration) + + output_expert_dir = run_dir / "output" / "expert_mode" + + assert output_expert_dir.exists() == file_exists + + if output_expert_dir.exists(): + file_extensions = [f.suffix for f in output_expert_dir.iterdir() if f.is_file()] + assert set(file_extensions) == set(ground_truth) diff --git a/tests/unit_tests/test_check_configuration.py b/tests/unit_tests/test_check_configuration.py index f634977..2c627da 100644 --- a/tests/unit_tests/test_check_configuration.py +++ b/tests/unit_tests/test_check_configuration.py @@ -687,3 +687,39 @@ def test_extra_section_is_allowed(correct_input_cfg, correct_pipeline, pandora2d configuration = {**correct_input_cfg, **correct_pipeline, extra_section_name: {}} check_configuration.check_conf(configuration, pandora2d_machine) + + +class TestExpertModeSection: + """ + Description : Test expert_mode_section. + """ + + def test_expert_mode_section_missing_profile_parameter(self): + """ + Description : Test if profiling section is missing + Data : + Requirement : + """ + + with pytest.raises(MissKeyCheckerError) as exc_info: + check_configuration.check_expert_mode_section({"expert_mode": {}}) + assert str(exc_info.value) == "Please be sure to set the profiling dictionary" + + @pytest.mark.parametrize( + ["parameter", "wrong_value_parameter"], + [ + pytest.param("folder_name", 12, id="error folder name with an int"), + pytest.param("folder_name", ["folder_name"], id="error folder name with a list"), + pytest.param("folder_name", {"folder_name": "expert_mode"}, id="error folder name with a dict"), + pytest.param("folder_name", 12.0, id="error folder name with a float"), + ], + ) + def test_configuration_expert_mode(self, parameter, wrong_value_parameter): + """ + Description : Test if wrong parameters are detected + Data : + Requirement : + """ + with pytest.raises(DictCheckerError) as err: + check_configuration.check_expert_mode_section({"profiling": {parameter: wrong_value_parameter}}) + assert "folder_name" in err.value.args[0] From 1f7230e70ff1f9ab2d918f31d2dd5d049cea7d55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alice=20de=20Bardonn=C3=A8che-Richard?= Date: Fri, 13 Sep 2024 15:31:13 +0200 Subject: [PATCH 118/121] doc: expert mode --- docs/source/userguide.rst | 1 + docs/source/userguide/expert_mode.rst | 75 +++++++++++++++++++++++++++ 2 files changed, 76 insertions(+) create mode 100644 docs/source/userguide/expert_mode.rst diff --git a/docs/source/userguide.rst b/docs/source/userguide.rst index 500a79a..7b4cd87 100644 --- a/docs/source/userguide.rst +++ b/docs/source/userguide.rst @@ -14,6 +14,7 @@ Userguide userguide/output.rst userguide/as_an_api.rst userguide/faq.rst + userguide/expert_mode.rst diff --git a/docs/source/userguide/expert_mode.rst b/docs/source/userguide/expert_mode.rst new file mode 100644 index 0000000..7b0a5cd --- /dev/null +++ b/docs/source/userguide/expert_mode.rst @@ -0,0 +1,75 @@ +.. _Expert_mode: + +Expert mode +=========== + +Resume +****** + +The profiling expert mode is intended for users who want to measure the performance of Pandora2D on their personal computer. +In the output folder, they can obtain a number of charts that calculate averages and other metrics for each step throughout the executions. + +How to profile more functions ? +******************************* + + +This option requires the user to be familiar with the pandora2d code. + +First, when they activate the `expert_mode` key in the configuration, they have access by default to performance +information related to each stage of the state machine. +All data is stored in the code in a `pandas.DataFrame` and locally in a CSV file, then presented as a graph in a PDF file. + +If the user wants to analyze the performance of another function, they can add the decorator +`@mem_time_profile_profile(name="Function name")` above that function. +If they want to obtain more metrics, they need to add them to the "metrics_list" in the `profiling.py` file. + +The graphs are handled by the `generate_figure` function. + +.. note:: + Profiling certain functions can significantly increase execution times. + + + +Parameters and configuration : +############################## + +Expert mode profiling section is composed of the following keys: + + OptionalKey("folder_name"): str + +.. list-table:: Expert mode section + :header-rows: 1 + + * - Name + - Description + - Type + - Default value + - Required + * - *folder_name* + - + - str + - + - Yes + +**Example** + +.. code:: json + :name: Input example + + { + "input": + { + // inputs content + } + , + "pipeline" : + { + // pipeline content + }, + "expert_mode": + { + "profiling": + { + "folder_name": "expert_mode_outputs" + } + } \ No newline at end of file From 7100f0914d794dbe99e0bd9dc80c734f8bfb8636 Mon Sep 17 00:00:00 2001 From: Marie Leconte Date: Tue, 1 Oct 2024 12:58:44 +0200 Subject: [PATCH 119/121] setup: update pandora version for release --- setup.cfg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/setup.cfg b/setup.cfg index 384d6de..2d22339 100644 --- a/setup.cfg +++ b/setup.cfg @@ -63,12 +63,13 @@ install_requires = xarray numba>=0.55.2;python_version>'3.7' numba>=0.47.0;python_version<'3.8' - pandora==1.6.* + pandora==1.6.2 typing_extensions scikit-image scipy<1.14 pandas psutil + matplotlib package_dir = . = pandora2d @@ -98,7 +99,6 @@ docs = sphinx_tabs notebook = - matplotlib graphviz notebook From 9a34dbb0e806e2cd3c39bed069977bd98a997485 Mon Sep 17 00:00:00 2001 From: Marie Leconte Date: Tue, 1 Oct 2024 12:59:04 +0200 Subject: [PATCH 120/121] AUTHORS: update contributors section --- AUTHORS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/AUTHORS.md b/AUTHORS.md index b525133..b38e793 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -22,6 +22,7 @@ This file keeps track of authors contributions. * Natalia Jimenez * Quentin Fardet * Jerome Lebreton +* Tommy Calendini Update here with new contributors. From d98c5b43e79bf91833664c27d1ea0bc8460c6c87 Mon Sep 17 00:00:00 2001 From: Marie Leconte Date: Tue, 1 Oct 2024 12:59:26 +0200 Subject: [PATCH 121/121] Update CHANGELOG.md for new release --- CHANGELOG.md | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9fd407a..730d172 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,45 @@ # Changelog +## 0.4.0 (October 2024) + +### Added +- Add unit tests for optical flows. [#114] +- Subpix taken into account in the dichotomy. [#148] +- Adding requirement numbers to the test docstring. [#143] +- Add requirement on html-report test. [#167] +- Variable initial disparity added to the configuration file. [#76] +- Adding cardinal sine module in interpolation filter. [#146] +- Mask added to the configuration file. [#157] +- Variable disparity taken into account in matching cost step. [#152] +- Add constant.py and criteria.py files for masks. [#159] +- Add right-disparity-outside criterion. [#162] +- Variable disparity taken into account in dichotomy. [#154] +- Add accuracy tests for dichotomy. [#126] +- Variable disparity taken into account in optical flow. [#158] +- Add first resource tests. [#174] +- Setting up disparity grids at inputs. [#165] +- Add left_nodata and right_nodata criteria. [#160] +- Add left_invalid and right_invalid criteria. [#161] +- Add criteria dataarray. [#163] +- Add profiling. [#175] + +### Fixed +- Fix the use of a step with the optical flow method in the refinement step. [#119] +- Fix ROI coordinates when the first point is within the margin. [#142] +- Fix sphinx errors. [#168] +- Remove np.inf on cost volume. [#170] + +### Changed +- State machine callback changed from after to before. [#144] +- Update pylint version. [#153] +- Documentation updated with new parameters for variable initial disparity. [#150] +- Update numpy version. [#145] +- Removal of disparity grids in the state machine. [#171] +- Removal of the disparity condition with the interpolation step. [#169] +- Update dichotomy documentation. [#166] +- Pixel size output updated as a function of step size. [#164] + + ## 0.3.0 (June 2024) ### Added